Victor Sena Molero
Geometria Computacional
O Problema
Convexo?
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
Alguma ideia?
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?
Vamos descobrir quem está em qual região.
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
- 658