Obras
{Si #S = 0 Ent (`Error') Si #S = 1 Ent Retornar(S) Si #S > 1 Ent {Si #S es par Ent {Dividir a S en dos conjutos de igual tamaño (S1,S2) Multiplicación(S1) Multiplicación(S2) S ! S1xS2 Retornar(S) } Si #S es impar Ent {Sn ! elemento central de S S1 ! Las matrices anteriores a Sn S2 ! Las matrices posteriores a Sn Multiplicación(S1) Multiplicación(S2) Si S1xSn es costo menor //Implica conocerel costo de SnxS2 Ent S1!S1xSn //Esta comparación se hace Sino S2!SnxS2 // en base a las dimensiones S ! S1xS2 // de las matrices (pxqxr) Retornar(S)
2
} } } Para el caso de multiplicar 3 matrices, el algoritmo funciona bien, pero si se quieren multiplicar 4 matrices, el algoritmo realiza las siguientes llamadas: S ={ A[10x30] B[30x50] C[50x1] D[1x100] } Multiplicar(S) #S es par S1 = { A,B} S2 = { C,D } Multiplicar(S1 = { A,B }) #S es par S1 = { A } S2 = { B } Multiplicar(S1 = { A }) #S = 1 Retornar(S = { A }) Multiplicar(S2 = { B }) #S = 1 Retornar(S = { B }) S = AB Retornar(S1 = { AB }) Multiplicar(S2 = { C,D }) #S es par S1 = { C } S2 = { D } Multiplicar(S1 = { C }) 3
#S = 1 Retornar(S = { C }) Multiplicar(S2 = { D }) #S = 1 Retornar(S = { D }) S = CD Retornar(S2 = { CD }) S= (AB)(CD) Retornar( S = (ABCD) Si nos damos cuenta, el algoritmo multiplico en (AB) primero y luego (BC) y por último los resultados de dicha multiplicación, obteniendo un costo de 70000 multiplicaciones y no el costo mínimo de 2800 operaciones. Esto es debido a la concepción del algoritmo, ya que la decisión de multiplicar con costo mínimo se toma solo en el caso que n sea impar. Si se realizaun pequeño cambio en el algoritmo, de tal manera que en el caso que #S sea par, se elija un a " #S, de tal manera que se formen dos grupos de conjunto, #S1 = a y #S2 = #S − a. El problema que se enfrenta ahora es derechamente la elección de a, ¿cómo elijo a para que la multiplicación tenga costo mínimo?
Si intentamos analizar las dimensiones de las matrices e inferir que a se puede elegir paramultiplicar con costo mínimo, nos podremos encontrar que para el caso de las cuatro matrices se tiene que, al multiplicar BC primero obtenemos un costo mínimo.
4
Para que el algoritmo hubiese realizado una multiplicación con el mínimo costo, era necesario que este dividiera a S en los conjuntos: S1 = { A,B,C }, S2 = { D }, teniendo un costo de 2800 mínimo. En base a esto, la elección de a...
Regístrate para leer el documento completo.