Supposons que l'on vous donne un ensemble de n points dans le plan et que vous souhaitez vérifier s'ils forment un polygone n convexe, c'est-à-dire s'ils se trouvent tous sur la coque convexe. Je me demandais si quelqu'un savait comment faire cela en temps o (nlogn), c'est-à-dire sans calculer le CH.
cg.comp-geom
Babis Tsourakakis
la source
la source
Réponses:
Cela semble peu probable, du moins dans les modèles d'arbre de comparaison / algébrique. Définition d'abord:
Un point de consigne est en position convexe si aucun point de P peut être écrite comme une combinaison convexe des points restants de P .P P P
Maintenant, décider si un ensemble de nombres sont tous distincts prend du temps Ω ( n log n ) (c'est ce qu'on appelle l'unicité). Étant donné un tel ensemble de n nombres X , mappez-les à l'ensemble des points P = { ( xn Ω(nlogn) n X
S'il n'y a pas de nombre répété, alors les points sont en position convexe.
S'il y a un nombre répété, alors ce nombre répété correspond à un point qui peut être écrit comme une combinaison convexe des points restants. A savoir, les points ne sont pas en position convexe.
À savoir, décider si un ensemble de points est en position convexe est aussi difficile que l'unicité.
la source
Une fois que vous connaissez l'ordre des points, l'angle de chaque point au point suivant de la séquence doit être monotone. Cela constitue une condition nécessaire et, je pense, suffisante.
Obtenir le point intérieur est laissé comme un exercice pour le lecteur.
Edit: Comme une première passe à une simple démonstration deO(nlogn)
la source