geraÇÃo aleatÓria de polÍgonos geraÇÃo e partiÇÃo de polÍgonos ana gonçalves inês matos...

188
GERAÇÃO ALEATÓRIA GERAÇÃO ALEATÓRIA DE POLÍGONOS DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE GERAÇÃO E PARTIÇÃO DE POLÍGONOS POLÍGONOS Ana Gonçalves Ana Gonçalves Inês Matos Inês Matos Departamento de Matemática da Universidade de Aveiro

Upload: internet

Post on 22-Apr-2015

112 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

GERAÇÃO GERAÇÃO ALEATÓRIA DE ALEATÓRIA DE

POLÍGONOSPOLÍGONOSGERAÇÃO E PARTIÇÃO DE GERAÇÃO E PARTIÇÃO DE

POLÍGONOSPOLÍGONOS

Ana GonçalvesAna Gonçalves

Inês MatosInês Matos

Departamento de Matemática da Universidade de Aveiro

Page 2: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

2

DEFINIÇÕEDEFINIÇÕESS

Page 3: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

3

Definições

Polígono Monótono: um polígono simples diz-se monótono em relação a alguma direcção se todas as linhas perpendiculares a essa direcção intersectam o polígono, no máximo, em dois pontos ou num intervalo fechado quando coincide com uma aresta.

Exemplos:

x

y

Page 4: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

4

Definições

Grafo de Visibilidade: grafo cujos vértices são os mesmos do polígono simples e onde dois vertices são adjacentes se são mutuamente visíveis. As arestas deste grafo são chamadas de arestas de visibilidade e o número de arestas deste grafo será denotado por K.

Exemplo:

v

Page 5: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

5

Definições

Heurística: também algoritmo heurístico, utiliza-se quando existe um procedimento que encontra uma boa solução para resolver um certo problema. No entanto, essa solução pode não ser óptima e pode mesmo dar-se o caso do procedimento não encontrar qualquer solução (apesar dela existir).

Posição Geral: um conjunto de pontos está em posição geral se não existirem três pontos colineares ou quatro pontos cocirculares.

Page 6: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

6

GERAÇÃO GERAÇÃO DE DE

POLÍGONOPOLÍGONOSS

Page 7: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

7

Geração de Polígonos

Por geração uniforme de polígonos aleatórios entende-se que cada polígono gerado tem probabilidade 1/k de ocorrer, se existirem k polígonos possíveis.

A geração uniforme de polígonos aleatórios é um problema para o qual não se conhece solução polinomial.

Sendo assim, temos que recorrer a heurísticas para gerar polígonos. No entanto, a heurística que escolhemos deve ser condicionada pela solução que queremos obter.

Page 8: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

8

Geração de Polígonos

Que tipo de polígono queremos gerar?

Qual a característica que queremos impôr ao polígono final?

Simples Monótono Estrelado Ortogonal Convexo...

Polígono com n vértices Polígono com n vértices reflexos Polígono a partir de um dado conjunto de pontos Polígono com uma dada área...

Page 9: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

9

Geração de Polígonos Simples

Sobre este problema existem dois trabalhos que se evidenciam dos restantes. Ambos partem de um conjunto S de pontos no plano (em posição geral) que são os vértices do polígono simples final.

O trabalho mais conhecido é o RPG – Heuristics for the Generation of Random Polygons de Thomas Auer e Martin Held. Nele podemos encontrar diversas heurísticas para gerar polígonos simples.

http://www.cosy.sbg.ac.at/~held/projects/rpg/rpg.html

Page 10: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

10

Geração de Polígonos Estrelados

Star Universe(gera todos os polígonos estrelados possíveis)

Quick Star – O(nlogn)(gera uniformemente todos os polígonos estrelados possíveis)

Um polígono estrelado é determinado pelo seu núcleo. O conjunto de todos os núcleos forma uma partição do invólucro convexo. Para gerar todos os polígonos estrelados, trabalha-se sobre esta partição. A complexidade deste algoritmo é elevada.

Star Universe

Page 11: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

11

Geração de Polígonos Estrelados

Quick Star

Page 12: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

12

Geração de Polígonos Estrelados

Quick Star Determina o invólucro convexo

Page 13: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

13

Geração de Polígonos Estrelados

Quick Star Escolhe um ponto interior

p0

Page 14: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

14

Geração de Polígonos Estrelados

Quick Star Ordena os restantes pontos em torno desse ponto interior

p0

p1

Page 15: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

15

Geração de Polígonos Estrelados

Quick Star Ordena os restantes pontos em torno desse ponto interior

p0

p1

p2

Page 16: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

16

Geração de Polígonos Estrelados

Quick Star Ordena os restantes pontos em torno desse ponto interior

p0

p1

p2

p3

Page 17: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

17

Geração de Polígonos Estrelados

Quick Star Ordena os restantes pontos em torno desse ponto interior

p0

p1

p2

p3p4

Page 18: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

18

Geração de Polígonos Estrelados

Quick Star Ordena os restantes pontos em torno desse ponto interior

p0

p1

p2

p3p4

p5

Page 19: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

19

Geração de Polígonos Estrelados

Quick Star Ordena os restantes pontos em torno desse ponto interior

p0

p1

p2

p3p4

p5

p6

Page 20: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

20

Geração de Polígonos Estrelados

Quick Star Ordena os restantes pontos em torno desse ponto interior

p0

p1

p2

p3p4

p5

p6

p7

Page 21: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

21

Geração de Polígonos Estrelados

Quick Star Ordena os restantes pontos em torno desse ponto interior

p0

p1

p2

p3p4

p5

p6

p7

p8

Page 22: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

22

Geração de Polígonos Estrelados

Quick Star Ordena os restantes pontos em torno desse ponto interior

p0

p1

p2

p3p4

p5

p6

p7

p8

p9

Page 23: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

23

Geração de Polígonos Estrelados

Quick Star Ordena os restantes pontos em torno desse ponto interior

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Page 24: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

24

Geração de Polígonos Estrelados

Quick Star Ligar os pontos por ordem

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Page 25: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

25

Geração de Polígonos Estrelados

Quick Star

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Ligar os pontos por ordem

Page 26: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

26

Geração de Polígonos Estrelados

Quick Star

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Ligar os pontos por ordem

Page 27: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

27

Geração de Polígonos Estrelados

Quick Star Ligar os pontos por ordem

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Page 28: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

28

Geração de Polígonos Estrelados

Quick Star Ligar os pontos por ordem

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Page 29: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

29

Geração de Polígonos Estrelados

Quick Star Ligar os pontos por ordem

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Page 30: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

30

Geração de Polígonos Estrelados

Quick Star Ligar os pontos por ordem

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Page 31: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

31

Geração de Polígonos Estrelados

Quick Star Ligar os pontos por ordem

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Page 32: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

32

Geração de Polígonos Estrelados

Quick Star Ligar os pontos por ordem

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Page 33: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

33

Geração de Polígonos Estrelados

Quick Star Ligar os pontos por ordem

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Page 34: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

34

Geração de Polígonos Estrelados

Quick Star Ligar os pontos por ordem

p0

p1

p2

p3p4

p5

p6

p7

p8

p9p10

Page 35: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

35

Geração de Polígonos Estrelados

Quick Star Polígono Estrelado Final

O(nlogn)

Page 36: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

36

Geração de Polígonos Simples

Steady Growth – O(n2)(não gera todos os polígonos simples possíveis)

Space Partitioning – O(nlogn)(não gera todos os polígonos possíveis)

Permute & Reject - O(nlogn) (gera todos os polígonos possíveis uniformemente)

2-Opt Moves - O(n3)(gera todos os polígonos possíveis embora não seja uniforme)

Incremental Construction & Backtracking

Page 37: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

37

Geração de Polígonos Simples

Steady Growth

Page 38: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

38

Geração de Polígonos Simples

Steady Growth Encontrar três pontos que formem um triângulo vazio

s1

s2

s3

Page 39: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

39

Geração de Polígonos Simples

Steady Growth Escolher um ponto si tal que não exista nenhum

ponto de S\{s1,s2,s3} interior a CH(s1,s2,s3,s4)

s1

s2

s3

s4

Page 40: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

40

Geração de Polígonos Simples

Steady Growth Encontrar uma aresta do polígono já formado que seja completamente visível para si

s1

s2

s3

s4

Page 41: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

41

Geração de Polígonos Simples

Steady Growth Criar duas novas arestas e ir acrescentando os vários pontos, um a um, ao polígono já formado

s1

s2

s3

s4

Page 42: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

42

Geração de Polígonos Simples

Steady Growth Continuar com este procedimento para todos os diferentes pontos

s1

s2

s3

s4

s5

Page 43: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

43

Geração de Polígonos Simples

Steady Growth Continuar com este procedimento para todos os diferentes pontos

s1

s2

s3

s4

s5

s6

Page 44: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

44

s7

Geração de Polígonos Simples

Steady Growth Continuar com este procedimento para todos os diferentes pontos

s1

s2

s3

s4

s5

s6

Page 45: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

45

s7

Geração de Polígonos Simples

Steady Growth Continuar com este procedimento para todos os diferentes pontos

s1

s2

s3

s4

s5

s6

s8

Page 46: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

46

s7

Geração de Polígonos Simples

Steady Growth Continuar com este procedimento para todos os diferentes pontos

s1

s2

s3

s4

s5

s6

s8

s9

Page 47: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

47

s7

Geração de Polígonos Simples

Steady Growth Continuar com este procedimento para todos os diferentes pontos

s1

s2

s3

s4

s5

s6

s8

s9

s10

Page 48: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

48

s7

Geração de Polígonos Simples

Steady Growth Continuar com este procedimento para todos os diferentes pontos

s1

s2

s3

s4

s5

s6

s8

s9

s10

s11

Page 49: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

49

Geração de Polígonos Simples

Steady Growth Polígono Simples Final

O(n2)

Page 50: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

50

Geração de Polígonos Simples

Space Partitioning Escolher dois pontos aleatórios

i1

f1

Page 51: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

51

Geração de Polígonos Simples

Space Partitioning Separar os pontos de S em dois conjuntos

i1

f1

Page 52: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

52

Geração de Polígonos Simples

Space Partitioning

i1

f1

Separar os pontos de S em dois conjuntos

Page 53: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

53

Geração de Polígonos Simples

Space Partitioning Escolher um ponto x1 do conjunto da esquerda

i1

f1

x1

Page 54: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

54

Geração de Polígonos Simples

Space Partitioning Dividir os pontos deste conjunto através de uma recta que passa por x1 e intersecta a recta inicial

i1

f1

x1

Page 55: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

55

Geração de Polígonos Simples

Space Partitioning Dividir os pontos deste conjunto através de uma recta que passa por x1 e intersecta a recta inicial

i1

f1

x1

Page 56: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

56

Geração de Polígonos Simples

Space Partitioning Continuar com este processo até existir um conjunto vazio

i1

f1

x1

x2

Page 57: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

57

Geração de Polígonos Simples

Space Partitioning A aresta é formada pelo início e fim do conjunto em questão

i1

f1

x1

x2

Page 58: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

58

Geração de Polígonos Simples

Space Partitioning A aresta é formada pelo início e fim do conjunto em questão

i1

f1

x1

x2

x3

Page 59: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

59

Geração de Polígonos Simples

Space Partitioning

i1

f1

x1

x2

x3

Page 60: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

60

Geração de Polígonos Simples

Space Partitioning

i1

f1

x1

x2

x3 x4

Page 61: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

61

Geração de Polígonos Simples

Space Partitioning

i1

f1

x1

x2

x3 x4

x5

Page 62: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

62

Geração de Polígonos Simples

Space Partitioning

i1

f1

x1

x2

x3 x4

x5

Page 63: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

63

x6

Geração de Polígonos Simples

Space Partitioning

f2

i2

x1

x2

x3 x4

x5

O início e o fim trocam para o conjunto da direita

Page 64: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

64

Geração de Polígonos Simples

Space Partitioning

f2

i2

x1

x2

x3 x4

x5

x6

x7

Page 65: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

65

Geração de Polígonos Simples

Space Partitioning

f2

i2

x1

x2

x3 x4

x5

x6

x7

Page 66: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

66

Geração de Polígonos Simples

Space Partitioning

f2

i2

x1

x2

x3 x4

x5

x6

x7

Page 67: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

67

x6

Geração de Polígonos Simples

Space Partitioning

f2

i2

x1

x2

x3 x4

x5x7

x8

Page 68: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

68

x6

Geração de Polígonos Simples

Space Partitioning

f2

i2

x1

x2

x3 x4

x5x7

x8

x9

Page 69: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

69

x9

x6

Geração de Polígonos Simples

Space Partitioning

f2

i2

x1

x2

x3 x4

x5x7

x8

Page 70: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

70

Geração de Polígonos Simples

Space Partitioning Polígono Simples Final

O(nlogn)

Page 71: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

71

Geração de Polígonos Simples

Permute & Reject

Começa por calcular uma permutação dos índices dos pontos (pode ser feita em tempo linear).

De seguida liga os pontos pela ordem da permutação e depois verifica se gerou ou não um polígono simples.

Se o polígono final não for simples, então gera uma nova permutação de índices.

A verificação da existência de intersecções no polígono também é feita em tempo linear, mas o tempo real do método depende apenas de quantos polígonos necessitam ser gerados até encontrar um que seja realmente simples.

Page 72: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

72

Geração de Polígonos Simples

2-Opt Moves

Page 73: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

73

Geração de Polígonos Simples

2-Opt Moves Ligar os pontos de S aleatoriamente, por exemplo, pela ordem por que foram gerados

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 74: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

74

Geração de Polígonos Simples

2-Opt Moves Como não resultou num polígono simples, procura uma intersecção, por ex, s2s3 e s1s11

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 75: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

75

Geração de Polígonos Simples

2-Opt Moves Desfaz as intersecções criando as arestas s11s3 e

s1s2 ou s1s3 e s2s11.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 76: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

76

Geração de Polígonos Simples

2-Opt Moves Desfaz as intersecções criando as arestas s11s3 e

s1s2 ou s1s3 e s2s11.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 77: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

77

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 78: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

78

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 79: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

79

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 80: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

80

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 81: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

81

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 82: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

82

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 83: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

83

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 84: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

84

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 85: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

85

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 86: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

86

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 87: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

87

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 88: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

88

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 89: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

89

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 90: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

90

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 91: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

91

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 92: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

92

Geração de Polígonos Simples

2-Opt Moves Continua com este processo de modo a desfazer as ligações sem desconexar o polígono.

s1

s2

s3

s4

s5

s6

s7

s8

s9

s10

s11

Page 93: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

93

Geração de Polígonos Simples

2-Opt Moves Polígono Simples Final

O(n3)

Page 94: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

94

Geração de Polígonos Simples

Incremental Construction & BacktrackingEscolher dois pontos aleatoriamente e uni-los. Prosseguir escolhendo um ponto aleatório e ligando aos anteriores enquanto a cadeia se mantiver simples. Aplicar backtracking quando existir uma intersecção.

Obviamente, um dos objectivos principais é evitar o backtracking exaustivo.

Este algoritmo gera todos os polígonos simples possíveis com boa probabilidade. A sua eficiência depende do número de backtrackings que foram necessários.

Page 95: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

95

Geração de Polígonos Simples

Existe ainda uma heurística que é uma adaptação do algoritmo Steady Growth. Esta encontra-se no trabalho Generación de Polígonos Aleatorios de Pau Sanchez Campello.

Partition Growth - O(t log t)(gera polígonos com pelo menos n vértices)

t é o número de vértices a mover sobre uma recta

Page 96: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

96

Geração de Polígonos Simples

Partition Growth Número mínimo de vértices do polígono é 10.

Gerar um polígono com três vértices.

Page 97: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

97

Geração de Polígonos Simples

Partition Growth Gerar uma recta que intersecte o polígono

Page 98: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

98

Geração de Polígonos Simples

Partition Growth Determinar os pontos de intersecção entre a recta e o polígono.

Page 99: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

99

Geração de Polígonos Simples

Partition Growth Dividir em dois as arestas do polígono que são intersectadas pela recta

Page 100: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

100

Geração de Polígonos Simples

Partition Growth Deslocar aleatoriamente todos os pontos de intersecção sobre a recta, mantendo a ordem relativa das intersecções (para não produzir novas intersecções).

Page 101: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

101

Geração de Polígonos Simples

Partition Growth O número de pontos é menor que 10.Gerar outra recta que intersecte o polígono.

Page 102: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

102

Geração de Polígonos Simples

Partition Growth Determinar os pontos de intersecção entre a recta e o polígono.

Page 103: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

103

Geração de Polígonos Simples

Partition Growth Dividir em dois as arestas do polígono que são intersectadas pela recta

Page 104: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

104

Geração de Polígonos Simples

Partition Growth Deslocar aleatoriamente todos os pontos de intersecção sobre a recta, mantendo a ordem relativa das intersecções (para não produzir novas intersecções).

Page 105: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

105

Geração de Polígonos Simples

Partition Growth Número de pontos é menor que 10.Gerar uma recta que intersecte o polígono.

Page 106: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

106

Geração de Polígonos Simples

Partition Growth Determinar os pontos de intersecção entre a recta e o polígono.

Page 107: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

107

Geração de Polígonos Simples

Partition Growth Dividir em dois as arestas do polígono que são intersectadas pela recta

Page 108: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

108

Geração de Polígonos Simples

Partition Growth Deslocar aleatoriamente todos os pontos de intersecção sobre a recta mantendo a ordem relativa das intersecções (para não produzir novas intersecções).

Page 109: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

109

Geração de Polígonos Simples

Partition Growth Número de pontos é maior que 10.

O(t log t)

Page 110: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

110

Existe outra heurística para gerar polígonos estrelados que é apresentada em Generating Random Star-Shaped Polygons de Christian Sohler.

Las Vegas – O(n2logn)

A heurística constrói uma partição do plano que define todos os núcleos de polígonos estrelados (não degenerados) num conjunto de pontos S. Trabalhando sobre esta partição, podemos gerar todos os polígonos estrelados.

Geração de Polígonos Estrelados

Page 111: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

111

Geração de Polígonos

O outro trabalho tem o nome de POPS - Polygonalizations of Point Sets de G.T. Toussaint, V. Sitaru, T. Ruso. Nele podemos encontrar outras heurísticas para gerar polígonos simples aleatoriamente.

http://www.cs.mcgill.ca/~ktulu/507/

Convex Bottom - O(nlogn)(não gera todos os polígonos simples possíveis)

Two Peasants - O(nlogn)(não gera todos os polígonos simples possíveis)

Radar Sweep - O(nlogn)(não gera todos os polígonos estrelados possíveis)

Page 112: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

112

Geração de Polígonos Simples

Convex Bottom

Page 113: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

113

Geração de Polígonos Simples

Convex Bottom Encontrar os pontos de menor e maior abcissa

xmin

xmax

Page 114: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

114

Geração de Polígonos Simples

Convex Bottom

xmin

xmax

Criar uma recta e dividir os pontos

Page 115: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

115

Geração de Polígonos Simples

Convex Bottom

xmin

xmax

Criar uma recta e dividir os pontos

Page 116: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

116

Geração de Polígonos Simples

Convex Bottom

xmin

xmax

Criar o invólucro convexo de um dos grupos de pontos

Page 117: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

117

Geração de Polígonos Simples

Convex Bottom

xmin

xmax

Ligar os restantes pontos através da sua abcissa

Page 118: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

118

Geração de Polígonos Simples

Convex Bottom Polígono Simples Final

O(nlogn)

Page 119: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

119

Geração de Polígonos Simples

Two Peasants

Page 120: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

120

Geração de Polígonos Simples

Two Peasants Encontrar os pontos de menor e maior abcissa

xmin

xmax

Page 121: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

121

Geração de Polígonos Simples

Two Peasants Criar uma recta e dividir os pontos

xmin

xmax

Page 122: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

122

Geração de Polígonos Simples

Two Peasants Criar uma recta e dividir os pontos

xmin

xmax

Page 123: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

123

Geração de Polígonos Simples

Two Peasants Ligar cada conjunto através da sua abcissa

xmin

xmax

Page 124: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

124

Geração de Polígonos Simples

Two Peasants Ligar cada conjunto através da sua abcissa

xmin

xmax

Page 125: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

125

Geração de Polígonos Simples

Two Peasants Ligar cada conjunto aos extremos

xmin

xmax

Page 126: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

126

Geração de Polígonos Simples

Two Peasants Polígono Simples Final

O(nlogn)

Page 127: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

127

Geração de Polígonos Estrelados

Radar Sweep

Page 128: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

128

Geração de Polígonos Estrelados

Radar Sweep Encontrar o ponto de menor abcissa

xmin

Page 129: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

129

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

Page 130: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

130

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

p1

Page 131: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

131

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

p1

p2

Page 132: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

132

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

p1

p2

p3

Page 133: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

133

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

p1

p2

p3 p4

Page 134: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

134

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

p1

p2

p3 p4

p5

Page 135: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

135

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

p1

p2

p3 p4

p5 p6

Page 136: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

136

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

p1

p2

p3 p4

p5 p6

p7

Page 137: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

137

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

p1

p2

p3 p4

p5 p6

p7

p8

Page 138: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

138

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

p1

p2

p3 p4

p5 p6

p7

p8p9

Page 139: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

139

Geração de Polígonos Estrelados

Radar Sweep Ordenar os pontos em redor de p0 = xmin

p0

p1

p2

p3 p4

p5 p6

p7

p8

p10

p9

Page 140: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

140

Geração de Polígonos Estrelados

Radar Sweep Ligar os pontos pela ordem que foram encontrados (ordem dada pelos índices)

p0

p1

p2

p3 p4

p5 p6

p7

p8

p10

p9

Page 141: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

141

Geração de Polígonos Estrelados

Radar Sweep Ligar o primeiro ponto ao último

p0

p1

p2

p3 p4

p5 p6

p7

p8

p10

p9

Page 142: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

142

Geração de Polígonos Estrelados

Radar Sweep Polígono Estrelado Final

O(nlogn)

Page 143: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

143

Geração de Polígonos Ortogonais

Em 2000, Joseph O’Rourke estava a estudar a partição de polígonos ortogonais (de onde resultou o artigo Partitioning Ortogonal Polygons into Fat Rectangles) e, para isso, criou um gerador que foi baptizado de ROP – Random Orthogonal Polygon e implementado em LISP.

Este gerador não gera polígonos através de um conjunto de vértices mas sim através de uma grelha que vai sendo preenchida (a selecção aleatória das células é feita por heurísticas). A grelha tem NX por NY células e o resultado final é um polígono cuja área contém n células. O número final de vértices não é controlado, até porque os pontos colineares só são retirados depois do polígono estar gerado.

Não sabemos qual a complexidade do algoritmo, mas deve ser aproximadamente linear pois este é extremamente rápido a obter polígonos ortogonais para um elevado número de células.

Page 144: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

144

Geração de Polígonos Ortogonais

Em 2003 surge o trabalho de Ana P. Tomás e de Antonio L. Bajuelos, onde apresentam dois geradores de polígonos ortogonais no artigo Quadratic-Time Linear-Space Algorithms for Generating Orthogonal Polygons with a Given Number of Vertices. Qualquer dos geradores permite controlar o número final de vértices do polígono.

Inflate-Cut - O(n2)(gera todos os polígonos possíveis numa grelha)

Inflate-Paste - O(n2)(gera todos os polígonos possíveis numa grelha)

Page 145: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

145

Geração de Polígonos Ortogonais

Inflate-Cut O algoritmo começa numa célula única que vai alargando. Para efeitos de exemplo, começa-se já com uma parte do polígono formada

Page 146: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

146

Inflate-Cut Escolhe uma célula interior aleatória

Geração de Polígonos Ortogonais

Page 147: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

147

Inflate-Cut A célula escolhida vai “inchar” (inflate)

Geração de Polígonos Ortogonais

Page 148: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

148

Inflate-Cut A célula escolhida vai “inchar” (inflate)

Geração de Polígonos Ortogonais

Page 149: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

149

Inflate-Cut Procura as peças que podem ser cortadas (cut). Uma peça pode cortar-se se apenas contiver um vértice do polígono

Geração de Polígonos Ortogonais

1 2

34

Page 150: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

150

Inflate-Cut Corta a peça escolhida e obtém outro polígono ortogonal

Geração de Polígonos Ortogonais

Page 151: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

151

Inflate-Cut Corta a peça escolhida e obtém outro polígono ortogonal

Geração de Polígonos Ortogonais

Page 152: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

152

Inflate-Cut Corta a peça escolhida e obtém outro polígono ortogonal

Geração de Polígonos Ortogonais

Page 153: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

153

Inflate-Cut Corta a peça escolhida e obtém outro polígono ortogonal

Geração de Polígonos Ortogonais

Page 154: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

154

Inflate-Cut Corta a peça escolhida e obtém outro polígono ortogonal

Geração de Polígonos Ortogonais

Page 155: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

155

Inflate-Cut Corta a peça escolhida e obtém outro polígono ortogonal

Geração de Polígonos Ortogonais

Page 156: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

156

Inflate-Cut Corta a peça escolhida e obtém outro polígono ortogonal

Geração de Polígonos Ortogonais

Page 157: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

157

Inflate-Cut Corta a peça escolhida e obtém outro polígono ortogonal

Geração de Polígonos Ortogonais

O(n2)

Page 158: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

158

Geração de Polígonos Ortogonais

Inflate-Paste O algoritmo começa por escolher um vértice convexo v do polígono

v

Page 159: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

159

Geração de Polígonos Ortogonais

Inflate-Paste Selecciona uma célula que se encontra em FSN(v).

v

Por FSN(v) entende-se o maior polígono em escada nesta grelha que tem v como vértice, não intersecta o interior do polígono e a aresta horizontal adjacente ao vértice tem que fazer parte do lado do polígono.

Page 160: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

160

Geração de Polígonos Ortogonais

Inflate-Paste Depois de seleccionada a célula, determina o ponto central da peça e cria um novo rectângulo definido pelo vértice v e pelo ponto central determinado.

Page 161: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

161

Geração de Polígonos Ortogonais

Inflate-Paste Polígono resultante.

Page 162: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

162

Geração de Polígonos Ortogonais

Inflate-Paste Depois de seleccionada a célula, determina o ponto central da peça e cria um novo rectângulo definido pelo vértice v e pelo ponto central determinado.

Page 163: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

163

Geração de Polígonos Ortogonais

Inflate-Paste Polígono resultante.

Page 164: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

164

Geração de Polígonos Ortogonais

Inflate-Paste Depois de seleccionada a célula, determina o ponto central da peça e cria um novo rectângulo definido pelo vértice v e pelo ponto central determinado.

Page 165: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

165

Geração de Polígonos Ortogonais

Inflate-Paste Polígono resultante.

Page 166: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

166

Geração de Polígonos Ortogonais

Inflate-Paste Depois de seleccionada a célula, determina o ponto central da peça e cria um novo rectângulo definido pelo vértice v e pelo ponto central determinado.

Page 167: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

167

Geração de Polígonos Ortogonais

Inflate-Paste Polígono resultante.

Page 168: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

168

Geração de Polígonos Ortogonais

Inflate-Paste Depois de seleccionada a célula, determina o ponto central da peça e cria um novo rectângulo definido pelo vértice v e pelo ponto central determinado.

Page 169: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

169

Geração de Polígonos Ortogonais

Inflate-Paste Polígono resultante.

Page 170: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

170

Geração de Polígonos Ortogonais

Inflate-Paste Depois de seleccionada a célula, determina o ponto central da peça e cria um novo rectângulo definido pelo vértice v e pelo ponto central determinado.

Page 171: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

171

Geração de Polígonos Ortogonais

Inflate-Paste Polígono resultante.

Page 172: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

172

Geração de Polígonos Ortogonais

Inflate-Paste Depois de seleccionada a célula, determina o ponto central da peça e cria um novo rectângulo definido pelo vértice v e pelo ponto central determinado.

Page 173: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

173

Geração de Polígonos Ortogonais

Inflate-Paste Polígono resultante.

Page 174: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

174

Geração de Polígonos Ortogonais

Inflate-Paste Depois de seleccionada a célula, determina o ponto central da peça e cria um novo rectângulo definido pelo vértice v e pelo ponto central determinado.

Page 175: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

175

Geração de Polígonos Ortogonais

Inflate-Paste Polígono resultante.

O(n2)

Page 176: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

176

Geração de Polígonos Ortogonais

Também existe uma alteração ao algoritmo Inflate-Cut, dos mesmos autores, que impõe restrições à geração de polígonos. Um exemplo de um polígono final simétrico pode ver-se na figura seguinte:

Page 177: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

177

Geração de Polígonos Ortogonais

No trabalho anterior existe também uma referência a um trabalho de M. Filgueiras cuja apresentação foi apenas oral.

A ideia do algoritmo para gerar polígonos ortogonais é semelhante à do algoritmo de O’Rourke. Este algoritmo une rectângulos de áreas superiores à das células da grelha, permitindo a sobreposição dos rectângulos.

Page 178: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

178

Geração de Polígonos Monótonos

Chong Zu e outros apresentam um trabalho denominado Generating Polygons with Given Vertices que consegue gerar aleatoriamente polígonos monótonos em tempo linear.

Parte-se do pressuposto que Sn é um conjunto de n pontos no plano que estão ordenados segundo a sua abcissa (supõe-se também que não existem dois pontos com a mesma abcissa).A ideia do algoritmo é fazer um varrimento da cadeia monótona da esquerda para a direita (de s1 até sn) e contar o número de

polígonos monótonos possíveis neste conjunto S. Escolher um número aleatório dentro do intervalo possível e desenhar o respectivo polígono, desta vez, da direita para a esquerda.

Usando este algoritmo, conseguimos contar o número de polígonos monótonos existentes, consequentemente, conseguimos gerar uniformemente polígonos monótonos aleatórios. Este trabalho é então a solução para o problema da geração aleatória de polígonos monótonos e não apenas uma heurística.

Page 179: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

179

Geração de Polígonos Monótonos

Seja então Si o subconjunto de S, 1 i n. Qualquer polígono monótono pode ser dividido em duas cadeias monótonas: cadeia superior e a cadeia inferior. É claro que os pontos extremos (s1 e si) pertencem a ambas as cadeias e são os únicos nestas condições.

s1

s2

s3

s4

s5

s6

s7

Contagem (O(n) espaço e O(K) tempo)

A contagem é recursiva, sabemos quantos polígonos existem em Si ,

N(i) através de N(j) , ou seja, do número de polígonos monótonos que existem em Sj , j<i. Para isto, divide-se o tipo de polígonos monótonos existentes em dois conjuntos.

Page 180: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

180

Geração de Polígonos Monótonos

Estes dois conjuntos são T(i) e B(i). T(i) é o conjunto de polígonos monótonos cuja aresta si-1si pertence à cadeira superior (top) e B(i) é o conjunto onde a mesma aresta pertence à cadeia inferior (bottom).

s1

s2

s3

s4

s5

s6

s7

Contagem (O(n) espaço e O(K) tempo)

Sai então que N(k) = |T(k)| + |B(k)| = T(k) + B(k).

T(7)

s1

s2

s3

s4

s5

s6

s7

B(7)

Page 181: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

181

Geração de Polígonos Monótonos

Cada um deles é calculado através de VT(k) e VB(k) . O primeiro é o

conjunto de todos os pontos que sk “vê em cima” e o segundo o

conjunto de pontos que sk “vê em baixo”.

Contagem (O(n) espaço e O(K) tempo)

Basicamente, VT(k) é o conjunto de todos os pontos visíveis para sk

que se encontrem acima da linha sjsk , i < j < k. VB(k) é semelhante mas os pontos têm que se encontrar abaixo da referida linha.

VT(8) = {6}VB(8) = {3,5}

s1

s2

s3

s4

s5

s6

s7

s8

Page 182: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

182

Geração de Polígonos Monótonos

Daqui sai então que:

Contagem (O(n) espaço e O(K) tempo)

Cada um destes conjuntos é calculado e guardado sob a forma de uma árvore binária. Cada conjunto superior é calculado à custa do inferior e vice-versa, como se pode observar.

)(

|)1(| |)(|kVj B

jBkT

|)1(| |)(|)(

kVj T

jTkB

Page 183: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

183

Geração de Polígonos Monótonos

Geração (O(n) espaço e tempo)

• Escolhe x [1, N(n)] aleatoriamente

• Acrescenta sn à cadeia superior e à cadeia inferior

• Constrói o polígono da direita para a esquerda: - se x T(n) então começa pela cadeira superior (sn-1 pertence à cadeia superior) - senão, x = x - T(n) e começa pela cadeia inferior (sn-1 pertence à cadeia inferior)

• Constrói as cadeias através de dois procedimentos recursivos: Generate_Top e Generate_Bottom que se chamam mutuamente

• Acrescenta s1 à cadeia por onde começou

Page 184: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

184

Geração de Polígonos Monótonos

O algoritmo anterior pode ser modificado para gerar um polígono monótono dentro de outro polígono monótono. Neste caso a complexidade sobe para O(n + |P|), sendo |P| o número de vértices do polígono monótono exterior.

Page 185: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

185

Geração de Polígonos Convexos

No mesmo trabalho é referido um método de complexidade O(n3) para gerar polígonos convexos. Este consiste em determinar um subconjunto de pontos de S que forme um polígono convexo.

Page 186: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

186

APLICAÇÕEAPLICAÇÕESS

Page 187: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

187

Aplicações

Avaliação prática de algoritmos relativos à manipulação de polígonos:

verificação da sua exactidão determinação do tempo de execução

O problema da geração aleatória de polígonos é então motivado pela necessidade de gerar instâncias de teste para algoritmos geométricos. Por exemplo, para testar algoritmos de iluminação, partição ou intersecção de polígonos. A geração de polígonos monótonos dentro de outros polígonos monótonos é particularmente relevante para testar algoritmos relacionados com aspectos geográficos (GIS - Geographical Information Systems) .

Page 188: GERAÇÃO ALEATÓRIA DE POLÍGONOS GERAÇÃO E PARTIÇÃO DE POLÍGONOS Ana Gonçalves Inês Matos Departamento de Matemática da Universidade de Aveiro

188

AppletApplet

http://web.informatik.uni-bonn.de/I/GeomLab/polygon/RandomPhttp://web.informatik.uni-bonn.de/I/GeomLab/polygon/RandomPolygon.html.enolygon.html.en