45
Probleme mit Rand- und Nebenbedingungen

Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Embed Size (px)

Citation preview

Page 1: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Probleme mit Rand- und Nebenbedingungen

Page 2: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Überblick

• Probleme mit Rand- und Nebenbedingungen

• = Constraint Satisfaction Problems (CSPs)

• Backtracking-Suche für CSPs

• Lokale Suche für CSPs

Page 3: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Probleme mit Rand- und Nebenbedingungen (CSPs)

• Standard-Suchproblem:– Zustand ist "black box“: Beliebige Daten, es sind nur Nachfolgerfunktion,

Heuristikfunktion und Zieltest bekannt.

• CSP:– Zustand ist definiert durch Variable X1 … Xn , wobei Xi Werte aus der

Wertmenge („Domaine“) Di annehmen kann.– Zieltest ist eine Menge von Bedingungen (Constraints) C1 … Cm. Jedes Ci

definiert für eine Teilmenge der Variablen Kombinationen zulässiger Werte.

– Lösung ist die konsistente Zuweisung von Werten aus den Domänen Ci an alle Variable Xi.

• Konsistent bedeutet dabei mit den Contraints Ci verträglich.

• Simples Beispiel einer formal representation language

• Erlaubt Gebrauch von general-purpose Algorithmen, die weiten Anwendungsbereich haben, aber dennoch leistungsfähiger als Standard-Suchalgorithmen sind.

Page 4: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Beispiel: Karte einfärben

• Variable: WA, NT, Q, NSW, V, SA, T • Domänen Di = {rot, grün, blau} (für alle Variable)• Bedingungen: Benachbarte Regionen müssen verschiedene

Farben haben• Z.B. WA ≠ NT• Oder: (WA,NT) in {(rot, grün), (rot, blau), (grün, rot), (grün, blau),

(blau, rot), (blau, grün)}

Page 5: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Beispiel: Karte einfärben

• Lösungen sind vollständige und konsistente Wertezuweisungen

• Z.B. WA = rot, NT = grün, Q = rot, NSW = grün, V = rot, SA = blau,T = grün.

Page 6: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Constraint-Graphen

• Binäres CSP: Jeder Bedingung setzt zwei Variable in Beziehung zueinander

• Constraint-Graph: – Knoten sind Variable– Kanten sind Bedingungen

Page 7: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Klassifizierung von CSPs• Diskrete Variable:

– Finite Domänen:• n Variable, maximale Domänengröße d O(dn) vollständige

Wertezuweisungen• Spezialfall Boolsche CSPs (Domäne {True, False})

– Infinite Domänen:• Integer-Variable, Zeichenketten etc.• Z.B. Auftrags-Scheduling, Variable sind Beginn / Ende für jeden

Auftrag, Werte sind Tage• Auflistung erlaubter Wertekombinationen unmöglich

„Beschränkungssprache“ erforderlich, z.B. StartJob1 + 5 ≤ StartJob3

• Kontinuierliche Variable– Z.B. Beginn / Ende der Nutzung einer Maschine mit

„kontinuierlicher“ Zeit– Lineare Programmierung löst Probleme mit Bedingungen in

Gestalt linearer Ungleichungen (konvexer Bereich) in polynomialer Zeit in n.

Page 8: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Klassifizierung von Bedingungen

• Unäre Bedingungen betreffen jeweils nur eine Variable– Z.B. SA ≠ grün

• Binäre Bedingungen betreffen Paare von Variablen– Z.B. SA ≠ WA

• Bedingungen höherer Ordnung betreffen 3 oder mehr Variable– Z.B. Kryptoarithmetische Spalten-Bedingungen

–––

Page 9: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Beispiel: Kryptoarithmetik

• Variable: F, T, U, W, R, O• Hilfsvariable für Übertrag: X1, X2, X3

• Domänen: {0,1,2,3,4,5,6,7,8,9}• Bedingungen:

– Alldiff (F,T,U,W,R,O) (alle verschieden)– O + O = R + 10 · X1

– X1 + W + W = U + 10 · X2

– X2 + T + T = O + 10 · X3

– X3 = F, T ≠ 0, F ≠ 0

–––

Page 10: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Reale CSPs

• Zuweisungsprobleme– Welcher Lehrer unterrichtet welche Klasse?

• Stundenplan:– Welche Vorlesung wann und wo?

• Planung von Transportaufgaben– Welcher Fahrer, welcher Lastwagen (wieviel Ladung),

welche Strecke? • Planung von Produktionsabläufen

• Viele Realweltprobleme enthalten reellwertige Variable!

Page 11: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Formulierung als Standardsuche (inkrementell)

Zustände sind definiert durch bisher zugewiesene Werte.

• Startzustand: Leere Zuweisung { } (keine Variable hat Wert)

• Nachfolgerfunktion: Weise einer noch nicht belegten Variablen einen Wert zu, so dass kein Konflikt mit den schon erfolgten Zuweisungen entsteht. Falls unmöglich: Failure

• Pfadkosten: Konstant

• Zieltest: Die Zuweisung ist vollständig.

Page 12: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Eigenschaften der naiven Standardsuche für CSPs

• Standardisiert: Für alle CSPs gleich

• Für n Variable erscheint jede Lösung bei Tiefe n. Verwende Tiefensuche

• Pfad ist irrelevant Alternativ kann auch complete-state Formulierung verwendet werden:

• Zustand = Vollständige Zuweisung (egal ob Bed. erfüllt)• Verwende lokale Suche

• Für n Variable mit d verschiedenen Werten:– b = n d bei Tiefe 0– b(s) = (n - s)d bei Tiefe s– Daher n! · dn Blattknoten bei nur dn möglichen Zuweisungen !

Page 13: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Backtracking Suche: Motivation

• Problem des naiven Ansatzes: n! · dn Blattknoten bei nur dn möglichen Zuweisungen

• Aber: Variablen-Zuweisungen sind kommutativ, d.h.[ WA = rot, dann NT = grün ] ist dasselbe wie[ NT = grün, dann WA = rot ].n! resultiert also aus der (noch vollständig repräsentierten)

Kombinatorik

• Daher Breitensuche unsinnig

• Besser: Tiefensuche

Page 14: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Backtracking Suche• Tiefensuche für CSPs heißt Backtracking Suche, wobei

• nur eine Zuweisung pro Knoten erfolgt b = d (bei d Werten),• falls keine erlaubten Werte vorhanden: Zurück gehen.

• Backtracking ist Standardalgorithmus für uninformierte Suche bei CSPs

• Löst n-Damen bis n ≈ 25

Page 15: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Backtracking: Beispiel

Page 16: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Backtracking: Beispiel

Page 17: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Backtracking: Beispiel

Page 18: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Backtracking: Beispiel

Page 19: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Backtracking: Verbesserungen

• Uninformierte Suche konnte durch problemspezifische Heuristikfunktionen verbessert werden ( informierte Suche)

• Bei CSP steckt bereits in den Bedingungen C etwas problemspezifisches Wissen.

Backtracking kann durch general-purpose (nicht problemspezifische) Methoden erheblich verbessert werden.

• Verbesserungsansätze, basierend auf constraints:1. Welche Variable erhält nächsten Wert?2. In welcher Reihenfolge werden Werte durchprobiert?3. Kann Sackgasse vorhergesagt werden?

4.

Page 20: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Variablenauswahl: Minimum remaining values (MRV)

• Heuristik der „am stärksten eingeschränkten Variablen“

• D.h. wähle Variable mit den wenigsten zulässigen Werten

• Dadurch ggf. frühes Abbrechen• Extremfall: Wähle Variable ohne zulässige

Werte Abbruch

Page 21: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Variablenauswahl: Most constraining variable

• „Gradheuristik“: Schränke Verzweigungsgrad b ein …

• … durch Wahl der Variablen, die in den meisten Ci noch nicht zugewiesener Variabler enthalten ist.

• Bsp. Landkarte: Entscheidet u.a. auch welche Region als erste eingefärbt wird (im Gegensatz zu MRV)

Page 22: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Werteauswahl: Least constraining value

• Heuristik des geringst-einschränkenden Wertes• D.h. wähle für geg. Variable den Wert, der am

wenigsten Werte für die noch nicht belegten Variablen ausschließt.

• Kombination MRV + least constraining value: 1000-Damen möglich.

Page 23: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Sackgasse vorhersagen: Forward Checking

• „Vorabüberprüfung“• Idee:

– Beobachte Wertevorrat für noch nicht belegte Variable.– Beende Suche, wenn eine Variable keine zulässigen Werte mehr hat.

Page 24: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Sackgasse vorhersagen: Forward Checking

• „Vorabüberprüfung“• Idee:

– Beobachte Wertevorrat für noch nicht belegte Variable.– Beende Suche, wenn eine Variable keine zulässigen Werte mehr hat.

Page 25: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Sackgasse vorhersagen: Forward Checking

• „Vorabüberprüfung“• Idee:

– Beobachte Wertevorrat für noch nicht belegte Variable.– Beende Suche, wenn eine Variable keine zulässigen Werte mehr hat.

Page 26: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Sackgasse vorhersagen: Forward Checking

• „Vorabüberprüfung“• Idee:

– Beobachte Wertevorrat für noch nicht belegte Variable.– Beende Suche, wenn eine Variable keine zulässigen Werte mehr hat.

Page 27: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Sackgasse vorhersagen: Constraint Propagation

• „Beschränkungsweitergabe“• Forward checking nutzt Information aus erfolgten Zuweisungen um

noch nicht zugewiesene Variable zu checken.• Aber nicht alle Sackgassen werden früh erkannt:

• NT und SA können nicht beide blau sein!• Idee: Folgen der Beschränkungen einer Variablen noch weiter in die

Zukunft propagieren• Constraint Propagation erzwingt wiederholt Bedingungen lokal• Algorithmen für Constraint Propagation ?

Page 28: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Constraint Propagation:Arc consistency

• Einfachste Form der Constraint Propagation: „Kantenkonsistenz“

• Gerichtete Kante X Y ist konsistent, wenn es für jeden Wert x aus X ein zulässiges y aus Y gibt, das mit x verträglich ist.

• Konsistenz von X Y kann hergestellt werden, indem alle Werte aus X entfernt werden, für die es kein zulässiges y aus Y gibt, das mit x verträglich ist.

• Idee: Beschränke Wertevorrat durch Herstellung von Kantenkonsistenz!

• Wenn X einen Wert verliert, müssen die Nachbarn von X wieder überprüft werden.

• Arc consistency erkennt Sackgassen früher als forward checking.

Page 29: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Constraint Propagation:Arc consistency

Page 30: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Constraint Propagation:Arc consistency

Page 31: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Constraint Propagation:Arc consistency

Page 32: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Constraint Propagation:Arc consistency

Page 33: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

• Stellt Kantenkonsistenz her

• Funktion Rm-Inconsistent-ValuesRm-Inconsistent-Values (Xi, Xj) :– Checkt ob für jedes x in Xi passendes y in Xj

– Falls nicht, entferne x aus Xi – Falls ein x aus Xi entfernt wurde, return True, sonst False

• Funktion AC-3AC-3(csp) :– Lege Schlange von Kanten (Xi, Xj) an– Arbeite Schlange ab mit Rm-Inconsistent-ValuesRm-Inconsistent-Values– Falls dabei Rm-Inconsistent-Values Rm-Inconsistent-Values True zurückgibt:

• Reihe alle „Nachbarn“ in Schlange ein

Kantenkonsistenz-Algorithmus AC-3

Page 34: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Kantenkonsistenz-Algorithmus AC-3

Zeitkomplexität: O(n2d3), da• Schlangenlänge: n2 Kanten, jede Kante d Mal in Schlange• Rm-Inconsistent-Values: Rm-Inconsistent-Values: O(d2)

Page 35: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Lokale Suche für CSPs• Hill-Climbing und simulated annealing bearbeiten meist

„vollständige“ Zustände, d.h. alle Variablen sind zugewiesen.

• Anwendung auf CSPs:– Erlaube Zustände mit nicht erfüllten Bedingungen– Operatoren verändern Werte

• Variablenauswahl: Zufällige Wahl aus Menge der Variablen mit Konflikten.

• Wertauswahl durch Heuristik minimaler Konflikte (Min-Conflicts) :– Wähle den Wert, der am wenigsten Bedingungen verletzt– D.h. Hill-Climbing mit h(n) = Gesamtzahl verletzter Bedingungen

–••

–•

Page 36: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Beispiel: 4-Damen• Zustände: 4 Damen in 4 Spalten (44 = 256 Zustände)• Aktionen: Bewege Dame in Spalte• Zieltest: Keine Bedrohung• Evaluationsfunktion: h(n) = # Bedrohungen

• Kann aus zufälligem Anfangszustand n-Damen in nahezu konstanter Zeit für bel. n mit hoher Wahrscheinlichkeit lösen

(z.B. n = 10,000,000)

••

Page 37: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Problemstruktur• Idee: Nutze Problemstruktur (repräsentiert in Constraint-Graph) zur

Beschleunigung.• Welche Eigenschaften des Constraint-Graphen sind nützlich?• Bsp.: Tasmanien unverbunden! Suche nach unverbundenen (=unabhängigen) Unterproblemen!• Bsp.:

– n Variable, Domänengröße d– Zwei Teilprobleme der Größe k + l = n– Aufwand O(dk + dl) statt O(dn) !

Page 38: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Baumstruktur

• Constraint-Graph = Baum, d.h. jedes Paar von Variablen durch höchstens einen Pfad verbunden

• Algorithmus mit Aufwand O(nd2):1. Wurzel = bel. Variable.2. Ordne Variable linear, so dass stets Elternknoten vor

Kindknoten jede Variable hat genau einen Vorgänger (außer Wurzel).

3. Benenne geordnete Variable neu X1… Xn .4. For j=n to 2

Kantenkonsistenz (Xi, Xj) herstellen, wobei Xj Kind von Xi.

5. Weise X1 erlaubten Wert zu.6. For j=2 to n

Weise Xi einen mit dem Elternknoten verträglichen Wert zu.

Page 39: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Baumstruktur

Page 40: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Graph-Reduktion auf Baum

• Kann allg. Constraint-Graph auf Baum reduziert werden?

• Zwei Ansätze:1. Knoten „löschen“:

Belege einige Knoten mit Werten, so dass restliche Knoten Baum bilden

2. Knoten zusammenlegen:Zerlege Constraint-Graph in „verbundene Unterprobleme“

Page 41: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

1 – Knoten löschen

Page 42: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

1 – Knoten löschen

1. Bestimme Knotenmenge S („zyklische Schnittmenge“), nach deren Entfernung der Graph zum Baum wird.

2. Bestimme Menge B(S) aller zulässigen Variablenbelegungen für S.

3. For all b in B(S) :• Konsistenz aller anderen (d.h. nicht in S

enthaltenen) Domänen mit b herstellen.• Baum-Algorithmus auf Restproblem anwenden• Falls Lösung: Fertig.

Page 43: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

2 - Baumzerlegung• Zerlege Constraint-Graph in Baum aus

Unterproblemen, so dass– Jede Variable auftritt– Jede Bedingung auftritt– Variable, die in mehreren Unterproblemen auftreten,

dort den gleichen Wert haben

Page 44: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

2 - Baumzerlegung

Lösung finden:– Löse Unterprobleme (falls eins unlösbar Ende)– Unterproblem wird „Megavariable“ dessen Domäne

Lösungsmenge des Unterproblems ist– Baum-Algorithmus anwenden

Page 45: Probleme mit Rand- und Nebenbedingungen. Überblick Probleme mit Rand- und Nebenbedingungen = Constraint Satisfaction Problems (CSPs) Backtracking-Suche

Zusammenfassung

• CSPs sind spezielles Suchproblem:– Zustände sind Werte einer Variablenmenge– Zieltest ist Menge von Bedingungen für Werte der Variablen

• Backtracking = Tiefensuche mit einer Wertzuweisung pro Knoten

• General-purpose Heuristiken zur Variablen- und Wertauswahl sehr effektiv

• Forward Checking verhindert Zuweisungen die garantiert in Sackgasse führen

• Constraint Propagation (z.B. Kantenkonsistenz) hilft Wertauswahl zu beschränken und Inkonsistenzen zu erkennen

• Komplexität des Constraint-Graphen bestimmt Lösungskomplexität. Falls (teilweise) Reduktion auf Baum möglich, erhebliche Vereinfachung

• Lokale Suche mit Min-Conflicts ist in der Praxis hocheffektiv•••••