divide y venceras

download divide y venceras

If you can't read please download the document

Transcript of divide y venceras

Programacin Dinmica

Autor: Rafael Alcal

Esquema1. Programacin Dinmica 2. Elementos de Programacin Dinmica1. 2. 3. 4. Principio de Optimalidad de Bellman Definicin Recursiva de la solucin optimal Enfoque ascendente Bsqueda solucin optima

3. Resolucin de problemas tipo1. Multiplicacin de Matrices 2. Subsecuencia de longitud mayor (LCS) 3. MochilaAutor: Rafael Alcal

Introduccin a la PD Esta tcnica se aplica sobre problemas que a simple vista necesitan un alto coste computacional (posiblemente exponencial) donde: Subproblemas optimales: La solucin ptima a un problema puede ser definida en funcin de soluciones ptimas a subproblemas de tamao menor, generalmente de forma recursiva. Solapamiento entre subproblemas: Al plantear la solucin recursiva, un mismo problema se resuelve ms de una vez

Introduccin a la PD La PD utiliza un enfoque ascendente (botton-up) para obtener la solucin, primero calcula las soluciones ptimas a problemas de tamao pequeo. Utilizando dichas soluciones encuentra soluciones a problemas de mayor tamao. La idea de la PD es encontrar la solucin a los subproblemas y almacenarlos en alguna estructura (diccionario) para utilizarlas posteriormente. Por tanto, es ms eficiente que la fuerza bruta que resuelve el mismo subproblema una y otra vez.

Memorizacin Evita calcular lo mismo varias veces, Usualmente se utiliza una matriz que se rellena conforme las soluciones a los subproblemas son calculados (espacio vs. tiempo).Cuando una solucin es computada se almacena en un diccionario o tabla. Antes de realizar una llamada recursiva para un subproblema Q, se chequea la tabla para ver si la solucin ha sido obtenida previamente Si no ha sido almacenada, se hace la llamada recursiva. Si ha sido previamente calculada, se recupera la solucin y no se hace la llamada recursiva. Antes de devolver la solucin, se almacena en la tabla.

Memorizacin Clculo del valor de Fibonacci de n Fib(n) = Fib(n-1)+Fib(n-2) Observar solapamiento de subproblemas Observar el uso de memorizacin para agilizar el algoritmo

Elementos de la PD Debemos de considerar la bsqueda de la solucin ptima a un problema como un proceso de decisin multietpico, Sol = d1,d2,d3,d4,,dn. Se toma una decisin en cada paso, pero sta depende de las soluciones a los subproblemas que lo componen Los siguientes cuatro elementos conforman la resolucin de un problema mediante PD: 1. 2. 3. 4. Principio de Optimalidad de Bellman Definicin Recursiva de la solucin optimal Enfoque ascendente Bsqueda solucin optima

Principio de Optimalidad de BellmanUna secuencia ptima de decisiones que resuelve un problema debe cumplir la propiedad de que cualquier subsecuencia de decisiones debe ser tambien optima respecto al subproblema que resuelve. Esto es,La solucin optima a cualquier instancia no trivial de un problema es una combinacin de soluciones ptimas de algunas de las sub-instancias.

Si d1,d2,d3, , dn es optimal para P[1,n] Entonces d1,d2,,di es optimal para P[1,i] y di+1,,dn es optimal para P[i+1,n]

Pasos para desarrollar un algoritmo basado en PD1. Ver si se aplica el Principio de Optimalidad de Bellman: Encontrar la estructura de la solucin: Dividir el problema en subproblemas y determinar si se puede aplicar el principio de optimalidad.

2. Definicin recursiva de la solucin optimal: Definir el valor de la solucin ptima en funcin de valores de soluciones para sub-problemas de tamao menor.

Pasos para desarrollar un algoritmo basado en PD3. Calcular el valor de la solucin optimal utilizando un enfoque ascendente. Determinar el conjunto de subproblemas distintos a resolver (tamao de la tabla) Identificar los subprblemas con solucion trivial Obtener los valores con un enfoque ascendente y almacenar los valores que vamos calculado en la tabla. En etapas posteriores se utilizaran los valores previamente calculados

4. Determinar la solucin ptima a partir de la informacin prviamente calculada.

Multiplicacin Encadenada de MatricesMultiplicacion Matricial: C = A*B donde A es d e y B es e f

C[i, j ] = A[i, k ] * B[k , j ]k =1

e

O(def )

Problema: Calcular A=A1*A2**An Ai es pi-1pi Problema: Cmo parentizar? EjemploB es 3 100 C es 100 5 D es 5 5 (B*C)*D necesita 1500 + 75 = 1575 operaciones B*(C*D) necesita 1500 + 2500 = 4000 operaciones

Multiplicacin Encadenada de Matrices Intentar todas las formas posibles de parentizar A=A1*A2**An Calcular el nmero de operaciones para cada una. Seleccionar la de menor coste

Orden de ejecucin: En nmero de parentizaciones es igual al nmero de rboles binarios con n nodos. Es exponencial!, (orden 4^n/n^2 )

Multiplic. Encadenada de Matrices Sea pk-1pk la dimensin de la matriz Ak Problema: Multiplicar (A1A2...AkAk+1Ak+2An) Supongamos que parentizamos en k (A1A2...Ak) (Ak+1Ak+2An) Si llamamos N[i,j] al nmero de operaciones necesarias para multiplicar Ai*Ai+1**Aj. N[1,n] = N[1,k]+N[k+1,n]+p0pkpn.

Multiplic. Encadenada de Matrices Principio de Optimalidad de Bellman (Subproblemas optimales): La solucin ptima se puede definir en trminos de soluciones ptimas a problemas de tamao menor. Necesariamente tiene que haber una multiplicacin final (la de mayor nivel) en el clculo de la solucin ptima. Supongamos que la ltima multiplicacin se realiza en la posicin i:

(A1**Ai)*(Ai+1**An). Entonces, el costo de la solucin ptima N[1,n] es la suma de

dos soluciones ptimas para los subproblemas N[1,i] y N[i+1,n] ms el costo necesario para la ltima multiplicacinSi el optimo global no estuviese compuesto de subproblemas optimales, entonces podriamos definir una solucin optimal con menor costo.

Definicin Recursiva Solucin Optimal: Si i=j entonces N[i,j] = 0 Para 1