Mon´oides e o Algoritmo de Exponencia¸c˜ao
Mon´ oides e o Algoritmo de Exponencia¸ c˜ ao
Lu´ıs Fernando Schultz Xavier da Silveira
Departamento de Inform´atica e Estat´ıstica - INE - CTC - UFSC
12 de maio de 2010
Mon´oides e o Algoritmo de Exponencia¸c˜ao
Conte´ udo
1 Mon´oides Defini¸c˜ao Propriedades Exemplos
2 Produt´orios e Exponencia¸c˜ao em Mon´oides Defini¸c˜ao
Propriedades
3 O Algoritmo de Exponencia¸c˜ao Enunciado
Prova de Corretude An´alise da Complexidade Implementa¸c˜ao
4 Aplica¸c˜oes
Exponencia¸c˜ao Modular
C´alculo Eficiente dos N´umeros de Fibonacci
Mon´oides e o Algoritmo de Exponencia¸c˜ao Mon´oides
Defini¸c˜ao
Defini¸c˜ ao
Defini¸c˜ao
SejaM um conjunto e·:M →M uma fun¸c˜ao. Dizemos que(M,·)´e um mon´oide se as seguintes propriedades forem satisfeitas:
·´e associativa.
Existe um elemento 1∈M tal que, para todox∈M,1·x=x·1 =x.
Mon´oides e o Algoritmo de Exponencia¸c˜ao Mon´oides
Propriedades
Propriedades
Proposi¸c˜ao (Unicidade da Unidade)
Seja(M,·) um mon´oide e1,10∈M tais que, para todox∈M, 1·x=x·1 = 10·x=x·10=x. Ent˜ao1 = 10.
Demonstra¸c˜ao.
Temos que 1·10= 1 e 1·10= 10, logo 1 = 10. Com isso podemos definir a unidade de um mon´oide.
Mon´oides e o Algoritmo de Exponencia¸c˜ao Mon´oides
Exemplos
Exemplos
S˜ao exemplos de mon´oides:
(R,·) onde 1 = 1.
(Z,+) onde 1 = 0.
(R2×2,·), onde 1 =
»1 0 0 1 –
. (Σ∗,·), onde 1 =ε.
(F(A, A),◦), onde 1(x) =x.
(L(A, A),◦), onde 1(x) =x.
(B(A, A),◦), onde 1(x) =x.
(2A,∪), onde 1 ={}.
(2A,∩), onde 1 =A.
(2A,⊕), onde 1 ={}.
Mon´oides e o Algoritmo de Exponencia¸c˜ao Produt´orios e Exponencia¸c˜ao em Mon´oides
Defini¸c˜ao
Produt´ orios e Exponencia¸c˜ ao em Mon´ oides
Defini¸c˜ao
Seja(M,·)um mon´oide ef:Z→M uma fun¸c˜ao. Definimos indutivamente
b
Y
i=a
f(i) = 8
><
>:
1, b < a
f(a)·
b
Y
i=a+1
f(i)
!
, sen˜ao,
ondea, b∈Z.
Defini¸c˜ao
Seja(M,·) um mon´oide,k∈Num n´umero natural ex∈M um elemento qualquer. Definimos
xk=
k−1
Y
i=0
x.
Mon´oides e o Algoritmo de Exponencia¸c˜ao Produt´orios e Exponencia¸c˜ao em Mon´oides
Propriedades
Propriedades dos Produt´ otios em Mon´ oides
Proposi¸c˜ao
Seja(M,·) um mon´oide,f:Z→M uma fun¸c˜ao ea, c, b∈Zn´umeros inteiros satisfazendoa6c6b. Ent˜ao
c−1
Y
i=a
f(i)
!
·
b−1
Y
i=c
f(i)
!
=
b−1
Y
i=a
f(i).
Mon´oides e o Algoritmo de Exponencia¸c˜ao Produt´orios e Exponencia¸c˜ao em Mon´oides
Propriedades
Propriedades dos Produt´ otios em Mon´ oides
Demonstra¸c˜ao.
Por indu¸c˜ao emc−a. No caso basea=c, logo
c−1
Y
i=a
f(i)
!
·
b−1
Y
i=c
f(i)
!
=
a−1
Y
i=a
f(i)
!
·
b−1
Y
i=a
f(i)
!
= 1·
b−1
Y
i=a
f(i)
!
=
b−1
Y
i=a
f(i).
Mon´oides e o Algoritmo de Exponencia¸c˜ao Produt´orios e Exponencia¸c˜ao em Mon´oides
Propriedades
Propriedades dos Produt´ otios em Mon´ oides
Demonstra¸c˜ao.
Para o passo indutivo, assumaa < c. Portanto
c−1
Y
i=a
f(i)
!
·
b−1
Y
i=c
f(i)
!
= f(a)·
c−1
Y
i=a+1
f(i)
!!
·
b−1
Y
i=c
f(i)
!
=f(a)· c−1
Y
i=a+1
f(i)
!
·
b−1
Y
i=c
f(i)
!!
=f(a)·
b−1
Y
i=a+1
f(i)
!
=
b−1
Y
i=a
f(i).
Mon´oides e o Algoritmo de Exponencia¸c˜ao Produt´orios e Exponencia¸c˜ao em Mon´oides
Propriedades
Propriedades da Exponencia¸c˜ ao em Mon´ oides
Corol´ario.
Seja(M,·) um mon´oide,x∈M um elemento qualquer em, n∈Nn´umeros naturais. Ent˜ao
xm+n=xm·xn. Demonstra¸c˜ao.
xm·xn=
m−1
Y
i=0
x
!
·
n−1
Y
i=0
x
!
=
m−1
Y
i=0
x
!
· 0
@
(m+n)−1
Y
i=m
x 1 A=
(m+n)−1
Y
i=0
x
=xm+n.
Mon´oides e o Algoritmo de Exponencia¸c˜ao Produt´orios e Exponencia¸c˜ao em Mon´oides
Propriedades
Propriedades da Exponencia¸c˜ ao em Mon´ oides
Proposi¸c˜ao
Seja(M,·) um mon´oide,x∈M um elemento qualquer em, n∈Nn´umeros naturais. Ent˜ao
(xm)n=xmn.
Demonstra¸c˜ao.
A prova ser´a por indu¸c˜ao emn. Paran= 0 o resultado ´e trivial.
Sejan∈Nqualquer e assuma que (xm)n=xmn. Ent˜ao
(xm)(n+1)= (xm)n·(xm)1=xmn·xm=xmn+m=xm(n+1).
Mon´oides e o Algoritmo de Exponencia¸c˜ao Produt´orios e Exponencia¸c˜ao em Mon´oides
Propriedades
Propriedades da Exponencia¸c˜ ao em Mon´ oides
Como uma observa¸c˜ao final, note que 0x´e 1 para todox. Inclusive, 00= 1.
Mon´oides e o Algoritmo de Exponencia¸c˜ao O Algoritmo de Exponencia¸c˜ao
Enunciado
Enunciado
Seja (M,·) um mon´oide,x∈M em elemento qualquer ek∈Num n´umero natural. Considere ent˜ao o seguinte algoritmo:
exp(x, k) 0 a, n, p←x, k,1 1 enquanton6= 0fa¸ca 2 senmod 2 = 1ent˜ao
3 p←p·a
4 a←a·a 5 n←¨n
2
˝ 6 retornep
Mon´oides e o Algoritmo de Exponencia¸c˜ao O Algoritmo de Exponencia¸c˜ao
Prova de Corretude
Prova de Corretude
Teorema
O algoritmo anterior corretamente computa o valorxk.
Demonstra¸c˜ao.
A prova ser´a atrav´es da seguinte invariante de loop:
“Sempre que o algoritmo passa pela linha 1,p·an=xk.”
Na primeira vez que ele chega `a linha 1, essa invariante ´e trivialmente satisfeita, poisp= 1,a=xen=kem virtude da atribui¸c˜ao na linha 0.
Mon´oides e o Algoritmo de Exponencia¸c˜ao O Algoritmo de Exponencia¸c˜ao
Prova de Corretude
Prova de Corretude
Demonstra¸c˜ao.
Suponha que o algoritmo chegou `a linha 1 satisfazendo a invariante. Vamos mostrar que se ele retornar, a invariante ainda continua sendo satisfeita.
O algoritmo ir´a voltar `a linha 1 se, e somente se,n6= 0. Iremos, portanto, assumir este fato.
Se ele voltar, os novos valores paraa,nepser˜ao a0=a·a, p0=p·anmod 2, n0=
jn 2 k
. Mas ent˜ao
p0·a0n0 =p·anmod 2·(a·a)bn2c=p·anmod 2·(a2)bn2c
=p·anmod 2·a2·bn2c=p·anmod 2·an−(nmod 2)
=p·an=xk.
Mon´oides e o Algoritmo de Exponencia¸c˜ao O Algoritmo de Exponencia¸c˜ao
Prova de Corretude
Prova de Corretude
Demonstra¸c˜ao.
Portanto, ao fim do algoritmo,xk=p·an, mas comon= 0,
xk=p·a0=p·1 =p. Logo o algoritmo corretamente retornap=xk.
Mon´oides e o Algoritmo de Exponencia¸c˜ao O Algoritmo de Exponencia¸c˜ao
An´alise da Complexidade
An´ alise da Complexidade
Este algoritmo pode ter sua complexidade analisada com o Teorema Mestre atrav´es da recorrˆencia
T(n) =T
“n 2
” + Θ(1).
Como Θ(1) = Θ(nlog21), temos
T ∈Θ(logn).
Mon´oides e o Algoritmo de Exponencia¸c˜ao O Algoritmo de Exponencia¸c˜ao
Implementa¸c˜ao
Detalhes de Implementa¸ c˜ ao
Senestiver representado na base 2, este algoritmo pode ser eficientemente implementado.
Paran escrito em uma base geral b, precisamos adaptar o algoritmo como segue:
expb(x, k) 0 a, n, p←x, k,1 1 enquanton6= 0fa¸ca 2 p←p·anmodb 3 a←ab
4 n←¨n
b
˝ 5 retornep
A demonstra¸c˜ao de que ele funciona e roda em Θ(logn) para todobfica como exerc´ıcio.
Mon´oides e o Algoritmo de Exponencia¸c˜ao Aplica¸c˜oes
Exponencia¸c˜ao Modular
Exponencia¸ c˜ ao Modular
V´arios protocolos de criptografia assim´etrica precisam computar eficiente- mente o valor deabmodnpara valoresn∈N\ {0}ea, b∈Zn.
Observando que (Zn,·) ´e um mon´oide, esse problema pode facilmente ser resolvido com o algoritmo que estudamos.
Mon´oides e o Algoritmo de Exponencia¸c˜ao Aplica¸c˜oes
C´alculo Eficiente dos N´umeros de Fibonacci
C´ alculo Eficiente dos N´ umeros de Fibonacci
On-´esimo n´umero de Fibonacci ´e definido recursivamente por
fn= 8
><
>:
0, n= 0
1, n= 1
fn−2+fn−1, sen˜ao.
Gostar´ıamos de ser capazes de computar eficientemente on-´esimo n´umero de Fibonaccifnpara um dadon∈N.
Mon´oides e o Algoritmo de Exponencia¸c˜ao Aplica¸c˜oes
C´alculo Eficiente dos N´umeros de Fibonacci
C´ alculo Eficiente dos N´ umeros de Fibonacci
Conhecemos um algoritmo capaz de fazer isso, mas ele executa Θ(n) somas.
Ainda, o n-´esimo n´umero de Fibonacci tem da ordem de Θ(n) d´ıgitos em qualquer base. Se levarmos isso em conta este algoritmo leva Θ(n2) para concluir.
Iremos mostrar um algoritmo para calcular on-´esimo n´umero de Fibonacci usando apenas Θ(logn) somas e multiplica¸c˜oes. Ainda, se considerarmos que uma multiplica¸c˜ao de dois n´umeros de n d´ıgitos pode ser executada emO(nlognlog logn), este algoritmo leva apenasO(nlog2nlog logn) para terminar, sendo bastante mais r´apido.
Mesmo usando o algoritmo de Karatsuba para multiplicar faz com que esse algoritmo rode emO(nlog23logn), o que ainda ´e bem mais r´apido.
Mon´oides e o Algoritmo de Exponencia¸c˜ao Aplica¸c˜oes
C´alculo Eficiente dos N´umeros de Fibonacci
C´ alculo Eficiente dos N´ umeros de Fibonacci
A principal id´eia por traz desse algoritmo vem da seguinte igualdade
»fn+2
fn+1
–
=
»1 1 1 0
– »fn+1
fn
– . Por indu¸c˜ao obt´em-se
»fn+1
fn
–
=
»1 1 1 0
–n» f1
f0
– .
Mas como (N2×2,·) ´e um mon´oide, segue que podemos calcular
»1 1 1 0
–n
rapidamente, usando apenas Θ(logn) vezes a opera¸c˜ao do mon´oide, que ´e um produto matricial 2×2 e que portanto pode ser implementado com Θ(1) somas e multiplica¸c˜oes.
Mon´oides e o Algoritmo de Exponencia¸c˜ao Aplica¸c˜oes
C´alculo Eficiente dos N´umeros de Fibonacci
C´ alculo Eficiente dos N´ umeros de Fibonacci
Outra observa¸c˜ao interessante ´e que comof0= 0,f1= 1,f2= 1 e
»fk+1
fk
–
=
»1 1 1 0
–k» f1
f0
– ,
»fk+2
fk+1
–
=
»1 1 1 0
–k» f2
f1
– ,
obt´em-se que, parak>1,
»1 1 1 0
–k
=
»fk+1 fk
fk fk−1
– ,
e como os n´umero de Fibonacci s˜ao n˜ao decrescentes, temos que o maior n´umero que aparece em uma matriz no algoritmo de exponencia¸c˜ao ´efn+1, que tem Θ(n) d´ıgitos em qualquer base.
SeM(n) ´e o tempo que um algoritmo de multiplica¸c˜ao leva para multiplicar dois inteiros den d´ıgitos eM´e da classe de complexidade de uma fun¸c˜ao assintoticamente n˜ao decrescente, segue que podemos implementar esse al- goritmo emO(M(n) logn).