Zuerst brauchen Sie Dijkstra nicht, weil alle Werte der Kanten gleich sind. Sie können einen einfachen BFS oder DFS Algorithmus verwenden. Worst Case-Komplexitäten sind die gleichen, aber ich würde BFS verwenden, da es eine bessere durchschnittliche Komplexität hat. O (| V | + | E |) ist jedoch das schnellste, das Sie hier finden können, und es ist bewiesen.
Wie wird Ihr Diagramm dargestellt? Der beste Weg ist, eine Liste der Nachbarn für jede Node
zu halten. Schwarze Punkte aus Ihrem Beispiel werden nicht als Nachbarn gezählt. In Ihrem Beispiel würde jeder Knoten 0 (vollständig von schwarzen Punkten bedeckt) zu 6 Nachbarn haben. Dann können Sie über diese Listen alles erreichen, was Sie von jedem Knotenpunkt aus erreichen können.
Der BFS-Algorithmus verfügt über eine Eigenschaft, die jedem Knoten eine Ebene zuweist, was bedeutet, wie weit er von einem Startknoten entfernt ist. Du beginnst an deinem Startpunkt und dein aktueller Layer ist 0. Dann folgst du einfach allen Knoten von einem aktuellen Layer (normalerweise in der Warteschlange) und versuchst, seine Nachbarn zu finden (aus ihrer Liste von Nachbarn), die keinen Layer haben zugewiesen und Sie weisen ihnen +1 höhere Ebene zu.Sobald Sie Ihren Knoten gefunden haben (der immer noch x, y als Attribute für die Grenzprüfung (oder den Eigenschaftsboolrand) haben kann), wissen Sie am Rand Ihres Labyrinths, dass es so weit wie der Layer-Wert ist. Wenn Sie den genauen Weg drucken möchten, müssen Sie nur zurück (über Ihre Listen von Nachbarn) finden, die die Bedingung erfüllt, dass jeder Schritt bei -1 Schicht niedriger ist. Dies wird den Weg von Ende zu Anfang drucken, aber ich bin sicher, dass Sie Ihr Ergebnis mit ein wenig Hilfe von Stack
Datenstruktur bekommen werden :)
Was macht einen "Pfad?" Kannst du ein paar Beispiele geben? Upvote auf die Frage für die Aufnahme eines schönen Bildes. –
was genau bedeutet das? Ziel - Grenze der Matrix [das heißt entweder x = 0 oder y = 0 oder x = 9 oder y = 9] 9 erfolgreiche Züge? –
siehe Beispiel in Bearbeitung. rote Punkte müssen an der Grenze des Labyrinths erreichen. – jpm