SlideShare ist ein Scribd-Unternehmen logo
1 von 7
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

Weitere ähnliche Inhalte

Was ist angesagt?

2 modelos de programación lineal
2 modelos de programación lineal2 modelos de programación lineal
2 modelos de programación linealHerculano Smith
 
Algoritmos para el problema de árbol de expansión mínima robusto con datos in...
Algoritmos para el problema de árbol de expansión mínima robusto con datos in...Algoritmos para el problema de árbol de expansión mínima robusto con datos in...
Algoritmos para el problema de árbol de expansión mínima robusto con datos in...Francisco Pérez
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrentegamavi
 
Teoría De La Renovación
Teoría De La RenovaciónTeoría De La Renovación
Teoría De La Renovaciónjonathansb6
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareKarloz Dz
 
Prolog ejercicios resueltos
Prolog ejercicios resueltosProlog ejercicios resueltos
Prolog ejercicios resueltosJansel M
 
Búsqueda Primero el Mejor
Búsqueda Primero el MejorBúsqueda Primero el Mejor
Búsqueda Primero el MejorTutor4uDev
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosAngel Vázquez Patiño
 
Mat lab manipulación de señales de audio
Mat lab manipulación de señales de audioMat lab manipulación de señales de audio
Mat lab manipulación de señales de audioRick P
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos Kaneki04
 
Clasificador naive bayes
Clasificador naive bayesClasificador naive bayes
Clasificador naive bayesNetworkTIC
 
Procedimientos especiales
Procedimientos especialesProcedimientos especiales
Procedimientos especialesAnel Sosa
 

Was ist angesagt? (20)

Estimación Software por Puntos de Función
Estimación Software por Puntos de FunciónEstimación Software por Puntos de Función
Estimación Software por Puntos de Función
 
GRAFOS
GRAFOSGRAFOS
GRAFOS
 
2 modelos de programación lineal
2 modelos de programación lineal2 modelos de programación lineal
2 modelos de programación lineal
 
Ejercicios resueltos con Python
Ejercicios resueltos con PythonEjercicios resueltos con Python
Ejercicios resueltos con Python
 
Algoritmos para el problema de árbol de expansión mínima robusto con datos in...
Algoritmos para el problema de árbol de expansión mínima robusto con datos in...Algoritmos para el problema de árbol de expansión mínima robusto con datos in...
Algoritmos para el problema de árbol de expansión mínima robusto con datos in...
 
Tipos de problemas
Tipos de problemasTipos de problemas
Tipos de problemas
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
 
Teoría De La Renovación
Teoría De La RenovaciónTeoría De La Renovación
Teoría De La Renovación
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de Software
 
Prolog ejercicios resueltos
Prolog ejercicios resueltosProlog ejercicios resueltos
Prolog ejercicios resueltos
 
Búsqueda Primero el Mejor
Búsqueda Primero el MejorBúsqueda Primero el Mejor
Búsqueda Primero el Mejor
 
Cocomo ii
Cocomo iiCocomo ii
Cocomo ii
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
 
Mat lab manipulación de señales de audio
Mat lab manipulación de señales de audioMat lab manipulación de señales de audio
Mat lab manipulación de señales de audio
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Clasificador naive bayes
Clasificador naive bayesClasificador naive bayes
Clasificador naive bayes
 
grafos conexos
grafos conexosgrafos conexos
grafos conexos
 
Procedimientos especiales
Procedimientos especialesProcedimientos especiales
Procedimientos especiales
 
Gramaticas
GramaticasGramaticas
Gramaticas
 

Andere mochten auch

Algoritmos de multiplicación de n dígitos
Algoritmos de multiplicación de n dígitosAlgoritmos de multiplicación de n dígitos
Algoritmos de multiplicación de n dígitosJosé Pino
 
Enfoque de la optimización en el campo de la ingeniería.
Enfoque de la optimización en el campo de la ingeniería.Enfoque de la optimización en el campo de la ingeniería.
Enfoque de la optimización en el campo de la ingeniería.pertuzm
 
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 flujoDiana Florez
 
Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.luismarlmg
 

Andere mochten auch (8)

Exposicion de algoritmo
Exposicion de algoritmoExposicion de algoritmo
Exposicion de algoritmo
 
Algoritmos de multiplicación de n dígitos
Algoritmos de multiplicación de n dígitosAlgoritmos de multiplicación de n dígitos
Algoritmos de multiplicación de n dígitos
 
Algoritmos, tablas de multiplicar
Algoritmos, tablas de multiplicarAlgoritmos, tablas de multiplicar
Algoritmos, tablas de multiplicar
 
Merge Sort
Merge SortMerge Sort
Merge Sort
 
Enfoque de la optimización en el campo de la ingeniería.
Enfoque de la optimización en el campo de la ingeniería.Enfoque de la optimización en el campo de la ingeniería.
Enfoque de la optimización en el campo de la ingeniería.
 
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
 
Programación dinámica
Programación  dinámicaProgramación  dinámica
Programación dinámica
 
Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.
 

Ähnlich wie Exposicion algoritmo de karatsuba

Ecuaciones trigonometricas
Ecuaciones trigonometricasEcuaciones trigonometricas
Ecuaciones trigonometricasxiom20mat
 
Método de integrales trigonométrica
Método de integrales trigonométricaMétodo de integrales trigonométrica
Método de integrales trigonométricaUCC
 
Números Complejos
Números ComplejosNúmeros Complejos
Números ComplejosJaiRoLuCin
 
Matematicas examen de admision uni
Matematicas  examen de admision uniMatematicas  examen de admision uni
Matematicas examen de admision uniJosé Soto Pérez
 
Derivadas logaritmicas y trigonometricas o exponenciales
Derivadas logaritmicas y trigonometricas o exponencialesDerivadas logaritmicas y trigonometricas o exponenciales
Derivadas logaritmicas y trigonometricas o exponencialeskevin lopez
 
Derivación funciones logarítmicas
Derivación funciones logarítmicasDerivación funciones logarítmicas
Derivación funciones logarítmicasErick Guaman
 
Hoja De Trabajo Mate Iv Unidad 3
Hoja De Trabajo  Mate Iv  Unidad  3Hoja De Trabajo  Mate Iv  Unidad  3
Hoja De Trabajo Mate Iv Unidad 3dianuchi
 
Ejemplos metodo-de-lagrange1-ajustar-a-mat-3
Ejemplos metodo-de-lagrange1-ajustar-a-mat-3Ejemplos metodo-de-lagrange1-ajustar-a-mat-3
Ejemplos metodo-de-lagrange1-ajustar-a-mat-3shirleyrojas2108
 
Actividades 1ª evaluación
Actividades 1ª evaluaciónActividades 1ª evaluación
Actividades 1ª evaluaciónanategt
 
Actividades 1ª evaluación
Actividades 1ª evaluaciónActividades 1ª evaluación
Actividades 1ª evaluaciónanategt
 
Actividad competencias básicas
Actividad competencias básicasActividad competencias básicas
Actividad competencias básicasfer060863
 
Semana7 reacciones quimicas
Semana7 reacciones quimicasSemana7 reacciones quimicas
Semana7 reacciones quimicasElias Navarrete
 
Repaso Ecuaciones lineales
Repaso Ecuaciones linealesRepaso Ecuaciones lineales
Repaso Ecuaciones linealesudearrobavirtual
 

Ähnlich wie Exposicion algoritmo de karatsuba (20)

2.6 aplicaciones
2.6 aplicaciones2.6 aplicaciones
2.6 aplicaciones
 
Congruencias
CongruenciasCongruencias
Congruencias
 
Probl geom con_ecuac_soluc
Probl geom con_ecuac_solucProbl geom con_ecuac_soluc
Probl geom con_ecuac_soluc
 
Ecuaciones trigonometricas
Ecuaciones trigonometricasEcuaciones trigonometricas
Ecuaciones trigonometricas
 
Método de integrales trigonométrica
Método de integrales trigonométricaMétodo de integrales trigonométrica
Método de integrales trigonométrica
 
Números Complejos
Números ComplejosNúmeros Complejos
Números Complejos
 
Matematicas examen de admision uni
Matematicas  examen de admision uniMatematicas  examen de admision uni
Matematicas examen de admision uni
 
Derivadas logaritmicas y trigonometricas o exponenciales
Derivadas logaritmicas y trigonometricas o exponencialesDerivadas logaritmicas y trigonometricas o exponenciales
Derivadas logaritmicas y trigonometricas o exponenciales
 
Derivación funciones logarítmicas
Derivación funciones logarítmicasDerivación funciones logarítmicas
Derivación funciones logarítmicas
 
Hoja De Trabajo Mate Iv Unidad 3
Hoja De Trabajo  Mate Iv  Unidad  3Hoja De Trabajo  Mate Iv  Unidad  3
Hoja De Trabajo Mate Iv Unidad 3
 
Ejemplos metodo-de-lagrange1-ajustar-a-mat-3
Ejemplos metodo-de-lagrange1-ajustar-a-mat-3Ejemplos metodo-de-lagrange1-ajustar-a-mat-3
Ejemplos metodo-de-lagrange1-ajustar-a-mat-3
 
Semestral
SemestralSemestral
Semestral
 
Guia matematicas
Guia matematicasGuia matematicas
Guia matematicas
 
Ecuaciones 002
Ecuaciones 002Ecuaciones 002
Ecuaciones 002
 
Actividades 1ª evaluación
Actividades 1ª evaluaciónActividades 1ª evaluación
Actividades 1ª evaluación
 
Actividades 1ª evaluación
Actividades 1ª evaluaciónActividades 1ª evaluación
Actividades 1ª evaluación
 
Actividad competencias básicas
Actividad competencias básicasActividad competencias básicas
Actividad competencias básicas
 
Semana7 reacciones quimicas
Semana7 reacciones quimicasSemana7 reacciones quimicas
Semana7 reacciones quimicas
 
2010 i semana 7
2010   i semana 72010   i semana 7
2010 i semana 7
 
Repaso Ecuaciones lineales
Repaso Ecuaciones linealesRepaso Ecuaciones lineales
Repaso Ecuaciones lineales
 

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