Anda di halaman 1dari 14

Unidad V Tcnicas Avanzadas de Anlisis y Diseo de Algoritmos 1. 15.

1-1 Modifique el procedimiento PRINT-STATIONS para imprimir las estaciones de las lneas de ensamblaje en orden creciente (Sugerencia: Use Recursividad). Solucin:

RECURSIVE-PRINT-STATIONS(1,n) i 1 while ( n 1 ) RECURSIVE-PRINT-STATIONS(1,n-1) i 1i [n] print line i i , station n 1

Otra solucin sera:

2. 15.1-2 Use las ecuaciones (15.8) y (15.9) y el mtodo de sustitucin para demostrar que ri(j), el nmero de referencias hechas a fi[j] en un algoritmo recursivo es igual a 2n-j. Solucin:

3. 15.1-5 el Profesor Canty supone que podran existir algunos valores e i, ai,j y ti,j para los cuales FASTEST-WAY produce li[j] tal que l1[j]=2 y l2[j]=1 para alguna estacin numero j. Asumiendo que todos los costos de transferencia t i,j son no negativos, muestre que el profesor est equivocado. Solucin:

Si l1[j] = 2, entonces la manera ms rpida de pasar por la estacin j en la lnea 1 consiste en cambiar las lneas de la estacin de j-1 en la lnea 2. Esto significa que f2[j-1] + t1,j-1 + ai,j < f1[j-1] + a1, j. Quitando a1, j de ambos lados de la ecuacin se obtiene f2[j-1] + t1, j-1 < f1[j-1]. Si L2[j] = 1, entonces la manera ms rpida de pasar por la estacin j en la lnea 2 es cambiando las lneas de la estacin de j-1 en la lnea 1. Esto significa que f1[j-1] + t2, j-1 + a2, j < f2 [j-1] + a2, j. Quitando a2, j de ambos lados de la ecuacin se obtiene f1[j-1] + T2, j-1 < f2 [j-1]. Se puede obtener una contradiccin mediante la combinacin de las dos ecuaciones anteriores de la forma siguiente: De f2 [j-1] + t1, j-1 < f1 [j-1] y f1 [j-1] + t2, j-1 < f2 [j-1]

Se obtiene f2 [j-1] + t1, j-1 + t2, j-1 < f2 [j-1]. Dado que todos los gastos de transferencia son no negativos, la desigualdad resultante no se cumple. Concluyendo entonces que no se puede tener la situacin donde l1[j] = 2 y L2[j] = 1. 4. 15.2-1 Encuentre una parentizacin ptima para el problema de multiplicacin de matrices con secuencia de dimensiones: 5, 10, 3, 12, 5, 50, 6. Solucin:

Se debe resolver la multiplicacin encadenada de matrices para el problema especfico. Esto se puede resolver mediante el empleo del algoritmo MATRIXCHAIN-ORDER (p) donde p = <5, 10, 3, 12, 5, 50, 6> o, simplemente, usando la ecuacin m[i,j], que se detalla a continuacin:

Tenemos entonces los siguientes resultados:

La tabla m: m [1, 2] = 150, m [2, 3] = 360, m [3, 4] = 180, m [4, 5] = 3000, m [5, 6] = 1500 m [1, 3] = 330, m [2, 4] = 330, m [3, 5] = 930, m [4, 6] = 1860 m [1, 4] = 405, m [2, 5] = 2430, m [3, 6] = 1770 m [1, 5] = 1655, m [2, 6] = 1950 m [1, 6] = 2010

i/j 1 2 3 4 5 6

1 0

2 150 0

3 330 360 0

4 405 330 180 0

5 1655 2430 930 3000 0

6 2010 1950 1770 1860 1500 0

La tabla s: s [1, 2] = 1, s [2, 3] = 2, s [3, 4] = 3, s [4, 5] = 4, s [5, 6] = 5 s [1, 3] = 2, s [2, 4] = 2, s [3, 5] = 4, s [4, 6] = 4 s [1, 4] = 2, s [2, 5] = 2, s [3, 6] = 4 s [1, 5] = 4, s [2, 6] = 2 s [1, 6] = 2

i/j 1 2 3 4 5 6

1 0

2 1 0

3 2 2 0

4 2 2 3 0

5 4 2 4 4 0

6 2 2 4 4 5 0

De acuerdo al algoritmo citado, la tabla se calcula simplemente por el hecho de que m [i, i] = 0 para todo i. Esta informacin se utiliza para calcular m [i, i +1] para i = 1, ... n-1 y as sucesivamente. Finalmente se tiene entonces la siguiente parentizacin:

15.2-2 Codifique un algoritmo recursivo MATRIX-CHAIN-MULTIPLICACION (A, s, i, j) que realiza la multiplicacin ptima de cadenas de matrices (A 1, A2,...,An), La tabla s es calculada por MATRIX-CHAIN-ORDEN. (La llamada inicial sera MATRIX-CHAIN-MULTIPLICACION (A, s, 1, n).). Solucin:

5. 15.3-1 Cul es una manera ms eficiente para determinar el nmero ptimo para la multiplicacin de cadenas de matrices: la enumeracin de todas las formas posibles de parentizacin y calculando el nmero de multiplicaciones para cada uno, o correr el algoritmo MATRIX-CADENA? Justifica tu respuesta. Solucin:

Correr

RECURSIVE-MATRIX-CHAIN

(multiplicacin

encadenada

de

matrices) es asintticamente ms eficiente que la enumeracin de todas las formas de parentizar el producto de las matrices y calcular el nmero de multiplicaciones en cada multiplicacin.

Considere el tratamiento de los subproblemas por los dos enfoques: Para cada lugar posible a dividir la cadena de matriz, el mtodo de enumeracin encuentra todas las formas de colocar parntesis en la mitad izquierda, busca todas las formas de colocar parntesis en la mitad derecha, y mira a todas las posibles combinaciones de la mitad izquierda con la mitad derecha. El resultado de la cantidad de trabajo para buscar en cada combinacin de izquierda y derecha en la mitad del subproblema, es la cantidad de formas de hacer el producto en la mitad izquierda y la cantidad de formas de hacerlo en la mitad derecha. En cada lugar posible para dividir la cadena de matrices, RECURSIVEMATRIX-CHAIN encuentra la mejor manera de parentizar la mitad izquierda, encuentra la mejor manera de parentizar la mitad derecha, y combina solo esos dos resultados. Por lo tanto la cantidad de trabajo para combinar los resultados subproblema izquierda y derecha media es O (1). Tomando como premisa, basados en el libro texto, que el tiempo de ejecucin para la enumeracin es (4n/n3/2). Vamos a demostrar que el tiempo de ejecucin de RECURSIVO-MATRIX-CADENA es O (n3n-1). Para obtener una cota superior del tiempo de ejecucin de RECURSIVEMATRIX-CHAIN, vamos a usar el mismo criterio para obtener un lmite inferior: Derive una recurrencia de la forma T (n) . . . y resolver por sustitucin. Por el lmite inferior de la recurrencia, se asume (de acuerdo al libro texto) que cada uno tomar por lo menos por unidad de tiempo. Por la recurrencia del lmite superior, asumiremos que cada par de lneas tomar un tiempo constante c. Por lo tanto, tenemos la recurrencia:

Esto es igual que las recurrencias estudiadas previamente del libro texto, excepto que tiene c en lugar de uno, por lo que se puede reescribir como:

Vamos a demostrar que T(n) = O (n3n-1) utilizando el mtodo de sustitucin. (Nota: Cualquier lmite superior de T(n) es o(4n/n3/2) ser suficiente. Si se prefiere, para demostrar una que es ms fcil de imaginar, por ejemplo, T (n) = O (3.5n). ) Especficamente, vamos a demostrar que T (n) cn3 n-1 para todo n 1. La base es fcil, ya que T (1) c = c 1 3 1-1. Inductivamente, para n 2 tenemos:

Correr RECURSIVE-MATRIX-CHAIN toma un tiempo de O(n3Nn-1), y enumerar toda la parentizacin toma un tiempo de (4n/n3/2), y as RECURSIVE-MATRIX-CHAIN es ms eficiente que la enumeracin. Nota: La sustitucin anterior utiliza el hecho de que

Esta ecuacin puede ser derivada de la ecuacin (A.5) tomando la derivada. Tenemos:

6. 15.3-2 Dibuje el rbol de la recursividad para el procedimiento MERGE-SORT de la Seccin 2.3.1 en un conjunto de 16 elementos. Explique por qu memorizacin es ineficaz en la aceleracin de un algoritmo divide y conquista como MERGE-SORT. Solucin: La memorizacin es ineficaz en la aceleracin de un algoritmo divide y conquista como MERGE-SORT, ya que el mismo realiza, la mayora de las veces, una sola llamada a cualquier par de ndices en el arreglo que est siendo ordenado. En otras palabras, los subproblemas no se solapan y por lo tanto memorizacin no mejorar el tiempo de ejecucin.

7. 15.3-4 Describa cmo la programacin de lneas de ensamblaje tiene superposicin de subproblemas. Solucin:

8. 15-7 Supongamos que tiene una mquina y un conjunto de n trabajos a1, a2,. . . ,an para ser procesados. Cada trabajo de aj tiene un tiempo de procesamiento de tj, un lucro pj, y un plazo dj. La mquina slo puede procesar un trabajo a la vez, y el trabajo aj se debe ejecutar ininterrumpidamente en tj

unidades de tiempo. Si el trabajo aj se completa en el plazo dj, recibir un pj de lucro, pero si se completa despus de su plazo lmite, recibir una ganancia de 0. Escriba un algoritmo para encontrar el programa que obtiene la cantidad mxima de ganancias, asumiendo que todos los tiempos de procesamiento son nmeros enteros entre 1 y n. Cul es el tiempo de ejecucin de su algoritmo? Solucin:

Primero se deben ordenar los trabajos en orden creciente de dj (plazo). Supngase que los n trabajos a1, ..., an, son ordenados de esta manera. Consideremos la siguiente funcin recursiva. S [j, d] denota el subproblema de j trabajos a0,..., an y d un plazo en el que tenemos que terminar todos nuestros trabajos. Es decir, la solucin factible debe terminar el ltimo trabajo en el momento d.

Dado que esta funcin recursiva satisface la propiedad de subestructura ptima, se genera la solucin ptima. Todo lo que tenemos que hacer es construir una tabla de tamao n por dn y obtener la solucin para S [n, dn] utilizando recursividad hacia arriba. El tiempo de ejecucin es max {n lg n, n max1j n dj} 9. El Problema de Lneas de Ensamblaje puede ser atacado por programacin Voraz? Dara soluciones ptimas? Explique. Solucin:

10. 16.1-1 Hacer un algoritmo programacin dinmica para el problema de seleccin de actividades, basado en la recurrencia (16,3). El algoritmo debe calcular las dimensiones C [i, j] como se ha definido anteriormente y tambin producir el subconjunto de actividades A de tamao mximo. Supngase que las entradas se han clasificado como en la ecuacin (16,1). Compare el tiempo de ejecucin de su solucin con el tiempo de ejecucin de GREEDYACTIVITYSELECTOR. Solucin:

11. 16.1-2 Suponga que en vez de seleccionar la primera actividad que termine, se debe seleccionar la ltima actividad que es compatible con todas las actividades previamente seleccionadas. Describa cmo este enfoque es un algoritmo voraz, y demostrar que se obtiene una solucin ptima. Solucin:

El enfoque propuesto, seleccionando la ltima actividad para empezar que es compatible con todas las actividades previamente seleccionadas, es en realidad el algoritmo voraz, pero a partir del final en lugar de al principio. Otra forma de verlo es la siguiente. Se nos ha dado un conjunto S = {a1, a2,. . . Otra forma de verlo es la siguiente. Se nos ha dado un conjunto S = {a 1, a2... an} de actividades, donde ai = [si, fi), y nos proponemos encontrar una solucin ptima mediante la seleccin de la ltima actividad para empezar que es compatible con todas las actividades previamente seleccionadas. En su lugar, vamos a crear un conjunto S' = {a'1, a'2,. . . , a'n}, donde ai = [fi y si). Es decir, ai es la inversa de ai. Es evidente que un subconjunto de {a i1, ai2,, aik} S es mutuamente compatible si y slo si el subconjunto correspondiente {a' i1, a'i2,, a'ik} S' es tambin mutuamente compatible. Por lo tanto, una solucin ptima para S es directamente a una solucin ptima para S' y viceversa.

El enfoque propuesto de seleccin de la ltima actividad para empezar que es compatible con todas las actividades previamente seleccionadas, cuando se ejecuta en S, da la misma respuesta que el algoritmo voraz del texto - la seleccin de la primera actividad a fin de que sea compatible con todas las actividades previamente seleccionadas - cuando se ejecuta en S. La solucin que el enfoque propuesto encuentra para S corresponde a la solucin que el algoritmo voraz del texto encuentra para S', por lo que se demuestra que es ptimo.

12. 16.1-4 No todo planteamiento voraz en el problema de seleccin de actividades produce un conjunto de tamao mximo de actividades compatibles entre s. D un ejemplo para mostrar que el enfoque de seleccin de la actividad de menor duracin compatible con las actividades previamente seleccionadas no funciona. Haga lo mismo para enfoques que siempre seleccionan la actividad compatible que se solapa con la menor cantidad de las actividades que quedan y siempre seleccionando la actividad compatible restante con el tiempo de inicio ms temprano. Solucin:

Para el enfoque de seleccin de la actividad de menos duracin de aquellos que son compatibles con las actividades previamente seleccionadas:

Este enfoque slo selecciona {a2}, pero la solucin ptima selecciona {a1, a3}. Para el enfoque de seleccionar siempre la actividad compatible que se solape con la menor cantidad de las otras actividades restantes:

Este enfoque selecciona primero a6, y despus de la eleccin, slo se pueden seleccionar dos de las otras actividades (una de a1, a2, a3, a4 y una de los a8, a9, a10, a11). Una solucin ptima es {A1, A5, A7, A11}. Para el enfoque de seleccionar siempre la actividad restante compatible con el tiempo de inicio ms temprano, slo tiene que aadir una actividad ms con el intervalo [0, 14) para el ejemplo en la seccin 16.1. Ser la primera actividad seleccionada, y ninguna otra actividad ser compatible con ella.

13. 16.2-1 Por qu el problema de la mochila fraccional es un algoritmo voraz? Justifique. Solucin:

Digamos que la estrategia voraz utiliza totalmente el elemento i ms costoso, y el resto forma parte de los i +1 elementos ms caros. Entonces, supongamos alguna estrategia no voraz funcion mejor. Luego tendra que usar menos de la totalidad de uno de los i elementos ms costoso, o menos del elemento i +1 ms costoso, con el fin de tener espacio para utilizar algn otro elemento. Digamos que se usa menos del artculo j y sume ms del elemento k. Se podra sustituir la cantidad del artculo k con la cantidad faltante del elemento j y tener una mezcla que es por lo menos este valor. Se puede repetir este proceso hasta que toda la cantidad de objetos no incluidos en la mezcla voraz, pero incluido en la solucin ptima" no voraz han sido reemplazados por cantidad de producto en la solucin voraz, y la mezcla voraz es como mnimo ms valiosa. Esto es una contradiccin.

14. 16.2-2 De una solucin de programacin dinmica al problema de la mochila 01 que corra en O(nW) donde n es el nmero de tems y W el peso mximo de los tems colocados en la mochila. Solucin:

En primer lugar, se tiene que el problema mochila 0-1 muestra una subestructura ptima. Si una solucin ptima contiene el elemento n, las opciones restantes deben constituir una solucin ptima a un problema similar en los tems 1, 2, ..., n - 1, con lmite W - wn. . Si una solucin ptima no contiene n elementos, la solucin tambin debe ser una solucin ptima a un problema similar en los puntos 1, 2, ..., n - 1 con lmite W . Sea m[i,j] el valor total que puede ser tomado de los primeros i artculos, cuando la mochila puede soportar el peso j. Nuestro problema es conseguir que el valor mximo de m [n, W], donde n es el nmero de elementos dados y W es el peso mximo de elementos que el ladrn puede ponerlo en su mochila. Podemos expresar esto en la siguiente frmula:

El algoritmo toma como entrada n, W, y las dos secuencias de v = < v1, v2,..., vn> y w = <w1, w2,..., wn>. Almacena los valores m[i, j] en una tabla, es decir, una matriz de 2 dimensiones, m [0 ... n, 0 ... W], cuyas entradas se calculan en el orden de importancia de las filas. (Es decir, la primera fila de m es llenada de izquierda a derecha, a continuacin, la segunda fila, y as sucesivamente.) Al final del proceso, m [n, W] contiene el valor mximo que se puede empacar en la mochila. Podemos usar esta recursividad para crear un algoritmo de programacin dinmica sencillo:

Debido a que cada m [i, j] se puede calcular en tiempo constante, el funcionamiento total sera de O (N).

15. 16.2-3 Suponga que en el problema de la mochila 0-1 el orden de los tems cuando son ordenados ascendentemente por peso es el mismo que cuando son ordenados descendentemente. Codifique un algoritmo eficiente que encuentre una solucin ptima a esta variante del problema de la mochila y argumente la correctitud de su solucin. Solucin:

16. 16.2-5 Describa un algoritmo eficiente que, dado un conjunto de puntos {x1, x2,..., Xn} en la recta real, determina el conjunto ms pequeo de intervalos de longitud unitaria cerrada que contiene todos los puntos dados. Argumente que su algoritmo es correcto. Solucin:

17. 16.2-6 Muestre como resolver el problema de la mochila fraccional en tiempo O(n). Solucin:

18. 16-1 Considere el problema de hacer el cambio para n centavos utilizando el menor nmero de monedas. Supngase que el valor de cada moneda es un nmero entero. Solucin:

a.

Describa un algoritmo voraz para hacer un cambio con monedas de venticinco, de diez centavos, cinco centavos, y monedas de un centavo. Demostrar que el algoritmo obtiene una solucin ptima.

b.

Codifique un algoritmo de tiempo O (nk) que hace el cambio para cualquier conjunto de denominaciones de monedas diferentes k, suponiendo que una de las monedas es un centavo.

Anda mungkin juga menyukai