Uninformierte Suche in Java Informierte Suchverfahren

Werbung
Uninformierte Suche in Java
Informierte Suchverfahren
Stephan Schwiebert
WS 2008/2009
Sprachliche Informationsverarbeitung
Institut für Linguistik
Universität zu Köln
8-Damen-Problem


Gegeben: Schachbrett mit 8 Zeilen und 8 Spalten
Gesucht: Aufstellung von 8 Damen, so dass keine Dame
von einer anderen Dame bedroht wird.
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
8-Damen-Problem


Gegeben: Schachbrett mit 8 Zeilen und 8 Spalten
Gesucht: Aufstellung von 8 Damen, so dass keine Dame
von einer anderen Dame bedroht wird.
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Suchprobleme


bestehen aus Zuständen (insbesondere einem
Ausgangszustand), Nachfolgerfunktionen und
Zieltest
Bei informierten Suchverfahren existiert zudem noch
eine Kostenfunktion, mit der ein einzelner „Schritt“
bewertet wird.
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Suchbaum/Suchgraph




Teilgraph des Suchraums
Wurzel ist Suchknoten, der dem Ausgangszustand
entspricht.
Abhängig von der gewählten Suchstrategie – im
(theoretischen) Idealfall ein Pfad vom
Ausgangszustand zur optimalen Lösung.
Im Idealfall kreisfrei (Baum statt Graph)
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Knoten und Zustände im Suchbaum



Zustand: Konfiguration des Problems, z.B. besuchte
Städte + Kosten des zurückgelegten Weges
Knoten: „Buchhaltungs“-Datenstruktur, z.B. Kosten
des zurückgelegten Weges & aktuelle Stadt
Zwei unterschiedliche Knoten können den gleichen
„Weltzustand“ beschreiben (der auf
unterschiedlichen Wegen erreicht wurde).
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Suchstrategie


informierte Suche:
Besucht „vielversprechende“ Knoten im Suchbaum
zuerst. Benötigt Zusatzinformationen, um diese
Knoten zu identifizieren.
uninformierte Suche:
Besucht Knoten nach ihrer Reihenfolge im
Suchbaum. Kann dabei „beliebig schlecht“ vorgehen.
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Algorithmus zur Tiefensuche
Stack stack
stack.push(ausgangsProblem)
begin sucheLösung :
solange (Stack nicht leer) :
Problem p = stack.pop()
wenn (p ist Lösung) :
return „Lösung: p“
sonst:
Problem kind = expandiere(p)
wenn (kind != null) :
stack.push(p)
stack.push(kind)
end wenn
end sonst
end solange
end sucheLösung
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Algorithmus zur Tiefensuche
Stack stack
stack.push(ausgangsProblem)
begin sucheLösung :
solange (Stack nicht leer) :
Problem p = stack.pop()
wenn (p ist Lösung) :
return „Lösung: p“
Einzige Bedingung
an das Problem:
Methode zum Prüfen
und zum Expandieren.
sonst:
Problem kind = expandiere(p)
wenn (kind != null) :
stack.push(p)
stack.push(kind)
end wenn
end sonst
end solange
end sucheLösung
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Informierte Suche/Best First Search
# Damen
8
10
12
# Lösungen
92
724
14200
Zeit/Lösung
1,2
3,8
7,4
Da Verzweigung und Tiefe des Suchbaums stark
zunehmen, wenn das Spielfeld vergrößert wird, wird
das vorgestellte Backtracking-Verfahren schnell
ineffizient.
Wie könnte sich die Suche beschleunigen lassen?
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Informierte Suche/Best First Search



Wenn Teillösungen bewerten werden können, können
zunächst vielversprechende Knoten expandiert werden.
Je nach Qualität der Bewertungsfunktion (die abhängig
von der Problemstellung ist), lässt sich die Anzahl der zu
expandierenden Knoten somit stark beschränken.
Wird die Bewertung einer Lösung geschätzt, so handelt
es sich bei der Bewertungsfunktion um eine Heuristik.
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Heuristiken
Heuristiken für das 8-Damen-Problem

Wie könnte eine Heuristik für das 8-Damen-Problem
aussehen, die entscheidet, in welcher Spalte die
nächste Dame gesetzt
werden soll?
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Heuristiken für das 8-Damen-Problem

Wie könnte eine Heuristik für das 8-Damen-Problem
aussehen, die entscheidet, in welcher Spalte die
nächste Dame gesetzt
werden soll?
h(s) = ??
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Heuristiken für das 8-Damen-Problem

Wie könnte eine Heuristik für das 8-Damen-Problem
aussehen, die entscheidet, in welcher Spalte die
nächste Dame gesetzt
werden soll?
h1(s) = Anzahl
freier Felder
h2(s) = min. Anzahl
freier Felder pro
Zeile
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Bestensuche im 8-Damen-Suchbaum
1
3
4a
4b
4d
4f
h2: 2
h2: 2
h2: 1
h2: 2
2
3
a
b c d
e f
g h
Die Positionen a, b und f würden von h2
gegenüber Position d bevorzugt.
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Anforderungen an eine Heuristik

Welche Kriterien sollte eine gute Heuristik erfüllen?

Sie sollte

effizient berechnet werden können

wenige bis keine „schlechten“ Knoten expandieren.

niemals höhere (bei einem Minimierungsproblem)
Kosten schätzen als tatsächlich anfallen.
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Wegsuche II

Wie könnte eine Heuristik aussehen, die benutzt
werden kann, um Wege in einem Routenplaner zu
berechnen?
117
23
141
26
21
86
21
86
50
104
31
31
124
59
0
27
36
36
54
14
54
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Naive Heuristik

Idee: Es wird stets der Knoten expandiert, der dem
Ziel (laut Heuristik) am nächsten liegt.

Bewertungsfunktion: f(x) = h(x)

Vorteil: Der Algorithmus ist schnell.

Problem: Die Lösung ist nicht optimal.
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Naive Heuristik
117
23
141
86
21
86
50
104
59
21
31
124
0
27
36
54
14
54

In diesem Fall würde die Suche den rot markierten Weg
wählen (Kosten: 168), während der grün markierte Weg
(Kosten: 133) optimal ist.
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Naive Heuristik: zu gierig!


Der beschriebene Ansatz ist ein sogenannter
„Greedy-Algorithmus“, der sich „gierig“ dem Ziel
nähert und nicht bereit ist, eine einmal getroffene
Entscheidung (hier: Zwischenstation)
zurückzunehmen.
Für manche Probleme sind Greedy-Algorithmen sehr
gut geeignet. Wie muss ein solches Problem
„aussehen“?
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Hill-climbing

Problem: Abhängig vom Ausgangszustand kann der
Algorithmus in einem lokalen Maximum „steckenbleiben“.
Stephan Schwiebert - Sprachliche Informationsverarbeitung - WS 08/09
Herunterladen