Supposons que Mario marche sur la surface d'une planète. S'il commence à marcher depuis un endroit connu, dans une direction fixe, sur une distance prédéterminée, à quelle vitesse pouvons-nous déterminer où il s'arrêtera?
Plus formellement, supposons que nous recevions un polytope convexe dans un espace, un point de départ à la surface de , un vecteur de direction (dans le plan d’une facette contenant ) et une distance . Combien de temps pouvons-nous déterminer quelle facette de Mario s’arrêtera à l’intérieur? (Comme point technique, supposons que si Mario entre dans un sommet de , il explose immédiatement; heureusement, cela ne se produit presque jamais .)s p v p ℓ P P
Ou si vous préférez: supposons que le polytope , le point source et le vecteur de direction soient donnés à l’avance. Après pré - traitement, la rapidité avec laquelle nous pouvons répondre à la question pour une distance donnée ?s v ℓ
Il est facile de simplement suivre les traces de Mario, surtout si n’a que des facettes triangulaires. Chaque fois que Mario entre une facette par l’un de ses bords, nous pouvons déterminer en temps qu’il doit laisser au travers des deux autres bords. Bien que le temps d' exécution de cet algorithme est uniquement linéaire du nombre de passages à bord, il est sans limite en fonction de la taille d'entrée, car la distance peut être arbitrairement plus grand que le diamètre de . Pouvons-nous faire mieux?O ( 1 ) ℓ P
(En pratique, la longueur du chemin n’est pas réellement illimitée; il existe une limite supérieure globale en termes de nombre de bits nécessaires pour représenter l’entrée. Mais insister sur les entrées entières soulève quelques problèmes numériques plutôt désagréables - Comment calculer exactement où pour arrêter? - nous allons donc nous en tenir à des entrées réelles et arithmétique exacte exacte.)
Est-ce qu'on sait quelque chose de non trivial sur la complexité de ce problème?
Mise à jour: à la lumière du commentaire de julkiewicz, il semble clair qu'un temps d'exécution en RAM réelle limité uniquement en termes de (complexité du polytope) est impossible. Prenons le cas particulier d'une unité carrée à deux côtés , Mario commençant à et marchant dans la direction . Mario s’arrêtera à l’avant ou à l’arrière du carré en fonction de la parité du nombre entier . On ne peut pas calculer la fonction de sol en temps constant sur la RAM réelle, à moins que nous sommes heureux assimilant PSPACE et P . Mais nous pouvons calculer en[ 0 , 1 ] 2 ( 0 , 1 / 2 ) ( 1 , 0 ) ⌊ ℓ ⌋ ⌊ ℓ ⌋ O ( log ℓ ) n log ℓtemps par recherche exponentielle, ce qui représente une amélioration exponentielle par rapport à l’algorithme naïf. Le polynôme temporel en et toujours réalisable?