![](https://s3.amazonaws.com/media-p.slid.es/uploads/848437/images/4716385/pasted-from-clipboard.png)
Victor Sena Molero
Geometria Computacional
![](https://shawglobalnews.files.wordpress.com/2014/12/ha_culkin.jpg?quality=70&strip=all&w=720&h=480&crop=1)
O Problema
![](https://s3.amazonaws.com/media-p.slid.es/uploads/843015/images/4718201/sigex2018_sampe01.in.png)
Convexo?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/843015/images/4718205/convexdef.png)
O que eu sei fazer?
Distância entre pontos
Distância entre ponto e segmento
O que eu recebo?
Inteiro n e n pontos do polígono (x,y)
Inteiro m e m pontos fora do polígono
![](https://s3.amazonaws.com/media-p.slid.es/uploads/843015/images/4718225/ccw.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/843015/images/4718227/dir.png)
Alguma ideia?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/843015/images/4718201/sigex2018_sampe01.in.png)
Solução A
Parâmetro n | Parâmetro m | Tempo de execução |
---|---|---|
100 | 100 | 0.007s |
1000 | 1000 | 0.169s |
10000 | 10000 | 16s |
Calcular, para cada ponto, a distância entre ele e cada um dos n segmentos.
Outra ideia?
Cada aresta tem uma região.
Como eu descubro se um ponto está numa região?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/843015/images/4718276/regiao.png)
Vamos descobrir quem está em qual região.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/843015/images/4718293/regions.png)
Observação
Sempre vale a pena usar três valores consecutivos para formar um triângulo
Solução 2
Ao invés de testar todas as triplas, testar apenas as triplas consecutivas
Bem melhor!
Porém conseguimos melhorar ainda mais...
Parâmetro n | Parâmetro m | Tempo de execução |
---|---|---|
100 | 100 | 0,0001s |
1000 | 100 | 0,01s |
10000 | 1000 | 1s |
100000 | 100000 | 100s |
Observação 2
No pior dos casos, os números serão a sequência de fibonacci.
1, 1, 2, 3, 5, 8, 13, ...
Observação 2
No pior dos casos, os números serão a sequência de fibonacci.
1, 1, 2, 3, 5, 8, 13, ...
Mas como essa sequência cresce muito rápido, no seu 45º número eles já estouram o limite de 10⁹ para cada valor da sequência
Solução 3
Para cada pergunta do Sena, apenas testamos as últimas 45 triplas contínuas.
Parâmetro n* | Parâmetro m | Tempo de execução |
---|---|---|
1000 | 10000 | 0,001s |
100000 | 10000 | 0,001s |
100000 | 1000000 | 0,1s |
Obs: Esta solução nem depende mais do parâmetro n pro cálculo do seu tempo de execução
Obrigado!
Venham pra Maratona
SIGEX 2018 Sena
By Victor Sena Molero
SIGEX 2018 Sena
- 632