SlideShare una empresa de Scribd logo
5
Lo más leído
6
Lo más leído
7
Lo más leído
Algoritmo de karatsuba




EDWIN OSUNA MAHECHA
MARIA FERNANDA
YISEL TRIGOS
Historia del Algoritmo karatsuba
 El procedimiento estándar para multiplicar dos
números de n dígitos requiere un número de
operaciones elementales proporcional a n2, o Θ(n2) en
la Notación O grande. En 1952, Andrey Kolmogorov
intentó probar que el algoritmo clásico era óptimo
asintóticamente, queriendo demostrar así que
cualquier      algoritmo      para     esta     tarea
requeriría Ω(n2) operaciones elementales.
 En otoño de 1960, Kolmogorov organizó un seminario
acerca de problemas matemáticos de cibernética en
la Universidad Estatal de Moscú, donde planteó su
suposición de Ω(n2) y otros problemas de complejidad
computacional.
Historia del Algoritmo Karatsuba
En una semana, Karatsuba, un estudiante de 25 años, encontró
un algoritmo divide y vencerás que multiplicaba dos números de
n dígitos en             operaciones elementales, refutando así la
suposición inicial de Kolmogorov. Kolmogorov se sintió muy
desilusionado por tal descubrimiento, y lo hizo público en el que
sería su siguiente y último encuentro del seminario.

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.
Algoritmo karatsuba
El algoritmo de Karatsuba es un procedimiento
para              multiplicar             números
grandes eficientemente, que fue descubierto
por Anatolii Alexeevitch Karatsuba en 1960 y
publicado en 1962.El algoritmo consigue reducir
la multiplicación de dos números de n dígitos a
como máximo                 multiplicaciones de un
dígito. Es, por lo tanto, más rápido que el
algoritmo clásico, que requiere n2 productos de
un dígito. Si n = 210 = 1024, en particular, el
cómputo final exacto es 310 = 59.049 y (210)2 =
1.048.576, respectivamente.
Algoritmo karatsuba
El paso básico
   El paso básico del algoritmo de Karatsuba es una fórmula que nos
  permite calcular el producto de dos números grandes x e y usando tres
  multiplicaciones de números más pequeños, cada uno con más o menos
  la mitad de los dígitos de x e y, más algunas sumas y desplazamientos de
  dígitos.
   Supongamos que x e y están representados como cadenas de n dígitos
  en alguna base B. Para cualquier entero positivo m menor que n, uno
  puede dividir
   los dos números dados de la manera siguiente:
   x = x1Bm + x0
   y = y1Bm + y0
  donde x0 e y0 son menores que Bm. El producto es, entonces:
  xy = (x1Bm + x0)(y1Bm + y0)
  = z2 B2m + z1 Bm + z0
  donde
  z2 = x1y1z1 = x1y0 + x0y1z0 = x0y0
Algoritmo Karatsuba
Estas fórmulas requieren cuatro multiplicaciones. Karatsuba
observó que podemos calcular xy en sólo tres multiplicaciones, por
el coste de unas sumas adicionales:
Supongamos z2 = x1y1
Supongamos z0 = x0y0
Supongamos z1 = (x1 + x0)(y1 + y0) − z2 − z0
ya que
z1 = (x1y1 + x1y0 + x0y1 + x0y0) - x1y1 - x0y0 = x1y0 + x0y1
Si y1 =     0, sólo hay que realizar dos multiplicaciones puesto que:
z2 = 0
z0 = x0y0
z1 = x1y0
Ejemplo
Digamos que queremos calcular el producto de 1234 con
5678. Elegimos la base 10 (B = 10) y m = 2. Entonces
tenemos:

12 34 = 12 × 102 + 34
56 78 = 56 × 102 + 78
z2 = 12 × 56 = 672
z0 = 34 × 78 = 2652
z1 = (12 + 34)(56 + 78) − z2 − z0 = 46 × 134 − 672 − 2652 =
2840
resultado = z2 × 102×2 + z1 × 102 + z0 = 672 × 10000 + 2840
× 100 + 2652 = 7006652

Más contenido relacionado

PPTX
Programacion Orientada a Objetos - Unidad 2 clases y objetos
PDF
Semana 6 Módulos Clases y Objetos
PPTX
Estructura de datos lineales y no lineales
PPTX
Merge Sort
PDF
Arboles mate discreta
PDF
Nociones topológicas
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Semana 6 Módulos Clases y Objetos
Estructura de datos lineales y no lineales
Merge Sort
Arboles mate discreta
Nociones topológicas

La actualidad más candente (20)

PPTX
Algoritmo por seleccion
PPT
PDF
Clase 9-3
PDF
Arboles de derivacion
PPTX
Simetricas Y Transitivas
PPTX
Ordenamiento en C++
PDF
Ejercicios de teoria de conjuntos
PPTX
Grafo bipartito
DOCX
Recursividad
PDF
Tema_1.2_CONJUNTOS.pdf
PPTX
Análisis de complejidad big o
 
PPTX
Teoria de grafos
PPTX
Factorización aplicando Ruffini o Método de Evaluación
DOCX
Calculo vectorial integrales multiples
PPTX
Estructura de Datos - Unidad II Recursividad
PPT
Ternario
PDF
Ejemplo de calculo de energía solar
PPT
Recursividad
PPTX
Tutorial de CodeBlocks
Algoritmo por seleccion
Clase 9-3
Arboles de derivacion
Simetricas Y Transitivas
Ordenamiento en C++
Ejercicios de teoria de conjuntos
Grafo bipartito
Recursividad
Tema_1.2_CONJUNTOS.pdf
Análisis de complejidad big o
 
Teoria de grafos
Factorización aplicando Ruffini o Método de Evaluación
Calculo vectorial integrales multiples
Estructura de Datos - Unidad II Recursividad
Ternario
Ejemplo de calculo de energía solar
Recursividad
Tutorial de CodeBlocks
Publicidad

Destacado (7)

PPTX
Exposicion de algoritmo
PPTX
Algoritmos de multiplicación de n dígitos
PPTX
Algoritmos, tablas de multiplicar
DOCX
Enfoque de la optimización en el campo de la ingeniería.
DOCX
Tablas de multiplicar en diagrama de flujo
DOCX
Programación dinámica
PDF
Diagrama de Flujos Ejemplos.
Exposicion de algoritmo
Algoritmos de multiplicación de n dígitos
Algoritmos, tablas de multiplicar
Enfoque de la optimización en el campo de la ingeniería.
Tablas de multiplicar en diagrama de flujo
Programación dinámica
Diagrama de Flujos Ejemplos.
Publicidad

Exposicion algoritmo de karatsuba

  • 1. Algoritmo de karatsuba EDWIN OSUNA MAHECHA MARIA FERNANDA YISEL TRIGOS
  • 2. Historia del Algoritmo karatsuba El procedimiento estándar para multiplicar dos números de n dígitos requiere un número de operaciones elementales proporcional a n2, o Θ(n2) en la Notación O grande. En 1952, Andrey Kolmogorov intentó probar que el algoritmo clásico era óptimo asintóticamente, queriendo demostrar así que cualquier algoritmo para esta tarea requeriría Ω(n2) operaciones elementales. En otoño de 1960, Kolmogorov organizó un seminario acerca de problemas matemáticos de cibernética en la Universidad Estatal de Moscú, donde planteó su suposición de Ω(n2) y otros problemas de complejidad computacional.
  • 3. Historia del Algoritmo Karatsuba En una semana, Karatsuba, un estudiante de 25 años, encontró un algoritmo divide y vencerás que multiplicaba dos números de n dígitos en operaciones elementales, refutando así la suposición inicial de Kolmogorov. Kolmogorov se sintió muy desilusionado por tal descubrimiento, y lo hizo público en el que sería su siguiente y último encuentro del seminario. 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.
  • 4. Algoritmo karatsuba El algoritmo de Karatsuba es un procedimiento para multiplicar números grandes eficientemente, que fue descubierto por Anatolii Alexeevitch Karatsuba en 1960 y publicado en 1962.El algoritmo consigue reducir la multiplicación de dos números de n dígitos a como máximo multiplicaciones de un dígito. Es, por lo tanto, más rápido que el algoritmo clásico, que requiere n2 productos de un dígito. Si n = 210 = 1024, en particular, el cómputo final exacto es 310 = 59.049 y (210)2 = 1.048.576, respectivamente.
  • 5. Algoritmo karatsuba El paso básico El paso básico del algoritmo de Karatsuba es una fórmula que nos permite calcular el producto de dos números grandes x e y usando tres multiplicaciones de números más pequeños, cada uno con más o menos la mitad de los dígitos de x e y, más algunas sumas y desplazamientos de dígitos. Supongamos que x e y están representados como cadenas de n dígitos en alguna base B. Para cualquier entero positivo m menor que n, uno puede dividir los dos números dados de la manera siguiente: x = x1Bm + x0 y = y1Bm + y0 donde x0 e y0 son menores que Bm. El producto es, entonces: xy = (x1Bm + x0)(y1Bm + y0) = z2 B2m + z1 Bm + z0 donde z2 = x1y1z1 = x1y0 + x0y1z0 = x0y0
  • 6. Algoritmo Karatsuba Estas fórmulas requieren cuatro multiplicaciones. Karatsuba observó que podemos calcular xy en sólo tres multiplicaciones, por el coste de unas sumas adicionales: Supongamos z2 = x1y1 Supongamos z0 = x0y0 Supongamos z1 = (x1 + x0)(y1 + y0) − z2 − z0 ya que z1 = (x1y1 + x1y0 + x0y1 + x0y0) - x1y1 - x0y0 = x1y0 + x0y1 Si y1 = 0, sólo hay que realizar dos multiplicaciones puesto que: z2 = 0 z0 = x0y0 z1 = x1y0
  • 7. Ejemplo Digamos que queremos calcular el producto de 1234 con 5678. Elegimos la base 10 (B = 10) y m = 2. Entonces tenemos: 12 34 = 12 × 102 + 34 56 78 = 56 × 102 + 78 z2 = 12 × 56 = 672 z0 = 34 × 78 = 2652 z1 = (12 + 34)(56 + 78) − z2 − z0 = 46 × 134 − 672 − 2652 = 2840 resultado = z2 × 102×2 + z1 × 102 + z0 = 672 × 10000 + 2840 × 100 + 2652 = 7006652