Академический Документы
Профессиональный Документы
Культура Документы
Victor Laboreiro
Fernando Antnio
thiago.mesquita.ribeiro@gmail.com
victor.laboreiro@gmail.com
nandolacerda@gmail.com
ABSTRACT
The present paper analyses and describes in detail Karatsubas algorithm whose goal is to multiply long binary numbers fast. Pseudocode, example and a list of ways to improve
Karatsuba Algorithm are provided at the present work to
simplify the understanding of the mentioned method.
RESUMO
O presente artigo analisa e descreve detalhadamente o algoritmo de Karatsuba para multiplicaca
o de n
umeros bin
arios
longos. Pseudoc
odigo, exemplo e lista de melhorias s
ao fornecidas no presente trabalho com a finalidade de facilitar a
compreens
ao do metodo em quest
ao.
Palavras-chave
Long Number Multiplication, Karatsuba Algorithm, Fast
Multiplication
1.
INTRODUO
Devido a
`s elevadas limitaco
es dos primeiros processadores,
em alguns casos, operaco
es aritmeticas como multiplicaca
o
e divis
ao n
ao eram implementadas em nvel de hardware,
cabendo ao programador projetar e implementar tais operac
oes ausentes. Com o avanco tecnol
ogico dos tempos de
hoje, operaco
es como estas n
ao s
o s
ao implementadas em
hardware como s
ao massivamente otimizadas para permitir
o maior rendimento possvel do processador.
Apesar que seja muito improv
avel que uma implementaca
o
em software da operaca
o de multiplicaca
o, por exemplo, supere em desempenho a de uma em nvel de hardware executada no mesmo processador, ainda h
a um simples, porem
extremamente forte argumento que justifica a utilizaca
o de
uma implementaca
o em software: instruco
es em hardware
dos processadores s
ao limitadas pelo tamanho m
aximo da
palavra em bits. Isso significa que um processador de 64
bits n
ao suportar
a multiplicaco
es entre n
umeros com mais
de 20 dgitos.
e essencial. Areas
como, por exemplo, seguranca e geometria
computacional fazem extensivo uso de multiplicaco
es entre
n
umeros longos para, respectivamente, criptografar comunicaco
es e solucionar de maneira confi
avel problemas geometricos e algebricos.[1]
1.1
2.
A tecnica de Divis
ao e Conquista consiste, resumidamente,
em desmembrar o problema em v
arios subproblemas que
s
ao semelhantes ao problema original, mas menores em tamanho, resolvem os subproblemas que s
ao semelhantes ao
problema original, mas menores em tamanho, resolvem os
subproblemas recursivamente e depois combinam essas soluco
es com o objtivo de criar uma soluca
o para o problema
original.[2]
Esquematicamente, a abordagem de Dividir e Conquistar
pode ser representada da seguinte maneira:
In
umeros s
ao os algoritmos que fazem uso de tal tecnica
e, como veremos a seguir, o Algoritmo de Multiplicac
ao de
Complexos de Gauss e um exemplo.
3.
ALGORITMO DE MULTIPLICAO DE
COMPLEXOS DE GAUSS
O matem
atico Carl Friedrich Gauss (1777-1855) percebeu
que apesar do produto de dois n
umeros complexos parecerem necessitar de quatro multiplicaco
es entre n
umeros reais,
na verdade e possvel realizarcom apenas tres multiplicaco
es.
Sejam A e B dois n
umeros complexos, segue:
A = a + bi
B = c + di
Multiplicando ambos n
umeros e simplificando conforme Gauss,
obtemos:
A B = (a + bi)(c + di)
A B = ac bd + (bc + ad)i
bc + ad = (a + b)(c + d) ac bd
A B = ac bd + [(a + b)(c + d) ac bd]i
A princpio, a reduca
o de 25% de multiplicac
oes n
ao aparenta ser promissora em termos de complexidade temporal
uma vez que a mesma n
ao foi reduzida assintoticamente,
mas como veremos a seguir, atraves de uma implementaca
o
com Divis
ao e Conquista ser
a possvel obter um algoritmo
com complexidade temporal subquadr
atica.
4.
ALGORITMO DE MULTIPLICAO DE
BINRIOS DE KARATSUBA
Eq.1)X Y = XL YL 2n + (XL YR + XR YL )2 2 + XR YR
Atraves da Equaca
o 2 e possvel obter complexidade temporal subquadr
atica como e possvel analisar a seguir:
T (n) = 3T ( n2 ) + O(n)
P n21 j n
T (n) = (nlog2 3 ) + log
3 2j )
j=0
Uma vez que log2 3 1.58496, implica que a complexidade
temporal de Karatsuba e da ordem de (n1.58 ) o que representa uma elevada reduc
ao assint
otica em relaca
o ao Algoritmo Cl
assico de Multiplicaca
o.
4.1
Desta forma,
obtemos atraves da multiplicaca
o entre X e Y:
n
X = XL 2n2 + XR
Y = YL 2 2 + YR
Pseudocdigo
funcao m u l t i p l i c a (x , y )
Entrada :
I n t e i r o s p o s i t i v o s "x" e "y" ,
em b i n a r i o
Saida :
O produto
1) P1 = 0x22 + (0 0 0)2 2 + 0
1) P1 = 0 + 0 + 0 = 0
1) P2 = 11x10
1.2)
1.2)
1.2)
1.2)
1.2)
1.2)
Xl = t e t o ( n / 2 ) b i t s a e s q u e r d a de x
Xr = chao ( n / 2 ) b i t s a d i r e i t a de x
Yl = t e t o ( n / 2 ) b i t s a e s q u e r d a de y
Yr = chao ( n / 2 ) b i t s a d i r e i t a de y
P1 = m u l t i p l i c a ( Xl , Yl )
P2 = m u l t i p l i c a ( Xr , Yr )
P3 = m u l t i p l i c a ( Xl+Xr , Yl+Yr )
Devolva ( P12 n + ( P3P1P2 ) 2 ( n / 2 ) + P2 )
X = 11 e Y = 10
XL = 1 e XR = 1
YL = 1 e YR = 0
P1 = 1x1 = 1
P2 = 1x0 = 0
P3 = (1 + 1)x1 = 10x1
1.2.1)
1.2.1)
1.2.1)
1.2.1)
1.2.1)
1.2.1)
X = 10 e Y = 1
XL = 1eXR = 0
YL = 0eYR = 1
P1 = 1x0 = 0
P2 = 0x1 = 0
P3 = (1 + 0)x(0 + 1) = 1x1 = 1
2
4.2
Melhorias
Algumas sugest
oes para melhoria de desempenho do Algoritmo de Karatsuba foram coletadas de outros trabalhos e
reunidas no presente documento. Em relaca
o ao pseudoc
odigo apresentado neste trabalho, imediatamente deve-se
alertar ao leitor que todas os produtos que envolvem potencia de 2 devem necessariamente ser implementados com
operadores de deslocamento de bit devido a
` sua significante
rapidez.
X = 1011 e Y = 0110
XL = 10 e XR = 11
YL = 01 e YR = 10
P1 = 10x01
1.1)
1.1)
1.1)
1.1)
1.1)
1.1)
X = 10 e Y = 01
XL = 1 e XR = 0
YL = 0 e YR = 1
P 1 = 1x0 = 0
P 2 = 0x1 = 0
P 3 = (1 + 0)x(0 + 1) = 0x0 = 0
5.
CONCLUSES
6.
REFERNCIAS
1. A. Eigenwillig, K. Mehlhorn, Multiplication of Long
Integers, http://www.mpi-inf.mpg.de/ mehlhorn/ftp/chapter2Aen.pdf.
2. H Cormen, Thomas, Introduction to Algorithms, MIT
Press, 3rd Edition, 2009.
3. A. Karatsuba and Yu. Ofman (1962). Multiplication
of Many-Digital Numbers by Automatic Computers.
Proceedings of the USSR Academy of Sciences 145.
4. S. Dasgupta, C. Papadimitriou, U. Vazirani, Algorithms, McGraw-Hill, 1st edition, 2006.
5. D. J. Bernstein, Fast multiplication and its applications.
6. D. J. Bernstein, Multidigit multiplication for mathematicians.