Angenommen, Mario läuft auf der Oberfläche eines Planeten. Wie schnell können wir bestimmen, wo er anhalten wird, wenn er von einem bekannten Ort aus in einer festgelegten Richtung über eine festgelegte Distanz läuft?
Genauer gesagt, nehmen wir an, wir erhalten ein konvexes Polytop im 3-Raum, einen Startpunkt auf der Oberfläche von , einen Richtungsvektor (in der Ebene einer Facette, die ) und einen Abstand . Wie schnell können wir feststellen, welche Facette von Mario in uns aufhört? (Technisch gesehen wird angenommen, dass Mario beim Betreten eines Scheitelpunkts von sofort explodiert. Glücklicherweise passiert dies so gut wie nie .)
Oder wenn Sie es vorziehen: Nehmen wir an, wir bekommen im Voraus das Polytop , den Quellpunkt und den Richtungsvektor . Nach Vorverarbeitung, wie schnell beantworten wir die Frage für einen bestimmten Abstand ?
Es ist einfach, Marios Schritte zu verfolgen, besonders wenn nur dreieckige Facetten hat. Immer wenn Mario eine Facette durch eine ihrer Kanten betritt, können wir in Zeit bestimmen , durch welche der beiden anderen Kanten er gehen muss. Obwohl die Laufzeit dieses Algorithmus nur linear in der Anzahl von Kantenübergängen ist, ist es unbeschränkt in Abhängigkeit von der Eingangsgröße, weil der Abstand beliebig größer ist als der Durchmesser des könnten . Können wir es besser machen?
(In der Praxis ist die Pfadlänge nicht unbegrenzt. Es gibt eine globale Obergrenze für die Anzahl der Bits, die zur Darstellung der Eingabe erforderlich sind. Das Bestehen auf Ganzzahleingaben wirft jedoch einige ziemlich unangenehme numerische Probleme auf. Wie berechnen wir genau, wo ? zu stoppen? - so bleiben wir bei echten Eingaben und exakten reellen Arithmetik.)
Ist etwas Unwichtiges über die Komplexität dieses Problems bekannt?
Update: Angesichts des Kommentars von julkiewicz scheint es klar zu sein, dass eine rein auf (die Komplexität des Polytops) beschränkte Real-RAM-Laufzeit unmöglich ist. Betrachten Sie den Sonderfall eines zweiseitigen Einheitsquadrats , bei dem Mario bei beginnt und in Richtung . Mario stoppt auf der Vorder- oder Rückseite des Quadrats, abhängig von der Parität der Ganzzahl . Wir können die Floor-Funktion auf dem realen RAM nicht in konstanter Zeit berechnen, es sei denn, wir sind glücklich , PSPACE und P gleichzusetzen . Aber wir können in berechnenZeit durch exponentielle Suche, was eine exponentielle Verbesserung gegenüber dem naiven Algorithmus darstellt. Ist das Zeitpolynom in und immer erreichbar?