Departamento de Ciênia daComputação IME/USP
SegundoSemestrede 2007
Algoritmo deShamos
Deve-seaShamosoalgoritmodedivisãoeonquistavistonaaula2para,dadaumaoleçãode
n
pontosnoplano,determinarumpardepontosmaispróximosdaoleção. Apartemaisdeliadadessealgoritmoéprovar
queeleestáorreto. Porque essealgoritmo de fato devolve um parde pontos maispróximos?
Oalgoritmoonsidera uma linha divisóriavertial
ℓ
quedeixametade dos pontos daoleçãoà esquerdaemetadeàdireita. Aidéiadoalgoritmoéalularumpardepontosnametadeesquerdaomaispróximopossível,
umparde pontosnametade direita omaispróximopossível,enalmente,seneessário, umparde pontoso
maispróximopossívelomumpontoemumametade eooutronaoutra.
A divisãoda oleção de pontos nasduas metades, que hamaremos de metade esquerda e metade direita,
é feita pela rotina DIVIDE. A rotina usa para tanto dois vetores,
p x e p y, que apresentam alista de pontos
ordenada um pela oordenada
x
e outro pela oordenaday
. Veja o ódigo da rotina nas transparêniasda aula2. Oque arotina DIVIDE devolve efetivamente são doispares de vetores,(p l x , p l y )
e(p r x , p r y )
, que ontéma lista dos
⌊ n/2 ⌋
ou⌈ n/2 ⌉
pontos da metade esquerda e da metade direita, ordenados pela oordenadax
epelaoordenada
y
respetivamente. ÉfáilverquearotinaDIVIDEfunionaorretamente,desdequenãohaja pontosomoordenadasx
oinidentes,ouomoordenadasy
oinidentes.Aobtençãodeumpardepontosmaispróximosnametadeesquerdaenametadedireitaéfeitareursivamente,
eportantofunionaorretamenteporumargumentoindutivo.
A parte deliada é anal, em que se determina,se neessário, um parde pontos o maispróximopossível
om um ponto em uma metade e o outro na outra. Essa é a prinipal tarefa da rotina COMBINA. Seja
δ
omínimo entre adistânia dosdoispares depontos obtidosreursivamente. Apergunta aserrespondida para
garantirqueoalgoritmodefatodáarespontaorretaé: porquearotinaCOMBINAdeterminaseexisteumpar
depontos,adaumdeumladodalinha
ℓ
,aumadistâniamenorqueδ
e,emasoarmativo,enontraumtalpardepontosassim,àdistâniamínima?
Paraefetuaressatarefa,éfáilverqueCOMBINApreisaapenasolharparaospontosqueestãoaumadistânia
não maisque
δ
da linhaℓ
. A primeiraetapadeCOMBINAéexatamenteseleionartaispontos. Issoéfeitonaslinhas 36. Fixe a atenção em um dos pontos seleionados,digamos, o ponto
p
. Considere agura abaixo.Nagura,adaumdosquadradosestátotalmenteontidoem umadasduasmetades. Ademais,adaumdos
quadradostemlado
δ/2
. Comoadiagonaldeumtalquadradomedeδ/ √
2 < δ
,nãopodehaverdoispontosdaoleçãoem um mesmoquadrado destes. (Outais pontos estariam em uma mesmametade e estariama uma
distânia menor que
δ
, uma ontradição àdenição deδ
.) Como a linha horizontal do meio dagura passaexatamente peloponto
p
,qualquerponto seleionado queestejaauma distâniamenorqueδ
dep
deveestarnumdosquadradosdagura. Ouseja,hánomáximo14pontosseleionadosquepodemestaraumadistânia
menorque
δ
dep
. Destesnomáximo14,nãomaisqueseteestãoaimadep
.PSfragreplaements
δ ℓ
p
AsegundaetapadeCOMBINAonsisteemperorrerospontosseleionadosalulandoadistâniaentreada
umdeleseos(nomáximo)setepontosseleionadosseguintesemordemdaoordenada
y
. Observequeaseleçãodospontos, feitanas linhas36 darotina COMBINA, jáosmantém ordenadospela oordenada
y
. Apenas umponto dentreessessetepontos têmhane deestaramenos doque
δ
dopontoem questãoenaoutra metadeemrelaçãoaoponto. Detodasasdistâniasaluladas,arotinaCOMBINAmantémamenor,desdequeelaseja
menorque
δ
,eumdos paresqueatingiu essemínimo. Aonal, arotinadevolveouessepar, ouumdosdoisparesobtidosreursivamente,aquelequeforomaispróximodestestrês.
1). Ajusteoalgoritmodadonastransparêniasdaaula2paraquefunionemesmoqueaoleçãodepontos
dadainluapontosomoordenadas
x
ouy
oinidentes.2). Reneoalgoritmoeoargumentoquegarantequeelefunionaparaque,narotinaCOMBINA,adaponto
dafaixaentralsejaomparadoommenosquesetepontos.
[Notequeparaaordemdeomplexidadedoalgoritmotantofazseparaada
m ∈ M
alulamos7,6ou100000 distâniasoalgoritmoontinuatendoomplexidadedetempoO ( n log n )
.℄3). [CLRS33.4-1℄O Prof. MaquiSperto teveuma idéia genial eveio omum novoesquema para queo
algoritmoenontreoparmais-próximoveriando, nasua faseCombinar,somenteadistânia entre
adaponto
m ∈ M
eos5
pontosqueestãoaseguirdem
emM
. Aidéiaésempreoloarospontosdareta
l
noonjuntoE
daesquerda. Então,nãopoderáhaverumpardepontosoinidentessobrearetal
omumpontoemE
eoutropontoemD
. Portanto,nomáximo6pontospodemestarnaretâgulodedimensões
δ × 2δ
. Ondeestáabobagemnoesquema propostopelo professorSperto.4). [CLRS33.4-2℄Semaumentaraomplexidadedetempoassintótiadoalgoritmo,mostreomogarantir
queoonjuntodepontospassadosparaaprimeirahamadareursivadoalgoritmonãoontenhapontos
oinidentes. Provequeentãoésuiente queoalgoritmoveriqueos6(e não 7)pontosqueseguem
adapontoem
M
. Porquenãoésuienteveriarsomente5pontos? Ouésuiente?5). ConsidereafaseCombinardoalgoritmodedivisão-e-onquistaparaoProblemadoParMais-Próximo,
vistoemsaladeaula. ModiquearotinaCOMBINAparaquesejaaluladaadistâniaentreadaponto
eapenaspontosdooutroladodapartiçãofeitaemDIVIDE. Mostreque,nestafase,paraadapontona
esquerda,ésuienteoalgoritmoalularadistâniaentredeleomnomáximo6pontosnadireira.
6). Paraamodiaçãopropostanoexeríioanterior,voêonseguemostrarumexemploondeérealmente
neessárioalularmosadistânia entre adaponto e6pontos
d 1 , . . . , d 6 dooutroladodapartição?
(Ouseja,oseuexemplodevemostrarumponto
e
daesquerda,digamos,epontosd 1 , . . . , d 6 dadireita
naproximidadedoponto
e
detalformaqueseoalgoritmoalulaadistâniaentree
eapenasadaumdospontos
d 1 , . . . , d 5 entãooalgoritmonãodevolveoparmais-próximo(queporazaréopar{ e, d 6 }
.)
Se voê não onseguir enontrar um tal exemplo, então tente mostrar que é suiente o algoritmo
alularadistâniaentreadapontodeumladoemenosdoque6pontosdooutrolado.
7). [CLRS33.4-3℄AdistâniaentredoispontospodeserdenidadediversasmaneirasalémdaEulidiana.
No plano, a
L m-distânia entre dois pontos p = (p x , p y )
e q = (q x , q y )
é dada por ( | p x − q x | m +
| p y − q y | m ) 1 /m. Portanto, adistânia Eulidiana éa L 2-distânia. Modique oalgoritmodedivisão-
e-onquista para o Problema do Par Mais Próximo de tal forma que ele devolva o par de pontos
mais-próximoemrelaçãoa
L 1-distânia(tambémonheidaomoManhattandistane).
8). [CLRS33.4-4℄Dadosdoispontos
p
eq
noplano,aL ∞-distâniaentreelesédadapormax {| p x − q x | , | p y − q y |}
. Modiqueo algoritmopara oparmais próximo paraque ele enontre um parmais-próximo de
aordoomaL ∞-distânia.
Observação: Sempre quedesreverumamodiaçãodeumalgoritmodado,exibaoresultadodamodiação