Was bisher geschah I Daten, Information, Wissen I Wissensrepräsentation I Wissensverarbeitung Wissensverarbeitende Systeme I I I Aufgaben Komponenten und Aufbau 23 Beispiele I Finden von Wegen in einem Graphen I Aufgabe: I I I I Lösungsidee: Wege als Knoten eines Suchbaumes 3 Krüge I Aufgabe: I I I I gegeben: Graph G (Tafel) gesucht: Weg (Pfad) in G von Knoten u zu Knoten v gegeben: 3 volle Krüge mit verschiedenem Volumen: 4l, 7l, 9l, gesucht: genau 6l in einem der 3 Krüge Lösungsidee: Zustände als Knoten eines Suchbaumes Missionare + Kannibalen 24 Darstellung von Problem und Lösung Problem: gegeben: gesucht: Menge V von Zuständen (evtl. unendlich) Startzustand s ∈ V Menge Z ⊆ V von Zielzuständen (oder formale Beschreibung der Zielzustände) mögliche Übergänge zwischen Zuständen Weg von einem Start- zu einem Zielzustand Lösung: Folge von Zuständen (Mitunter interessiert nur der erreichte Endzustand.) Repräsentation als Graph G = (V , E) (Zustandsübergangssystem): I Knotenmenge V : Zustände I (gerichtete) Kanten: Zustandsübergänge Entfaltung des Graphen zu einem Baum: Pfade im Graphen = Knoten im Baum 25 Problemlösen durch Suchen I I formale Darstellung des Problemes als Graph bzw. Baum formale Beschreibung der Lösung als Eigenschaft von I I Pfaden im Graphen bzw. Knoten im Baum Möglichkeiten zum Problemlösen: I Pfadsuche im Graphen I Knotensuche im Baum 26 Suche in Graphen (schon bekannte) Verfahren zur Suche in Graphen (und Bäumen): I Tiefensuche (depth-first search): Suche zuerst in Teilbäumen eines noch nicht besuchten Nachbarn des aktuellen Knotens I Breitensuche (breadth-first search): Suche zuerst in Teilbäumen eines noch nicht besuchten Knotens mit der geringsten Tiefe 27 Allgemeines Suchverfahren Daten: I Menge La der noch zu expandierenden Knoten I Menge Lx der expandierten Knoten I Startknoten s Allgemeiner Suchalgorithmus: 1. La = {s}, Lx = ∅ 2. solange nicht (gefunden oder La = ∅) wiederhole: 2.1 Verschiebe einen festgelegten Knoten u aus La in Lx 2.2 Füge alle Nachbarn von u, die La ∪ Lx nicht enthält, auf eine festgelegte Art in La ein Tiefensuche Breitensuche I I I Verwaltung von La als Stack Einfügen der Nachbarn an den Anfang der Liste La festgelegter Knoten wurde zuletzt in La eingefügt I Verwaltung von La als Queue Einfügen der Nachbarn an das Ende der Liste La festgelegter Knoten wurde zuerst in La eingefügt I I 28 Eigenschaften von Suchverfahren Fairness: jeder Knoten wird expandiert Vollständigkeit: jede Lösung wird gefunden Optimalität: eine beste Lösung wird (zuerst) gefunden Zeitaufwand: größtmögliche Anzahl der Schritte von einem Start- zu einem Endzustand (Speicher-)Platzbedarf: größtmögliche Länge der Liste der noch nicht expandierten Knoten Baum mit I maximaler Tiefe t I maximalem Verzweigungsgrad d I I Breitensuche: vollständig, (optimal,) großer Zeitaufwand: O(d t ) großer Platzbedarf: O(d t ) Tiefensuche: unvollständig bei unendlichen Bäumen, nicht optimal großer Zeitaufwand: O(d t ) geringerer Platzbedarf: O(td) 29 Heuristische Suche – Motivation Heuristik: Effizienzsteigerung durch Zusatzinformationen (z.B. Erfahrungswerte) I Problem mit mehreren Lösungen (z.B. Wege in Graphen) I unterschiedliche Qualität der Lösungen (z.B. Länge des Weges) I Suche nach optimalen Lösungen (z.B. kürzester Weg) I falls vollständige Suche zu aufwendig Idee: Wahl einer geeigneten Such-Reihenfolge, welche die besten Lösunge zuerst findet Ordnung der Liste der noch zu expandierenden Knoten nach einer Schätzfunktion, die die Zusatzinformationen repräsentiert Beispiel: Schiebefax 30 Heuristische Funktion Graph (Baum) (V , E) Heuristische Funktion h : V → R≥0 Bedeutung: Für jeden Knoten v ∈ V ist h(v ) eine Abschätzung der Entfernung des Knotens v zu einem Zielzustand Ziel: Vergleich der geschätzten Entfernungen Suchverfahren: Suchreihenfolge nach steigenden Werten der noch zu expandierenden Knoten (Knoten mit dem geringsten Wert zuerst) Beispiele für Schiebefax 31 Bestensuche Idee: Expansion des Knotens v mit dem geringsten Wert h(v ) einer heuristischen Funktion h : V → ≥0 zuerst Daten: R I Liste der noch zu expandierenden Knoten La I Liste der expandierten Knoten Lx I Startknoten s Allgemeiner Suchalgorithmus: 1. La = {s}, Lx = ∅ 2. solange nicht (gefunden oder La = ∅) wiederhole: 2.1 Verschiebe einen festgelegten Knoten u aus La in Lx 2.2 Füge alle Nachbarn von u, die La ∪ Lx nicht enthält, auf eine festgelegte Art in La ein Bestensuche: I Verwaltung von La als priority queue (oder sortierte Liste) I (sortiertes) Einfügen der Nachbarn in die (sortierte) Liste La I festgelegter Knoten hat den kleinsten Wert in La 32 Bestensuche – Eigenschaften 2 Methoden: 1. Knoten mit großen Werten möglichst spät expandieren 2. Knoten mit großen Werten nicht expandieren I Bestensuche mit einer beliebigen heuristischen Funktion ist nicht immer optimal. I Bestensuche nach Methode 1 (fair) ist vollständig I Bestensuche nach Methode 2 ist nicht immer vollständig 33 (Bisherige) Kosten für Knoten Baum G = (V , E) Kostenfunktion k : V → ∀s ∈ S : k (s) = 0 R≥0 mit Bedeutung: für jeden Knoten v ∈ V bezeichnet k (v ) die tatsächlichen Kosten von einem Startzustand zu v Beispiele für Kostenfunktionen: I Tiefe des Knotens im Suchbaum, I maximale Entfernung vom Startknoten Kostenfunktion k : V → R≥0 heißt streng monoton wachsend , falls für alle Knoten v und alle Nachfolger u von v gilt k (u) < k (v ) 34 Gleiche-Kosten-Suche Idee: Bestensuche mit (bisherigen) Kosten für Knoten als heuristische Funktion Gleiche-Kosten-Suche (uniform-cost search) Suche zuerst in Teilbäumen der noch nicht besuchten Knoten mit den bisher geringsten Kosten Breitensuche als Gleiche-Kosten-Suche (Kosten = Tiefe): Suche zuerst in Teilbäumen der noch nicht besuchten Knoten mit der geringsten Tiefe R Kostenfunktion k : V → ≥0 ist (nach Voraussetzung) monoton und damit das Gleiche-Kosten-Suchverfahren fair. Gleiche-Kosten-Suche ist also vollständig und findet die beste Lösung zuerst. Beispiel: kürzeste Wege (als Knoten im Baum) 35 A∗ -Suche Besten-Suche mit einer Schätzfunktion f : V → für jeden Knoten v ∈ V gilt R≥0, wobei f (v ) = k (v ) + h(v ) mit den Funktionen R I k : V → ≥0 – tatsächliche Kosten von einem Startzustand zu v I h : V → ≥0 – geschätzte Kosten von v zu einem Endzustand R Suche zuerst in Teilbäumen der noch nicht besuchten Knoten mit dem geringsten Wert der Schätzfunktion (Summe von bisherigen und geschätzen zukünftigen Kosten) 36 A∗ -Suche: Schätzfunktionen Schätzfunktion f : V → R≥0 mit f (v ) = k (v ) + h(v ) Schätzfunktion h heißt nicht überschätzend gdw. für alle v ∈ V der Wert h(v ) nicht größer als die tatsächlichen Kosten von v zu einem Lösungsknoten sind. Unter jeder nicht überschätzenden Funktion h gilt für jeden von einem Knoten u erreichbaren Lösungsknoten z h(z) ≤ k (z) − k (u) 37 A∗ -Suche: Eigenschaften Das A∗ -Suchverfahren mit einer monotonen und nicht-überschätzenden Schätzfunktion ist I korrekt, d.h. A∗ -Suche findet jeden errichbaren Lösungsknoten I optimal, d.h. der erste gefundene Lösungsknoten ist eine optimale Lösung I hoher Speicherplatzbedarf (wie für Breitensuche) 38