Ich bin ein Anfänger, der versucht, den A * Suchalgorithmus für die Praxis zu implementieren, und ich frage mich, was der beste Weg ist, darüber zu gehen. Ich habe eine Graphenstruktur (Adjazenzmatrix) erstellt und mein Plan war, das A * auf einen Anfangs- und Zielknoten anzuwenden. Ich erschaffe auch die Heuristik und verbessere sie, während ich weitergehe. Die Frage ist, kann das überhaupt funktionieren? Ich habe mir andere Implementierungen angeschaut und sie haben es mit verschiedenen Datenstrukturen gemacht.Implementierung eines Suchalgorithmus
Antwort
Das hängt davon ab, wie Sie die Adjazenzmatrix implementiert haben.
Ein kritischer Punkt von A * ist das Finden der Nachbarn eines Knotens. Wenn Sie die Matrix als einfaches dichtes Bitfeld implementieren, bei dem Sie eine 1 für benachbarte Knoten und eine 0 für nicht benachbarte Knoten haben, ist diese Suche ziemlich ineffizient, da Sie jeden Knoten überprüfen müssen. Obwohl dies ineffizient ist, hindert Sie das nicht daran, A * zu implementieren.
Wenn Sie eine kompliziertere Implementierung der Adjazenzmatrix haben, z. als spärliche Matrix, mit der Sie die Nachbarn direkt abfragen können, ist dies besser für A * geeignet.
Ja, ich habe es als spärliche Matrix implementiert (sorry, ich kannte den genauen Namen dafür nicht). Wäre dies dennoch eine ineffiziente Datenstruktur im Vergleich zu Alternativen? – noobatrilla
Ich definiere die dünn besetzte Matrix als Doppelgraphen [] [], wie würde ich die Nachbarn direkt abfragen? – noobatrilla
Dies ist keine Sparse-Matrix-Implementierung. Es ist eine dünn besetzte Matrix, die in einer dichten Matrixdarstellung gespeichert ist. Siehe z.B. http://www.netlib.org/utk/people/JackDongarra/etemplates/node373.html. Mit dieser Darstellung sind alle Nachbarn direkt nebeneinander. –
- 1. Optimieren eines einfachen Suchalgorithmus
- 2. Erlang Implementierung eines Sternsuchalgorithmus
- 3. Nachbar Suchalgorithmus
- 4. Anfang Java - Erstellen eines erfolgreichen binären Suchalgorithmus
- 5. Website-Suchalgorithmus
- 6. Quartär Suchalgorithmus
- 7. implementieren Instant-Thread-Suchalgorithmus
- 8. MySQL mehrere Schlüsselwörter Suchalgorithmus
- 9. Verwenden des Suchalgorithmus
- 10. Mysql Teil-Match-Suchalgorithmus
- 11. 3D Symmetrie Suchalgorithmus
- 12. Tiefe erste Suchalgorithmus
- 13. Suchalgorithmus aber für Funktionen
- 14. Ein * Suchalgorithmus bleibt stecken
- 15. Multi-Kriterien-Suchalgorithmus
- 16. A * Suchalgorithmus Endlosschleife
- 17. Binärer Suchalgorithmus, um Werte zu maximieren
- 18. Implementierung eines Veröffentlichungszeitplan
- 19. Implementierung eines UIViewController Kategorie
- 20. Implementierung eines Semaphor
- 21. Implementierung eines Besucherzählers
- 22. Implementierung eines einfachen Kalenders
- 23. Implementierung eines benutzerdefinierten SessionIDManager
- 24. Implementierung eines Reimfinders
- 25. MVC - Implementierung eines Modells
- 26. Implementierung eines Harris-Eckendetektors
- 27. Implementierung eines solchen Iterators?
- 28. Implementierung eines ActiveRecord before_find
- 29. Wie implementiert man einen rekursiven binären Suchalgorithmus?
- 30. NSPredicate mit jedem Suchalgorithmus intern?
Also, was ist die Frage? Wird Ihre Implementierung funktionieren? – enkryptor