Ich habe zwei Punkte A und B. Ich möchte den kürzesten Weg von A nach B finden, aber es gibt N (bis zu 200) Rechtecke und der Pfad kann keines dieser Rechtecke schneiden . Pfad und Rechtecke können sich nur an den Ecken der Rechtecke und an den Seiten des Rechtecks schneiden. Wie lang ist der kürzeste Weg? Rechtecke können sich nicht schneiden. Sie können Punkt oder Seite teilen. Wenn also zwei von ihnen eine Seite teilen, können Sie zwischen ihnen wechseln.Kürzester Pfad zwischen zwei Punkten im Koordinatensystem
Antwort
Normalerweise ist der beste Algorithmus für diese Art von Problemen A* mit einer einfachen Heuristik wie Manhattan Distance. Aber zuerst solltest du die illegalen Punkte finden. Illegale Punkte sind diejenigen, die Sie nicht in dieses Problem eingeben können. Die Punkte innerhalb eines Rechtecks sind illegal (Punkte, die sich an den Seiten der Rechtecke befinden, sind legal, da Sie sie passieren können). Nachdem Sie diese Punkte gefunden haben, implementieren Sie einfach einen A * -Algorithmus, um den kürzesten Pfad zwischen A und B zu finden.
Beachten Sie, dass, da es kein Kantengewicht in diesem Problem gibt, Sie einfach ein BFS ausführen können, um den kürzesten Pfad zu finden, aber es wird nicht so schnell wie A * sein.
Wenn Ihr Suchbereich sehr groß ist und Sie mit A * nicht genügend Speicherplatz haben, sollten Sie die Verwendung von IDA* in Erwägung ziehen, die zwar weniger Arbeitsspeicher beansprucht, aber Knoten mehr als einmal untersucht.
- 1. Get kürzester Abstand zwischen zwei Punkten
- 2. Algorithmus: kürzester Weg zwischen allen Punkten
- 3. Einen Pfad zwischen zwei Punkten zeichnen
- 4. Sinuswelle UIBezierPath zwischen zwei Punkten
- 5. Xamarin.Forms.Maps - Wie zeichnet man den Pfad zwischen zwei Punkten - Polylinien
- 6. Fahrstrecke zwischen zwei Punkten
- 7. Position zwischen zwei Punkten?
- 8. Kürzester Pfad (Ziel = Ursprung)
- 9. Kürzester Pfad in JavaScript
- 10. Entfernung zwischen zwei Punkten über einen Pfad mit turf.js
- 11. Berechnen Sie den Abstand zwischen zwei Koordinaten in einem Koordinatensystem
- 12. Gleiches Koordinatensystem zwischen zwei Objekten C#
- 13. Längster Kürzester Pfad (nicht ganz)
- 14. Floyds Kürzester Pfad Algorithmus C++
- 15. Signed Winkel zwischen zwei Punkten
- 16. Glatte Interpolation zwischen zwei Punkten
- 17. Inhalt zwischen zwei Punkten scrollen
- 18. MongoDB Druckabstand zwischen zwei Punkten
- 19. Android Entfernung zwischen zwei Punkten
- 20. Kollision zwischen zwei GPS-Punkten
- 21. Matlab Winkel zwischen zwei Punkten
- 22. Kürzester Pfad-Algorithmus mit Wörterbüchern [Python]
- 23. Python, Abstand zwischen zwei Punkten Typ Problem
- 24. Kürzester Pfad nach Verdoppelung der Kantengewichte
- 25. Kürzester Pfad zwischen zwei Knoten in einem Diagramm basierend auf einer anderen Bedingung
- 26. Suche Intensität zwischen zwei Punkten in Matlab
- 27. Boost: Erstellen Graph aus kürzester Pfad
- 28. Zeichnen eines Bogens zwischen zwei 3D-Punkten
- 29. Kürzester Pfad auf Graph mit wechselnden Gewichten
- 30. Koordinaten eines Punktes zwischen zwei Punkten finden?
Denken Sie daran, das Problem als ein Graphproblem darzustellen und den Dijsktra-Algorithmus zu verwenden. –
meinst du, dass der Pfad diagonal sein kann, wenn sich keine Rechtecke auf dem Pfad befinden? Wie groß sind die Rechtecke? Fixe oder Variable? Um einen Algorithmus zu erhalten, ist es besser, ein Format für die ursprünglichen Daten anzugeben. –
Cross-posted: http://math.stackexchange.com/q/1944808/14578, http://stackoverflow.com/q/39744007/781723. Bitte [schreibe nicht dieselbe Frage auf mehreren Seiten] (http://meta.stackexchange.com/q/64068). Jede Gemeinschaft sollte eine ehrliche Antwort erhalten, ohne dass jemand Zeit verschwendet. P.S. In welchem Kontext bist du dem begegnet? Ist das eine Programmierwettbewerbsfrage? –