SlideShare una empresa de Scribd logo
1 de 10
Algoritmos de multiplicación de N dígitos 			José Pino Universidad Nacional de Asunción Facultad Politécnica Ingeniería en Informática Junio 2010
Karatsuba(1960) Paradigma Divide y vencerás (se usó por primera vez este término). El método fue publicado en 1962, en la revista científica soviética Proceedings of the USSR Academy of Sciences. El artículo había sido escrito por Kolmogorov, posiblemente en colaboración con Yuri Ofman, pero nombraba a "A. Karatsuba y Yu. Ofman" como los autores. Karatsuba sólo se dio cuenta de la publicación cuando recibió una copia del artículo por parte de la editorial de la revista. Complejidad Θ(nlog3)   ->   Θ(n1.58)
Toom-Cook ,[object Object]
En general, Toom-k ejecuta en Θ(c(k) ne), donde e = log(2k − 1) / log(k), ne  es el tiempo de las submultiplicaciones, y c es el tiempo de las multiplicaciones y sumas constantes.El algoritmo de Schönhage–Strassen tiene complejidad Θ(n log n log log n)).  El algoritmo de Schönhage–Strassen fue el algoritmo asintóticamente más rápido de multiplicación  de 1971 a 2007 cuando un nuevo método, el algoritmo de Martin Fürer, fue anunciado con complejidad asintótica más baja, de todos modos, el algoritmo de Fürer actualmente sólo logra una ventaja para los valores astronómicamente grandes y no se utiliza en la práctica. Schönhage–Strassen
x*y cadenas de n dígitos en base B para cualquier entero positivo m<n x = x1Bm+ x0 y = y1Bm + y0 x0 e y0 menores que Bm x*y = (x1Bm + x0)(y1Bm + y0) = x1Bmy1Bm   +   x1Bmy0   +   x0y1Bm   +   x0y0  	= x1y1Bm     +  x1y0Bm   +   x0y1Bm    +   x0y0 = (x1y1)Bm    +    (x1y0 + x0y1)Bm    +    x0y0 KaratsubaMultiplicación de x*y Ejemplo: 1234*5678 = 7006652 y x z2 z0 z1
Una multiplicación menos z1   =  x1y0  +  x0y1(original, dos multiplicaciones) z1 = (x1 + x0)(y1 + y0) − z2 − z0(uno menos) z1 = (x1y1 + x1y0 + x0y1 + x0y0) - x1y1 - x0y0  (reemplazando)  = x1y0 + x0y1     (original) x*y = (x1y1)Bm    +    (x1y0 + x0y1)Bm    +    x0y0
Ejemplo Multiplicar 1234*5678                base diez B = 10 ; m = 2 x = 12 34 = 12 × 102 + 34  y = 56 78 = 56 × 102 + 78 z2 = x1y1 = 12 × 56 = 672  z0 = x0y0 = 34 × 78 = 2652 z1 = (x1+x0)(y1+y0) – z2 – z0 	  =(12 + 34)(56 + 78) − z2 − z0 = 46 × 134 − 672 − 2652 = 2840 x*y = z2Bm    +    z1Bm    +    z0
x*y = z2Bm    +    z1Bm    +    z0 x*y = 672Bm  + 2840Bm + 2672 x*y = 672.102 + 2840.102 + 2672 = 7006652 1234*5678 = 7006652 Comparación con un algoritmo O(n2)
Toom-Cook(en pasos sencillos) Multiplicar 123456789 * 987654321 1. Separamos los dígitos en tres partes. 123|456|789 987|654|321 2. Seleccionamos un set de puntos: {-2,-1,0,1,2} A(x) = 123x2 + 456x + 789 B(x) = 987x2 + 654x + 321 p/ x= -2    A=  369  B= 2961  AB=  1092609 p/ x= -1    A=  456  B=  654  AB=   298224 p/ x=  0    A=  789  B=  321  AB=   253269 p/ x=  1    A= 1368  B= 1962  AB=  2684016 p/ x=  2    A= 2193  B= 5577  AB= 12230361 3. La solución tendrá la siguiente forma: P(x) = p4x4 + p3x3 + p2x2 + p1x + p0
4. Sustituimos en la ecuación: 16p4 - 8p3 + 4p2 - 2p1 + p0 =  1092609   p4 -  p3 +  p2 -  p1 + p0 =   298224                          p0 =   253269   p4 +  p3 +  p2 +  p1 + p0 =  2684016 16p4 + 8p3 + 4p2 + 2p1 + p0 = 12230361 5. Resolvemos la ecuación: p4 =  121401 p3 =  530514 p2 = 1116450 p1 =  662382 p0 =  253269 6. Convertimos a número el resultado, haciendo x=100 en P(x). O más fácil gráficamente; colocamos debajo y corremos a la derecha. 121|401     530|514       1|116|450             662|382                 253|269 ======================= 121|932|631|112|635|269         eliminamos separadores 121932631112635269

Más contenido relacionado

La actualidad más candente

Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
Blanca Parra
 
Diferenciación por 3 y 5 puntos
Diferenciación por 3 y 5 puntosDiferenciación por 3 y 5 puntos
Diferenciación por 3 y 5 puntos
alan moreno
 
Gráficas en Matlab
Gráficas en MatlabGráficas en Matlab
Gráficas en Matlab
Gaby Solano
 
5.metodo del punto fijo
5.metodo del punto fijo5.metodo del punto fijo
5.metodo del punto fijo
rjvillon
 

La actualidad más candente (20)

Algoritmos Paralelos
Algoritmos ParalelosAlgoritmos Paralelos
Algoritmos Paralelos
 
Protección y seguridad En Los Sistemas Operativos
Protección y seguridad En Los Sistemas OperativosProtección y seguridad En Los Sistemas Operativos
Protección y seguridad En Los Sistemas Operativos
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Análisis numérico
Análisis numéricoAnálisis numérico
Análisis numérico
 
ESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADASESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADAS
 
Diferenciación por 3 y 5 puntos
Diferenciación por 3 y 5 puntosDiferenciación por 3 y 5 puntos
Diferenciación por 3 y 5 puntos
 
Funciones recursivas en C++
Funciones recursivas en C++Funciones recursivas en C++
Funciones recursivas en C++
 
Deribadas
DeribadasDeribadas
Deribadas
 
Gráficas en Matlab
Gráficas en MatlabGráficas en Matlab
Gráficas en Matlab
 
Ejercicios raíces de funciones
Ejercicios raíces de funciones Ejercicios raíces de funciones
Ejercicios raíces de funciones
 
Algoritmo congruencial aditivo
Algoritmo congruencial aditivoAlgoritmo congruencial aditivo
Algoritmo congruencial aditivo
 
Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilab
 
Ejemplo del Método de Falsa Posición
Ejemplo del Método de Falsa PosiciónEjemplo del Método de Falsa Posición
Ejemplo del Método de Falsa Posición
 
Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clases
 
Algoritmo Repetitivo
Algoritmo RepetitivoAlgoritmo Repetitivo
Algoritmo Repetitivo
 
Metodo romberg
Metodo rombergMetodo romberg
Metodo romberg
 
Presentación de métodos analíticos para edo 1
Presentación de métodos analíticos para edo 1Presentación de métodos analíticos para edo 1
Presentación de métodos analíticos para edo 1
 
5.metodo del punto fijo
5.metodo del punto fijo5.metodo del punto fijo
5.metodo del punto fijo
 
Interpolacion y Regresion - R. Campillo
Interpolacion y Regresion - R. CampilloInterpolacion y Regresion - R. Campillo
Interpolacion y Regresion - R. Campillo
 

Destacado (10)

Algoritmos, tablas de multiplicar
Algoritmos, tablas de multiplicarAlgoritmos, tablas de multiplicar
Algoritmos, tablas de multiplicar
 
Exposicion algoritmo de karatsuba
Exposicion algoritmo de karatsubaExposicion algoritmo de karatsuba
Exposicion algoritmo de karatsuba
 
Exposicion de algoritmo
Exposicion de algoritmoExposicion de algoritmo
Exposicion de algoritmo
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo
 
Tablas de multiplicar en diagrama de flujo
Tablas de multiplicar en diagrama de flujoTablas de multiplicar en diagrama de flujo
Tablas de multiplicar en diagrama de flujo
 
Las fracciones
Las fraccionesLas fracciones
Las fracciones
 
Ordenamiento x insercion espo
Ordenamiento x insercion espoOrdenamiento x insercion espo
Ordenamiento x insercion espo
 
Cuaderno de multiplicaciones por una y dos cifras
Cuaderno de multiplicaciones por una y dos cifrasCuaderno de multiplicaciones por una y dos cifras
Cuaderno de multiplicaciones por una y dos cifras
 
Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.
 
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
 

Similar a Algoritmos de multiplicación de n dígitos

Práctica preparatoria para el 2do examen parcial
Práctica preparatoria para el 2do  examen parcialPráctica preparatoria para el 2do  examen parcial
Práctica preparatoria para el 2do examen parcial
Prefacultativo Fcpn Umsa
 

Similar a Algoritmos de multiplicación de n dígitos (20)

Cap01mitacc
Cap01mitaccCap01mitacc
Cap01mitacc
 
Ana2 16
Ana2 16Ana2 16
Ana2 16
 
numeros compplejos
numeros compplejos numeros compplejos
numeros compplejos
 
introduccion libro
introduccion libro introduccion libro
introduccion libro
 
Sol2
Sol2Sol2
Sol2
 
15.distribucion probabilidad
15.distribucion probabilidad15.distribucion probabilidad
15.distribucion probabilidad
 
Números complejos
Números complejosNúmeros complejos
Números complejos
 
ANDRE (1).docx
ANDRE  (1).docxANDRE  (1).docx
ANDRE (1).docx
 
Fracciones algebraicas 0
Fracciones algebraicas 0Fracciones algebraicas 0
Fracciones algebraicas 0
 
Semana 4 cs
Semana 4 csSemana 4 cs
Semana 4 cs
 
Solucionario UNI- 2014-2 - Matemática
Solucionario UNI- 2014-2 - MatemáticaSolucionario UNI- 2014-2 - Matemática
Solucionario UNI- 2014-2 - Matemática
 
integracionindefinida ejerc
 integracionindefinida ejerc integracionindefinida ejerc
integracionindefinida ejerc
 
Semana 1 cs
Semana 1 csSemana 1 cs
Semana 1 cs
 
Matematica2014 i
Matematica2014 iMatematica2014 i
Matematica2014 i
 
Práctica preparatoria para el 2do examen parcial
Práctica preparatoria para el 2do  examen parcialPráctica preparatoria para el 2do  examen parcial
Práctica preparatoria para el 2do examen parcial
 
Práctica preparatoria para el 2do examen parcial
Práctica preparatoria para el 2do  examen parcialPráctica preparatoria para el 2do  examen parcial
Práctica preparatoria para el 2do examen parcial
 
Ejercicios en integral
Ejercicios en integralEjercicios en integral
Ejercicios en integral
 
PRODCUTOS NOTABLES.pdf
PRODCUTOS NOTABLES.pdfPRODCUTOS NOTABLES.pdf
PRODCUTOS NOTABLES.pdf
 
Factorización
FactorizaciónFactorización
Factorización
 
Lugar geometrico de las raices
Lugar geometrico de las raicesLugar geometrico de las raices
Lugar geometrico de las raices
 

Último

CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocxCARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
WILIANREATEGUI
 
SENTENCIA COLOMBIA DISCRIMINACION SELECCION PERSONAL.pdf
SENTENCIA COLOMBIA DISCRIMINACION SELECCION PERSONAL.pdfSENTENCIA COLOMBIA DISCRIMINACION SELECCION PERSONAL.pdf
SENTENCIA COLOMBIA DISCRIMINACION SELECCION PERSONAL.pdf
JaredQuezada3
 
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
Evafabi
 
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
i7ingenieria
 

Último (20)

Fabricación de Cremas en Industria Farmacéutica
Fabricación de Cremas en Industria FarmacéuticaFabricación de Cremas en Industria Farmacéutica
Fabricación de Cremas en Industria Farmacéutica
 
Analisis del art. 37 de la Ley del Impuesto a la Renta
Analisis del art. 37 de la Ley del Impuesto a la RentaAnalisis del art. 37 de la Ley del Impuesto a la Renta
Analisis del art. 37 de la Ley del Impuesto a la Renta
 
2024 - 04 PPT Directiva para la formalizacion, sustento y registro del gasto ...
2024 - 04 PPT Directiva para la formalizacion, sustento y registro del gasto ...2024 - 04 PPT Directiva para la formalizacion, sustento y registro del gasto ...
2024 - 04 PPT Directiva para la formalizacion, sustento y registro del gasto ...
 
CONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdf
CONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdfCONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdf
CONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdf
 
liderazgo guia.pdf.............................
liderazgo guia.pdf.............................liderazgo guia.pdf.............................
liderazgo guia.pdf.............................
 
Maria_diaz.pptx mapa conceptual gerencia industral
Maria_diaz.pptx mapa conceptual   gerencia industralMaria_diaz.pptx mapa conceptual   gerencia industral
Maria_diaz.pptx mapa conceptual gerencia industral
 
EL REFERENDO para una exposición de sociales
EL REFERENDO para una exposición de socialesEL REFERENDO para una exposición de sociales
EL REFERENDO para una exposición de sociales
 
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocxCARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
 
DECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADA
DECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADADECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADA
DECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADA
 
SENTENCIA COLOMBIA DISCRIMINACION SELECCION PERSONAL.pdf
SENTENCIA COLOMBIA DISCRIMINACION SELECCION PERSONAL.pdfSENTENCIA COLOMBIA DISCRIMINACION SELECCION PERSONAL.pdf
SENTENCIA COLOMBIA DISCRIMINACION SELECCION PERSONAL.pdf
 
Empresa Sazonadores Lopesa estudio de mercado
Empresa Sazonadores Lopesa estudio de mercadoEmpresa Sazonadores Lopesa estudio de mercado
Empresa Sazonadores Lopesa estudio de mercado
 
Las sociedades anónimas en el Perú , de acuerdo a la Ley general de sociedades
Las sociedades anónimas en el Perú , de acuerdo a la Ley general de sociedadesLas sociedades anónimas en el Perú , de acuerdo a la Ley general de sociedades
Las sociedades anónimas en el Perú , de acuerdo a la Ley general de sociedades
 
implemenatcion de un data mart en logistica
implemenatcion de un data mart en logisticaimplemenatcion de un data mart en logistica
implemenatcion de un data mart en logistica
 
2 Tipo Sociedad comandita por acciones.pptx
2 Tipo Sociedad comandita por acciones.pptx2 Tipo Sociedad comandita por acciones.pptx
2 Tipo Sociedad comandita por acciones.pptx
 
Caja nacional de salud 0&!(&:(_5+:;?)8-!!(
Caja nacional de salud 0&!(&:(_5+:;?)8-!!(Caja nacional de salud 0&!(&:(_5+:;?)8-!!(
Caja nacional de salud 0&!(&:(_5+:;?)8-!!(
 
HIGIENE_POSTURAL-_MANEJO_DE_CARGA1compr.pptx
HIGIENE_POSTURAL-_MANEJO_DE_CARGA1compr.pptxHIGIENE_POSTURAL-_MANEJO_DE_CARGA1compr.pptx
HIGIENE_POSTURAL-_MANEJO_DE_CARGA1compr.pptx
 
Manual de Imagen Personal y uso de uniformes
Manual de Imagen Personal y uso de uniformesManual de Imagen Personal y uso de uniformes
Manual de Imagen Personal y uso de uniformes
 
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
 
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBREDISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
 
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
 

Algoritmos de multiplicación de n dígitos

  • 1. Algoritmos de multiplicación de N dígitos José Pino Universidad Nacional de Asunción Facultad Politécnica Ingeniería en Informática Junio 2010
  • 2. Karatsuba(1960) Paradigma Divide y vencerás (se usó por primera vez este término). El método fue publicado en 1962, en la revista científica soviética Proceedings of the USSR Academy of Sciences. El artículo había sido escrito por Kolmogorov, posiblemente en colaboración con Yuri Ofman, pero nombraba a "A. Karatsuba y Yu. Ofman" como los autores. Karatsuba sólo se dio cuenta de la publicación cuando recibió una copia del artículo por parte de la editorial de la revista. Complejidad Θ(nlog3) -> Θ(n1.58)
  • 3.
  • 4. En general, Toom-k ejecuta en Θ(c(k) ne), donde e = log(2k − 1) / log(k), ne es el tiempo de las submultiplicaciones, y c es el tiempo de las multiplicaciones y sumas constantes.El algoritmo de Schönhage–Strassen tiene complejidad Θ(n log n log log n)). El algoritmo de Schönhage–Strassen fue el algoritmo asintóticamente más rápido de multiplicación de 1971 a 2007 cuando un nuevo método, el algoritmo de Martin Fürer, fue anunciado con complejidad asintótica más baja, de todos modos, el algoritmo de Fürer actualmente sólo logra una ventaja para los valores astronómicamente grandes y no se utiliza en la práctica. Schönhage–Strassen
  • 5. x*y cadenas de n dígitos en base B para cualquier entero positivo m<n x = x1Bm+ x0 y = y1Bm + y0 x0 e y0 menores que Bm x*y = (x1Bm + x0)(y1Bm + y0) = x1Bmy1Bm + x1Bmy0 + x0y1Bm + x0y0 = x1y1Bm + x1y0Bm + x0y1Bm + x0y0 = (x1y1)Bm + (x1y0 + x0y1)Bm + x0y0 KaratsubaMultiplicación de x*y Ejemplo: 1234*5678 = 7006652 y x z2 z0 z1
  • 6. Una multiplicación menos z1 = x1y0 + x0y1(original, dos multiplicaciones) z1 = (x1 + x0)(y1 + y0) − z2 − z0(uno menos) z1 = (x1y1 + x1y0 + x0y1 + x0y0) - x1y1 - x0y0 (reemplazando) = x1y0 + x0y1 (original) x*y = (x1y1)Bm + (x1y0 + x0y1)Bm + x0y0
  • 7. Ejemplo Multiplicar 1234*5678 base diez B = 10 ; m = 2 x = 12 34 = 12 × 102 + 34 y = 56 78 = 56 × 102 + 78 z2 = x1y1 = 12 × 56 = 672 z0 = x0y0 = 34 × 78 = 2652 z1 = (x1+x0)(y1+y0) – z2 – z0 =(12 + 34)(56 + 78) − z2 − z0 = 46 × 134 − 672 − 2652 = 2840 x*y = z2Bm + z1Bm + z0
  • 8. x*y = z2Bm + z1Bm + z0 x*y = 672Bm + 2840Bm + 2672 x*y = 672.102 + 2840.102 + 2672 = 7006652 1234*5678 = 7006652 Comparación con un algoritmo O(n2)
  • 9. Toom-Cook(en pasos sencillos) Multiplicar 123456789 * 987654321 1. Separamos los dígitos en tres partes. 123|456|789 987|654|321 2. Seleccionamos un set de puntos: {-2,-1,0,1,2} A(x) = 123x2 + 456x + 789 B(x) = 987x2 + 654x + 321 p/ x= -2 A= 369 B= 2961 AB= 1092609 p/ x= -1 A= 456 B= 654 AB= 298224 p/ x= 0 A= 789 B= 321 AB= 253269 p/ x= 1 A= 1368 B= 1962 AB= 2684016 p/ x= 2 A= 2193 B= 5577 AB= 12230361 3. La solución tendrá la siguiente forma: P(x) = p4x4 + p3x3 + p2x2 + p1x + p0
  • 10. 4. Sustituimos en la ecuación: 16p4 - 8p3 + 4p2 - 2p1 + p0 = 1092609 p4 - p3 + p2 - p1 + p0 = 298224 p0 = 253269 p4 + p3 + p2 + p1 + p0 = 2684016 16p4 + 8p3 + 4p2 + 2p1 + p0 = 12230361 5. Resolvemos la ecuación: p4 = 121401 p3 = 530514 p2 = 1116450 p1 = 662382 p0 = 253269 6. Convertimos a número el resultado, haciendo x=100 en P(x). O más fácil gráficamente; colocamos debajo y corremos a la derecha. 121|401 530|514 1|116|450 662|382 253|269 ======================= 121|932|631|112|635|269  eliminamos separadores 121932631112635269