Você está na página 1de 131

Introduo aos

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.

E evidente, no entanto, que computadores n ao podem valer-se de


tais expedientes fsicos ou mesmo l udicos. Portanto, na pr atica, o que
entra em cena nos papeis de dados e moedas s ao os famosos geradores
de n umeros aleat orios
1
.
Geradores de n umeros aleat orios, por sua vez, nada mais s ao do
que algoritmos determinsticos! que, utilizando fun c oes de dis-
pers ao e valores obtidos do rel ogio interno da m aquina, s ao capazes
de simular o sorteio de um n umero, tirado de um conjunto nito
deles, com distribui c ao de probabilidade t ao pr oxima da uniforme
2
quanto melhor o gerador.
Recentemente, algoritmos randomizados tem encontrado aplica-
c ao em areas t ao distintas quanto computa c ao algebrica, criptograa,
geometria computacional, protocolos de redes, computa c ao distribu-
da, teoria dos grafos, estruturas de dados e outras. O motivo: algo-
ritmos randomizados s ao, quando comparados a seus correspondentes
determinsticos, em geral mais simples ou mais ecientes ou ambos.
Poderia soar bastante estranho que a introdu c ao de aleatoriedade
num reino digital j a t ao aparentemente imprevisvel viesse ao inves
de piorar ainda mais as coisas trazer ao mesmo tempo eciencia
e simplicidade sem cobrar por isso qualquer pre co. Mas h a, de fato,
um pre co: a incerteza. Incerteza essa que pode aparecer em um de
dois lugares: na pr opria qualidade da resposta obtida pelo algoritmo
que pode, em alguns casos, estar errada! ou em seu tempo de
execu c ao, que passa a depender n ao mais exclusivamente da entrada
do problema, mas tambem dos resultados dos experimentos aleat orios
empregados pelo algoritmo.
Felizmente, como veremos, o pre co cobrado pelos algoritmos ran-
domizados cuja incerteza recai na qualidade das respostas por eles
obtidas n ao e injustamente alto. De fato, n ao apenas e possvel ter-
mos total conhecimento do qu ao (im)prov avel e a exibi c ao de uma
resposta incorreta por parte deles, como podemos tambem negociar
1
Tambem chamados geradores de n umeros pseudo-aleat orios, o que, embora
possa soar um pouco pedante, e mais correto.
2
Uma distribui c ao de probabilidade e uniforme quando todos os resultados do
experimento aleat orio ocorrem com identica probabilidade. i
i
randomizados 2007/4/30 11:48 page 3 #9
i
i
i
i
i
i
3
esse pre co em troca da moeda tempo. Permitindo-lhes o emprego de
uma maior quantidade de tempo computacional, consegue-se renar
a probabilidade de erro a nveis t ao nmos quanto se queira. Vere-
mos tambem que, quando essa diminui c ao da probabilidade de erro se
d a exponencialmente com a quantidade de tempo empregada, como
acontece na maioria dos casos interessantes, podemos estar diante de
um algoritmo randomizado eciente e util, situa c ao essa certamente
bastante desej avel.
J a a incerteza presente naqueles outros algoritmos cujo tempo
de execu c ao n ao pode ser deterministicamente previsto volta-se
quase sempre a seu pr oprio favor. A ideia central e a de que, por
pior que seja a entrada do problema, seu tempo de execu c ao ser a,
com alta probabilidade, bom. Um paradigma muito util aqui e o
do advers ario malicioso, uma entidade supostamente conhecedora de
cada linha de nosso algoritmo e que, implac avel, submete-lhe sem-
pre uma inst ancia de entrada t ao desfavor avel quanto possvel, isto
e, aquela que dele exigir a a execu c ao do n umero m aximo de passos.
Tal entidade cujas a c oes assumem, na pr atica, formas t ao prosai-
cas quanto seq uencias pre-ordenadas de n umeros ou grafos conexos
2-regulares nada pode contra algoritmos randomizados, uma vez
que desconhece as escolhas aleat orias que ser ao por eles feitas. Ou
seja, a mesma incerteza que, por um lado, n ao nos permite prever
exatamente o tempo de execu c ao para uma determinada inst ancia do
problema (por exemplo, para a pior possvel) e, por outro, o que nos
garante que uma entrada jamais ser a ruim o suciente para obrigar
nosso algoritmo a executar um n umero excessivo de passos passos
que seriam, talvez, for cosamente executados por um algoritmo deter-
minstico ao se ver diante dessa ou daquela inst ancia desfavor avel.
Este primeiro captulo e a introdu c ao, propriamente dita, aos al-
goritmos randomizados. Fazemos, nas se c oes 1.1 e 1.2, uma breve
revis ao de t opicos b asicos de probabilidade, vari aveis aleat orias e de-
sigualdades de cauda, necess arios ao bom entendimento das an alises
dos algoritmos que aparecem ao longo do texto. Na se c ao 1.3, des-
crevemos as duas principais famlias de algoritmos randomizados
Monte Carlo e Las Vegas e apresentamos a argumenta c ao combi-
nat oria que as justica, ilustrando-as com exemplos f aceis e did aticos.
Na se c ao 1.4 encontram-se as classes de complexidade ` as quais per-
tencem os problemas que podem ser resolvidos por algoritmos ran- i
i
randomizados 2007/4/30 11:48 page 4 #10
i
i
i
i
i
i
4 [CAP. 1: RANDOMIZADOS?
domizados. O captulo se encerra com se c oes de exerccios e notas
bibliogr acas, como acontecer a tambem nos demais captulos deste
texto.
O Captulo 2 aborda a an alise probabilstica de algoritmos, bem
como alguns dos paradigmas combinat orios mais comuns relacionados
a nosso tema. Algoritmos de ordena c ao bem conhecidos s ao utilizados
para ilustrar as ideias principais.
Primalidade e o tema de nosso Captulo 3. Por exigir este tema
ferramentas matem aticas pr oprias e decerto mais complexas que aque-
las necess arias aos demais captulos, adotamos aqui uma abordagem
mais lenta, no sentido em que nos concedemos voltar a deni c oes
b asicas de onde resultados mais complexos s ao ent ao, pouco a pouco,
inferidos. Permitimos, assim, que o leitor acumule, ao longo de quase
todo o captulo, o conhecimento que se faz essencial para o entendi-
mento de um dos algoritmos randomizados mais importantes, famosos
e utilizados na pr atica: o algoritmo de Rabin para primalidade.
No Captulo 4, discutimos alguns problemas de geometria com-
putacional, area que vem se mostrando fertil para o orescimento de
algoritmos randomizados interessantes e ecientes como os que s ao
nesse captulo apresentados.
O Captulo 5 fecha este texto apresentando o metodo proba-
bilstico para provas de existencia e de-randomiza c ao.
1.1 Probabilidade basica

E evidente que o estudo de algoritmos randomizados n ao poderia


prescindir de alguma dose de c alculo de probabilidades, pelo que
ent ao fazemos agora uma breve e informal revis ao de alguns de seus
mais importantes conceitos. Procuramos ilustrar cada um dos t opicos
com exemplos f aceis, e recomendamos as notas bibliogr acas ao nal
deste captulo para material mais aprofundado.
1.1.1 Axiomas e deni c oes
Espa co probabilstico, espa co amostral e eventos
Sempre que se fala em probabilidade, e preciso deixar claro o espa co
probabilstico sobre o qual as probabilidades s ao aferidas. Um espa co i
i
randomizados 2007/4/30 11:48 page 5 #11
i
i
i
i
i
i
[SEC. 1.1: PROBABILIDADE B

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.

E claro que, aqui, estamos diante do evento D = 2, 3, 4, 6 e, pela


condi c ao 3 da deni c ao da fun c ao de probabilidade, temos que Pr[D]
= Pr[2] + Pr[3] + Pr[4] + Pr[6] = 4/6. No entanto, po-
deramos pensar em D como sendo a uni ao dos eventos resultado
par e resultado m ultiplo de 3, isto e, D
1
= 2, 4, 6 e D
2
= 3, 6,
respectivamente. Sendo assim, e aplicando o princpio da inclus ao-
exclus ao que queremos ilustrar, teramos
Pr[D] = Pr[D
1
D
2
]
= Pr[D
1
] +Pr[D
2
] Pr[D
1
D
2
]
= Pr[2, 4, 6] +Pr[3, 6] Pr[6]
= 3/6 + 2/6 1/6
= 4/6.
Limite da uniao
Decorre do princpio da inclus ao-exclus ao a seguinte desigualdade,
t ao simples quanto util na obten c ao de limites para diversas proba- i
i
randomizados 2007/4/30 11:48 page 7 #13
i
i
i
i
i
i
[SEC. 1.1: PROBABILIDADE B

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).

E comum chamarmos de sucesso ao evento para o qual o indi-


cador de Bernoulli recebe valor 1, e de fracasso a seu complemento.
Sendo p a probabilidade associada ao sucesso, temos a seguinte den-
sidade de probabilidade para nossa vari avel de Bernoulli:
p
X
(x) =
_
_
_
1 p se x = 0
p se x = 1
0 para todos os demais valores de x.
O evento em quest ao, propriamente dito, pode ser qualquer. Por
exemplo, suponha uma roleta numerada de 0 a 36 onde a probabi-
lidade de se obter qualquer um dos n umeros e identica e, portanto, i
i
randomizados 2007/4/30 11:48 page 12 #18
i
i
i
i
i
i
12 [CAP. 1: RANDOMIZADOS?
igual a 1/37. Estamos interessados em saber se, numa dada rodada
da roleta, houve ou n ao, como resultado, o n umero zero (que, no
famoso jogo de azar, e associado a ganho da banca). Teramos,
nesse caso, sucesso denido como o evento em que zero e o n umero
sorteado, sendo fracasso o evento complementar em que sai qualquer
outro n umero entre 1 e 36. A probabilidade de sucesso associada a
nossa vari avel de Bernoulli seria, portanto, de 1/37.

E facilmente demonstr avel que a esperan ca de uma vari avel alea-


t oria de Bernoulli e igual ` a probabilidade de sucesso p. Sua vari ancia
e p(1 p).
Variavel aleat oria binomial
A vari avel aleat oria binomial aparece, normalmente, quando se deseja
indicar o total de sucessos obtidos ap os uma seq uencia de n experi-
mentos rand omicos identicos e independentes. Em outras palavras,
pode ser entendida como a soma de n indicadores de Bernoulli, cada
um dos quais associado a uma mesma probabilidade de sucesso p.
J a vimos sem o termos anunciado a vari avel aleat oria bi-
nomial, quando nos interessamos pelo n umero total de coroas ob-
tidas em seis lan camentos consecutivos de uma moeda. Trata-se,
portanto, de uma binomial X que pode ser entendida como a soma
X = X
1
+ X
2
+ + X
6
de indicadores de Bernoulli, cada um dos
quais associado a uma probabilidade de sucesso igual a 1/2.
Usualmente, abreviam-se vari aveis aleat orias binomiais com pa-
r ametros n (n umero de repeti c oes de um experimento) e p (probabili-
dade de que uma execu c ao do experimento resulte em sucesso) como
B(n, p). Sua densidade de probabilidade e dada por
p
X
(x) =
_
n
x
_
p
x
(1 p)
nx
,
para 0 x n e x inteiro. Todos os demais valores reais de x
resultam em p
X
(x) = 0.
A esperan ca E[X] de uma vari avel aleat oria X com distribui c ao
binomial B(n, p) e igual a np, como pode ser facilmente vericado.
Para obtermos a vari ancia da binomial, e preciso conhecermos
E[X
2
] = n(n 1)p
2
+ np, que resulta diretamente da deni c ao de i
i
randomizados 2007/4/30 11:48 page 13 #19
i
i
i
i
i
i
[SEC. 1.3: MONTE CARLO E LAS VEGAS 13
esperan ca, mas cujos c alculos n ao apresentamos aqui. Chega-se, as-
sim, a Var[X] = np(1 p).
Variavel aleat oria geometrica
Quando, ao inves de nos interessarmos pelo total de sucessos numa
seq uencia, estamos preocupados com o n umero de repeti c oes de um
experimento rand omico ate o momento em que o primeiro sucesso
tenha sido observado, estamos diante de uma vari avel aleat oria geo-
metrica.
Suponha que, no exemplo da moeda, n ao limit assemos em 6 o
n umero de lan camentos, mas, do contr ario lan c assemos a moeda o
n umero de vezes que fosse necess ario ate o aparecimento da primeira,
digamos, coroa. Este n umero e exatamente o valor assumido por
nossa vari avel aleat oria geometrica.
A densidade de uma geometrica X com probabilidade de sucesso p
e dada por
p
X
(x) =
_
p(1 p)
x1
para x = 1, 2, 3, . . .
0 para todos os demais valores de x.
A esperan ca de uma geometrica e o inverso de sua probabilidade
de sucesso, ou E[X] = 1/p. Sua vari ancia e (1 p)/p
2
.
1.3 Monte Carlo e Las Vegas
Voltemos, agora, ao assunto que mais nos interessa: algoritmos ran-
domizados. Como o adiant aramos na introdu c ao, portanto, existem
dois grandes grupos de algoritmos randomizados, que se disting uem
um do outro pela localiza c ao da incerteza que resulta da presen ca de
experimentos aleat orios a dirigir-lhes de algum modo os passos: se
na pr opria corretude da resposta apresentada, s ao ditos algoritmos de
Monte Carlo; se em seu tempo de execu c ao, s ao chamados algoritmos
de Las Vegas.
Da aplica c ao real depende a maior adequa c ao de um ou outro
tipo. Se e preciso a garantia de que o tempo exigido pelo algoritmo
ser a deterministicamente limitado, em todas as suas execu c oes, por
uma certa fun c ao do tamanho da entrada, um algoritmo de Monte i
i
randomizados 2007/4/30 11:48 page 14 #20
i
i
i
i
i
i
14 [CAP. 1: RANDOMIZADOS?
Carlo e certamente o mais indicado, e uma margem diminuta de erro
pode mesmo ser irrelevante diante da certeza de boa performance que
ele venha a oferecer. J a a necessidade de se estar sempre diante da
resposta correta aponta o uso de um algoritmo de Las Vegas.
Na maior parte das vezes, no entanto, o que permite ou sugere
a constru c ao de algoritmos de um ou outro tipo e o conjunto de
caractersticas do problema em si e alguma dose de experiencia.
Tanto e assim que nem sempre se conhece algoritmo de Las Vegas
eciente para um problema para o qual existe algoritmo de Monte
Carlo arrasador; da mesma forma, muito embora seja sempre possvel
construirmos a partir de um algoritmo de Las Vegas um outro, de
Monte Carlo (vide se c ao 1.3.3), nem sempre este ultimo apresentar a
desempenho sucientemente interessante.
1.3.1 Monte Carlo
Algoritmos randomizados de Monte Carlo nem sempre d ao a resposta
certa. Existe uma chance, inerente ao algoritmo, de que a resposta
apresentada esteja desastrada e inescrupulosamente errada.
N ao e preciso, no entanto, que lhes votemos absolutamente qual-
quer sentimento prematuro de desconan ca ou antipatia. Anal, a
vida pr atica e tambem cheia de incertezas. Exames laboratoriais
podem diagnosticar doen cas inexistentes, mas n ao deixam de ser fer-
ramentas valiosas nas m aos do bom medico.

E preciso apenas saber
lidar com a possibilidade de erro.
Algoritmos randomizados n ao est ao limitados a problemas de de-
cis ao
4
. Estes, porem, permitem dividir os algoritmos de Monte Carlo
em dois tipos: os de erro unilateral e os de erro bilateral.
Algoritmos de Monte Carlo de erro unilateral para problemas de
decis ao erram, como sugere o nome, apenas para um dos lados: aque-
les que s ao baseados-no-sim nunca erram quando a resposta por eles
encontradas e SIM; j a os baseados-no-n ao est ao sempre falando a ver-
dade quando apresentam o N
~
AO como resposta. Algoritmos de Monte
4
Problemas de decis ao s ao aqueles em que se deseja descobrir se algo e verda-
deiro: existe representa c ao plana para este grafo? Tal n umero e primo?

E possvel
ir da cidade A ` a cidade B passando por no m aximo k cidades intermedi arias? Esta
amostra de sangue possui o vrus XYZ? Estes s ao todos exemplos de problemas
de decis ao a resposta certa e um simples SIM ou N
~
AO. i
i
randomizados 2007/4/30 11:48 page 15 #21
i
i
i
i
i
i
[SEC. 1.3: MONTE CARLO E LAS VEGAS 15
Carlo de erro bilateral podem retornar tanto SIM quanto N
~
AO incor-
retos.
A unilateralidade do erro de um algoritmo de Monte Carlo e ca-
racterstica importante que permite-nos renar ecientemente nosso
grau de conan ca na resposta obtida a nveis t ao bons quanto de-
sejemos.
Exemplo: identidade de polin omios
Seja o seguinte problema: dados dois polin omios de grau d, um deles
apresentado na forma de um produto de polin omios de primeiro grau,
e.g., F(x) = (x a
1
)(x a
2
) (x a
d
), e outro na forma can onica
da soma de mon omios, e.g., G(x) = b
d
x
d
+b
d1
x
d1
+ +b
1
x +b
0
,
e verdade que ambos os polin omios s ao identicos?
Um algoritmo muito simples e aquele baseado na compara c ao dos
coecientes dos termos de mesmo grau dos dois polin omios, uma vez
que ambos encontrem-se na forma can onica. Para isso, o algoritmo
teria que, em primeiro lugar e inevitavelmente, transformar F(x),
executando, para isso, um n umero quadr atico O(d
2
) de opera c oes
b asicas de adi c ao e multiplica c ao.
Eis um algoritmo randomizado que d a a resposta certa com pro-
babilidade alta em tempo linear no grau dos polin omios, ou seja,
executando um n umero O(d) de opera c oes b asicas:
Entrada:
F, G: dois polin omios de grau d.
Sada:
SIM ou N
~
AO, decidindo se F e G sao identicos.
identidadePolin omios(F, G):
sorteie aleat oria e uniformemente um inteiro w entre 1 e 100d
avalie F(w) e G(w)
retorne N
~
AO se F(w) = G(w); caso contrario, retorne SIM
Figura 1.1: Monte Carlo para vericar a identidade de polin omios. i
i
randomizados 2007/4/30 11:48 page 16 #22
i
i
i
i
i
i
16 [CAP. 1: RANDOMIZADOS?
Observe que o algoritmo da gura 1.1 e um algoritmo de Monte
Carlo de erro unilateral baseado-no-n ao. De fato, quando o algoritmo
responde N
~
AO, ele tem sempre raz ao. H a um certicado para esse
N
~
AO, algo que garante a corretude dessa resposta. Ora, se existe um
n umero w para o qual F(w) ,= G(w), os polin omios n ao podem ser
identicos. Observe que, se os polin omios s ao identicos o algoritmo
jamais responder a erradamente que eles n ao o sejam. N ao existe algo
como um certicado falso para o N
~
AO.
Por outro lado, se a resposta dada pelo algoritmo e SIM, h a uma
chance de que ela esteja errada.

E possvel que os polin omios n ao
sejam identicos, mas que o inteiro w sorteado aleatoriamente apenas
seja raiz do polin omio H(x) = F(x) G(x), caso este em que F(w)
e G(w) avaliariam o mesmo valor especicamente para w. N ao cons-
tituiria a igualdade F(w) = G(w), portanto, um certicado para o
SIM
5
; poder-se-ia concluir apenas que o algoritmo n ao localizou um
certicado para o N
~
AO.
Se o algoritmo sempre acerta a resposta quando os polin omios
s ao identicos, a pergunta e: qual a probabilidade do algoritmo errar
a resposta quando os polin omios n ao s ao identicos?
Sabemos que um polin omio de grau d possui no m aximo d razes
inteiras distintas. Dessa forma, a probabilidade de que o inteiro w
sorteado aleatoriamente seja raiz de F(x) G(x) e menor ou igual a
d/100d = 1/100.
O que ganhamos com esse algoritmo? Ora, e possvel avaliar arit-
meticamente polin omios de grau d em tempo linear O(d). Rodando,
portanto, em tempo O(d), nosso algoritmo e extremamente mais e-
ciente do que o algoritmo determinstico O(d
2
) que mencion aramos.
Probabilidades associadas ao Monte Carlo de erro unilateral
A pergunta que precisamos responder, quando diante de um algo-
ritmo de Monte Carlo, e: qual a probabilidade p 1 de que a
resposta correta seja dada?
5

E evidente que poderia haver um certicado para o SIM, se o desej assemos.


Bastaria nos certicarmos de que os polin omios avaliam os mesmos resultados
para d + 1 valores distintos de w. Mas ter que realizar O(d) avalia c oes, cada
uma das quais em tempo O(d), nos daria um algoritmo de tempo quadr atico
O(d
2
), justamente a performance ruim que queremos evitar. N ao h a, portanto,
um certicado eciente para o SIM. i
i
randomizados 2007/4/30 11:48 page 17 #23
i
i
i
i
i
i
[SEC. 1.3: MONTE CARLO E LAS VEGAS 17
Seja um algoritmo de Monte Carlo de erro unilateral e sejam os
seguintes eventos associados a uma execu c ao do algoritmo para uma
determinada inst ancia de um problema de decis ao.
A
S
o algoritmo responde SIM;
A
N
o algoritmo responde N
~
AO;
C
S
a resposta correta para aquela entrada e SIM;
C
N
a resposta correta para aquela entrada e N
~
AO.
Para um melhor acompanhamento dos par agrafos seguintes, acon-
selhamos a consulta ` a gura 1.2, onde uma seta de X para Y repre-
senta a probabilidade condicional Pr[Y [X].
H a duas maneiras de se entender as probabilidades associadas a
um algorimo de Monte Carlo de erro unilateral. A primeira e pen-
sarmos nas probabilidades de acerto Pr[C
S
[A
S
] e Pr[C
N
[A
N
] ou de
erro Pr[C
N
[A
S
] e Pr[C
S
[A
N
] condicionadas ` a resposta apresentada.
Quando se constr oi um algoritmo, no entanto, em geral estamos pre-
ocupados com as probabilidades de acerto Pr[A
S
[C
S
] e Pr[A
N
[C
N
]
ou de erro Pr[A
N
[C
S
] e Pr[A
S
[C
N
] condicionadas ` a entrada do pro-
blema
6
.
Aparentemente, e mais intuitivo pensarmos nas condicionais as-
sociadas ` a resposta do algoritmo. No entanto, o fato e que, em-
bora o certicado apresentado para o N
~
AO (respectivamente, para o
SIM) por um algoritmo de Monte Carlo de erro unilateral baseado-no-
n ao (resp. baseado-no-sim) nos de automaticamente Pr[C
N
[A
N
] = 1
(resp. Pr[C
S
[A
S
] = 1), nem sempre e f acil ou possvel calcular-
mos as probabilidades condicionadas ao fato de que a resposta dada
n ao veio acompanhada de um certicado (pontos de interroga c ao
nos diagramas da gura 1.2). Em outras palavras, se um algoritmo
baseado-no-n ao respondeu SIM ou se um baseado-no-sim respondeu
N
~
AO, s o e possvel obter as probabilidades condicionais se conhecer-
mos a distribui c ao de probabilidade da entrada do problema (vide
exerccio 2). Ou poderemos, no m aximo, atualizar nosso modelo de
conan ca (vide exerccio 3).
6
Admitimos que pode parecer confuso trabalhar com as condicionais nos dois
sentidos. Nossa recomenda c ao e a de que o leitor prera concentrar-se nas pro-
babilidades condicionadas ` a entrada do problema. i
i
randomizados 2007/4/30 11:48 page 18 #24
i
i
i
i
i
i
18 [CAP. 1: RANDOMIZADOS?
Resposta correta
Resposta do algoritmo

SIM
NAO
~
SIM
NAO
~
1 1
p
0 0 ?
?
1-p
(a)
Resposta correta
Resposta do algoritmo

SIM
NAO
~
SIM
NAO
~
1 1
?
0 0
p
?
1-p
(b)
Figura 1.2: (a) MC baseado-no-n ao. (b) MC baseado-no-sim.
Se, por outro lado, concentrarmo-nos nas probabilidades associ-
adas ` a entrada do problema, e f acil respondermos satisfatoriamente
aquela pergunta fundamental. Algoritmos baseados-no-n ao respon-
der ao corretamente SIM sempre que a entrada for uma inst ancia
SIM (j a que n ao inventar ao jamais um certicado falso para o N
~
AO).
Quando a entrada for uma inst ancia N
~
AO, a corretude da resposta
depende do algoritmo ter a capacidade (ou sorte) de encontrar um
certicado para o N
~
AO
7
.
A probabilidade de acerto de um algoritmo de Monte Carlo
de erro unilateral baseado-no-n ao e maior ou igual ` a pro-
babilidade de que o algoritmo encontre um certicado para
o N
~
AO caso a entrada seja uma inst ancia N
~
AO.
7
Analogamente, algoritmos baseados-no-sim responder ao corretamente N
~
AO
sempre que a entrada for uma inst ancia N
~
AO. Quando a entrada for SIM, a resposta
s o ser a um correto SIM se o algoritmo tiver a sorte de encontrar um certicado
(o que, deseja-se, acontece com alta probabilidade). i
i
randomizados 2007/4/30 11:48 page 19 #25
i
i
i
i
i
i
[SEC. 1.3: MONTE CARLO E LAS VEGAS 19
A probabilidade de acerto de um algoritmo de Monte Carlo
de erro unilateral baseado-no-sim e maior ou igual ` a pro-
babilidade de que o algoritmo encontre um certicado para
o SIM caso a entrada seja uma inst ancia SIM.
Portanto, e com a (alta) probabilidade de encontrar um certicado
para um dos lados que devemos nos preocupar quando do desenvol-
vimento e an alise de algoritmos de Monte Carlo de erro unilateral.
Reduzindo a probabilidade de erro
Seja A um algoritmo de Monte Carlo de erro-unilateral baseado-no-
n ao que erra com probabilidade menor ou igual a
1
e seja I uma
inst ancia qualquer para um problema de decis ao.
Sigamos agora, o seguinte plano: executemos A, seguida e in-
dependentemente, diversas vezes, ate que uma resposta N
~
AO tenha
sido encontrada e, portanto, certicada ou ate que um n umero
m aximo de t execu c oes tenha sido executado.
Com que probabilidade, ap os a ado c ao da estrategia acima, esta-
remos diante de uma resposta incorreta para o problema?
Ora, se a resposta correta e SIM, for cosamente teremos nas m aos
um SIM ap os exatas t execu c oes. Ent ao, para que o algoritmo erre, e
preciso que a resposta correta seja N
~
AO e que ele falhe em encontrar
um certicado para o N
~
AO por t vezes independentes e consecutivas.
Sendo assim, e designando a nota c ao A
k
S
para o evento em que a k-
esima execu c ao do algoritmo retorna SIM, a probabilidade global de
erro
t
pode ser dada por:

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

E evidente que, com probabilidade baixa, o tempo de uma execu c ao em par-


ticular de um algoritmo de Las Vegas pode ser muito maior do que seu valor
esperado (vide exerccio 5). H a mesmo, em nosso exemplo, uma probabilidade
innitamente pequena de que seu tempo de execu c ao seja innitamente grande.
Se, no entanto, modic assemos ligeiramente o algoritmo proposto, evitando que
uma mesma posi c ao da lista fosse vericada mais do que uma vez, a pior execu c ao
possvel do algoritmo demandaria tempo O(n) seria, portanto, pelo menos t ao
eciente quanto qualquer algoritmo determinstico. i
i
randomizados 2007/4/30 11:48 page 24 #30
i
i
i
i
i
i
24 [CAP. 1: RANDOMIZADOS?
Vegas durante certo tempo, ou durante um n umero de passos limitado
por certa fun c ao do tamanho da entrada. Se encontrar a resposta,
retorne-a, evidentemente, e pare; do contr ario, responda N
~
AO
10
ap os
aquele n umero-limite de passos.
Note que o algoritmo obtido dessa forma est a sempre certo quando
responde SIM (baseado-no-sim), pois o SIM ter a sido for cosamente
respondido dentro do limite de tempo pre-estabelecido e, portanto,
durante a execu c ao normal do algoritmo de Las Vegas (cuja resposta
e sempre correta). Uma resposta N
~
AO, por outro lado, pode ter sido
informada durante a execu c ao normal do Las Vegas ou, arbitraria-
mente, ap os o estouro do limite de tempo.
A probabilidade de erro de um algoritmo de Monte Carlo baseado-
no-sim dessa forma obtido ser a majorada pela probabilidade de que
o algoritmo de Las Vegas demande, para responder SIM quando a
resposta correta e SIM
11
, tempo maior do que o limite estabelecido.
Como o tempo computacional do algoritmo de Las Vegas e uma
vari avel aleat oria muito bem denida, o c alculo exato dessa proba-
bilidade ou, pelo menos, a determina c ao de bons limites inferio-
res e/ou superiores e factvel. Seja, por exemplo, X a vari avel
aleat oria que representa o tempo computacional de nosso algoritmo
de Las Vegas, e seja = E[X]. Podemos, por exemplo, denir o
limite de tempo como k e empregarmos a desigualdade de Markov
(vide se c ao 1.2.2) para escrevermos
Pr[X k]
E[X]
k
=
1
k
.
Transformando Monte Carlo em Las Vegas
A transforma c ao de um algoritmo de Monte Carlo de erro unilateral
em um algoritmo de Las Vegas costuma ser menos ecaz: no caso
de um Monte Carlo baseado-no-n ao, por exemplo, teramos que re-
pet-lo indenidamente ate que um N
~
AO fosse encontrado. Mas e se
a resposta correta for SIM? Rodaria um n umero innito de vezes?!
Bem, em alguns casos e possvel (leia-se pouco custoso) fazer com
10
Totalmente arbitr ario. Poderamos ter escolhido responder SIM ap os o limite
de tempo, e teramos, ent ao, um algoritmo de Monte Carlo baseado-no-n ao.
11
Se tivessemos optado por um algoritmo de Monte Carlo baseado-no-n ao,
releia-se este par agrafo substituindo-se todos os sim por n ao. i
i
randomizados 2007/4/30 11:48 page 25 #31
i
i
i
i
i
i
[SEC. 1.3: MONTE CARLO E LAS VEGAS 25
que as sucessivas execu c oes do algoritmo de Monte Carlo n ao sejam
independentes, de forma a se evitar a repeti c ao das mesmas escolhas
aleat orias. O algoritmo, nesse caso, pararia ap os todas as possveis
seq uencias de escolhas terem sido exauridas, ou ap os certo n umero
de escolhas distintas ter sido feito, o que pode constituir, em alguns
casos (vide nota de rodape n umero 5 no exemplo da identidade de
polin omios da se c ao 1.3.1), certicado para o SIM
12
.
Quando, no entanto, h a dois algoritmos de Monte Carlo para
um problema, um deles baseado-no-sim (que, portanto, exibe um
certicado para o SIM com probabilidade maior ou igual a certo valor
p
S
caso a resposta correta seja SIM) e outro baseado-no-n ao (que,
portanto, exibe um certicado para o N
~
AO com probabilidade maior
ou igual a um p
N
caso a resposta correta seja N
~
AO), ent ao e sempre
possvel criarmos um algoritmo de Las Vegas para o problema em
quest ao como veremos a seguir.
Seja alg
S
o algoritmo de Monte Carlo baseado-no-sim e alg
N
o
algoritmo de Monte Carlo baseado-no-n ao para um determinado pro-
blema . Seja p o menor entre p
S
e p
N
. O algoritmo de Las Vegas e
exibido na gura 1.3.
Como a probabilidade de que uma resposta (necessariamente cor-
reta!) seja retornada a cada itera c ao do algoritmo acima e maior ou
igual a p, o n umero de itera c oes do algoritmo e uma vari avel aleat oria
geometrica X com probabilidade de sucesso maior ou igual a p e, por-
tanto, o n umero esperado de itera c oes e menor ou igual a 1/p. Sendo
ambos Alg
S
e Alg
N
polinomiais, teremos obtido um algoritmo de Las
Vegas para de tempo esperado igualmente polinomial.
Caso semelhante, em que a transforma c ao de Monte Carlo em
Las Vegas e sempre possvel, e aquele em que se deseja localizar uma
estrutura que possua determinada propriedade e cuja existencia e
sabida. Suponhamos que exista um algoritmo de Monte Carlo que
encontra a estrutura desejada (por exemplo, um corte com pelo me-
nos metade do n umero de arestas do grafo vide se c ao 5.1.2 para o
problema do corte m aximo) com probabilidade p em tempo polino-
mial. A gura 1.4 mostra como podemos obter um algoritmo de Las
Vegas polinomial de forma bastante simples.
12
Mais uma vez, aqui, SIM e N
~
AO foram escolhidos arbitrariamente. O leitor
pode reler todo o par agrafo trocando os sim por n ao e vice-versa. i
i
randomizados 2007/4/30 11:48 page 26 #32
i
i
i
i
i
i
26 [CAP. 1: RANDOMIZADOS?
Entrada:
alg
S
: algoritmo de Monte Carlo baseado-no-sim;
alg
N
: algoritmo de Monte Carlo baseado-no-nao;
I: instancia do problema.
Sada:
SIM ou N
~
AO, decidindo I.
LasVegas-decisao(alg
S
, alg
N
, I):
repita:
se alg
S
(I) retorna SIM:
retorne SIM
se alg
N
(I) retorna N
~
AO:
retorne N
~
AO
ate alguma resposta ser retornada
Figura 1.3: Las Vegas obtido de dois Monte Carlos.
Entrada:
alg: um algoritmo de Monte Carlo;
I: instancia do problema.
Sada:
A estrutura desejada, presente em I.
LasVegas-localiza cao(alg, I):
repita:
seja x a estrutura retornada por alg(I)
se x possui a propriedade desejada, retorne x
ate a estrutura desejada ser encontrada
Figura 1.4: Las Vegas obtido de Monte Carlo para localiza c ao. i
i
randomizados 2007/4/30 11:48 page 27 #33
i
i
i
i
i
i
[SEC. 1.4: CLASSES DE COMPLEXIDADE 27
Mais uma vez, o n umero de itera c oes do algoritmo de Las Vegas
ser a uma vari avel aleat oria geometrica associada a uma probabilidade
de sucesso p, donde o n umero esperado de itera c oes e 1/p. Note que,
aqui, e necess ario que seja possvel vericar em tempo polinomial se
a estrutura retornada pelo algoritmo de Monte Carlo possui ou n ao a
propriedade desejada (por exemplo, se o n umero de arestas do corte
retornado e maior ou igual ` a metade do n umero de arestas do grafo).
1.4 Classes de complexidade
Alem das classes de complexidade usuais em que s ao classicados
os problemas de decis ao de acordo com o esfor co computacional que
sua resolu c ao demanda, algoritmos randomizados deram origem a
novas classes, que ora listamos para r apida referencia. Nas notas
bibliogr acas referimos o leitor a textos mais aprofundados.
1. Classes de complexidade relacionadas a algoritmos determins-
ticos:
EXP classe dos problemas que podem ser decididos em
tempo exponencial no tamanho da entrada.
P classe dos problemas que podem ser decididos em
tempo polinomial no tamanho da entrada.
NP classe dos problemas para os quais uma resposta
SIM pode ser vericada em tempo polinomial.
co-NP classe dos problemas para os quais uma resposta
N
~
AO pode ser vericada em tempo polinomial.
2. Classes de complexidade relacionadas a algoritmos randomiza-
dos:
RP (randomized polynomial time) classe dos problemas
para os quais existe algoritmo randomizado polinomial que
responde SIM com probabilidade maior ou igual a 1/2 caso
a resposta correta seja SIM e responde N
~
AO com probabili-
dade 1 caso a resposta correta seja N
~
AO
13
. Em outras pala-
13
O valor 1/2 foi denido arbitrariamente. i
i
randomizados 2007/4/30 11:48 page 28 #34
i
i
i
i
i
i
28 [CAP. 1: RANDOMIZADOS?
vras, e a classe dos problemas para os quais h a algoritmo
de Monte Carlo baseado-no-sim.
co-RP analogamente, e a classe dos problemas para
os quais existe algoritmo randomizado polinomial que res-
ponde N
~
AO com probabilidade maior ou igual a 1/2 caso a
resposta correta seja N
~
AO e responde SIM com probabilida-
de 1 caso a resposta correta seja SIM. Em outras palavras,
e a classe dos problemas para os quais h a algoritmo de
Monte Carlo baseado-no-n ao.
ZPP (zero-error probabilistic polynomial time) classe
dos problemas para os quais h a algoritmo randomizado de
Las Vegas de tempo esperado polinomial
14
.
BPP (bounded-error probabilistic polynomial time)
classe dos problemas para os quais h a algoritmo de Monte
Carlo de erro bilateral onde tanto a probabilidade de res-
ponder SIM dado que a resposta correta e SIM quanto a
probabilidade de responder N
~
AO dado que a resposta cor-
reta e N
~
AO s ao maiores ou iguais a 3/4.
15
PP (probabilistic polynomial time) classe dos problemas
para os quais h a algoritmo de Monte Carlo de erro bilateral
onde tanto a probabilidade de responder SIM dado que a
resposta correta e SIM quanto a probabilidade de responder
N
~
AO dado que a resposta correta e N
~
AO s ao maiores que 1/2.
Por deni c ao, a classe BPP est a contida na classe PP. A
diferen ca fundamental entre os problemas em BPP e os em
PPBPP e o n umero de repeti c oes do algoritmo randomizado
necess arias para que a probabilidade de erro seja menor do que
> 0: para os primeiros, um n umero polinomial (no tama-
nho da entrada) de repeti c oes; para os ultimos, apenas com um
n umero exponencial delas e possvel chegar-se ao erro .
14
O algoritmo de Las Vegas da gura 1.3 funciona como prova de que
(RP co-RP) ZPP. Como, evidentemente, ZPP (RP co-RP), temos
ZPP = RP co-RP.
15
Novamente, o valor 3/4 foi aqui escolhido arbitrariamente; e suciente que o
limite inferior para as probabilidades em quest ao seja igual a 1/2 + 1/, onde
e um polin omio qualquer no tamanho da entrada do problema. i
i
randomizados 2007/4/30 11:48 page 29 #35
i
i
i
i
i
i
[SEC. 1.5: EXERC

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

e exatamente a seq uencia S em


ordem crescente.
Seja X uma vari avel aleat oria que corresponde ao n umero total de
compara c oes efetuadas. Interessa-nos E[X]. Como quaisquer y
i
e y
j
s ao comparados no m aximo uma unica vez ao longo do algoritmo
(quando um deles for escolhido como piv o de uma lista que ainda
contenha o outro), podemos escrever
E[X] = E
_
_

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

tem a mesma chance de ser,


dentre eles, o elemento mais ` a esquerda em S. Conseq uentemente,
p
ij
=
2
j i + 1
,
resolvendo nosso somat orio:
E[X] =

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

seja tambem um inverso de a em Z


n
. Por deni c ao,
ab = 1. Multiplicando ambos os lados desta identidade por b

, temos
(ab)b

= b

. Utilizando associatividade e comutatividade da mul-


tiplica c ao em Z
n
, reescrevemos esta identidade como b(ab

) = 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

tais que i = (i, j)i

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 calcule o resto da divis ao de a


n1
por n. Se
algum destes restos n ao for igual a 1, ent ao, pelo resultado anterior, n
e composto. Sen ao, ser a que podemos armar que n e primo a menos
de uma probabilidade muito baixa? A resposta infelizmente e n ao!
Existem n umeros compostos n que falham neste teste para muito
poucos a [n]

. Neste caso, a probabilidade do resto ser 1 e muito


alta, mesmo n sendo composto. Nosso objetivo ser a mostrar que
uma pequena variante deste algoritmo funciona como desejado. Para
tanto, necessitamos estudar razes de polin omios com coecientes em
Z
n
, quando n e primo. (Surpreendentemente, o pr oximo resultado
n ao e verdadeiro quando n e composto.)
Lema 3.4.5. Se n e primo, ent ao o n umero de razes de um po-
lin omio p(X) com coecientes em Z
n
e no m aximo igual ao grau de
p(X). i
i
randomizados 2007/4/30 11:48 page 61 #67
i
i
i
i
i
i
[SEC. 3.4: O PEQUENO TEOREMA DE FERMAT 61
Demostra c ao. Escolha a seq uencia de elementos a
1
, . . . , a
m
de Z
n
com o maior comprimento possvel tal que
p(X) = (X a
1
) (X a
m
)q(X)
para algum polin omio q(X) com coecientes em Z
n
. Note que a
1
, . . . ,
a
m
s ao razes de p(X). Se estas s ao todas as razes de p(X) ent ao
o resultado segue, pois o grau de p(X) e igual a m mais o grau de
q(X). Podemos supor que p(X) possui raiz a tal que a ,= a
i
para
todo i. Logo,
0 = (a a
1
) (a a
m
)q(a).
Mas a a
i
,= 0, para todo i, e da q(a) = 0 porque Z
n
n ao tem
divisores de zero quando n e primo. Dividindo q(X) por X a
encontramos um polin omio q(X) com coecientes em Z
n
tal que
q(X) = q(X)(X a) +q(a) = q(X)(X a). Portanto,
p(X) = (X a
1
) (X a
m
)(X a) q(X)
e a
1
, . . . , a
m
, a contraria a escolha de a
1
, . . . , a
m
.
Descreveremos um algoritmo para decidir, com probabilidade de
erro pequena, a primalidade de um n umero natural n. Utilizaremos,
para isto, a seguinte variante do teorema 3.4.4.
Teorema 3.4.6. Suponha que n 1 = 2
r
m, onde r e um inteiro
n ao-negativo e m e um inteiro mpar. Se 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]

. Na verdade, vamos obter um limite


superior para a probabilidade P
n
de n ser pseudoprimo com respeito
a um elemento de [n]

escolhido aleatoriamente. Observe que:


P
n
=
[a [n]

: n e pseudoprimo com respeito a a[


n 1
.
Rabin [45] obteve o seguinte resultado:
Teorema 3.7.1. Seja n um inteiro positivo mpar. Se n n ao e primo,
ent ao a probabilidade P
n
de n ser pseudoprimo com respeito a um
elemento de [n]

escolhido aleatoriamente n ao excede


1
4
.
Nesta se c ao, nosso objetivo e demonstrar este teorema. Conside-
raremos primeiro o caso em que n n ao e livre de quadrados.
Proposi cao 3.7.2. Se existe primo q tal que q
2
[n, ent ao
P
n

1
q + 1

1
4
.
Demonstra c ao. Quando n e pseudoprimo com respeito a a, temos
que a
n1
= 1 em Z
n
. Neste caso, a Z

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]

satisfazendo respectivamente (i)


e (ii).
Lema 3.7.3. Vale a seguinte igualdade:
[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]

para i de 1 a 5k, fa ca:


se n nao e pseudoprimo com rela cao a a
i
, retorne COMPOSTO
retorne PRIMO
Figura 3.1: Algoritmo de Rabin.
Tememos que, ap os diversas se c oes voltadas a puro ferramental
matem atico, o leitor tenha se esquecido que este texto destina-se ` a
discuss ao de algoritmos e tecnicas randomizadas e esteja se pergun-
tando se n ao teria valido mais a pena para dominar o problema da
primalidade que dele exigiu tamanha prepara c ao ter estudado de
uma vez o algoritmo AKS, que a decide deterministicamente. Mais
uma vez, porem, ressaltamos que a matem atica necess aria para com-
preender o AKS e extremamente mais complexa. Ademais, como de
costume, a probabilidade de erro do algoritmo de Rabin pode ser es-
colhida t ao pequena quanto se queira. Pode ser escolhida, inclusive,
como menor do que a probabilidade de que haja uma falha no hard-
ware do computador, de forma que se pode conseguir que a resposta
com ele obtida seja, para todos os efeitos, t ao boa quanto a do AKS!
A gura 3.1 apresenta o pseudo-c odigo para o algoritmo de Rabin
para decidir primalidade.
Como j a temos todo o material necess ario, a an alise do algoritmo
de Rabin e deveras descomplicada. Pelo teorema 3.4.6, caso a sada
do algoritmo de Rabin seja COMPOSTO, ent ao n e realmente composto
6
.
Por outro lado, a chance de que um n composto seja pseudoprimo
para uma base qualquer considerada em uma itera c ao do la co do
algoritmo e inferior a
1
4
, como nos garante o teorema 3.7.1. Dessa
6
Raciocnio alternativo: entradas em que n seja primo nunca levar ao o algo-
ritmo a responder COMPOSTO. i
i
randomizados 2007/4/30 11:48 page 82 #88
i
i
i
i
i
i
82 [CAP. 3: PRIMALIDADE
forma, a probabilidade de que o algoritmo responda erroneamente
PRIMO ser a inferior a
_
1
4
_
5k
=
1
2
10k
=
_
1
2
10
_
k
=
_
1
1024
_
k
<
_
1
1000
_
k
=
_
1
10
3
_
k
=
1
10
3k
.
Portanto, a probabilidade global de erro do algoritmo de Rabin e
<
1
10
3k
.
Para que esta probabilidade seja feita t ao pequena quando se queira,
e suciente escolhermos valores maiores
7
para k.
Pelo teorema 3.8.4, necessitamos realizar no m aximo
10k log n
multiplica c oes em Z
n
para executar o algoritmo de Rabin. Mais
ainda, o custo deste algoritmo ser a O(k log
3
n). Isto e, ser a polinomial
quando k for xo. Caso sejam utilizados algoritmos mais r apidos para
executar as opera c oes de multiplica c ao e divis ao, o custo do algoritmo
de Rabin cai para O(k log
2
n(log log n)
O(1)
).
3.10 A importancia de encontrar n umeros
primos grandes: o RSA
Nesta ultima se c ao, apresentamos o algoritmo RSA para criptogra-
a, em que a capacidade de se encontrar primos grandes tem papel
fundamental.
O alfabeto (conjunto de caracteres) utilizado e o mesmo para todos
os usu arios do sistema atraves do qual ser ao transmitidas as mensa-
gens criptografadas pelo algoritmo (pode conter, por exemplo, todos
os smbolos disponveis em um teclado de computador). Como o al-
fabeto utilizado em nossa escrita, o alfabeto utilizado pelo RSA e
ordenado. Assumamos que o alfabeto em quest ao possua L letras.
Est ao xos dois inteiros r e s, com r < s, para serem utilizados por
todos usu arios.
7
Para k = 10, a probabilidade de erro do algoritmo de Rabin j a pode ser
considerada, para todos os efeitos, nula! i
i
randomizados 2007/4/30 11:48 page 83 #89
i
i
i
i
i
i
[SEC. 3.10: A IMPORT

ANCIA DE N

UMEROS PRIMOS GRANDES: O RSA 83


Um usu ario qualquer, que deseja receber mensagens criptografa-
das pelo RSA, precisa escolher dois n umeros primos grandes p e q de
forma que
L
r
< pq < L
s
. (3.34)
Seja n = pq. Observe que (n) = (p 1)(q 1). O usu ario escolhe
um elemento e inversvel em Z
(p1)(q1)
e calcula o seu inverso
8
d em
Z
(p1)(q1)
. Isto e,
ed = ed = 1 em Z
(p1)(q1)
. (3.35)
Podemos assumir que d e e s ao inteiros em [(p1)(q 1)]. O usu ario
torna p ublicas as chaves n, e (para codica c ao) e mantem secreta a
chave d (para decodica c ao). Os primos p e q podem ser destrudos.
Para encaminhar uma mensagem para um usu ario que disponibili-
zou suas chaves p ublicas n, e, utilizamos o seguinte algoritmo: divide-
se a mensagem a ser cifrada em blocos com r letras (caso o ultimo
bloco que com menos de r letras, completa-se as posi c oes vazias
com a ultima letra do alfabeto que e, em geral, um espa co em
branco). Cada bloco B com r letras pode ser visto como um n umero
inteiro n ao-negativo b com ate r dgitos escrito na base L (e tendo
como dgitos as letras do alfabeto). Observe que b < L
r
e, sendo
assim, b [n]. Calcula-se b

= res(b
e
, n). Como n < L
s
, o inteiro
n ao-negativo b

tem no m aximo s dgitos quando escrito na base L.


Em particular, pode ser transformado em um bloco 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

, e a mensagem original e recuperada.


8
Na se c ao 3.2 caracterizamos os elementos inversveis de Z
(p1)(q1)
e apre-
sentamos implicitamente um algoritmo com custo polinomial para o c alculo de
seu inverso. i
i
randomizados 2007/4/30 11:48 page 84 #90
i
i
i
i
i
i
84 [CAP. 3: PRIMALIDADE

E possvel mostrar que, caso alguem possua um algoritmo para


sempre obter b a partir de b

isto e, quebrando o sistema crip-


togr aco e lendo efetivamente as mensagens , ent ao este alguem
consegue fatorar n rapidamente. Assume-se, no entanto, que esta
tarefa e impossvel do ponto de vista computacional.
3.11 Exerccios
1. Determine todos os divisores de zero em Z
30
.
2. Existem n umeros inteiros a e b tais que 1 = 1514a + 1357b?
3. Em Z
1514
, 1357 e inversvel? Em caso armativo, determine
seu inverso.
4. Em Z

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) como o angulo


entre N(s) e (1, 0), com < N

(s) . Seja s
1
o semiplano com
N

(s) 0 que minimiza N

(s) e s
2
o semiplano com N

(s) < 0 que


maximiza 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
.

E possvel que, neste procedimento, n ao encontremos nenhum ponto


vi avel. Se isso ocorrer, podemos armar que o problema e invi avel.
Vale notar que, no caso de d vari aveis, como a solu c ao se encontra
no subespa co s
i
, e necess ario resolver recursivamente um problema
de programa c ao linear com d 1 vari aveis.
Assim, para acrescentarmos um semiplano a um problema com i
semiplanos, a complexidade de tempo e O(i) no pior caso. Para acres-
centarmos n semiplanos, um a um, come cando com 2 semiplanos, a i
i
randomizados 2007/4/30 11:48 page 92 #98
i
i
i
i
i
i
92 [CAP. 4: GEOMETRIA COMPUTACIONAL
Entrada:
v: Vetor com n elementos a serem permutados aleatoriamente.
Sada:
O vetor v permutado aleatoriamente.
Observa c oes:
rand(n): N umero aleat orio distribudo uniformemente de 0 a n 1.
permuta caoAleat oria(v, n):
para i decrescendo de n 1 ate 1
troca v[i] com v[rand(i)]
Figura 4.3: Algoritmo que permuta aleatoriamente um vetor.
complexidade de tempo e
T(n) =
n

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

[ m. O valor esperado do n umero de chaves y C

com
h(x) = h(y) e menor que 2, ou seja, E[[y C

: h(x) = h(y)[] < 2. i


i
randomizados 2007/4/30 11:48 page 96 #102
i
i
i
i
i
i
96 [CAP. 4: GEOMETRIA COMPUTACIONAL
Demonstra c ao. O valor esperado do n umero de chaves 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

, usando o teorema 4.2.1,


E[[y C

: h(x) = h(y)[] 1 +
|C

|1

i=1
1
m
= 1 +
[C

[ 1
m
< 2.
Caso x / C

, e usando ainda o teorema 4.2.1,


E[[y 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

2). Chamamos a celula que contem um ponto q de c(q), e


denimos a adjacencia de uma celula c(q) como a regi ao formada por
c(q) e as no m aximo 8 celulas no seu entorno (gura 4.6). Note que,
se f(q) f(p), ent ao a adjacencia de c(q) contem somente o ponto q. i
i
randomizados 2007/4/30 11:48 page 98 #104
i
i
i
i
i
i
98 [CAP. 4: GEOMETRIA COMPUTACIONAL
Entrada:
P: Conjunto de n pontos.
Sada:
p, p

: Par de pontos mais pr oximos de P.


pontosMaisPr oximos(P):
enquanto P = :
p ponto de P escolhido aleatoriamente
p

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

2 f(q) f(p). Deste modo, nosso algoritmo n ao encontra


necessariamente o par de pontos mais pr oximos, mas sim uma apro-
xima c ao do par de pontos mais pr oximos. Mais especicamente, o
algoritmo encontra um par de pontos p, p

cuja dist ancia [p p

[ e no
m aximo 2

2 vezes a dist ancia entre o par de pontos mais pr oximos.


Antes de mostrarmos como obter uma solu c ao exata para o problema,
a partir da solu c ao aproximada, analisamos a complexidade de tempo
do algoritmo.
Primeiro, analisamos a complexidade da fun c ao removerPontos.
Para mostrar que a fun c ao leva tempo O(n), precisamos mostrar
que a condi c ao se do loop mais interno e avaliada O(n) vezes. O
n umero de conjuntos C v[h(x)] e igual ao n umero de celulas y com i
i
randomizados 2007/4/30 11:48 page 100 #106
i
i
i
i
i
i
100 [CAP. 4: GEOMETRIA COMPUTACIONAL
removerPontos(P,fp):
P

{}
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

Figura 4.7: Fun c ao que remove todos os pontos que n ao possuem


nenhum outro ponto na adjacencia de sua celula em tempo O(n).
h(y) = h(x). Pelo corol ario 4.2.2, o valor esperado do n umero de
celulas y com h(y) = h(x) e no m aximo 2. O n umero de celulas
na adjacencia de uma celula qualquer e no m aximo 9. Portanto, a
condi c ao se do loop mais interno e avaliada no m aximo 18 vezes por
ponto de P e, conseq uentemente, a fun c ao removerPontos leva tempo
esperado O(n).
Desejamos analisar a complexidade do algoritmo da gura 4.5
usando a fun c ao removerPontos. Note que, a cada itera c ao, o con-
junto P pode ser ordenado segundo o valor de f(p) para cada p P.
Escolhemos um ponto p aleatoriamente. Portanto, no caso esperado,
pelo menos metade dos pontos q P tem f(q) f(p), sendo ent ao
removidos. O algoritmo termina quando n ao h a mais pontos em P. i
i
randomizados 2007/4/30 11:48 page 101 #107
i
i
i
i
i
i
[SEC. 4.3: PAR DE PONTOS MAIS PR

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, j a que a e uma aproxima c ao de fator 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 (gura 4.8). Como n ao


h a dois pontos mais pr oximos que a/2

2, cada sub-celula pode ter


no m aximo 1 ponto, e uma celula pode ter no m aximo 16 pontos.
Usando o corol ario 4.2.2 de maneira an aloga ` a anterior, mostramos
que esta rotina leva tempo O(n) e obtemos o par de pontos mais
pr oximos em tempo O(n). i
i
randomizados 2007/4/30 11:48 page 102 #108
i
i
i
i
i
i
102 [CAP. 4: GEOMETRIA COMPUTACIONAL
a/4
a/4
a
a
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.

E f acil ver que


E[C(A, B)] = E
_
m

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

Col oquio Brasileiro de


Matem atica. IMPA, Rio de Janeiro, 2001.
[20] P. Festa, P. Pardalos, M. Resende e C. Ribeiro. Randomized heu-
ristics for the max-cut problem. Optim. Methods Softw., 17(6),
10331058, 2002. i
i
randomizados 2007/4/30 11:48 page 119 #125
i
i
i
i
i
i
BIBLIOGRAFIA 119
[21] A. Fiat, R. M. Karp, M. Luby, L. A. McGeoch, D. D. Sleator
e N. E. Young. Competitive paging algorithms. J. Algorithms,
12(4), 685699, 1991.
[22] L. H. de Figueiredo e P. C. P. Carvalho. Introdu c ao ` a Geometria
Computacional. 18

Col oquio Brasileiro de Matem atica, IMPA,


Rio de Janeiro, 1991.
[23] S. Fortune e J. E. Hopcroft. A note on Rabins nearest neighbor
algorithm. Inform. Process. Lett., 8(1), 2023, 1979.
[24] D. Gale e L. S. Shapley. College admissions and the stability of
marriage. Amer. Math. Monthly, 69(1), 915, 1962.
[25] M. R. Garey, D. S. Johnson e L. Stockmeyer. Some simplied
NP-complete graph problems. Theoret. Comput. Sci., 1(3), 237
267, 1976.
[26] M. X. Goemans e D. P. Williamson. Improved approximation
algorithms for maximum cut and satisability problems using se-
midenite programming. J. Assoc. Comput. Mach., 42(6), 1115
1145, 1995.
[27] A. Granville. It is easy do determine whether a given integer is
prime. Bull. Amer. Math. Soc., 42(1), 338, 2005.
[28] D. Guseld e R. W. Irving. The Stable Marriage Problem: Struc-
ture and Algorithms. MIT Press, 1989.
[29] R. M. Karp. Reducibility among combinatorial problems. Com-
plexity of Computer Computations, 85103. Plenum Press, New
York, 1972.
[30] V. Kabanets. Derandomization: a brief overview. Bull. Eur.
Assoc. Theor. Comput. Sci. EATCS, 76, 88103, 2002.
[31] S. Khuller e Y. Matias. A simple randomized sieve algorithm for
the closest-pair problem. Inform. and Comput., 118(1), 3437,
1995.
[32] J. Kleinberg e E. Tardos. Algorithm Design. Addison-Wesley,
2006. i
i
randomizados 2007/4/30 11:48 page 120 #126
i
i
i
i
i
i
120 BIBLIOGRAFIA
[33] D. E. Knuth. The Art of Computer Programming vol. 3: Sorting
and Searching. Addison-Wesley, 1973.
[34] N. Koblitz. A Course in Number Theory and Cryptography.
Springer, New York, 1994.
[35] C. A. J. Martinhon. Algoritmos Rand omicos em Otimiza c ao
Combinat oria. SOBRAPO, Rio de Janeiro, 2002.
[36] J. Matousek. Derandomization in computational geometry.
J. Algorithms, 20(3), 545580, 1996.
[37] J. Matousek, M. Sharir e E. Welzl. A subexponential bound for
linear programming. Algorithmica, 16(4-5), 498516, 1996.
[38] P. B. Miltersen. Derandomizing complexity classes. Handbook of
Randomized Computing Vol. II. S. Rajasekaran, P. M. Pardalos,
J. H. Reif e J. D. Rolim (Eds.), Kluwer Academic Publishers,
Dordrecht, 2001.
[39] M. Mitzenmacher e E. Upfal. Probability and Computing: Ran-
domized Algorithms and Probabilistic Analysis. Cambridge Uni-
versity Press, Cambridge, 2005.
[40] C. G. T. A. Moreira e Y. Kohayakawa. T opicos em Combi-
nat oria Contempor anea. Publica c oes Matem aticas do IMPA. 23

Col oquio Brasileiro de Matem atica. IMPA, Rio de Janeiro, 2001.


[41] R. Motwani e P. Raghavan. Randomized Algorithms. Cambridge
University Press, Cambridge, 1995.
[42] K. Mulmuley. Computational Geometry: An Introduction th-
rough Randomized Algorithms. Prentice-Hall, Englewood Clis,
1994.
[43] F. P. Preparata e M. I. Shamos. Computational Geometry: An
Introduction. Springer-Verlag, 1985.
[44] M. O. Rabin. Probabilistic algorithms. Algorithms and com-
plexity (Proc. Sympos., Carnegie-Mellon Univ., Pittsburgh, Pa.,
1976), 2139, Academic Press, New York, 1976. i
i
randomizados 2007/4/30 11:48 page 121 #127
i
i
i
i
i
i
BIBLIOGRAFIA 121
[45] M. O. Rabin. Probabilistic algorithm for testing primality.
J. Number Theory, 12, 128138, 1980.
[46] P. J. de Rezende e J. Stol. Fundamentos de Geometria Com-
putacional. IX Escola de Computa c ao, Recife, PE, 1994.
[47] P. Ribenboim. The Little Book of Big Primes. Springer, New
York, 1991.
[48] R. Rivest, A. Shamir e L. Adleman. A method for obtaining
digital signatures and public-key cryptosistems. Comm. ACM,
21(2), 120126, 1978.
[49] R. Seidel. Small-dimensional linear programming and convex
hulls made easy. Discrete Comput. Geom., 6(5), 423434, 1991.
[50] P. Shor. Polynomial-time algorithms for prime factorization and
discrete logarithms on a quantum computer. SIAM Rev., 41(2),
303332, 1999.
[51] V. Strumpen e A. Krishnamurthy. A collision model for rando-
mized routing in fat-tree networks. J. Parallel Distrib. Comput.,
65(9), 10071021, 2005.