290 likes | 418 Views
Praktikum KI. Teil 3: CSP – Constraint Satisfaction Problems. Einführung. Bisherige Suchverfahren betrachten die Zustände des Suchraums als „Black Box“ Heuristiken für die informierte Suche sind auf das jeweilige Suchproblem zugeschnitten
E N D
Praktikum KI Teil 3: CSP – Constraint Satisfaction Problems
Einführung • Bisherige Suchverfahren betrachten die Zustände des Suchraums als „Black Box“ • Heuristiken für die informierte Suche sind auf das jeweilige Suchproblem zugeschnitten • Constraint Satisfaction Problems (CSPs) verwenden eine standardisierte Beschreibung des Suchproblems • Ermöglicht Verwendung von allgemeingültigen Heuristiken • Formale Beschreibung des Suchproblems ermöglicht einfachere Problemzerlegung • Mächtiges „Standardwerkzeug für große Gruppe von Problemen“ Praktikum KI WiSe 2007/08
Einführung • Was sind CSPs? • Probleme, bei denen nur die Lösung, nicht aber der Lösungsweg interessiert, z.B. • n-Damen-Problem • Färbung von Landkarten (hier: 3-Färbung Australiens) Praktikum KI WiSe 2007/08
Einführung • Was sind CSPs? • Formell: Ein CSP besteht aus • Menge von Variablen mit Wertebereichen, z.B. • 8-Damen: {Reihe1, …, Reihe8} mit Wertebereich {1, …, 8} • Landkarte von AUS: {WA, NT, SA, Q, NSW, V, T} mit Wertebereich {rot, grün, blau} • Menge von Constraints (Beschränkungen), z.B. • 8-Damen: Alldiff(Reihe1, …, Reihe8), Reihe1+1 ≠ Reihe2, … • Landkarte: Alldiff(WA, NT, SA), Alldiff(NT, SA, Q), … • Spezielle Landkarte mit Tasmanien blau: T=blau, … Praktikum KI WiSe 2007/08
Einführung • Was sind CSPs? • Terminologie: • Konsistente Belegung: Eine Zuweisung von Werten zu einer (Teil-)Menge von Variablen, so dass kein Constraint verletzt wird • Lösung: Konsistente Belegung aller Variablen • Constraint Graph (für binäre Constraints) • Knoten entsprechen den Variablen • Kanten einem Constraint, welches beide Knoten beinhaltet Praktikum KI WiSe 2007/08
CSP als Suchproblem • Naiver Suchansatz • Knoten im Suchbaum entsprechen konsistenter (Teil-)Belegung der Variablen • Nachfolger entsprechen zusätzlicher konsistenter Belegung einer weiteren Variablen • Initialisiere Suchbaum mit {} {} {WA=r} {WA=g} {T=r} {T=b} {WA=b} {T=g} … {WA=r,NT=g} {WA=r,NT=b} {WA=r,SA=g} {WA=r,SA=b} {WA=r, T=r} {WA=r,T=g} {WA=r,T=b} … Praktikum KI WiSe 2007/08
CSP als Suchproblem • Naiver Ansatz führt zu Suchbaum • Der Tiefe n für n = Anzahl der Variablen • Verzweigungsfaktor n*d auf Stufe 1 für d = Anzahl der möglichen Werte • Verzweigungsfaktor (n-1)*d auf Stufe 2 • … • Insgesamt n!*dn Blätter • Aber: Es gibt maximal dn verschiedene Konfigurationen • Problem des naiven Ansatzes: • Kommutativität ignoriert, d.h. für die Lösung ist es egal, ob zuerst Variable 1 einen Wert zugewiesen bekommt oder Variable 2 • Das ist der große Unterschied zu Nicht-CSP-Problemen! Praktikum KI WiSe 2007/08
CSP – Backtracking Search • Allgemeiner Lösungsansatz für CSP-Probleme: • Suchbaum mit Tiefe n • Jede Schicht entspricht der Zuweisung einer weiteren Variablen (nicht immer der gleichen in einer Schicht!) • Alle Nachfolger eines Knotens haben die gleiche neue Variable zugewiesen => Suchbaum hat nur noch dn Blätter • Backtracking-Search • Depth-First-Search • Gibt es keine Nachfolger mehr und Stufe n noch nicht erreicht, gehe im Baum solange zurück (hoch), bis es einen noch nicht betrachteten Nachfolger gibt Praktikum KI WiSe 2007/08
CSP – Bachtracking Search • Beispiel 3-Färbung Australiens: Praktikum KI WiSe 2007/08
CSP – Bachtracking Search • Beispiel 3-Färbung Australiens: Praktikum KI WiSe 2007/08
CSP – Bachtracking Search • Beispiel 3-Färbung Australiens: Praktikum KI WiSe 2007/08
CSP – Bachtracking Search • Beispiel 3-Färbung Australiens: Praktikum KI WiSe 2007/08
CSP – Bachtracking Search • Beispiel 3-Färbung Australiens: … … Praktikum KI WiSe 2007/08
CSP - Optimierung • Die Suche kann durch intelligentes Vorgehen entscheidend positiv beeinflusst werden • Heuristiken: Welcher Wert soll einer Variablen zugeordnet werden? • Variablen-Auswahl: Welche Variable soll als nächstes betrachtet werden? (Kann / soll vom aktuellen Knoten abhängen) • Forward-Checking / Constraint-Propagation: Inkonsistente Pfade erkennen und ausschließen • Backjumping: Zu welchem Knoten soll zurückgesprungen werden? Praktikum KI WiSe 2007/08
NT Q WA SA NSW V T CSP - Heuristiken • Welche Variable sollte als nächstes gewählt werden? • Die Variable mit den wenigsten verbleibenden Werten (minimum remaining values, MRV-Heuristik) • Im Beispiel bleibt nach der Wahl von WA=r, NT=g für SA nur blau übrig; würden zuerst Q, NSW und V belegt werden, führt dies u.U. zu unnötigen Fehlversuchen • Die Variable mit den meisten unbehandelten Constraints (degree heuristic) • Im Beispiel sollte Colorierung mit SA begonnen werden • Auch als Entscheidungshilfe möglich, falls MRV keinen eindeutigen Kandidaten liefert Praktikum KI WiSe 2007/08
CSP - Heuristiken • Welcher Wert sollte der Variablen zugewiesen werden? • Der Wert, der für die Zukunft die wenigsten Einschränkungen bedeutet • D.h. Wert der für die angrenzenden Variablen die meisten Freiheiten lässt • „least-constraining-value“-Heuristik Praktikum KI WiSe 2007/08
CSP - Heuristiken • Ergebnisse: Praktikum KI WiSe 2007/08
CSP – Forward Checking • Ein Wert eines Knotens K im Constraint-Graph impliziert für alle Nachbarn eine Einschränkung ihrer Möglichkeiten • Sobald Wert für K gewählt wird, lösche inkonsistente Werte in allen Nachbarknoten • Verzweigungsgrad im nachfolgenden Suchbaumzweig sinkt ohne Lösungsmenge zu beschneiden Wertemengen zum Start: Nach der Wahl von WA=r: Nach der Wahl von NT=g: Nach der Wahl von Q=r: Praktikum KI WiSe 2007/08
Wertemengen zum Start: Nach der Wahl von WA=r: Nach der Wahl von Q=g: CSP – Forward Checking • Forward Checking kann verwendet werden, um Werte für die MRV-Heuristik zu berechnen • Forward Checking beseitigt aber nicht alle Inkonsistenzen: Im Beispiel bleiben für SA und NT nur die Werte blau übrig. Aber es muss gelten SA ≠ NT. Praktikum KI WiSe 2007/08
CSP – Forward Checking • Ergebnisse: Praktikum KI WiSe 2007/08
CSP – Constraint Propagation • Wie kann man die Implikationen der aktuellen Belegung weiter als bis zu den aktuellen Nachbarn im Constraint Graph propagieren? • arc consistency (Kantenkonsistenz): • Für jede gerichtete Kante von P nach Q im Constraint Graph soll gelten, dass es zu jedem Wert p von P mindestens einen gültigen Wert von Q gibt • Ist dies nicht der Fall, so lösche p aus dem Wertebereich von P • Ein Graph ist kantenkonsistent, wenn jede gerichtete Kante zwischen noch nicht belegten Variablen konsistent ist • Wird ein Graph kantenkonsistent gemacht, so müssen Kanten ggf. mehrfach überprüft werden. Bsp: • Kante (P,Q) konsistent gemacht • Kante (Q,R) konsistent gemacht; Löschen eines Wertes von Q • Kante (P,Q) jetzt evtl. nicht mehr konsistent R P Q Praktikum KI WiSe 2007/08
CSP – Arc Consistency • Beispiel: • Die Kante von SA nach NSW ist konsistent • Die Kante von NSW nach SA ist nicht konsistent, kann aber durch Entfernen von b aus NSW konsistent gemacht werden • Die Kante von NT nach SA ist nicht konsistent, macht man sie konsistent, so hat NT keine Werte mehr => Problem hat mit aktueller Zuordnung (WA=r, Q=g) keine Lösung => Backtracking Praktikum KI WiSe 2007/08
CSP – Arc Consistency function AC-3(csp) returns the CSP, possibly with reduced domains inputs: csp, a binary CSP with variables {X1; X2; …; Xn} local variables: queue, a queue of arcs, initially all the arcs in csp while queue is not empty do (Xi; Xj) REMOVE-FIRST(queue) if REMOVE-INCONSISTENT-VALUES(Xi; Xj ) then for each Xk in NEIGHBORS[Xi] do add (Xk; Xi) to queue function REMOVE-INCONSISTENT-VALUES(Xi; Xj ) returns true iff we remove a value removed false for each x in DOMAIN[Xi] do if no value y in DOMAIN[Xj ] allows (x ,y) to satisfy the constraint between Xi and Xj then delete x from DOMAIN[Xi]; removed true return removed Praktikum KI WiSe 2007/08
CSP – Arc Consistency • Eigenschaften: • Laufzeit O(n2d3) • Maximal n2 gerichtete Kanten im Constraint Graph • Jede Kante (P,Q) kann maximal d mal in die queue eingefügt werden, da maximal d Werte von Q gelöscht werden können • Das Überprüfen der Constraints zwischen P und Q hat Aufwand d2 • Die Überprüfung kann entweder nur zu Beginn der Suche oder nach jedem Schritt (im Suchbaum) vorgenommen werden • Aber: Auch Arc Consitency verhindert nicht immer das Auftreten von Inkonsitenzen: WA = r, NSW = r ist kantenkonsistent aber nicht konsistent. Praktikum KI WiSe 2007/08
CSP - Backjumping • Normales CSP benutzt chronologisches Backtracking • Problem: Eventuell ist ganzer Zweig des Suchbaums inkosistent, das merkt man aber erst, nachdem man alle Blätter des Zweigs probiert hat • Lösungsidee: Springe zurück zur Variablenbelegung, die die Probleme verursacht hat • Bsp: • WA = r, NSW = r • Danach Belegung von T = r • Danach Belegung von NT, Q, V, SA • Keine Belegung von NT, Q, V, SA funktioniert • Normales CSP: T = g, T = b und alle Möglichkeiten für NT, Q, V, SA probieren • Conflict-Directed Backjumping: WA und NSW sind für die Probleme mit NT, Q, V, SA verantwortlich • Springe über T zurück zu NSW Praktikum KI WiSe 2007/08
CSP - Strukturanalyse • Betrachte Zusammenhangskomponenten des Constraint-Graphen • Jede Zusammenhangskomponente kann unabhängig von allen anderen gelöst werden • Bsp: Farbe Tasmaniens hat keine Auswirkungen auf die anderen • Nach der Belegung von SA und Q zerfällt das restliche Problem in die Komponenten (WA, NT), (NSW, V) und (T) Praktikum KI WiSe 2007/08
CSP - Strukturanalyse • Besonders einfaches CSP: Baumstruktur des Constraint-Graphen • Mache den Graphen kantenkonsistent, starte bei den Blättern • Dies erfordert kein wiederholtes Betrachten einer Kante • Starte die Belegung der Variablen von der Wurzel an • Aufgrund von Kantenkonsistenz keine Inkonsistenz möglich • Aufwand O(nd2) • Graphen, die keine Baumform aufweisen, können durch geschickte Belegung einzelner Variablen in einen Wald zerfallen • Bsp.: Belegung von SA • Aber: Finden dieses „cycle cutsets“ ist NP-schwer Praktikum KI WiSe 2007/08
CSP – lokale Suche • Verzicht auf die Suche im Suchbaum • Verwende lokale Suchalgorithmen, um Lösung zu finden • Starte mit zufälliger Belegung • Optimierungsfunktion ist die Anzahl der verletzten Constraints • In jedem Schritt verändere eine constraint-verletzende Variable • Neuer Wert der Variablen so dass die Anzahl verletzter Constraints minimiert wird (Min-Conflicts-Algorithmus) • Geeignet für Probleme mit dichter Verteilung der Lösungen im Zustandsraum, z.B. n-Damen Praktikum KI WiSe 2007/08
CSP – lokale Suche • Ergebnisse: Praktikum KI WiSe 2007/08