![]() |
|||
![]() |
|
| Das Backtracking-Prinzip lässt sich elegant als rekursiver Algorithmus formulieren und dann auch so implementieren. | |
Definition |
Ein rekursiver Algorithmus ist ein Algorithmus, der sich selbst wieder aufruft. |
Backtracking
|
EF bezeichnet eine Entscheidungsfolge.
Algorithmus BacktrackingRek (EF) falls EF Lösung ist stop sonst für alle jetzt möglichen Entscheidungen falls Entscheidung nicht erkennbar falsch verlängere Entscheidungsfolge EF um diese Entscheidung, (die verlängerte Entscheidungsfolge heiße EF') BacktrackingRek(EF') |
| Der Algorithmus wird mit der leeren Entscheidungsfolge gestartet. | |
der Rechner spinnt den Ariadnefaden! |
Bei Verwendung von Rekursion muss man sich keine Gedanken mehr darüber machen, wie man eine Entscheidung zurücknimmt: der Rechner organisiert dies von sich aus beim Verwalten der rekursiven Aufrufe. |
mehr zum Stack im Modul Lineare Datenstrukturen |
Der Rechner verwaltet eine Datenstruktur Stack ('Stapel').
|
![]() |
Beobachte, wie die rekursive Version des
Algorithmus Zum Ausgang für ein kleines Labyrinth abläuft.
Die Parameter EF, M und X werden jeweils im Stack verwaltet. |
| Seite 5/10
|