Suponha que você receba um conjunto de n pontos no plano e deseje verificar se eles formam um polígono n convexo, ou seja, se todos estão no casco convexo. Eu queria saber se alguém sabe como fazer isso em tempo (nlogn), ou seja, sem calcular o CH.
cg.comp-geom
Babis Tsourakakis
fonte
fonte
Respostas:
Parece improvável, pelo menos nos modelos de comparação / álgebra. Definição primeiro:
Um ponto de ajuste está em posição convexa, se nenhum ponto de P pode ser escrita como uma combinação convexa dos restantes pontos de P .P P P
Agora, decidir se um conjunto de números é distinto leva Ω ( n log n ) tempo (isso é conhecido como UNIQUENESS). Dado esse conjunto de n números X , mapeie-os para o conjunto de pontos P = { ( x , x 2 ) | x ∈ X } . Se não houver um número repetido, os pontos estão na posição convexa.n Ω ( n logn ) n X
Se houver um número repetido, esse número repetido corresponderá a um ponto que pode ser escrito como uma combinação convexa dos pontos restantes. Ou seja, os pontos não estão na posição convexa.
Ou seja, decidir se um conjunto de pontos está na posição convexa é tão difícil quanto a UNIQUENESS.
fonte
Depois de saber a ordem dos pontos, o ângulo de cada ponto para o próximo ponto na sequência deve ser monotônico. Isso forma uma condição necessária e, penso, suficiente.
Obter o ponto interior é deixado como um exercício para o leitor.
fonte