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?
quelle
Antworten:
Dieses Problem ist sehr, sehr schwierig. Wir könnten es wie folgt vereinfachen, um es einfacher zu machen.
Wir können die Annahme hinzufügen, dass die Winkelsumme um jeden Scheitelpunkt des Polytops ein rationales Vielfaches von . Dadurch werden die meisten "Polytope" beseitigt, aber es gibt immer noch viele interessante Möglichkeiten: zum Beispiel die platonischen Festkörper.πP π
Wir können annehmen, dass das Polytop nicht wirklich dreidimensional ist, sondern das "Doppel" eines Polygons. Das sieht ein bisschen aus wie ein Kissenbezug. Wir können noch weiter vereinfachen und annehmen, dass das Polygon gleiche und parallele Seiten hat; Zum Beispiel ein Quadrat, wie im Spiel Astroids.
Wenn wir beide Annahmen treffen, gibt es eine große Theorie. (Einen Algorithmus für das Quadrat zu finden, ist eine schwierige Aufgabe, bei der der Winkel von Marios Pfad um einen Bruchteil erweitert wird. Ein ähnliches Ergebnis für das reguläre Achteck zu erzielen ist möglich, aber schwieriger. Die Lösungen für das In Quadrat und Achteck muss überlegt werden, wie eine "Schnittfolge für eine Geodät auf einer Translationsfläche" effizient codiert werden kann. Die meisten anderen rationalen Polygone führen schnell zu offenen Problemen.) Ein erster Verweis, der einen weiteren Verweis auf Caroline Series 'Diskussion von enthält Der quadratische Torus sind diese Vortragsfolien von Diana Davis.O(log(ℓ))
Wenn wir nicht von Rationalität ausgehen, sondern davon ausgehen, dass das Polytop das Doppelte eines Polygons ist, dann diskutieren wir die Theorie des "Schneidens von Sequenzen in irrationalem Billard". Es scheint, dass hier im Wesentlichen nichts bekannt ist; siehe zum Beispiel den letzten Satz dieses Vortrags von Corinna Ulcigrai.
Wenn wir keine der beiden Annahmen treffen, fällt mir nichts in der Literatur ein.
Zum Schluss - ich schätze, es gibt eine Lösung für das Super Mario Galaxy-Problem für die platonischen Körper. Dies ist ein gutes Problem für einen Doktoranden, der mit rationalem Billard anfängt. Zum Beispiel sollte der Fall des Dodekaeders aus Diana Davis 'These "folgen". (Beginnen Sie aber mit dem Tetraeder - das folgt aus einer Analyse der Schnittfolgen für den hexagonalen Torus.)O(log(ℓ))
quelle
Ich denke, Sie können es besser machen als linear. Ich bin neu in der theoretischen Informatik, also vergib mir, wenn das Müll ist.
Einige allgemeine Ideen (von unterschiedlichem Wert):
Dies ist keine wirkliche Antwort, aber ich muss mich wieder an die Arbeit machen. :)
quelle