Saber
Erfahrenes Mitglied
Hmm, das 8-Dame-Problem hilft Dir zwar die Rekursion anzuwenden und zu verstehen, hilft aber ansonsten nicht weiter beim Labyrinth-Problem, denk ich mal.
"Dijkstra" hilft meines Wissens auch nur dann, wenn alle n möglichen Wege bereits bekannt sind und anschließend sucht man sich aus diesen n Wegen den kürzesten heraus, oder? Ist aber recht gut, wenn man die Wege mal hat.
Also ich würde den Weg durchs Labyrinth so suchen (stark vereinfacht natürlich und unsere Methode soll FindPath() heissen):
1.) Ersten Schritt machen ins Labyrinth von außerhalb der Methode: FindPath(geradeaus)
In der Methode FindPath():
2.) Wenn Weg nach links frei: FindPath(links)
3.) Wenn Weg nach rechts frei: FindPath(rechts)
4.) Wenn Weg geradeaus frei: FindPath(geradeaus)
5.) Wenn Weg blockiert: Methode beenden
Natürlich muss man sich dabei immer den zurückgelegten Weg merken, man könnte ja in einem mehrdimensionalen Array die Wegentscheidungen wegsichern.
Das wäre so mein erster Ansatz ...
"Dijkstra" hilft meines Wissens auch nur dann, wenn alle n möglichen Wege bereits bekannt sind und anschließend sucht man sich aus diesen n Wegen den kürzesten heraus, oder? Ist aber recht gut, wenn man die Wege mal hat.
Also ich würde den Weg durchs Labyrinth so suchen (stark vereinfacht natürlich und unsere Methode soll FindPath() heissen):
1.) Ersten Schritt machen ins Labyrinth von außerhalb der Methode: FindPath(geradeaus)
In der Methode FindPath():
2.) Wenn Weg nach links frei: FindPath(links)
3.) Wenn Weg nach rechts frei: FindPath(rechts)
4.) Wenn Weg geradeaus frei: FindPath(geradeaus)
5.) Wenn Weg blockiert: Methode beenden
Natürlich muss man sich dabei immer den zurückgelegten Weg merken, man könnte ja in einem mehrdimensionalen Array die Wegentscheidungen wegsichern.
Das wäre so mein erster Ansatz ...