+ All Categories
Home > Documents > SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006...

SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006...

Date post: 05-Apr-2015
Category:
Upload: heinz-dunk
View: 105 times
Download: 2 times
Share this document with a friend
42
SS - V0.95 (c) W. Conen, FH GE, ADS 1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch Suche
Transcript
Page 1: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 1

ADS – Vorlesung, SS06Prof. Dr. Wolfram ConenMai 2006

Inhalte:- Repräsentation von Problemen- Problemlösung durch Suche

Page 2: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 2

Künstliche Intelligenz (KI)

„KI: Teilgebiet der Informatik, welches versucht, menschliche Vorgehensweisen der Problemlösung auf Computern nachzubilden, um auf diesem Wege neue oder effizientere Aufgabenlösungen zu erreichen“,

aus: Lämmel, Cleve: Künstliche Intelligenz, 2. Aufl. 2004,Hanser Verlag

Page 3: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 3

Problem 1 – Missionare und Kannibalen

Drei Missionare und drei Kannibalen sind auf der selben Seite eines Flusses. Es gibt auf dieser Seite auch ein Boot, das ein oder zwei Leute aufnehmen kann.

Problem: Finden Sie nun einen Weg, alle so auf die andere Seite zu bekommen, dass die Zahl der Kannibalen die Zahl der Missionare auf irgendeiner Seite des Flusses niemals überschreitet (dann würden die Missionare nämlich gefressen...)

Page 4: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 4

Wie löst man solch ein Problem?

Man „sucht“ nach einer Lösung

Aber zunächst mal muß man sich klar machen, WAS genau die Aufgabe ist Man sucht nach einer günstigen Repäsentation des Problems „Günstig“ ist sie, wenn man mit dieser Repräsentation „leicht“ eine

Lösung finden kann (für das „umformulierte“, repräsentierte Problem) ... und diese Lösung sich zurück übertragen lässt auf die ursprüngliche

Problemstellung – also das „tatsächliche“ Problem löst! Und natürlich sollte die Repräsentation „beherrschbar“ sein, also

möglichst klein, verständlich („wartbar“), präzise, usw.

Dann beginnt die Suche nach einer Lösungsmethode. Oft hat man bereits eine Methode im Hinterkopf und schaut, ob man

das Problem passend repräsentieren kann (z.B. Graph-basierte Suche, Constraint Optimization, Genetic Algorithms, Neuronale Netze, sehen sie, wenn sie mögen, in INT im Master)

Wenn man die Methode (ev. auch mehrere) ausgewählt hat, dann beginnt die tatsächliche Suche nach einer Lösung, und zwar „auf“ der gewählten Problemrepräsentation

Page 5: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 5

Kannibalen haben Hunger...

Repräsentation des „Zustandes“ als Vektor (m,k,b)

m = Anzahl Missionare k = Anzahl Kannibalen b = Position des Bootes

Wir brauchen nur eine Seite des Flußes darstellen, wir nehmen die linke Seite (b = 1)

Es gilt immer: Missionare rechts = 3-m, Kannibalen rechts = 3-k

Ev. mögliche Folgezustände (naiv) zu (m,k,1): (m-1,k-1,0), (m-2,k,0), (m,k-2,0),(m-

1,k,0),(m,k-1,0) Ev. mögliche Folgezustände (naiv) zu

(m,k,0): (m+1,k+1,1), (m+2,k,1), (m,k+2,1),

(m+1,k,1),(m,k+1,1) Startzustand: (3,3,1), Zielzustand: (0,0,0) Suche nach eine Zustandsfolge vom Start

zum Ziel! Problem: wir merken noch nicht, dass wir

ungültige Zustände verwenden...

2,2,0

3,3,1

3,2,1

2,1,0

1m,1k im Boot

1m

1m,1k

1m, 2k rechts...AUA!2,2,1

1k

Page 6: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 6

Kannibalen haben Hunger...

Ungültige Zustände feststellen...z.B. durch Aufzählen: (2,3,1),(1,3,1),(1,2,1) (2,1,0),(2,0,0),(1,0,0) (1,0,1),(2,0,1),(2,1,1) (2,3,0),(1,3,0),(1,2,0)

Möglicherweise sind nicht alle hiervon erreichbar (überhaupt oder nur über gültige Zustände)

Man könnte das auch abstrakt angeben: (m,k,b) mit m < k Æ m > 0 oder k < m

Æ k < 3 ist ungültig Zugfolgen sind nur legal, wenn sie nicht

über ungültige Zustände führen Wenn wir eine Funktion haben, die zu

einem Zustnd die gültige Folgezustände ausspuckt, dann können wir direkt die Lösung finden!

Wenn wir eine haben, die nur alle „möglichen“ Zustände ausspuckt, dann müssen wir noch die Gültigkeit prüfen

Beides läßt sich als Graph visualisieren!(nächste Folie)

2,2,0

3,3,1

3,2,1

2,1,0

1m,1k im Boot

1m

1m,1k

1m, 2k rechts...AUA!

2,2,1

1k

Page 7: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 7

Die Rettung der Missionare (1)

3,3,1

2,2,0 2,3,0 3,2,0 1,3,0 3,1,0

3,2,12,3,1

2,1,01,2,0 3,0,0

3,1,1

1,1,0

Page 8: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 8

Rettung der Missionare (2)

1,1,0 2m, 2k rechts mit Boot

2,1,1 2,2,1 1,2,1 1,3,1

(3,1,1) ist der Vorgänger

2,1,0 2,0,0 1,2,0 0,2,0

(gab‘s bereits)

0,3,1

0,1,0

0,2,1 1,1,1 2,1,1 1,2,1

(gab‘s bereits)

Page 9: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 9

Rettung der Missionare (3)

0,2,1 1,1,1

0,0,0

(0,1,0) ist Vorgänger

1,0,0

Page 10: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 10

Rettung...Kontrolle (1) Gefundener Weg: 2 Kannibalen nach

rechts: (3,1,-,0,2,B) oder 1M+1K nach rechts: (2,2,-,1,1,B)

1 Kannibale zurück oder 1M zurück, je nach Wahl oben(3,2,B,0,1,-)

2 K nach rechts:(3,0,-,0,3,B)

1 K zurück:(3,1,B,0,2,-)

2M nach rechts:(1,1,-,2,2,B)

3,3,1

2,2,0 2,3,0 3,2,0 1,3,0 3,1,0

3,2,12,3,1

2,1,01,2,0 3,0,0

3,1,1

1,1,0

Page 11: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 11

Rettung...Kontrolle (2)

Gefundener Weg: 1M+1K nach links:

(2,2,B,1,1,-) 2 M nach rechts:

(0,2,-,3,1,B) 1 K nach links:

(0,3,B,3,0,-) 2 K nach rechts:

(0,1,-,3,2,B) 1K nach links:

(0,2,B,3,1,-) oder1M nach links:(1,1,B,2,2,-)

1,1,0

2,1,1 2,2,1 1,2,1 1,3,1

2,1,0 2,0,0 1,2,0 0,2,0

0,3,1

0,1,0

0,2,1 1,1,1 2,1,1 1,2,1

Page 12: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 12

Rettung...Kontrolle (3)

Gefundener Weg: 2K nach rechts

oder1M+1K nach rechts:(0,0,-,3,3,B)

0,2,1 1,1,1

0,0,0 1,0,0

Lösungen:(1) 2K, 1K, 2K, 1K, 2M, 1M+1K, 2M, 1K, 2K, 1K, 2K(2) 2K, 1K, 2K, 1K, 2M, 1M+1K, 2M, 1K, 2K, 1M, 1M+1K(3) 1M+1K, 1M, 2K, 1K, 2M, 1M+1K, 2M, 1K, 2K, 1K, 2K(4) 1M+1K, 1M, 2K, 1K, 2M, 1M+1K, 2M, 1K, 2K, 1M, 1M+1K

Page 13: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 13

Welche Probleme können auftreten?

Man findet keine „griffige“ Repräsentation, weil z.B. Informationen fehlen oder „unscharf“ sind Informationen unsicher/unglaubhaft sind

Man hat ein Problem vor sich, dass im allgemeinen unlösbar ist (Halteproblem) im allgemeinen „hart“ zu lösen ist (NP-komplett, EXP)

Man kennt keine sinnvolle Problemlösungsmethode für die gefundene Repräsentation Im Master werden Sie einige Methoden für verschiedene

Repräsentationen kennenlernen ... ... und wenn die richtige nicht dabei ist, dann können Sie mit ihrem

Wissen und ihrer Cleverness vielleicht einen (Er-)Finden!

Page 14: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 14

Suche...nochmal generell

Angenommen, sie wollen ein Problem lösen ... ... dann suchen sie also nach einer Lösung Viele Probleme lassen sich als Graph-Probleme modellieren

manchmal ist das unmittelbar klar (MST, kürzeste Wege, TSP) manchmal braucht man einen „abstrakten“ Umweg:

Das Problem spielt sich in einem bestimmten „Realwelt“-Ausschnitt ab, den man durch eine Menge von „Dingen“ und (regelhaften) Beziehungen zwischen diesen Dingen beschreiben kann

Diese Dinge (und damit der Ausschnitt) befinden sich zu jedem Betrachtungszeitpunkt in einem bestimmten Zustand

Modellieren kann man das z.B. durch Parameter/Variablen, denen Wertebereiche zugeordnet sind und zwischen denen Relationen bestehen.

Ein Zustand entspricht dann einer konkreten Belegung der Parameter mit Werten

Page 15: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 15

Suche (Forts. Problemlösen als Suche)

Aus den Wertebereichen und Beziehungen/Regeln ergeben sich die möglichen Zustände des Realweltausschnitts

Es steht eine Menge an Operatoren zur Verfügung, um einen Zustand in einen Folgezustand zu überführen

Ein Problem sieht dann wie folgt aus: Gesucht ist eine clevere Sequenz von Operatoranwendungen,

die uns von einem gegebenen Ausgangszustand in einen gewünschten Zielzustand führt.

Regelmäßig wollen wir zudem eine besonders „gute“ Operatorsequenz finden (z.B. eine kostengünstige, wenn wir Kosteninformationen zu den Operatoren haben)

HINWEIS: Wir nehmen zur Vereinfachung an, dass wir nur endliche viele (mögliche) Zustände betrachten (der Zustandsübergangsgraph als Repräsentation der jeweiligen Probleme ist also ENDLICH).

Page 16: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 16

Suche (Forts. Problemlösen als Suche)

Ausgangszustand z1, Zielzustand z11 Es gibt viele mögliche Pfade inkl. Sackgassen (z7,z8) und

unerreichbare Zustände (z10)

z1

z2

z3

z4

o1

o2

o3

z5

z6

z7

z8

z9

z10

z11z1 z3

z5

z9 z11

Page 17: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 17

Suche (Forts. Problemlösen als Suche)

Schauen wir uns noch eine der Sackgassen an Um einen Weg zum Ziel zu finden, müssen wir einfach eine

Entscheidung für einen Operator zurücknehmen und ändern Das nennt man „Backtracking“!

z1

z2

z3

z4

o1

o2

o3

z5

z6

z7

z8

z9

z10

z11z1 z3

z5 z8z8

z9 z11

Page 18: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 18

Suche (Forts. Problemlösen als Suche)

z1

z2

z3

z4

o1o2

o3

z5

z6

z7

z8

z11

z10

z11z1 z3

z5 z8

z9

Es gibt viele verschiedene Wege in diesem Zustandsgraphen (wieviele?), manche dieser Wege führen zum Ziel, andere nicht

Um garantieren zu können, dass wir das Ziel erreichen (oder sicher sein können, dass es nicht erreichbar ist), müssen wir ggfs. alle von z1 aus begehbaren Wege anschauen

Wie können wir das systematisch tun?

Page 19: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 19

Suche (Forts. Problemlösen als Suche)

z1

z2

z3

z4

o1

o2

o3

z5

z6

z7

z8

z9

z10

z11z1 z3

z5 z8

z9

z1 z3

z4

z5 z8

z9 z11

z11

z2

z6

z6

z7

z7

z8

z9

z8

z9 z11

z11

z5

z8

z9 z11

z5

z9 z11z9 z9

z5

z3 z6 z9z6 z11z11z9z9z6

z7z7

z3

z8z8z8z2

z6

z5 z8z5 z8

z9 z11z11z9z9

z5z2 z8z8

z6 z9 z11z11z9z9z6

z2

z4 z7

z1z1

z7z4z4

Tiefensuche /Depth First Search

Page 20: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 20

Suche (Forts. Problemlösen als Suche)

z1

z2

z3

z4

o1

o2

o3

z5

z6

z7

z8

z9

z10

z11z1

z1 z3

z4

z5 z8

z9 z11

z2

z6

z6

z7

z7

z8

z9

z8

z9 z11

z11

z5

z8

z9 z11z3

z2

z3

z4

z2 z5

z6

z7

z3

z2

z4

z3

z8

z9

z5

z6

z5

z6

z5z5

z6z6

z7z4

z8

z7

z9

z8

z11

z8

z9

z8

z9

z8

z9

z8

z9z9

z8z8

z9 z11z9

21

21

21 234321

234321 234321

z1 z11

Breitensuche /Breadth First Search

Page 21: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 21

Tiefensuche für Zustandsbäume

Hilfsdatenstruktur: Knoten k im Zustandsgraph sind mit einem Zustand beschriftet, erhältlich über k.zustand

Genereller Ablauf für Tiefensuche in einem Zustandsgraphen mit Baumform:

Algorithm tiefensuche(Knoten start) for each k 2 Kinder(start) do

if k.zustand = zielzustand then print „Ziel gefunden!“; return true;

else if tiefensuche(k) then return true; return false;

Liefert sicher eine Lösung, wenn es eine gibt (weil wir Zyklen verboten haben)! Falls der Graph endlich ist, sonst nicht!

Achtung: Die Reihenfolge der Kinderbesuche ist nicht vorgeschrieben, sie können frei wählen!

Page 22: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 22

Breitensuche für Zustandsbäume

Wir verwenden eine FIFO-Queue queue (also eine Liste, an die hinten angefügt und vorne entnommen wird, FIFO steht für first-in-first-out)

Genereller Ablauf für Breitensuche in einem Zustandsgraphen mit Baumform:

Algorithm breitensuche(Knoten start) queue.append(start); // queue leer vor Beginn while (not queue.empty()) do

k à queue.deleteFirst(); // Knoten k besuchen if k.zustand = zielzustand then

print „Ziel gefunden!“; return true; for each c 2 Kinder(k) do // Knoten k expandieren

queue.append(c); print „Kein Ziel gefunden!“; return false;

Anmerkung: Man kann auch vor dem Einstellen der Kinder prüfen, ob ein Zielzustand erreicht ist. Wir können zeigen, dass das generell Speicher und Tests spart. Trotzdem verwenden wir aus Gründen der Einheitlich (s. BestFirst) für die Aufgaben diese Variante. Größenordnungsmäßig macht es keinen Unterschied...exponentiellen Zeit- und Speicheraufwand erfordern beide Algorithmen in Best- und Worstcase (DFS nur im Worst Case!)

Page 23: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 23

Breitensuche für Zustandsbäume

Liefert sicher eine Lösung, wenn es eine gibt! Achtung: Die Reihenfolge der Kinderbesuche ist nicht vorgeschrieben,

sie können frei wählen! Bisher haben wir Zustandsräume in Baumform betrachtet Da funktionieren beide Verfahren gut: beide sind „komplett“, d.h. sie

finden einen Zielzustand, wenn er existiert und erreichbar ist Wenn die maximale Tiefe des Baumes d ist und der „flachste“

Zielzustand sich auf der Ebene m befindet und wir einen „gleichmäßigen“ Verzweigungsfaktor b unterstellen, dann Tiefensuche: best-case O(m), worst-case O(bd), average case:

hängt von der Verteilung der Zielzustände über die Tiefen zwischen m und d ab

Breitensuche: best-case = average case = worst-case O(bm), falls eine Lösung vorhanden ist, sonst best-case = average case = worst-case = O(bd)

Page 24: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 24

Suche für allgemeine Zustandsgraphen

Problem: ein Graph, der kein Baum ist, enthält einen Kreis, d.h. gleiche Zustände können bei der Reise durch den Graphen mehrfach auftreten! (s. Missionarsproblem)

Was passiert, wenn wir unsere Algorithmen auf einen Graphen mit Kreis loslassen? Die Tiefensuche läuft möglicherweise immer weiter „geradeaus“ und

kann sich in einer endlosen Schleife „aufhängen“ Wenn es eine Lösung gibt, findet die Tiefensuche sie dann nicht! Wenn es keine Lösung gibt, merkt sie es nicht!

Die Breitensuche expandiert gleiche Knoten mehrfach Kein „prinzipielles“ Problem, wenn es eine Lösung gibt – dann wird

diese auch gefunden (und zwar weiterhin die „flachste“) – die Breitensuche ist also auch im „Wiederholungsfall“ komplett!

Wenn es allerdings keine Lösung gibt, dann merkt unser einfaches Verfahren zur Breitensuche das nicht!

Page 25: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 25

Beispiel: Suche in Kreisen mit Tiefensuche

DUI

OB

GE

EMH

D

Startzustand

Zielzustand

GE

OB

GE

OB

E

GE

E

MH D

E DUI

GE

OBOB

GE

OB

GE

Unendliche Zweige können in dem Baumentstehen, der die Wege durch den Zustands-graphen darstellt (also die Suche beschreibt)!

Page 26: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 26

Suche

Kann man beide Verfahren noch „retten“? Idee: wir können kontrollieren, ob es zu Zustandswiederholungen

kommt Knoten markieren bzw. die durch sie repräsentierten Zustände in

einer globalen „CLOSED“-Liste registrieren und nur einmal besuchen

Erweiterung der Algorithmen ist einfach: besuchte Zustände werden in eine CLOSED-LISTE aufgenommen

Suchkosten: linear zur Anzahl der Zustände in der Liste mit einem Bitfeld und nummerierten (oder „gut“

gehashten) Zuständen kann man die (Zeit-)Kosten konstant und den Speicher „erträglich“ halten (es sei denn, es gäbe sehr viele Zustände)

Dann zwei Alternativen (zunächst nur für unsere Breitensuche relevant)

1. Nur Knoten in queue einstellen, die nicht in CLOSED sind2. Nur Knoten besuchen/expandieren, die nicht in CLOSED sind

Page 27: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 27

Suche

Übrigens kann das zweite Verfahren besser sein, wenn der Test deutlich teurer ist, als ein Einstellen sein sollte...denken sie an folgendes:

Nehmen Sie an, die Lösung auf Tiefe m wird dort als letzter Knoten „angepackt“

Dann wurden vorher bereits bm-1 Knoten expandiert, also bm+1-b Knoten in die queue gestellt und, bei Variante 1, auch getestet

Wenn Tests im Vergleich zum Einstellen teuer sind (wie in unserem Fall), dann sollte man unnötige Tests vermeiden

In Variante 2 werden die Kinder von Knoten der Tiefe m zwar eingestellt, aber nicht mehr getestet, das spart einen Zeitaufwand von O(bm)*O(n)! (O(n) bei naiver Suche in CLOSED)

Allerdings kostet es mehr Speicher – und wenn man beim Grundablauf die Kinder vor dem Einstellen auf die Zieleigenschaft testen würde, sähe die Situation wieder anders aus...uns interessiert aber wieder vorrangig die Größenordnung des Aufwands, und die kennen wir bereits: exponentiell für Speicher und Zeit!

Sie sollten beide Varianten beherrschen!

Page 28: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 28

Suche Problem mit dem Markieren von Zuständen im Zustandsgraphen: der ist

häufig gar nicht explizit gegeben (und muß dann auch nicht explizit repräsentiert werden), sondern wird nur durch einen Startzustand und eine Zustandsübergangsfunktion beschrieben (vor allem empfehlenswert bei unendlichen Zustandsräumen)

Schwerwiegender: Speichereffizienzüberlegungen! es kann sehr viele (besuchte) Zustände geben, die muß man sich dann

ev. alle merken in der Tiefensuche braucht man sonst nur alle Knoten entlang eines

Weges, also O(d) bei der Breitensuche ohnehin jeweils komplette Ebenen, also max.

O(bm) bei Tiefensuche kann man sich manchmal auch durch „einfache“

Abbruchkriterien behelfen, um unendliche Zweige zu vermeiden, z.B. wenn man weiß, dass es nur max. C Zustände gibt (dann macht man immer noch Arbeit ggfs. doppelt, aber man braucht keine Liste)

Ähnliches geht auch mit Breitensuche. Wenn man sogar weiß, dass eine Lösung existiert, dann kann man auch auf die Kontrolle von Wiederholungen verzichten und ist dennoch komplett (macht aber ggfs. mehr Aufwand, als erforderlich – abwägen: wie oft kommen Wiederholungen vor?)

Page 29: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 29

Breitensuche für Zustandsgraphen

Vermeiden von Wiederholungen für die Variante 2: Genereller Ablauf für Breitensuche in einem Zustandsgraphen (queue und closed zu

Beginn leer), es wird nur ein Ziel gefunden (um alle zu finden, schmeißen sie einfach das „return true“ raus und geben nur false zurück, wenn sie gar keins finden, also zählen sie die gefundenen Ziele am besten mit – so können sie natürlich auch die normale Breitensuche modifizieren) Algorithm breitensuche(Knoten start)

queue.append(start); while (not queue.empty()) do

k à queue.deleteFirst(); // Knoten k besuchen if (not closed.in(k.zustand)) then // Ist k in closed?

if k.zustand = zielzustand then print „Ziel gefunden!“; return true;

closed.append(k.zustand);for each c 2 Kinder(k) do // Knoten k expandieren queue.append(c);

print „Ziel nicht gefunden“; return false;

Page 30: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 30

Beispiel: Suche mit Pfadkosten

Wir wollen weiterhin von Gelsenkirchen nach D‘dorf

Aber jetzt wollen wir nicht nur einen Weg finden, sondern einen guten Weg!

Genauer: einen Weg durch den Zustandsgraphen mit minimalen Kosten (also einen „kürzesten Weg“)

DUI

OB

GE

EMH

D

Startzustand

Zielzustand

1020

15

35

12

13

14

Page 31: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 31

Suche mit Pfadkosten

Was können wir tun? Weiterhin Tiefen- oder Breitensuche verwenden und dort einfach

nach allen Lösungen suchen (Lösungen „enumerieren“) und die beste auswählen! (ggfs. sehr teuer)

wir können auch mit Tiefensuche nur nach einer Lösung suchen und dann hoffen, dass es die richtige ist...

manchmal wissen wir auch, dass die flachste Lösung die beste ist, z.B. wenn alle Schrittkosten konstant und positiv sind oder gleichmässig und einheitlich mit der Entfernung vom

Startzustand zunehmen (dann geht die normale Breitensuche, die nur die flachste Lösung findet)

Wenn wir Wiederholungen vermeiden wollen, dann geht das nicht ohne „Nachdenken“ wir müssen uns die bisher besten Kosten zu den Zuständen

merken und im Wiederholungsfall die Erkundung eines Zweigs stoppen,

wenn die neuen Kosten zum wiederholten Zustand nicht kleiner sind

Page 32: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 32

Suche mit Pfadkosten

Und sonst? Wir verwenden die Kosteninformationen, um nach und nach die

vielversprechendsten Wege zu erkunden (Russell/Norvig nennen das „Uniform cost“-Suche, kein sehr passender Name)

Im Grunde ist das ein klassischer „Best-First“-Ansatz: der Knoten mit den niedrigsten aufgelaufenen Kosten wird zuerst expandiert

Wenn man weiß, dass die Kosten mit der Entfernung vom Startknoten nicht abnehmen, dann kann man mit der ersten gefundenen Lösung aufhören – sie muß optimal sein!

Page 33: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 33

Suche mit Pfadkosten – Best-First Uniform Cost Ablauf für Zustandsgraphen mit Vermeidung von Wiederholungen nach

Variante 2 (bei Uniform Cost kann auch Variante 1 lohnenswert sein, je nach Probleminstanz)

Die Min-PQueue pqueue und die Closed List sind leer zu Beginn:

Algorithm bestFirst(Knoten start) start.cost à 0; pqueue.insert(start); closed.append(start); while (not pqueue.empty()) do

k à pqueue.deleteMin(); // Knoten k besuchen if (not closed.in(k.zustand)) then // Ist k in closed?

if k.zustand = zielzustand then print „Ziel gefunden!“; return true;

closed.append(k.zustand); for each c 2 Kinder(k) do // Knoten k expandieren

c.cost à k.cost + kante(k,c).cost; pqueue.insert(c); // Knoten c in PQueue ablegen

Der Wert der Knoten wird im Feld cost abgelegt. Der Wert einer Kante wird ebenso abgelegt. Ist fast genau Dijkstra, nur ein bisschen „blöder“, weil mehrfaches Einstellen statt

Update (kann zu spektakulär höherem Speicheraufwand führen!)

Page 34: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 34

Uniform-Cost-Ablauf

DUI

OB

GE

EMH

D

Startzustand10

20

15

35

12

13

14

pqueue (und closed in Klammern dahinter):

GE/0E/15, OB/20 (GE)OB/20, MH/27, GE/30, D/50 (GE,E)MH/27, GE/30, DUI/30, GE/40, D/50 (GE,E,OB)GE/30, DUI/30, E/39, GE/40, DUI/40, D/50 (GE,E,OB,MH) GE in Closed!DUI/30, E/39, GE/40, DUI/40, D/50 (GE,E,OB,MH)E/39, GE/40, DUI/40, OB/40, MH/43, D/44, D/50 (GE,E,OB,MH,DUI) E,GE,DUI,OB, MH in Closed!D/44, D/50, OB/50, MH/53 (GE,E,OB,MH,DUI)D/44 gefunden!

Page 35: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 35

Was geht noch „uninformiert“?

Simples „Greedy“: Verwende von deinem Knoten aus jeweils den günstigsten nächsten

Schritt.

Wenn wir nicht auf Wiederholungen achten, kann das zu endlosem Pendeln zwischen zwei Zuständen führen Im Beispiel würde er sich zwischen E und MH einpendeln

Also achten wir auf Wiederholungen (von Zuständen) Das gibt aber noch keine Garantie, dass wir auch einen Zielzustand

finden (wir enden ggfs. in einer Sackgasse, die auch erst entstanden sein kann, weil wir die Nachbarn bereits besucht haben) Im Beispiel würde er in OB hängen bleiben

Also verwenden wir Backtracking („Zurückspringen“) und führen eine CLOSED-List bereits verwendeter Kanten! Im Beispiel besuchen wir dann folgende Kanten (und damit die Knoten):

{GE,E}, {E,MH},{MH,DUI},{DUI,OB},Backtrack,{DUI,D} Also finden wir in diesem Beispiel nicht die optimale Lösung (aber

immerhin, wir finden jetzt sicher eine Lösung – das kann auch mal die Beste sein!)

Page 36: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 36

Was geht noch „uninformiert“?

Wir können auch noch mittels Tiefensuche (depth-first search oder kurz: DFS) die Breitensuche simulieren (mit oder ohne Schrittkosten) dann brauchen wir nicht auf Wiederholungen zu achten und haben trotzdem ein vollständiges Verfahren für endliche

Zustandsräume Das geht, indem wir ein Tiefenlimit einführen

Setze das Limit zu Beginn auf 0 (dann wird nur der Startzustand angeschaut)

Erhöhe das Limit in jeder Runde um eins und beginne immer wieder oben mit Tiefensuche, wiederhole das solange bis die erste Lösung gefunden wurde

Dieses Verfahren nennt sich Iterative Deepening und ist für den Fall ohne Schrittkosten die sinnvollste Wahl

Page 37: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 37

Iterative Deepening

Die Implementierung ist simpel: Wie der Algorithmus Tiefensuche, aber mit Abbruch des Abstiegs, wenn das Tiefenlimit erreicht ist (also einfach ein Limit vorgeben und beim Aufruf von Tiefensuche einen Parameter Tiefe, der schrittweise erhöht wird, hinzufügen – bei Erreichen des Limits nicht mehr expandieren!)

Das Verfahren ist besser, als DFS, weil es sich nicht in endlose Zweige verlaufen kann

Im Vergleich zur Breitensuche wiederholt es zwar eine Menge, aber es muss sich wesentlich weniger merken (linear zur Lösungstiefe) und es expandiert vor allem die Knoten auf Tiefe m nicht mehr! (es wird ab einer gewissen Tiefe dramatisch günstiger als Breitensuche)

Es findet allerdings die beste Lösung nur, wenn es die flachste ist (wie Breitensuche).

Man kann das leicht zu einem optimalen Verfahren machen, wenn man sich die Kosten der besten bisher gefundenen Lösung merkt: Solange es auf der Limitebene noch Knoten mit niedrigeren Kosten

gibt, wird weiter iteriert ... ...und dabei Knoten nicht expandiert, wenn sie nicht günstiger als

die beste bisherige Lösung sind.

Page 38: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 38

Und was ist „informierte“ Suche?

Wenn wir zu den Zuständen z noch heuristische Informationen h haben, die es uns erlauben, die Entfernung zum nächsten/besten Zielknoten zu schätzen, also h(z)

Für einen gegebenen Knoten k mit Zustand k.zustand = z können wir die bisherigen tatsächlichen Kosten des Wegs zu k, angegeben durch g(k) und die noch zu erwartenden Kosten, h(k) = h(k.zustand) = h(z) addieren

Diese Summe f(k) = g(k)+h(k) verwenden wir dann als „Distanzwert“ in unserer PQueue für den Best-First-Algorithmus von vorn

Dieses berühmte Verfahren nennt sich A* (Beispiel nächste Folie), gesprochen „ä-star“

Page 39: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 39

A*-Ablauf (auf Wiederholungen wird nicht geachtet)

DUI

OB

GE

EMH

D

Startzustand10

20

15

35

12

13

14

pqueue:

GE/0+30E/15+20, OB/20+24MH/27+16,OB/20+24, D/50+0,GE/30+30OB/20+24, D/50+0, DUI/40+14,E/39+20, GE/30+30DUI/30+14,D/50+0, DUI/40+14,E/39+20, GE/30+30,

GE/40+30D/44+0, D/50+0, DUI/40+14,E/39+20, MH/43+16, GE/30+30, GE/40+30, MH/43+16 (fertig)

Heuristische Informationen:h(GE) = 30, h(OB) = 24, h(DUI) = 14,h(MH) = 16, h(E) = 20, h(D) = 0

Page 40: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 40

Informierte Suche mit A*

Wenn die verwendete Heuristik „admissible“ ist – das ist sie, wenn sie die tatsächlichen Kosten unterschätzt, dann ist A* optimal für endliche Zustandsräume (bei nicht-negativen Pfadkosten, wie wir generell annehmen)

A* ist außerdem auch noch optimal effizient relativ zur Klasse der Algortihmen, die einen solchen Suchbaum explorieren. Das Argument ist einfach: A* untersucht alle Knoten mit niedrigeren tatsächlichen Kosten, als der

optimale Zielknoten wenn ein anderer Algo einen dieser Knoten ausläßt, dann kann er nicht

sicher sein, das Optimum gefunden zu haben Manchmal kann ein anderer Algo „zufällig mal“ besser sein, aber nicht

immer! (A* expandiert auch Knoten mit dem gleichen Gewicht wie der optimale Zielknoten, die muss man aber nicht unbedingt anschauen!)

Das Vermeiden von Wiederholungen spielt auch wieder eine Rolle für die Effizienz (und die Vollständigkeit des Algo) – hier helfen konsistente Heuristiken (sie erfüllen die Dreiecksungleichung und sind admissible)

Natürlich können wir auch h verwenden, um „greedy“ loszulaufen (diesmal stürzen wir uns nicht „greedy“ auf Kanten, sondern auf Nachfolger) – mit ähnlichen Problemen und Resultaten, wie oben

...und einiges mehr (Praktisch relevant: Speicherbeschränkte Varianten von A*!)

Page 41: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 41

Und sonst noch?

Man kann auch noch anders modellieren – man verwendet nur komplette Lösungen und versucht dann durch Operatoren von einer Lösung zur nächsten zu gelangen

Kann z.B. beim TSP (Travelling Sales Person, Rundreiseproblem) sinnvoll sein: Zustände sind dann komplette Rundtouren, man sucht die beste.

Man kann auch „partielle“ oder ungültige „Lösungsvorschläge“ zulassen und dann nach der besten gültigen Lösung in diesem erweiterten Zustandsraum suchen

Und vieles mehr...wie wir z.T. noch sehen werden (aber vorwiegend leider erst im Master)

Page 42: SS - V0.95(c) W. Conen, FH GE, ADS1 ADS – Vorlesung, SS06 Prof. Dr. Wolfram Conen Mai 2006 Inhalte: - Repräsentation von Problemen - Problemlösung durch.

SS - V0.95 (c) W. Conen, FH GE, ADS 42

Literatur zur Suche in Zustandsräumen

Russell, Norvig: Artificial Intelligence – the Intelligent Agent Approach, Prentice-Hall, 2nd Edition (unbedingt die zweite Auflage verwenden mit einem aktuellen Printing), International Edition (billiger als das amerikanisch/kanadische Original), 2003

Russell ist Professor in Berkeley, eine der öffentlichen Top-Unis (eine/die andere öffentliche Top-Uni in Informatik ist die UMICH in Ann Arbor)

Norvig ist Director of Search Quality bei Google

Das Buch ist das „Standardwerk“ zu KI (=künstlicher Intelligenz), es hat ein paar kleine Schwächen, z.B. wenn es um Optimierung geht oder wenn man sehr präzise Details braucht, es gibt aber einen exzellenten Überblick über viele Teilgebiete der KI (und fast alles spannende gehört da „irgendwie“ zu...zumindest sehen das die KI‘ler so...stimmt natürlich nicht so ganz, oder doch? ;-)


Recommended