Suponga que tiene un conjunto de n puntos en el plano y desea verificar si forman un polígono convexo n, es decir, si todos se encuentran en el casco convexo. Me preguntaba si alguien sabe cómo hacer esto en o (nlogn) tiempo, es decir, sin calcular el CH.
cg.comp-geom
Babis Tsourakakis
fuente
fuente
Respuestas:
Eso parece poco probable, al menos en los modelos de árbol de comparación / algebraico. Definición primero:
Un conjunto de puntos está en posición convexa si ningún punto de P puede ser escrita como una combinación convexa de los puntos restantes de P .P P P
Ahora, decidir si un conjunto de números son todos distintos lleva Ω ( n log n ) tiempo (esto se conoce como UNIQUENESS). Dado tal conjunto de n números X , mapearlos al conjunto de puntos P = { ( x , x 2 ) | x ∈ X } . Si no hay un número repetido, los puntos están en posición convexa.n Ω(nlogn) n X
Si hay un número repetido, entonces este número repetido corresponde a un punto que puede escribirse como una combinación convexa de los puntos restantes. Es decir, los puntos no están en posición convexa.
A saber, decidir si un conjunto de puntos está en posición convexa es tan difícil como UNIQUENESS.
fuente
Si asume que todos los puntos están en el casco convexo y puede encontrar un punto que está dentro del casco convexo, puede encontrar el orden de los puntos enO ( n l o gn )
Una vez que conoce el orden de los puntos, el ángulo desde cada punto hasta el siguiente punto de la secuencia debe ser monótono. Esto forma una condición necesaria y, creo, suficiente.
Obtener el punto interior se deja como un ejercicio para el lector.
fuente