• Nenhum resultado encontrado

Classroom Examples of Robustness Problems in Geometric ComputationsRafael C. S. [email protected]. Kettner, K. Mehlhorn, S. Pion, S. Schirra, C. Yap

N/A
N/A
Protected

Academic year: 2022

Share "Classroom Examples of Robustness Problems in Geometric ComputationsRafael C. S. [email protected]. Kettner, K. Mehlhorn, S. Pion, S. Schirra, C. Yap"

Copied!
112
0
0

Texto

(1)

Classroom Examples of Robustness Problems in Geometric Computations

Rafael C. S. Schouery [email protected]

L. Kettner, K. Mehlhorn, S. Pion, S. Schirra, C. Yap

(2)

Introdução

(3)

Introdução

Geometria Computacional: Utiliza RAM.

(4)

Introdução

Geometria Computacional: Utiliza RAM.

Computadores: Utilizam ponto flutuante.

(5)

Introdução

Geometria Computacional: Utiliza RAM.

Computadores: Utilizam ponto flutuante.

Essa diferença cria espaço para falhas.

(6)

Introdução

Geometria Computacional: Utiliza RAM.

Computadores: Utilizam ponto flutuante.

Essa diferença cria espaço para falhas.

Não há papers sobre o que pode dar errado.

(7)

Problemas

(8)

Problemas

Professores: pouco material sobre problemas.

(9)

Problemas

Professores: pouco material sobre problemas.

Alunos: subestimam o que pode dar errado.

(10)

Problemas

Professores: pouco material sobre problemas.

Alunos: subestimam o que pode dar errado.

Pesquisadores: acham que soluções simples resolvem o problema.

(11)

Objetivos

Dar exemplos sobre o que pode acontecer Explicar por ocorrem

Analisar o algoritmo incremental de fecho convexo

(12)

Regras para o Experimento

Código em C++.

Números são double.

Exemplos em decimal, mas a representação é exata na máquina.

(13)

Ponto Flutuante

(14)

Ponto Flutuante

Padrão IEEE784

(15)

Ponto Flutuante

Padrão IEEE784 Formato: ±m2e

(16)

Ponto Flutuante

Padrão IEEE784 Formato: ±m2e m = 1.m1m1...m52

(17)

Ponto Flutuante

Padrão IEEE784 Formato: ±m2e m = 1.m1m1...m52

-1024 < e < 1024

(18)

Ponto Flutuante

Padrão IEEE784 Formato: ±m2e m = 1.m1m1...m52

-1024 < e < 1024

Arredondado sistematicamente

(19)

Orientação

(20)

Orientação

orientation(p,q,r) =

sign((qx - px)(ry - py) - (qy - py)(rx - px))

(21)

Orientação

orientation(p,q,r) =

sign((qx - px)(ry - py) - (qy - py)(rx - px)) esquerda: 1

direita: -1 colinear: 0

(22)

Orientação

orientation(p,q,r) =

sign((qx - px)(ry - py) - (qy - py)(rx - px)) esquerda: 1

direita: -1 colinear: 0

float_orient(p,q,r): implementação de orientation(p,q,r) usando float

(23)

Possíveis Erros

(24)

Possíveis Erros

Arredondar para zero: Encontramos 0 ao invés de 1 ou -1

(25)

Possíveis Erros

Arredondar para zero: Encontramos 0 ao invés de 1 ou -1

Perturbação do zero: Encontramos 1 ou -1 ao invés de 0

(26)

Possíveis Erros

Arredondar para zero: Encontramos 0 ao invés de 1 ou -1

Perturbação do zero: Encontramos 1 ou -1 ao invés de 0

Inversão de sinal: Encontramos 1 ou invés de -1 e vice-versa.

(27)

Experimento: float_orient

(28)

Experimento: float_orient

Escolhemos três pontos: p, q e r e valor u

(29)

Experimento: float_orient

Escolhemos três pontos: p, q e r e valor u float_orient((px + xu, py + yu), q, r)

0 ≤ x, y ≤ 255

(30)

Experimento: float_orient

Escolhemos três pontos: p, q e r e valor u float_orient((px + xu, py + yu), q, r)

0 ≤ x, y ≤ 255

u é o incremento para o próximo float

(31)

Experimento: float_orient

Escolhemos três pontos: p, q e r e valor u float_orient((px + xu, py + yu), q, r)

0 ≤ x, y ≤ 255

u é o incremento para o próximo float Exemplo: u = 2-53 se px = 0.5

(32)

Resultado

Matriz com células para cada valor de x e y Pontos Amarelos são colineares

Pontos Vermelhos estão à direita Pontos Azuis estão à esquerda

Linha preta: aproximação do segmento (q,r)

(33)

1° Experimento

q = (12, 12) r = (24, 24) p = (0.5, 0.5)

(34)

1° Experimento

q = (12, 12) r = (24, 24) p = (0.5, 0.5)

O que esperaríamos ver?

(35)

1° Experimento

q = (12, 12) r = (24, 24) p = (0.5, 0.5)

O que esperaríamos ver?

Faixa amarela bem definida

(36)

1° Experimento

q = (12, 12) r = (24, 24) p = (0.5, 0.5)

O que esperaríamos ver?

Faixa amarela bem definida

(37)

2° Experimento

Parece uma função degrau

Dividida por linhas azuis e vermelhas

(38)

3° Experimento

Pontos isolados amarelos

Blocos amarelos

variando de tamanho Separados por linhas azuis e vermelhas

(39)

Escolha do Pivô

Até agora usamos:

sign((qx - px)(ry - py) - (qy - py)(rx - px))

(40)

Escolha do Pivô

Até agora usamos:

sign((qx - px)(ry - py) - (qy - py)(rx - px)) pivô: p

(41)

Escolha do Pivô

Até agora usamos:

sign((qx - px)(ry - py) - (qy - py)(rx - px)) pivô: p

(42)

Escolha do Pivô

Até agora usamos:

sign((qx - px)(ry - py) - (qy - py)(rx - px))

pivô: p pivô: q

(43)

Escolha do Pivô

Até agora usamos:

sign((qx - px)(ry - py) - (qy - py)(rx - px))

pivô: p pivô: q

(44)

Escolha do Pivô

Até agora usamos:

sign((qx - px)(ry - py) - (qy - py)(rx - px))

pivô: p pivô: q pivô: r

(45)

Escolha do Pivô

Até agora usamos:

sign((qx - px)(ry - py) - (qy - py)(rx - px))

pivô: p pivô: q pivô: r

(46)

Fecho Convexo Incremental

(47)

Fecho Convexo Incremental

Conjunto S de pontos.

(48)

Fecho Convexo Incremental

Conjunto S de pontos.

Dizemos que um vértice r enxerga uma aresta e=(vi,vi+1) se orientation(vi,vi+1,r) < 0.

(49)

Fecho Convexo Incremental

Conjunto S de pontos.

Dizemos que um vértice r enxerga uma aresta e=(vi,vi+1) se orientation(vi,vi+1,r) < 0.

Se orientation(vi,vi+1,r) ≤ 0 então r enxerga fracamente e.

(50)

Duas propriedades

(51)

Duas propriedades

A: Um ponto r está fora do fecho corrente se e somente existe i tal que r enxerga (vi,vi+1)

(52)

Duas propriedades

A: Um ponto r está fora do fecho corrente se e somente existe i tal que r enxerga (vi,vi+1) B: O conjunto de arestas que r enxerga

fracamente é uma subcadeia consecutiva.

(53)

Algoritmo Incremental

(54)

Algoritmo Incremental

1. Seja (a,b,c) um triângulo anti-horário

(55)

Algoritmo Incremental

1. Seja (a,b,c) um triângulo anti-horário 2. L <- (a,b,c)

(56)

Algoritmo Incremental

1. Seja (a,b,c) um triângulo anti-horário 2. L <- (a,b,c)

3. Remova a, b, c de S

(57)

Algoritmo Incremental

1. Seja (a,b,c) um triângulo anti-horário 2. L <- (a,b,c)

3. Remova a, b, c de S 4. para todo r em S faça

(58)

Algoritmo Incremental

1. Seja (a,b,c) um triângulo anti-horário 2. L <- (a,b,c)

3. Remova a, b, c de S 4. para todo r em S faça

5. se r enxerga uma aresta e então

(59)

Algoritmo Incremental

1. Seja (a,b,c) um triângulo anti-horário 2. L <- (a,b,c)

3. Remova a, b, c de S 4. para todo r em S faça

5. se r enxerga uma aresta e então

6. Compute (vi,...,vj) em L fracamente visíveis

(60)

Algoritmo Incremental

1. Seja (a,b,c) um triângulo anti-horário 2. L <- (a,b,c)

3. Remova a, b, c de S 4. para todo r em S faça

5. se r enxerga uma aresta e então

6. Compute (vi,...,vj) em L fracamente visíveis 7. Substitua (vi,...,vj) por r em L

(61)

Algoritmo Incremental

1. Seja (a,b,c) um triângulo anti-horário 2. L <- (a,b,c)

3. Remova a, b, c de S 4. para todo r em S faça

5. se r enxerga uma aresta e então

6. Compute (vi,...,vj) em L fracamente visíveis 7. Substitua (vi,...,vj) por r em L

(62)

Subpassos

(63)

Subpassos

Procuramos e percorrendo L, descartando r se e não existe

(64)

Subpassos

Procuramos e percorrendo L, descartando r se e não existe

Após achar e, andamos no sentido horário e anti-horário procurando vi e vj

(65)

Subpassos

Procuramos e percorrendo L, descartando r se e não existe

Após achar e, andamos no sentido horário e anti-horário procurando vi e vj

Atualizamos L:

offline: após achar vi e vj

online: enquanto procuramos

(66)

Possíveis Falhas

(67)

Possíveis Falhas

A1: Um ponto fora não enxerga nenhuma aresta

(68)

Possíveis Falhas

A1: Um ponto fora não enxerga nenhuma aresta

A2: Um ponto dentro enxerga uma aresta

(69)

Possíveis Falhas

A1: Um ponto fora não enxerga nenhuma aresta

A2: Um ponto dentro enxerga uma aresta

B1: Um ponto fora enxerga todas as arestas

(70)

Possíveis Falhas

A1: Um ponto fora não enxerga nenhuma aresta

A2: Um ponto dentro enxerga uma aresta

B1: Um ponto fora enxerga todas as arestas B2: Um ponto fora enxerga um conjunto não- contíguo de arestas

(71)

Primeira Falha

(72)

Primeira Falha

A1: Um ponto fora não enxerga nenhuma aresta

(73)

Primeira Falha

Pontos:

p1 = (7.3000000000000194, (7.3000000000000167) p2 = (24.000000000000068, 24.000000000000071) p3 = (24.000000000000005, 24.000000000000053) p4 = (0.50000000000001621, (0.50000000000001243) p5 = (8,4) p6 = (4,9) p7 = (15,27) p8 = (26,25) p9 = (19,11)

A1: Um ponto fora não enxerga nenhuma aresta

(74)

Primeira Falha

Pontos:

p1 = (7.3000000000000194, (7.3000000000000167) p2 = (24.000000000000068, 24.000000000000071) p3 = (24.000000000000005, 24.000000000000053) p4 = (0.50000000000001621, (0.50000000000001243) p5 = (8,4) p6 = (4,9) p7 = (15,27) p8 = (26,25) p9 = (19,11)

A1: Um ponto fora não enxerga nenhuma aresta

(75)

Primeira Falha

Pontos:

p1 = (7.3000000000000194, (7.3000000000000167) p2 = (24.000000000000068, 24.000000000000071) p3 = (24.000000000000005, 24.000000000000053) p4 = (0.50000000000001621, (0.50000000000001243) p5 = (8,4) p6 = (4,9) p7 = (15,27) p8 = (26,25) p9 = (19,11)

A1: Um ponto fora não enxerga nenhuma aresta

(76)
(77)

Segunda Falha

(78)

Segunda Falha

A2: Um ponto dentro enxerga uma aresta

(79)

Segunda Falha

A2: Um ponto dentro enxerga uma aresta p4 está dentro do triângulo (p1,p2,p3) mas enxerga a aresta (p1,p2)

(80)

Segunda Falha

A2: Um ponto dentro enxerga uma aresta p4 está dentro do triângulo (p1,p2,p3) mas enxerga a aresta (p1,p2)

Resultado: Polígono (p1,p4,p2,p3) com um pouco de não-convexidade.

(81)

Terceira Falha

(82)

Terceira Falha

B1: Um ponto fora enxerga todas as arestas

(83)

Terceira Falha

B1: Um ponto fora enxerga todas as arestas p4 enxerga todas as arestas

(84)

Terceira Falha

B1: Um ponto fora enxerga todas as arestas p4 enxerga todas as arestas

O que acontece? Depende:

(85)

Terceira Falha

B1: Um ponto fora enxerga todas as arestas p4 enxerga todas as arestas

O que acontece? Depende:

off-line: nunca termina

(86)

Terceira Falha

B1: Um ponto fora enxerga todas as arestas p4 enxerga todas as arestas

O que acontece? Depende:

off-line: nunca termina

on-line: resposta errada ou quebra

(87)

Quarta Falha

(88)

Quarta Falha

B2: Um ponto fora enxerga um conjunto não- contíguo de arestas

(89)

Quarta Falha

B2: Um ponto fora enxerga um conjunto não- contíguo de arestas

p5 enxerga apenas (p3,p2), mas float_orient detecta que p5 também enxerga (p1,p4).

(90)

Quarta Falha

B2: Um ponto fora enxerga um conjunto não- contíguo de arestas

p5 enxerga apenas (p3,p2), mas float_orient detecta que p5 também enxerga (p1,p4).

Como (p1,p4) vem primeiro na lista, o algoritmo insere p5 sem remover vértices.

(91)

Quarta Falha

B2: Um ponto fora enxerga um conjunto não- contíguo de arestas

p5 enxerga apenas (p3,p2), mas float_orient detecta que p5 também enxerga (p1,p4).

Como (p1,p4) vem primeiro na lista, o algoritmo insere p5 sem remover vértices.

(92)

Efeitos Globais

(93)

Efeitos Globais

Objetivo: eliminar a crença que o algoritmo sempre termina com uma aproximação do

fecho convexo

(94)

Efeitos Globais

Objetivo: eliminar a crença que o algoritmo sempre termina com uma aproximação do

fecho convexo

Encontra um fecho convexo que não inclui algum dos pontos (A1)

(95)

Efeitos Globais

Objetivo: eliminar a crença que o algoritmo sempre termina com uma aproximação do

fecho convexo

Encontra um fecho convexo que não inclui algum dos pontos (A1)

O algoritmo não termina ou quebra (B1)

(96)

Efeitos Globais

Objetivo: eliminar a crença que o algoritmo sempre termina com uma aproximação do

fecho convexo

Encontra um fecho convexo que não inclui algum dos pontos (A1)

O algoritmo não termina ou quebra (B1) O algoritmo encontra um polígono não-

(97)

Não-convexidade

(98)

Outros problemas

(99)

Outros problemas

O paper aborda também:

(100)

Outros problemas

O paper aborda também:

Embrulho para Presente

(101)

Outros problemas

O paper aborda também:

Embrulho para Presente

Triangulações de Delaunay 3D

(102)

Soluções

(103)

Soluções

Garanta que orientation(p,q,r) devolva sempre o resultado correto: use racionais

(104)

Soluções

Garanta que orientation(p,q,r) devolva sempre o resultado correto: use racionais

Modifique o algoritmo para funcionar “bem”

com float

(105)

Soluções

Garanta que orientation(p,q,r) devolva sempre o resultado correto: use racionais

Modifique o algoritmo para funcionar “bem”

com float

Faça uma perturbação da entrada para evitar casos problemáticos.

(106)

Bibliografia

(107)

Bibliografia

Classroom Examples of Robustness Problems in Geometric Computations, L. Kettner, K.

Mehlhorn, S. Pion, S. Schirra, C. Yap, 2006

(108)

Bibliografia

Classroom Examples of Robustness Problems in Geometric Computations, L. Kettner, K.

Mehlhorn, S. Pion, S. Schirra, C. Yap, 2006 Anatomy of Algorithmic Failures: A Case Study in Geometric Nonrobustness

http://www.mpi-inf.mpg.de/~kettner/proj/NonRobust/

(109)

Bibliografia

Classroom Examples of Robustness Problems in Geometric Computations, L. Kettner, K.

Mehlhorn, S. Pion, S. Schirra, C. Yap, 2006 Anatomy of Algorithmic Failures: A Case Study in Geometric Nonrobustness

http://www.mpi-inf.mpg.de/~kettner/proj/NonRobust/

O site contém as imagens e códigos

(110)

Dúvidas?

(111)

Dúvidas?

(112)

Obrigado!

Referências

Documentos relacionados

De acordo com estudo realizado por Duarte (2002) com alunos de 5ª série, tomando como marco teórico a Teoria dos Campos Conceituais, no qual propõe situações

Consideramos fumantes atuais aqueles que reportaram o uso contínuo de cigarros; fumantes passivos eram os que coabitavam com algum indivíduo taba- gista ativo; ex-fumantes

Pede que estes trabalhos sejam estendidos também para a estrada das Duas Barras e Região Serrana, que se encontra em estado críticos devidos as chuvas, ficando pior

Certificamos que Juliano Geraldo Amaral ministrou a oficina “SISGEN”, durante a Semana Nacional de Ciência e Tecnologia, realizada no período de 18 a 19 de outubro de 2018, com

• Durante o tempo em que os peixes são introduzidos no aquário, deite só pouca comida da família de produtos SERA  vipan : SERA vipan flocos para. os peixes que nadam

Produzir esta matéria modelar para as canções, subentendia integrar-se com as experiências através do seu falar, não só presente no sotaque ítalo-paulistano-caipira 6

Este equipamento está em conformidade com os limites de exposição de radiação da FCC estabelecidos para um ambiente não controlado. Os usuários finais devem seguir as instruções

Use o Conversor de Mídia Philips para converter os arquivos de vídeo, para corrigir o tamanho da tela e transferir os vídeos do seu computador para o seu aparelho.. Esta aplicação