Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Problemlösen durch Suchen

Ähnliche Präsentationen


Präsentation zum Thema: "Problemlösen durch Suchen"—  Präsentation transkript:

1 Problemlösen durch Suchen

2 Überblick Problemlösende Agenten Motivation: Problemlösen durch Suche
Problemtypen Probleme formulieren Beispielprobleme Einfache Suchalgorithmen

3 Problemlösende Agenten
Offline-Problemlösen, da Wissen vollständig!

4 Begriffe: Online / Offline
Berechne erst vollständige Lösung Dann Ausführung in der Realwelt Online: „Interleaving“, d.h. Verzahnung Berechnung Aktion Aktion …

5 Problemlösen durch Suchen
Erinnerung: Modellbasierte Agenten „denken“ über Wirkung ihrer Aktionen nach Besonders wichtig, wenn eine Aktion nicht ausreicht, um zum Ziel zu kommen, … … sondern mehrere Aktionen in der richtigen Reihenfolge nötig sind! Ansatz: Mehrere Aktionsfolgen durchspielen

6 Beispiel: Rumänien Standort: Arad Ziel: Bukarest Zielformulierung:
In Bukarest sein Problemformulierung: Zustände: Verschiedene Städte Aktionen: Von einer Stadt zur anderen fahren Lösung finden: Folge von Städten finden, z.B. Arad, Sibiu, Fagaras, Bukarest

7 Beispiel: Rumänien

8 Einordnung der Umgebung „Landkarte“
Statisch: Städte fest Beobachtbar: Agent kennt Standort Diskret: Fahrt nur durch „diskrete“ Städte, nicht querfeldein Deterministisch: Aktion „Fahre nach X“ endet in X

9 Weitere Begriffe: Problemtypen
Deterministisch, vollständig beobachtbar  Ein-Zustands-Problem (single state problem) Agent weiß genau, in welchem Zustand er gelangen wird; Lösung ist eine Zustandsfolge (Ein-Zustands-Problem heißt nicht, dass es nur einen Zustand gibt!) Nicht-beobachtbar  Sensorloses Problem (“Angepasstes (conformant) Problem”) Z.B. Staubsauger kennt seinen Ort nicht ; Lösung ist eine Zustandsfolge Nicht-deterministisch und/oder teilweise beobachtbar  Kontingenzproblem Wahrnehmungen liefern neue Information über aktuellen Zustand Meist Interleaving erforderlich Wenn die neue Information durch anderen Agenten verursacht wird: Adversariales Problem Unbekannter Zustandsraum  Explorationsproblem

10 Beispiel: Staubsaugerwelt
Einzustands-Problem, Start #5 Lösung?

11 Beispiel: Staubsaugerwelt
Einzustands-Problem, Start #5 Lösung? [Rechts, Saugen]

12 Beispiel: Staubsaugerwelt
Sensorlos, Start in {1,2,3,4,5,6,7,8} z.B. Rechts geht über in {2,4,6,8}, d.h. Menge von Zuständen statt nur eines Zustands. Lösung?

13 Beispiel: Staubsaugerwelt
Sensorlos, Start in {1,2,3,4,5,6,7,8} z.B. Rechts geht über in {2,4,6,8} }, d.h. Menge von Zuständen statt nur eines Zustands. Lösung? [Rechts,Saugen,Links,Saugen]

14 Beispiel: Staubsaugerwelt
Kontingenz-Problem Nicht-deterministisch: Z.B. Saugen kann Teppich verschmutzen! Teilweise beobachtbar: Ort, Schmutz am aktuellen Ort. Wahrnehmung: [L, Sauber], d.h. Start in #5 oder #7 Lösung?

15 Beispiel: Staubsaugerwelt
Kontingenz-Problem Nicht-deterministisch: Z.B. Saugen kann Teppich verschmutzen! Teilweise beobachtbar: Ort, Schmutz am aktuellen Ort. Wahrnehmung: [L, Sauber], d.h. Start in #5 oder #7 Lösung? [Rechts, wenn Schmutz dann Saugen]

16 Formulierung des Single-State Problems
Nach Festlegen der Zustände ist ein Problem definiert durch vier Punkte: Anfangszustand, z.B. „in Arad" Aktionen, die in einem Zustand möglich sind, sind gegeben durch die Nachfolgerfunktion S(x) = Menge der Aktion–Zustand Paare Z.B. S(Arad) = {<Arad  Zerind, Zerind>, … } Pfadkosten (additiv) Z.B. Summe der Distanzen, # Aktionen etc. c(x,a,y) ≥ 0 sind die Schrittkosten Zieltest: Explizit, z.B. x = „in Bukarest" Implizit, z.B. Schachmatt(x) Eine Lösung ist eine Sequenz von Aktionen die vom Anfangszustand zum Zielzustand führen.

17 Wahl des Zustandsraums
Realwelt ist hochkomplex  Zustandsraum muss abstrahieren Wahl der Zustände schwierigster Teil der Problemformulierung! Hier: Zustand = Stadt Kosten = Entfernung der Mittelpunkte Was wurde ignoriert / idealisiert? Kosten = Strecke (nicht Fahrzeit, Spritkosten) Ausdehnung der Stadt, Stau, Straßenzustand Detailabläufe: Gas geben, lenken, … (Abstrakter) Zustand = Menge realer Zustände (Abstrakte) Aktion = komplexe Kombination realer Aktionen Z.B. "Arad  Zerind" repräsentiert eine komplexe Menge möglicher Routen, Umwege, Gasgeben, Lenken, etc. Um Realisierbarkeit zu garantieren muss jeder reale Zustand "in Arad“ zu einem realen Zustand "in Zerind“ führen (Abstrakte) Lösung = Menge der Pfade die Lösungen in der Realwelt sind Jede abstrakte Aktion sollte "einfacher" sein als das reale Problem

18 Pfadkostenfunktion Hier: Pfadkosten = Summe der Schrittkosten
Schritt = Aktion, die von einem Zustand zum nächsten führt Sinnvoll z.B. bei Städte-Problem A nach B km B nach C km A über B nach C 30 km Gegenbeispiel: Auto beschleunigt auf Weg von A nach B: 3 sec Auto beschleunigt auf Weg von B nach C: 3 sec Auto beschleunigt von A nach B (3 sec), ist also auf Weg von B nach C schon schneller (1 sec) !

19 Staubsaugerwelt als Zustandsraum
Zustände? Aktionen? Zieltest? Pfadkosten?

20 Staubsaugerwelt als Zustandsraum
Zustände? Diskreter Schmutz und diskreter Ort Aktionen? Links, Rechts, Saugen Zieltest? Kein Schmutz an allen Orten Pfadkosten? 1 pro Aktion

21 Beispiel: Schiebefax Zustände? Aktionen? Zieltest? Pfadkosten?

22 Beispiel: Schiebefax Zustände? Anordnungen
Aktionen? Verschiebe Lücke links, rechts, rauf, runter Zieltest? Bestimmte Anordnung Pfadkosten? 1 pro Verschieben [Bemerkung: optimale Lösung der n-Puzzle Familie ist NP-hart]

23 8-Damen Problem Zustände: 0-8 Damen in bel. Anordnung
Ausgangszustand: Brett leer Nachfolgerfunktion: 1 Dame auf freies Feld setzen Pfadkosten: Egal Zieltest: Alle 8 Damen da, keine wird bedroht

24 Verwandte Problem der Routensuche
Routensuche (Zustand = Stadt) Touring Problem: Jede Stadt 1x besuchen, Anfangs- = Endstadt Zustand = Aktuelle Stadt + alle schon besuchten Traveling Salesman Problem: Kürzesten Weg für Touring finden

25 Realweltproblem: Manipulation durch Roboter
Zustände?: Reellwertige Gelenkwinkel des Arms, reellwertige Objektkoordinaten Aktionen?: Kontinuierliche Gelenkwinkel, Gelenkwinkelgeschwindigkeiten, -beschleunigungen Zieltest?: Z.B. vollständige Montage Pfadkosten?: Ausführungszeit

26 Suchbäume Idee: Offline, simulierte Exploration des Suchraums, indem Nachfolger bereits untersuchter Zustände generiert werden (“Expandierung” von Zuständen)

27 Suchbaum: Beispiel

28 Suchbaum: Beispiel

29 Suchbaum: Beispiel

30 Implementierung: Allgemeiner Suchbaum

31 Implementierung: Zustände / Knoten
Ein Zustand ist eine Repräsentation einer physischen Konfiguration Ein Knoten ist eine Datenstruktur, die Bestandteil des Suchbaums ist. Umfasst Zustand, Elternknoten, Aktion, Pfadkosten g(x), Tiefe Ein Zustand kann durch mehrere Knoten repräsentiert sein! (Z.B. Arad – Sibiu – Arad bei ungünstiger Strategie) Die Expand Funktion erzeugt neue Knoten und belegt die Felder der Datenstrukturen mit Werten. Insb. wird die Nachfolgefunktion SuccessorFn des Problems angewendet, um die entsprechenden Zustände zu erhalten.

32 Suchstrategien Eine Suchstrategie ist definiert durch die Reihenfolge, in der die Knoten expandiert werden. Strategien werden anhand folgender Kriterien bewertet: Vollständigkeit: Wird garantiert eine Lösung gefunden, falls eine existiert? Zeitkomplexität: Zahl der erzeugten Knoten Speicherkomplexität: Maximalzahl der Knoten im Speicher Optimalität: Wird die Lösung mit den geringsten Kosten sicher gefunden? Optimalität heißt nicht: Die (optimale oder suboptimale) Lösung wird mit geringstem Suchaufwand gefunden! Zeit- und Speicherkomplexität werden in folgenden Größen ausgedrückt: b: Maximaler Verzweigungs (branching-)faktor des Suchbaums d: Minimale Tiefe (depth) der optimalen Lösung m: Maximale Tiefe des Suchbaums (u.U. ∞)

33 Uninformierte Suchstrategien
Uninformierte Suchstrategien verwenden nur die Information, die durch die Problemdefinition gegeben ist Wichtigste Strategien: Breitensuche (Breadth-first search) Suche mit einheitliche Kosten (Uniform-cost search) Tiefensuche (Depth-first search ) Tiefenbeschränkte Suche (Depth-limited search) Iterative Tiefensuche (Iterative deepening search)

34 Breitensuche Expandiere zuerst Knoten mit geringster Tiefe
Implementierung: Rand (fringe) ist eine FIFO-Schlange, d.h. neue Nachfolger werden am Ende der Schlange einsortiert

35 Breitensuche Expandiere zuerst Knoten mit geringster Tiefe
Implementierung: Rand (fringe) ist eine FIFO-Schlange, d.h. neue Nachfolger werden am Ende der Schlange einsortiert

36 Breitensuche Expandiere zuerst Knoten mit geringster Tiefe
Implementierung: Rand (fringe) ist eine FIFO-Schlange, d.h. neue Nachfolger werden am Ende der Schlange einsortiert

37 Breitensuche Expandiere zuerst Knoten mit geringster Tiefe
Implementierung: Rand (fringe) ist eine FIFO-Schlange, d.h. neue Nachfolger werden am Ende der Schlange einsortiert

38 Eigenschaften der Breitensuche
Vollständig? Ja (falls b endlich) Zeit? 1+b+b2+b3+… +bd + bd+1-b = O(bd+1) (Wenn Lsg. auf Tiefe d müssen noch bd+1-b Knoten (unnötig) erzeugt werden.) Speicher? O(bd+1) (jeder Knoten wird gespeichert) Optimal? Ja (falls Kosten = 1 pro Schritt) Speicher ist das Hauptproblem (noch mehr als Zeit)

39 Suche mit einheitliche Kosten
Expandiere Knoten mit (bisher) geringsten Pfadkosten zuerst Implementierung: Rand = Schlange geordnet nach Pfadkosten Equivalent zu breadth-first falls Schrittkosten alle gleich Vollständig? Ja, falls Schrittkosten ≥ ε Zeit? # Knoten mit g ≤ Kosten der optimalen Lösung, O(bceiling(C*/ ε)), wobei C* = Kosten der optimalen Lösung Speicher? # Knoten mit g ≤ Kosten der opitmalen Lösung, O(bceiling(C*/ ε)) Optimal? Ja – Knoten werden in ansteigender Ordnung von g(n) expandiert

40 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

41 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

42 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

43 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

44 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

45 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

46 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

47 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

48 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

49 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

50 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

51 Depth-first search Expandiere tiefsten Knoten zuerst Implementierung:
Rand = LIFO Schlange, d.h. Nachfolger nach vorne

52 Eigenschaften der depth-first search
Vollständig? Nein: Versagt in unendlich tiefen Suchräumen und Suchräumen mit Schleifen Modifikation: Verbot der Zustandswiederholung entlang eines Pfades  Vollständig in endlichen Suchräumen Zeit? O(bm): Katastrophal falls m wesentlich größer als d Aber: Falls Lösungen “dicht” sind, kann depth-first wesentlich schneller sein als breadth-first Speicher? O(bm), d.h., linear im Speicher! Optimal? Nein

53 Tiefenbeschränkte Suche
= depth-first Suche mit Tiefenlimit l, d.h. Knoten mit Tiefe l haben keine Nachfolger Rekursive Implementierung:

54 Iterative Tiefensuche

55 Iterative Tiefensuche l =0
Schwarz: Expandierte Knoten ohne Nachfolger Neustart für jedes l !

56 Iterative Tiefensuche l =1
Schwarz: Expandierte Knoten ohne Nachfolger Neustart für jedes l !

57 Iterative Tiefensuche l =2
Schwarz: Expandierte Knoten ohne Nachfolger Neustart für jedes l !

58 Iterative Tiefensuche l =3
Schwarz: Expandierte Knoten ohne Nachfolger Neustart für jedes l !

59 Iterative Tiefensuche
Zahl der Knoten, die depth-limited Suche bis Tiefe d mit Verzweigungsfaktor b generiert: NDLS = b0 + b1 + b2 + … + bd-2 + bd-1 + bd Zahl der Knoten, die Iterative Tiefensuche bis Tiefe d mit Verzweigungsfaktor b generiert: NIDS = (d+1)b0 + d b1 + (d-1)b2 + … + 3bd-2 +2bd-1 + 1bd Für b = 10, d = 5, NDLS = , , ,000 = 111,111 NIDS = , , ,000 = 123,456 Overhead = (123, ,111)/111,111 = 11%

60 Eigenschaften der Iterativen Tiefensuche
Vollständig? Ja Zeit? (d+1)b0 + d b1 + (d-1)b2 + … + bd = O(bd) Speicher? O(bd) Optimal? Ja, wenn Schrittkosten = 1

61 Übersicht

62 Wiederholte Zustände Wenn wiederholte Zustände nicht erkannt werden, kann ein lineares Problem exponentiell werden! Zustandsraum Suchbaum

63 Graphensuche Modifikation von Tree-Search: Liste bereits besuchter Zustände Bei wiederholtem Zustand wird der neue Pfad verworfen Findet daher i.a. nicht das Optimum, außer im Fall konstanter Kosten oder Breadth-first-seach Speicherprobleme bei sehr vielen Zuständen

64 Zusammenfassung Problemformulierung erfordert gewöhnlich Abstraktion. Irrelevante Details der Realwelt werden weggelassen um einen Zustandsraum zu erhalten, in dem das Problem durch Suche gelöst werden kann. Sehr unterschiedliche “blinde” / “uninformierte” Suchstrategien Iterative Tiefensuche benötigt nur linearen Speicher und nicht wesentlich mehr Zeit als andere uninformierte Algorithmen Graphensuche vermeidet wiederholte Zustände


Herunterladen ppt "Problemlösen durch Suchen"

Ähnliche Präsentationen


Google-Anzeigen