Sie sind auf Seite 1von 3

Analisis Comparativo Multiplicacion de Matrices Recursivo vs Strassen

Escuela Profesional Ingenier a de Sistemas Universidad Nacional de San Agust n Arequipa, Per u
Gean Carlos Morales Castro geanmorales@gmail.com Katherin Roque Bol var kattyrb27@gmail.com

ResumenEl presente paper ilustra el comportamiento de el algoritmo Strassen vs el algoritmo recursivo para la multiplicaci on de matrices, pese a que Strassen es solo ligeramente mas r apido, fue el primero en senalar que el enfoque est andar no es optimo, ademas Strassen resulta para multiplicar matrices grandes; ambos siendo mas util algoritmos hacen uso de la t ecnica Divide y Conquista, pero Strassen reduce una multiplicaci on al algoritmo recursivo logrando un menor costo computacional. T erminos Clave-Algoritmo strassen, recursividad, costo de ejecuci on, Divide y Conquista.

I. I NTRODUCCI ON Las matrices aparecen de manera natural en muchas reas de nuestra vida cotidiana en geometr a a, econom a, estad stica etc. Es por ello que se a visto la manera de realizar c alculos con matrices de manera eciente, una de las operaciones cuyo calculo requiere mayor esfuerzo y tiempo es la multiplicaci on de matrices, es por ello que surgen algunos algoritmos para su soluci on, entre ellos tenemos el calculo de multiplicaci on de matrices de manera recursiva, el cual hace uso del paradigma algor tmico Divide y Conquista [1], que es una t ecnica de dise no de algoritmos que consiste en resolver un problema a partir de la soluci on de subproblemas del mismo tipo, pero de menor tama no. Si los subproblemas son todav a relativamente grandes se aplicar a de nuevo esta t ecnica hasta alcanzar subproblemas lo sucientemente peque nos para ser solucionados directamente. Ello naturalmente sugiere el uso de la recursi on en la implementaci on de estos algoritmos. lgebra lineal, el En la disciplina matem atica del a algoritmo de Strassen [2], [3], llamado as por Volker Strassen, es un algoritmo usado para la multiplicaci on de matrices. Es asint oticamente m as r apido que el algoritmo de multiplicaci on de matrices est andar, pero m as lento que el algoritmo m as r apido conocido. Este articulo permite hacer un an alisis comparativo

entre el algoritmo recursivo para la multiplicaci on de matrices, el cual tiene un costo computacional (n3 ) y el algoritmo Strassen el cual tiene ciertas ventajas con respecto a la implementaci on del algoritmo recursivo , ya que Strassen reduce el numero total de operaciones (7 multiplicaciones y 18 sumas), frente a (8 multiplicaciones y 4 sumas) del algoritmo recursivo, lo cual se traduce directamente en una utilizaci on eciente del CPU y por lo tanto una ejecuci on mas r apida permitiendo que su costo computacional [2], [3] se reduzca (n2.81 ) a partir de la multiplicaci on de matrices de orden n32.

Este paper esta organizado de la siguiente manera. En la secci on II se describe el experimento, ademas se incluye las caracteristicas de hardware y software utilizada y nalmente el algoritmo recursivo y strassen. En la secci on III se muestran los resultados obtenidos luego de la realizaci on del experimento, y nalmente en la parte IV se describen las conclusiones obtenidas a partir del an alisis de ambos algoritmos. II. E XPERIMENTO En esta secci on se presentan dos algoritmos para la multiplicaci on de matrices cuadradas. Ambos algoritmos utilizan el paradigma algor tmico Divide y Conquista. [1] Estos son los algoritmos de Strassen y la multiplicaci on recursiva de Matrices. El Objetivo de nuestro experimento es demostrar que el algoritmo de Strassen es superior al algoritmo de divide y conquista recursivo com un a partir de un n 32 [2] A. Hardware Para el siguiente an alisis se utilizo el siguiente Hardware: Memoria RAM : 5,7 GiB

Procesador: intel Core i5-3210M CPU @ 2.50GHz x4 Disco: 732,2 GB Sistema Operativo: Ubuntu 12.10 Tipo SO: 64-bit Lenguaje de Programaci on: Java Software para gracas:Gnuplot version del Compilador: JDK 7.21

Algoritmo de Strassen para multiplicaci on de matrices. Algoritmo 2 Algortimo de Strassen 1: procedure STRASSEN-R(A,B) 2: n = A.rows; 3: Creamos la Matriz C NXN ; 4: if n == 1 then 5: c1,1 = a1,1 b1,1 6: else Hacemos siete llamadas recursivas 7: P1 =STRASSEN-R(A1,1 , B1,2 B2,2 ) 8: P2 =STRASSEN-R(A1,1 + A1,2 , B2,2 ) 9: P3 =STRASSEN-R(A2,1 + A2,2 , B1,1 ) 10: P4 =STRASSEN-R(A2,2 , B2,1 B1,1 ) 11: P5 =STRASSEN-R(A1,1 + A1,2 , B1,1 + B2,2 ) 12: P6 =STRASSEN-R(A1,2 A2,2 , B2,1 + B2,2 ) 13: P7 =STRASSEN-R(A1,1 A2,1 , B1,1 + B1,2 ) 14: \\Combinamos nuestras matrices 15: C1,1 =P5 + P4 P2 +P 6 16: C1,2 =P1 + P2 17: C2,1 =P3 + P4 18: C2,2 =P5 + P1 P3 P7 19: end if 20: return C 21: end procedure Se ejecuto el m etodo de Strassen y el m etodo recursivo com un para un un numero n S{1...100}. Para cada valor de n se realizaron 50 pruebas: t1 , t2 , ...t50 . Se opto por la media como valor mas representativo del conjunto de posibles resultados(t1 , t2 , ...t50 ). Tomando en cuenta que el coeciente de variaci on(cv) [5] sea menor al 20%. cv 0.2 En caso de haber tenido un cv > 0.2 se repiti o el experimento para ese n en particular, las veces necesarias para obtener el valor adecuado. Luego se gracaron los dos resultados con Gnuplot [6] por separado y juntos para encontrar el n a partir del cual el algoritmo de Strassen resulta superior al Algoritmo Recursivo Com un de Divide y Conquista

B. Software

C. Algoritmos Multiplicaci on de Matrices Recursivos Algortimos de multiplicaci on implementados para el experimento. [4] Algoritmo 1 Multiplicaci on recursiva de Matrices 1: procedure MULTIPLICACI ON-MATRICESR(A,B) 2: n = A.rows; 3: Creamos la Matriz C NXN ; 4: if n == 1 then 5: c1,1 = a1,1 b1,1 6: else 7: C1,1 =MULTIPLICACION-MATRICES R(A1,1 ,B1,1 )+MULTIPLICACION-MATRICESR(A1,2 ,B2,1 ); 8: C1,2 =MULTIPLICACION-MATRICES R(A1,1 ,B1,2 )+MULTIPLICACION-MATRICESR(A1,2 ,B2,2 ); 9: C2,1 =MULTIPLICACION-MATRICES R(A2,1 ,B1,1 )+MULTIPLICACION-MATRICESR(A2,2 ,B2,1 ); 10: C2,2 =MULTIPLICACION-MATRICES R(A2,1 ,B1,2 )+MULTIPLICACION-MATRICESR(A2,2 ,B2,2 ); 11: end if 12: return C 13: end procedure

III. T RABAJOS F UTUROS Los resultados obtenidos son los siguientes: Algoritmo recursivo S{1, 2, 3, 4, .., 100}: com un para n

IV. C ONCLUSI ON Con la realizaci on del an alisis comparativo de Strassen vs el algoritmo recursivo demostramos que el primero tiene un mejor costo computacional con respecto al segundo a partir de una matriz de orden n 32 ya que al reducir el numero de multiplicaciones se da un uso mas eciente al CPU. R EFERENCIAS
[1] Thomas H. Cormen, Charles E. Leiser: Introduction to Algorithms Second Edition. Editorial McGraw-Hill Book Company. i [2] Prof. Erik D.Demaine: Introduction to Algorithms September 14, 2005. i [3] Xi Chen - Columbia University Analysis of Algorithms I: Strassens Algorithm and the Master Theorem i

Figura 1.

Recursivo Com un

[4] Strassen Formulas: http://mathworld.wolfram.com/ StrassenFormulas.html ii [5] Oscar Mayo Leytte: Estadistica Descriptiva, Medidas de Dispersi on o variaci on. ii [6] Thomas Williams - Colin Kelley: An Interactive Plotting Program.Version 4.6 ii

Algoritmo de Strassen para n S{1, 2, 3, 4, .., 100}

Figura 2.

Strassen

Strassen vs Recursivo Comun Algoritmo de Strassen para n S{1, 2, 3, 4, .., 100}

Figura 3.

Strassen vs Recursivo Comun

Das könnte Ihnen auch gefallen