Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y...

105
Alonso Ramirez Manzanares Computación y Algoritmos 18.05 Programación dinámica 2 mat-151 Friday, May 19, 17

Transcript of Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y...

Page 1: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05

Programación dinámica 2

mat-151

Friday, May 19, 17

Page 2: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 2

Programación dinámica: producto de una cadena de matrices

Friday, May 19, 17

Page 3: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 2

Programación dinámica: producto de una cadena de matrices

• Tenemos una secuencia (cadena) <A1, A2, ..., An> de n matrices a ser multiplicadas y queremos calcular el producto: A1A2...An.

Friday, May 19, 17

Page 4: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 2

Programación dinámica: producto de una cadena de matrices

• Tenemos una secuencia (cadena) <A1, A2, ..., An> de n matrices a ser multiplicadas y queremos calcular el producto: A1A2...An.

• Esto se puede resolver con una subrutina de multiplicación de pares de matrices una vez que se ha decidido el orden en que serán multiplicadas.

Friday, May 19, 17

Page 5: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 2

Programación dinámica: producto de una cadena de matrices

• Tenemos una secuencia (cadena) <A1, A2, ..., An> de n matrices a ser multiplicadas y queremos calcular el producto: A1A2...An.

• Esto se puede resolver con una subrutina de multiplicación de pares de matrices una vez que se ha decidido el orden en que serán multiplicadas.

• La multiplicación de matrices es asociativa, así que cualquier orden dará el mismo resultado.

Friday, May 19, 17

Page 6: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 2

Programación dinámica: producto de una cadena de matrices

• Tenemos una secuencia (cadena) <A1, A2, ..., An> de n matrices a ser multiplicadas y queremos calcular el producto: A1A2...An.

• Esto se puede resolver con una subrutina de multiplicación de pares de matrices una vez que se ha decidido el orden en que serán multiplicadas.

• La multiplicación de matrices es asociativa, así que cualquier orden dará el mismo resultado.

• Por ejemplo, si tenemos la cadena <A,B,C,D>, el producto ABCD se puede realizar de 5 formas distintas:

Friday, May 19, 17

Page 7: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 2

Programación dinámica: producto de una cadena de matrices

• Tenemos una secuencia (cadena) <A1, A2, ..., An> de n matrices a ser multiplicadas y queremos calcular el producto: A1A2...An.

• Esto se puede resolver con una subrutina de multiplicación de pares de matrices una vez que se ha decidido el orden en que serán multiplicadas.

• La multiplicación de matrices es asociativa, así que cualquier orden dará el mismo resultado.

• Por ejemplo, si tenemos la cadena <A,B,C,D>, el producto ABCD se puede realizar de 5 formas distintas:

• (A(B(CD))), (A((BC)D)), ((AB)(CD)), ((A(BC))D), (((AB)C)D).

Friday, May 19, 17

Page 8: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 2

Programación dinámica: producto de una cadena de matrices

• Tenemos una secuencia (cadena) <A1, A2, ..., An> de n matrices a ser multiplicadas y queremos calcular el producto: A1A2...An.

• Esto se puede resolver con una subrutina de multiplicación de pares de matrices una vez que se ha decidido el orden en que serán multiplicadas.

• La multiplicación de matrices es asociativa, así que cualquier orden dará el mismo resultado.

• Por ejemplo, si tenemos la cadena <A,B,C,D>, el producto ABCD se puede realizar de 5 formas distintas:

• (A(B(CD))), (A((BC)D)), ((AB)(CD)), ((A(BC))D), (((AB)C)D).

• Sin embargo, el orden tendrá un impacto dramático en el costo de realizar el producto.

Friday, May 19, 17

Page 9: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 3

¿Dónde usamos esto? Ejemplo de graficación

Friday, May 19, 17

Page 10: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 4

¿Dónde usamos esto? Ejemplo de graficación

Friday, May 19, 17

Page 11: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 4

¿Dónde usamos esto? Ejemplo de graficación

Friday, May 19, 17

Page 12: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 5

Programación dinámica: producto de una cadena de matrices

Friday, May 19, 17

Page 13: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 5

Programación dinámica: producto de una cadena de matrices

• Consideramos el costo de multiplicar 2 matrices:

Friday, May 19, 17

Page 14: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 5

Programación dinámica: producto de una cadena de matrices

• Consideramos el costo de multiplicar 2 matrices:MATRIX-MULTIPLY(A,B)

1 if columns[A] ≠ rows[B]2 then error “dimensiones incompatibles”3 else for i←1 to rows[A]4 do for j←1 to columns[B]5 do C[i,j] ← 06 for k←1 to columns[A]7 do C[i,j] ← C[i,j] + A[i,k]B[k,j] 8 return C

Friday, May 19, 17

Page 15: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 5

Programación dinámica: producto de una cadena de matrices

• Consideramos el costo de multiplicar 2 matrices:MATRIX-MULTIPLY(A,B)

1 if columns[A] ≠ rows[B]2 then error “dimensiones incompatibles”3 else for i←1 to rows[A]4 do for j←1 to columns[B]5 do C[i,j] ← 06 for k←1 to columns[A]7 do C[i,j] ← C[i,j] + A[i,k]B[k,j] 8 return C

• El número de columnas de A debe ser igual al número de renglones de B.

Friday, May 19, 17

Page 16: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 5

Programación dinámica: producto de una cadena de matrices

• Consideramos el costo de multiplicar 2 matrices:MATRIX-MULTIPLY(A,B)

1 if columns[A] ≠ rows[B]2 then error “dimensiones incompatibles”3 else for i←1 to rows[A]4 do for j←1 to columns[B]5 do C[i,j] ← 06 for k←1 to columns[A]7 do C[i,j] ← C[i,j] + A[i,k]B[k,j] 8 return C

• El número de columnas de A debe ser igual al número de renglones de B.

• Si A es una matriz de p x q y B es de q x r, entonces C es de dimensión p x r.

Friday, May 19, 17

Page 17: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 5

Programación dinámica: producto de una cadena de matrices

• Consideramos el costo de multiplicar 2 matrices:MATRIX-MULTIPLY(A,B)

1 if columns[A] ≠ rows[B]2 then error “dimensiones incompatibles”3 else for i←1 to rows[A]4 do for j←1 to columns[B]5 do C[i,j] ← 06 for k←1 to columns[A]7 do C[i,j] ← C[i,j] + A[i,k]B[k,j] 8 return C

• El número de columnas de A debe ser igual al número de renglones de B.

• Si A es una matriz de p x q y B es de q x r, entonces C es de dimensión p x r.

• El tiempo de cálculo de C es dominado por la multiplicación de escalares en la línea 7 que es pqr.

Friday, May 19, 17

Page 18: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 6

Programación dinámica: producto de una cadena de matrices

Friday, May 19, 17

Page 19: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 6

Programación dinámica: producto de una cadena de matrices

• Por ejemplo:

Friday, May 19, 17

Page 20: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 6

Programación dinámica: producto de una cadena de matrices

• Por ejemplo:

• <A1,A2,A3>, 10x100, 100x5, 5x50

Friday, May 19, 17

Page 21: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 6

Programación dinámica: producto de una cadena de matrices

• Por ejemplo:

• <A1,A2,A3>, 10x100, 100x5, 5x50

• ((A1A2)A3)

Friday, May 19, 17

Page 22: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 6

Programación dinámica: producto de una cadena de matrices

• Por ejemplo:

• <A1,A2,A3>, 10x100, 100x5, 5x50

• ((A1A2)A3)

• (A1(A2A3)

Friday, May 19, 17

Page 23: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 6

Programación dinámica: producto de una cadena de matrices

• Por ejemplo:

• <A1,A2,A3>, 10x100, 100x5, 5x50

• ((A1A2)A3)

• (A1(A2A3)

Friday, May 19, 17

Page 24: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 6

Programación dinámica: producto de una cadena de matrices

• Por ejemplo:

• <A1,A2,A3>, 10x100, 100x5, 5x50

• ((A1A2)A3)

• (A1(A2A3)

• Dada una cadena <A1,A2,...,An> de n matrices, donde i=1,2,...,n la matriz Ai tiene dimensiones pi-1x pi, poner los paréntesis del producto minimizando el número de multiplicaciones escalares.

Friday, May 19, 17

Page 25: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 6

Programación dinámica: producto de una cadena de matrices

• Por ejemplo:

• <A1,A2,A3>, 10x100, 100x5, 5x50

• ((A1A2)A3)

• (A1(A2A3)

• Dada una cadena <A1,A2,...,An> de n matrices, donde i=1,2,...,n la matriz Ai tiene dimensiones pi-1x pi, poner los paréntesis del producto minimizando el número de multiplicaciones escalares.

• No buscamos multiplicar las matrices sino minimizar el costo de la multiplicación en general.

Friday, May 19, 17

Page 26: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 6

Programación dinámica: producto de una cadena de matrices

• Por ejemplo:

• <A1,A2,A3>, 10x100, 100x5, 5x50

• ((A1A2)A3)

• (A1(A2A3)

• Dada una cadena <A1,A2,...,An> de n matrices, donde i=1,2,...,n la matriz Ai tiene dimensiones pi-1x pi, poner los paréntesis del producto minimizando el número de multiplicaciones escalares.

• No buscamos multiplicar las matrices sino minimizar el costo de la multiplicación en general.

= (10⋅100⋅5) + (10⋅5⋅50) = 5000 + 2500 = 7,500

Friday, May 19, 17

Page 27: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 6

Programación dinámica: producto de una cadena de matrices

• Por ejemplo:

• <A1,A2,A3>, 10x100, 100x5, 5x50

• ((A1A2)A3)

• (A1(A2A3)

• Dada una cadena <A1,A2,...,An> de n matrices, donde i=1,2,...,n la matriz Ai tiene dimensiones pi-1x pi, poner los paréntesis del producto minimizando el número de multiplicaciones escalares.

• No buscamos multiplicar las matrices sino minimizar el costo de la multiplicación en general.

= (10⋅100⋅5) + (10⋅5⋅50) = 5000 + 2500 = 7,500

= (100⋅5⋅50) + (10⋅100⋅50) = 25000 + 50000 = 75,000

Friday, May 19, 17

Page 28: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 7

Programación dinámica: producto de una cadena de matrices

Friday, May 19, 17

Page 29: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 7

Programación dinámica: producto de una cadena de matrices

• Paso 1: estructura de una parentesización óptima.

Friday, May 19, 17

Page 30: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 7

Programación dinámica: producto de una cadena de matrices

• Paso 1: estructura de una parentesización óptima.

• Sea Ai...j (i ≤ j) la matriz que resulta de evaluar la multiplicación de AiAi+1...Aj .

Friday, May 19, 17

Page 31: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 7

Programación dinámica: producto de una cadena de matrices

• Paso 1: estructura de una parentesización óptima.

• Sea Ai...j (i ≤ j) la matriz que resulta de evaluar la multiplicación de AiAi+1...Aj .

• Para i<j cualquier parentesización del producto AiAi+1...Aj divide el producto entre Ak y Ak+1 para un entero en el rango i≤k<j.

Friday, May 19, 17

Page 32: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 7

Programación dinámica: producto de una cadena de matrices

• Paso 1: estructura de una parentesización óptima.

• Sea Ai...j (i ≤ j) la matriz que resulta de evaluar la multiplicación de AiAi+1...Aj .

• Para i<j cualquier parentesización del producto AiAi+1...Aj divide el producto entre Ak y Ak+1 para un entero en el rango i≤k<j.

• Esto es, para un valor de k calculamos primero los productos Ai...k y Ak+1...j y luego los multiplicamos para tener el producto final Ai...j.

Friday, May 19, 17

Page 33: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 7

Programación dinámica: producto de una cadena de matrices

• Paso 1: estructura de una parentesización óptima.

• Sea Ai...j (i ≤ j) la matriz que resulta de evaluar la multiplicación de AiAi+1...Aj .

• Para i<j cualquier parentesización del producto AiAi+1...Aj divide el producto entre Ak y Ak+1 para un entero en el rango i≤k<j.

• Esto es, para un valor de k calculamos primero los productos Ai...k y Ak+1...j y luego los multiplicamos para tener el producto final Ai...j.

• El costo de esta parentesización es la suma de:

Friday, May 19, 17

Page 34: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 7

Programación dinámica: producto de una cadena de matrices

• Paso 1: estructura de una parentesización óptima.

• Sea Ai...j (i ≤ j) la matriz que resulta de evaluar la multiplicación de AiAi+1...Aj .

• Para i<j cualquier parentesización del producto AiAi+1...Aj divide el producto entre Ak y Ak+1 para un entero en el rango i≤k<j.

• Esto es, para un valor de k calculamos primero los productos Ai...k y Ak+1...j y luego los multiplicamos para tener el producto final Ai...j.

• El costo de esta parentesización es la suma de:

• el costo de calcular la matriz Ai...k , más

Friday, May 19, 17

Page 35: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 7

Programación dinámica: producto de una cadena de matrices

• Paso 1: estructura de una parentesización óptima.

• Sea Ai...j (i ≤ j) la matriz que resulta de evaluar la multiplicación de AiAi+1...Aj .

• Para i<j cualquier parentesización del producto AiAi+1...Aj divide el producto entre Ak y Ak+1 para un entero en el rango i≤k<j.

• Esto es, para un valor de k calculamos primero los productos Ai...k y Ak+1...j y luego los multiplicamos para tener el producto final Ai...j.

• El costo de esta parentesización es la suma de:

• el costo de calcular la matriz Ai...k , más

• el costo de calcular la matriz Ak+1...j , más

Friday, May 19, 17

Page 36: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 7

Programación dinámica: producto de una cadena de matrices

• Paso 1: estructura de una parentesización óptima.

• Sea Ai...j (i ≤ j) la matriz que resulta de evaluar la multiplicación de AiAi+1...Aj .

• Para i<j cualquier parentesización del producto AiAi+1...Aj divide el producto entre Ak y Ak+1 para un entero en el rango i≤k<j.

• Esto es, para un valor de k calculamos primero los productos Ai...k y Ak+1...j y luego los multiplicamos para tener el producto final Ai...j.

• El costo de esta parentesización es la suma de:

• el costo de calcular la matriz Ai...k , más

• el costo de calcular la matriz Ak+1...j , más

• el costo de multiplicar ambas matrices.

Friday, May 19, 17

Page 37: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 8

Programación dinámica: producto de una cadena de matrices

Friday, May 19, 17

Page 38: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 8

Programación dinámica: producto de una cadena de matrices

• La subestructura óptima de este problema es la siguiente:

Friday, May 19, 17

Page 39: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 8

Programación dinámica: producto de una cadena de matrices

• La subestructura óptima de este problema es la siguiente:

• Supongase que una parentesización óptima de AiAi+1...Aj divide el producto entre Ak y Ak+1,

Friday, May 19, 17

Page 40: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 8

Programación dinámica: producto de una cadena de matrices

• La subestructura óptima de este problema es la siguiente:

• Supongase que una parentesización óptima de AiAi+1...Aj divide el producto entre Ak y Ak+1,

• La parentesización de la cadena AiAi+1...Ak dentro la parentesización óptima de AiAi+1...Aj debe ser la óptima.

Friday, May 19, 17

Page 41: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 8

Programación dinámica: producto de una cadena de matrices

• La subestructura óptima de este problema es la siguiente:

• Supongase que una parentesización óptima de AiAi+1...Aj divide el producto entre Ak y Ak+1,

• La parentesización de la cadena AiAi+1...Ak dentro la parentesización óptima de AiAi+1...Aj debe ser la óptima.

• Mismo razonamiento para Ak+1Ak+2...Aj.

Friday, May 19, 17

Page 42: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 8

Programación dinámica: producto de una cadena de matrices

• La subestructura óptima de este problema es la siguiente:

• Supongase que una parentesización óptima de AiAi+1...Aj divide el producto entre Ak y Ak+1,

• La parentesización de la cadena AiAi+1...Ak dentro la parentesización óptima de AiAi+1...Aj debe ser la óptima.

• Mismo razonamiento para Ak+1Ak+2...Aj.

• Problema: encontrar el valor óptimo del valor de división k.

Friday, May 19, 17

Page 43: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 9

Programación dinámica: producto de una cadena de matrices

Friday, May 19, 17

Page 44: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 9

Programación dinámica: producto de una cadena de matrices

• Paso 2: solución recursiva.

Friday, May 19, 17

Page 45: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 9

Programación dinámica: producto de una cadena de matrices

• Paso 2: solución recursiva.

• Subproblema: determinar el costo mínimo de la parentesización de AiAi+1...Aj para 1 ≤ i ≤ j ≤ n.

Friday, May 19, 17

Page 46: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 9

Programación dinámica: producto de una cadena de matrices

• Paso 2: solución recursiva.

• Subproblema: determinar el costo mínimo de la parentesización de AiAi+1...Aj para 1 ≤ i ≤ j ≤ n.

• Sea m[i,j] el número mínimo de multiplicaciones de escalares necesarias para calcular el producto Ai...j. Para el problema entero el costo de la operación más eficiente para calcular A1...n es m[1,n].

Friday, May 19, 17

Page 47: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 9

Programación dinámica: producto de una cadena de matrices

• Paso 2: solución recursiva.

• Subproblema: determinar el costo mínimo de la parentesización de AiAi+1...Aj para 1 ≤ i ≤ j ≤ n.

• Sea m[i,j] el número mínimo de multiplicaciones de escalares necesarias para calcular el producto Ai...j. Para el problema entero el costo de la operación más eficiente para calcular A1...n es m[1,n].

• ¿Qué pasa con m[i,j] cuando i=j?

Friday, May 19, 17

Page 48: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 9

Programación dinámica: producto de una cadena de matrices

• Paso 2: solución recursiva.

• Subproblema: determinar el costo mínimo de la parentesización de AiAi+1...Aj para 1 ≤ i ≤ j ≤ n.

• Sea m[i,j] el número mínimo de multiplicaciones de escalares necesarias para calcular el producto Ai...j. Para el problema entero el costo de la operación más eficiente para calcular A1...n es m[1,n].

• ¿Qué pasa con m[i,j] cuando i=j?

• El subproblema consta de una sola matriz Ai...i=i, no hay multiplicaciones y m[i,i]=0 para i=1,2,...,n.

Friday, May 19, 17

Page 49: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 9

Programación dinámica: producto de una cadena de matrices

• Paso 2: solución recursiva.

• Subproblema: determinar el costo mínimo de la parentesización de AiAi+1...Aj para 1 ≤ i ≤ j ≤ n.

• Sea m[i,j] el número mínimo de multiplicaciones de escalares necesarias para calcular el producto Ai...j. Para el problema entero el costo de la operación más eficiente para calcular A1...n es m[1,n].

• ¿Qué pasa con m[i,j] cuando i=j?

• El subproblema consta de una sola matriz Ai...i=i, no hay multiplicaciones y m[i,i]=0 para i=1,2,...,n.

• Para m[i,j] cuando i<j: (Ai tiene dimensiones pi-1 × pi para i=1,2,...,n.)

Friday, May 19, 17

Page 50: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 9

Programación dinámica: producto de una cadena de matrices

• Paso 2: solución recursiva.

• Subproblema: determinar el costo mínimo de la parentesización de AiAi+1...Aj para 1 ≤ i ≤ j ≤ n.

• Sea m[i,j] el número mínimo de multiplicaciones de escalares necesarias para calcular el producto Ai...j. Para el problema entero el costo de la operación más eficiente para calcular A1...n es m[1,n].

• ¿Qué pasa con m[i,j] cuando i=j?

• El subproblema consta de una sola matriz Ai...i=i, no hay multiplicaciones y m[i,i]=0 para i=1,2,...,n.

• Para m[i,j] cuando i<j: (Ai tiene dimensiones pi-1 × pi para i=1,2,...,n.)

• m[i,j] = m[i,k] + m[k+1,j] + pi-1pkpj.

Friday, May 19, 17

Page 51: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 10

Programación dinámica: producto de una cadena de matrices

Friday, May 19, 17

Page 52: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 10

Programación dinámica: producto de una cadena de matrices

• No conocemos k pero solo hay j-i posibilidades a examinar.

Friday, May 19, 17

Page 53: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 10

Programación dinámica: producto de una cadena de matrices

• No conocemos k pero solo hay j-i posibilidades a examinar.

• La definición recursiva es entonces:

Friday, May 19, 17

Page 54: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 10

Programación dinámica: producto de una cadena de matrices

• No conocemos k pero solo hay j-i posibilidades a examinar.

• La definición recursiva es entonces:

Friday, May 19, 17

Page 55: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 10

Programación dinámica: producto de una cadena de matrices

• No conocemos k pero solo hay j-i posibilidades a examinar.

• La definición recursiva es entonces:

• y llamaremos s[i,j] al valor de k en el que dividimos AiAi+1...Aj para obtener una parentesización óptima.

Friday, May 19, 17

Page 56: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 11

Programación dinámica: producto de una cadena de matrices

Friday, May 19, 17

Page 57: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 11

Programación dinámica: producto de una cadena de matrices

• Paso 3: cálculo de los costos óptimos

Friday, May 19, 17

Page 58: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 11

Programación dinámica: producto de una cadena de matrices

• Paso 3: cálculo de los costos óptimos

• Implementación con programación dinámica bottom-up.

Friday, May 19, 17

Page 59: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 11

Programación dinámica: producto de una cadena de matrices

• Paso 3: cálculo de los costos óptimos

• Implementación con programación dinámica bottom-up.

• Ai tiene dimensiones pi-1 × pi para i=1,2,...,n.

Friday, May 19, 17

Page 60: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 11

Programación dinámica: producto de una cadena de matrices

• Paso 3: cálculo de los costos óptimos

• Implementación con programación dinámica bottom-up.

• Ai tiene dimensiones pi-1 × pi para i=1,2,...,n.

• La entrada es una secuencia p<p0,p1,...pn>, donde length[p] = n+1.

Friday, May 19, 17

Page 61: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 11

Programación dinámica: producto de una cadena de matrices

• Paso 3: cálculo de los costos óptimos

• Implementación con programación dinámica bottom-up.

• Ai tiene dimensiones pi-1 × pi para i=1,2,...,n.

• La entrada es una secuencia p<p0,p1,...pn>, donde length[p] = n+1.

• Se utiliza la tabla auxiliar m[1...n, 1...n] para almacenar los m[i,j] costos.

Friday, May 19, 17

Page 62: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 11

Programación dinámica: producto de una cadena de matrices

• Paso 3: cálculo de los costos óptimos

• Implementación con programación dinámica bottom-up.

• Ai tiene dimensiones pi-1 × pi para i=1,2,...,n.

• La entrada es una secuencia p<p0,p1,...pn>, donde length[p] = n+1.

• Se utiliza la tabla auxiliar m[1...n, 1...n] para almacenar los m[i,j] costos.

• Se utiliza la tabla auxiliar s[1...n, 1...n] que almacene el índice de k que produjo los valores óptimos.

Friday, May 19, 17

Page 63: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 12

Programación dinámica: producto de una cadena de matrices

m(i,j) , i columna , j renglónp = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 64: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 12

Programación dinámica: producto de una cadena de matrices

15,750

m(i,j) , i columna , j renglónp = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 65: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 12

Programación dinámica: producto de una cadena de matrices

15,750

2,625

m(i,j) , i columna , j renglónp = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 66: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 12

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

m(i,j) , i columna , j renglónp = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 67: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 12

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

m(i,j) , i columna , j renglónp = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 68: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 12

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

m(i,j) , i columna , j renglónp = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 69: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 13

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 70: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 13

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 71: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 13

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 72: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 13

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 73: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 13

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 74: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 14

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 75: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 14

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

9,375

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 76: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 14

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

9,375

7,125

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 77: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 14

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

9,375

7,125

5,375

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 78: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 15

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

9,375

7,125

5,375

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 79: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 15

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

9,375

7,125

5,375

11,875

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 80: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 15

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

9,375

7,125

5,375

11,875

10,500

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 81: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 16

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

9,375

7,125

5,375

11,875

10,500

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 82: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 16

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

9,375

7,125

5,375

11,875

10,50015,125

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 83: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 16

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

9,375

7,125

5,375

11,875

10,50015,125

1

2

3

4

5

1

33

3 3 3

5333

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 84: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 16

Programación dinámica: producto de una cadena de matrices

15,750

2,625

750

1,000

5,000

7,875

4,375

2,500

3,500

9,375

7,125

5,375

11,875

10,50015,125

1

2

3

4

5

1

33

3 3 3

5333

p = [ 30, 35, 15, 5, 10, 20, 25 ]

Friday, May 19, 17

Page 85: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 17

Programación dinámica: elementos

Friday, May 19, 17

Page 86: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 17

Programación dinámica: elementos

• El problema exhibe subestructura óptima.

Friday, May 19, 17

Page 87: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 17

Programación dinámica: elementos

• El problema exhibe subestructura óptima.

• Patrón para encontrar la subestructura óptima:

Friday, May 19, 17

Page 88: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 17

Programación dinámica: elementos

• El problema exhibe subestructura óptima.

• Patrón para encontrar la subestructura óptima:

i. mostrar que la solución consiste en una elección (la estación anterior en la línea de ensamblado, meter o no un objeto a la mochila, elegir un índice donde separar la cadena de matrices...). Esta elección deja uno o más subproblemas que resolver.

Friday, May 19, 17

Page 89: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 17

Programación dinámica: elementos

• El problema exhibe subestructura óptima.

• Patrón para encontrar la subestructura óptima:

i. mostrar que la solución consiste en una elección (la estación anterior en la línea de ensamblado, meter o no un objeto a la mochila, elegir un índice donde separar la cadena de matrices...). Esta elección deja uno o más subproblemas que resolver.

ii. suponer que, para un subproblema dado se nos da la solución óptima.

Friday, May 19, 17

Page 90: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 17

Programación dinámica: elementos

• El problema exhibe subestructura óptima.

• Patrón para encontrar la subestructura óptima:

i. mostrar que la solución consiste en una elección (la estación anterior en la línea de ensamblado, meter o no un objeto a la mochila, elegir un índice donde separar la cadena de matrices...). Esta elección deja uno o más subproblemas que resolver.

ii. suponer que, para un subproblema dado se nos da la solución óptima.

iii. dada esta solución determinar la mejor manera de caracterizar los subproblemas.

Friday, May 19, 17

Page 91: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 17

Programación dinámica: elementos

• El problema exhibe subestructura óptima.

• Patrón para encontrar la subestructura óptima:

i. mostrar que la solución consiste en una elección (la estación anterior en la línea de ensamblado, meter o no un objeto a la mochila, elegir un índice donde separar la cadena de matrices...). Esta elección deja uno o más subproblemas que resolver.

ii. suponer que, para un subproblema dado se nos da la solución óptima.

iii. dada esta solución determinar la mejor manera de caracterizar los subproblemas.

iv. mostrar que las soluciones a los subproblemas del problema con resolución óptima son óptimas también o se presenta contradicción.

Friday, May 19, 17

Page 92: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 18

Programación dinámica: elementos

Friday, May 19, 17

Page 93: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 18

Programación dinámica: elementos

• La subestructura óptima varía de dos maneras:

Friday, May 19, 17

Page 94: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 18

Programación dinámica: elementos

• La subestructura óptima varía de dos maneras:

• de acuerdo a cuántos subproblemas se usan en la solución óptima al problema original y,

Friday, May 19, 17

Page 95: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 18

Programación dinámica: elementos

• La subestructura óptima varía de dos maneras:

• de acuerdo a cuántos subproblemas se usan en la solución óptima al problema original y,

• de acuerdo a cuántas elecciones tenemos para determinar cuáles subproblemas usar en la solución óptima.

Friday, May 19, 17

Page 96: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 18

Programación dinámica: elementos

• La subestructura óptima varía de dos maneras:

• de acuerdo a cuántos subproblemas se usan en la solución óptima al problema original y,

• de acuerdo a cuántas elecciones tenemos para determinar cuáles subproblemas usar en la solución óptima.

• Linea de ensamblado: 1 subproblema, 2 elecciones (para F(j), resolver F(j-1), y decidir si llegar a j por arriba o por abajo)

Friday, May 19, 17

Page 97: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 18

Programación dinámica: elementos

• La subestructura óptima varía de dos maneras:

• de acuerdo a cuántos subproblemas se usan en la solución óptima al problema original y,

• de acuerdo a cuántas elecciones tenemos para determinar cuáles subproblemas usar en la solución óptima.

• Linea de ensamblado: 1 subproblema, 2 elecciones (para F(j), resolver F(j-1), y decidir si llegar a j por arriba o por abajo)

• Multiplicación de matrices: 2 subproblemas, j-i elecciones (para resolver m[i,j], resolver m[i,k] y m[k+1,j], con k = i,..,j-1).

Friday, May 19, 17

Page 98: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 18

Programación dinámica: elementos

• La subestructura óptima varía de dos maneras:

• de acuerdo a cuántos subproblemas se usan en la solución óptima al problema original y,

• de acuerdo a cuántas elecciones tenemos para determinar cuáles subproblemas usar en la solución óptima.

• Linea de ensamblado: 1 subproblema, 2 elecciones (para F(j), resolver F(j-1), y decidir si llegar a j por arriba o por abajo)

• Multiplicación de matrices: 2 subproblemas, j-i elecciones (para resolver m[i,j], resolver m[i,k] y m[k+1,j], con k = i,..,j-1).

• Bolsa del Ladrón: 1 subproblema, N elecciones ( para resolver knapsack[c], resolver knapsack[c-size(O[i])] , con i = 1,...N).

Friday, May 19, 17

Page 99: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 19

Programación dinámica: elementos

Friday, May 19, 17

Page 100: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 19

Programación dinámica: elementos

• De manera informal, el tiempo de ejecución de un algoritmo de programación dinámica depende del producto de dos factores:

Friday, May 19, 17

Page 101: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 19

Programación dinámica: elementos

• De manera informal, el tiempo de ejecución de un algoritmo de programación dinámica depende del producto de dos factores:

• el número total de subproblemas y

Friday, May 19, 17

Page 102: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 19

Programación dinámica: elementos

• De manera informal, el tiempo de ejecución de un algoritmo de programación dinámica depende del producto de dos factores:

• el número total de subproblemas y

• el número de opciones a revisar para cada subproblema.

Friday, May 19, 17

Page 103: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 19

Programación dinámica: elementos

• De manera informal, el tiempo de ejecución de un algoritmo de programación dinámica depende del producto de dos factores:

• el número total de subproblemas y

• el número de opciones a revisar para cada subproblema.

• Línea de ensamblado: Θ(n) subproblemas totales y 2 opciones que evaluar en cada uno = Θ(n).

Friday, May 19, 17

Page 104: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 19

Programación dinámica: elementos

• De manera informal, el tiempo de ejecución de un algoritmo de programación dinámica depende del producto de dos factores:

• el número total de subproblemas y

• el número de opciones a revisar para cada subproblema.

• Línea de ensamblado: Θ(n) subproblemas totales y 2 opciones que evaluar en cada uno = Θ(n).

• Multiplicación de matrices: Θ(n2) subproblemas totales y a lo más n-1 opciones = Θ(n3).

Friday, May 19, 17

Page 105: Programación dinámica (3)alram/comp_algo/clase24.pdfAlonso Ramirez Manzanares Computación y Algoritmos 18.05 2 Programación dinámica: producto de una cadena de matrices • Tenemos

Alonso Ramirez Manzanares Computación y Algoritmos 18.05 19

Programación dinámica: elementos

• De manera informal, el tiempo de ejecución de un algoritmo de programación dinámica depende del producto de dos factores:

• el número total de subproblemas y

• el número de opciones a revisar para cada subproblema.

• Línea de ensamblado: Θ(n) subproblemas totales y 2 opciones que evaluar en cada uno = Θ(n).

• Multiplicación de matrices: Θ(n2) subproblemas totales y a lo más n-1 opciones = Θ(n3).

• Bolsa del ladrón: numero de subproblemas totales depende de los tamaños de los objetos y la bolsa, a lo más n opciones por sub-problema.

Friday, May 19, 17