105
Convite à Geometria Computacional Jornadas de Atualização em Informática Cristina G. Fernandes e José Coelho de Pina Departamento de Ciência da Computação do IME-USP http://www.ime.usp.br/dcc/ Bento Gonçalves, julho de 2009 JAI 2009 – p. 1

Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

  • Upload
    lamphuc

  • View
    228

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Convite à Geometria ComputacionalJornadas de Atualização em Informática

Cristina G. Fernandes e José Coelho de PinaDepartamento de Ciência da Computação do IME-USP

http://www.ime.usp.br/dcc/

Bento Gonçalves, julho de 2009

JAI 2009 – p. 1

Page 2: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Visão geral do minicurso

Aula 1:

Introdução (Secs. 7.1 e 7.2)

Par de pontos mais próximos (Sec. 7.3)

JAI 2009 – p. 2

Page 3: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Visão geral do minicurso

Aula 1:

Introdução (Secs. 7.1 e 7.2)

Par de pontos mais próximos (Sec. 7.3)

Aula 2:

Fecho convexo (Sec. 7.4)

JAI 2009 – p. 2

Page 4: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Visão geral do minicurso

Aula 1:

Introdução (Secs. 7.1 e 7.2)

Par de pontos mais próximos (Sec. 7.3)

Aula 2:

Fecho convexo (Sec. 7.4)

Aula 3:

Método da linha de varredura (Secs. 7.5 e 7.6)

JAI 2009 – p. 2

Page 5: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Introdução

Antiguidade:

construções geométricas de Euclides(régua e compasso)

JAI 2009 – p. 3

Page 6: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Introdução

Antiguidade:

construções geométricas de Euclides(régua e compasso)

problema de Apollonius (cerca de 200 aC)

JAI 2009 – p. 3

Page 7: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Introdução

Antiguidade:

construções geométricas de Euclides(régua e compasso)

problema de Apollonius (cerca de 200 aC)

JAI 2009 – p. 3

Page 8: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Introdução

Antiguidade:

construções geométricas de Euclides(régua e compasso)

problema de Apollonius (cerca de 200 aC)

Solução de Euclides: 508 operações “elementares”

JAI 2009 – p. 3

Page 9: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Introdução

Antiguidade:

construções geométricas de Euclides(régua e compasso)

problema de Apollonius (cerca de 200 aC)

Solução de Euclides: 508 operações “elementares”

Solução de Lemoine (1902): menos de 200 operaçõesJAI 2009 – p. 3

Page 10: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Modelo de computação

Algoritmo:sequência finita de instruções que resolve um problema.

JAI 2009 – p. 4

Page 11: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Modelo de computação

Algoritmo:sequência finita de instruções que resolve um problema.

Modelo de computação: descrição abstrata de umcomputador que será usado para executar um algoritmo.

JAI 2009 – p. 4

Page 12: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Modelo de computação

Algoritmo:sequência finita de instruções que resolve um problema.

Modelo de computação: descrição abstrata de umcomputador que será usado para executar um algoritmo.

operações elementares (aritméticas, comparações, etc)

critério para medir consumo de tempo

JAI 2009 – p. 4

Page 13: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Modelo de computação

Algoritmo:sequência finita de instruções que resolve um problema.

Modelo de computação: descrição abstrata de umcomputador que será usado para executar um algoritmo.

operações elementares (aritméticas, comparações, etc)

critério para medir consumo de tempo

Compromisso entre realidade e tratabilidade matemática.

JAI 2009 – p. 4

Page 14: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Modelo de computação

Real RAM (real random access machine)com custo uniforme:

manipula números reais arbitrários

operações com reais custam 1 (mesmo raiz quadrada)

JAI 2009 – p. 5

Page 15: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Modelo de computação

Real RAM (real random access machine)com custo uniforme:

manipula números reais arbitrários

operações com reais custam 1 (mesmo raiz quadrada)

Análise de algoritmos:

notação assintótica

técnicas básicas

JAI 2009 – p. 5

Page 16: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Modelo de computação

Real RAM (real random access machine)com custo uniforme:

manipula números reais arbitrários

operações com reais custam 1 (mesmo raiz quadrada)

Análise de algoritmos:

notação assintótica

técnicas básicas

Capítulo 1 Análise de algoritmospor Paulo Feofiloff

JAI 2009 – p. 5

Page 17: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par de pontos mais próximos

Problema: Dados n pontos no plano,determinar dois deles que estão à distância mínima.

JAI 2009 – p. 6

Page 18: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par de pontos mais próximos

Problema: Dados n pontos no plano,determinar dois deles que estão à distância mínima.

JAI 2009 – p. 6

Page 19: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par de pontos mais próximos

Problema: Dados n pontos no plano,determinar dois deles que estão à distância mínima.

(x, y)

(x′, y′)

Lembre-se que, para dois pontos (x, y) e (x′, y′) no plano,

DIST(x, y, x′, y′) =√

(x− x′)2 + (y − y′)2.

JAI 2009 – p. 6

Page 20: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par de pontos mais próximosProblema: Dados n pontos no plano,determinar dois deles que estão à distância mínima.

Entrada: coleção de n pontos representada porEntrada: vetores X[1 . . n] e Y [1 . . n].

(−2,−1)

(0, 3)

(1,−2)

(4, 2)

(3, 4)

X −2 0 1 3 4

Y −1 3 −2 4 2

1 2 3 4 5

JAI 2009 – p. 7

Page 21: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par de pontos mais próximosProblema: Dados n pontos no plano,determinar dois deles que estão à distância mínima.

Entrada: coleção de n pontos representada porEntrada: vetores X[1 . . n] e Y [1 . . n].

1

2

3

5

4

X −2 0 1 3 4

Y −1 3 −2 4 2

1 2 3 4 5

Saída: índices i e j indicandoSaída: dois pontos à distância mínima.

JAI 2009 – p. 7

Page 22: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par de pontos mais próximosProblema: Dados n pontos no plano,determinar dois deles que estão à distância mínima.

Entrada: coleção de n pontos representada porEntrada: vetores X[1 . . n] e Y [1 . . n].

1

2

3

5

4

X −2 0 1 3 4

Y −1 3 −2 4 2

1 2 3 4 5

Saída: menor distância entre dois pontos da coleção.

JAI 2009 – p. 7

Page 23: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par de pontos mais próximos

Problema: Dados n pontos no plano,determinar dois deles que estão à distância mínima.

Entrada: vetores X[1 . . n] e Y [1 . . n]Saída: menor distância entre dois pontos da coleção

JAI 2009 – p. 8

Page 24: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par de pontos mais próximos

Problema: Dados n pontos no plano,determinar dois deles que estão à distância mínima.

Entrada: vetores X[1 . . n] e Y [1 . . n]Saída: menor distância entre dois pontos da coleção

Primeira solução: algoritmo quadrático,que testa todos os pares de pontos.

JAI 2009 – p. 8

Page 25: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par de pontos mais próximos

Problema: Dados n pontos no plano,determinar dois deles que estão à distância mínima.

Entrada: vetores X[1 . . n] e Y [1 . . n]Saída: menor distância entre dois pontos da coleção

Primeira solução: algoritmo quadrático,que testa todos os pares de pontos.

ELEMENTAR(X,Y, n)1 d← +∞2 para i← 2 até n faça3 para j ← 1 até i− 1 faça4 se DIST(X[i], Y [i], X[j], Y [j]) < d5 então d← DIST(X[i], Y [i], X[j], Y [j])6 devolva d

JAI 2009 – p. 8

Page 26: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo elementar

ELEMENTAR(X,Y, n)1 d← +∞2 para i← 2 até n faça3 para j ← 1 até i− 1 faça4 se DIST(X[i], Y [i], X[j], Y [j]) < d5 então d← DIST(X[i], Y [i], X[j], Y [j])6 devolva d

JAI 2009 – p. 9

Page 27: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo elementar

ELEMENTAR(X,Y, n)1 d← +∞2 para i← 2 até n faça3 para j ← 1 até i− 1 faça4 se DIST(X[i], Y [i], X[j], Y [j]) < d5 então d← DIST(X[i], Y [i], X[j], Y [j])6 devolva d

Invariante: d é a menor distância entreInvariante: os pontos da coleção X[1 . . i− 1], Y [1 . . i− 1].

JAI 2009 – p. 9

Page 28: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo elementar

ELEMENTAR(X,Y, n)1 d← +∞2 para i← 2 até n faça3 para j ← 1 até i− 1 faça4 se DIST(X[i], Y [i], X[j], Y [j]) < d5 então d← DIST(X[i], Y [i], X[j], Y [j])6 devolva d

Invariante: d é a menor distância entreInvariante: os pontos da coleção X[1 . . i− 1], Y [1 . . i− 1].

Consumo de tempo: linha 4 é executadan

i=2

(i− 1) =n−1∑

i=1

i =n(n− 1)

2= Θ(n2).

JAI 2009 – p. 9

Page 29: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo elementar

ELEMENTAR(X,Y, n)1 d← +∞2 para i← 2 até n faça3 para j ← 1 até i− 1 faça4 se DIST(X[i], Y [i], X[j], Y [j]) < d5 então d← DIST(X[i], Y [i], X[j], Y [j])6 devolva d

Invariante: d é a menor distância entreInvariante: os pontos da coleção X[1 . . i− 1], Y [1 . . i− 1].

Consumo de tempo: linha 4 é executadan

i=2

(i− 1) =n−1∑

i=1

i =n(n− 1)

2= Θ(n2).

É possível projetar um algoritmo mais eficiente que este?JAI 2009 – p. 9

Page 30: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

Problema: Dados n pontos numa reta, determinar doisdeles que estão à distância mínima.

JAI 2009 – p. 10

Page 31: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

Problema: Dados n pontos numa reta, determinar doisdeles que estão à distância mínima.

Primeira solução: ordene os pontos, e encontre os doisconsecutivos mais próximos.

Tempo consumido: O(n lg n).

JAI 2009 – p. 10

Page 32: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

Problema: Dados n pontos numa reta, determinar doisdeles que estão à distância mínima.

Primeira solução: ordene os pontos, e encontre os doisconsecutivos mais próximos.

Tempo consumido: O(n lg n).

Problema com essa solução:não sei como generalizá-la para o plano...

JAI 2009 – p. 10

Page 33: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

Esse paradigma envolve os seguintes passos:

JAI 2009 – p. 11

Page 34: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

Esse paradigma envolve os seguintes passos:

Divisão: dividir a instância do problema em instânciasmenores do problema.

JAI 2009 – p. 11

Page 35: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

Esse paradigma envolve os seguintes passos:

Divisão: dividir a instância do problema em instânciasmenores do problema.

Conquista: resolver o problema nas instâncias menoresrecursivamente (ou diretamente, se elas forem pequenas osuficiente).

JAI 2009 – p. 11

Page 36: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

Esse paradigma envolve os seguintes passos:

Divisão: dividir a instância do problema em instânciasmenores do problema.

Conquista: resolver o problema nas instâncias menoresrecursivamente (ou diretamente, se elas forem pequenas osuficiente).

Combinação: combinar as soluções das instânciasmenores para gerar uma solução da instância original.

JAI 2009 – p. 11

Page 37: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

Esse paradigma envolve os seguintes passos:

Divisão: dividir a instância do problema em instânciasmenores do problema.

Conquista: resolver o problema nas instâncias menoresrecursivamente (ou diretamente, se elas forem pequenas osuficiente).

Combinação: combinar as soluções das instânciasmenores para gerar uma solução da instância original.

JAI 2009 – p. 12

Page 38: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

Esse paradigma envolve os seguintes passos:

Divisão: dividir a instância do problema em instânciasmenores do problema.

Conquista: resolver o problema nas instâncias menoresrecursivamente (ou diretamente, se elas forem pequenas osuficiente).

Combinação: combinar as soluções das instânciasmenores para gerar uma solução da instância original.

dE dD

esquerda direita

JAI 2009 – p. 12

Page 39: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

Esse paradigma envolve os seguintes passos:

Divisão: dividir a instância do problema em instânciasmenores do problema.

Conquista: resolver o problema nas instâncias menoresrecursivamente (ou diretamente, se elas forem pequenas osuficiente).

Combinação: combinar as soluções das instânciasmenores para gerar uma solução da instância original.

dE dDdED

esquerda direita

JAI 2009 – p. 12

Page 40: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

Pré-processamento: ordenar os pontos.

JAI 2009 – p. 13

Page 41: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

Pré-processamento: ordenar os pontos.

DISTÂNCIARETA(X,n)1 MERGESORT(X, 1, n)2 devolva DISTÂNCIARETAREC (X, 1, n)

JAI 2009 – p. 13

Page 42: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

Pré-processamento: ordenar os pontos.

DISTÂNCIARETA(X,n)1 MERGESORT(X, 1, n)2 devolva DISTÂNCIARETAREC (X, 1, n)

DISTÂNCIARETAREC: divisão e conquista.

JAI 2009 – p. 13

Page 43: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

Pré-processamento: ordenar os pontos.

DISTÂNCIARETA(X,n)1 MERGESORT(X, 1, n)2 devolva DISTÂNCIARETAREC (X, 1, n)

DISTÂNCIARETAREC: divisão e conquista.

Tempo consumido pelo DISTÂNCIARETA:O(n lg n) mais o tempo do DISTÂNCIARETAREC.

JAI 2009 – p. 13

Page 44: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

DISTÂNCIARETAREC (X, p, r) � Divisão e conquista1 se r ≤ p + 12 então se r = p3 então devolva +∞4 senão devolva X[r]−X[p]5 senão q ← ⌊(p + r)/2⌋6 dE ← DISTÂNCIARETAREC(X, p, q)7 dD ← DISTÂNCIARETAREC(X, q + 1, r)8 d← min{dE , dD, X[q+1]−X[q]}9 devolva d

JAI 2009 – p. 14

Page 45: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

DISTÂNCIARETAREC (X, p, r) � Divisão e conquista1 se r ≤ p + 12 então se r = p3 então devolva +∞4 senão devolva X[r]−X[p]5 senão q ← ⌊(p + r)/2⌋6 dE ← DISTÂNCIARETAREC(X, p, q)7 dD ← DISTÂNCIARETAREC(X, q + 1, r)8 d← min{dE , dD, X[q+1]−X[q]}9 devolva d

Consumo de tempo:

T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) + Θ(1)

onde n = r − p + 1.

JAI 2009 – p. 14

Page 46: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

DISTÂNCIARETAREC (X, p, r) � Divisão e conquista1 se r ≤ p + 12 então se r = p3 então devolva +∞4 senão devolva X[r]−X[p]5 senão q ← ⌊(p + r)/2⌋6 dE ← DISTÂNCIARETAREC(X, p, q)7 dD ← DISTÂNCIARETAREC(X, q + 1, r)8 d← min{dE , dD, X[q+1]−X[q]}9 devolva d

Consumo de tempo:

T (n) = T (⌊n/2⌋) + T (⌈n/2⌉) + Θ(1)

onde n = r − p + 1. Quanto vale T (n)?

JAI 2009 – p. 14

Page 47: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

DISTÂNCIARETAREC (X, p, r) � Divisão e conquista1 se r ≤ p + 12 então se r = p3 então devolva +∞4 senão devolva X[r]−X[p]5 senão q ← ⌊(p + r)/2⌋6 dE ← DISTÂNCIARETAREC(X, p, q)7 dD ← DISTÂNCIARETAREC(X, q + 1, r)8 d← min{dE , dD, X[q+1]−X[q]}9 devolva d

Consumo de tempo:

T (n) = T (⌊n/2⌋) + T (⌈n/2⌉) + Θ(1)

onde n = r − p + 1. Quanto vale T (n)? T (n) = Θ(n).

JAI 2009 – p. 14

Page 48: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

Voltando...

DISTÂNCIARETA(X,n)1 MERGESORT(X, 1, n)2 devolva DISTÂNCIARETAREC (X, 1, n)

JAI 2009 – p. 15

Page 49: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

Voltando...

DISTÂNCIARETA(X,n)1 MERGESORT(X, 1, n)2 devolva DISTÂNCIARETAREC (X, 1, n)

MERGESORT consome tempo O(n lg n).

DISTÂNCIARETAREC consome tempo Θ(n).

JAI 2009 – p. 15

Page 50: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo na reta

Voltando...

DISTÂNCIARETA(X,n)1 MERGESORT(X, 1, n)2 devolva DISTÂNCIARETAREC (X, 1, n)

MERGESORT consome tempo O(n lg n).

DISTÂNCIARETAREC consome tempo Θ(n).

Tempo consumido pelo DISTÂNCIARETA: O(n lg n).

JAI 2009 – p. 15

Page 51: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo no plano

Obtivemos um algoritmo O(n lg n) para pontos na reta.

Como generalizar essa ideia para o plano?

JAI 2009 – p. 16

Page 52: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo no plano

Obtivemos um algoritmo O(n lg n) para pontos na reta.

Como generalizar essa ideia para o plano?

Divide...

JAI 2009 – p. 16

Page 53: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo no plano

Obtivemos um algoritmo O(n lg n) para pontos na reta.

Como generalizar essa ideia para o plano?

Divide...

esquerda direita

JAI 2009 – p. 16

Page 54: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo no plano

Obtivemos um algoritmo O(n lg n) para pontos na reta.

Como generalizar essa ideia para o plano?

Divide... Conquista...

dE

dD

esquerda direita

JAI 2009 – p. 16

Page 55: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Par mais próximo no plano

Obtivemos um algoritmo O(n lg n) para pontos na reta.

Como generalizar essa ideia para o plano?

Divide... Conquista... Combina...

dE

dD

dED

esquerda direita

JAI 2009 – p. 16

Page 56: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Pré-processamento: ordenar os pontos pela X-coordenada

JAI 2009 – p. 17

Page 57: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Pré-processamento: ordenar os pontos pela X-coordenada

DISTÂNCIA-SH(X, Y, n)1 MERGESORT(X,Y, 1, n)2 devolva DISTÂNCIAREC-SH (X,Y, 1, n)

JAI 2009 – p. 17

Page 58: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Pré-processamento: ordenar os pontos pela X-coordenada

DISTÂNCIA-SH(X, Y, n)1 MERGESORT(X,Y, 1, n)2 devolva DISTÂNCIAREC-SH (X,Y, 1, n)

Consumo de tempo:O(n lg n) mais o tempo do DISTÂNCIAREC-SH.

JAI 2009 – p. 17

Page 59: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

DISTÂNCIAREC-SH (X,Y, p, r)

Dividir: X[p . . q], Y [p . . q] (esquerda)X[q+1 . . r], Y [q+1 . . r] (direita)onde q := ⌊(p + r)/2⌋.

JAI 2009 – p. 18

Page 60: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

DISTÂNCIAREC-SH (X,Y, p, r)

Dividir: X[p . . q], Y [p . . q] (esquerda)X[q+1 . . r], Y [q+1 . . r] (direita)onde q := ⌊(p + r)/2⌋.

Conquistar: Determine, recursivamente, a menor distânciadE entre dois pontos da esquerda e a menor distânciadD entre dois pontos da direita.

JAI 2009 – p. 18

Page 61: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

DISTÂNCIAREC-SH (X,Y, p, r)

Dividir: X[p . . q], Y [p . . q] (esquerda)X[q+1 . . r], Y [q+1 . . r] (direita)onde q := ⌊(p + r)/2⌋.

Conquistar: Determine, recursivamente, a menor distânciadE entre dois pontos da esquerda e a menor distânciadD entre dois pontos da direita.

Combinar: Devolva o mínimo entre dE , dD e a menordistância dED entre um ponto da esquerda e um pontoda direita.

JAI 2009 – p. 18

Page 62: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

DISTÂNCIAREC-SH (X,Y, p, r) � Divisão e conquista1 se r ≤ p + 22 então � resolva o problema diretamente3 senão q ← ⌊(p + r)/2⌋4 dE ← DISTÂNCIAREC-SH (X,Y, p, q)5 dD ← DISTÂNCIAREC-SH (X,Y, q+1, r)6 devolva COMBINE (X,Y, p, r, dE , dD)

JAI 2009 – p. 19

Page 63: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

DISTÂNCIAREC-SH (X,Y, p, r) � Divisão e conquista1 se r ≤ p + 22 então � resolva o problema diretamente3 senão q ← ⌊(p + r)/2⌋4 dE ← DISTÂNCIAREC-SH (X,Y, p, q)5 dD ← DISTÂNCIAREC-SH (X,Y, q+1, r)6 devolva COMBINE (X,Y, p, r, dE , dD)

Suponha que COMBINE é linear.

JAI 2009 – p. 19

Page 64: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

DISTÂNCIAREC-SH (X,Y, p, r) � Divisão e conquista1 se r ≤ p + 22 então � resolva o problema diretamente3 senão q ← ⌊(p + r)/2⌋4 dE ← DISTÂNCIAREC-SH (X,Y, p, q)5 dD ← DISTÂNCIAREC-SH (X,Y, q+1, r)6 devolva COMBINE (X,Y, p, r, dE , dD)

Suponha que COMBINE é linear.

Consumo de tempo do DISTÂNCIAREC-SH:

T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) + O(n)

onde n = r − p + 1.

JAI 2009 – p. 19

Page 65: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

DISTÂNCIAREC-SH (X,Y, p, r) � Divisão e conquista1 se r ≤ p + 22 então � resolva o problema diretamente3 senão q ← ⌊(p + r)/2⌋4 dE ← DISTÂNCIAREC-SH (X,Y, p, q)5 dD ← DISTÂNCIAREC-SH (X,Y, q+1, r)6 devolva COMBINE (X,Y, p, r, dE , dD)

Suponha que COMBINE é linear.

Consumo de tempo:

T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) + O(n)

onde n = r − p + 1. Quanto vale T (n)?

JAI 2009 – p. 19

Page 66: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

DISTÂNCIAREC-SH (X,Y, p, r) � Divisão e conquista1 se r ≤ p + 22 então � resolva o problema diretamente3 senão q ← ⌊(p + r)/2⌋4 dE ← DISTÂNCIAREC-SH (X,Y, p, q)5 dD ← DISTÂNCIAREC-SH (X,Y, q+1, r)6 devolva COMBINE (X,Y, p, r, dE , dD)

Suponha que COMBINE é linear.

Consumo de tempo:

T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) + O(n)

onde n = r − p + 1. Quanto vale T (n)? T (n) = O(n lg n).

JAI 2009 – p. 19

Page 67: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

JAI 2009 – p. 20

Page 68: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

COMBINE precisa considerar apenaspontos que estão a uma distância menor qued = min{dE , dD} da reta vertical x = X[q].

dE

(X [q], Y [q])

dD

dd

JAI 2009 – p. 20

Page 69: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

COMBINE precisa considerar apenaspontos que estão a uma distância menor qued = min{dE , dD} da reta vertical x = X[q].

dE

(X [q], Y [q])

dD

dd

Infelizmente todos os pontos podem estar nesta faixa...

JAI 2009 – p. 20

Page 70: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

JAI 2009 – p. 21

Page 71: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

Ideia...

dE

dD

d

dd

JAI 2009 – p. 21

Page 72: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

Ideia...

dE

dD

d

dd

Para cada ponto na faixa, olhamos apenas para pontos dafaixa que tenham Y -coordenada no máximo d mais queeste ponto.

JAI 2009 – p. 21

Page 73: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

dE

dD

d

dd

Quantos pontos assim há?

JAI 2009 – p. 22

Page 74: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

dE

dD

d

dd

Quantos pontos assim há?

Em cada um dos dois quadrados de lado d,há no máximo 4 pontos porque d ≤ dE e d ≤ dD.

JAI 2009 – p. 22

Page 75: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

dE

dD

d

dd

Quantos pontos assim há?

Em cada um dos dois quadrados de lado d,há no máximo 4 pontos porque d ≤ dE e d ≤ dD.

Logo há não mais que 7 pontos assim (excluindo o ponto).

JAI 2009 – p. 22

Page 76: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

dE

dD

d

dd

Mas como ter acesso rápido a estes pontos?

JAI 2009 – p. 23

Page 77: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Como fazer o COMBINE linear?

dE

dD

d

dd

Mas como ter acesso rápido a estes pontos?

Alteraremos o pré-processamento, para ter acesso aospontos ordenados pelas suas Y -coordenadas também.

JAI 2009 – p. 23

Page 78: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Pré-processamento: ordenar os pontos pela X-coordenadae ordenar (indiretamente) os pontos pela Y -coordenada

JAI 2009 – p. 24

Page 79: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Pré-processamento: ordenar os pontos pela X-coordenadae ordenar (indiretamente) os pontos pela Y -coordenada

DISTÂNCIA-SH(X, Y, n)1 MERGESORT(X,Y, 1, n)2 para i← 1 até n faça3 a[i]← i4 MERGESORTIND(Y, 1, n, a) � ordenação indireta5 devolva DISTÂNCIAREC-SH (X,Y, a, 1, n)

JAI 2009 – p. 24

Page 80: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Pré-processamento: ordenar os pontos pela X-coordenadae ordenar (indiretamente) os pontos pela Y -coordenada

DISTÂNCIA-SH(X, Y, n)1 MERGESORT(X,Y, 1, n)2 para i← 1 até n faça3 a[i]← i4 MERGESORTIND(Y, 1, n, a) � ordenação indireta5 devolva DISTÂNCIAREC-SH (X,Y, a, 1, n)

Consumo de tempo:De novo, O(n lg n) mais o tempo do DISTÂNCIAREC-SH.

JAI 2009 – p. 24

Page 81: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Divisão e conquista

DISTÂNCIAREC-SH (X,Y, a, p, r)

Dividir: Seja q := ⌊(p + r)/2⌋. Obtenha um vetor b[p . . r] talque X[p . . q], Y [p . . q], b[p . . q] seja uma representaçãoordenada dos pontos mais à esquerda eX[q+1 . . r], Y [q+1 . . r], b[q+1 . . r], uma representaçãoordenada dos pontos mais à direita.

Conquistar: Determine, recursivamente, a menor distânciadE entre dois pontos da esquerda e a menor distânciadD entre dois pontos da direita.

Combinar: Devolva o mínimo entre dE , dD e a menordistância dED entre um ponto da esquerda e um pontoda direita.

JAI 2009 – p. 25

Page 82: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

DISTÂNCIAREC-SH (X,Y, a, p, r) � Divisão e conquista1 se r ≤ p + 22 então � resolva o problema diretamente3 senão q ← ⌊(p + r)/2⌋4 b← DIVIDA (X,Y, a, p, r)5 dE ← DISTÂNCIAREC-SH (X,Y, b, p, q)6 dD ← DISTÂNCIAREC-SH (X,Y, b, q + 1, r)7 devolva COMBINE (X,Y, a, p, r, dE , dD)

JAI 2009 – p. 26

Page 83: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

DISTÂNCIAREC-SH (X,Y, a, p, r) � Divisão e conquista1 se r ≤ p + 22 então � resolva o problema diretamente3 senão q ← ⌊(p + r)/2⌋4 b← DIVIDA (X,Y, a, p, r)5 dE ← DISTÂNCIAREC-SH (X,Y, b, p, q)6 dD ← DISTÂNCIAREC-SH (X,Y, b, q + 1, r)7 devolva COMBINE (X,Y, a, p, r, dE , dD)

DIVIDA e COMBINE são algoritmos lineares.

JAI 2009 – p. 26

Page 84: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

DISTÂNCIAREC-SH (X,Y, a, p, r) � Divisão e conquista1 se r ≤ p + 22 então � resolva o problema diretamente3 senão q ← ⌊(p + r)/2⌋4 b← DIVIDA (X,Y, a, p, r)5 dE ← DISTÂNCIAREC-SH (X,Y, b, p, q)6 dD ← DISTÂNCIAREC-SH (X,Y, b, q + 1, r)7 devolva COMBINE (X,Y, a, p, r, dE , dD)

DIVIDA e COMBINE são algoritmos lineares.

Consumo de tempo:

T (n) = T (⌊n/2⌋) + T (⌈n/2⌉) + O(n)

onde n = r − p + 1.

JAI 2009 – p. 26

Page 85: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

DISTÂNCIAREC-SH (X,Y, a, p, r) � Divisão e conquista1 se r ≤ p + 22 então � resolva o problema diretamente3 senão q ← ⌊(p + r)/2⌋4 b← DIVIDA (X,Y, a, p, r)5 dE ← DISTÂNCIAREC-SH (X,Y, b, p, q)6 dD ← DISTÂNCIAREC-SH (X,Y, b, q + 1, r)7 devolva COMBINE (X,Y, a, p, r, dE , dD)

DIVIDA e COMBINE são algoritmos lineares.

Consumo de tempo:

T (n) = T (⌊n/2⌋) + T (⌈n/2⌉) + O(n)

onde n = r − p + 1. Como antes, T (n) = O(n lg n).

JAI 2009 – p. 26

Page 86: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Suponha que na coleçãonão há dois pontos com a mesma X-coordenada.

JAI 2009 – p. 27

Page 87: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Suponha que na coleçãonão há dois pontos com a mesma X-coordenada.

DIVIDA (X,Y, a, p, r)1 q ← ⌊(p + r)/2⌋2 i← p− 1 j ← q3 para k ← p até r faça4 se X[a[k]] ≤ X[q] � (X[a[k]], Y [a[k]]) está à esquerda da reta x = X[q]?

5 então i← i + 16 b[i]← a[k]7 senão j ← j + 18 b[j]← a[k]9 devolva b

JAI 2009 – p. 27

Page 88: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Suponha que na coleçãonão há dois pontos com a mesma X-coordenada.

DIVIDA (X,Y, a, p, r)1 q ← ⌊(p + r)/2⌋2 i← p− 1 j ← q3 para k ← p até r faça4 se X[a[k]] ≤ X[q]5 então i← i + 16 b[i]← a[k]7 senão j ← j + 18 b[j]← a[k]9 devolva b

X −2 0 1 3 4

Y −1 3 −2 4 2

a 3 1 5 2 4

1 2 3 4 5

b

q = 3 X [q] = 1

JAI 2009 – p. 27

Page 89: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Suponha que na coleçãonão há dois pontos com a mesma X-coordenada.

DIVIDA (X,Y, a, p, r)1 q ← ⌊(p + r)/2⌋2 i← p− 1 j ← q3 para k ← p até r faça4 se X[a[k]] ≤ X[q]5 então i← i + 16 b[i]← a[k]7 senão j ← j + 18 b[j]← a[k]9 devolva b

k

X −2 0 1 3 4

Y −1 3 −2 4 2

a 3 1 5 2 4

1 2 3 4 5

b 3

q = 3 X [q] = 1

JAI 2009 – p. 27

Page 90: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Suponha que na coleçãonão há dois pontos com a mesma X-coordenada.

DIVIDA (X,Y, a, p, r)1 q ← ⌊(p + r)/2⌋2 i← p− 1 j ← q3 para k ← p até r faça4 se X[a[k]] ≤ X[q]5 então i← i + 16 b[i]← a[k]7 senão j ← j + 18 b[j]← a[k]9 devolva b

k

X −2 0 1 3 4

Y −1 3 −2 4 2

a 3 1 5 2 4

1 2 3 4 5

b 3 1

q = 3 X [q] = 1

JAI 2009 – p. 27

Page 91: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Suponha que na coleçãonão há dois pontos com a mesma X-coordenada.

DIVIDA (X,Y, a, p, r)1 q ← ⌊(p + r)/2⌋2 i← p− 1 j ← q3 para k ← p até r faça4 se X[a[k]] ≤ X[q]5 então i← i + 16 b[i]← a[k]7 senão j ← j + 18 b[j]← a[k]9 devolva b

k

X −2 0 1 3 4

Y −1 3 −2 4 2

a 3 1 5 2 4

1 2 3 4 5

b 3 1 5

q = 3 X [q] = 1

JAI 2009 – p. 27

Page 92: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Suponha que na coleçãonão há dois pontos com a mesma X-coordenada.

DIVIDA (X,Y, a, p, r)1 q ← ⌊(p + r)/2⌋2 i← p− 1 j ← q3 para k ← p até r faça4 se X[a[k]] ≤ X[q]5 então i← i + 16 b[i]← a[k]7 senão j ← j + 18 b[j]← a[k]9 devolva b

X −2 0 1 3 4

Y −1 3 −2 4 2

a 3 1 5 2 4

1 2 3 4 5

b 3 1 2 5 4

q = 3 X [q] = 1

JAI 2009 – p. 27

Page 93: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

Suponha que na coleçãonão há dois pontos com a mesma X-coordenada.

DIVIDA (X,Y, a, p, r)1 q ← ⌊(p + r)/2⌋2 i← p− 1 j ← q3 para k ← p até r faça4 se X[a[k]] ≤ X[q]5 então i← i + 16 b[i]← a[k]7 senão j ← j + 18 b[j]← a[k]9 devolva b

X −2 0 1 3 4

Y −1 3 −2 4 2

a 3 1 5 2 4

1 2 3 4 5

b 3 1 2 5 4

q = 3 X [q] = 1

Consumo de tempo:É fácil ver que o consumo é Θ(n) onde n = r − p + 1.

JAI 2009 – p. 27

Page 94: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

A rotina abaixo identifica os pontos que estão na faixa,ordenados pela Y -coordenada.

JAI 2009 – p. 28

Page 95: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

A rotina abaixo identifica os pontos que estão na faixa,ordenados pela Y -coordenada.

CANDIDATOS (X, a, p, r, d)1 q ← ⌊(p + r)/2⌋2 t← 03 para k ← p até r faça4 se |X[a[k]]−X[q]| < d5 então t← t + 16 f [t]← a[k]7 devolva (f, t)

(X[q], Y [q])

dd

JAI 2009 – p. 28

Page 96: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

A rotina abaixo identifica os pontos que estão na faixa,ordenados pela Y -coordenada.

CANDIDATOS (X, a, p, r, d)1 q ← ⌊(p + r)/2⌋2 t← 03 para k ← p até r faça4 se |X[a[k]]−X[q]| < d5 então t← t + 16 f [t]← a[k]7 devolva (f, t)

X −2 0 1 3 4

Y −1 3 −2 4 2

a 3 1 5 2 4

1 2 3 4 5

f

X [3] = 1 d =√

5

JAI 2009 – p. 28

Page 97: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

A rotina abaixo identifica os pontos que estão na faixa,ordenados pela Y -coordenada.

CANDIDATOS (X, a, p, r, d)1 q ← ⌊(p + r)/2⌋2 t← 03 para k ← p até r faça4 se |X[a[k]]−X[q]| < d5 então t← t + 16 f [t]← a[k]7 devolva (f, t)

X −2 0 1 3 4

Y −1 3 −2 4 2

a 3 1 5 2 4

1 2 3 4 5

f 3 2 4

X [3] = 1 d =√

5

JAI 2009 – p. 28

Page 98: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

A rotina abaixo identifica os pontos que estão na faixa,ordenados pela Y -coordenada.

CANDIDATOS (X, a, p, r, d)1 q ← ⌊(p + r)/2⌋2 t← 03 para k ← p até r faça4 se |X[a[k]]−X[q]| < d5 então t← t + 16 f [t]← a[k]7 devolva (f, t)

X −2 0 1 3 4

Y −1 3 −2 4 2

a 3 1 5 2 4

1 2 3 4 5

f 3 2 4

X [3] = 1 d =√

5

Consumo de tempo:É fácil ver que o consumo é Θ(n) onde n = r − p + 1.

JAI 2009 – p. 28

Page 99: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

COMBINE (X,Y, a, p, r, dE , dD)1 d← min{dE , dD}2 (f, t)← CANDIDATOS (X, a, p, r, d) � pontos na faixa3 para i← 1 até t− 1 faça4 para j ← i + 1 até min{i + 7, t} faça � ≤ 7 próximos5 d′ ← DIST(X[f [i]], Y [f [i]], X[f [j]], Y [f [j]])6 se d′ < d7 então d← d′

8 devolva d

JAI 2009 – p. 29

Page 100: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

COMBINE (X,Y, a, p, r, dE , dD)1 d← min{dE , dD}2 (f, t)← CANDIDATOS (X, a, p, r, d) � pontos na faixa3 para i← 1 até t− 1 faça4 para j ← i + 1 até min{i + 7, t} faça � ≤ 7 próximos5 d′ ← DIST(X[f [i]], Y [f [i]], X[f [j]], Y [f [j]])6 se d′ < d7 então d← d′

8 devolva d

Consumo de tempo:É fácil ver que o consumo é Θ(n) onde n = r − p + 1.

JAI 2009 – p. 29

Page 101: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

COMBINE (X,Y, a, p, r, dE , dD)1 d← min{dE , dD}2 (f, t)← CANDIDATOS (X, a, p, r, d) � pontos na faixa3 para i← 1 até t− 1 faça4 j ← i + 15 enquanto j ≤ t e Y [f [j]]−Y [f [i]] < d faça � ≤ 7 próximos6 d′ ← DIST(X[f [i]], Y [f [i]], X[f [j]], Y [f [j]])7 se d′ < d8 então d← d′

9 j ← j + 110 devolva d

JAI 2009 – p. 30

Page 102: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Algoritmo de Shamos e Hoey

COMBINE (X,Y, a, p, r, dE , dD)1 d← min{dE , dD}2 (f, t)← CANDIDATOS (X, a, p, r, d) � pontos na faixa3 para i← 1 até t− 1 faça4 j ← i + 15 enquanto j ≤ t e Y [f [j]]−Y [f [i]] < d faça � ≤ 7 próximos6 d′ ← DIST(X[f [i]], Y [f [i]], X[f [j]], Y [f [j]])7 se d′ < d8 então d← d′

9 j ← j + 110 devolva d

Consumo de tempo: Θ(n) onde n = r − p + 1.

JAI 2009 – p. 30

Page 103: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Quase finalizando...

Exercício: Adapte os algoritmos vistos nesta aula para quedevolvam dois pontos da coleção que estejam à distânciamínima (em vez de devolver a distância apenas).

JAI 2009 – p. 31

Page 104: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Quase finalizando...

Exercício: Adapte os algoritmos vistos nesta aula para quedevolvam dois pontos da coleção que estejam à distânciamínima (em vez de devolver a distância apenas).

Material coberto nesta aula: Secs 7.1 – 7.3.

JAI 2009 – p. 31

Page 105: Convite à Geometria Computacionalcris/aulas/16_1_338/slides/geocomp.pdf · operações com reais custam 1 (mesmo raiz quadrada) Análise de algoritmos: notação assintótica técnicas

Quase finalizando...

Exercício: Adapte os algoritmos vistos nesta aula para quedevolvam dois pontos da coleção que estejam à distânciamínima (em vez de devolver a distância apenas).

Material coberto nesta aula: Secs 7.1 – 7.3.

Agora, às animações!

JAI 2009 – p. 31