Backtracking im Labyrinth (1) © Herbert Paukert

Backtracking im Labyrinth (laby1)

Mit [New] wird ein Labyrinth mit zufälligen Hindernissen (schwarz)
erzeugt. Die freien Wegfelder sind weiß. Das mit "A" markierte Feld
ist der Eingang, das mit "Z" markierte Feld ist der Ausgang im Labyrinth.
Mit [Run] startet das Programm die Suche nach einem freien Weg von
Eingang bis Ausgang. Die Suche erfolgt mit rekursivem Backtracking.

Hinweis 1: Wenn die Hindernisse so dicht liegen, dass kein freier
Durchgang mehr möglich ist, dann kann das Labyrinth nachträglich
mit [Change] geändert werden. Dabei werden innerhalb des Labyrinths
mit Mausklick Hindernisse entfernt oder hinzugefügt.

Hinweis 2: Im rekursiven Backtracking startet der Computer zuerst beim
Startfeld (A) links oben. Er versucht nun die Nachbarfelder zu betreten,
beginnend mit dem direkt darunter liegenden Feld. Er wandert dann
gegen den Uhrzeigersinn in alle acht Richtungen, wenn das jeweilige
Nachbarfeld ein Hindernis (schwarz) ist. Ist das Nachbarfeld frei (weiß),
so wird das Ausgangsfeld als Spur (track) markiert und dann das
freie Nachbarfeld betreten. Dieses Verfahren wird immer wiederholt.
Trifft der Computer dabei auf ein Hindernis oder auf seine eigene Spur,
dann springt er zu jenem Feld zurück (back), wo die letzte Richtungs-
änderung stattgefunden hat. Dort wird das Verfahren dann fortgesetzt.
Dadurch wird ein Ariadne-Faden im Labyrinth simuliert. Durch Änderung
der Reihenfolge der Richtungswechsel können sich beim Backtracking
auch der Verlauf und die Länge des gefundenen Weges ändern.

Das Verfahren ist erfolgreich beendet, wenn das Zielfeld (Z) rechts unten
erreicht wird. Das Verfahren ist dann nicht erfolgreich beendet, wenn kein
freies Feld mehr betreten werden kann.