CSP - Backtracking Flashcards
Wie ist der Pseudoalgorithmus vom Backtracking?
Was ist der wesentliche Vorteil des Backtracking-Algorithmus gegenüber der normalen Tiefensuche bei CSPs?
Der Backtracking-Algorithmus prüft während der Suche aktiv die Constraints und verwirft frühzeitig ungültige Teilzuweisungen. Dadurch vermeidet er unnötige Berechnungen und reduziert den Suchraum, während die normale Tiefensuche alle möglichen Zuweisungen prüft, auch wenn sie von Anfang an inkonsistent sind.
Was ist das First-Fail-Prinzip?
Das First-Fail-Prinzip ist eine Strategie bei der Lösung von CSPs, die zuerst die Variable auswählt, die am schwierigsten zuzuweisen ist (z. B. mit der kleinsten Domäne). Ziel ist es Konflikte frühzeitig erkennen, um unnötige Berechnungen zu vermeiden und den Suchprozess effizienter zu machen.
Was sind typische First-Fail-Heuristiken?
- Belege die Variable mit den meisten Constraints zu den bisher belegten Variablen.
- Belege die Variable mit den meisten starken Constraints zu den bisher belegten Variablen.
- Belege die Variable mit dem kleinsten Wertebereich.
Was macht Forward Checking?
Forward Checking überprüft nach jeder Variablenzuweisung, wie sich diese auf die Domänen der noch unbelegten Variablen auswirkt. Falls eine Domäne leer wird (keine gültigen Werte mehr), wird der aktuelle Pfad abgebrochen.
Welche Schwächen von Backtracking werden durch Forward Checking minimiert?
- Spätes Erkennen von Konflikten: Backtracking erkennt Konflikte oft erst nach vollständiger Belegung, während Forward Checking diese frühzeitig erkennt.
- Unnötige Berechnungen: Backtracking prüft viele inkonsistente Pfade, die Forward Checking frühzeitig ausschließt.
- Ineffizienz bei großen CSPs: Backtracking durchsucht oft große Teilräume, die Forward Checking durch Domänenreduktion vermeidet.
Was ist der Pseudocode für Forward Checking?
Wie unterscheiden sich der Zeit- und Speicheraufwand von Forward Checking und Backtracking?
Forward Checking hat einen Quadratischen Rechenaufwand was im Vergleich zum exponentiellen Rechenaufwand für Backtracking billig ist. Der Speicheraufwand ist jedoch erheblich höher.
Welche First-Fail-Heuristiken werden häufig bei Constraintpropagierungstechniken verwendet?
- MRV (Minimum Remaining Values): Wähle die Variable mit der kleinsten Domäne (wenigste verbleibende Werte).
- Wähle die Variable, die mit den meisten Constraints verbunden ist.
Hinweis: MRV wird häufig in Kombination mit der Gradheuristik als Tiebreaker verwendet.
Warum ist Forward Checking bei n-stelligen Constraints mit n>2 wenig effektiv?
Bei n-stelligen Constraints mit n>2:
Es müssen n−1 Variablen belegt sein, bevor das Constraint überprüft werden kann. Dadurch bleibt der Suchbaum auf den ersten n−1 Ebenen breit und hat einen hohen Verzweigungsgrad.
Wann funktioniert Forward Checking besonders gut und wann weniger effektiv?
- Besonders gut: Bei restriktiven Constraints, z. B. Gleichheitsconstraints, da diese die Domänen der Variablen stark einschränken.
- Wenig effektiv: Bei schwachen Constraints, z. B. Ungleichheitsconstraints, da diese nur minimale Einschränkungen der Domänen bewirken.