• Nenhum resultado encontrado

Polígonos monótonos

N/A
N/A
Protected

Academic year: 2022

Share "Polígonos monótonos"

Copied!
27
0
0

Texto

(1)

Geometria Computacional

Cristina G. Fernandes

Departamento de Ciência da Computação do IME-USP

http://www.ime.usp.br/˜cris/

segundo semestre de 2014

(2)

Polígonos monótonos

Um polígono P é monótono em relação a uma reta L se P ∩ L é conexo para toda reta L perpendicular a L.

Se L é o eixo y, dizemos que P é y-monótono.

(3)

Polígonos monótonos

Um polígono P é monótono em relação a uma reta L se P ∩ L é conexo para toda reta L perpendicular a L.

Se L é o eixo y, dizemos que P é y-monótono.

v0

v1

v2

v3

v4

v5

v6 v7

v8

v9 v10

v11

v12

v13

v14

v15

v16

v17

v18

v19

v20

(4)

Polígonos monótonos

Seja P um polígono y-monótono com n vértices.

Podemos ordenar os vértices de P por y-coordenada em tempo O(n).

(5)

Polígonos monótonos

Seja P um polígono y-monótono com n vértices.

Podemos ordenar os vértices de P por y-coordenada em tempo O(n).

δP: fronteira de P

determine a curva poligonal esquerda de δP determine a curva poligonal direita de δP

intercale as duas curvas

(6)

Polígonos monótonos

Seja P um polígono y-monótono com n vértices.

Podemos ordenar os vértices de P por y-coordenada em tempo O(n).

δP: fronteira de P

determine a curva poligonal esquerda de δP determine a curva poligonal direita de δP

intercale as duas curvas

Cada um destes passos pode ser feito em tempo .

(7)

Algoritmo

Entrada: polígono monótono P com n vértices Saída: triangulação de P

(8)

Algoritmo

Entrada: polígono monótono P com n vértices Saída: triangulação de P

Primeiro passo: ordenar os vértices de P por y-coordenada, obtendo u1, . . . , un

Restante: é iterativo e usa uma pilha

(9)

Algoritmo

Entrada: polígono monótono P com n vértices Saída: triangulação de P

Primeiro passo: ordenar os vértices de P por y-coordenada, obtendo u1, . . . , un

Restante: é iterativo e usa uma pilha

O algoritmo produz uma sequência de polígonos P = P0, P1, . . . , Pn = ∅

onde o polígono

Pi é obtido de Pi1 após o algoritmo processar ui

(10)

Invariantes do algoritmo

Entrada: polígono monótono P com n vértices Saída: triangulação de P

Primeiro passo: ordenar os vértices de P por y-coordenada, obtendo u1, . . . , un

Restante: é iterativo e usa uma pilha S = (s1, . . . , st)

(11)

Invariantes do algoritmo

Entrada: polígono monótono P com n vértices Saída: triangulação de P

Primeiro passo: ordenar os vértices de P por y-coordenada, obtendo u1, . . . , un

Restante: é iterativo e usa uma pilha S = (s1, . . . , st)

No início de cada iteração, valem os seguintes invariantes:

s1, . . . , st está em ordem crescente de y-coordenada e inclue todos os vértices abaixo de s1 e acima de st

s1, . . . , st são vértices consecutivos na cadeia esquerda ou direita de Pi1

s2, . . . , st1 são vértices reflexos de Pi1 Pi é o que falta triangular de P

(12)

Invariantes do algoritmo

Entrada: polígono monótono P com n vértices Saída: triangulação de P

Primeiro passo: ordenar os vértices de P por y-coordenada, obtendo u1, . . . , un

Restante: é iterativo e usa uma pilha S = (s1, . . . , st)

No início de cada iteração, valem os seguintes invariantes:

s1, . . . , st está em ordem crescente de y-coordenada e inclue todos os vértices abaixo de s1 e acima de st

s1, . . . , st são vértices consecutivos na cadeia esquerda ou direita de Pi 1

(13)

Casos do algoritmo

Seja ui o vértice processado nessa iteração.

(14)

Casos do algoritmo

Seja ui o vértice processado nessa iteração.

Três casos:

(a) ui é adjacente (em δP) a st mas não a s1 (b) ui é adjacente a s1 mas não a st

(c) ui é adjacente a s1 e a st

(15)

Casos do algoritmo

Seja ui o vértice processado nessa iteração.

Três casos:

(a) ui é adjacente (em δP) a st mas não a s1 (b) ui é adjacente a s1 mas não a st

(c) ui é adjacente a s1 e a st

(a) (b) (c)

s1

s1 s1

s2

s2 s2

s3

s3 s3

s4

s4 s4

s5

s5 s5

ui ui

ui

(16)

Triangula monótono

DIVIDEEMMONÓTONO-LP(n, P) 1 u1, . . . , un ← Ordena(n, P) 2 S ← (u1, u2) D ← ∅ 3 para i ← 3 até n faça

4 sejam s1, . . . , st os vértices de S

5 Caso (a): ui adjacente a st mas não a s1

11 Caso (b): ui adjacente a s1 mas não a st

(17)

Triangula monótono

DIVIDEEMMONÓTONO-LP(n, P )

5 Caso (a): ui adjacente a st mas não a s1

6 enquanto t > 1 e Ângulo(ui, st, st1) < π faça 7 Desempilha(S)

8 t ← t − 1

9 D ← D ∪ {uist} 10 Empilha(S, ui)

(18)

Triangula monótono

DIVIDEEMMONÓTONO-LP(n, P )

5 Caso (a): ui adjacente a st mas não a s1

6 enquanto t > 1 e Ângulo(ui, st, st1) < π faça 7 Desempilha(S)

8 t ← t − 1

9 D ← D ∪ {uist} 10 Empilha(S, ui)

s1

s2

s3

(19)

Triangula monótono

DIVIDEEMMONÓTONO-LP(n, P )

11 Caso (b): ui adjacente a s1 mas não a st 12 aux ← st

13 enquanto t > 1 faça 14 D ← D ∪ {uist}

15 Desempilha(S) 16 t ← t − 1

17 Desempilha(S) ✄ desempilha s1

18 Empilha(S, aux) Empilha(S, ui)

(20)

Triangula monótono

DIVIDEEMMONÓTONO-LP(n, P )

11 Caso (b): ui adjacente a s1 mas não a st 12 aux ← st

13 enquanto t > 1 faça 14 D ← D ∪ {uist}

15 Desempilha(S) 16 t ← t − 1

17 Desempilha(S) ✄ desempilha s1

18 Empilha(S, aux) Empilha(S, ui)

s1

s2

(21)

Triangula monótono

DIVIDEEMMONÓTONO-LP(n, P )

19 Caso (c): ui adjacente a s1 e a st ✄ ui = un 20 Desempilha(S) ✄ desempilha st 21 enquanto t > 2 faça

22 t ← t − 1

23 D ← D ∪ {uist} 24 Desempilha(S)

(22)

Triangula monótono

DIVIDEEMMONÓTONO-LP(n, P )

19 Caso (c): ui adjacente a s1 e a st ✄ ui = un 20 Desempilha(S) ✄ desempilha st 21 enquanto t > 2 faça

22 t ← t − 1

23 D ← D ∪ {uist} 24 Desempilha(S)

s1

s2

s3

s4

(23)

Triangula monótono em tempo linear

3 para i 3 até n faça

4 sejam s1, . . . ,st os vértices de S

5 Caso (a): ui adjacente a st mas não a s1

6 enquanto t > 1 e Ângulo(ui,st, st−1) < π faça

7 Desempilha(S); t t 1; D D ∪ {uist−1} 10 Empilha(S,ui)

11 Caso (b): ui adjacente a s1 mas não a st

12 aux st

13 enquanto t > 1 faça

14 D D ∪ {uist}; Desempilha(S); t t 1 17 Desempilha(S) desempilha s1

18 Empilha(S,aux) Empilha(S,ui)

19 Caso (c): ui adjacente a s1 e a st ui = un

20 Desempilha(S) desempilha st

21 enquanto t > 2 faça

esempilha

(24)

Triangula monótono em tempo linear

O número de chamadas de Empilha é não mais que 2n.

(25)

Triangula monótono em tempo linear

O número de chamadas de Empilha é não mais que 2n.

O número de chamadas de Desempilha portanto também é no máximo 2n.

(26)

Triangula monótono em tempo linear

O número de chamadas de Empilha é não mais que 2n.

O número de chamadas de Desempilha portanto também é no máximo 2n.

O consumo de tempo do algoritmo é proporcional ao número de chamadas de Empilha mais o número de chamadas de Desempilha.

(27)

Triangula monótono em tempo linear

O número de chamadas de Empilha é não mais que 2n.

O número de chamadas de Desempilha portanto também é no máximo 2n.

O consumo de tempo do algoritmo é proporcional ao número de chamadas de Empilha mais o número de chamadas de Desempilha.

Portanto o consumo de tempo é O(n).

Referências

Documentos relacionados

Mestre em Engenharia pelo Departamento de Ciência da Computação e Gestão de Informação do Instituto Asiático de Tecnologia (na Tailândia) Mestre e Doutor em Ciência da

Apresentamos nossa proposta de preços para os itens abaixo relacionados objetivando o fornecimento a essa Universidade, de acordo com o disposto no edital licitatório

Para trabalhos futuros, sugere-se incrementar este sistema de classificação implementando, além do Algoritmo de Otimização Colônia de Abelhas, também os Algoritmos

Os objetivos desse estudo foram apresentar as mais recentes inovações bancárias que estão se difundindo no Brasil; aplicar a Teoria do Enfoque Meta Analítico (TEMAC)

Projetar, desenvolver e avaliar um sistema computacional para auxiliar os médicos na análise de imagens de radiografia para o diagnóstico de pneumonia infantil, via classificação

Matemática Computação Computação Computação Computação Ciência da Ciência da Ciência da Ciência da Lingüística Lingüística Lingüística Lingüística Engenharia

3) projetos de extensão; o Curso de Ciência da Computação têm uma grande preocupação na formação geral dos seus alunos. Preocupação essa que, além de

Escrita a partir do diálogo com romances e estórias da tradição popular do Nordeste Brasileiro, o Auto da Compadecida, se integra no cenário do imaginário