Académique Documents
Professionnel Documents
Culture Documents
Algoritmos Randomizados
Publicaes Matemticas
Introduo aos
Algoritmos Randomizados
Celina Miraglia Herrera de Figueiredo
UFRJ
Guilherme Dias da Fonseca
University of Maryland
Manoel Jos Machado Soares Lemos
UFPE
Vincius Gusmo Pereira de S
UFRJ
impa
26
o
Colquio Brasileiro de Matemtica
Copyright 2007 by Celina de Figueiredo, Guilherme da Fonseca, Manoel Lemos
e Vinicius de S
Direitos reservados, 2007 pela Associao Instituto
Nacional de Matemtica Pura e Aplicada - IMPA
Estrada Dona Castorina, 110
22460-320 Rio de Janeiro, RJ
Impresso no Brasil / Printed in Brazil
Capa: Noni Geiger / Srgio R. Vaz
26
o
Colquio Brasileiro de Matemtica
Aspectos Ergdicos da Teoria dos Nmeros - Alexander Arbieto, Carlos
Matheus e Carlos Gustavo Moreira
Componentes Irredutveis dos Espaos de Folheaes - Alcides Lins Neto
Elliptic Regularity and Free Boundary Problems: an Introduction -
Eduardo V. Teixeira
Hiperbolicidade, Estabilidade e Caos em Dimenso Um - Flavio Abdenur e
Luiz Felipe Nobili Frana
Introduction to Generalized Complex Geometry - Gil R. Cavalcanti
Introduction to Tropical Geometry - Grigory Mikhalkin
Introduo aos Algoritmos Randomizados - Celina de Figueiredo,
Guilherme da Fonseca, Manoel Lemos e Vinicius de S
Mathematical Aspects of Quantum Field Theory - Edson de Faria and
Welington de Melo
Mtodos Estatsticos No-Paramtricos e suas Aplicaes - Aluisio Pinheiro
e Hildete P. Pinheiro
Moduli Spaces of Curves - Enrico Arbarello
Noes de Informao Quntica - Marcelo O. Terra Cunha
Three Dimensional Flows - Vtor Arajo e Maria Jos Pacifico
Tpicos de Corpos Finitos com Aplicaes em Criptografia e Teoria de
Cdigos - Ariane Masuda e Daniel Panario
Tpicos Introdutrios Anlise Complexa Aplicada - Andr Nachbin e Ailn Ruiz
de Zrate
Uma Introduo Mecnica Celeste - Srgio B. Volchan
Uma Introduo Teoria Econmica dos Jogos - Humberto Bortolossi,
Gilmar Garbugio e Brgida Sartini
Uma Introduo aos Sistemas Dinmicos via Fraes Contnuas - Lorenzo J.
Daz e Danielle de Rezende Jorge
ISBN: 978-85-244-0255-5 Distribuio: IMPA
Estrada Dona Castorina, 110
22460-320 Rio de Janeiro, RJ
E-mail: ddic@impa.br
http://www.impa.br
i
i
randomizados 2007/4/30 11:48 page i #1
i
i
i
i
i
i
Dedicamos este livro a Jayme Luiz Szwarcter,
em seu 65
o
anivers ario. i
i
randomizados 2007/4/30 11:48 page ii #2
i
i
i
i
i
i i
i
randomizados 2007/4/30 11:48 page iii #3
i
i
i
i
i
i
Prefacio
Este texto consiste das notas para um curso apresentado no
26
o
Col oquio Brasileiro de Matem atica no IMPA, Rio de Janeiro,
em julho de 2007.
O objetivo do curso Introdu c ao aos Algoritmos Randomizados
e apresentar a pesquisadores e estudantes da area de ciencia da com-
puta c ao as tecnicas fundamentais para o desenvolvimento de algo-
ritmos randomizados (tambem chamados probabilsticos, por alguns
autores). O curso tem car ater introdut orio: n ao s ao assumidos conhe-
cimentos avan cados de probabilidade ou de algoritmos. Os conceitos
te oricos que se fazem necess arios s ao apresentados no pr oprio texto,
em geral acompanhando os pr oprios problemas e algoritmos que os
demandam. Ao completar este curso, o aluno ter a travado contato
com o instrumental b asico dessa area e com um elenco representativo
de algoritmos randomizados e, em alguns casos, tambem deter-
minsticos para diversos problemas combinat orios. Este curso in-
trodut orio corresponde a tema de inicia c ao cientca, tem um n umero
mnimo de pre-requisitos, estimula o aluno ` a investiga c ao cientca e
ainda n ao e oferecido regularmente nos currculos das universidades
brasileiras.
O projeto para este curso a quatro autores nasceu da tese de
doutorado de Vincius, defendida no Programa de Engenharia de Sis-
temas e Computa c ao (PESC) da COPPE/UFRJ em mar co de 2006.
Durante a escrita dessa tese, realizada sob a orienta c ao de Celina,
foram criados v arios algoritmos, entre determinsticos e randomiza-
dos, para um problema de teoria dos grafos. Alguns desses algorit-
mos foram desenvolvidos em co-autoria com Guilherme, que fez seu
mestrado em estruturas de dados cineticas (determinsticas e rando-
iii i
i
randomizados 2007/4/30 11:48 page iv #4
i
i
i
i
i
i
iv PREF
ACIO
mizadas) tambem no PESC e orientado por Celina. Guilherme faz
doutorado em geometria computacional na Universidade de Mary-
land. Manoel veio da Universidade Federal de Pernambuco partici-
par como membro da banca da tese de doutorado de Vincius, tendo
naquela ocasi ao manifestado interesse em voltar ao tema que apre-
sentara no Col oquio de 1989 para discutir o algoritmo randomizado
de Rabin. Vincius e, desde abril de 2006, p os-doutor junto ao PESC,
onde lecionou uma vers ao preliminar destas notas.
Agradecemos ao comite organizador do Col oquio Brasileiro de Ma-
tem atica pela oportunidade de apresentar este curso. Agradecemos
tambem ` a CAPES, ao CNPq e ` a FAPERJ pelo apoio concedido na
forma de bolsas de doutorado, p os-doutorado, pesquisa e auxlios
para viagens. Agradecemos a Antonio Carlos Rodrigues Monteiro e
Raphael Carlos Santos Machado pelas atentas corre c oes e sugest oes
de melhorias. Finalmente, agradecemos a Luiz Henrique de Figuei-
redo pelo cuidadoso trabalho de diagrama c ao.
Celina, Guilherme, Manoel e Vincius.
Rio de Janeiro, 30 de abril de 2007. i
i
randomizados 2007/4/30 11:48 page v #5
i
i
i
i
i
i
Conte udo
1 Randomizados? 1
1.1 Probabilidade b asica . . . . . . . . . . . . . . . . . . . 4
1.1.1 Axiomas e deni c oes . . . . . . . . . . . . . . . 4
1.2 Vari aveis aleat orias e esperan ca . . . . . . . . . . . . . 8
1.2.1 Linearidade da esperan ca . . . . . . . . . . . . 9
1.2.2 Limites de cauda . . . . . . . . . . . . . . . . . 10
1.2.3 Algumas vari aveis aleat orias importantes . . . 11
1.3 Monte Carlo e Las Vegas . . . . . . . . . . . . . . . . . 13
1.3.1 Monte Carlo . . . . . . . . . . . . . . . . . . . 14
1.3.2 Las Vegas . . . . . . . . . . . . . . . . . . . . . 21
1.3.3 Certeza ou desempenho? . . . . . . . . . . . . . 23
1.4 Classes de complexidade . . . . . . . . . . . . . . . . . 27
1.5 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.6 Notas bibliogr acas . . . . . . . . . . . . . . . . . . . . 30
2 Paradigmas combinat orios e analise probabilstica 31
2.1 Paradigmas combinat orios . . . . . . . . . . . . . . . . 32
2.1.1 O modelo de bolas-e-latas . . . . . . . . . . . . 32
2.1.2 O colecionador de cupons . . . . . . . . . . . . 34
2.2 An alise probabilstica de algoritmos . . . . . . . . . . 37
2.2.1 Quick Sort . . . . . . . . . . . . . . . . . . . . 38
2.2.2 Quick Sort Randomizado . . . . . . . . . . . . 42
2.2.3 Bucket Sort . . . . . . . . . . . . . . . . . . . . 43
2.3 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.4 Notas bibliogr acas . . . . . . . . . . . . . . . . . . . . 47
v i
i
randomizados 2007/4/30 11:48 page vi #6
i
i
i
i
i
i
vi CONTE
UDO
3 Primalidade 49
3.1 Aritmetica modular . . . . . . . . . . . . . . . . . . . 50
3.2 Maior divisor comum . . . . . . . . . . . . . . . . . . . 53
3.3 Teorema Fundamental da Aritmetica . . . . . . . . . . 57
3.4 O Pequeno Teorema de Fermat . . . . . . . . . . . . . 59
3.5 Teorema Chines do Resto . . . . . . . . . . . . . . . . 62
3.6 Geradores para Z
n
. . . . . . . . . . . . . . . . . . . . 65
3.7 Pseudoprimos . . . . . . . . . . . . . . . . . . . . . . . 69
3.8 A exponencia c ao e r apida em Z
n
. . . . . . . . . . . . 75
3.9 Quase decidindo primalidade em tempo polinomial . . 80
3.10 A import ancia de n umeros primos grandes: o RSA . . 82
3.11 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.12 Notas bibliogr acas . . . . . . . . . . . . . . . . . . . . 85
4 Geometria Computacional 87
4.1 Programa c ao linear . . . . . . . . . . . . . . . . . . . . 88
4.2 Fun c oes hash . . . . . . . . . . . . . . . . . . . . . . . 93
4.3 Par de pontos mais pr oximos . . . . . . . . . . . . . . 96
4.4 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.5 Notas bibliogr acas . . . . . . . . . . . . . . . . . . . . 103
5 O Metodo Probabilstico 105
5.1 Provas de existencia . . . . . . . . . . . . . . . . . . . 105
5.1.1 O metodo da probabilidade positiva . . . . . . 106
5.1.2 O metodo da esperan ca . . . . . . . . . . . . . 108
5.2 De-randomiza c ao . . . . . . . . . . . . . . . . . . . . . 110
5.2.1 O metodo das esperan cas condicionais . . . . . 111
5.3 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.4 Notas bibliogr acas . . . . . . . . . . . . . . . . . . . . 115
Bibliograa 117 i
i
randomizados 2007/4/30 11:48 page 1 #7
i
i
i
i
i
i
Captulo 1
Randomizados?
Algoritmo e uma seq uencia de instru c oes para resolver um pro-
blema. Computadores s ao especialmente h abeis para lidar com al-
goritmos, pois, partindo de um estado inicial e seguindo ` a risca um
encadeamento muito bem denido de passos, a resposta buscada ser a
eventualmente anunciada.
Diz-se que experimentos s ao aleat orios, ou rand omicos, quando
seu resultado advem da intera c ao de um n umero t ao grande de va-
ri aveis que quaisquer tentativas de preve-los com exatid ao seriam
simplesmente v as. O lan camento de um dado ou de uma moeda e
exemplo cl assico: impossvel conhecermos todos os fatores posi c ao
e momentos linear e angular exatos no instante do lan camento, re-
sistencia do ar, grau de elasticidade das diversas colis oes etc. que
inuenciar ao seu movimento ate que, nalmente im ovel, apresente,
naquela de suas faces que o acaso escolheu deixar voltada para
cima, o resultado nal do experimento.
Algoritmos randomizados s ao aqueles que utilizam experimentos
rand omicos para decidir, em um ou mais momentos durante sua exe-
cu c ao, o que fazer ou para onde ir. Por motivo de clareza, algoritmos
cl assicos (n ao-randomizados) s ao tambem ditos determinsticos.
Na maioria dos casos, e conveniente imaginarmos um algoritmo
randomizado como que lan cando um dado ou uma moeda e, de acordo
com o resultado obtido, decidindo entre a execu c ao dessa ou daquela
a c ao. Esta e a gura que estaremos constantemente evocando ao
1 i
i
randomizados 2007/4/30 11:48 page 2 #8
i
i
i
i
i
i
2 [CAP. 1: RANDOMIZADOS?
longo do texto quando nos referirmos ` as escolhas aleat orias que nos-
sos algoritmos precisar ao tomar: o algoritmo simplesmente lan ca um
dado com qualquer n umero de faces.
ASICA 5
probabilstico e constitudo de:
um espa co amostral = r
1
, r
2
, . . ., que e o conjunto de todos
os possveis resultados de um experimento aleat orio qualquer.
Eventos s ao quaisquer subconjuntos de . Os subconjuntos
unit arios E
i
= r
i
, i = 1, 2, . . ., denem os eventos ele-
mentares daquele experimento.
uma fun c ao de probabilidade Pr, que associa a cada evento A
uma probabilidade Pr[A], que pode ser entendida como o
valor para o qual converge a taxa de ocorrencia daquele evento
3
caso o experimento seja repetido por um n umero muito grande
de vezes.
Fun cao de probabilidade
A fun c ao de probabilidade Pr precisa atender ` as seguintes condi c oes:
1. Para todo evento A , 0 Pr[A] 1.
2. Pr[] = 1.
3. Para eventos A
1
, A
2
, . . . disjuntos dois-a-dois, vale Pr[
i
A
i
] =
i
Pr[A
i
].
Seja, por exemplo, o experimento aleat orio muito simples do lan-
camento de um dado honesto de seis faces e o espa co probabilstico de-
nido pelo conjunto = 1, 2, 3, 4, 5, 6 de seus possveis resultados e
pela fun c ao de probabilidade Pr que associa a cada evento elementar
E
i
= i entendido como o resultado obtido foi i (i = 1, . . . , 6)
a probabilidade Pr[E
i
] = 1/6. Podemos estar interessados em
eventos um pouco mais complexos como o resultado obtido foi par,
que equivale ao evento B = 2, 4, 6, ou o resultado obtido foi maior
do que 7, que e simplesmente o evento C = .
3
Quando se pensa na ocorrencia de um evento A, est a-se pensando no(s)
caso(s) em que o resultado do experimento pertence ao conjunto A. i
i
randomizados 2007/4/30 11:48 page 6 #12
i
i
i
i
i
i
6 [CAP. 1: RANDOMIZADOS?
Princpio da inclusao-exclusao
Sejam A
1
, A
2
, . . . eventos arbitr arios quaisquer. Ent ao,
Pr
_
_
i
A
i
_
=
i
Pr[A
i
]
i<j
Pr[A
i
A
j
]
+
i<j<k
Pr[A
i
A
j
A
k
]
+ (1)
l+1
i
1
<i
2
<<i
l
Pr
_
l
r=1
A
i
r
_
+
Ainda no exemplo do lan camento de um dado, suponha que este-
jamos interessados no evento o resultado e par ou m ultiplo de 3.
ASICA 7
bilidades associadas a algoritmos randomizados:
Pr
_
_
i
A
i
_
i
Pr[A
i
].
Embora pare ca pouco justo este limite da uni ao, o fato e que n ao
apenas e, na maioria das vezes, perfeitamente suciente a utiliza c ao
de tal limite quanto seria extremamente difcil o c alculo exato de
probabilidades complexas pelo princpio da inclus ao-exclus ao. Alem
disso, como veremos, em muitos casos j a estamos mesmo trabalhando
com desigualdades e majorantes, donde um excesso de pragmatismo
no c alculo exato de determinadas probabilidades n ao faria mais que
adicionar p aginas pouco uteis ` a an alise do algoritmo em quest ao.
Probabilidades condicionais e eventos independentes
A probabilidade condicional de um evento A dado um evento B e
escrita Pr[A[B] e corresponde ` a probabilidade de que o resultado do
experimento aleat orio perten ca ao conjunto A sabendo-se que per-
tence ao conjunto B.
Podemos calcular Pr[A[B] como
Pr[A[B] =
Pr[A B]
Pr[B]
.
Se Pr[A[B] = Pr[A], dizemos que A e B s ao independentes en-
tre si. Intuitivamente, conhecermos que o resultado do experimento
pertence a B em nada altera a avalia c ao da probabilidade de que ele
perten ca a A.
Da deni c ao das probabilidades condicionais advem a express ao
para o c alculo da probabilidade de uma conjun c ao de eventos:
Pr
_
n
i=1
A
i
_
=
n
i=1
Pr
_
_
A
i
[
j<i
A
j
_
_
.
E, no caso particular de eventos dois-a-dois independentes, temos
Pr
_
n
i=1
A
i
=
n
i=1
Pr
_
A
i
. i
i
randomizados 2007/4/30 11:48 page 8 #14
i
i
i
i
i
i
8 [CAP. 1: RANDOMIZADOS?
Probabilidade total e a Regra de Bayes
Se particionamos o espa co amostral em eventos (disjuntos) B
1
, B
2
,
. . . , B
n
, podemos calcular a probabilidade de um evento A qualquer
pela express ao seguinte, conhecida como probabilidade total :
Pr[A] =
n
i=1
Pr[A[B
i
]Pr[B
i
].
Dessa express ao decorre a chamada Regra de Bayes para probabili-
dades condicionais:
Pr[B
k
[A] =
Pr[B
k
A]
Pr[A]
=
Pr[A[B
k
]Pr[B
k
]
n
i=1
Pr[A[B
i
]Pr[B
i
]
.
1.2 Variaveis aleat orias e esperan ca
Muitas vezes interessa-nos atribuir um valor numerico ao resultado
de um experimento aleat orio qualquer. Por exemplo, se nosso ex-
perimento consiste de seis lan camentos consecutivos de uma moeda,
temos 2
6
= 64 diferentes seq uencias possveis de caras e coroas, cada
uma das quais constituindo um evento elementar do espa co amos-
tral associado ` aquele experimento. Se usarmos a nota c ao K para
cara e C para coroa, nossos eventos elementares podem ser escri-
tos como KKKKKK, KKKKKC, KKKKCK, KKKKCC etc.
Pode ser, no entanto, que interesse-nos apenas, digamos, o tamanho
da maior seq uencia de caras consecutivas. Neste caso, eventos elemen-
tares como CKKKKC e KKKKCC correspondem a um mesmo
resultado de um m aximo de 4 caras consecutivas.
Uma vari avel aleat oria X e, portanto, uma fun c ao de certo espa co
amostral no conjunto dos n umeros reais (isto e, X : R),
de forma que, ao escrevermos Pr[X = x] estamos nos referindo ` a
probabilidade de que o resultado r do experimento aleat orio seja tal
que X(r) = x.
Seja novamente o experimento do exemplo anterior, onde uma
moeda e lan cada seis vezes consecutivas. Se denimos uma vari a-
vel aleat oria Y como sendo o n umero total de coroas obtidas, es-
crevermos Pr[Y 1] e o mesmo que escrevermos Pr[KKKKKK, i
i
randomizados 2007/4/30 11:48 page 9 #15
i
i
i
i
i
i
[SEC. 1.2: VARI
AVEIS ALEAT
ORIAS E ESPERANCA 9
CKKKKK, KCKKKK, KKCKKK, KKKCKK, KKKKCK,
KKKKKC], donde Pr[Y 1] = 7/64.
Analogamente ` a independencia de eventos, dizemos que duas va-
ri aveis aleat orias X e Y s ao independentes se Pr[X = x, Y = y] =
Pr[X = x]Pr[Y = y] ou, equivalentemente, Pr[X = x[Y = y] =
Pr[X = x].
A fun c ao densidade de probabilidade p : R [0, 1] de uma vari avel
aleat oria X e denida como p
X
(x) = Pr[X = x].
A esperan ca, ou o valor esperado, de uma vari avel aleat oria X
e, intuitivamente, a media dos possveis valores de X ponderados
pelas freq uencias com que X assume cada um daqueles valores. Mais
formalmente,
E[X] =
x
xp
X
(x).
1.2.1 Linearidade da esperan ca
Um conceito absolutamente importante com respeito ` as vari aveis
aleat orias e sua aplica c ao em algoritmos randomizados e o da line-
aridade da esperan ca, que reza que, n ao importando se as vari aveis
aleat orias em quest ao s ao ou n ao independentes, vale
E[h(X
1
, X
2
, . . . , X
n
)] = h(E[X
1
], E[X
2
], . . . , E[X
n
]) ,
para toda fun c ao linear h.
Voltemos, ainda uma vez, ao exemplo dos seis lan camentos da
moeda. Estamos interessados no valor esperado da vari avel aleat oria
Y que representa o total de coroas obtidas. Pela deni c ao de espe-
ran ca, poderamos calcular E[Y ] como
E[Y ] = 1 Pr[Y = 1] + 2 Pr[Y = 2] + + 6 Pr[Y = 6],
onde Pr[Y = y] e dada por
_
6
y
_
2
6
. Pela linearidade da esperan ca,
no entanto, e f acil obter E[Y ] escrevendo primeiramente Y = Y
1
+
Y
2
+ +Y
6
, onde cada Y
i
representa o n umero de coroas obtidas no
i-esimo lan camento da moeda, e, ent ao:
E[Y ] = E
_
6
i=1
Y
i
_
=
6
i=1
E[Y
i
] = 6 1/2 = 3. i
i
randomizados 2007/4/30 11:48 page 10 #16
i
i
i
i
i
i
10 [CAP. 1: RANDOMIZADOS?
Aqui tivemos que calcular explicitamente apenas a esperan ca de Y
i
,
que e 0Pr[Y
i
= 0]+1Pr[Y
i
= 1] = 1/2, supondo honesta a moeda.
1.2.2 Limites de cauda
A esperan ca de uma vari avel aleat oria nos d a a ideia de media e
costuma ser extremamente valioso conhece-la, especialmente se es-
tamos interessados no valor acumulado ap os um n umero grande de
repeti c oes do experimento rand omico. Por exemplo, se a vari avel
aleat oria em quest ao e o tempo de execu c ao X de um algoritmo ran-
domizado, e no mnimo util e talvez indispens avel sabermos
que, ap os um n umero grande k de execu c oes daquele algoritmo, o
tempo total gasto ter a convergido para kE[X].
Entretanto, no caso de estarmos interessados em uma atribui c ao
de valor ` aquela vari avel aleat oria (por exemplo, uma execu c ao parti-
cular do algoritmo), a esperan ca, apenas, n ao nos diz muito a respeito
da densidade de probabilidade daquela vari avel (que e, em ultima
inst ancia, o que nos diria tudo sobre ela).
Na ausencia da express ao exata para a densidade de probabili-
dade, podemos fechar algumas lacunas utilizando limites de cauda
como a desigualdade de Markov, dada a seguir:
Pr[X a]
E[X]
a
, para todo a > 0,
v alida para vari aveis aleat orias X que assumem apenas valores n ao-
negativos.
Na verdade, a desigualdade de Markov e o melhor que podemos
conseguir quando tudo o que conhecemos e a esperan ca da vari avel
aleat oria (e o fato de assumir ela apenas valores n ao-negativos).
Se, alem da esperan ca, conhecermos tambem a vari ancia de uma
vari avel aleat oria X,
Var[X] = E[(X E[X])
2
] = E[X
2
] (E[X])
2
,
podemos estabelecer, a partir da desigualdade de Markov, um limite
mais forte conhecido como desigualdade de Chebyshev:
Pr[[X E[X][ a]
Var[X]
a
2
, para todo a > 0. i
i
randomizados 2007/4/30 11:48 page 11 #17
i
i
i
i
i
i
[SEC. 1.2: VARI
AVEIS ALEAT
ORIAS E ESPERANCA 11
A desigualdade de Chebyshev tambem pode ser escrita como
Pr[[X E[X][ k]
1
k
2
, para todo k > 1,
onde =
_
Var[X] e o desvio padr ao de X, que d a intuitivamente o
qu ao afastados da esperan ca os valores assumidos por X devem estar.
Desigualdades como as de Markov e Chebyshev s ao muito utili-
zadas na an alise de algoritmos probabilsticos e s ao muitas vezes as
respons aveis por prover o grau de conan ca necess ario ` a ado c ao de
estrategias randomizadas em problemas pr aticos.
As desigualdades conhecidas como limites de Cherno podem
ser ainda mais poderosas, ainda que fujam ao escopo deste curso
introdut orio. O leitor pode encontrar maiores informa c oes nas notas
bibliogr acas.
1.2.3 Algumas variaveis aleat orias importantes
Descreveremos agora, para referencia, as vari aveis aleat orias mais
comuns e uteis para nosso tema.
Variavel aleat oria de Bernoulli
A vari avel aleat oria de Bernoulli e comumente usada como indica-
dor da ocorrencia de algum evento, j a que pode assumir apenas dois
valores: 0 (normalmente associado ` a n ao-ocorrencia de determinado
evento) ou 1 (normalmente associado ` a sua ocorrencia).
t
= Pr
_
C
N
,
t
k=1
A
k
S
_
= Pr[C
N
]
t
k=1
Pr
_
_
A
k
S
[C
N
,
k1
j=1
A
j
S
_
_
= Pr[C
N
]
t
k=1
Pr[A
k
S
[C
N
]
= Pr[C
N
]
_
Pr[A
1
S
[C
N
]
_
t
. i
i
randomizados 2007/4/30 11:48 page 20 #26
i
i
i
i
i
i
20 [CAP. 1: RANDOMIZADOS?
Na terceira linha, usamos o fato de que as repeti c oes do algoritmo
s ao todas independentes, de forma que o conhecimento dos resulta-
dos obtidos pelas k 1 execu c oes do algoritmo em nada altera as
probabilidades associadas ` a k-esima execu c ao.
Como Pr[C
N
] 1, temos
t
_
Pr[A
1
S
[C
N
]
_
t
=
t
1
.
Vemos, assim, que a probabilidade de erro decresce exponenci-
almente com o aumento do n umero de repeti c oes independentes do
algoritmo
8
.
Note que calculamos a probabilidade de erro como sendo a pro-
babilidade da conjun c ao dos eventos C
N
e A
k
S
, k = 1, . . . , t. Isto e
possvel pois o algoritmo possui erro unilateral (baseado-no-n ao, nesse
caso), de forma que bastaria uma unica resposta assertiva (com exi-
bi c ao de certicado para o N
~
AO, no caso) para que tivessemos certeza
da resposta correta. S ao necess arias, portanto, para que haja exibi-
c ao de resposta incorreta, t execu c oes distintas e independentes do
algoritmo, cada uma das quais falhando em encontrar um certicado
(para o N
~
AO).
A probabilidade de acerto e, evidentemente, a complementar da
probabilidade de erro, e, portanto, maior ou igual a 1
t
. Se, por
outro lado, opt assemos por calcular diretamente a probabilidade de
acerto como sendo a probabilidade da disjun c ao dos eventos A
k
N
,
precisaramos ou trabalhar com um limite pouco justo usando o limite
da uni ao (vide se c ao 1.1.1) ou obter a probabilidade da disjun c ao de
eventos usando, a duras penas, o princpio da inclus ao-exclus ao (vide,
igualmente, a se c ao 1.1.1).
8
Em alguns casos, como no do algoritmo de Monte Carlo para a verica c ao
da identidade de polin omios, a probabilidade de erro pode ser reduzida simples-
mente alterando-se um par ametro interno do algoritmo. Naquele caso, teria sido
o tamanho do intervalo do qual o inteiro w e sorteado. Se, ao inves de utilizar-
mos um intervalo de tamanho 100d, tivessemos utilizado um de tamanho 1000d,
a probabilidade de erro teria sido menor ou igual a 1/1000, e n ao 1/100. H a,
no entanto, um limite imposto pelas caractersticas da m aquina ou da lingua-
gem utilizada para esse intervalo, como h a sempre um limite para o ajuste do
par ametro interno, qualquer que seja. Alem disso, evidentemente, nem sempre
e inerente ao pr oprio algoritmo um tal par ametro ajust avel como o tamanho
do intervalo, naquele caso. J a o n umero de repeti c oes independentes de um algo-
ritmo e ilimitado, sendo esta sim a maneira usualmente adotada para se reduzir
a probabilidade de erro a nveis t ao baixos quanto se queira. i
i
randomizados 2007/4/30 11:48 page 21 #27
i
i
i
i
i
i
[SEC. 1.3: MONTE CARLO E LAS VEGAS 21
Regra pr atica: calcule sempre a probabilidade global de
erro pela probabilidade da conjun c ao dos erros nas inde-
pendentes execu c oes do algoritmo. A probabilidade global
de acerto e sua complementar.
1.3.2 Las Vegas
Ainda que dele consigamos apenas estimativas probabilsticas, algo-
ritmos randomizados de Las Vegas tem, em geral, tempo de execu c ao
bom o suciente para que seja justicada sua utiliza c ao se e que
apenas o aspecto simplicidade, tantas vezes presente, j a por si s o n ao
a justicaria e nada cam devendo a algoritmos determinsticos
quanto ` a qualidade de sua resposta, que est a sempre correta.
O tempo computacional de um algoritmo de Las Vegas e uma
vari avel aleat oria e, como tal, est a completamente denido por seu
conjunto de momentos. Por n ao ser nosso objetivo abordar temas
de probabilidade e estatstica mais do que o zemos em nossa breve
porem suciente assim o esperamos! revis ao na se c ao 1.1.1,
basta-nos aqui o entendimento de que, sendo uma vari avel aleat oria
cujo comportamento a an alise do algoritmo torna muito bem conhe-
cido, o tempo computacional de um algoritmo de Las Vegas pode ser
e e avaliado em termos de seu valor esperado e talvez vari ancia,
desvio padr ao etc.
Exemplo: busca de elemento em lista com repeti c oes
Suponha que desejamos localizar um algarismo qualquer (digamos,
o 9) numa lista de tamanho n que contem todos os algarismos de 0
a 9 distribudos em iguais quantidades, isto e, 1/10 de suas posi c oes
apresentam o algarismo 0, 1/10 de suas posi c oes apresentam o al-
garismo 1 e assim por diante. Nada se sabe, no entanto, sobre a
localiza c ao dos elementos.
Imagine um algoritmo determinstico para resolver este problema.
Qualquer um. Aqui v ao algumas sugest oes (cada item corresponde a
um algoritmo completo): i
i
randomizados 2007/4/30 11:48 page 22 #28
i
i
i
i
i
i
22 [CAP. 1: RANDOMIZADOS?
1. Examine uma a uma todas as posi c oes da lista, a partir da
primeira, ate encontrar o primeiro 9.
2. Examine uma a uma todas as posi c oes da lista, a partir da
ultima e caminhando de tr as para diante, ate encontrar o pri-
meiro 9.
3. Examine primeiro todas as posi c oes mpares da lista, isto e,
a primeira, depois a terceira, quinta etc., depois (se nenhum
9 tiver ainda sido encontrado, evidentemente) venha voltando
pelas posi c oes pares de tr as para diante.
4. Divida a lista em k sublistas de tamanho n/k cada: os primeiros
n/k elementos ir ao para a primeira sublista, os n/k elementos
seguintes ir ao para a segunda sublista e assim por diante. Exa-
mine agora o primeiro elemento de cada sublista, em seguida o
segundo elemento de cada sublista, em seguida o terceiro etc.
ate encontrar um 9.
Agora vejamos: como se comportar a o primeiro algoritmo se os
elementos da lista que lhe for submetida estiverem dispostos em or-
dem crescente (000 . . . 0111 . . . 1222 . . . 2 . . . 999 . . . 9)?
E evidente que
o algoritmo ter a investigado 9n/10 +1 posi c oes no momento em que
encontrar seu desejado algarismo 9.
E o segundo algoritmo? Como evitar que gaste tambem um tempo
muito longo percorrendo quase toda a lista, caso a entrada esteja
organizada em ordem decrescente? O terceiro algoritmo tambem n ao
se comportar a nada bem caso os algarismos 9 apare cam nas n/10
primeiras posi c oes pares da lista. E tampouco o quarto algoritmo ter a
melhor desempenho se os algarismos 9 ocuparem as ultimas n/10k
posi c oes de cada sublista. . .
Resumindo, qualquer que seja a estrategia adotada, sempre h a
de existir entradas que exigir ao do algoritmo um tempo ruim (li-
near no tamanho da entrada, no nosso exemplo). Dependendo da
aplica c ao e da distribui c ao das inst ancias de entrada por for ca de
algum agente externo, malicioso ou n ao, ou ainda que intermiten-
temente, durante determinados perodos, por exemplo pode ser
que o algoritmo determinstico seja constantemente levado a ter um
desempenho lento. i
i
randomizados 2007/4/30 11:48 page 23 #29
i
i
i
i
i
i
[SEC. 1.3: MONTE CARLO E LAS VEGAS 23
Seja, agora, o algoritmo seguinte:
5. Escolha, aleat oria e uniformemente, uma posi c ao qualquer, das
n possveis. Verique-a. Repita ate encontrar um 9.
N ao, n ao e sequer preciso deixar menos simples o algoritmo adici-
onando algum tipo de controle das posi c oes j a examinadas. Perceba
que, a cada verica c ao, a probabilidade de encontrarmos um 9 e de
1/10. O n umero de verica c oes, portanto, ate que o primeiro 9 seja
encontrado e uma simples vari avel aleat oria geometrica cuja proba-
bilidade de sucesso e 1/10 (vide se c ao 1.2.3). O valor esperado para
o n umero de verica c oes a serem executadas por este algoritmo e,
portanto, igual a 10, independentemente do tamanho da entrada.
Em resumo: como alternativa aos algoritmos determinsticos de
tempo linear (no pior caso), conseguimos um algoritmo de Las Vegas
de tempo esperado constante para todas as entradas
9
.
1.3.3 Certeza ou desempenho?
Como vimos, a certeza da resposta correta dada por um algoritmo
de Las Vegas pode torn a-lo bastante atraente. Ocorre que, mesmo
em se tratando de algoritmos de Las Vegas cujo tempo esperado e
bom, n ao podemos saber ao certo se uma determinada execu c ao do
algoritmo demandar a, talvez, tempo muito maior.
Algoritmos de Monte Carlo, por outro lado, permitem que calcu-
lemos deterministicamente seu tempo assint otico de pior caso, o que
pode ser, em muitos casos, essencial.
Transformando Las Vegas em Monte Carlo
Uma maneira simples de transformarmos um algoritmo de Las Vegas
em um algoritmo de Monte Carlo e: execute o algoritmo de Las
9
ICIOS 29
1.5 Exerccios
1. Considere uma seq uencia de n lan camentos de uma moeda ho-
nesta. Seja H
i
o valor da diferen ca entre o n umero de ca-
ras e o n umero de coroas que foram obtidos nos primeiros i
lan camentos, e seja H = max
i
H
i
. Mostre que E[H
i
] = (
i)
e que E[H] = (
n).
2. Certo exame de sangue pode ser entendido como um algo-
ritmo de Monte Carlo baseado-no-sim que, com probabilidade
p 95%, diagnostica determinada doen ca X caso o dono do
sangue examinado de fato a possua. Uma epidemia de X fez
com que um ter co dos habitantes de uma cidade estivesse com
aquela doen ca, cujo tratamento e, no entanto, muito penoso e
n ao deve ser administrado a pessoas s as. Quantas vezes aquele
exame precisar a ser repetido ate que possa ser avaliada como
desprezvel (menor do que 1%) a chance de que uma pessoa
daquela cidade apresente a doen ca X?
3. Seja o mesmo exame de sangue do exerccio 2. N ao h a epidemia
alguma, desta vez. Um medico experiente, porem, baseado nos
diversos sintomas clnicos apresentados por um paciente seu,
avalia em 80% a probabilidade de que aquele paciente tenha
a doen ca X. O exame que se segue, no entanto, n ao revela a
existencia da doen ca. Como aquele medico deve reavaliar sua
conan ca inicial de que seu paciente e um doente de X?
4. Seja um algoritmo de Monte Carlo de erro bilateral para um
problema da classe PP. Mostre que um n umero polinomial de
repeti c oes independentes do algoritmo podem n ao ser sucien-
tes para reduzir a probabilidade de erro para 1/4. (Considere
a taxa de erro como sendo 1/2 1/2
n
.)
5. Seja t o n umero de verica c oes realizadas pelo algoritmo de
Las Vegas proposto para a busca de elemento em lista com
repeti c oes da se c ao 1.3.2. Use as desigualdades de Markov e
Chebyshev para obter majorantes para a probabilidade de que t
seja: i
i
randomizados 2007/4/30 11:48 page 30 #36
i
i
i
i
i
i
30 [CAP. 1: RANDOMIZADOS?
(a) maior do que uma constante k;
(b) da ordem do tamanho da entrada, ou seja, maior ou igual
a cn, para uma constante c.
1.6 Notas bibliogracas
O livro de Cormen, Leiserson, Rivest e Stein [11] e largamente ado-
tado nos cursos de gradua c ao em estruturas de dados e algoritmos,
e contem n ao s o um bom captulo com as ferramentas de proba-
bilidade para algoritmos randomizados, como tambem se c oes onde
discute aplica c oes como Quick Sort (que ser a visto na se c ao 2.2.1)
e o algoritmo de Rabin para primalidade (discutido na se c ao 3.9).
Uma referencia tambem geral, mais recente, e o livro de Kleinberg e
Tardos [32], que contem um captulo dedicado a algoritmos randomi-
zados.
O livro cl assico para o estudo de algoritmos randomizados e o
de Motwani e Raghavan [41]. Mais recentemente, foi lan cado o livro
de Mitzenmacher e Upfal [39], que consideramos mais indicado para
uma introdu c ao ao assunto e que contem excelente captulo sobre
desigualdades de cauda e limites de Cherno.
Uma introdu c ao em portugues e o livro de Martinhon [35], in-
cluindo uma boa apresenta c ao das classes de complexidade a que
pertencem os problemas que podem ser resolvidos por algoritmos
randomizados, bem como demonstra c oes detalhadas das rela c oes de
pertinencia e igualdade entre as diferentes classes. i
i
randomizados 2007/4/30 11:48 page 31 #37
i
i
i
i
i
i
Captulo 2
Paradigmas
combinat orios e
analise probabilstica
Na solu c ao de problemas combinat orios, em geral, e em particular no
estudo de algoritmos randomizados, e comum nos depararmos com
novas situa c oes, modelos probabilsticos ou experimentos aleat orios
que nos remetem a outros j a vistos ou analisados anteriormente.
Quando estudamos as vari aveis aleat orias, por exemplo, e atenta-
mos ` as distribui c oes probabilsticas mais comuns (Bernoulli, binomial
etc.), o que fazemos e preparar um certo repert orio de paradigmas,
um arcabou co de ferramentas b asicas que ser a, quando propcio, evo-
cado. Evitamos, assim, dispender muito tempo ou energia analisando
ideias b asicas em detrimento do uxo de raciocnio demandado pelo
problema especco que se est a a discutir.
Veremos, agora, alguns paradigmas combinat orios que s ao bas-
tante recorrentes nas an alises de algoritmos randomizados: o modelo
de bolas-e-latas, na se c ao 2.1.1, com a discuss ao do paradoxo do ani-
vers ario; e o paradigma do colecionador de cupons, na se c ao 2.1.2.
A segunda parte deste captulo apresenta, na se c ao 2.2, a an alise
probabilstica de algoritmos, forma interessante de se avaliar a per-
formance media de algoritmos a partir de certas hip oteses a respeito
31 i
i
randomizados 2007/4/30 11:48 page 32 #38
i
i
i
i
i
i
32 [CAP. 2: PARADIGMAS COMBINAT
ORIOS E AN
ALISE PROBABIL
ISTICA
das inst ancias de entrada que s ao a eles submetidas.
2.1 Paradigmas combinat orios
2.1.1 O modelo de bolas-e-latas
Seja a seguinte situa c ao: existem m objetos indisting uveis (bolas),
cada qual a ser associado aleatoriamente a um de n objetos distintos
(latas). Esse cen ario t ao simples, convenientemente chamado modelo
de bolas-e-latas, encontra aplica c ao em um sem-n umero de problemas
reais. A ideia e: cada bola ser a colocada com a mesma probabilidade
1/n em qualquer das latas.
As quest oes que se pretende responder s ao, em geral, do tipo:
quantas latas permanecem vazias?, qual o n umero esperado de latas
com mais do que k bolas?, quantas bolas se deve distribuir ate que
seja mais prov avel haver do que n ao haver alguma lata com mais do
que uma bola?, qual o n umero de bolas na lata mais cheia? etc.
O paradoxo do aniversario
O caso particular em que o n umero de latas e igual a 365 remete-
nos ao famoso paradoxo do anivers ario, que, de paradoxo, n ao tem
nada exceto o fato de serem as probabilidades envolvidas algo
contra-intuitivas para a maioria das pessoas.
H a 23 pessoas num campo de futebol, durante uma partida (onze
jogadores em cada time, mais o juiz). Qual a probabilidade de que
haja duas pessoas quaisquer naquele grupo aniversariando exata-
mente no mesmo dia do ano? Para vericar a contra-intuitividade
da resposta correta, normalmente o proponente do paradoxo n ao
exige o c alculo exato da probabilidade em quest ao, mas apenas uma
estimativa, a que o desprevinido interpelado costuma responder algo
como baixa ou muito baixa. Na verdade, a probabilidade exata
e de 50,72972343%, sendo, portanto, mais prov avel haver do que n ao
haver algum dia do ano com mais de um aniversariante dentre aquelas
23 pessoas
1
.
1
Com menos do que 23 pessoas, a probabilidade de haver anivers arios coinci-
dentes e menor do que 50%. i
i
randomizados 2007/4/30 11:48 page 33 #39
i
i
i
i
i
i
[SEC. 2.1: PARADIGMAS COMBINAT
ORIOS 33
Numa situa c ao mais geral do modelo de bolas-e-latas com n latas
e m bolas, pode-se calcular a probabilidade de n ao haver qualquer
lata com mais do que uma bola raciocinando em cima do seguinte
experimento: sortearemos uma lata, aleat oria e uniformemente, para
colocar cada uma das bolas, uma por vez. Seja A
i
(i = 1, . . . , m) o
evento em que a i-esima bola n ao e colocada numa lata que j a possua
alguma bola. A probabilidade p que buscamos e
p = Pr
_
m
i=1
A
i
_
=
m
i=1
Pr
_
_
A
i
[
j<i
A
j
_
_
.
O valor Pr[A
i
[
j<i
A
j
] e a probabilidade de que a lata escolhida
para a i-esima bola n ao seja uma das latas j a ocupadas, dado que as
i1 bolas anteriores foram posicionadas cada qual numa lata distinta,
sendo portanto igual a 1 (i 1)/n. Substituindo na express ao de p,
temos
p =
m
i=1
_
1
i 1
n
_
=
m
i=1
n i + 1
n
.
A probabilidade de que exista alguma lata com mais do que uma
bola e, evidentemente, 1 p. Resolvendo a equa c ao 1 p = 1/2,
consegue-se chegar, ap os algumas aproxima c oes envolvendo exponen-
ciais, a m
2nln 2 = O(
n).
O paradoxo do anivers ario e apenas uma das situa c oes que se pode
associar ao modelo de bolas-e-latas. O valor crtico m = O(
n) como
limtrofe dos casos em que a probabilidade de colis ao e menor ou
maior do que 1/2 e bem conhecido e aparece, com alguma freq uencia,
em aplica c oes do modelo.
A an alise probabilstica do algoritmo de ordena c ao Bucket Sort
que veremos na se c ao 2.2.3 assume um modelo de bolas-e-latas para
as possveis entradas do problema. O paradigma do colecionador de
cupons, que veremos a seguir, e mais um de seus desdobramentos. i
i
randomizados 2007/4/30 11:48 page 34 #40
i
i
i
i
i
i
34 [CAP. 2: PARADIGMAS COMBINAT
ORIOS E AN
ALISE PROBABIL
ISTICA
2.1.2 O colecionador de cupons
Seja o seguinte experimento: sorteia-se, aleat oria e uniformemente,
um elemento de um conjunto D = d
1
, d
2
, . . . , d
n
de objetos distin-
tos. Faz-se isto repetidamente, gerando uma seq uencia de vari aveis
aleat orias independentes X
1
, X
2
, . . ., cada X
i
indicando o ndice do
elemento obtido no iesimo sorteio.
Costuma-se pensar neste experimento como o de um colecionador
que adquire itens para sua cole c ao aleatoriamente, cada item do uni-
verso de todos os n itens do que seria a cole c ao completa podendo
ser adquirido com a mesma probabilidade 1/n a cada vez. Imagine,
por exemplo, caixas de cereal que trazem, em seu interior, cupons
numerados de 1 a 10, um cupom por caixa.
Dene-se a vari avel aleat oria W
n,k
como sendo o n umero de sor-
teios realizados ate que se tenha obtido k itens distintos, dos n exis-
tentes. Ou seja, o n umero de caixas de cereal que foram compradas
ate que o colecionador tivesse k cupons distintos em sua cole c ao. Em
geral, estamos interessados em E[W
n,k
].
Especial aten c ao e dada ` a vari avel aleat oria W
n,n
, que e o n umero
de caixas que o colecionador precisa comprar ate completar sua cole c ao
com todos os n cupons. Como se ve, o paradigma do colecionador de
cupons n ao e mais do que o modelo de bolas-e-latas com n latas e um
n umero ilimitado de bolas (as caixas s ao as bolas e o cupom existente
na i-esima caixa e a lata que recebe a i-esima bola). Nesse caso, es-
tamos interessados na quantidade de bolas que deve ser distribuda
ate que n ao haja mais latas vazias.
Para i = 1, 2, . . . , n, seja Z
i
a quantidade de caixas de cereal
necess arias ate que o n umero de cupons distintos possudos pelo cole-
cionador aumente de i 1 para i. Ora, quando o colecionador possui
i1 cupons distintos, a probabilidade p
i
de que um cupom, adquirido
aleat oria e uniformemente do universo de todos os n coupons, seja
um dos que ele ainda n ao possui e igual a 1 (i 1)/n. Cada Z
i
e,
portanto, uma vari avel aleat oria geometrica com probabilidade de su-
cesso p
i
, donde a esperan ca de Z
i
(i = 1, . . . , n) e E[Z
i
] = n/(ni+1).
Escrevendo W
n,k
= Z
1
+Z
2
+ +Z
k
, chegamos ao valor esperado
E[W
n,k
] =
k
i=1
n
n i + 1
. i
i
randomizados 2007/4/30 11:48 page 35 #41
i
i
i
i
i
i
[SEC. 2.1: PARADIGMAS COMBINAT
ORIOS 35
Para o importante caso em que k = n, temos
E[W
n,n
] =
n
i=1
n
n i + 1
= n
n
i=1
1
i
.
Lembrando que o n umero harm onico H(n) =
n
k=1
1/k = ln n +c,
para uma constante c, chegamos ao n umero esperado E[W
n,n
] =
nln n+(n) de caixas de cereal compradas ate que todos os n cupons
distintos tenham sido obtidos pelo colecionador.
Exemplo: mapeamento de roteadores
Diversos s ao os problemas que admitem algoritmos randomizados
cuja an alise recai, de alguma forma, no paradigma do colecionador
de cupons: o problema dos casamentos est aveis, o problema do ciclo
hamiltoniano em grafos aleat orios, e muitos outros.
Uma aplica c ao bem simples e aquela em que uma mensagem e
enviada de uma origem (cliente) a um destino (servidor), numa rede
de computadores. A mensageme quebrada em pacotes de informa c ao,
cada qual transmitido atraves de um caminho xo de roteadores (o
mesmo caminho para todos os pacotes). Suponha que o servidor
precise saber quais s ao os roteadores existentes no caminho pelo qual
passou a mensagem que lhe foi enviada pelo cliente (para que, em
caso de erro, por exemplo, possa investigar possveis roteadores que
estejam corrompendo a informa c ao).
Uma maneira simples seria, evidentemente, fazer com que cada
pacote armazenasse, em um campo especco de seu descritor (hea-
der), a seq uencia de roteadores pela qual passou. Ocorre que pode
n ao haver espa co suciente, no descritor de cada pacote, para guardar
a identica c ao de todos os roteadores do caminho percorrido, sem fa-
lar da carga extra e redundante de informa c ao que se faria transmitir
pela rede.
Uma abordagem randomizada seria: cada pacote guardaria a
identica c ao de apenas um dos roteadores pelos quais passasse. A
escolha de qual roteador dever a ter sua identica c ao armazenada no
descritor de um dado pacote deve ser feita aleatoriamente, de forma
uniforme. Ou seja, para cada pacote transmitido, todos os n rote-
adores daquele caminho ter ao a mesma probabilidade 1/n de ser o i
i
randomizados 2007/4/30 11:48 page 36 #42
i
i
i
i
i
i
36 [CAP. 2: PARADIGMAS COMBINAT
ORIOS E AN
ALISE PROBABIL
ISTICA
escolhido para ter sua identica c ao armazenada. Do ponto de vista
do servidor, cada pacote que chega e como uma caixa de cereal con-
tendo com distribui c ao uniforme de probabilidade algum dos
n cupons existentes. O n umero esperado de pacotes que precisam
ser recebidos ate que o servidor tenha tido conhecimento de todos os
roteadores daquele caminho e, como foi visto, nln n + (n).
Resta-nos resolver a quest ao muito pr atica de como fazer para que
um pacote em tr ansito tenha a mesma probabilidade 1/n de armaze-
nar a identica c ao de qualquer um dos n roteadores que encontrar a
pela frente. Pode mesmo ser o caso em que n ao se saiba de antem ao
o n umero de roteadores do caminho em quest ao.
Isto pode ser resolvido usando-se a tecnica conhecida como re-
servoir sampling. Seja um caminho de n roteadores. Consideremos
agora um pacote que come ca a ser transmitido. Quando passar pelo
primeiro roteador, ele armazena a identica c ao daquele roteador com
probabilidade 1. Em seguida, quando passar pelo k-esimo roteador,
decide trocar a identica c ao que est a no momento armazenando pela
identica c ao deste k-esimo roteador com probabilidade 1/k. O que
precisamos mostrar e que, dessa forma, garantimos distribui c ao uni-
forme de probabilidade entre os roteadores
2
, ou seja, mostrar que,
para k = 1, . . . , n, a probabilidade de que o k-esimo roteador seja
aquele cuja identica c ao ser a apresentada por um pacote qualquer
ao servidor e 1/n.
Para que o k-esimo roteador seja o escolhido nal, n ao importa
qual seja o roteador armazenado no descritor do pacote em tr ansito
no momento em que este chega ao k-esimo roteador. Tudo o que
precisa acontecer e que, naquele momento, o pacote opte por trocar
a identica c ao correntemente armazenada pela do k-esimo (o que
ocorre com probabilidade 1/k) e que, chegando em cada roteador
que lhe est a ` a frente no caminho ate o servidor, o pacote opte por
n ao trocar.
Seja T
k
(respectivamente, T
k
) o evento em que opta-se (resp. n ao
se opta) por trocar pela do k-esimo roteador a identica c ao que est a
correntemente armazenada no descritor do pacote no momento em
2
Note que, ainda que n os saibamos que k = 1, . . . , n, por hip otese, o n umero n
de roteadores n ao precisa ser conhecido pelo pacote, j a que apenas k tem algum
papel na decis ao sobre trocar ou n ao o roteador cuja identica c ao est a sendo
armazenada. i
i
randomizados 2007/4/30 11:48 page 37 #43
i
i
i
i
i
i
[SEC. 2.2: AN
ALISE PROBABIL
ISTICA DE ALGORITMOS 37
que este passa pelo k-esimo roteador. O evento F
k
, em que a iden-
tica c ao do k-esimo roteador e a que chega ao servidor por meio de
um dado pacote, corresponde a T
k
T
k+1
T
k+2
. . . T
n
. Para
k = 1, . . . , n, temos
Pr[F
k
] = Pr[T
k
]
n
i=k+1
Pr[T
i
],
pois todas as escolhas s ao independentes. Como
Pr[T
i
] = 1
1
i
=
i 1
i
,
a express ao de Pr[F
k
] ca
Pr[F
k
] =
1
k
k
k + 1
k + 1
k + 2
n 2
n 1
n 1
n
,
e, ap os os cancelamentos de numeradores e denominadores em cas-
cata, chegamos a Pr[F
k
] = 1/n, como queramos demonstrar.
2.2 Analise probabilstica de algoritmos
Ate agora, vimos como a presen ca de escolhas aleat orias faz com
que diferentes execu c oes de um algoritmo para uma mesma entrada
possam levar tempos distintos ou ate mesmo apresentar respostas
distintas. No entanto, vimos tambem como a presen ca dessa mesma
aleatoriedade permite-nos conseguir algoritmos simples e ecientes,
que s ao assim considerados quando a esperan ca da vari avel aleat oria
em que se constitui seu tempo de execu c ao e polinomial no tamanho
da entrada.
Por outro lado, diferentes execu c oes de um algoritmo determins-
tico para uma mesma entrada sempre resultar ao em resposta identica
e ap os exatamente o mesmo n umero de passos. Dessa forma, algorit-
mos determinsticos s ao considerados ecientes quando executam um
n umero polinomial de passos para a pior entrada possvel.
Na pr atica, porem, nem sempre o algoritmo mais adequado e o que
apresenta o melhor tempo para a pior entrada possvel. Pode ser que, i
i
randomizados 2007/4/30 11:48 page 38 #44
i
i
i
i
i
i
38 [CAP. 2: PARADIGMAS COMBINAT
ORIOS E AN
ALISE PROBABIL
ISTICA
Entrada:
S: conjunto de elementos comparaveis.
Sada:
Os elementos de S em ordem crescente.
quickSort(S):
se |S| < 2, retorne S
tome x, o primeiro elemento de S, como piv o
crie duas listas S
1
e S
2
inicialmente vazias
para cada elemento y de S:
se y < x, coloque y em S
1
se y > x, coloque y em S
2
retorne quickSort(S
1
), x, quickSort(S
2
)
Figura 2.1: Algoritmo Quick Sort para ordena c ao.
para entradas tpicas de uma aplica c ao qualquer, algoritmos teorica-
mente menos ecientes tenham desempenho muito melhor! E e jus-
tamente o conhecimento da entrada tpica ou, melhor dizendo,
das freq uencias de ocorrencia (probabilidades) das diferentes entra-
das que permite, em muitos casos, avaliarmos a performance de
algoritmos de forma sensvel a um modelo probabilstico das possveis
entradas para o problema.
E o que chamamos de an alise probabilstica
de algoritmos (randomizados ou determinsticos!), como veremos nos
exemplos que se seguem.
2.2.1 Quick Sort
Diversos algoritmos existem para o famoso problema da ordena c ao.
A entrada, cujos elementos se deseja dispor em ordem, digamos, cres-
cente, e uma seq uencia x
1
, x
2
, . . . , x
n
de elementos compar aveis dois-
a-dois. Podemos considerar, por simplicidade, que os elementos sejam
n umeros e que n ao haja dois n umeros iguais na seq uencia.
Um dos algoritmos mais simples de ordena c ao e o chamado Quick
Sort, cujo pseudo-c odigo encontra-se na gura 2.1.
A ideia e a de escolher arbitrariamente um dos n elementos da
lista (o primeiro, por exemplo) e utiliz a-lo como o piv o de uma i
i
randomizados 2007/4/30 11:48 page 39 #45
i
i
i
i
i
i
[SEC. 2.2: AN
ALISE PROBABIL
ISTICA DE ALGORITMOS 39
estrategia do tipo divis ao-e-conquista. A lista numerica original e
quebrada em duas sub-listas: uma contendo os elementos que s ao
menores do que o piv o, outra contendo aqueles que s ao maiores do
que o piv o. Em seguida, as sub-listas s ao recursivamente submeti-
das ` a mesma estrategia de ordena c ao. O algoritmo retorna, ent ao,
nesta ordem, os elementos j a ordenados da primeira sub-lista, o piv o,
e os elementos j a ordenados da segunda sub-lista. Note que listas
vazias ou unit arias, por j a se encontrarem trivialmente ordenadas,
s ao retornadas imediatamente, n ao dando origem a novas chamadas
recursivas.
Um algoritmo tal como o descrito permite-nos facilmente pensar
numa entrada ruim, ou seja, uma que exija uma grande quantidade de
opera c oes b asicas de compara c ao entre dois n umeros. Imaginemos,
por exemplo, uma entrada j a ordenada na forma x
1
< x
2
< < x
n
.
Como o piv o e escolhido como sendo o primeiro elemento da lista,
a primeira divis ao em sub-listas dar a origem a uma sub-lista vazia
(dos elementos menores que o piv o x
1
) e a uma sub-lista com n 1
elementos (aqueles maiores do que o piv o). Sendo assim, a chamada
recursiva ao Quick Sort para ordenar a sub-lista n ao-vazia constituir a
problema praticamente identico ao original, apenas com um elemento
a menos: o pr oprio piv o. A ordena c ao da lista contendo n1 elemen-
tos, por sua vez, far a com que n 2 compara c oes sejam executadas,
ao termino das quais, novamente, uma sub-lista vazia (dos elementos
menores do que o piv o x
2
) e uma contendo n 2 elementos (maio-
res do que x
2
) ter ao sido obtidas. E assim sucessivamente, ate que
as chamadas recursivas sejam interrompidas no momento em que as
compara c oes contra o (n1)-esimo piv o tenham dado origem a uma
sub-lista com apenas um elemento (alem, e claro, de uma sub-lista
vazia). O n umero total de compara c oes para uma tal entrada
3
seria,
portanto, igual a
(n 1) + (n 2) + + 2 + 1 =
n(n 1)
2
= O(n
2
).
Digamos, agora, que n os saibamos de antem ao que nossa entrada
3
Salientamos que entradas pre-ordenadas n ao s ao as unicas que exigem tempo
quadr atico do algoritmo Quick Sort. Qualquer entrada em que aconte ca de o piv o
ser sistematicamente escolhido de forma a dividir a lista atual, a cada chamada
recursiva, em sub-listas de tamanho muito desequilibrado (uma delas de tamaho
limitado por uma constante, por exemplo), s ao igualmente ruins. i
i
randomizados 2007/4/30 11:48 page 40 #46
i
i
i
i
i
i
40 [CAP. 2: PARADIGMAS COMBINAT
ORIOS E AN
ALISE PROBABIL
ISTICA
tpica n ao e do tipo pre-ordenado, nem foi escolhida por qualquer
forma de advers ario malicioso, mas seja uma seq uencia escolhida
uniforme e aleatoriamente do universo de todas as possveis per-
muta c oes de seus elementos. Qual o comportamento esperado do
Quick Sort, nesse caso? Em outras palavras, qual o n umero medio
de compara c oes que ser ao executadas para entradas dessa natureza?
Seja S = x
1
, x
2
, . . . , x
n
uma inst ancia de entrada para o algoritmo
Quick Sort (obedecendo a nosso hipotetico modelo probabilstico da
entrada) e seja S
= y
1
, y
2
, . . . , y
n
a sada que o algoritmo se disp oe a
apresentar. Ou seja, a seq uencia S
1i<jn
Y
ij
_
_
=
1i<jn
E[Y
ij
],
onde Y
ij
e um indicador de Bernoulli que assume valor 1 quando os
n umeros y
i
e y
j
s ao comparados durante a execu c ao do Quick Sort
para aquela entrada. A segunda igualdade e possvel pela linearidade
da esperan ca.
Uma vez que o valor esperado de uma vari avel aleat oria de Ber-
noulli e igual ` a probabilidade de que ela assuma valor 1, s o o que
precisamos saber e a probabilidade p
ij
de que y
i
e y
j
(i < j) sejam
comparados ao longo da execu c ao do algoritmo. Esta probabilidade
e igual ` a probabilidade de n ao haver, na seq uencia S, qualquer ele-
mento do conjunto y
i+1
, y
i+2
, . . . , y
j2
, y
j1
aparecendo ` a esquerda
de ambos y
i
e y
j
(de forma que algum elemento maior que y
i
e me-
nor que y
j
seria escolhido como piv o antes que y
i
ou y
j
o fossem,
separando-os em sub-listas distintas). Em outras palavras, interessa-
nos a probabilidade de que y
i
ou y
j
seja o elemento mais ` a esquerda,
em S, dentre aqueles do conjunto y
i
, y
i+1
, . . . , y
j1
, y
j
. Como, por
hip otese, a entrada foi escolhida aleat oria e uniformemente de todas
as permuta c oes possveis dos elementos de S
, todos os elementos i
i
randomizados 2007/4/30 11:48 page 41 #47
i
i
i
i
i
i
[SEC. 2.2: AN
ALISE PROBABIL
ISTICA DE ALGORITMOS 41
entre y
i
e y
j
(ambos includos) em S
1i<jn
2
j i + 1
= 1 +
2
3
+
2
4
+ +
2
n 2
+
2
n 1
+
2
n
+1 +
2
3
+
2
4
+ +
2
n 2
+
2
n 1
+1 +
2
3
+
2
4
+ +
2
n 2
+
+1 +
2
3
+1.
Ao re-escrevermos o somat orio original reagrupando as parcelas
iguais (que formam as colunas do desenvolvimento acima), obtemos
E[X] =
n
k=2
(n k + 1)
2
k
= (n + 1)
n
k=2
2
k
2(n 1)
= (2n + 2)
n
k=1
1
k
4n.
Como j a o lembramos na se c ao 2.1.2, H(n) =
n
k=1
1/k = ln n+c,
para uma constante c. Sendo assim, obtemos, nalmente, E[X] =
2nln n +cn = O(nlog n).
Como pudemos ver, portanto, por meio da an alise probabilstica,
o tempo medio do Quick Sort para entradas obtidas do modelo con-
siderado e t ao bom quanto O(nlog n). i
i
randomizados 2007/4/30 11:48 page 42 #48
i
i
i
i
i
i
42 [CAP. 2: PARADIGMAS COMBINAT
ORIOS E AN
ALISE PROBABIL
ISTICA
Entrada:
S: conjunto de elementos comparaveis.
Sada:
Os elementos de S em ordem crescente.
quickSortRandomizado(S):
escolha, aleat oria e uniformemente, uma permuta cao de S
retorne quickSort(S)
Figura 2.2: Algoritmo Quick Sort Randomizado para ordena c ao.
2.2.2 Quick Sort Randomizado
Na an alise que acabamos de ver, estivemos diante de algoritmo perfei-
tamente determinstico. A aleatoriedade do experimento esteve pre-
sente no momento da escolha da entrada do problema, e n ao durante
a execu c ao do algoritmo. H a casos, porem, em que podemos inserir a
aleatoriedade dentro do pr oprio algoritmo, na forma de uma pequena
etapa de pre-processamento. Procedendo assim, a boa performance
do algoritmo deixa de depender de um modelo pre-estabelecido para
as entradas que lhe s ao submetidas, como que for cando-as interna-
mente a conformarem com a distribui c ao probabilstica do modelo
desejado.
Um exemplo muito simples e o do pr oprio algoritmo Quick Sort,
que pode ser facilmente transformado num Quick Sort Randomizado,
como esbo cado na gura 2.2.
Sendo identicas as an alises nos dois casos, pode-se ver que o tempo
esperado do Quick Sort Randomizado para uma entrada qualquer ser a
o mesmo O(nlog n) que tem o Quick Sort determinstico para uma
entrada obtida aleat oria e uniformemente do universo de todas as
permuta c oes de seus elementos
4
.
4
Uma vers ao bem conhecida do Quick Sort Randomizado e aquela em que n ao
h a pre-processamento algum da entrada, mas o piv o e escolhido aleatoriamente,
a cada passo, entre todos os elementos da lista.
E f acil ver que o tempo esperado
das duas vers oes randomizadas do algoritmo e absolutamente o mesmo. i
i
randomizados 2007/4/30 11:48 page 43 #49
i
i
i
i
i
i
[SEC. 2.2: AN
ALISE PROBABIL
ISTICA DE ALGORITMOS 43
A inser c ao do pre-processamento da entrada para trans-
formar algoritmos determinsticos em algoritmos rando-
mizados com bom tempo esperado nem sempre e possvel.
2.2.3 Bucket Sort
Damos agora um segundo exemplo de algoritmo determinstico para
o problema da ordena c ao. O algoritmo e o chamado Bucket Sort, que,
dada uma certa distribui c ao probabilstica das inst ancias de entrada,
roda em tempo linear O(n), quebrando portanto o conhecido limite
inferior O(nlog n) para ordena c oes baseadas em compara c ao.
O modelo probabilstico da entrada que assumimos aqui e aquele
em que uma entrada e formada por n = 2
m
n umeros, que se deseja
ordenar, e cada n umero foi escolhido aleat oria e uniformemente do
intervalo [0, 2
k
[, onde k > m.
O algoritmo Bucket Sort funciona em duas etapas: na primeira,
cada um dos n n umeros que se deseja ordenar e colocado em uma de
n listas, ou buckets. Os buckets s ao rotulados de 0 a n1 em bin ario,
ou seja, 000 . . . 000, 000 . . . 001, 000 . . . 010, 000 . . . 011, . . . ,
111 . . . 111, onde o n umero de dgitos e igual a m. Cada bucket
conter a os elementos da entrada que, se representados como numerais
de k dgitos bin arios, apresentam seus m primeiros dgitos correspon-
dendo ao r otulo de .
Por exemplo, suponha que tenhamos n = 8 n umeros para orde-
nar, escolhidos aleat oria e uniformemente do intervalo [0, 128[, por
exemplo
5
: 126, 7, 2, 39, 70, 91, 120 e 66. Ser ao criados 8 buckets con-
forme indicado abaixo juntamente com os elementos da entrada que
ser ao a cada qual atribudos:
000: 7 (0000111), 2 (0000010)
001: vazio
010: 39 (0100111)
011: vazio
100: 70 (1000110), 66 (1000010)
101: 91 (1011011)
110: vazio
111: 126 (1111110), 120 (1111000)
5
Neste exemplo, m = 3, k = 7. i
i
randomizados 2007/4/30 11:48 page 44 #50
i
i
i
i
i
i
44 [CAP. 2: PARADIGMAS COMBINAT
ORIOS E AN
ALISE PROBABIL
ISTICA
Assumindo que cada elemento pode ser posicionado no seu devido
bucket em tempo constante, a primeira etapa roda em tempo O(n).
Na segunda etapa, cada bucket e ordenado usando, para isso,
qualquer algoritmo de ordena c ao de tempo quadr atico (Quick Sort,
por exemplo). Finalmente, concatena-se as listas correspondentes a
cada um dos buckets j a ordenados, e isto e tudo. Queremos mostrar
que o tempo esperado da segunda etapa e tambem O(n).
Seja X
j
o n umero de elementos da entrada que caem no bucket j.
Dado o modelo probabilstico da entrada que assumimos, cada ele-
mento tem probabilidade identica de pertencer a qualquer um dos n
buckets e, portanto, igual a 1/n. Note o leitor que estamos exata-
mente diante do modelo de bolas-e-latas (vide se c ao 2.1.1), onde os
buckets s ao as latas e os n umeros que se deseja ordenar s ao as bolas.
Sendo assim, X
j
e uma vari avel aleat oria binomial B(n, 1/n).
Para ordenar os X
j
elementos do j-esimo bucket, um algoritmo
de ordena c ao de tempo quadr atico levar a tempo c(X
j
)
2
para alguma
constante c e, dessa forma, o valor esperado para o tempo total X da
segunda etapa do Bucket Sort ser a dado por:
E[X] = E
_
_
n
j=1
c(X
j
)
2
_
_
= cnE[X
2
1
],
onde usamos a linearidade da esperan ca e o fato de que todas as
vari aveis X
j
tem identica distribui c ao de probabilidade.
J a vimos, na se c ao 1.2.3, que, para uma vari avel aleat oria X com
distribui c ao binomial B(n, p), temos E[X
2
] = n(n1)p
2
+np. Como
todas as nossas X
j
e, em particular, X
1
, s ao binomiais B(n, 1/n),
temos E[X
2
1
] = 2 1/n < 2 e, portanto, o tempo esperado de toda a
segunda etapa e no m aximo 2cn.
Conseq uentemente, o algoritmo Bucket Sort roda em tempo linear
O(n) para entradas do modelo probabilstico considerado.
2.3 Exerccios
1. Suponha uniforme a distribui c ao de nascimentos entre os sete
dias da semana. i
i
randomizados 2007/4/30 11:48 page 45 #51
i
i
i
i
i
i
[SEC. 2.3: EXERC
ICIOS 45
(a) Qual o tamanho mnimo de um grupo de pessoas escolhi-
das aleatoriamente para que haja pelo menos duas pessoas,
naquele grupo, nascidas num mesmo dia da semana com
probabilidade p = 1?
(b) Qual o tamanho mnimo de um grupo de pessoas escolhi-
das aleatoriamente para que haja pelo menos duas pessoas,
naquele grupo, nascidas num mesmo dia da semana com
probabilidade p 1/2?
2. Um dado honesto e lan cado repetidamente ate que todos os
seis resultados possveis tenham sido obtidos. Avalie a proba-
bilidade de que o n umero de lan camentos seja maior ou igual a
10.
3. Suponha um sistema de computa c ao distribuda no qual proces-
sos disputem a utiliza c ao de recursos mas desistam, temporari-
amente, em face de conitos com outros processos. O seguinte
modelo de bolas-e-latas em que as bolas s ao os processos e as
latas s ao os recursos em disputa descreve o funcionamento do
sistema: a cada rodada, bolas s ao atiradas independentemente,
e de forma aleat oria e uniforme, nas n latas existentes. Bolas
que, ap os todas terem sido distribudas, estejam localizadas so-
zinhas numa lata ser ao imediatamente atendidas (o recurso e
concedido ao processo que o requisita) e tiradas do conjunto de
bolas sob considera c ao. As demais bolas ser ao distribudas no-
vamente na rodada seguinte. Este procedimento continua ate
que n ao haja mais bolas (isto e, ate que todos os processos
tenham sido atendidos).
(a) Se h a b bolas no incio de uma rodada, qual o n umero
esperado de bolas no incio da rodada seguinte?
(b) Suponha que, a cada rodada, o n umero de processos aten-
didos seja exatamente o valor esperado do n umero de bolas
que n ao compartilham sua lata com nenhuma outra. Mos-
tre que um n umero inicial de n bolas e totalmente servido
em O(log log n) rodadas.
(Dica: se x
j
e o n umero esperado de bolas ap os j rodadas,
demonstre e use o fato de que x
j+1
x
2
j
/n.) i
i
randomizados 2007/4/30 11:48 page 46 #52
i
i
i
i
i
i
46 [CAP. 2: PARADIGMAS COMBINAT
ORIOS E AN
ALISE PROBABIL
ISTICA
Entrada:
Um conjunto S de elementos comparaveis e um inteiro k.
Sada:
O k-esimo elemento de S.
sele cao(S, k):
se |S| = 1, retorne o unico elemento de S
tome x, o primeiro elemento de S, como piv o
crie duas listas S
1
e S
2
inicialmente vazias
para cada elemento y de S:
se y < x, coloque y em S
1
se y > x, coloque y em S
2
se k |S
1
|, retorne sele cao(S
1
, k)
se k 1 = |S
1
|, retorne x
senao retorne sele cao(S
2
, k 1 |S
1
|)
Figura 2.3: Algoritmo para sele c ao do k-esimo elemento.
4. Dados um conjunto S e um inteiro k, denimos o k-esimo ele-
mento de S como o elemento na k-esima posi c ao da lista que
contem os elementos de S em ordem crescente.
E possvel de-
terminar o k-esimo elemento de S em tempo O(nlog n) usando
ordena c ao. Analise o tempo medio do algoritmo da gura 2.3,
que determina o k-esimo elemento sem entretanto ordenar S.
(Considere que S e escolhido aleat oria e uniformemente do uni-
verso de todas as possveis permuta c oes de seus elementos.)
5. Seja x
1
, x
2
, . . . , x
n
uma lista de n n umeros distintos. Dizemos
que x
i
e x
j
est ao invertidos se i < j mas a
i
> a
j
. O algoritmo
de ordena c ao conhecido como Bubble Sort troca a posi c ao de
dois n umeros vizinhos na lista que estejam invertidos, ate que
n ao haja mais vizinhos invertidos quando ent ao a lista estar a
ordenada. Suponha que a entrada do algoritmo Bubble Sort e
uma permuta c ao escolhida aleat oria e uniformemente de todas
as possveis permuta c oes de um conjunto de n n umeros distin-
tos. Determine o n umero esperado de invers oes realizadas pelo
algoritmo para ordenar os elementos daquela entrada. i
i
randomizados 2007/4/30 11:48 page 47 #53
i
i
i
i
i
i
[SEC. 2.4: NOTAS BIBLIOGR
AFICAS 47
2.4 Notas bibliogracas
A lista de aplica c oes do modelo de bolas-e-latas e extensa. Alguns
exemplos recentes o leitor encontrar a nos artigos de Edmonds e Pruhs
[17] e de Strumpen e Krishnamurthy [51]. Uma aplica c ao importante
e o estudo dos grafos aleat orios, em especial aqueles do largamente
utilizado modelo G
n,M
, onde cada possvel grafo com n vertices e
M arestas tem a mesma probabilidade de ser obtido do experimento
aleat orio que os gera
6
. Grafos aleat orios foram denidos por Erd os
e Renyi em 1959 [18], sendo hoje o livro de Bollob as [3] uma das
melhores referencias no tema.
O paradigma do colecionador de cupons e tambem largamente
empregado e aparece em algoritmos randomizados para uma serie de
problemas cl assicos. Bons exemplos s ao o problema dos casamentos
est aveis [24, 28], para o qual o leitor encontra algoritmo de Las Vegas
sendo discutido no livro de Motwani e Raghavan [41], e o problema
da pagina c ao, com um belo algoritmo randomizado proposto por Fiat
et al. [21].
O problema do ciclo hamiltoniano em grafos aleat orios [9, 10] n ao
apenas admite algoritmo randomizado eciente (baseado no paradig-
ma do colecionador de cupons) como e tambem exemplo bastante re-
presentativo da tecnica da an alise probabilstica de algoritmos, como
e apresentado bastante didaticamente por Mitzenmacher e Upfal [39].
Vasta e a literatura sobre algoritmos de ordena c ao (como os algo-
ritmos Quick Sort e Bucket Sort apresentados neste captulo). Uma
boa referencia e o terceiro volume do celebre trabalho de Knuth [33].
Para algoritmos randomizados no tema, publica c ao recente e o artigo
de Dean [16].
6
O modelo G
n,p
e tambem muito conhecido, e e aquele em que grafos aleat orios
de n vertices s ao obtidos adicionando-se cada possvel aresta entre dois de seus
vertices com probabilidade p. i
i
randomizados 2007/4/30 11:48 page 48 #54
i
i
i
i
i
i i
i
randomizados 2007/4/30 11:48 page 49 #55
i
i
i
i
i
i
Captulo 3
Primalidade
O primeiro sistema de criptograa com chave p ublica foi desenvolvido
por Rivest, Shamir e Adleman [48] e e hoje largamente utilizado para
garantir a seguran ca e a privacidade na troca de informa c oes atraves
da rede mundial de computadores. O RSA, assim chamado devido ` as
iniciais de seus criadores, atinge seus objetivos porque e relativamente
f acil encontrar n umeros primos grandes e e praticamente impossvel
fatorar o produto de dois destes n umeros
1
. Neste captulo, apresen-
tamos um algoritmo randomizado, desenvolvido por Rabin [45], que
decide em tempo polinomial se determinado n umero e primo. Este
algoritmo e muito empregado, na pr atica, para a importante tarefa
de se localizar primos grandes.
Em 2002, uma descoberta matem atica foi noticiada na primeira
p agina dos principais jornais do mundo. Agrawal, Kayal e Saxena
obtiveram um algoritmo polinomial, batizado AKS, para decidir a
primalidade de um inteiro [1]. Foge ao escopo deste texto, no en-
tanto, a an alise do determinstico AKS. Alem disso, para todos os ns
pr aticos, o algoritmo randomizado de Rabin lhe e superior. Em pri-
meiro lugar, sua mec anica bem como a matem atica necess aria para
1
Shor [50] desenvolveu um algoritmo qu antico r apido para fatora c ao. Contudo,
para ser executado, o computador qu antico necessitaria de pelo menos tantos q-
bits (bits qu anticos) quanto o n umero de dgitos na base 2 do n umero a ser
fatorado a constru c ao de tal computador est a absolutamente fora de nosso
alcance, na atual fase do conhecimento humano.
49 i
i
randomizados 2007/4/30 11:48 page 50 #56
i
i
i
i
i
i
50 [CAP. 3: PRIMALIDADE
justic a-la e bem menos complexa que a demandada pelo AKS.
Em segundo, o algoritmo de Rabin tem custo O(log
2
n(log log n)
O(1)
),
enquanto o custo do AKS e O(log
6
n(log log n)
O(1)
). Mais uma vez,
portanto, sai-se melhor o algoritmo randomizado em simplicidade e
eciencia.
Veremos, das se c oes 3.1 a 3.8, conte udo matem atico b asico para
o entendimento do algoritmo de Rabin. Na se c ao 3.1, denimos o-
pera c oes de adi c ao e multiplica c ao em Z
n
. O algoritmo de Euclides
para o c alculo do maior divisor comum de dois inteiros e descrito e
analisado na se c ao 3.2. Uma aplica c ao deste algoritmo e encontrada
na se c ao 3.3, ao recordarmos o Teorema Fundamental da Aritmetica.
Na se c ao 3.4, estabelecemos o Pequeno Teorema de Fermat como uma
conseq uencia do Teorema de Euler e estudamos uma de suas varian-
tes, central para a descri c ao do algoritmo de Rabin. Na se c ao 3.5,
abordamos o Teorema Chines do Resto. Na se c ao 3.6, mostramos que
qualquer elemento inversvel de Z
n
e potencia de um elemento xo
quando n e primo ou o quadrado de um primo. Na se c ao 3.7, de-
nimos quando um natural n e pseudoprimo com respeito a uma base
e calculamos a probabilidade disto ocorrer quando n e composto. O
custo das opera c oes aritmeticas usuais e analisado na se c ao 3.8, onde
e tambem apresentado um algoritmo eciente para o c alculo da ex-
ponencia c ao em Z
n
. Finalmente, na se c ao 3.9, introduzimos a perola
deste captulo: o algoritmo randomizado de Rabin para decidir prima-
lidade. A se c ao 3.10 fecha o captulo com uma exposi c ao do algoritmo
RSA para criptograa, pretendendo justicar o enorme interesse que
h a em torno de algoritmos ecientes para encontrar n umeros primos
grandes.
3.1 Aritmetica modular
Dado um n umero natural n, denotamos por [n] o conjunto dos poss-
veis restos de uma divis ao por n, isto e, [n] = 0, 1, 2, . . . , n 1.
Claramente, [n] n ao e fechado com rela c ao ` as opera c oes usuais de
adi c ao e multiplica c ao: quando efetuamos uma destas opera c oes em
dois elementos de [n], o resultado pode n ao estar em [n]. Este pro-
blema pode ser contornado denindo-se novas opera c oes de adi c ao e
multiplica c ao neste conjunto: o resultado destas novas opera c oes ser a i
i
randomizados 2007/4/30 11:48 page 51 #57
i
i
i
i
i
i
[SEC. 3.1: ARITM
ETICA MODULAR 51
o resto da divis ao por n do resultado obtido quando estas opera c oes
s ao realizadas normalmente em Z
n
. Formalmente, para a, b [n],
denimos
a b = res(a +b, n)
a b = res(ab, n),
onde res(x, n) denota o resto da divis ao do inteiro x por n. A aritme-
tica modular estabelece outro enfoque para a deni c ao e a aplica c ao
destas opera c oes, dando origem a demonstra c oes elegantes e elimi-
nando v arios problemas tecnicos.
Para um inteiro a, considere o seguinte subconjunto de Z:
a = b Z : res(a, n) = res(b, n).
Quando b a, temos que a = b, pois a e b deixam o mesmo resto
quando divididos por n. Portanto, dois conjuntos pertencentes a
a : a Z s ao iguais ou disjuntos. Isto e, a : a Z e uma
parti c ao de Z que ser a denotada por Z
n
. Se r for o resto da divis ao
de a por n, ent ao a = r. Conseq uentemente,
Z
n
= 0, 1, 2, . . . , n 1.
Para a ,= b [n], temos que a ,= b. Logo, Z
n
possui exatamente
n elementos. Mais ainda, a fun c ao de [n] em Z
n
que leva a em a e
uma bije c ao entre estes conjuntos. Isto e, os elementos de [n] e Z
n
possuem uma identica c ao natural.
A adi c ao de dois elementos a, b Z
n
, denotada por a + b e re-
sultando em a +b, e bem denida. Isto e, se a = a
e b = b
, temos
a +b = a
+b
, pois
(a +b) (a
+b
) = (a a
) + (b b
)
e divisvel por n uma vez que a a
e b b
o s ao. A adi c ao em
Z
n
possui as propriedades usuais:
Proposi cao 3.1.1. A opera c ao de adi c ao em Z
n
e associativa, co-
mutativa, possui elemento neutro e tem inverso aditivo. i
i
randomizados 2007/4/30 11:48 page 52 #58
i
i
i
i
i
i
52 [CAP. 3: PRIMALIDADE
Demonstra c ao. Observe que 0 e o elemento neutro de Z
n
, pois a+0 =
a + 0 = a, para qualquer inteiro a. Como a + a = a + (a) = 0,
temos que a e o inverso aditivo de a. Por deni c ao, para inteiros
a, b e c, temos:
a+(b+c)=a+b +c=a + (b +c)=(a +b) +c=a +b+c=(a+b)+c,
provando a associatividade. (A terceira igualdade segue da associati-
vidade para a adi c ao nos inteiros.) A comutatividade e mostrada de
maneira similar.
A opera c ao de multiplica c ao em Z
n
e denida de forma an aloga,
isto e, quando a, b Z
n
, o produto de a com b, denotado por ab,
resulta em ab. Esta opera c ao tambem est a bem denida, ou seja,
quando a = a
e b = b
,
ab a
= ab ab
+ab
= a(b b
) +b
(a a
)
e divisvel por n porque bb
e aa
o s ao. Logo, ab = a
. Tambem
de maneira an aloga ` a adi c ao, temos que:
Proposi cao 3.1.2. A opera c ao de multiplica c ao em Z
n
e associativa,
comutativa e possui elemento neutro.
Note que, quando a e b pertencem ao conjunto [n],
a +b = a b e ab = a b.
Isto e, as opera c oes denidas em Z
n
coincidem com as opera c oes
denidas para [n] (quando fazemos a identica c ao natural entre estes
conjuntos).
As proposi c oes 3.1.1 e 3.1.2 estabelecem propriedades naturais
para as opera c oes de adi c ao e multiplica c ao em Z
n
. Contudo, o ines-
perado pode ocorrer quando operamos neste conjunto. Por exemplo,
quando n = 14, temos que
2 7 = 14 = 0.
Isto e, o produto de dois elementos diferentes de 0 pode ser igual a 0.
(Lembre-se que isto tambem ocorre com a multiplica c ao de matrizes.) i
i
randomizados 2007/4/30 11:48 page 53 #59
i
i
i
i
i
i
[SEC. 3.2: MAIOR DIVISOR COMUM 53
Dizemos que a e divisor de zero em Z
n
quando a ,= 0 e existe b em Z
n
tal que b ,= 0 e ab = 0.
Para descrevermos os divisores de zero em Z
n
, precisamos de uma
deni c ao. Sejam a e b inteiros, com a ou b diferente de 0. O maior
divisor comum de a e b, denotado por (a, b), e o maior n umero natural
que divide simultaneamente a e b. Quando (a, b) = 1, dizemos que a
e b s ao relativamente primos (ou primos entre si ).
Se a e um inteiro satisfazendo d = (a, n), ent ao, por deni c ao,
existem inteiros a
e n
tais que a = da
e n = dn
. Portanto,
an
= an
= a
dn
= a
n = 0.
Conseq uentemente, a e divisor de zero quando a ,= 0 e d > 1.
Dizemos que um elemento a de Z
n
e inversvel quando existe
b em Z
n
tal que ab = 1. (Isto e, a possui inverso multiplicativo
e pode-se dividir por a em Z
n
.) Um elemento a n ao pode ser
simultaneamente inversvel e divisor de zero em Z
n
. De fato, caso
a seja inversvel em Z
n
, existe elemento b de Z
n
tal que ab = 1.
Portanto, quando ac = 0 temos:
0 = b0 = b(ac) = (ba)c = 1c = c
e a n ao e divisor de zero em Z
n
.
Na pr oxima se c ao, mostraremos que todo elemento de Z
n
que e
diferente de 0 ou e um divisor de zero ou e inversvel.
Caso a possua um inverso b em Z
n
, este inverso e unico. Su-
ponha que b
, temos
(ab)b
= b
) = b
.
Conseq uentemente b = b
e da b e unico.
3.2 Maior divisor comum
Sejam a e b inteiros tais que a ,= 0 ou b ,= 0. Relembraremos o
algoritmo de Euclides para encontrar o maior divisor comum de a
e b, que foi denotado por (a, b). Como
(a, b) = (b, a) e (a, b) = ([a[, [b[), i
i
randomizados 2007/4/30 11:48 page 54 #60
i
i
i
i
i
i
54 [CAP. 3: PRIMALIDADE
n ao perdemos generalidade ao assumirmos que a b 0. Se b = 0,
ent ao (a, b) = a. Portanto, vamos supor que b ,= 0. Iremos construir
recursivamente duas seq uencias, uma de restos e outra de quocien-
tes, a saber: r
0
, r
1
, . . . , r
k
, r
k+1
e q
1
, . . . , q
k
. Fa ca r
0
= a, r
1
= b e,
enquanto r
i
,= 0, q
i
e r
i+1
s ao respectivamente o quociente e o resto
da divis ao de r
i1
por r
i
. Isto e,
r
i1
= q
i
r
i
+r
i+1
, com 0 r
i+1
< r
i
. (3.1)
Note que r
k+1
= 0. Vamos mostrar que r
k
= (a, b). De (3.1), quando
um inteiro divide dois elementos consecutivos na seq uencia de restos,
divide tambem o elemento anterior e o posterior a estes. Portanto,
todo inteiro que divide dois elementos consecutivos da seq uencia de
restos divide todos os elementos desta seq uencia. Como (a, b) divide
dois elementos consecutivos na seq uencia de restos, r
0
e r
1
, ent ao
(a, b) divide r
k
. De (3.1), para i = k, conclumos que r
k
divide
r
k1
. Conseq uentemente, r
k
divide dois elementos consecutivos da
seq uencia de restos: r
k1
e r
k
. Portanto, r
k
divide todos os elementos
da seq uencia de restos, em particular a e b. Por deni c ao do maior
divisor comum, r
k
(a, b). Logo, r
k
= (a, b), pois (a, b) divide r
k
.
Queremos encontrar um majorante para k, isto e, um limite supe-
rior para o n umero de divis oes realizadas pelo algoritmo de Euclides
para o c alculo do maior divisor comum. De (3.1), temos que
r
0
r
1
> r
2
> r
3
> > r
k
> 0. (3.2)
De (3.1) e (3.2), pois, segue-se que
q
i
1 para todo i 1, 2, 3, . . . , k. (3.3)
Substituindo (3.3) em (3.1), obtemos que, quando i 1, 2, 3, . . . , k,
r
i1
= q
i
r
i
+r
i+1
r
i
+r
i+1
> 2r
i+1
,
onde a ultima desigualdade segue de (3.2). Portanto, a seq uencia
r
0
, r
2
, r
4
, r
6
, . . . , r
2l
formada por todos os restos n ao-nulos tendo como ndice um inteiro
par satisfaz a seguinte propriedade: ao percorrermos a seq uencia da i
i
randomizados 2007/4/30 11:48 page 55 #61
i
i
i
i
i
i
[SEC. 3.2: MAIOR DIVISOR COMUM 55
direita para a esquerda, um elemento ser a sempre maior que o dobro
de seu antecessor. Logo
a = r
0
> 2r
2
> 2
2
r
4
> 2
3
r
6
> > 2
l1
r
2(l1)
> 2
l
r
2l
.
Em particular,
log a > l + log r
2l
l.
(Ao longo deste captulo, utilizamos log a para denotar o logaritmo
de a na base 2.) Como 2l k 1, k, obtemos o seguinte limite
superior para o n umero k de divis oes realizadas pelo algoritmo de
Euclides para o c alculo do maior divisor comum:
k 1 + 2l 1 + 2 log a.
Se, em (3.1), a divis ao fosse realizada de forma que o resto r
i+1
satisfa ca
[r
i
[
2
< r
i+1
[r
i
[
2
,
necessitaramos no m aximo log a divis oes para encontrar o maior di-
visor comum, tornando o algoritmo de Euclides mais eciente. (Neste
caso, os restos poderiam assumir tambem valores negativos.)
Dizemos que um inteiro x e combina c ao dos inteiros y e z quando
existem inteiros e tais que x = y + z. Observe que x e com-
bina c ao de y e z se e somente se [x[ e combina c ao de [y[ e [z[.
Teorema 3.2.1. Se a e b s ao inteiros tais que a ,= 0 ou b ,= 0, ent ao
(a, b) e combina c ao de a e b.
Demonstra c ao. Sem perda de generalidade, podemos assumir que
a b 0. Estabeleceremos um resultado mais forte: (a, b) e com-
bina c ao de quaisquer dois elementos consecutivos da seq uencia de
restos. Utilizando recurs ao, este resultado segue dos seguintes fatos:
(i) (a, b) e combina c ao dos dois ultimos elementos da seq uencia de
restos; e
(ii) para quaisquer tres elementos consecutivos da seq uencia dos
restos, se (a, b) e combina c ao dos dois ultimos, ent ao tambem e
combina c ao dos dois primeiros. i
i
randomizados 2007/4/30 11:48 page 56 #62
i
i
i
i
i
i
56 [CAP. 3: PRIMALIDADE
Comprovamos (i) facilmente, pois (a, b) = r
k
= r
k
+ r
k+1
, onde
(, ) e igual a (1, 0). Para mostrar (ii), suponha que r
i1
, r
i
, r
i+1
sejam os tres elementos consecutivos da seq uencia de restos, para
algum natural i. Por hip otese, (a, b) e combina c ao de r
i
e r
i+1
, isto
e, existem inteiros e tais que (a, b) = r
i
+r
i+1
. De (3.1), temos
que r
i+1
= r
i1
q
i
r
i
. Portanto,
(a, b) = r
i
+r
i+1
= r
i
+(r
i1
q
i
r
i
) = r
i1
+ ( q
i
)r
i
e (a, b) e combina c ao de r
i1
e r
i
. Conseq uentemente, (ii) segue.
Observe que na demonstra c ao do resultado anterior est a implcito
um algoritmo para encontrar tal combina c ao linear. Este algoritmo,
conhecido como algoritmo euclidiano estendido, possui k etapas e, em
cada uma delas, e realizada uma subtra c ao e uma multiplica c ao.
Seja n um n umero natural. Se a e um elemento de Z
n
e a ,= 0,
ent ao:
(i) (a, n) ,= 1 e a e um divisor de zero de Z
n
; ou
(ii) (a, n) = 1 e a e inversvel em Z
n
.
J a estabelecemos (i) na se c ao anterior. Vamos mostrar (ii). Pelo
teorema 3.2.1, existem inteiros e tais que 1 = (a, n) = a + n.
Portanto,
1 = a +n = a + n = a + 0 = a
e da a e inversvel.
O conjunto de todos os elementos inversveis de Z
n
ser a denotado
por Z
n
. Este conjunto e fechado com rela c ao ` a opera c ao de mul-
tiplica c ao e ter a papel central na compreens ao dos algoritmos para
decidir a primalidade de um n umero. A cardinalidade de Z
n
ser a
denotada por (n). (Esta fun c ao e conhecida como a fun c ao de
Euler.) Note que
(n) = [a [n] : (a, n) = 1[.
Em particular, quando p e um n umero primo e m um inteiro positivo,
(p
m
) = p
m
p
m1
. Mais ainda, quando m = 1, Z
p
= Z
p
0. i
i
randomizados 2007/4/30 11:48 page 57 #63
i
i
i
i
i
i
[SEC. 3.3: TEOREMA FUNDAMENTAL DA ARITM
ETICA 57
3.3 Teorema Fundamental da Aritmetica
Nesta se c ao, recapitulamos o cl assico Teorema Fundamental da Arit-
metica, um dos primeiros fatos matem aticos apresentados aos estu-
dantes no ensino fundamental.
Um inteiro maior que 1 e dito primo quando n ao e o produto de
dois inteiros positivos menores. O resultado seguinte e o n ucleo da
demonstra c ao do Teorema Fundamental da Aritmetica.
Lema 3.3.1. Se um primo divide um produto de inteiros, ent ao di-
vide um de seus fatores.
Demonstra c ao. Seja p um n umero primo. Suponhamos que p divida
o produto ab de dois n umeros a, b Z. Se p divide a, ent ao o resul-
tado segue. Assumamos, portanto, que p n ao divide a. Observe que
(a, p) = 1, pois (a, p) e um divisor pr oprio de p. Pelo teorema 3.2.1,
existem inteiros e tais que
1 = a +p.
Multiplicando-se esta igualdade por b, obtemos
b = ab +pb. (3.4)
Como p divide ab e pb, temos que p divide o lado direito de (3.4).
Portanto, p divide b e o lema vale para o produto de dois inteiros.
Suponhamos, agora, que p divide o produto de n inteiros, digamos
a
1
, a
2
, . . . , a
n
. Pelo que acabamos de estabelecer,
(i) p divide a
1
; ou
(ii) p divide o produto dos outros n1 inteiros, que s ao a
2
, . . . , a
n
.
Podemos repetir este processo e, ao nal, encontramos um a
i
que e
divisvel por p.
Estamos prontos para demonstrar o Teorema Fundamental da A-
ritmetica. Vamos assumir que o produto dos elementos pertencentes
ao conjunto vazio e 1 e que o produto dos elementos pertencentes a
um conjunto unit ario e o seu elemento. i
i
randomizados 2007/4/30 11:48 page 58 #64
i
i
i
i
i
i
58 [CAP. 3: PRIMALIDADE
Teorema 3.3.2. Todo inteiro positivo decomp oe-se de maneira unica,
a menos da ordem dos fatores, como o produto de n umeros primos.
Demonstra c ao. Seja n um inteiro positivo. Como o resultado vale
quando n e 1 ou primo, necessitamos demonstr a-lo apenas quando
n e composto. Primeiro, mostraremos que n decomp oe-se como o
produto de n umeros primos. Escolha uma seq uencia a
1
, a
2
, . . . , a
k
de
inteiros maiores que 1, tal que
n = a
1
a
2
a
k
e o tamanho da seq uencia seja o maior possvel. (Note que as seq uen-
cias a
1
, a
2
, . . . , a
k
cujo produto e igual a n tem comprimento limitado
por log n porque n = a
1
a
2
. . . a
k
2
k
. Portanto, faz sentido escolher-
mos uma de tamanho m aximo.) Observe que, para todo i, a
i
e primo;
do contr ario a
i
seria o produto de dois inteiros positivos menores e, ao
substituirmos, na seq uencia, a
i
por aqueles dois inteiros, obteramos
uma seq uencia de tamanho maior, o que e uma contradi c ao.
Agora, estabeleceremos a unicidade da decomposi c ao. Sejam
a
1
, a
2
, . . . , a
k
e b
1
, b
2
, . . . , b
l
seq uencias de n umeros primos tais que
n = a
1
a
2
a
k
= b
1
b
2
b
l
.
Sem perda de generalidade, podemos supor que k l. Pelo lema 3.3.1,
a
1
divide b
i
, para algum i. Como b
i
e primo, temos que a
1
= b
i
. Po-
demos reordenar os elementos na seq uencia b
1
, b
2
, . . . , b
l
e supor que
i = 1. Logo,
n
a
1
= a
2
a
k
= b
2
b
l
.
Repetindo este processo, podemos reordenar os elementos da segunda
seq uencia, de forma que a
2
= b
2
, . . . , a
k
= b
k
. Portanto,
n
a
1
a
2
a
k
= 1 = b
k+1
b
l
.
Como, necessariamente, k = l, essas decomposi c oes de n s ao identicas,
a menos da ordem dos fatores. i
i
randomizados 2007/4/30 11:48 page 59 #65
i
i
i
i
i
i
[SEC. 3.4: O PEQUENO TEOREMA DE FERMAT 59
3.4 O Pequeno Teorema de Fermat
Seja n um inteiro positivo. Para um elemento a de Z
n
, considere
todas as suas potencias:
1 = a
0
, a
1
, a
2
, a
3
, . . . , a
k
, . . . .
Como todas estas potencias pertencem ao conjunto nito Z
n
, existem
inteiros i e j tais que i < j e a
i
= a
j
. Escolha i e j de forma que j
seja o menor possvel. Se b e o inverso multiplicativo de a, ent ao
1 = 1
i
= (ab)
i
= a
i
b
i
= a
j
b
i
= a
ji
(ab)
i
= a
ji
.
Pela escolha de i e j, temos que i = 0. Dizemos que j e a ordem de a
em Z
n
. Note que
a
1
, a
2
, a
3
, . . . , a
j
= 1
s ao todas as potencias de a em Z
n
. A seguir apresentamos o Teorema
de Lagrange.
Teorema 3.4.1. Seja a um elemento de Z
n
de ordem j. Se a
k
= 1,
ent ao j divide k.
Demonstra c ao. Pelo algoritmo da divis ao, existem inteiros q e r tais
que k = qj +r e 0 r < j. Conseq uentemente,
1 = a
k
= a
qj+r
= (a
j
)
q
a
r
= 1
q
a
r
= a
r
.
Como j e o menor inteiro positivo tal que a
j
= 1, tem-se que r = 0.
Logo j divide k.
Lema 3.4.2. Seja a um elemento de Z
n
de ordem j. Se i [j],
ent ao a ordem de a
i
e igual a
j
(i,j)
.
Demonstra c ao. Existem inteiros i
e j
e j =
(i, j)j
. Note que
(a
i
)
j
= a
ij
= a
(i,j)i
= a
i
j
= (a
j
)
i
= 1
i
= 1.
Se k e a ordem de a
i
, ent ao, pelo teorema 3.4.1, k divide j
=
j
(i,j)
.
Por deni c ao, 1 = (a
i
)
k
= a
ik
. Pelo teorema 3.4.1, j divide
ik. Portanto, j
divide i
k. Como (i
, j
) = 1, tem-se que j
divide k.
Mas, pelo par agrafo anterior, k divide j
e da k = j
, como queramos
mostrar. i
i
randomizados 2007/4/30 11:48 page 60 #66
i
i
i
i
i
i
60 [CAP. 3: PRIMALIDADE
O pr oximo resultado foi descoberto por Euler e descreve as pos-
sveis ordens dos elementos de Z
n
.
Teorema 3.4.3. A ordem de um elemento a de Z
n
divide (n).
Demonstra c ao. A fun c ao f : Z
n
Z
n
dada por f(X) = aX e inje-
tiva porque a e inversvel. Como Z
n
e nito, f tambem e sobrejetiva.
Isto e, f induz uma permuta c ao dos elementos de Z
n
. Portanto,
XZ
n
X =
XZ
n
f(X) =
XZ
n
(aX) =
XZ
n
a
XZ
n
X = a
(n)
XZ
n
X.
Logo, a
(n)
= 1. Pelo teorema 3.4.1, a ordem de a divide (n).
A inst ancia particular do teorema anterior em que n e primo foi
obtida por Fermat. Neste caso Z
n
= a : a [n]
e (n) = n 1,
onde, para um inteiro positivo m, [m]
= a [m] : a ,= 0 =
1, . . . , m1. Conseq uentemente,
Teorema 3.4.4. Se a [n]
e n e primo, ent ao a
n1
= 1.
Este resultado inspira um possvel algoritmo para decidir a prima-
lidade de n. Repita algumas vezes o seguinte procedimento: escolha
aleatoriamente a [n]
e n e primo,
ent ao:
(i) a
m
= 1; ou
(ii) a
2
i
m
= 1, para algum inteiro i tal que 0 i r 1.
Demonstra c ao. Suponha que (i) n ao ocorre. Escolha o maior inteiro i
tal que 0 i r e a
2
i
m
,= 1. Pelo teorema 3.4.4, i < r. Portanto,
a
2
i+1
m
= 1. Logo a
2
i
m
e uma raiz do polin omio p(X) = X
2
1. Pelo
lema 3.4.5, p(X) possui duas razes que necessariamente s ao 1 e 1.
Pela escolha de i, a
2
i
m
= 1. Temos (ii).
Na se c ao 3.7, mostraremos que a probabilidade de a [n]
sa-
tisfazer (i) ou (ii) do teorema anterior, no caso em que n e mpar e
composto, e inferior a
1
4
. i
i
randomizados 2007/4/30 11:48 page 62 #68
i
i
i
i
i
i
62 [CAP. 3: PRIMALIDADE
3.5 Teorema Chines do Resto
O pr oximo resultado e conhecido como o Teorema Chines do Resto
e, surpreendentemente, era utilizado para determinar o tamanho de
tropas militares.
Teorema 3.5.1. Sejam m
1
, m
2
, . . . , m
k
inteiros tais que (m
i
, m
j
) =
1 para qualquer 2-subconjunto i, j de 1, 2, . . . , k. Se 0 r
i
< m
i
,
para todo i 1, 2 . . . , k, ent ao existe um unico a [m
1
m
2
. . . m
k
]
tal que r
i
= res(a, m
i
), para todo i 1, 2 . . . , k.
Ressaltamos que, embutido na demonstra c ao deste teorema,
encontra-se um algoritmo para efetivamente encontrar o valor de a.
Demonstra c ao. Inicialmente trataremos o caso em que k = 2. Ob-
serve que
a [m
1
m
2
] : r
1
= res(a, m
1
) = qm
1
+r
1
: q [m
2
].
Desejamos encontrar todos os elementos a pertencentes a este con-
junto tais que
r
2
= res(a, m
2
).
Isto e, desejamos encontrar todos os q [m
2
] tais que
r
2
= qm
1
+r
1
em Z
m
2
.
Esta identidade pode ser reescrita como
qm
1
= r
2
r
1
em Z
m
2
.
Como (m
1
, m
2
) = 1, temos que m
1
possui um inverso multiplicativo
em Z
m
2
, digamos m. (Este inverso pode ser calculado utilizando-se
o algoritmo que est a implcito na demonstra c ao do teorema 3.2.1.)
Logo,
q = m(r
2
r
1
) em Z
m
2
.
Conseq uentemente, q existe e e unico. O mesmo ocorre com q porque
q [m
2
]. Logo o resultado vale quando k = 2. i
i
randomizados 2007/4/30 11:48 page 63 #69
i
i
i
i
i
i
[SEC. 3.5: TEOREMA CHIN
ES DO RESTO 63
Vamos construir recursivamente uma seq uencia a
1
, a
2
, . . . , a
k
tal
que, para todo l 1, 2, . . . , k,
a
l
_
l
i=1
m
i
_
e r
i
= res(a
l
, m
i
), i = 1, 2, . . . , l. (3.5)
Mais ainda, mostraremos que esta seq uencia e unica. Suponha que
a
j
j a foi determinado. (Note que a
1
= r
1
.) Descreveremos, agora,
como obter a
j+1
a partir de a
j
. Como m
i
e relativamente primo
com m
j+1
, para todo i 1, . . . , j, ent ao, pelo Teorema Fundamen-
tal da Aritmetica,
j
i=1
m
i
= m
1
m
j
e relativamente primo com
m
j+1
. Aplicando o resultado do par agrafo anterior, existe um unico
elemento a
j+1
de [m
1
m
j
m
j+1
] tal que
a
j
= res(a
j+1
, m
1
m
j
) e r
j+1
= res(a
j+1
, m
j+1
). (3.6)
Por (3.5) para l = j e (3.6), conclumos que (3.5) vale tambem para
l = j + 1. Isto e, a
j+1
satisfaz as propriedades desejadas. Observe
que a
j+1
e o unico elemento de [m
1
m
j
m
j+1
] satisfazendo (3.6) e,
portanto, ser a unico, j a que a
j
o e.
Usaremos uma outra abordagem, que n ao e algortmica, para
estabelecer o Teorema Chines do Resto. Sejam m
1
, m
2
. . . , m
k
in-
teiros positivos tais que (m
i
, m
j
) = 1 para qualquer 2-subconjunto
i, j de 1, 2, . . . , k. Denote o produto destes inteiros por n, isto e,
n = m
1
m
k
. Considere a fun c ao : Z
n
Z
m
1
Z
m
2
Z
m
k
dada por (a) = (a, a, . . . , a), para um inteiro a. (Apesar de a re-
presentar conjuntos diferentes nesta identidade, nossa nota c ao n ao
gerar a confus ao, j a que est a implcito qual conjunto estamos consi-
derando em cada ocorrencia de a. Na primeira, a denota o conjunto
de inteiros que tem o mesmo resto que a quando divididos por n;
na segunda quando divididos por m
1
; na terceira quando divididos
por m
2
; e na ultima quando divididos por m
k
.)
Mostraremos simultaneamente que est a bem denida e e inje-
tiva. Estas propriedades seguem das seguintes equivalencias para os
inteiros a e a
:
(i) a = a
em Z
n
;
(ii) n divide a a
; i
i
randomizados 2007/4/30 11:48 page 64 #70
i
i
i
i
i
i
64 [CAP. 3: PRIMALIDADE
(iii) para todo i 1, 2, . . . , k, m
i
divide a a
;
(iv) para todo i 1, 2, . . . , k, a = a
em Z
m
i
;
(v) (a) = (a
).
(Para estabelecer que (ii) e (iii) s ao equivalentes e necess ario utilizar
o Teorema Fundamental da Aritmetica.) Como
[Z
n
[ = [Z
m
1
Z
m
2
Z
m
k
[
e e injetiva, temos que:
Proposi cao 3.5.2. A fun c ao e bijetiva.
Como conseq uencia deste resultado obtemos o Teorema Chines do
Resto.
Utilizaremos a fun c ao para obter uma propriedade fundamental
da fun c ao de Euler: multiplicatividade. Isto e,
(n) = (m
1
)(m
2
) (m
k
). (3.7)
Como (m) = [Z
m
[, para um inteiro m positivo, a equa c ao (3.7)
segue de:
[Z
n
[ = [Z
m
1
Z
m
2
Z
m
k
[. (3.8)
Observe que (3.8) e uma conseq uencia imediata da proposi c ao 3.5.2
juntamente com o pr oximo resultado:
Lema 3.5.3. a Z
n
se somente se (a) Z
m
1
Z
m
2
Z
m
k
.
Demonstra c ao. Observe que as seguintes arma c oes s ao equivalentes:
(i) a Z
n
;
(ii) (a, n) = 1;
(iii) para todo i 1, 2, . . . , k, (a, m
i
) = 1;
(iv) para todo i 1, 2, . . . , k, a Z
m
i
.
A equivalencia entre (ii) e (iii) e estabelecida pelo Teorema Funda-
mental da Aritmetica. i
i
randomizados 2007/4/30 11:48 page 65 #71
i
i
i
i
i
i
[SEC. 3.6: GERADORES PARA Z
N
65
3.6 Geradores para Z
n
Seja n um n umero natural. Um elemento a de Z
n
e dito um gerador
para Z
n
quando todo elemento de Z
n
e uma potencia de a. Neste
caso,
Z
n
= a
j
: j N.
Se a ordem de a e d, ent ao,
Z
n
= 1, a, a
2
, . . . , a
d1
.
Em particular, d = (n). Nesta se c ao, mostraremos que, quando n e
primo ou o quadrado de um primo, ent ao Z
n
possui um gerador. Pri-
meiro contaremos o n umero de elementos que possuem determinada
ordem em Z
n
, quando n e primo.
Lema 3.6.1. Suponha que n e primo. Se d e um inteiro positivo,
ent ao Z
n
possui 0 ou (d) elementos de ordem d.
Demonstra c ao. Considere o polin omio com coecientes em Z
n
:
p(X) = X
d
1.
Observe que todo elemento de Z
n
que tem ordem d e raiz de p(X).
Portanto, para determinarmos o n umero de elementos de Z
n
que
possuem ordem d, vamos listar todas as razes de p(X) e decidir
quais s ao aquelas que possuem ordem d.
Se Z
n
n ao tem elemento de ordem d, ent ao o resultado segue.
Assuma que Z
n
tenha algum elemento de ordem d. Seja a um destes
elementos. Na se c ao 3, mostramos que
a, a
2
, . . . , a
d1
, a
d
= 1
s ao dois a dois distintos. Vamos mostrar que cada um destes elemen-
tos e raiz de p(X). De fato,
p(a
j
) = (a
j
)
d
1 = (a
d
)
j
1 = (1)
j
1 = 1 1 = 0.
Pelo lema 3.4.5, p(X) possui no m aximo d razes em Z
n
. Portanto,
1, a, a
2
, . . . , a
d1 i
i
randomizados 2007/4/30 11:48 page 66 #72
i
i
i
i
i
i
66 [CAP. 3: PRIMALIDADE
s ao todas as razes de p(X). Pelo lema 3.4.2, para i [d], a
i
tem
ordem d se e somente se (i, d) = 1. Conseq uentemente, p(X) possui
exatamente (d) razes com ordem d. Isto e, Z
n
possui (d) elementos
com ordem d.
Utilizaremos a nota c ao a[b com o seguinte signicado: a e b s ao
inteiros positivos e a divide b.
Lema 3.6.2. Suponha que n e primo. Se d e um inteiro positivo que
divide n 1, ent ao Z
n
possui (d) elementos de ordem d.
Demonstra c ao. Para cada inteiro positivo d, seja
d
o conjunto de
elementos de Z
n
que possuem ordem d. Desejamos estabelecer que
[
d
[ = (d). Observe que
d
: d Z e d > 0
e uma parti c ao de Z
n
. Pelo teorema 3.4.3,
d
= quando d n ao
divide (n) = n 1. Conseq uentemente,
d
: d[n 1
e uma parti c ao de Z
n
. Portanto,
n 1 =
d|n1
[
d
[.
Pelo lema 3.6.1, [
d
[ 0, (d). Em particular,
[
d
[ (d), quando d[n 1. (3.9)
Portanto,
n 1 =
d|n1
[
d
[
d|n1
(d) = n 1, (3.10)
onde a ultima igualdade segue de (3.11), que ser a estabelecida a se-
guir. Temos, dessa forma, a igualdade em (3.10). Portanto, a igual-
dade tem que ocorrer em (3.9), para todo d[n1. Isto e, [
d
[ = (d),
para todo d[n 1. i
i
randomizados 2007/4/30 11:48 page 67 #73
i
i
i
i
i
i
[SEC. 3.6: GERADORES PARA Z
N
67
Na demonstra c ao do lema anterior, necessitamos da seguinte iden-
tidade:
d|m
(d) = m. (3.11)
Para d[m, seja
d
= a [m] : (a, m) = d. Observe que
d
: d[m
e uma parti c ao de [m]. Conseq uentemente,
d|m
[
d
[ = m. (3.12)
Pelo Teorema Fundamental da Aritmetica,
d
=
_
ad : a
_
m
d
_
e
_
a,
m
d
_
= 1
_
e da
[
d
[ =
_
m
d
_
.
Substituindo a ultima identidade em (3.12), obtemos
d|m
_
m
d
_
= m. (3.13)
Quando d percorre todos os divisores positivos de m, ent ao
m
d
tambem
percorre todos os divisores positivos de m. Logo,
d|m
_
m
d
_
=
d|m
(d). (3.14)
Note que (3.11) e uma conseq uencia de (3.13) e (3.14).
Uma conseq uencia imediata do resultado anterior ser a a pr oxima
proposi c ao, fundamental para estabelecermos a probabilidade de erro
do algoritmo para decidir primalidade.
Proposi cao 3.6.3. Se n e primo, ent ao Z
n
possui um gerador.
Demonstra c ao. Um elemento de Z
n
e gerador quando sua ordem e
(n) = n1. Pelo lema 3.6.2, Z
n
possui (n1) elementos de ordem
n 1. O resultado segue pois (n 1) ,= 0.
Proposi cao 3.6.4. Se n e primo, ent ao Z
n
2
possui um gerador. i
i
randomizados 2007/4/30 11:48 page 68 #74
i
i
i
i
i
i
68 [CAP. 3: PRIMALIDADE
Demonstra c ao. Um elemento de Z
n
2
e gerador quando sua ordem e
(n
2
) = n
2
n = n(n 1). Pela proposi c ao 3.6.3, existe a [n] tal
que a gera Z
n
. Seja d a ordem de a em Z
n
2
. Por deni c ao, em Z
n
2
,
a
d
= 1.
Em outras palavras, n
2
divide a
d
1. Conseq uentemente, n divide
a
d
1. Ou seja, em Z
n
,
a
d
= 1.
Pelo teorema 3.4.1, a ordem de a em Z
n
divide d. Isto e, n1 divide
d. Pelo teorema 3.4.3, d divide (n
2
) = n(n 1). Como n e primo,
d n 1, n(n 1). Se d = n(n 1), ent ao o resultado segue.
Podemos assumir que d = n 1. Em particular,
a
n1
= 1 (3.15)
em Z
n
2
. De maneira an aloga, temos que a ordem de n +a em Z
n
2
e
igual a n 1 ou n(n 1). Se a ordem for n(n 1), ent ao o resultado
segue. Podemos assumir que a ordem e n 1 e da
(n +a)
n1
= 1 (3.16)
em Z
n
2
. Pelo bin omio de Newton, existe inteiro c, que depende de a
e n, tal que
(n+a)
n1
= cn
2
+(n1)na
n2
+a
n1
= (c+a
n2
)n
2
na
n2
+a
n1
.
(Coloque em evidencia n
2
nos termos do bin omio cujo expoente de n
e pelo menos 2.) Em Z
n
2
, esta igualdade torna-se
(n +a)
n1
= (c +a
n2
)n
2
na
n2
+a
n1
= na
n2
+a
n1
.
Substituindo (3.15) e (3.16) na identidade acima, temos
1 = na
n2
+ 1.
Portanto, em Z
n
2
, na
n2
= 0. Isto e, n
2
divide na
n2
. Como n e
primo, n divide a; uma contradi c ao j a que a e um gerador para Z
n
. i
i
randomizados 2007/4/30 11:48 page 69 #75
i
i
i
i
i
i
[SEC. 3.7: PSEUDOPRIMOS 69
3.7 Pseudoprimos
Seja n um inteiro positivo mpar. Existem inteiros positivos r e m
tais que m e mpar e n 1 = 2
r
m. Para a [n]
, dizemos que n e
pseudoprimo com respeito ` a base a quando:
(i) a
m
= 1; ou
(ii) a
2
i
m
= 1, para algum inteiro i tal que 0 i r 1.
Pelo teorema 3.4.6, quando n e primo, (i) ou (ii) e sempre verda-
deira. Em particular, n e pseudoprimo
2
com respeito a todo elemento
de [n]
.
No restante desta se c ao, assumiremos que n n ao e primo. Mos-
traremos que n n ao e um pseudoprimo com respeito ` a maioria dos
elementos pertencentes a [n]
n
. Portanto,
P
n
[a Z
n
: a
n1
= 1 em Z
n
[
n 1
. (3.17)
2
Soa estranho dizer que um n umero primo e pseudoprimo com respeito a um
outro n umero, mas esta abordagem facilitar a nossa discuss ao futura. i
i
randomizados 2007/4/30 11:48 page 70 #76
i
i
i
i
i
i
70 [CAP. 3: PRIMALIDADE
Podemos reescrever a equa c ao 3.17 como:
P
n
[a [n] : (a, n) = 1 e n[a
n1
1[
n 1
. (3.18)
Como q
2
[n, obtemos que a [n] : (a, n) = 1 e n[a
n1
1
a [n] : (a, q
2
) = 1 e q
2
[a
n1
1. Conseq uentemente,
P
n
[a [n] : (a, q
2
) = 1 e q
2
[a
n1
1[
n 1
. (3.19)
Como cada elemento b de Z
q
2 intersecta [n] em
n
q
2
elementos, con-
clumos que
[a [n] : (a, q
2
) = 1 e q
2
[a
n1
1[ =
n
q
2
[a [q
2
] : (a, q
2
) = 1 e q
2
[a
n1
1[.
Substituindo esta igualdade na equa c ao (3.19), obtemos:
P
n
n
q
2
(n 1)
[a [q
2
] : (a, q
2
) = 1 e q
2
[a
n1
1[.
Esta desigualdade pode ser escrita como
P
n
n
q
2
(n 1)
[a Z
q
2 : a
n1
= 1 em Z
q
2[. (3.20)
Pela proposi c ao 3.6.4, existe inteiro a tal que a e um gerador
para Z
q
2
. Portanto, em Z
q
2
, a possui ordem (q
2
) = q(q 1). Sabe-
mos que
Z
q
2 = a
i
: i [q(q 1)].
Portanto, temos de determinar todos os expoentes i pertencentes a
[q(q 1)] tais que, em Z
q
2,
a
i(n1)
= (a
i
)
n1
= 1. (3.21)
Pelo teorema 3.4.1, q(q1)[i(n1). Como q
2
[n, temos que (q, n1) =
1. Portanto, q[i. Como apenas q 1 expoentes i em [q(q 1)] s ao
m ultiplos de q, existem no m aximo q 1 expoentes i em [q(q 1)]
que podem satisfazer (3.21). Isto e,
[a Z
q
2 : a
n1
= 1 em Z
q
2[ q 1. i
i
randomizados 2007/4/30 11:48 page 71 #77
i
i
i
i
i
i
[SEC. 3.7: PSEUDOPRIMOS 71
Substituindo esta desigualdade em (3.20), obtemos
P
n
n(q 1)
q
2
(n 1)
=
n(q 1)
q
2
n q
2
n(q 1)
q
2
n n
=
n(q 1)
n(q
2
1)
=
1
q + 1
.
O resultado segue pois q e mpar, j a que n e mpar, e da q+1 3.
Na proposi c ao 3.7.2, mostramos que P
n
1
4
, quando n e n ao
e livre de quadrados. Portanto, a partir deste momento, iremos
assumir que n e livre de quadrados. Pelo Teorema Fundamental
da Aritmetica, existem primos distintos q
1
, q
2
, . . . , q
k
tais que
n = q
1
q
2
q
k
.
Observe que k 2 pois n n ao e primo. Para i 1, 2, . . . , k, como
q
i
e mpar, existem inteiros positivos r
i
e m
i
tais que m
i
e mpar e
q
i
1 = 2
r
i
m
i
.
Mostraremos dois lemas auxiliares que estabelecem limites supe-
riores para o n umero de a [n]
: a
m
= 1 em Z
n
[ = (m, m
1
)(m, m
2
) (m, m
k
).
Lema 3.7.4. Para 0 j r 1, [a [n]
: a
2
j
m
= 1 em Z
n
[ e
igual a 0, se minr
1
, r
2
, . . . , r
k
j, ou igual a 2
jk
(m, m
1
)(m, m
2
)
(m, m
k
), caso contr ario.
Uma etapa comum ` a demonstra c ao destes dois lemas e estabele-
cida no resultado enunciado a seguir.
Lema 3.7.5. Sejam u, v e w inteiros tais que u > 0 e v 1, 1.
Se
u
v
(w) := a [w]
: a
u
= v em Z
w
,
ent ao
[
u
v
(n)[ = [
u
v
(q
1
)[[
u
v
(q
2
)[ [
u
v
(q
k
)[.
Utilizando a nota c ao denida no lema anterior, os lemas 3.7.3
e 3.7.4 fornecem limites superiores para respectivamente [
m
1
(n)[ e
[
2
j
m
1
(n)[. i
i
randomizados 2007/4/30 11:48 page 72 #78
i
i
i
i
i
i
72 [CAP. 3: PRIMALIDADE
Demonstra c ao do lema 3.7.5. Observe que as seguintes arma c oes
s ao equivalentes para a [n]
:
(a) a
u
= v em Z
n
;
(b) n[a
u
v;
(c) para todo i 1, 2, . . . , k, q
i
[a
u
v;
(d) para todo i 1, 2, . . . , k, a
u
= v em Z
q
i
.
O Teorema Fundamental da Aritmetica estabelece a equivalencia en-
tre (b) e (c).
Na se c ao 4, mostramos que a fun c ao : Z
n
Z
q
1
Z
q
2
Z
q
k
dada por (a) = (a, a, . . . , a), para um inteiro a e uma bije c ao. Pelo
par agrafo anterior, leva o conjunto
u
v
(n) em
u
v
(q
1
)
u
v
(q
2
)
u
v
(q
k
). Portanto,
[
u
v
(n)[ = [
u
v
(q
1
)
u
v
(q
2
)
u
v
(q
k
)[
e o resultado segue.
Demonstra c ao do lema 3.7.3. Pelo lema 3.7.5 ser a suciente estabe-
lecer que, para cada i 1, 2 . . . , k,
[
m
1
(q
i
)[ = (m, m
i
). (3.22)
Pela proposi c ao 3.6.3, Z
q
i
possui um gerador a (cuja ordem e q
i
1 =
2
r
i
m
i
). Portanto, qualquer elemento de Z
q
i
e uma potencia de a.
Isto e,
Z
q
i
= a, a
2
, . . . , a
q
i
1
.
Necessitamos determinar todos os expoentes j tais que a
j
m
1
(q
i
).
Isto e,
a
jm
= (a
j
)
m
= 1 em Z
q
i
.
Pelo teorema 3.4.1, 2
r
i
m
i
[jm. Se h =
m
i
(m,m
i
)
, ent ao 2
r
i
h[j, pois m
e mpar. Como existem (m, m
i
) m ultiplos de 2
r
i
h em [2
r
i
m
i
], temos
que (3.22) segue. i
i
randomizados 2007/4/30 11:48 page 73 #79
i
i
i
i
i
i
[SEC. 3.7: PSEUDOPRIMOS 73
Demonstra c ao do lema 3.7.4. Pelo lema 3.7.5 ser a suciente estabe-
lecer que, para cada i 1, 2 . . . , k,
[
2
j
m
1
(q
i
)[
_
2
j
(m, m
i
) quando r
i
> j
0 quando r
i
j
(3.23)
Pela proposi c ao 3.6.3, Z
q
i
possui um gerador a (cuja ordem e q
i
1 =
2
r
i
m
i
). Portanto, qualquer elemento de Z
q
i
e uma potencia de a.
Isto e,
Z
q
i
= a, a
2
, . . . , a
q
i
1
.
Necessitamos determinar todos os expoentes k tais que a
k
2
j
m
1
(q
i
).
Isto e,
a
2
j
mk
= (a
k
)
2
j
m
= 1 em Z
q
i
.
Pelo teorema 3.4.1,
2
r
i
m
i
[2
j+1
mk e 2
r
i
m
i
,[2
j
mk. (3.24)
Em particular, m
i
[mk, pois m
i
e mpar. Se r
i
j, ent ao n ao existe k
satisfazendo (3.24) e da
2
j
m
1
(q
i
) = . Neste caso, (3.23) e vericada.
Vamos supor que j < r
i
. Podemos, ent ao, reescrever (3.24) como:
2
r
i
j1
m
i
[mk e 2
r
i
j
m
i
,[mk. (3.25)
Se h =
m
i
(m,m
i
)
, ent ao
2
r
i
j1
h[k e 2
r
i
j
h ,[k. (3.26)
Conseq uentemente, k tem que ser um m ultiplo mpar de 2
r
i
j1
h.
Note que existem 2
j+1
(m, m
i
) m ultiplos de 2
r
i
j1
h em [2
r
i
m
i
], dos
quais metade s ao m ultiplos mpares. Portanto, (3.23) segue.
Demonstra c ao do teorema 3.7.1. Pela proposi c ao 3.7.2, podemos as-
sumir que n e livre de quadrados. Pelos lemas 3.7.3 e 3.7.4, n n ao e
pseudoprimo com respeito a exatamente
(m, m
1
)(m, m
2
) (m, m
k
)(1 + 1 + 2
k
+ + 2
k(s1)
)
elementos de [n]
, onde s = minr, r
1
, r
2
, . . . , r
k
. Portanto,
P
n
=
(m, m
1
)(m, m
2
) (m, m
k
)(1 + 1 + 2
k
+ + 2
k(s1)
)
n 1
. i
i
randomizados 2007/4/30 11:48 page 74 #80
i
i
i
i
i
i
74 [CAP. 3: PRIMALIDADE
Como (q
1
1)(q
2
1) (q
k
1) < q
1
q
2
q
k
1 = n1, temos que
P
n
<
(m, m
1
)(m, m
2
) (m, m
k
)(1 + 1 + 2
k
+ + 2
k(s1)
)
2
r
1
m
1
2
r
2
m
2
2
r
k
m
k
.
Podemos reescrever esta desigualdade como
P
n
<
(m, m
1
)(m, m
2
) (m, m
k
)
m
1
m
2
m
k
(1 + 1 + 2
k
+ + 2
k(s1)
)
2
r
1
+r
2
++r
k
.
(3.27)
Utilizando a express ao da soma de uma progress ao geometrica e
tambem o fato de que s 1, temos que
1 + 1 + 2
k
+ + 2
k(s1)
= 1 +
2
ks
1
2
k
1
= 1 +
2
ks
2
k
1
1
2
k
1
=
2
ks
2
k
1
2
k
2
2
k
1
= 2
ks
_
1
2
k
1
+
2
k
2
2
ks
(2
k
1)
_
2
ks
_
1
2
k
1
+
2
k
2
2
k
(2
k
1)
_
= 2
ks
_
2
k
+ 2
k
2
2
k
(2
k
1)
_
= 2
ks
_
2(2
k
1)
2
k
(2
k
1)
_
= 2
ks
_
1
2
k1
_
.
Substituindo este limite superior para 1 + 1 + 2
k
+ + 2
k(s1)
em (3.27), obtemos
P
n
<
(m, m
1
)(m, m
2
) (m, m
k
)
m
1
m
2
m
k
2
ks
2
r
1
+r
2
++r
k
1
2
k1
. (3.28) i
i
randomizados 2007/4/30 11:48 page 75 #81
i
i
i
i
i
i
[SEC. 3.8: A EXPONENCIAC
AO
E R
APIDA EM Z
N
75
Como, para todo i 1, 2, . . . , k, (m, m
i
) m
i
e 2
s
2
r
i
, temos
que:
(m, m
1
)(m, m
2
) (m, m
k
)
m
1
m
2
m
k
1 e
2
ks
2
r
1
+r
2
++r
k
1.
Conseq uentemente,
P
n
<
1
2
k1
e o resultado segue quando k 3. Podemos assumir que k = 2. Neste
caso, (3.28) pode ser escrita como:
P
n
<
(m, m
1
)(m, m
2
)
m
1
m
2
2
2s1
2
r
1
+r
2
. (3.29)
Note que o resultado tambem segue neste caso, a menos que r
1
=
r
2
= s, (m, m
1
) = m
1
e (m, m
2
) = m
2
. Vamos supor que este e o
caso. Como s r, temos que:
q
1
1[n 1 e q
2
1[n 1. (3.30)
Observe que n 1 = q
1
q
2
1 = (q
1
1)q
2
+ q
2
1. Por (3.30),
q
1
1[q
2
1. De maneira an aloga, q
2
1[q
1
1. Portanto, q
1
= q
2
.
Com esta contradi c ao conclumos a demonstra c ao do teorema.
3.8 A exponencia cao e rapida em Z
n
Com o objetivo de estimar a complexidade da exponencia c ao em Z
n
,
iniciamos esta se c ao analisando o custo das opera c oes aritmeticas usu-
ais. Por simplicidade, consideraremos que os operandos s ao inteiros
representados em bin ario. Como se sabe, o n umero de dgitos de n,
quando apresentado como um numeral escrito na base 2, e log n|+1.
Proposi cao 3.8.1. Sejam a e b inteiros positivos, cada um com no
m aximo k dgitos em sua representa c ao bin aria. As opera c oes de
adi c ao, subtra c ao e compara c ao entre a e b tem custo O(k); a multi-
plica c ao e a divis ao tem custo O(k
2
). i
i
randomizados 2007/4/30 11:48 page 76 #82
i
i
i
i
i
i
76 [CAP. 3: PRIMALIDADE
Demonstra c ao. No algoritmo usual utilizado para a adi c ao, determi-
nam-se os dgitos do resultado, por ordem, iniciando-se pelo locali-
zado na direita da representa c ao na base 2. Vamos supor que os i 1
primeiros dgitos foram determinados. Descreveremos como calcular
o i-esimo. O seu valor ser a 0 ou 1 dependendo de existir respectiva-
mente um n umero par ou mpar de dgitos iguais a 1 nas posi c oes da
mem oria que guardam: o i-esimo dgito de a; o i-esimo dgito de b; e o
vai um. (A posi c ao vai um tem valor inicial 0 e e continuamente
atualizada da seguinte forma: recebe valor 0 se existe no m aximo um
dgito igual a 1 nas tres posi c oes de mem oria que acabamos de des-
crever; caso contr ario, recebe valor 1.) Independentemente de como o
leitor deseje calcular quantas tarefas b asicas foram realizadas para
o c alculo deste dgito, este n umero ser a limitado, digamos, por l.
Portanto, o n umero de tarefas b asicas realizadas para o c alculo da
adi c ao de a com b e limitado por lk. Sendo assim, este algoritmo
tem custo O(k). (Caso o vai um nal tenha valor 1, o resultado
da adi c ao ter a k + 1 dgitos e o (k + 1)-esimo dgito ter a valor 1
o que, evidentemente, n ao altera a complexidade assint otica O(k) da
opera c ao.)
Para descrever o algoritmo da subtra c ao, precisamos comparar
a com b. Inicialmente, completamos as representa c oes na base 2
de a e b com 0s ` a esquerda, de forma que ambos quem com k
dgitos. (Quando a e b s ao armazenados em k bits de mem oria, esta
tarefa foi executada.) Vamos assumir que percorremos, iniciando pela
esquerda, os i 1-esimos primeiros dgitos das representa c oes de a
e b na base 2 sem chegarmos a uma conclus ao. Na etapa seguinte,
vericamos se os i-esimos dgitos de a e b s ao iguais ou diferentes. Se
forem diferentes, ent ao um deles ser a 0 e o outro ser a 1. O n umero
que tiver o i-esimo dgito igual a 1 ser a o maior. Sen ao, quando i = k,
a e b ser ao iguais, e, quando i < k, continuamos com o processo, pois
ainda n ao fomos capazes de chegar a uma conclus ao. Mais uma vez,
ca claro que este algoritmo tem custo O(k).
Para subtrair, necessitamos comparar a com b. Esta fase do al-
goritmo tem custo O(k). Caso b seja maior ou igual a a, o resultado
de a b ser a um inteiro n ao-positivo. Portanto, calculamos b a e
alteramos o sinal. Vamos descrever como fazer a subtra c ao apenas
no caso em que a e maior que b. O algoritmo e o mesmo da adi c ao
exceto na altera c ao do valor encontrado em vai um. O vai um i
i
randomizados 2007/4/30 11:48 page 77 #83
i
i
i
i
i
i
[SEC. 3.8: A EXPONENCIAC
AO
E R
APIDA EM Z
N
77
car a igual a 1 se e somente se existem mais dgitos iguais a 1 nas
posi c oes que armazenam o i-esimo dgito de b e o vai um que na
posi c ao que guarda o i-esimo dgito de a. Claramente o custo da
segunda fase deste algoritmo tambem e O(k). Portanto, a subtra c ao
tem custo O(k).
Reduziremos a multiplica c ao ` a adi c ao de ate k n umeros, cada um
com no m aximo 2k dgitos na base 2. (Mais ainda, o resultado da
adi c ao de qualquer subconjunto destes n umeros possui no m aximo
2k dgitos.) Portanto, realizamos no m aximo k 1 adi c oes, cada
uma com custo O(k). O custo nal do algoritmo da multiplica c ao
ser a O(k
2
). Para encontrar o conjunto de n umeros a serem adiciona-
dos, percorremos b da direita para a esquerda. Caso o i-esimo dgito
encontrado seja igual 1, coloca-se na famlia um n umero obtido de a
ampliando, ` a direita, a sua representa c ao com i 1 dgitos iguais a 0.
Caso o i-esimo dgito seja 0, n ao acrescenta-se n umero ao conjunto
3
.
A divis ao pode ser reduzida apenas ` a compara c ao e subtra c ao
de n umeros, cada um com ate k dgitos. Como s ao realizadas no
m aximo k de cada uma destas opera c oes, o custo do algoritmo ser a
O(k
2
), j a que o custo individual de cada opera c ao e O(k).
Do resultado anterior, temos como estimar o custo de realizar o-
pera c oes em Z
n
. Isto ser a estabelecido na pr oxima proposi c ao. Sali-
entamos que o custo para realizar a multiplica c ao pode ser melhorado
desde que um algoritmo mais eciente para realizar a multiplica c ao
e divis ao nos inteiros seja utilizado
4
.
Proposi cao 3.8.2. Seja n um inteiro positivo. Se a e b pertencem
a [n], ent ao o custo de calcular ab e ab e respectivamente O(log n)
e O(log
2
n).
Demonstra c ao. Seja k o n umero de dgitos de n, isto e, k = log n|+1.
Como a b e igual a a +b, quando a +b < n, ou (a +b) n, quando
3
O custo de encontrar este conjunto de n umeros pode ser desprezado, pois a
adi c ao pode ser feita utilizando-se apenas a representa c ao de a na base 2. Outros-
sim, o custo de encontrar cada um destes n umeros e O(k) e, como encontramos
no m aximo k deles, o custo nal para encontr a-los a todos e O(k
2
) o que n ao
altera o custo assint otico do algoritmo da multiplica c ao.
4
Veja, tambem, para uma discuss ao sobre algoritmos mais ecientes para as
opera c oes com inteiros gigantes, o livro de Crandall e Pomerance [14]. Tanto a
multiplica c ao quanto a divis ao podem ser realizadas em O(k(log k)
O(1)
). i
i
randomizados 2007/4/30 11:48 page 78 #84
i
i
i
i
i
i
78 [CAP. 3: PRIMALIDADE
a+b n, realizamos, no caso que requer o maior n umero de opera c oes,
uma adi c ao, uma compara c ao e uma subtra c ao de inteiros positivos
com no m aximo k+1 dgitos. Pela proposi c ao 3.8.1, o custo de realizar
cada uma destas opera c oes e O(k) = O(log n). Conseq uentemente, o
custo de realizar todas as tres tambem e O(log n).
Observe que a b e igual ao resto da divis ao de ab por n, que s ao
inteiros positivos com no m aximo 2k dgitos. Pela proposi c ao 3.8.1,
o custo de realizar cada uma destas duas opera c oes e O(log
2
n). Por-
tanto, o custo da multiplica c ao em [n] e O(log
2
n).
Sejam m e n inteiros positivos. Neste par agrafo, descreveremos
um algoritmo para calcular a
m
em Z
n
, onde a [n].
No computador, a representa c ao de m e na base 2. Logo existem
r
0
, r
1
, . . . , r
k1
, r
k
pertencentes ao conjunto 0, 1, com r
k
,= 0, isto
e, r
k
= 1, tais que
m = (r
k
r
k1
r
1
r
0
)
2
.
Ou seja
m = r
k
2
k
+r
k1
2
k1
+ +r
1
2
1
+r
0
2
0
.
Portanto,
a
m
= a
r
k
2
k
+r
k1
2
k1
++r
1
2
1
+r
0
2
0
= a
r
k
2
k
a
r
k1
2
k1
a
r
1
2
1
a
r
0
2
0
=
_
a
2
k
_
r
k
_
a
2
k1
_
r
k1
_
a
2
1
_
r
1
_
a
2
0
_
r
0
Como
_
a
2
i
_
r
i
e igual a a
2
i
, quando r
i
,= 0 (isto e, r
i
= 1), ou 1,
quando r
i
= 0, temos que
a
m
=
i[k+1]:r
i
=0
a
2
i
. (3.31)
Portanto, necessitamos calcular
a
2
0
, a
2
1
, a
2
2
, . . . , a
2
k1
, a
2
k
em Z
n
. (3.32)
Como cada elemento desta seq uencia e igual ao quadrado do elemento
que o antecede, podemos encontrar todos os elementos de (3.32) rea-
lizando k multiplica c oes em Z
n
. (N ao e necess ario calcular o primeiro
elemento, j a que a
2
0
= a
1
= a.) Por (3.31), necessitamos realizar no
m aximo mais k multiplica c oes em Z
n
para calcular a
m
. i
i
randomizados 2007/4/30 11:48 page 79 #85
i
i
i
i
i
i
[SEC. 3.8: A EXPONENCIAC
AO
E R
APIDA EM Z
N
79
Teorema 3.8.3. Sejam m e n inteiros positivos. Se a [n], ent ao
pode-se calcular a
m
em Z
n
realizando no m aximo 2log m| multi-
plica c oes em Z
n
. O custo de calcular a
m
em Z
n
e O(log mlog
2
n).
Demonstra c ao. Pelo par agrafo anterior, realizamos no m aximo 2k
multiplica c oes em Z
n
para calcular a
m
em Z
n
. Como k + 1 e o
n umero de dgitos de m na base 2, temos que
k + 1 = log m| + 1
e da k = log m|. A primeira parte do resultado segue. Para concluir
a demonstra c ao do teorema, necessitamos apenas estimar o custo de
calcular a
m
em Z
n
. Pela proposi c ao 3.8.2, cada multiplica c ao em
Z
n
tem custo O(log
2
n). Portanto, o custo de realizar no m aximo
2log m| e O(log mlog
2
n).
Salientamos que o custo da exponencia c ao e polinomial apenas
em Z
n
, j a que mantemos o controle do n umero de dgitos na re-
presenta c ao na base 2 de todos os elementos da seq uencia descrita
em (3.32), bem como de todos os produtos parciais obtidos quando
computamos o produto descrito em (3.31). (O resultado de uma mul-
tiplica c ao em Z
n
e sempre representado por um dos possveis restos
da divis ao por n, isto e, tem a forma b, com b pertence a [n].) Caso
optemos por realizar exponencia c ao nos inteiros, o seu custo seria ex-
ponencial porque o n umero de dgitos iria duplicar a cada quadrado
computado. Em particular, caso a e m sejam inteiros positivos, o
n umero de dgitos de a
m
e aproximadamente
log a
m
= mlog a = 2
log m
log a.
Logo o n umero de dgitos de a
m
e exponencial no tamanho da entrada
do problema, que e a e m. (Os n umeros a e m ocupam respectiva-
mente log a| + 1 e log m| + 1 posi c oes de mem oria.)
Teorema 3.8.4. Seja n um inteiro positivo. Se a [n]
e n e
mpar, ent ao e possvel decidir quando n e pseudoprimo com respeito
a a realizando no m aximo 2log n| multiplica c oes em Z
n
. O custo
desta decis ao e O(log
3
n).
Demonstra c ao. Existem inteiros positivos r e m tais que m e mpar
e n 1 = 2
r
m. Lembre-se que n e pseudoprimo com respeito a a
quando: i
i
randomizados 2007/4/30 11:48 page 80 #86
i
i
i
i
i
i
80 [CAP. 3: PRIMALIDADE
(i) a
m
= 1; ou
(ii) a
2
i
m
= 1, para algum inteiro i tal que 0 i r 1.
Portanto, para decidirmos quando n e pseudoprimo com respeito a a,
necessitamos calcular os elementos da seq uencia
a
m
, a
2
1
m
, a
2
2
m
, . . . , a
2
r2
m
, a
2
r1
m
em Z
n
. (3.33)
Ao percorrermos esta seq uencia da esquerda para a direita, ao ele-
varmos o quadrado de um elemento, obtemos o seu consecutivo, pois
_
a
2
i
m
_
2
= a
22
i
m
= a
2
i+1
m
.
A partir de a
m
, necessitamos realizar r multiplica c oes em Z
n
para en-
contrar toda a seq uencia. Pelo teorema 3.8.3, a
m
pode ser computado
com no m aximo 2log m| multiplica c oes em Z
n
. Conseq uentemente,
s ao necess arias
r + 2log m| 2r + log m| = 2log 2
r
m| = 2log(n 1)|.
Pela proposi c ao 3.8.2, o custo de realizar todos estes produtos em Z
n
ser a O(log
3
n). O resultado segue, j a que, pela proposi c ao 3.8.1, cada
uma das r compara c oes envolvidas nesta decis ao tem custo O(log n).
3.9 Quase decidindo primalidade em
tempo polinomial
Seja n um n umero positivo mpar. Nesta se c ao, vamos apresentar
um algoritmo, desenvolvido por Rabin [45], que decide se n e PRIMO
ou COMPOSTO. Quando a sada do algoritmo for n e COMPOSTO, ent ao
realmente n e composto. Mas, se o algoritmo armar que n e PRIMO,
eventualmente pode ocorrer de n n ao o ser. Isto e, o algoritmo pode
falhar e detectar primalidade onde ela n ao exista
5
.
5
Em outras palavras, trata-se de um algoritmo de Monte Carlo baseado-no-n ao
para o problema de se determinar se n e primo. i
i
randomizados 2007/4/30 11:48 page 81 #87
i
i
i
i
i
i
[SEC. 3.9: QUASE DECIDINDO PRIMALIDADE EM TEMPO POLINOMIAL 81
Entrada:
n: um inteiro mpar.
Sada:
PRIMO ou COMPOSTO, decidindo a primalidade de n.
primalidade(n):
escolha, aleatoriamente, a
1
, a
2
, . . . , a
5k
[n]
ANCIA DE N
= res(b
e
, n). Como n < L
s
, o inteiro
n ao-negativo b
de s letras
na base L. A mensagem a ser encaminhada e obtida substituindo-se
cada bloco B pelo bloco B
correspondente.
Para decifrar uma mensagem que chega, o usu ario a quebra em
blocos de s letras, cada um dos quais associado a um inteiro b
< L
s
.
O algoritmo utilizado para cifrar estabelece b
= res(b
e
, n). Pelo
teorema 3.4.3,
b
d
=
_
b
e
_
d
= b
de
= b
(n)+1
=
_
b
(n)
_
b = b em Z
n
(como d e o inverso de e em Z
(p1)(q1)
, temos que de = (n) + 1,
para algum ). Portanto, com o conhecimento de d, obtemos b a
partir de b
n
, qual a ordem de a
45
quando a ordem de a e 132?
5. Qual o resto da divis ao de 2
10123
por 17?
6. Encontre todas as razes do polin omio p(X) = X
2
1 em Z
32
.
Resolva o mesmo problema quando Z
32
e substitudo por Z
2
n.
7. Encontre o menor inteiro positivo que deixa restos 5, 2 e 3
quando dividido respectivamente por 9, 10 e 11.
8. Qual o valor de (1518)?
9. Encontre um gerador para Z
25
. Determine a ordem de todos os
elementos de Z
25
.
10. Sejam p e n inteiros positivos. Quando p e primo, mostre que
Z
p
n possui um gerador.
11. Mostre que a
560
= 1 para todo a Z
561
.
12. O inteiro 341 e pseudoprimo com respeito a 2?
13. Calcule 7
917
em Z
1234
. i
i
randomizados 2007/4/30 11:48 page 85 #91
i
i
i
i
i
i
[SEC. 3.12: NOTAS BIBLIOGR
AFICAS 85
3.12 Notas bibliogracas
Uma boa descri c ao do AKS pode ser encontrada no artigo de Gran-
ville [27]. Caso deseje entender, com todos os detalhes, as raz oes
pelas quais o algoritmo funciona, o leitor encontrar a no livro de Cou-
tinho [13] uma excelente alternativa em lngua portuguesa.
Para uma discuss ao mais detalhada sobre o sistema de criptograa
com chave p ublica conhecido como RSA, outro livro de Coutinho [12]
constitui excelente escolha em lngua p atria. Pode-se tambem recor-
rer ao livro de Koblitz [34], que e escrito em ingles (e poderamos
tentar adaptar, aqui, a piada de Ribenboim sobre estudar criptogra-
a em uma linguagem cifrada! veja a p agina 104 de [47]).
Por m, para o leitor interessado em saber tudo sobre n umeros
primos, indicamos o excelente livro de Crandall e Pomerance [14],
que incorpora os mais recentes avan cos incluindo o AKS e traz
uma abordagem detalhada dos aspectos algortmicos envolvidos. i
i
randomizados 2007/4/30 11:48 page 86 #92
i
i
i
i
i
i i
i
randomizados 2007/4/30 11:48 page 87 #93
i
i
i
i
i
i
Captulo 4
Geometria
Computacional
Geometria computacional e a area da computa c ao que estuda a com-
plexidade de algoritmos, problemas e estruturas de dados de natureza
geometrica. O problema mais famoso e talvez o fecho convexo, que
consiste em determinar o menor polgono convexo que contem um
dado conjunto de pontos.
Diversas raz oes justicam o fato de os algoritmos randomizados
terem ganho import ancia central no estudo da geometria computaci-
onal. Primeiro, algoritmos randomizados s ao, como j a o observamos
nos captulos anteriores, freq uentemente mais simples e ecientes na
pr atica do que seus equivalentes determinsticos. Segundo, algoritmos
randomizados para problemas no plano geralmente se estendem para
espa cos d-dimensionais, com pequenas modica c oes. Finalmente, os
algoritmos determinsticos mais ecientes para v arios problemas fo-
ram obtidos a partir das de-randomiza c oes de algoritmos randomi-
zados. Por exemplo, o unico algoritmo otimo conhecido para com-
puta c ao do fecho convexo em dimens oes mpares maiores que 3 e a
de-randomiza c ao de um algoritmo randomizado incremental.
Devido ` a natureza contnua dos problemas, o modelo computa-
cional mais utilizado e o real RAM, onde opera c oes algebricas com
n umeros reais podem ser realizadas em tempo constante. Os algo-
87 i
i
randomizados 2007/4/30 11:48 page 88 #94
i
i
i
i
i
i
88 [CAP. 4: GEOMETRIA COMPUTACIONAL
ritmos s ao normalmente descritos de modo geometrico, sem entrar
em detalhes de implementa c ao de fun c oes como c alculo de angulos
e dist ancias. Assume-se que qualquer computa c ao envolvendo um
n umero constante de primitivas geometricas pode ser realizada em
tempo O(1).
Tambem assume-se que a dimens ao d do espa co Euclidiano e uma
constante. Portanto, um algoritmo cuja complexidade seja O(2
d
n)
tem sua complexidade escrita como O(n). Dependencias exponenciais
na dimens ao do espa co s ao comuns. Sendo assim, a maior parte dos
algoritmos n ao e eciente para dimens oes muito altas.
Outra pr atica comum em geometria computacional e assumir que
a entrada do problema est a em posi c ao geral. N ao tentamos denir
formalmente posi c ao geral, mas a ideia e desconsiderar propriedades
que se perdem com uma perturba c ao innitesimal da entrada. Por
exemplo, caso a entrada seja um conjunto de pontos, podemos assu-
mir que n ao h a tres pontos colineares, ou que n ao h a quatro pontos
cocirculares. Caso a entrada seja um conjunto de retas, podemos as-
sumir que n ao h a retas verticais, horizontais, ou duas retas paralelas.
Na maioria dos casos, assumir posi c ao geral n ao altera a complexi-
dade do problema e simplica a explica c ao e a an alise dos algoritmos.
Na se c ao 4.1, apresentamos um algoritmo randomizado incremen-
tal para o problema de programa c ao linear com um n umero constante
de vari aveis. Na se c ao 4.2, introduzimos o conceito de fun c ao hash
randomizada, que utilizamos no algoritmo para obten c ao do par de
pontos mais pr oximos descrito na se c ao 4.3. O leitor encontrar a, na
se c ao 4.4, diversos exerccios algortmicos usando as tecnicas intro-
duzidas neste captulo. E, como de costume, inclumos notas bibli-
ogr acas e coment arios mais avan cados na se c ao 4.5.
4.1 Programa cao linear
Um problema de programa c ao linear com d vari aveis consiste em
determinar o vetor d-dimensional X que maximiza a fun c ao linear
f = CX e que satisfaz um sistema de desigualdades lineares AX B. i
i
randomizados 2007/4/30 11:48 page 89 #95
i
i
i
i
i
i
[SEC. 4.1: PROGRAMAC
AO LINEAR 89
Reescrevendo o problema sem usar nota c ao matricial temos:
Maximizar: f = c
1
x
1
+c
2
x
2
+ +c
d
x
d
Satisfazendo: a
11
x
1
+a
12
x
2
+ +a
1d
x
d
b
1
.
.
.
a
n1
x
1
+a
n2
x
2
+ +a
nd
x
d
b
n
.
Geometricamente, cada desigualdade linear representa um semi-
espa co d-dimensional. A interse c ao dos n semi-espa cos e chamada
de regi ao vi avel. Maximizar a fun c ao linear f = CX satisfazendo as
desigualdades AX B consiste em determinar um ponto extremo
na dire c ao C, que esteja contido na regi ao vi avel. Um problema de
programa c ao linear com duas vari aveis est a ilustrado na gura 4.1(a).
Concentramos nossa explica c ao no caso de apenas duas vari aveis
(d = 2), mencionando brevemente como estender o algoritmo para
um n umero arbitr ario de vari aveis. Sem perda de generalidade, as-
sumimos que C = (1, 0), pois os demais casos podem ser reduzidos
ao caso C = (1, 0) rodando o espa co (gura 4.1(b)). Assim, estamos
interessados em obter o ponto mais ` a direita da interse c ao de um
conjunto de semiplanos S.
Existem dois casos especiais em que o problema n ao possui solu c ao.
O primeiro caso ocorre quando a regi ao vi avel e vazia (gura 4.2(a))
e e chamado de problema invi avel. O segundo caso ocorre quando a
regi ao vi avel n ao e limitada do lado direito (gura 4.2(b)) e e cha-
mado de problema ilimitado. Dizemos que dois semiplanos s
1
, s
2
S
limitam o problema se a regi ao formada por s
1
s
2
e limitada do lado
direito.
O caso de o problema ser ilimitado e o primeiro que tratamos.
Desejamos obter um algoritmo que ou diga que o problema e ilimi-
tado ou encontre dois semiplanos que limitem o problema. Dado um
semiplano s, denimos N(s) como o vetor unit ario normal ` a borda de
s e que aponta para o interior de s. Denimos N
(s) . Seja s
1
o semiplano com
N
(s) e s
2
o semiplano com N
(s).
E possvel provar que s
1
e s
2
limitam o problema se
N
(s
1
) N
(s
2
) < . O problema e ilimitado se s
1
ou s
2
n ao existir,
ou se N
(s
1
) N
(s
2
) > . O caso N
(s
1
) N
(s
2
) = e mais deli-
cado, mas n ao ocorre quando os semiplanos est ao em posi c ao geral. i
i
randomizados 2007/4/30 11:48 page 90 #96
i
i
i
i
i
i
90 [CAP. 4: GEOMETRIA COMPUTACIONAL
2x 10
C = (1, 2)
x 2y 2
x y 2
3y 3
ponto m aximo:
(1, 1)
(a)
C = (1, 0)
(b)
Figura 4.1: (a) Interpreta c ao geometrica de um problema de pro-
grama c ao linear com duas vari aveis. (b) O mesmo problema ap os
rota c ao.
(a) (b)
Figura 4.2: (a) Problema de programa c ao linear invi avel. (b) Pro-
blema de programa c ao linear ilimitado. i
i
randomizados 2007/4/30 11:48 page 91 #97
i
i
i
i
i
i
[SEC. 4.1: PROGRAMAC
AO LINEAR 91
Usando o procedimento descrito no par agrafo anterior, n ao s o po-
demos nos concentrar apenas em problemas limitados, como tambem
sabemos como obter duas restri c oes que limitam o problema, caso
elas existam. Esta e a condi c ao inicial do nosso algoritmo incremen-
tal. A partir da, acrescentamos as restri c oes uma a uma, atualizando
o ponto extremo satisfazendo as restri c oes. De modo geral, um al-
goritmo randomizado incremental primeiro resolve o problema para
um subconjunto pequeno dos elementos da entrada e, a cada passo,
acrescenta um novo elemento da entrada escolhido aleatoriamente,
atualizando a solu c ao. Quando todos os elementos da entrada tive-
rem sido acrescentados, tem-se a solu c ao do problema.
Sejam s
1
, . . . , s
n
os n semiplanos da entrada do problema, onde
s
1
, s
2
s ao um par de semiplanos que limitam o problema. Denimos
S
i
= s
1
, . . . , s
i
e p
i
como o ponto mais ` a direita da interse c ao de
semiplanos de S
i
. Iniciamos o algoritmo determinando o ponto p
2
. O
ponto p
2
pode ser determinado resolvendo o sistema linear formado
pelas retas que denem a borda de s
1
e s
2
. Para calcularmos p
n
, que
e a solu c ao do nosso problema, o algoritmo procede calculando p
i
incrementalmente, para i de 3 ate n. Existem dois casos que podem
ocorrer: ou bem p
i1
s
i
, ou p
i1
/ s
i
. Analisamos estes dois casos
separadamente.
Note que a regi ao vi avel denida por S
i
est a contida na regi ao
vi avel denida por S
i1
, pois a regi ao vi avel de S
i
e a interse c ao de
s
i
com a regi ao vi avel de S
i1
. Conseq uentemente, se p
i1
s
i
,
ent ao p
i
= p
i1
. Neste caso, p
i
pode ser computado em tempo O(1).
Caso p
i1
/ s
i
, precisamos examinar os semiplanos de S
i
para de-
terminar o valor de p
i
. Fica como exerccio provar que, se o problema
e vi avel, ent ao p
i
est a na borda de s
i
. No caso de duas vari aveis, e f acil
determinar o valor de p
i
, em tempo O(i), examinando a interse c ao
de cada semiplano de S
i1
com a reta formada pela borda de s
i
.
i=3
O(i) = O(n
2
).
Desejamos reduzir o valor esperado da complexidade de tempo.
Para isto, permutamos aleatoriamente os semiplanos de s
3
a s
n
. O
algoritmo para permutar aleatoriamente um vetor de n elementos em
tempo O(n) est a descrito na gura 4.3. O pseudo-c odigo do algoritmo
de programa c ao linear encontra-se na gura 4.4.
Podemos escrever o valor esperado da complexidade de tempo
como
E[T(n)] =
n
i=3
(q
i
O(i) + (1 q
i
)O(1)),
onde q
i
e a probabilidade de p
i1
/ s
i
. Para determinarmos E[T(n)],
precisamos calcular um limite superior para o valor de q
i
. Este limite
superior deve depender apenas da permuta c ao aleat oria dos semipla-
nos, e n ao da entrada do problema.
A tecnica an alise de tr as para frente e freq uentemente utilizada
para analisar algoritmos incrementais randomizados. O algoritmo in-
cremental descrito parte de uma solu c ao inicial e segue acrescentando
um semiplano por vez. Podemos imaginar esse processo de tr as para
frente, partindo da solu c ao do problema e removendo um semiplano i
i
randomizados 2007/4/30 11:48 page 93 #99
i
i
i
i
i
i
[SEC. 4.2: FUNC
OES HASH 93
Entrada:
S: Conjunto de n semiplanos.
Sada:
p: Ponto extremo direito na interse cao dos semiplanos de S.
progLin(S):
determinar 2 semiplanos s
1
, s
2
que limitem o problema
se s
1
, s
2
nao existem:
retorne problema ilimitado
p interse cao das bordas de s
1
e s
2
fazer s
3
, . . . , s
n
uma permuta cao aleat oria de S \ {s
1
, s
2
}.
para i de 3 ate n:
se p / s
i
:
p ponto extremo direito na borda de s
i
e
contido na interse cao de s
1
, . . . , s
i1
se p nao existe:
retorne problema inviavel
retorne p
Figura 4.4: Algoritmo que resolve o problema de programa c ao linear.
por vez, ate chegar na solu c ao inicial. A cada passo, removemos um
semiplano aleat orio dentre i 2 semiplanos, pois 2 semiplanos fazem
parte da solu c ao inicial. O valor de q
i
e a probabilidade de remo-
vermos um dos 2 semiplanos que denem p
i
. Ent ao conclumos que
q
i
2/(i 2) = O(1/i). Assim, temos
E[T(n)] =
n
i=3
(O(1/i)O(i) +O(1)O(1)) =
n
i=3
O(1) = O(n).
4.2 Fun c oes hash
Fun c oes hash, tambem chamadas de fun c oes de dispers ao, n ao s ao um
t opico particularmente geometrico. Entretanto, elas encontram diver-
sas aplica c oes dentro de geometria computacional, assim como nas
areas mais diversas da computa c ao, de linguagens de programa c ao a i
i
randomizados 2007/4/30 11:48 page 94 #100
i
i
i
i
i
i
94 [CAP. 4: GEOMETRIA COMPUTACIONAL
teoria da complexidade. Dados um par ametro inteiro m e um con-
junto de n umeros inteiros C, uma fun c ao hash e uma fun c ao h que
mapeia os elementos de C em n umeros inteiros de 0 a m 1. Cha-
mamos os elementos de C de chaves. Desejamos escolher aleatori-
amente uma fun c ao hash de modo que, se x e y s ao duas chaves
distintas, ent ao h(x) ,= h(y) com alta probabilidade (no caso, pelo
menos 1 1/m).
Por exemplo, considere o conjunto de chaves C = 7, 92, 1092 e o
par ametro m = 3. Uma excelente fun c ao hash seria h(x) = x mod 3,
pois h(7) = 1, h(92) = 2, h(1092) = 0, de modo que h(x) ,= h(y)
sempre que x ,= y. Porem, a fun c ao h(x) = x mod 3 funciona ex-
tremamente mal para certos conjuntos de chaves, como por exemplo,
C = 3, 33, 129. Neste caso, temos h(x) = 0 para todo x C. A
utiliza c ao de n umeros aleat orios permite construir fun c oes hash que
funcionem bem, no caso esperado, para qualquer conjunto de cha-
ves C, sem nem mesmo necessitarmos examinar o conjunto C.
Para construirmos uma fun c ao hash, primeiro determinamos um
n umero primo p tal que p > x para todo x C. A obten c ao de
tal n umero primo n ao e tarefa trivial, porem p pode ser obtido e-
cientemente usando as tecnicas descritas no captulo 3, juntamente
com o postulado de Bertrand, que diz que, para todo x > 3, existe
um n umero primo p tal que x p 2x 2. Ap os calcularmos p,
obtemos dois n umeros inteiros aleat orios a [1, p 1] e b [0, p 1].
Denimos a fun c ao hash como
h(x) = res(res(ax +b, p), m),
onde res(x, y) representa, como na se c ao 3.1, o resto da divis ao de x
por y. Para essa fun c ao hash, temos o seguinte resultado:
Teorema 4.2.1. Dadas duas chaves distintas x, y C, a probabili-
dade de h(x) = h(y) e no m aximo 1/m. A probabilidade e obtida em
fun c ao dos valores aleat orios a e b, independente do valor de x e y.
Demonstra c ao. Nesta demonstra c ao usamos nota c ao e propriedades
estabelecidas no captulo 3. Denimos H(x) = a x +b em Z
p
. Con-
sidere duas chaves c
1
, c
2
Z
p
. Temos que
H(c
1
) = a c
1
+b e H(c
2
) = a c
2
+b. i
i
randomizados 2007/4/30 11:48 page 95 #101
i
i
i
i
i
i
[SEC. 4.2: FUNC
OES HASH 95
Primeiro, mostramos que H(c
1
) = H(c
2
) se e s o se c
1
= c
2
. Par-
tindo de H(c
1
) = H(c
2
), por deni c ao temos que a c
1
+b = a c
2
+b.
Pela existencia de inverso aditivo em Z
p
, temos que a c
1
= a c
2
.
Como a ,= 0 e p e primo, a possui inverso multiplicativo em Z
p
.
Ent ao conclumos que c
1
= c
2
.
O pr oximo passo e mostrarmos que podemos determinar a e b em
fun c ao de c
1
, c
2
, H(c
1
) e H(c
2
). Subtraindo a c
1
de H(c
1
) temos que
b = H(c
1
) a c
1
.
Subtraindo H(c
1
) H(c
2
) temos
H(c
1
) H(c
2
) = a (c
1
c
2
).
Como c
1
,= c
2
, ent ao c
1
c
2
possui inverso multiplicativo em Z
p
.
Denotamos o inverso multiplicativo de c
1
c
2
por (c
1
c
2
)
1
. Segue
que
a = (c
1
c
2
)
1
(H(c
1
) H(c
2
)).
Note que existem p(p 1) atribui c oes possveis para o par (a, b),
e existem tambem p(p1) pares (H(c
1
), H(c
2
)) com H(c
1
) ,= H(c
2
).
Sendo assim, existe uma correspondencia 1 para 1 entre (a, b) e
(H(c
1
), H(c
2
)). Como (a, b) e escolhido aleat oria e uniformemente
em (Z
p
, Z
p
), o par (H(c
1
), H(c
2
)) tambem e escolhido aleat oria e
uniformemente dentre pares de valores distintos em Z
p
.
A partir daqui, consideramos H(c
1
) e H(c
2
) como inteiros de 0
a p 1, e n ao mais como elementos de Z
p
. Temos que h(c
1
) =
res(H(c
1
), m) e h(c
2
) = res(H(c
2
), m). Queremos determinar a pro-
babilidade Pr[h(c
1
) = h(c
2
)] e sabemos que H(c
1
) ,= H(c
2
).
Se xarmos o valor de H(c
1
), existem no m aximo p/m|1 valores
possveis de H(c
2
) com H(c
2
) ,= H(c
1
) e h(c
1
) = h(c
2
). Como h a no
total p 1 valores possveis para H(c
2
), ent ao
Pr[h(c
1
) = h(c
2
)]
p/m| 1
p 1
(p 1)/m
p 1
1
m
.
Corolario 4.2.2. Considere uma chave x C, e um conjunto C
C com [C
com
h(x) = h(y) e menor que 2, ou seja, E[[y C
com
h(x) = h(y) e a soma das probabilidades de h(x) = h(y) para as
chaves y C
. Caso x C
: h(x) = h(y)[] 1 +
|C
|1
i=1
1
m
= 1 +
[C
[ 1
m
< 2.
Caso x / C
: h(x) = h(y)[]
|C
i=1
1
m
=
[C
[
m
1.
4.3 Par de pontos mais pr oximos
Dado um conjunto P contendo n pontos de um espa co Euclidiano d-
dimensional, e natural perguntar qual o par de pontos mais pr oximos,
isto e, quais s ao os dois pontos distintos p, q P que minimizam a
dist ancia [p q[. Um algoritmo trivial para este problema tem com-
plexidade de tempo O(n
2
), simplesmente calculando as dist ancias
entre todos os n(n 1)/2 pares de pontos e escolhendo o par que
determina a dist ancia mnima. Entretanto, existem algoritmos mais
ecientes. Por bastante tempo, o problema foi considerado completa-
mente solucionado, pois h a diversos algoritmos determinsticos com
tempo O(nlog n) e existe um limite inferior de (nlog n) para o pro-
blema, mesmo no caso unidimensional. O limite inferior se refere
apenas a algoritmos determinsticos e restritos a comparar resultados
de opera c oes algebricas.
O piso de um n umero real x e denotado por x| e e denido
como o maior inteiro i tal que i x. O piso n ao e uma opera c ao
algebrica. Surpreendentemente, usando randomiza c ao e computa c ao
de pisos, e possvel resolver o problema em tempo O(n). Usando
pisos, mas sem usar randomiza c ao, e possvel resolver o problema em
tempo O(nlog log n). Descrevemos um algoritmo randomizado que
resolve o problema em tempo O(n). O algoritmo pode ser facilmente i
i
randomizados 2007/4/30 11:48 page 97 #103
i
i
i
i
i
i
[SEC. 4.3: PAR DE PONTOS MAIS PR
OXIMOS 97
generalizado para espa cos d-dimensionais, mas nos restringimos ao
caso bidimensional.
O algoritmo usa randomiza c ao de duas maneiras. Primeiro, usa
randomiza c ao explicitamente na escolha do ponto a ser amostrado a
cada itera c ao. Segundo, usa randomiza c ao implicitamente atraves da
utiliza c ao de fun c oes hash (vide se c ao 4.2). Iniciamos com algumas
deni c oes que facilitam a descri c ao do algoritmo. O vizinho mais
pr oximo de um ponto p (com respeito ao conjunto P), denotado por
vmp(p), e o ponto p
P p que minimiza [p p
[. Denimos
f(p) = [p vmp(p)[, ou seja, f(p) e a dist ancia do ponto p ao seu
vizinho mais pr oximo.
A ideia do algoritmo e, a cada itera c ao, escolher um ponto p
aleatoriamente e remover de P todo ponto q com f(q) f(p). Este
procedimento e repetido ate todos os pontos de P serem removidos.
Note que f(p) limita superiormente a dist ancia entre o par de pontos
mais pr oximos. Conseq uentemente, os pontos removidos n ao podem
ser um dos pontos do par de pontos mais pr oximos, a n ao ser que p
seja um dos pontos do par de pontos mais pr oximos. Quando todos
os pontos foram removidos, sabe-se que p e seu vizinho mais pr oximo
s ao de fato o par de pontos mais pr oximos. O pseudo-c odigo do
algoritmo encontra-se na gura 4.5.
Entretanto, calcular f(q) leva tempo O(n), pois determinar o vi-
zinho mais pr oximo de um ponto q exige examinar todos os demais
pontos de P. Assim, a primeira chamada da fun c ao removerPontos
leva tempo (n
2
) ao calcular f(q) para todo q P. Como a nossa
meta e determinar o par de pontos mais pr oximos em tempo O(n),
precisamos acelerar a fun c ao removerPontos. Temos que remover do
conjunto P todos os pontos q com f(q) f(p), sem calcularmos f(q)
individualmente para cada ponto q P.
Podemos, antes de iniciar o algoritmo, transladar e escalar os
pontos sem alterar o par de pontos mais pr oximos. Portanto, assu-
mimos, sem perda de generalidade, que os pontos de P est ao contidos
no quadrado unit ario, ou seja, P [0, 1]
2
. Imagine um quadriculado
dividindo o quadrado unit ario em celulas de di ametro f(p)/2 (e lado
f(p)/2
vmp(p)
P removerPontos(P,f(p))
retorne p, p
removerPontos(P,fp):
para cada q P:
se f(q) fp:
P P \ {q}
Figura 4.5: Primeira vers ao do algoritmo que determina o par de
pontos mais pr oximos.
Por outro lado, a adjacencia de c(q) conter somente o ponto q n ao
signica que f(q) f(p), mas sim que f(q) f(p)/2
2. Para
removermos ecientemente todo ponto q tal que a adjacencia de c(q)
contem somente q, usamos uma fun c ao hash e a fun c ao piso.
Denimos uma fun c ao hash h com par ametro m = n e con-
junto de chaves sendo o conjunto de todas as celulas do quadri-
culado, representadas por n umeros inteiros como denido a seguir.
A fun c ao piso e importante porque, para representar a celula de
um ponto q = (q
x
, q
y
) como um n umero inteiro, fazemos c(q) =
_
q
x
/(f(p)/2
2)
_
+k
_
q
y
/(f(p)/2
2)
_
, onde k = 1+
_
1/(f(p)/2
2)
_
.
Criamos ent ao um vetor v com n posi c oes inicializadas com um
conjunto vazio. O vetor v e denido como um vetor de cole c oes
de conjuntos de pontos. Associamos cada ponto q P a um dos
conjuntos em v[h(c(q))]. Desejamos que dois pontos perten cam ao
mesmo conjunto se e s o se pertencerem ` a mesma celula, mas duas
celulas distintas podem ter o mesmo valor da fun c ao hash. Esta e
raz ao de associarmos v[h(c(q))] a uma cole c ao de conjuntos, sendo um i
i
randomizados 2007/4/30 11:48 page 99 #105
i
i
i
i
i
i
[SEC. 4.3: PAR DE PONTOS MAIS PR
OXIMOS 99
p
f(p)
f(p)/2
q
c(q)
adjacncia de c(q)
par de pontos
mais prximos
vmp(p)
Figura 4.6: Divis ao do plano por um quadriculado, com adjacencia
da celula do ponto q em cinza.
conjunto (de pontos) para cada celula distinta. Deste modo, a posi c ao
v[h(c(q))] armazena as celulas cuja fun c ao hash tem valor h(c(q)), e
um dos conjuntos de v[h(c(q))] contem os pontos da celula c(q).
Usando o vetor v, podemos remover todo ponto q tal que a ad-
jacencia de c(q) contem somente q. Para isso, examinamos um ele-
mento do conjunto de pontos de modo a determinar a celula cor-
respondente e o n umero de pontos no conjunto de modo a de-
terminar se a celula contem algum ponto que n ao seja q , conforme
o pseudo-c odigo da gura 4.7.
Infelizmente, a fun c ao removerPontos remove pontos q com
f(p)/2
[ e no
m aximo 2
{}
v[0 . . . (n 1)] {}
k 1 +
1/(fp/2
2)
seja c(q) =
q
x
/(fp/2
2)
+ k
q
y
/(fp/2
2)
para cada q P:
para cada conjunto C v[h(c(q))]
se c(C[0]) = c(q)
C = C {q}
se q nao foi adicionado a nenhum conjunto C
v[h(c(q))] = v[h(c(q))] {{q}}
para cada q P:
remover 1
para cada celula x na adjacencia de c(q):
para cada conjunto C v[h(x)]
se c(C[0]) = x e (c(C[0]) = c(q) ou |C| > 1)
remover 0
se remover = 1:
P
{q}
retorne P
OXIMOS 101
Sendo assim, limitamos o valor esperado da complexidade de tempo
usando a linearidade da esperan ca:
E[T(n)]
i=0
O(n/2
i
) = O(n).
Voltamos agora ao problema do algoritmo analisado n ao determi-
nar o par de pontos mais pr oximos, mas sim uma aproxima c ao do
par de pontos mais pr oximos. Para obtermos o par de pontos mais
pr oximos a partir da aproxima c ao, usamos um quadriculado e fun c ao
hash novamente. Seja a a dist ancia entre o par de pontos retornada
pelo algoritmo aproximado. Criamos um quadriculado com celulas
de lado a e usamos a fun c ao hash para organizar os pontos em um
vetor, do mesmo modo que feito anteriormente. Para cada ponto q,
determinamos o ponto mais pr oximo de q na adjacencia da celula
que contem q, se houver. Note que, como a e um limite superior para
a dist ancia entre o par de pontos mais pr oximos, e as celulas tem
lado a, sabemos que o par de pontos mais pr oximos encontra-se em
celulas adjacentes.
Para analisarmos a complexidade do algoritmo, precisamos saber
o n umero m aximo de pontos que podem pertencer a uma mesma
celula do quadriculado. Sabemos que n ao h a dois pontos mais pr oxi-
mos que a/2
2 da dist ancia
do par de pontos mais pr oximos. Dividimos uma celula do quadri-
culado em 16 sub-celulas de di ametro a/2
2
Figura 4.8: Divis ao de uma celula em 16 sub-celulas com no m aximo
um ponto por sub-celula.
4.4 Exerccios
1. Escreva algoritmos randomizados incrementais, com complexi-
dade de tempo O(n), para os seguintes problemas:
(a) Dado um conjunto de n pontos P, e um ponto p P,
determinar o menor crculo C que contem todos os pontos
de P, tal que p pertence ` a borda de C.
(b) Dado um conjunto de n pontos P, determinar o menor
crculo C que contem todos os pontos de P.
2. Dados dois conjuntos de pontos P
1
, P
2
, separados por uma reta
vertical, chamamos de ponte a reta r que contem dois pontos
p
1
P
1
e p
2
P
2
, de modo que todos os demais pontos de
P
1
P
2
est ao abaixo de r. Escreva um algoritmo randomizado
incremental que determina a ponte em tempo O([P
1
[ +[P
2
[).
3. Dado um conjunto de n chaves inteiras C, uma fun c ao hash h
e dita perfeita quando h(x) ,= h(y) para todo par de chaves
distintas x, y. Neste exerccio, voce deve escrever e analisar um
algoritmo que, dado um conjunto C, obtenha uma fun c ao hash
perfeita h : C 0, . . . , m 1. A fun c ao h deve poder ser i
i
randomizados 2007/4/30 11:48 page 103 #109
i
i
i
i
i
i
[SEC. 4.5: NOTAS BIBLIOGR
AFICAS 103
avaliada em tempo O(1). Forne ca inicialmente um algoritmo
de Monte Carlo e, em seguida, converta este algoritmo em um
algoritmo de Las Vegas. Considere que o par ametro m e:
(a) m = O(n
2
);
(b) m = O(n). (Dica: use dois nveis de fun c oes hash.)
4. Escreva um algoritmo que, dados um conjunto de pontos P e
um n umero real r, liste todos os pares de pontos p
1
, p
2
tal que
[p
1
p
2
[ r. O seu algoritmo deve ter complexidade de tempo
O(n +k), onde k e o n umero de pontos listados.
5. Modique o algoritmo que determina o par de pontos mais pr o-
ximos para funcionar em espa cos d-dimensionais, onde d e cons-
tante.
4.5 Notas bibliogracas
Diversos livros estudam algoritmos randomizados em geometria com-
putacional. De Berg, van Kreveld, Overmars e Schwarzkopf [15] fa-
zem uma excelente introdu c ao ao estudo de geometria computacional,
cobrindo diversos algoritmos randomizados, entre eles o algoritmo de
programa c ao linear apresentado aqui. Motwani e Raghavan [41] ana-
lisam um grande n umero de algoritmos randomizados de programa c ao
linear, geometria computacional e fun c oes hash. Mulmuley [42] in-
troduz problemas fundamentais de geometria computacional usando
algoritmos randomizados. Em lngua portuguesa, Figueiredo e Car-
valho [22] e tambem Rezende e Stol [46] escreveram otimos textos
introdut orios de geometria computacional.
O algoritmo de programa c ao linear apresentado aqui foi desco-
berto por Seidel [49]. Caso consideremos a dimens ao d como uma
vari avel assint otica, a complexidade de tempo e O(d! n). Outros al-
goritmos randomizados s ao mais ecientes em fun c ao de d, tendo
complexidades como O(d
2
n +e
d ln d
) [37].
Fun c oes hash vem sendo estudadas na ciencia da computa c ao
desde a decada de 50 e costumam ser apresentadas em livros intro-
dut orios de algoritmos [11, 32]. Knuth [33] cobre fun c oes hash, porem
considerando a distribui c ao probabilstica das chaves. Fun c oes hash i
i
randomizados 2007/4/30 11:48 page 104 #110
i
i
i
i
i
i
104 [CAP. 4: GEOMETRIA COMPUTACIONAL
que garantem resultados probabilsticos independentemente da dis-
tribui c ao das chaves foram introduzidas por Carter e Wegman [4].
O algoritmo cl assico para o par de pontos mais pr oximos leva
tempo O(nlog n) e e baseado no paradigma de divis ao e conquista [43].
A primeira solu c ao randomizada foi descoberta por Rabin [44] e leva
tempo O(n). Um algoritmo determinstico que usa a fun c ao piso e
leva tempo O(nlog log n) foi descoberto por Fortune e Hopcroft [23].
Khuller e Matias [31] descobriram o algoritmo descrito aqui.
Grande parte dos algoritmos randomizados para geometria com-
putacional possuem vers oes de-randomizadas com complexidades si-
milares. Chazelle e Friedman [6] introduziram diversas tecnicas para
de-randomizar algoritmos geometricos. Matousek [36] compilou di-
versos resultados de de-randomiza c ao em geometria computacional.
O algoritmo randomizado incremental para o fecho convexo em tempo
otimo O(n
(d1)/2
+ nlog n) foi descoberto por Clarkson e Shor [7]
e de-randomizado por Chazelle [5]. i
i
randomizados 2007/4/30 11:48 page 105 #111
i
i
i
i
i
i
Captulo 5
O Metodo
Probabilstico
Algoritmos randomizados, alem de poderem oferecer bom custo-be-
nefcio na solu c ao de problemas combinat orios, introduziram uma
poderosa ferramenta para provas de existencia: o chamado metodo
probabilstico. A ideia e utilizarmos algoritmos randomizados e as
probabilidades a eles associadas para provar (com certeza!) a exis-
tencia de determinada propriedade ou objeto. A se c ao 5.1 discute
o metodo da probabilidade positiva e o metodo da esperan ca para
provas de existencia, exemplicando-os com problemas de teoria dos
grafos.
Em alguns casos, e tambem possvel de-randomizar algoritmos
randomizados, obtendo algoritmos determinsticos cuja corretude e
provada pelo metodo probabilstico. A se c ao 5.2 apresenta o metodo
das esperan cas condicionais para a obten c ao de algoritmos deter-
minsticos a partir de algoritmos randomizados.
5.1 Provas de existencia
Imagine-se num pas desconhecido sobre cuja moeda voce nada sabe.
H a um ba u contendo moedas locais. Voce desconhece totalmente
quais sejam os valores das moedas existentes naquele pas. Ora, se
105 i
i
randomizados 2007/4/30 11:48 page 106 #112
i
i
i
i
i
i
106 [CAP. 5: O M
ETODO PROBABIL
ISTICO
um nativo lhe informa que e nula a probabilidade de que uma moeda
retirada do ba u ao acaso seja uma moeda de, digamos, 3 dinheiros,
isso n ao lhe agrega muita informa c ao quanto aos tipos de moedas
emitidas naquele pas. Sequer poderia voce concluir que n ao existem
moedas locais de 3 dinheiros, pois e bem possvel que aquele ba u,
em particular, n ao tenha sido abastecido com moeda alguma daquele
valor. Por outro lado, se o nativo lhe informasse ser positiva a proba-
bilidade de que uma moeda retirada ao acaso fosse uma moeda de 3
dinheiros, ele estaria lhe informando, n ao h a d uvida, que existe pelo
menos uma moeda de tres dinheiros no sistema monet ario daquele
pas! Note bem que n ao importa qual seja aquela probabilidade,
contanto seja estritamente maior do que zero existe a tal moeda!
Suponha agora que voce, naquele mesmo pas desconhecido, se
interesse pelos sal arios pagos aos professores de matem atica locais.
Voce toma conhecimento de um estudo que revela que a media salarial
da classe dos professores de matem atica
1
e de 500 dinheiros. Ora, este
dado traz consigo duas informa c oes extras: existe algum professor
de matem atica ganhando 500 dinheiros ou menos; e existe algum
professor de matem atica ganhando 500 dinheiros ou mais.
Esses dois exemplos ilustram as estrategias de prova mais simples
baseadas no metodo probabilstico. Nas notas bibliogr acas, indica-
mos onde encontrar o lema Local de Lov asz e o metodo do segundo
momento, que s ao ferramentas de prova mais sosticadas.
5.1.1 O metodo da probabilidade positiva
Seja K
40
o grafo completo
2
de 40 vertices. Deseja-se saber se e
possvel 2-colorir suas
_
40
2
_
= 780 arestas
3
de forma que n ao haja
nenhuma clique monocrom atica
4
de tamanho maior ou igual a 8.
1
O mesmo que o valor esperado, ou esperan ca, da vari avel aleat oria S denida
como o sal ario de um professor de matem atica sorteado aleat oria e uniformemente
do universo de professores de matem atica daquele pas.
2
Um grafo e completo se cada um de seus vertices e adjacente a todos os
demais vertices do grafo.
3
Uma d-colora c ao em arestas e uma fun c ao do conjunto de arestas de um grafo
em um conjunto qualquer de d elementos, ditos cores.
4
Uma clique de um grafo e um subgrafo completo. Uma clique e mono-
crom atica, no contexto da colora c ao de arestas, se todas as suas arestas possuem
a mesma cor. i
i
randomizados 2007/4/30 11:48 page 107 #113
i
i
i
i
i
i
[SEC. 5.1: PROVAS DE EXIST
ENCIA 107
Entrada:
G: um grafo.
Sada:
Uma 2-colora cao de G.
colora cao(G):
para cada aresta a do grafo G:
jogue uma moeda
se cara, pinte a de azul; se coroa, pinte a de amarelo
retorne a colora cao assim obtida
Figura 5.1: Algoritmo randomizado para 2-colorir um grafo.
Seja o espa co amostral constitudo de todas as 2
780
2-colora c oes
possveis para o K
40
. Se mostrarmos que, ao selecionarmos randomi-
camente um elemento daquele espa co amostral, e estritamente posi-
tiva a probabilidade de que aquele elemento possua a caracterstica
desejada, isto e, trate-se de uma 2-colora c ao em arestas que n ao
contem cliques monocrom aticas de tamanho maior ou igual a 8, ent ao
teremos provado que tal colora c ao existe.
Voltemos nossa aten c ao, agora, para o algoritmo randomizado da
gura 5.1.
Qual a probabilidade da resposta obtida por uma chamada a co-
lora cao(K
40
) atender ao criterio de n ao conter cliques monocrom aticas
grandes?
Notemos, em primeiro lugar, que n ao possuir cliques monocrom a-
ticas de tamanho maior ou igual a 8 e exatamente o mesmo que n ao
possuir cliques monocrom aticas de tamanho igual a 8 (convidamos o
leitor a conferir, mentalmente, esta equivalencia). Ora, chamemos C
i
,
i = 1, . . . ,
_
40
8
_
, ` as cliques de tamanho 8 de nosso K
40
e seja M
i
o
evento em que as arestas de C
i
s ao todas azuis ou todas amarelas na
colora c ao retornada pelo nosso algoritmo.
E facil ver que
Pr[M
i
] =
1
2
(
8
2
)
1
= 2
27
. i
i
randomizados 2007/4/30 11:48 page 108 #114
i
i
i
i
i
i
108 [CAP. 5: O M
ETODO PROBABIL
ISTICO
Estamos interessados em
Pr
_
_
(
40
8
)
i=1
M
i
_
_
= 1 Pr
_
_
(
40
8
)
_
i=1
M
i
_
_
.
Pelo limite da uni ao, temos
Pr
_
_
(
40
8
)
_
i=1
M
i
_
_
(
40
8
)
i=1
Pr[M
i
] =
_
40
8
_
2
27
< 0,573.
Chegamos, portanto, a
Pr
_
_
(
40
8
)
i=1
M
i
_
_
> 1 0,573 = 0,427 > 0.
Conclui-se, assim, que existe uma tal colora c ao.
O mesmo raciocnio nos permite provar a existencia de 2-colo-
ra c oes para o K
5817
onde n ao h a cliques monocrom aticas de tama-
nho 20 (a probabilidade utilizada na prova pelo metodo probabilstico
e maior que 0,00233, portanto ainda estritamente positiva). Nada po-
deramos concluir sobre a existencia de 2-colora c oes para o K
5818
sem
cliques monocrom aticas de tamanho 20.
Dene-se um espa co probabilstico e prova-se positiva a
probabilidade de um objeto selecionado aleatoriamente pos-
suir determinada propriedade conclui-se que existe um
objeto com a propriedade em quest ao.
5.1.2 O metodo da esperan ca
O problema do corte m aximo de um grafo e NP-difcil. Um corte
e uma parti c ao dos vertices de um grafo em dois conjuntos, onde o
n umero de arestas que liga um vertice de um dos conjuntos a um
vertice do outro conjunto constitui o tamanho do corte.
Sendo difcil obter o tamanho do corte m aximo, pode-se desejar
saber se h a algum corte grande, ou seja, contendo um n umero mnimo
de arestas, ainda que n ao seja este n umero o maior possvel. i
i
randomizados 2007/4/30 11:48 page 109 #115
i
i
i
i
i
i
[SEC. 5.1: PROVAS DE EXIST
ENCIA 109
Entrada:
G: um grafo.
Sada:
Um corte de G.
corte(G):
crie dois conjuntos A e B inicialmente vazios
para cada vertice v do grafo, jogue uma moeda
se cara, coloque v em A; se coroa, coloque v em B
retorne o corte assim obtido
Figura 5.2: Algoritmo randomizado para obter um corte.
Usando o metodo probabilstico, consegue-se provar que h a sem-
pre um corte de tamanho maior ou igual a m/2, isto e, ` a metade do
n umero de arestas do grafo.
Seja o algoritmo randomizado da gura 5.2 para encontrar um
corte em um grafo.
Estamos interessados no valor esperado da vari avel aleat oria
C(A, B) denida como o tamanho do corte dessa forma obtido.
Criemos um indicador de Bernoulli X
i
, para cada aresta a
i
do
grafo, denido como
X
i
=
_
1, se a
i
conecta A a B;
0, caso contr ario.
A esperan ca de cada X
i
e igual a probabilidade de a
i
ligar A
a B, que e a probabilidade de que os extremos de a
i
n ao tenham sido
colocados no mesmo conjunto, isto e, 1/2.
i=1
X
i
_
=
m
i=1
E[X
i
] =
m
2
.
Portanto, existe corte de tamanho maior ou igual a m/2. i
i
randomizados 2007/4/30 11:48 page 110 #116
i
i
i
i
i
i
110 [CAP. 5: O M
ETODO PROBABIL
ISTICO
Dene-se um espa co probabilstico e obtem-se a esperan-
ca E[X] = de uma vari avel aleat oria X denida para
aquele espa co conclui-se que s ao positivas Pr[X ]
e Pr[X ] e, portanto, existe elemento naquele espa co
para o qual X tem valor menor ou igual a e existe ele-
mento naquele espa co para o qual X tem valor maior ou
igual a .
5.2 De-randomiza cao
Na prova de existencia de cortes com pelo menos metade do n umero
de arestas de um grafo, e embora n ao tenhamos atentado para este
fato, estivemos diante de um algoritmo de Las Vegas para localizar
um corte com pelo menos aquele n umero de arestas. O pseudo-c odigo
de tal algoritmo encontra-se na gura 5.3.
Cada itera c ao do la co principal do algoritmo da gura 5.3 encontra
um corte de tamanho maior ou igual a m/2 com probabilidade p.
O n umero de itera c oes ate que seja encontrado o primeiro corte de
tamanho maior ou igual a m/2 e, portanto, uma vari avel geometrica
cuja esperan ca e 1/p. Calculando p, chegamos facilmente ao tempo
esperado de execu c ao de nosso algoritmo de Las Vegas.
Queremos calcular p = Pr[C(A, B)
m
2
].
Sabemos que
m
2
= E[C(A, B)]
=
m/21
i=0
i Pr[C(A, B) = i] +
m
i=m/2
i Pr[C(A, B) = i].
A primeira parcela acima e menor ou igual a
(m/2 1)
m/21
i=0
Pr[C(A, B) = i] = (m/2 1)(1 p)
e a segunda parcela e menor ou igual a
m
m
i=m/2
Pr[C(A, B) = i] = mp. i
i
randomizados 2007/4/30 11:48 page 111 #117
i
i
i
i
i
i
[SEC. 5.2: DE-RANDOMIZAC
AO 111
Entrada:
G: um grafo.
Sada:
Um corte de G com pelo menos metade de suas arestas.
corteGrandeLasVegas(G):
repita:
crie dois conjuntos A e B inicialmente vazios
para cada vertice v do grafo, jogue uma moeda
se cara, coloque v em A; se coroa, coloque v em B
se o tamanho do corte e maior ou igual a m/2, retorne-o
ate que um corte seja retornado
Figura 5.3: Algoritmo randomizado para obter um corte grande.
Portanto,
m
2
_
m
2
1
_
(1 p) +mp,
implicando
p
1
1 +
m
2
e um valor esperado menor ou igual a 1 + m/2 para o n umero de
itera c oes em uma execu c ao do algoritmo.
Veremos, agora, uma maneira de de-randomizar o algoritmo para
encontrar cortes grandes de forma determinstica.
5.2.1 O metodo das esperan cas condicionais
A ideia central do metodo das esperan cas condicionais e quase genial
de t ao simples: se h a um algoritmo que, fazendo escolhas rand omicas
a cada passo, resulta num valor esperado para uma certa vari avel
aleat oria X, podemos retirar a aleatoriedade do algoritmo, ajudando-
o, por assim dizer, a tomar as decis oes que garantam que o valor
atribudo a X n ao ser a pior (menor ou maior, dependendo do que
se deseje) do que . i
i
randomizados 2007/4/30 11:48 page 112 #118
i
i
i
i
i
i
112 [CAP. 5: O M
ETODO PROBABIL
ISTICO
Seja o algoritmo da gura 5.2. O corte retornado, quando os
vertices s ao, um a um, colocados aleatoriamente em A ou B tem ta-
manho esperado m/2 podendo, evidentemente, ser maior ou menor
que m/2 numa itera c ao em particular.
Seja, agora, E
k
[X] = E[X [ Y
1
, Y
2
, . . . , Y
k
] a esperan ca de X
condicionada ao fato de que os primeiros k vertices j a foram, ` aquele
momento, posicionados em A ou B (a vari avel aleat oria Y
i
assume o
valor simb olico A ou B de acordo com o conjunto em que v
i
foi
posicionado). Note que E[X] = E
0
[X] = m/2.
Pensemos no momento em que o (k + 1)-esimo vertice v
k+1
ser a
colocado em A ou B, segundo o lan camento da moeda. Ora, se
pudessemos abandonar a moeda e escolher deterministicamente o
conjunto em que v
k+1
ser a posicionado, de forma a garantir E
k+1
[X]
E
k
[X], ent ao teramos, por indu c ao em k, um metodo determinstico
que posicionaria todos os n vertices do grafo em A ou B de forma a
garantir que o tamanho do corte retornado no nal, ou E
n
[X], seria
maior ou igual a E
0
[X] = m/2.
Em outras palavras, queremos provar por indu c ao no n umero
de vertices j a posicionados em passos anteriores que e possvel,
a cada passo, escolher deterministicamente o conjunto em que cada
vertice ser a posicionado, de forma a obter um corte de tamanho maior
ou igual ao valor esperado m/2 para o tamanho do corte que seria
retornado pelo algoritmo randomizado. A prova por indu c ao tem a
seguinte estrutura:
base: E[X [ Y
1
= A] = E
0
[X], por simetria (o primeiro vertice
considerado pode ser colocado em A ou B indistintamente).
passo indutivo: E
k+1
[X] E
k
[X], o que ser a garantido ao se esco-
lher deterministicamente a posi c ao de v
k+1
.
conclus ao: o corte retornado pelo algoritmo de-randomizado tem
tamanho E
n
[X] E
0
[X] = m/2.
A estrategia ditada pelo metodo das esperan cas condicionais nos
garantir a o passo indutivo exposto acima, permitindo-nos, portanto,
de-randomizar o algoritmo original. Mas como consegui-lo? Como
fazer todas as escolhas de forma garantidamente n ao-pior do que o
faria uma sucess ao de lan camentos da moeda? i
i
randomizados 2007/4/30 11:48 page 113 #119
i
i
i
i
i
i
[SEC. 5.2: DE-RANDOMIZAC
AO 113
Entrada:
G: um grafo.
Sada:
Um corte de G com pelo menos metade de suas arestas.
corteGrande(G):
sejam A e B dois conjuntos inicialmente vazios
posicione v
1
arbitrariamente em A
para cada vertice v
i
, i = 2, . . . , n fa ca
se v
i
possui menos vizinhos em A do que em B
coloque v
i
em A
senao coloque v
i
em B
retorne o corte assim obtido
Figura 5.4: Algoritmo de-randomizado para obter um corte grande.
Ora, se o posicionamento de v
k+1
e denido pelo lan camento de
uma moeda, ent ao
E
k
[X] = E[X[(Y
1
, . . . , Y
k
) (Y
k+1
= A)] Pr[Y
k+1
= A]
+ E[X[(Y
1
, . . . , Y
k
) (Y
k+1
= B)] Pr[Y
k+1
= B]
= E[X[(Y
1
, . . . , Y
k
) (Y
k+1
= A)]
1
2
+ E[X[(Y
1
, . . . , Y
k
) (Y
k+1
= B)]
1
2
=
1
2
E[X[(Y
1
, . . . , Y
k
) (Y
k+1
= A)]
+ E[X[(Y
1
, . . . , Y
k
) (Y
k+1
= B)] .
Dessa forma, o maior entre E[X[(Y
1
, . . . , Y
k
) (Y
k+1
= A)] e
E[X[(Y
1
, . . . , Y
k
) (Y
k+1
= B)] e necessariamente maior do que
E
k
[X], e s o o que nosso algoritmo de-randomizado precisar a fazer
para n ao fazer pior do que a moeda e saber avaliar o maior dentre
E[X[(Y
1
, . . . , Y
k
)(Y
k+1
= A)] e E[X[(Y
1
, . . . , Y
k
)(Y
k+1
= B)]
para escolher o conjunto A ou B para posicionar v
k+1
.
E f acil ver
que a escolha do destino de v
k+1
que maximiza E
k+1
[X] e aquele i
i
randomizados 2007/4/30 11:48 page 114 #120
i
i
i
i
i
i
114 [CAP. 5: O M
ETODO PROBABIL
ISTICO
em que v
k+1
e colocado no conjunto (A ou B) que possua menos
vizinhos de v
k+1
, contribuindo assim com o maior n umero possvel
de arestas para o corte (isto e, ligando A a B). Desempates podem
ser resolvidos arbitrariamente.
Nosso algoritmo ca, portanto, como mostrado na gura 5.4.
N ao h a, portanto, em momento algum, qualquer experimento
aleat orio a ditar-lhe os passos e o corte retornado tem tamanho,
como se provou, maior ou igual a m/2.
Nem sempre e f acil, ou sequer possvel, de-randomizar
um algoritmo utilizando o metodo das esperan cas condi-
cionais.
5.3 Exerccios
1. O problema da satisfatibilidade (SAT) foi o primeiro problema
sabidamente NP-completo, como provado por Cook [8] em 1971.
Trata-se de descobrir se uma express ao booleana envolvendo
apenas vari aveis, parenteses e os operandos para conjun c ao
(AND), disjun c ao (OR) e nega c ao (NOT) pode ser satis-
feita, isto e, se existe alguma atribui c ao de valor ` as vari aveis
booleanas envolvidas que fa ca com que a express ao inteira te-
nha valor VERDADEIRO. Mesmo a vers ao do problema em
que a express ao e dada na forma normal conjuntiva
5
com 3 lite-
rais por cl ausula (chamada 3-SAT) e ainda NP-completa, como
provado por Karp no seu famoso texto dos 21 problemas [29].
Abaixo um exemplo de entrada para o 3-SAT com 4 cl ausulas
em 5 vari aveis:
(x
1
OR x
2
OR x
5
) AND
(x
2
OR x
3
OR x
4
) AND
(x
3
OR x
4
OR x
5
) AND
(x
1
OR x
4
OR x
5
).
5
Express oes booleanas na forma normal conjuntiva apresentam-se como uma
conjun c ao de cl ausulas, cada qual uma disjun c ao de literais. Literais s ao vari aveis
booleanas ou suas nega c oes. Indicamos por x a nega c ao da vari avel x, isto e,
NOT(x). i
i
randomizados 2007/4/30 11:48 page 115 #121
i
i
i
i
i
i
[SEC. 5.4: NOTAS BIBLIOGR
AFICAS 115
Mostre, pelo metodo probabilstico, que, para toda entrada
de 3-SAT com n vari aveis e m cl ausulas, h a sempre alguma
atribui c ao booleana x 0, 1
n
que satisfaz pelo menos 7m/8
cl ausulas.
2. O n umero de Ramsey R(r, s) e o menor inteiro para o qual e
verdade que, dado um grafo completo G com R(r, s) vertices
ou mais e cujas arestas est ao particionadas em dois conjuntos
(o conjunto das arestas amarelas e o das arestas azuis, por
exemplo), G possui um subgrafo completo de r vertices cujas
arestas s ao todas amarelas ou um subgrafo completo de s
vertices cujas arestas s ao todas azuis.
(a) Mostre que R(3, 3) = 6.
(b) Do exposto na se c ao 5.1.1, o que se consegue inferir sobre
R(8, 8)?
(c) Ainda n ao e conhecido o valor de R(5, 5). Use o metodo
probabilstico para provar um limite inferior para este n u-
mero.
3. (a) Prove que, para todo inteiro n, existe uma 2-colora c ao das
arestas do grafo completo K
n
tal que o n umero total de
c opias monocrom aticas do K
4
e no m aximo
_
n
4
_
2
5
.
(b) De um algoritmo randomizado polinomial (em n) para en-
contrar uma tal colora c ao.
(c) Mostre como construir um algoritmo determinstico base-
ado no algoritmo do item anterior, e usando o metodo das
esperan cas condicionais.
5.4 Notas bibliogracas
A referencia obrigat oria para o metodo probabilstico e o livro de
Alon e Spencer [2], alem dos captulos sobre o tema encontrados nos
livros de Motwani e Raghavan [41] e Mitzenmacher e Upfal [39]. Em
portugues, uma introdu c ao aos n umeros de Ramsey e ao metodo
probabilstico e encontrada no livro de Moreira e Kohayakawa [40]. i
i
randomizados 2007/4/30 11:48 page 116 #122
i
i
i
i
i
i
116 [CAP. 5: O M
ETODO PROBABIL
ISTICO
A NP-completude do problema do corte m aximo foi demonstrada
por Garey, Johnson e Stockmeyer [25] em 1976. Referimos o leitor
aos textos de Festa, Pardalos, Resende e Ribeiro [20] e de Goemans
e Williamson [26] para exemplos de heursticas randomizadas para o
problema.
De-randomiza c ao e tema de pesquisa muito recente, mas que j a
conta com bom material publicado. Um bom survey e o de Valen-
tine Kabanets [30]. Recomendamos tambem o captulo de Peter Bro
Miltersen em [38]. Em portugues, o livro de Fernandes, Miyazawa,
Cerioli e Feolo [19] dedica um captulo ao tema. i
i
randomizados 2007/4/30 11:48 page 117 #123
i
i
i
i
i
i
Bibliograa
[1] M. Agrawal, N. Kayal e N. Saxena. Primes is in P. Ann. of
Math., 160(2), 781793, 2004.
[2] N. Alon e J. Spencer (com apendice de Paul Erd os). The Probabi-
listic Method. Wiley-Interscience Series in Discrete Mathematics
and Optimization. John Wiley & Sons, Inc., New York, 1992.
[3] B. Bollob as. Random Graphs. Cambridge University Press,
Cambridge, 2001.
[4] J. L. Carter e M. N. Wegman. Universal classes of hash functions.
J. Comput. System Sci., 18(2), 143154, 1979.
[5] B. Chazelle. An optimal convex hull algorithm in any xed di-
mension. Discrete Comput. Geom., 10(4), 377409, 1993.
[6] B. Chazelle e J. Friedman. A deterministic view of random sam-
pling and its use in geometry. Combinatorica, 10(3), 229249,
1990.
[7] K. L. Clarkson e P. W. Shor. Applications of random sampling
in computational geometry II. Discrete Comput. Geom., 4(5),
387421, 1989.
[8] S. A. Cook. The complexity of theorem-proving procedures. Pro-
ceedings of the 3rd Annual ACM Symposium on Theory of Com-
puting, 151158, Association for Computing Machinery, 1971.
[9] C. Cooper e A. M. Frieze. On the number of Hamilton cycles in
a random graph. J. Graph Theory, 13(6), 719735, 1989.
117 i
i
randomizados 2007/4/30 11:48 page 118 #124
i
i
i
i
i
i
118 BIBLIOGRAFIA
[10] C. Cooper e A. M. Frieze. Hamilton cycles in random graphs and
directed graphs. Random Structures Algorithms, 16(4), 369401,
2000.
[11] T. H. Cormen, C. E. Leiserson, R. L. Rivest e C. Stein. Intro-
duction to Algorithms. McGraw-Hill Higher Education, 2001.
[12] S. C. Coutinho. N umeros Inteiros e Criptograa RSA. Serie de
Computa c ao e Matem atica, 2. Instituto de Matem atica Pura e
Aplicada (IMPA), Sociedade Brasileira de Matem atica, Rio de
Janeiro, 2000.
[13] S. C. Coutinho. Primalidade em Tempo Polinomial: Uma In-
trodu c ao ao Algoritmo AKS. Cole c ao Inicia c ao Cientca, 2.
Sociedade Brasileira de Matem atica, Rio de Janeiro, 2004.
[14] R. Crandall e C. Pomerance. Prime Numbers: A Computational
Perspective. Springer, New York, 2005.
[15] M. de Berg, M. van Kreveld, M. Overmars e O. Schwarzkopf.
Computational Geometry: Algorithms and Applications. Sprin-
ger, segunda edi c ao, 2000.
[16] B. C. Dean. A simple expected running time analysis for rando-
mized divide and conquer algorithms. Discrete Appl. Math.,
154(1), 15, 2006.
[17] J. Edmonds e K. Pruhs. Balanced allocations of cake. Proce-
edings of the 47th Annual IEEE Symposium on Foundations of
Computer Science, 623634, IEEE Computer Society, 2006.
[18] P. Erd os e A. Renyi. On random graphs. Publ. Math. Debrecen,
6, 290297, 1959.
[19] C. G. Fernandes, F. K. Miyazawa, M. R. Cerioli e P. Feo-
lo. Uma Introdu c ao Sucinta a Algoritmos de Aproxima c ao.
Publica c oes Matem aticas do IMPA. 23