You are on page 1of 4

Escuela Superior de Fsica y Matematicas

Algoritmo de multiplicacion de Karatsuba y Strassen -


Schonhage

Omar Heberto Jaimes Escamilla


15 de mayo de 2017

Resumen
En este documento se describiran brevemente dos algoritmos de multiplicacion rapida,es
decir,que buscan optimizar los tiempos de computo de multiplicacion ingenua,divide & vence-
ra,etc.
Mas especficamente,hablaremos de los metodos de multiplicacion de numeros de karatsuba &
del metodo de multiplicacion de Strassen matrices optimizado por Schonhage. Se abordara su
funcionamiento y su eficiencia.

Introduccion
El algoritmo de Strassen consiste basicamente en utilizar el algoritmo de divide & venceras,es
decir,realizar particiones de la matriz original tal que las submatrices sean cuadradas y luego,realizar
el producto de las submatrices.

Sin embargo,propuso una forma de multiplicar estas matrices de tal forma que reducia el orden
de las misma aunque aumentaba la cantidad de sumas necesarias para realizar el proceso de pro-
ducto matricial.

Esta forma de multiplicar las matrices es meramente algebraica & es facil aunque algo tedioso
mostrar que en efecto es equivalente a otra forma de multiplicar matrices

1
Descripcion del algoritmo de Stressen-Schonhage
Comencemos haciendo unas cuantas definiciones.
Definicion 0.1. Convolucion lineal discreta
Consideremos el siguiente producto.

X
X[N ]Y [N k]

donde N es un parametro constante,X[N] una funcion que se mantiene constante en un cierto


parametro,K un parametro variable y Y[N-K] una funcion que vara conforme k lo haga.
A dicho suma se le llamara convolucion lineal.

Definicion 0.2. Algoritmo de Strassen Schonhage

Es un algoritmo que agiliza la multiplicacion de numeros enteros de gran dimension. Este


algoritmo consiste en multiplicar los elementos de la cantidad 1 por los de la cantidad 2, al
igual que se hara en la multiplicacion normal. A los valores resultantes no se les aplica la
operacion de carga de la cantidad, dejando los valores as como resultan de la operacion.
Veamos un ejemplo que nos ayude a entender la definicion de convolucion lineal. Sea h[n] la
siguiente funcion
1 n = 1 n=-1
2 n=0
3 otrocaso

Sea x[n] la siguiente funcion



2 n=0
3 n=1


2 n=2
0 otrocaso

As,
2
X
Y [n] = x[n]h[n k]
i=0

Evaluando la funcion anterior en algunos puntos. De lo anterior,podemos notar que:

2
Los limites de la sumatoria los da x[n]
Los valores de evaluacion de n se toman observando los valores de h[n] y x[n]
Ahora,consideremos un ejemplo de convolucion lineal aplicado en el algoritmo de Stressen Schon-
hage. La sucesion obtenida (4, 13, 28, 27, 18) es la convolucion lineal de las dos sucesiones originales
(1,2,3) y (4,5,6). Teniendo hecho este proceso,todo se reduce a lle var a cabo los acarreos(por ejem-
plo, en la columna de la derecha, conservamos el 8 y sumamos el 1 de la columna que contiene al
27). As,se obtiene el producto 56088.

Algoritmo de Karatsuba
El algoritmo de Karatsuba es un algoritmo de divide y venceras para multiplicar enteros muy
grandes.La ides bascia es reducir un producto de longitud n a tres productos de longitud n/2 .

Explicacion
Como ya se menciono con anterioridad,el algoritmo consiste en reducir el problema multiplicar
dos numeros de longitud grande reducirlos a 3 productos de la mitad de su longitud.
Supongamos que dichos productos estan representados en alguna base: // x = x1 B m + x0
y = y1 B m + y0 donde x0 < bm y0 < bm
El producto es xy = (z2 B 2m + z1 )(y1 B m + z0 ) donde z2 = x1 y1 z1 + z1 = x1 y0 + x0 y1 z0 = x0 y0

Si realizamos unas sumas adicionales,lo anterior se puede reducir a 3 multiplicaciones.


Supongamos z2 = x1 y1
z0 = x0 y0
z1 = (x1 + x0 )(y1 + y0 ) z2 z0
Si y0 = 0 solo se haran dos multiplicaciones estas seran...
z2 = 0
z0 = x0 y0
z1 = x1 y0

Ejemplo
Multipliquemos 1234 por 5678 en la base 10 y m=2.
As: 1234 = 12 102 + 34 5678 = 56 102 + 78

3
z2 = 12 56 = 672
z0 = 34 78 = 2652
z1 = (12 + 34)(56 + 78) z2 z0 = 46 134 672 2652 = 2840
El resultado de la multiplicacion es
(z2 1022 + z1 )(y1 B 2 + z0 )
672 10000 + 2840 100 + 2652 = 7006652

Referencias
[Gee] Karatsubas Algorithm. .

[P] Polynomial and Matrix Computations: Fundamental Algorithms. .


[Str68] Volken Strassen. Gaussian elimination is not optimal. Technical report, Publication, 1968.

You might also like