Algoritmo de Karatsuba

Assenálio ou Método de Multiplicação de Karatsuba é um método utilizado para multiplicar números grandes eficientemente, descoberto por Anatolii Alexeievitch Karatsuba em 1960; e publicado em 1962.[1][2] Este algoritmo reduz a multiplicação de dois números de n {\displaystyle n} dígitos a no máximo:

M ( n ) = O ( n log 2 3 ) , log 2 3 = 1,584 9 {\displaystyle M(n)=O(n^{\log _{2}3}),\quad \log _{2}3=1{,}5849\ldots } multiplicações de dígitos simples e a exatamente n log 2 3 {\displaystyle n^{\log _{2}3}} quando n {\displaystyle n} é uma potência de 2.


É mais rápido que o método usual de multiplicação longa, que necessita de n 2 {\displaystyle n^{2}} multiplicações de um dígito simples.

Por exemplo, seja n = 2 10 = 1024 {\displaystyle n=2^{10}=1024} .

O cálculo final exato será 3 10 = 59.049 {\displaystyle 3^{10}=59.049} e ( 2 10 ) 2 = 1.048.576 {\displaystyle (2^{10})^{2}=1.048.576} , respectivamente.

O algoritmo de Toom-Cook é uma generalização mais rápida do algoritmo de Karatsuba. Para n {\displaystyle n} suficientemente grande, o algoritmo de Schönhage-Strassen é melhor que o algoritmo de Karatsuba.

O algoritmo de Karatsuba é um exemplo de algoritmo do tipo divisão e conquista, e do modelo de algoritmo de partição binária. A classificação de algoritmos do tipo divisão e conquista foi usada pela primeira vez para este método.

Algoritmo

A demonstração será feita por fórmulas. Seja a igualdade:

( a + b x ) 2 = a 2 + ( ( a + b ) 2 a 2 b 2 ) x + b 2 x 2 . {\displaystyle (a+bx)^{2}=a^{2}+((a+b)^{2}-a^{2}-b^{2})x+b^{2}x^{2}.}

Desde que 4 a b = ( a + b ) 2 ( a b ) 2 {\displaystyle 4ab=(a+b)^{2}-(a-b)^{2}} , a multiplicação dos números a {\displaystyle a} e b {\displaystyle b} possui desempenho equivalente à ordem quadrática.

Seja X {\displaystyle X} um número de n {\displaystyle n} dígitos, que é igual a

X = e 0 + 2 e 1 + + 2 n 1 e n 1 , {\displaystyle X=e_{0}+2e_{1}+\ldots +2^{n-1}e_{n-1},}


onde e j 0 , 1 , j = 0 , 1 , , n 1 {\displaystyle e_{j}\in {0,\;1},\;j=0,\;1,\;\ldots ,\;n-1} .

Assume-se por simplicidade que n = 2 m , m 1 ; n = 2 k {\displaystyle n=2^{m},\;m\geqslant 1;\;n=2k} . Escrevendo-se X {\displaystyle X} como

X = X 1 + 2 k X 2 , {\displaystyle X=X_{1}+2^{k}X_{2},}


onde

X 1 = e 0 + 2 e 1 + + 2 k 1 e k 1 {\displaystyle X_{1}=e_{0}+2e_{1}+\ldots +2^{k-1}e_{k-1}}


e

X 2 = e k + 2 e k + 1 + + 2 k 1 e n 1 , {\displaystyle X_{2}=e_{k}+2e_{k+1}+\ldots +2^{k-1}e_{n-1},}


então calculando X 2 {\displaystyle X^{2}} , fica como

X 2 = ( X 1 + 2 k X 2 ) 2 = X 1 2 + ( ( X 1 + X 2 ) 2 ( X 1 2 + X 2 2 ) ) 2 k + X 2 2 2 n . ( 1 ) {\displaystyle X^{2}=(X_{1}+2^{k}X_{2})^{2}=X_{1}^{2}+((X_{1}+X_{2})^{2}-(X_{1}^{2}+X_{2}^{2}))2^{k}+X_{2}^{2}2^{n}.\qquad (1)}


X 1 {\displaystyle X_{1}} e X 2 {\displaystyle X_{2}} possuem k {\displaystyle k} dígitos. X 1 + X 2 {\displaystyle X_{1}+X_{2}} podem ter no máximo até k + 1 {\displaystyle k+1} dígitos. Neste caso, serão representados como 2 X 3 + X 4 {\displaystyle 2X_{3}+X_{4}} , onde X 3 {\displaystyle X_{3}} é um número de k {\displaystyle k} dígitos e X 4 {\displaystyle X_{4}} é um número de um único dígito. Então

( X 1 + X 2 ) 2 = 4 X 3 2 + 4 X 3 X 4 + X 4 2 . {\displaystyle (X_{1}+X_{2})^{2}=4X_{3}^{2}+4X_{3}X_{4}+X_{4}^{2}.}

Seja φ ( n ) {\displaystyle \varphi (n)} o número de operações suficiente para a construção de n {\displaystyle n} dígitos ao quadrado pela fórmula (1). Percebe-se que de (1) prossegue a desigualdade em φ ( n ) {\displaystyle \varphi (n)} :

φ ( n ) 3 φ ( n 2 1 ) + c n , ( 2 ) {\displaystyle \varphi (n)\leqslant 3\varphi (n2^{-1})+cn,\qquad (2)} ,


onde c > 0 {\displaystyle c>0} é uma constante em valor absoluto. Na verdade, o lado direito de (1) contém a soma de três quadrados de k {\displaystyle k} dígitos, k = n 2 1 {\displaystyle k=n2^{-1}} , que para serem calculados necessitam de 3 φ ( m ) = 3 φ ( n 2 1 ) {\displaystyle 3\varphi (m)=3\varphi (n2^{-1})} operações.

Todos os outros cálculos no lado direito de (1), a saber, são a multiplicação por 4 , 2 k , 2 n {\displaystyle 4,\;2^{k},\;2^{n}} , cinco adições e uma subtração de no máximo 2 n {\displaystyle 2n} dígitos necessários a no máximo n {\displaystyle n} operações. Disto resulta (2). Aplicando (2) sucessivamente para

φ ( n 2 1 ) , φ ( n 2 2 ) , , φ ( n 2 m + 1 ) {\displaystyle \varphi (n2^{-1}),\;\varphi (n2^{-2}),\;\ldots ,\;\varphi (n2^{-m+1})}


e tendo em conta que

φ ( n 2 m ) = φ ( 1 ) = 1 , {\displaystyle \varphi (n2^{-m})=\varphi (1)=1,} obtemos
φ ( n ) 3 ( 3 φ ( n 2 2 ) + c n 2 1 ) + c n = 3 2 φ ( n 2 2 ) + 3 c ( n 2 1 ) + c n {\displaystyle \varphi (n)\leqslant 3(3\varphi (n2^{-2})+cn2^{-1})+cn=3^{2}\varphi (n2^{-2})+3c(n2^{-1})+cn\leqslant \ldots \leqslant }


3 m φ ( n 2 m ) + 3 m 1 c ( n 2 m + 1 ) + 3 m 2 c ( n 2 m + 2 ) + + 3 c ( n 2 1 ) + c n = {\displaystyle \leqslant 3^{m}\varphi (n2^{-m})+3^{m-1}c(n2^{-m+1})+3^{m-2}c(n2^{-m+2})+\ldots +3c(n2^{-1})+cn=}
= 3 m + c n ( ( 3 2 ) m 1 + ( 3 2 ) m 2 + + ( 3 2 ) + 1 ) = {\displaystyle =3^{m}+cn\left(\left({\frac {3}{2}}\right)^{m-1}+\left({\frac {3}{2}}\right)^{m-2}+\ldots +\left({\frac {3}{2}}\right)+1\right)=}


= 3 m + 2 c n ( ( 3 2 ) m 1 ) < 3 m ( 2 c + 1 ) = ( 2 c + 1 ) n log 2 3 . {\displaystyle =3^{m}+2cn\left(\left({\frac {3}{2}}\right)^{m}-1\right)<3^{m}(2c+1)=(2c+1)n^{\log _{2}3}.}


Assim, para um número de φ ( n ) {\displaystyle \varphi (n)} operações, suficientes para a construção de n {\displaystyle n} dígitos ao quadrado pela fórmula (1), a estimativa será de:

φ ( n ) < ( 2 c + 1 ) n log 2 3 , log 2 3 = 1,584 9 {\displaystyle \varphi (n)<(2c+1)n^{\log _{2}3},\quad \log _{2}3=1{,}5849\ldots }


Se n {\displaystyle n} não for uma potência de dois, então haverá um número inteiro de m {\displaystyle m} dígitos especificando as desigualdades 2 m 1 < n 2 m {\displaystyle 2^{m-1}<n\leqslant 2^{m}} , expressando X {\displaystyle X} como um número de 2 m {\displaystyle 2^{m}} dígitos, isto é, deixando 2 m n {\displaystyle 2^{m}-n} símbolos iguais a zero à esquerda:

e n = = e 2 m 1 = 0. {\displaystyle e_{n}=\ldots =e_{2^{m}-1}=0.}


Todos os outros argumentos válidos para φ ( n ) {\displaystyle \varphi (n)} produzem a mesma cota superior ligada a essa ordem de n {\displaystyle n} .

Referências

  1. A. Karatsuba and Yu. Ofman (1962). Translation in Physics-Doklady, 7 (1963), pp. 595–596. «Multiplication of Many-Digital Numbers by Automatic Computers». Proceedings of the USSR Academy of Sciences. 145: 293–294 
  2. A. A. Karatsuba (1995). translation from Trudy Mat. Inst. Steklova, 211, 186–202 (1995). «The Complexity of Computations» (PDF). Proceedings of the Steklov Institute of Mathematics. 211: 169–183 

Ver também

  • v
  • d
  • e
Tópicos principais sobre teoria dos números
Fundamentos
Conceitos
Ferramentas
Números notáveis
Algoritmos
Constantes
Funções aritméticas
História
Número de Erdős
igual a 0
igual a 1
igual a 2
igual a 3
igual a 4
Teoremas
Demonstrados
Em aberto
Teoria dos crivos
Teoristas