43
Programación Programación Dinámica Dinámica Alfonso López Murcia Alfonso López Murcia

ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

Embed Size (px)

Citation preview

Page 1: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

ProgramaciónProgramaciónDinámicaDinámica

Alfonso López MurciaAlfonso López Murcia

Page 2: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

INTRODUCCIONINTRODUCCION

La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos en subproblemas de menor tamaño, más fáciles de de resolver. La PD está basada en el principio de optimalidad de Bellman:

“Cualquier subsecuencia de decisiones de una secuencia óptima de decisiones que resuelve un problema también debe ser óptima respecto al suproblema resuelto.”

Page 3: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

INTRODUCCIONINTRODUCCION

La PD resuelve el problema en etapas (problemas multietápicos). En cada etapa interviene una variable de optimización. Los cálculos de las diferentes etapas se enlazan de forma recursiva para generar la solución óptima. La PD se aplica en problemas como calendarización (scheduling), edición de cadenas, almacenamiento e inventario.

Page 4: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

EJEMPLOEJEMPLO

0

1

2

3

¿Cual es el camino más corto desde 0 a 6?

3

24

5

6

2 2 2

4 1 1

Primera etapa

Tercera etapa

Quinta etapaSegunda etapa

Cuarta etapa

Sexta etapa

Page 5: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION DEL PROBLEMA (I) FORMULACION DEL PROBLEMA (I)

0

1

2

3

0 = inicio, n-1 = meta, 0 < x < n-1 nodos intermediosSi camino entonces c(i,j) = valor i < jSi camino entonces c(i,j) = i < jf(x) denota el camino más corto desde 0 al nodo xf(n-1) es la solución del problema

c(0,1)

4

5

6

c(1,3) c(3,4) c(4,6)

c(0,2) c(2,3) c(3,5) c(5,6)

Page 6: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION DEL PROBLEMA (II) FORMULACION DEL PROBLEMA (II)

0

1

2

3

f(0) = 0f(1) = min { f(0) + c(0,1) }f(2) = min { f(1) + c(1,2) , f(0) + c(0,2) }f(3) = min { f(2) + c(2,3) , f(1) + c(1,3) , f(0) + c(0,3) }f(n-1) = min { f(n-2) + c(n-2,n-1, ... , f(0) + c(0,3) }

c(0,1)

4

5

6

c(1,3) c(3,4) c(4,6)

c(0,2) c(2,3) c(3,5) c(5,6)

Page 7: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION DEL PROBLEMA (III) FORMULACION DEL PROBLEMA (III)

0

1

2

3

0 x = 0f(x) =

min { f(j) + c(j,x) } 1 x n –1 0 j x

c(0,1)

4

5

6

c(1,3) c(3,4) c(4,6)

c(0,2) c(2,3) c(3,5) c(5,6)

Page 8: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

CLASES DE FORMULACION EN PD (I)CLASES DE FORMULACION EN PD (I)

La expresión a minimizar (o maximizar) se denomina ecuación de optimización. Si hay un único término recursivo en la ecuación de optimización ( f(j) ) se denomina formulación de un problema de programación dinámica monádica (monadic). En caso contrario se denomina formulación

de PD poliádica (polyadic).

0 x = 0f(x) =

min { f(j) + c(j,x) } 1 x n –1 0 j x

Page 9: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

CLASES DE FORMULACION EN PD (II)CLASES DE FORMULACION EN PD (II)

f (x1) f (x2) f (x3) f (x4) f (x5) f (x6) f (x7) Nivel

1

r1=g(f(x1),f(x3) r2=g(f(x4),f(x5) r3=g(f(x2),f(x6),f(x7) 2

3f(x8)=min{r1,r2,r3}

Si el grafo es acíclico (cada nivel depende de los resultados del nivel inmediatamente anterior) hablamos de formulación en serie.

Hay cuatro tipos: monádica serie, poliádica serie, monádica no serie y poliádica no serie.

minimizacióncomposición

Page 10: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (I)FORMULACION MONADICA SERIE (I)

Dos ejemplos: el camino más corto y el problema de la mochila 0-1. Aspectos del problema del camino más corto: Grafo multietapa con r+1 niveles. Los niveles 0 (nodo S) y r (nodo R) tienen un nodo. Cada nodo del nivel i está conectado a todos los nodos del nivel i+1.

El i-esimo nodo del nivel l se denota como vli

El coste de ir desde vli a vl+1

j se denota como cli,j

El coste desde vli hasta R se denota como Cl

i

Page 11: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (II)FORMULACION MONADICA SERIE (II)

Los n nodos del nivel l se representan con el vector [Cl

0, Cl1, … , Cl

n] y se denota como Cl

El problema se reduce a calcular C0 = [C00]

vr-10

vr-11

vr-1n-1

cr-10,R

cr-1n-1,R

cr-11,R

Nivel r-1

Vr-20

Vr-21

Vr-2n-1

cr-1n-1,n-1

cr-10,0

Nivel r-2

v20

v21

v2n-1

c20,0

c2n-1,n-1

Nivel 2

v10

v11

v1n-1

c10,0

c1n-1,n-1

Nivel 1

c0S,0

c0S,1

c0S,n-1

S

R

Nivel rNivel 0

Page 12: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (III)FORMULACION MONADICA SERIE (III)

Por el principio de optimalidad cualquier camino desde vl

i a R incluye vl+1j (0jn-1)

El coste desde vli hasta R (Cl

i) es la suma del coste desde vl

i a vl+1j mas el coste desde vl+1

j hasta R (Cl+1

j), en definitiva:

Cli = min { cl

i,j + Cl+1j | j en nivel l+1 }

Vemos un único término recursivo, por tanto es una formulación monádica en serie.

Page 13: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (IV)FORMULACION MONADICA SERIE (IV)

cl0,0 cl

0,1 cl0,2

… cl0,n-1 Cl+1

0

cl1,0 cl

0,1 cl0,2

… cl0,n-1 x Cl+1

1 = Ml,l+1 x Cl+1 = Cl

. . . . . . . . . . . . . . .

cln-1,0 cl

n-1,1 cln-1,2

… cln-1,n-1 Cl+1

n-1

cambiando + por mincambiando x por +

C20

cr-1n-1,n-1

cr-10,0c2

0,0

c2n-1,n-1

c10,0

S

Rc10,1

c10,n-1

C21

C2n-1

Page 14: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (V)FORMULACION MONADICA SERIE (V)

Algoritmo serie para la multiplicación de una matriz A (n x n) por un vector x (n x 1):

for i := 0 to n-1 do

y[i] := 0;

for j := 0 to n-1 do

y[i]:= y[i] + A[i,j] . x[j];

Asumiendo que las operaciones de suma y producto duran una unidad de tiempo el coste secuencial de computar cada Cl es (n2).

A[0,0] ... A[0,n-1] x[0]

A[1,0] ... A[1,n-1] x[1]

..... ... ..... ....

A[n-1,0] ... A[n-1,n-1] x[n-1]

Page 15: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (VI)FORMULACION MONADICA SERIE (VI)

En memoria compartida: si el número de procesadores p = n cada procesador tiene accesibles los datos que necesita (toda una fila de A y el vector x)

la multiplicación de una fila de A por x se realiza en cada procesador en (n)

el tiempo empleando en la resolución del problema completo C0 es (rn)

Page 16: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (VII)FORMULACION MONADICA SERIE (VII)

En un hipercubo con n < p: cada procesador tiene n/p filas de A y una porción del vector x

se necesitan comunicaciones todos con todos

=> ts log p + tw n cada procesador consume n2/p en cálculo el tiempo paralelo del problema es

n2/p + ts log p + tw n

si n = p el tiempo total es r (n + ts log n + tw n)

Page 17: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (VIII)FORMULACION MONADICA SERIE (VIII)

Si los nodos tienen pocos sucesores entonces

en la matriz Ml,l+1 aparecen muchos .

No es preciso hacer la suma (x + = ) ni la minimización (min{x, }=x) cuando se tiene el valor . Tenemos una matriz dispersa debido a las operaciones de suma y minimización. La complejidad computacional se reduce utilizando algoritmos paralelos para matrices dispersas (ver capítulo 11 en libro de Kumar).

Page 18: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (IX)FORMULACION MONADICA SERIE (IX)

El problema unidimensional de la mochila 0-1 se caracteriza por:

una mochila con capacidad c tenemos 1, 2, …, n objetos cada objeto i tiene un peso wi y un

beneficicio pi

el vector solución es v = [v1, …, vn]. Si el

objeto iésimo se mete en la mochila entonces vi=1, en caso contrario vi=0

Page 19: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (X)FORMULACION MONADICA SERIE (X)

n

wi vi c (no superar la capacidad)

i=1 n

max pi vi (maximizar el beneficio)

i=1

La forma más ruda de resolverlo es considerar todas las 2n posibles combinaciones. Nos interesa resolverlo con PD cuando

n.c < 2n => c = O(2n/n)Tamaño de la tabla F que veremos a continuación

Page 20: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (XI)FORMULACION MONADICA SERIE (XI)

Suponiendo F[i,x] el máximo beneficio para una mochila con capacidad x usando unicamente los objetos {1, 2, …, i} entonces la solución al problema es calcular F[n,c].

0 x 0, i = 0

F[i,x] = - x 0, i = 0max { F[i-1,x],(F[i-1,x-wi]+pi)} 1 i n0 i n

Cuando la capacidad es x tenemos dos casos:1) no se mete i => no cambia x ni el beneficio2) si se mete i => x = x – wi y el beneficio aumenta pi

Un objeto se incluye o no en base al criterio de máximo beneficio

Page 21: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (XII)FORMULACION MONADICA SERIE (XII)

El algoritmo secuencial de este problema de PD mantiene una table F de tamaño n x c

Tabla FObjetos

n

...

i

...

2

1

Capac.1 2 ... j-wi... j ... c-1 c

X X X X X X X X X

Se busca el máximo beneficio con el primer objeto probando sacos de distinta capacidad

X X X X X X X X X

F[i,j]

Dos entradas de la fila anterior.

=> (nc)

F[i-1,j]F[i-1,j-wi]no se mete objeto i-1

se mete objeto i-1

Page 22: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (XIII)FORMULACION MONADICA SERIE (XIII)

El nivel i depende del nivel i-1 => es serie. F[i,j] depende de un subproblema => monádica En un modelo de memoria compartida: lectura concurrente y escritura exclusiva (CREW) con c procesadores (P0, …, Pc-1) por columnas no hay problemas de acceso a memoria pues comparten lectura y escriben independientemente

Pr-1 lee cualquier F[i,j] en un tiempo constante

=> cada iteración tiene un tiempo constante

=> (n) => tiempo total (nc) => coste óptimo.

Page 23: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (XIV)FORMULACION MONADICA SERIE (XIV)

Si tenemos un hipercubo con c procesadores: cada procesador tiene una columna cada procesador computa su celda F[j,r] F[j,r] precisa F[j-1,r] y F[j-1,r-wj] F[j-1,r] está local F[j-1,r-wj] en otro procesador comunicación con una permutación circular tc + ts + tw + th log c => O(n log c) O(nc log c) => no es de coste óptimo

cada iteración las n iteraciones

0 1

2 34 5

6 7

Page 24: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA SERIE (XV)FORMULACION MONADICA SERIE (XV)

Si tenemos un hipercubo con p procesadores: cada procesador computa c/p elementos de F en la iteración j-ésima P0 calcula F[j,1], …, F[j,c/p], P1 calcula F[j,c/p+1], …, F[j,2c/p], etc.

F[j,k] precisa F[j-1,k] y F[j-1,k-wj] F[j-1,k] está local F[j-1,k-wj] está local o en otro procesador

n (tc c/p + 2ts + tw c/p + 2th log p) =>

O(n c/p + n log p) => O(nc + np log p) si c = (p log p) => es de coste óptimo

Page 25: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA NO SERIE (I)FORMULACION MONADICA NO SERIE (I)

Veamos el problema de la subsecuencia común mayor (SCM):

dos secuencias A = {a1, …, an} y B = {b1, …, bm} si A={c,a,d,b,r,z} y B={a,s,b,z} => SCM={a,b,z} F[i,j] denota la longitud de la SCM de los i primeros elementos de A y los j primeros elementos de B. Su formulación en PD es:

0 si i=0 ó j=0

F[i,j] = F[i-1,j-1]+1 si i,j>0 y xi=yj

max{F[i,j-1],F[i-1]} si i,j>0 y xiyj

El problema de la SCM es determinar F[n,m].

Page 26: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA NO SERIE (II)FORMULACION MONADICA NO SERIE (II)

B a s b z

0 1 2 3 4

A 0

c 1

a 2

d 3

b 4

r 5

z 6

si i=0 ó j=0 entonces F[i,j]=0

0 0 0 0 0

00

00

0

0

si i,j>0 y xiyj entonces max{F[i,j-1],F[i-1,j]}

0000F[i,j-1]

Comunicaciones

F[i-1,j]

si i,j>0 y xi=yj entonces F[i-1,j-1]+1

1

F[i-1,j-1]2

1 1 11 2

3

1 1 111 2

2 222 22

Page 27: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA NO SERIE (III)FORMULACION MONADICA NO SERIE (III)

F[i,j] depende de las soluciones de niveles precedentes => es monádica. Cada nodo depende de dos subproblemas de niveles inmediatamente anteriores y un subproblema de dos niveles previos => no es serie. La implementación secuencial de la formulación del problema en PD completa la tabla F por filas. Cada entrada se computa en un tiempo constante => la complejidad total es (nm).

Page 28: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA NO SERIE (IV)FORMULACION MONADICA NO SERIE (IV)

En la formulación paralela suponemos n = m. En un modelo de memoria compartida CREW con n procesadores asignados por columnas:

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

P0 P1 P2 Pn-1

La computación por columnas anula el paralelismo.

La computación por diagonales permite el paralelismo.Pero el balanceo de carga es malo.

Page 29: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA NO SERIE (V)FORMULACION MONADICA NO SERIE (V)

Acceso a memoria sin problemas => la diagonal se computa en un tiempo constante. Hay 2n-1 diagonales => (n) iteraciones. El tiempo del algoritmo paralelo es (n2) como en el caso secuencial => coste óptimo.

P0 P1 Pn-1

.

...

.

.

Tiempo de envío desdeun procesador vecino

ts + tw

Tiempo de una iteración tc + ts + tw

Tp = n (2n – 1) (tc + ts + tw)

iteraciones totales

En memoria distribuida:

Page 30: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION MONADICA NO SERIE (VI)FORMULACION MONADICA NO SERIE (VI)

En un hipercubo con n = 8.

Eficiencia = n2 tc / ( n (2n – 1) (tc + ts+ tw) )

La eficiencia de la formulación paralela viene dada por la localización de los datos (vecinos).

P0 P1 P7

.

...

.

. P0 P1

P3 P2

P7 P6

P4 P5

tiempo secuencial tiempo paralelo

asignación deprocesadorespor proximidad

Page 31: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

¿SABEMOS POR DONDE VAMOS?¿SABEMOS POR DONDE VAMOS?

Hemos visto las formulaciones: monádica serie (estudiados los problemas del camino más corto y la mochila 0-1).

monádica no serie (analizado el problema de la subsecuencia común mayor). Faltan por ver: poliádica serie poliádica no serie

Page 32: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA SERIE (I)FORMULACION POLIADICA SERIE (I)

El algoritmo de Floyd para determinar los caminos más cortos (CMC) entre todos los pares de nodos en un grafo es una formulación de programación dinámica poliádica serie. Elementos del problema: tenemos un grafo G formado por un conjunto de nodos V, arcos E y pesos w. G = (V,E,w).

el arco que une i con j tiene un peso ci,j

el algoritmo de Floyd calcula coste di,j del CMC entre cualquier par de nodos (i,j) de V.

Page 33: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA SERIE (II)FORMULACION POLIADICA SERIE (II)

Si denotamos dki,j al costo mínimo del camino

entre el nodo i hasta j usando únicamente los nodos v1, v1, …, vk el algoritmo secuencial es:

for k = 1 to n do

for i = 1 to n do

for j = 1 to n do

dki,j := min (dk-1

i,j , dk-1i,k + dk-1

k,j)

La complejidad del algoritmo es (n3)

desde vi a vk y desde vk a vjobtiene unamatriz n x n

n matrices de n x n

Page 34: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA SERIE (III)FORMULACION POLIADICA SERIE (III)

La ecuación recursiva en PD es:

ci,j k=0

dki,j =

min{dk-1i,j , (dk-1

i,k + dk-1k,j)} 0k n-1

dki,j se divide en n niveles, uno por cada k

Los elementos del nivel k+1 dependen unicamente del nivel k => es serie. dk

i,j necesita componer las soluciones de los subproblemas dk-1

i,k y dk-1k,j => es poliádica.

Page 35: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA SERIE (IV)FORMULACION POLIADICA SERIE (IV)

En un modelo de memoria compartida CREW: tenemos n2 procesadores los procesadores se organizan en una array bidimensional (n x n)

Pi,j calcula dki,j para k = 1 , … , n => balanceado

en cada iteración k el procesador Pi,j necesita los valores dk-1

i,j , dk-1i,k y dk-1

k,j que ha calculado anteriormente => no hay problemas de lectura o escritura en memoria

(n3) => la formulación es de costo óptimo

Page 36: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA SERIE (V)FORMULACION POLIADICA SERIE (V)

En memoria distribuida: denotamos dk

i,j como la matriz Dk

computar Dk es tarea de varios procesadores Dk se divide en p cuadrados de (n/p) x (n/p)

y cada cuadrado se asigna a un procesador...

...

...

.

.

.

.

.

.

.

.

.

. . . . . .

. . . . . .

. . . . . .

P0

Pp-1

dkl,r necesita

dk-1l,k en la misma fila

dk-1k,r en la misma columna

En la iteración k-ésima cada p procesador envía a los desu misma columna y fila

Page 37: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA SERIE (VI)FORMULACION POLIADICA SERIE (VI)

Suponiendo un hipercubo con p procesadores: a cada procesador se le asignan n2/p elementos de la matriz Dk => tc es (n2/p)

en cada iteración la fila k-ésima y la columna

k-ésima de procesadores hacen comunicaciones uno a todos => ((n log p) / p)

la sincronización requiere (log p)

tp = (n3/p) + ((n2 log p) / p)

computación comunicación

Page 38: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA NO SERIE (I)FORMULACION POLIADICA NO SERIE (I)

El orden de multiplicación de matrices influye en el volumen de operaciones. Por ejemplo:

A1 de dimensión 10 x 20

A2 de dimensión 20 x 30

A3 de dimensión 30 x 40

Orden Primer producto Segundo producto Total

(A1 x A2) x A3 10 x 20 x 30 10 x 30 x 40 18000

A1 x (A2 x A3) 20 x 30 x 40 10 x 20 x 40 32000

Debemos encontrar el orden adecuado de los paréntesis que minimice el número de operaciones.

Page 39: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA NO SERIE (II)FORMULACION POLIADICA NO SERIE (II)

Sea C[i,j] el coste óptimo de multiplicar las matrices Ai, …, Aj.

Ai, …, Aj se puede expresar como Ai, …, Ak (ri-

1 x rk) por Ak+1, …, Aj (rk-1 x rj) coste ri-1 rk rj

El coste para (Ai, …, Ak) (Ak+1, …, Aj) es

C[i,k] + C[k+1,j] + ri-1 rk rj, en consecuencia:

min {C[i,k] + C[k+1,j]+ ri-1 rk rj} 1i<jn

C[i,j] = i k j

0 j = i, 0 < i n

Page 40: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA NO SERIE (III)FORMULACION POLIADICA NO SERIE (III)

Para cuatro matrices se calcularíaC[1,1] , C[2,2] , C[3,3] , C[4,4]

C[1,2] , C[2,3] , C[3,4]

C[1,3] , C[2,4]

C[1,4]

El orden de computación es diagonal

P0 P1 P2 P3

1,1 1,2 1,3 1,4

2,1 2,2 2,3 2,4

3,1 3,2 3,3 3,4

4,1 4,2 4,3 4,4

producto de cadenas de matrices de longitud 1

diagonal 0

producto de cadenas de matrices de longitud 2

diagonal 1

producto de cadenas de matrices de longitud 3

diagonal 2

Para un problema de tamaño n la solución es calcular C[1,n]

producto de cadenas de matrices de longitud 4

diagonal 3

Page 41: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA NO SERIE (IV)FORMULACION POLIADICA NO SERIE (IV)

El tiempo secuencial sería: computar (n-1) cadenas de longitud dos consume un tiempo de (n-1) tc

computar (n-2) cadenas de longitud tres lleva un tiempo (n-1) 2tc

en el paso final, computar una cadena de longitud n acarrea (n-1) tc

ts = (n–1) tc + (n-2) 2tc + … + (n-1) tc

ts (n3/6) tc => (n3)

Page 42: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FORMULACION POLIADICA NO SERIE (V)FORMULACION POLIADICA NO SERIE (V)

En memoria distribuida: consideremos un anillo de n procesadores en cada paso cada procesador computa un elemento de la diagonal => balanceo malo

cada procesador envía su valor al resto haciendo un broadcast todos con todos.

(n3) => algoritmo paralelo de coste óptimo en un anillo p n tenemos

tp = (n3/p) + (n2) computación comunicación

Page 43: ProgramaciónDinámica Alfonso López Murcia. INTRODUCCION  La Programación Dinámica (PD) intenta mejorar la eficiencia del cálculo de problemas descomponiéndolos

FIN DE LA PRESENTACIONFIN DE LA PRESENTACION

MUCHAS GRACIASMUCHAS GRACIAS

POR SUPOR SU

PACIENCIAPACIENCIA

YY

ATENCIONATENCION