Académique Documents
Professionnel Documents
Culture Documents
Anlisis
Podemos usar el algoritmo estndar para multiplicar pares de matrices como una subrutina una
vez establecido los parntesis para resolver las ambigedades en cmo las matrices se
multiplican juntas debido a que la multiplicacin de matrices cumple la propiedad de la
asociatividad.
<A1,A2,A3,A4>
(A1(A2(A3*A4)))
(A1((A2*A3)A4))
((A1*A2)(A3*A4))
((A1*(A2*A3))A4)
((A1(A2*A3))A4)
Como poner el orden de los parntesis en una cadena de matrices cambia o tiene impacto en el
costo de una multiplicacin de matrices?
Fuerza bruta
Intentar resolver el problema probando todas las maneras de agrupar con parntesis.
No es una solucin eficiente.
Antes de resolver el problema de la multiplicacin de la cadena matricial mediante la
programacin dinmica, demostremos de que la exhaustiva comprobacin de todos los parntesis
posibles no produce un algoritmo eficiente.
Un algoritmo voraz determina el mnimo nmero de monedas que debe devolverse en el cambio.
En la figura se muestran los pasos que un ser humano debera seguir para emular a un algoritmo
voraz para acumular 36 cntimos usando slo monedas de valores nominales de 1, 5, 10 y 20. La
moneda del mayor valor menor que el resto debido es el ptimo local en cada paso. Ntese que
en general el problema de devolucin del cambio requiere programacin dinmica o
programacin lineal para encontrar una solucin ptima. Sin embargo, en muchos sistemas
monetarios, incluyendo el euro y el dlar estadounidense, son casos especiales donde en la
estrategia del algoritmo voraz da con la solucin ptima.
Un algoritmo voraz (tambin conocido como vido, devorador o goloso) es aquel que, para
resolver un determinado problema, sigue una heurstica consistente en elegir la opcin ptima en
cada paso local con la esperanza de llegar a una solucin general ptima. Este esquema
algortmico es el que menos dificultades plantea a la hora de disear y comprobar su
funcionamiento. Normalmente se aplica a los problemas de optimizacin.
Para Greedy tenemos que crear un algoritmo que halle el orden de multiplicacin de las matrices
sin necesidad de hacer todas las multiplicaciones posibles.
Para hallar el nmero de operaciones que se hace para multiplicar dos matrices, se halla
multiplicando el nmero de filas de la primera matriz, por el nmero de columnas de la primera
matriz que es igual al nmero de filas de la segunda matriz, por el nmero de columnas de la
segunda matriz.
Para escoger las multiplicaciones de las matrices por prioridades, de tal manera que las
prioridades sean el nmero central mayor entre dos matrices.
De esta manera los nmeros centrales mayores aparecern menos al momento de hallar el
nmero de operaciones.
El nmero de operaciones es 2*5*3 (las dimensiones de las matrices menos el elemento del
centro)
Ejemplo greedy:
Programacion Dinamica
Concepto:
La programacin dinmica es una tcnica matemtica que se utiliza para la solucin de
problemas matemticos seleccionados, en los cuales se toma un serie de decisiones en forma
secuencial.
Ecuacin de Recurrencia
- Tiene 3 for anidados esto nos da una conclusin que se ejecuta en O(n3)
- requiere (n2) memoria para almacenar m y s.
- Este Forma de implementacin supera por mucho a la recursiva
Anlisis de la Implementacin Mtodo Top-Down
Los mtodos Top Down es la combinacin de la recursividad pero con la
Memorizacin para que este solo calcule una vez un subproblema recursivo y as
despus cuando vaya a necesitar el subproblema este ya est guardado en memoria
y no tenga que calcularlo otra vez
Conclusiones
1) El problema de la Multiplicacin de Cadena de Matrices se puede solucionar con
Programacin Dinmica
2) Fuerza bruta para este Problema es de complejidad muy alta
3) Algoritmos greedy no se pueden aplicar a este Problema
4) PD nos mejora mucho el tiempo de ejecucin del Los algoritmos de Fuerza bruta
5) Las 2 formas de Implementar PD nos dan siempre un mejor tiempo que los
algoritmos de Fuerza Bruta