Anda di halaman 1dari 81

Introduc

ao a Algoritmos

1 / 63

Divisao e Conquista
Eduardo Camponogara
Departamento de Automac
ao e Sistemas
Universidade Federal de Santa Catarina

DAS-9003: Introducao a Algoritmos

Introduc
ao a Algoritmos
Sum
ario

Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos

2 / 63

Introduc
ao a Algoritmos
Sum
ario

Introducao

Divisao e conquista se refere a uma classe de algoritmos que


quebram um problema em pedacos menores, resolvem cada
parte recursivamente e depois combinam as solucoes das
partes em uma solucao global.

A analise envolve a resolucao de recorrencias.

3 / 63

Introduc
ao a Algoritmos
Merge Sort

Sumario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos

4 / 63

Introduc
ao a Algoritmos
Merge Sort

Merge List
I

Merge sorted lists A = a1 , . . . , an and B = b1 , . . . , bm

Maintains a current pointer for each list, initialized at the front

The output list is empty


While both lists are nonempty:

I
I
I

Let ai and bj be the elements pointed by the current pointer


Append the smaller of these two to the output list
Advance the pointer of the list from which the smaller element
was selected

Once a list is empty, append the remainder of the other list to


the output list

5 / 63

Introduc
ao a Algoritmos
Merge Sort

Merge-Sort ordena a lista de chaves dividindo-a em duas


sub-listas, cada uma com uma metade da lista original.

Ordena separadamente cada uma das sub-listas,


recursivamente, e depois combinando os resultados das
chamadas recursivas com o algoritmo Merge-List

6 / 63

Introduc
ao a Algoritmos

7 / 63

Merge Sort

Seja n o tamanho da lista a ser ordenada.

Seja T (n) o tempo de execucao no pior caso do algoritmo


para uma entrada de tamanho n.

Supondo n par, T (n) satisfaz a seguinte relacao de


recorrencia:
T (n) 2T (n/2) + O(n)
2T (n/2) + cn quando n > 2
T (2) c
Para alguma constante c > 0 pois o tempo de intercalacao
das duas listas e O(n).

Introduc
ao a Algoritmos

8 / 63

Merge Sort

A rigor, a recorrencia seria da forma:


T (n) T (bn/2c) + T (dn/2e) + cn
para n > 2.

Para a maioria das recorrencias, os limites assintoticos nao sao


afetados pelos operadores bc e de.

As recorrencias apresentadas nao nos dao um limite


assintotico explcito na taxa de crescimento da funcao T .

Introduc
ao a Algoritmos
Abordagens para Soluc
ao de Recorr
encias

Sumario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos

9 / 63

Introduc
ao a Algoritmos
Abordagens para Soluc
ao de Recorr
encias

A tecnica mais natural e intuitiva consiste expandir a


recorrencia em uma soma e depois chegar ao tempo de
execucao.

Uma segunda tecnica consiste dar um chute educado,


substituir na recorrencia e verificar se funciona. Formalmente,
a justificativa se da atraves de uma argumentacao com
inducao matematica.

10 / 63

Introduc
ao a Algoritmos

11 / 63

Abordagens para Soluc


ao de Recorr
encias

Expandindo a Recorrencia Merge-Sort

a) Analisar os primeiros nveis


b) Identificando um padrao
I

No nvel j, o n
umero de problemas duplicou j vezes, logo
existem existem 2j subproblemas cada um deles com tamanho
n/2j .
Portanto, o nvel j contribui com no maximo
2j (
ao tempo total de execucao.

cn
) = cn
2j

Introduc
ao a Algoritmos
Abordagens para Soluc
ao de Recorr
encias

12 / 63

Introduc
ao a Algoritmos
Abordagens para Soluc
ao de Recorr
encias

c) Somando sobre todos os nveis de recursao


I
I

O limite cn se aplica a todos os nveis da recursao.


O no. de vezes que a entrada deve ser dividida por 2 para
reduzir o tamanho n a 2 e log2 n.
Somando tudo, chegamos ao custo total cn log2 n, ou seja,
O(n log n).

13 / 63

Introduc
ao a Algoritmos

14 / 63

Abordagens para Soluc


ao de Recorr
encias

Substituindo a Solucao na Recorrencia

Suponha que acreditamos que


T (n) cn log2 n
para todo n 2 e desejamos verificar que isto e verdade.

Claramente, esta relacao e verificada para n = 2 pois


cn log2 n = 2c
e a recorrencia explicitamente nos diz que T (2) c.

Introduc
ao a Algoritmos

15 / 63

Abordagens para Soluc


ao de Recorr
encias

Por inducao, suponha que T (n) cn log2 n para valores menores


que n e queremos estabelecer que T (n) e verdadeiro.
T (n) 2T (n/2) + cn
2c(n/2) log2 (n/2) + cn
= cn[log2 n log2 2] + cn
= cn log2 n cn + cn
= cn log2 n
o que estabelece a verdade de T (n). Isto prova, por inducao, que
T (n) cn log2 n para todo n 2.

Introduc
ao a Algoritmos

16 / 63

Abordagens para Soluc


ao de Recorr
encias

Substituicao Parcial

A substituicao acima e fraca porque fixa as constantes, porem


podemos mostrar a veracidade sem fixar as constantes.

Suponha que acreditamos que T (n) O(n log n), mas nao
estamos certos das contantes em O().

Suponha que desejamos mostrar que


T (n) kn logb n
para certos valores k e b, que serao determinados mais tarde.

Introduc
ao a Algoritmos

17 / 63

Abordagens para Soluc


ao de Recorr
encias

Comecamos com o passo de inducao


T (n) 2T (n/2) + cn
n
n
2k
logb
+ cn
2
2
kn [logb n logb 2] + cn
= kn logb n kn logb 2 + cn
Agora podemos definir b = 2 pois ira tornar logb (n/2) = log2 n 1.

Introduc
ao a Algoritmos

18 / 63

Abordagens para Soluc


ao de Recorr
encias

Prosseguindo
T (n) kn log2 n kn + cn

Existe uma escolha de k que ira tornar a expressao limitada


por kn log2 n?

A resposta e sim, basta usar qualquer k c, para chegarmos a


T (n) kn log2 n kn + cn
kn log2 n

Introduc
ao a Algoritmos
Outras Recorr
encias

Sumario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos

19 / 63

Introduc
ao a Algoritmos

20 / 63

Outras Recorr
encias

Consideramos uma classe de recorrencias que generalizam a


recorrencia do Merge-Sort.

Esta classe compreende a divisao e conquista que


recursivamente resolve q subproblemas de tamanho n/2, e
depois combina os resultados em tempo O(n).

Para alguma constante c,


T (n) qT (n/2) + cn, quando n > 2
T (2) c

Introduc
ao a Algoritmos
Outras Recorr
encias

Caso q > 2

Usando o metodo da expansao:


I

avaliar os primeiros nveis

identificar um padrao

somar sobre todos os nveis de recursao

21 / 63

Introduc
ao a Algoritmos
Outras Recorr
encias

nvel 0: cn

nvel 1: qc n2

nvel 2: q 2 c n4

nvel k: q k c 2nk

22 / 63

Introduc
ao a Algoritmos

23 / 63

Outras Recorr
encias

n
n
n
n
+ q1c 1 + q2c 2 + + qk c k
20
2
2
2
log2 n1  
X
q k

T (n) q 0 c
cn
= cn

k=0
r log2 n


1
com r = q/2
r 1

Introduc
ao a Algoritmos

24 / 63

Outras Recorr
encias

Portanto,

r log2 n
T (n) cn
1
 r 
c
=
nr log2 n
r 1

Introduc
ao a Algoritmos
Outras Recorr
encias

Substituicao Parcial

O aparecimento de log2 q no expoente seguiu naturalmente da


solucao da recorrencia, com q > 2, mas nao e necessariamente
uma expressao que anteciparamos.

Suponha que acreditamos que a solucao da recorrencia, com


q > 2, tenha a forma T (n) knd para constantes k e d. Este
e um chute bem geral.

25 / 63

Introduc
ao a Algoritmos

26 / 63

Outras Recorr
encias

Temos que
T (n) qT (n/2) + cn
e aplicando a hipotese indutiva em T (n/2) chegamos a
 n d
+ cn
T (n) qk
2
q
= d knd + cn
2

Introduc
ao a Algoritmos
Outras Recorr
encias

Exemplo: q = 3

27 / 63

Introduc
ao a Algoritmos

28 / 63

Outras Recorr
encias

Isto e muito proximo de uma f


ormula que funciona se escolhermos
d tal que 2qd = 1, entao teremos
T (n) knd + cn
que e quase perfeito, exceto pelo termo cn.

Introduc
ao a Algoritmos

29 / 63

Outras Recorr
encias

A escolha de d e facil, basta fazer q = 2d o que implica


d = log2 q.

Para resolvermos/eliminarmos cn, vamos mudar o chute para


T (n) knd ln. Entao,
T (n) qk

 n d
2

ql

n
2

q d ql
kn n + cn
2d
2
ql
d
= kn n + cn
2

ql
d
= kn
+c n
2
=

+ cn

Introduc
ao a Algoritmos

30 / 63

Outras Recorr
encias

Esta hipotese funciona se escolhermos l tal que:


ql
c = l (q 2)l = 2c
2
2c
l =
q2
Ainda temos que resolver o caso base, com n = 2. Isto pode ser
resolvido selecionando k grande o suficiente para que o limite seja
valido quando n = 2.

Introduc
ao a Algoritmos

31 / 63

Outras Recorr
encias

Caso q = 1

Aqui consideramos o caso quando q = 1, neste caso:



T (n) T (n/2) + cn quando n > 2
T (2) c
Analise:
1. analisando os primeiros nveis
2. identificando um padrao
3. somando sobre todos os nveis da recursao

(1)

Introduc
ao a Algoritmos
Outras Recorr
encias

nvel 0: cn

nvel 1: cn/2

nvel 2 cn/4

32 / 63

Introduc
ao a Algoritmos
Outras Recorr
encias

Exemplo: q = 1

33 / 63

Introduc
ao a Algoritmos

34 / 63

Outras Recorr
encias

log2 n1

log2 n1  
X cn
X
1
=
cn
2j
2j
j=0
j=0
 
X
1
cn
2j

T (n)

j=0

1
= 2cn
1 1/2
= O(n)
= cn

Introduc
ao a Algoritmos

35 / 63

Outras Recorr
encias

Substituicao Parcial
Da mesma forma que no caso anterior, vamos supor que
T (n) knd
Tentando estabelecer a veracidade por inducao,
T (n) T (n/2) + cn
 n d
k
+ cn
2
k
= d nd + cn
2

Introduc
ao a Algoritmos

36 / 63

Outras Recorr
encias

Agora escolhamos d = 1 e k = 2c, obtendo


k
n + cn
2


k
=
+c n
2
= kn

T (n)

Introduc
ao a Algoritmos
Contando Invers
oes

Sumario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos

37 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Contando Inversoes

Uma aplicacao que tem se tornado muito comum e conhecida


como filtragem colaborativa, na qual se tenta casar as
preferencias de uma pessoa (livros, filmes e restaurantes) com
as preferencias de outras pessoas na Internet.

Quando a Internet identifica pessoas com preferencias


similares `as suas, ela pode realizar recomendacoes.

Uma outra aplicacao e a meta-busca, que realiza buscas em


diferentes sites e depois combina os resultados baseando-se
nas similaridades e diferencas dos resultados.

38 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Contando Inversoes

Uma aplicacao que tem se tornado muito comum e conhecida


como filtragem colaborativa, na qual se tenta casar as
preferencias de uma pessoa (livros, filmes e restaurantes) com
as preferencias de outras pessoas na Internet.

Quando a Internet identifica pessoas com preferencias


similares `as suas, ela pode realizar recomendacoes.

Uma outra aplicacao e a meta-busca, que realiza buscas em


diferentes sites e depois combina os resultados baseando-se
nas similaridades e diferencas dos resultados.

38 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Contando Inversoes

Uma aplicacao que tem se tornado muito comum e conhecida


como filtragem colaborativa, na qual se tenta casar as
preferencias de uma pessoa (livros, filmes e restaurantes) com
as preferencias de outras pessoas na Internet.

Quando a Internet identifica pessoas com preferencias


similares `as suas, ela pode realizar recomendacoes.

Uma outra aplicacao e a meta-busca, que realiza buscas em


diferentes sites e depois combina os resultados baseando-se
nas similaridades e diferencas dos resultados.

38 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

O problema fundamental consiste da comparacao de dois


ranqueamentos. Voce ranqueia n filmes e o filtro colaborativo
procura na base de dados por pessoas que tem ranqueamentos
similares.

Voce rotula os filmes de 1 a n segundo os teus scores. Nos e


dado um conjunto de n n
umeros, a1 , a2 , . . ., an . Queremos
medir o quao distante sao estes n
umeros de uma ordem
ascendente.

A medida deve ser 0 de a1 < a2 < < an , aumentando `a


medida que os n
umeros ficam embaralhados.

39 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

O problema fundamental consiste da comparacao de dois


ranqueamentos. Voce ranqueia n filmes e o filtro colaborativo
procura na base de dados por pessoas que tem ranqueamentos
similares.

Voce rotula os filmes de 1 a n segundo os teus scores. Nos e


dado um conjunto de n n
umeros, a1 , a2 , . . ., an . Queremos
medir o quao distante sao estes n
umeros de uma ordem
ascendente.

A medida deve ser 0 de a1 < a2 < < an , aumentando `a


medida que os n
umeros ficam embaralhados.

39 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

O problema fundamental consiste da comparacao de dois


ranqueamentos. Voce ranqueia n filmes e o filtro colaborativo
procura na base de dados por pessoas que tem ranqueamentos
similares.

Voce rotula os filmes de 1 a n segundo os teus scores. Nos e


dado um conjunto de n n
umeros, a1 , a2 , . . ., an . Queremos
medir o quao distante sao estes n
umeros de uma ordem
ascendente.

A medida deve ser 0 de a1 < a2 < < an , aumentando `a


medida que os n
umeros ficam embaralhados.

39 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Uma maneira natural de quantificar esta nocao e atraves da


contagem de invers
oes. Dizemos que dois ndices i < j
formam uma inversao ser ai > aj , ou seja, se ai e aj estao fora
de ordem.

Queremos determinar o n
umero de invers
oes na sequencia
a1 , . . . , an .

Exemplo (2, 4, 1, 3, 5). Cada intersecao de segmentos de linha


corresponde a um par que esta fora da ordem.

Ha tres inversoes no exemplo: (2, 1), (4, 1) e (4, 3).

40 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Uma maneira natural de quantificar esta nocao e atraves da


contagem de invers
oes. Dizemos que dois ndices i < j
formam uma inversao ser ai > aj , ou seja, se ai e aj estao fora
de ordem.

Queremos determinar o n
umero de invers
oes na sequencia
a1 , . . . , an .

Exemplo (2, 4, 1, 3, 5). Cada intersecao de segmentos de linha


corresponde a um par que esta fora da ordem.

Ha tres inversoes no exemplo: (2, 1), (4, 1) e (4, 3).

40 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Se os ranqueamentos estao em total desacordo, entao o


n
umero de inverso
es e tal
 que todos pares definem uma
n
inversao, ou seja,
e o n
umero de inversoes.
2

41 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Projetando um Algoritmo

Uma possibilidade e examinar cada um dos pares, levando a


um algoritmo de tempo O(n2 ).
Estrategia de divisao e conquista:
I

I
I

Divida a cadeia ha1 , . . . , an i em duas metades, ha1 , . . . , am i e


ham+1 , . . . , an i.
Calcule o n
umero de invers
oes em cada metade.
Calcule o n
umero de invers
oes (ai , aj ) com ai e aj pertencendo
a cadeias/metades distintas.

42 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Projetando um Algoritmo

Uma possibilidade e examinar cada um dos pares, levando a


um algoritmo de tempo O(n2 ).
Estrategia de divisao e conquista:
I

I
I

Divida a cadeia ha1 , . . . , an i em duas metades, ha1 , . . . , am i e


ham+1 , . . . , an i.
Calcule o n
umero de invers
oes em cada metade.
Calcule o n
umero de invers
oes (ai , aj ) com ai e aj pertencendo
a cadeias/metades distintas.

42 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Exemplo: q = 1

43 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Para nos ajudar a contar o n


umero de invers
oes entre duas
metades, vamos fazer com que o algoritmo recursivamente
ordene os n
umeros das duas metades.

Toda vez que o elemento ai e inserido na lista intercalada C ,


nenhuma inversao e contabilizada pois ai e menor ou igual a
todos os elementos em B.

Por outro lado, toda vez que um elemento bj e inserido em C ,


incrementamos o n
umero de invers
oes do n
umero de
elementos restantes em A, pois eles sao todos maiores que bj .

44 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Para nos ajudar a contar o n


umero de invers
oes entre duas
metades, vamos fazer com que o algoritmo recursivamente
ordene os n
umeros das duas metades.

Toda vez que o elemento ai e inserido na lista intercalada C ,


nenhuma inversao e contabilizada pois ai e menor ou igual a
todos os elementos em B.

Por outro lado, toda vez que um elemento bj e inserido em C ,


incrementamos o n
umero de invers
oes do n
umero de
elementos restantes em A, pois eles sao todos maiores que bj .

44 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Para nos ajudar a contar o n


umero de invers
oes entre duas
metades, vamos fazer com que o algoritmo recursivamente
ordene os n
umeros das duas metades.

Toda vez que o elemento ai e inserido na lista intercalada C ,


nenhuma inversao e contabilizada pois ai e menor ou igual a
todos os elementos em B.

Por outro lado, toda vez que um elemento bj e inserido em C ,


incrementamos o n
umero de invers
oes do n
umero de
elementos restantes em A, pois eles sao todos maiores que bj .

44 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Merge-and-Count(A, B)
I

Maintain a Current pointer into each list, intialized to the


front

Maintain a variable Count for the number of inversion,


initialized to 0
While both lists are nonempty

I
I
I

Let ai and bj be the elements pointed by the Current pointer


Append the smaller element to the output list
If bj < ai , increment Count by the number of elements
remaining in A
Advance the pointer Current in the list from which the smaller
element was removed

Once one list is empty, append the remainder of the other to


the output

Return Count and the merged list

45 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Sort-and-Count(L)
I If the list has one element then
I
I

there are no inversions


Return (0, L)

else
I

I
I
I
I

Divide the list in two halves: A contains the first dn/2e


elements, B contains the remaining bn/2c elements
(rA , A)=Sort-and-Count(A)
(rB , B)=Sort-and-Count(B)
(r , L)=Merge-and-Count(A, B)
Return (rA + rB + r , L)

Observacao
Sort-and-Count roda em tempo O(n log n).

46 / 63

Introduc
ao a Algoritmos
Contando Invers
oes

Sort-and-Count(L)
I If the list has one element then
I
I

there are no inversions


Return (0, L)

else
I

I
I
I
I

Divide the list in two halves: A contains the first dn/2e


elements, B contains the remaining bn/2c elements
(rA , A)=Sort-and-Count(A)
(rB , B)=Sort-and-Count(B)
(r , L)=Merge-and-Count(A, B)
Return (rA + rB + r , L)

Observacao
Sort-and-Count roda em tempo O(n log n).

46 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Sumario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos

47 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Definicao do Problema

Dados n pontos no plano, encontre o par de pontos mais proximo.


I

Uma solucao obvia consiste em verificar todos os O(n2 ) pares


possveis e selecionar o par mais pr
oximo.

Shamos e Hoey se perguntaram se existiria um algoritmo mais


rapido do que o algoritmo quadratico. Eles encontraram um
algoritmo de tempo O(n log n).

48 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Definicao do Problema

Dados n pontos no plano, encontre o par de pontos mais proximo.


I

Uma solucao obvia consiste em verificar todos os O(n2 ) pares


possveis e selecionar o par mais pr
oximo.

Shamos e Hoey se perguntaram se existiria um algoritmo mais


rapido do que o algoritmo quadratico. Eles encontraram um
algoritmo de tempo O(n log n).

48 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Projetando o Algoritmo

Seja P = {p1 , . . . , pn } o conjunto de pontos onde pi = (xi , yi ).

Para dois pontos pi , pj P, d(pi , pj ) e a distancia Euclidiana


entre eles.

Nosso objetivo e encontrar o par de pontos pi , pj que


minimiza d(pi , pj ).

Assumimos que nao ha dois pontos em P com a mesma


coordenada x ou y .

49 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Projetando o Algoritmo

Seja P = {p1 , . . . , pn } o conjunto de pontos onde pi = (xi , yi ).

Para dois pontos pi , pj P, d(pi , pj ) e a distancia Euclidiana


entre eles.

Nosso objetivo e encontrar o par de pontos pi , pj que


minimiza d(pi , pj ).

Assumimos que nao ha dois pontos em P com a mesma


coordenada x ou y .

49 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Divisao e Conquista

Estrategia:
1. Dividimos os pontos em uma metade esquerda e uma metade
direita.
2. Encontramos o par mais pr
oximo na metade esquerda, e o par
mais proximo na metade direita.
3. Usamos a informacao anterior para encontrar a solucao global.
As combinacoes nao consideradas sao aquelas que envolvem
um ponto da esquerda e da direita.

50 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Definindo a Recursao

Em qualquer chamada recursiva sobre um conjunto P 0 P,


iniciamos com duas listas:
I

A lista Px0 com os pontos de P 0 ordenados em x

A lista Py0 com os pontos de P 0 ordenados em y

Recursao:
I

Definimos como Q os dn/2e primeiros pontos na lista Px e R


os bn/2c u
ltimos pontos na lista Px . Teremos quatro listas:
Qx , Qy , Rx e Ry

51 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Definindo a Recursao

Em qualquer chamada recursiva sobre um conjunto P 0 P,


iniciamos com duas listas:
I

A lista Px0 com os pontos de P 0 ordenados em x

A lista Py0 com os pontos de P 0 ordenados em y

Recursao:
I

Definimos como Q os dn/2e primeiros pontos na lista Px e R


os bn/2c u
ltimos pontos na lista Px . Teremos quatro listas:
Qx , Qy , Rx e Ry

51 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Ilustracao

52 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Definindo a Recursao

Recursivamente encontra-se os pontos mais pr


oximos em Q e R:
I

Suponha q0? e q1? os mais pr


oximos em Q

Suponha r0? e r1? os mais pr


oximos em R

53 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Combinando as Solucoes

Seja = {d(q0? , q1? ), d(r0? , r1? )}

Questao: Existem pontos q Q e r R para os quais


d(q, r ) < ? Se nao, entao ja encontramos o par de pontos
mais proximo recursivamente. Caso contrario q e r definem o
par mais proximo.

Seja x ? a coordenada x do ponto Q mais `a direita, e seja L a


linha vertical definida pela equacao x = x ? . Esta reta separa
os pontos dos conjuntos Q e R.

54 / 63

Introduc
ao a Algoritmos

55 / 63

Encontrando os Pontos Mais Pr


oximos

Proposicao
Se existe q Q e r R para os quais d(q, r ) < , entao q e r
estao a uma distancia de L

Prova
Suponha que q e r existem, onde q = (qx , qy ) e r = (rx , ry ). Pela
definicao de r ? , sabemos que qx x ? rx . Entao,
x ? qx rx qx d(q, r ) <
Alem disso,
rx x ? rx qx d(q, r ) <

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Prova
Logo, os pontos q e r tem uma coordenada-x a unidades de x ?
e, portanto, estao a uma distancia maxima da linha L.

56 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Observacao

Para encontrar q e r , podemos restringir a busca a uma banda


consistindo de pontos em P que estao a uma distancia de L.

Seja S P este conjunto de pontos.

Seja Sy a lista de S ordenada pela coordenada-y . Em uma


passagem por Py , podemos produzir Sy em tempo O(n).

57 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Observacao

Para encontrar q e r , podemos restringir a busca a uma banda


consistindo de pontos em P que estao a uma distancia de L.

Seja S P este conjunto de pontos.

Seja Sy a lista de S ordenada pela coordenada-y . Em uma


passagem por Py , podemos produzir Sy em tempo O(n).

57 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Observacao

Para encontrar q e r , podemos restringir a busca a uma banda


consistindo de pontos em P que estao a uma distancia de L.

Seja S P este conjunto de pontos.

Seja Sy a lista de S ordenada pela coordenada-y . Em uma


passagem por Py , podemos produzir Sy em tempo O(n).

57 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Proposicao
Existe q Q e r R com d(q, r ) < se, e somente se, existe
s, s 0 S para os quais d(s, s 0 ) < .

58 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Ilustracao

59 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Proposicao
Se s, s 0 S tem a propriedade que d(s, s 0 ) < , entao s e s 0 estao
a 15 posicoes um do outro na lista ordenada Sy .

Prova
I

Considere o subconjunto Z no plano dos pontos que estao a


uma distancia de L.

Particionamos Z em caixas com largura/altura /2.

Suponha que dois pontos pertencam a uma mesma caixa,


entao ambos pertencem a Q ou ambos pertencem a R.

60 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Proposicao
Se s, s 0 S tem a propriedade que d(s, s 0 ) < , entao s e s 0 estao
a 15 posicoes um do outro na lista ordenada Sy .

Prova
I

Considere o subconjunto Z no plano dos pontos que estao a


uma distancia de L.

Particionamos Z em caixas com largura/altura /2.

Suponha que dois pontos pertencam a uma mesma caixa,


entao ambos pertencem a Q ou ambos pertencem a R.

60 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Proposicao
Se s, s 0 S tem a propriedade que d(s, s 0 ) < , entao s e s 0 estao
a 15 posicoes um do outro na lista ordenada Sy .

Prova
I

Considere o subconjunto Z no plano dos pontos que estao a


uma distancia de L.

Particionamos Z em caixas com largura/altura /2.

Suponha que dois pontos pertencam a uma mesma caixa,


entao ambos pertencem a Q ou ambos pertencem a R.

60 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Prova
I

Mas dois pontos


em uma mesma caixa estao a uma distancia
maxima de 2/2 < , contradizendo a definicao que e a
distancia mnima entre dois pontos de Q ou de R.

Portanto, cada caixa contem no maximo 1 ponto.

Agora suponha que s, s 0 S tem a propriedade que


d(s, s 0 ) < , e que eles estao a pelo menos 16 posicoes um do
outro em Sy .

Assuma que s tem a menor coordenada-y .

61 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Prova
I

Mas dois pontos


em uma mesma caixa estao a uma distancia
maxima de 2/2 < , contradizendo a definicao que e a
distancia mnima entre dois pontos de Q ou de R.

Portanto, cada caixa contem no maximo 1 ponto.

Agora suponha que s, s 0 S tem a propriedade que


d(s, s 0 ) < , e que eles estao a pelo menos 16 posicoes um do
outro em Sy .

Assuma que s tem a menor coordenada-y .

61 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Prova
I

Mas dois pontos


em uma mesma caixa estao a uma distancia
maxima de 2/2 < , contradizendo a definicao que e a
distancia mnima entre dois pontos de Q ou de R.

Portanto, cada caixa contem no maximo 1 ponto.

Agora suponha que s, s 0 S tem a propriedade que


d(s, s 0 ) < , e que eles estao a pelo menos 16 posicoes um do
outro em Sy .

Assuma que s tem a menor coordenada-y .

61 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Prova
I

Como Z pode ter no maximo 1 ponto por caixa, ha pelo


menos 3 linhas da caixa entre s e s 0 .

Mas dois pontos quaisquer de Z separados por 3 ou mais


linhas deve estar a uma distancia 3/2 um do outro, o que
configura uma contradicao.

62 / 63

Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos

Encerramento

Fim!

Obrigado pela presenca

63 / 63

Anda mungkin juga menyukai