Wissensbasierte Systeme I Wissensbasierte Systeme I TU MÜNCHEN Institut für Informatik A. Schweikard Bearbeitet von W. Meixner 1 Wissensbasierte Systeme I Inhalt 1 Begriff Künstliche Intelligenz Turing−Test Diskussion Beispiele 2 Suchstrategien Wegsuche in Graphen A*−Verfahren, Analyse heuristischer Suche Anwendungen 3 Und/Oder−Bäume Lösungsgraphen Schachprogramme, Minimax−Verfahren, Alpha−Beta Verfahren, S*−Verfahren 4 Plangenerierende Systeme STRIPS Hierarchische Planung 5 Wissensverarbeitung mit Logik Resolution in PROLOG Auswahlstrategien für Klauseln 6 Probabilistisches Schließen Hypothesennetze in Expertensystemen Kausale Netze Beispiele, Spracherkennung 2 Wissensbasierte Systeme I Literatur D. R. Hofstadter, D. C. Dennet, The Mind´s I, Basic Books, New York, 1981. (Dt: Einsicht ins Ich, dtv: München, 1992.) l. Kanal, V. Kumar, Search in Artificial Intelligence, Springer, Berlin, 1988. P. Levi, G. Lohmann, Skript Wissensbasierte Systeme, Inst. f. Informatik, TU München, 1993. R. E. Neapolitan, Probabilistic Reasoning in Expert Systems, New York: Wiley, 1990. N. J. Nilsson, Principles of Artificial Intelligence,Springer: Berlin, 1980. J. R. Searle et al., Minds, Brains and Programs, The Behavioral and Brain Sciences, 417−457, 1980. J. Pearl, Heuristics, Addison Wesley, Reading, Mass., 1985 J. Pearl, Probabilistic Reasoning in Intelligent Systems, Addison Wesley, Reading, Mass., 1988. R. Penrose, Shadows of the Mind, Oxford University Press, 1994. P. H. Winston, Artificial Intelligence, 3rd Ed., Addison Wesley, Reading, Mass.:1990. 3 Wissensbasierte Systeme I Kapitel 1: Der Begriff Künstliche Intelligenz Künstliche Intelligenz (KI) ist der Name für ein Teilgebiet der Informatik, dessen Ziel es ist, auf Computern intelligentes Verhalten nachzubilden. Was aber ist unter intelligentem Verhalten zu verstehen? Wie kann man feststellen, ob sich ein Computer intelligent verhält? Bei den Auffassungen über die Bedeutung des Begriffs Künstliche Intelligenzˆ lassen sich zwei Hauptrichtungen identifizieren: 1. schwache KIˆ 2. starke KIˆ Schwache KIˆ: Der Computer ist nur ein Instrument zur Untersuchung kognitiver Prozesse. Das Ziel ist, kognitive Prozesse durch Simulation in einem Computer zu verstehen. Starke KIˆ: Der Computer ist nicht nur ein Instrument zu Untersuchung kognitiver oder geistiger Prozesse, vielmehr sind die richtig programmierten Prozesse im Computer an sich geistige Prozesse. Man kann Computern, die mit den richtigen Programmen ausgestattet sind, Verstehen und andere kognitive Leistungen zusprechen. Der Computer simuliert nicht nur Intelligenz, sondern er ist intelligent. Um zu testen, ob ein Computer intelligent ist, wurden Tests und Szenarien entwickelt (Turing−Test, Schanks System, Searle´s Szenario, usw.). Die Bedeutung dieser Tests hinsichtlich einer Präzisierung des Intelligenzbegriffs wird aber kontrovers beurteilt. Turing−Test In einem Zimmer befinden sich ein Mensch (A) und ein Computer (B). In einem anderen Raum befindet sich ein weiterer Mensch (C). C kann nicht in den anderen Raum sehen, aber es gibt eine Datenleitung dorthin, über die er mit A und B kommunizieren kann. Er weiß, daß einer seiner Gesprächspartner ein Mensch, und der andere ein Computer ist, er weiß aber nicht, welcher von beiden der Mensch ist. Er muß durch geschickte Fragen herausfinden, welcher seiner Gesprächspartner der Mensch ist. Dabei versucht der Computer, C zu täuschen, während B versucht, C zu helfen. Wenn es dem Computer gelingt, C zu täuschen, dann ist er intelligent. 4 Wissensbasierte Systeme I Mensch A Computer B Mensch C These: Der Computer ist intelligent, wenn er C täuschen kann. Schanks System Zur Diskussion, ob Verstehen prinzipiell durch Rechner nachgebildet werden kann, hat Schank ein Programm entwickelt (Skript−Programm), das nur einfache Geschichten über Restaurants verarbeiten und Fragen zu diesen Geschichten beantworten kann. Beispiel: Geschichte 1 Ein Gast im Restaurant bestellt einen Hamburger. Als das Essen gebracht wird, sieht der Gast, daß der Hamburger angebrannt ist. Wütend und ohne zu bezahlen verläßt der Gast das Restaurant. Geschichte 2 Ein Gast bestellt einen Hamburger. Als das Essen gebracht wird, ist der Gast sehr zufrieden. Beim Verlassen des Restaurants legt er einTrinkgeld auf den Tisch. Schanks Programm wird nun gefragt: Hat der Gast den Hamburger gegessen? Im Fall von Geschichte 1 antwortet das Programm mit nein˜, im Fall von Geschichte 2 mit ja˜, obwohl die Frage in keiner Geschichte explizit beantwortet wurde. Das Programm basiert nur auf einer Darstellung verschiedener Situationen und Szenen in Restaurants (Skripten) und geeigneter (sequentieller) Ablaufsteuerung. 5 Wissensbasierte Systeme I These der starken KI: Schanks Script−Programm versteht die Geschichten in der gleichen Weise wie ein Mensch. Das Programm erklärt, was menschliches Verstehen bedeuted. Gegenthese: Es besteht ein prinzipieller Unterschied zwischen dem Programm und menschlichem Verstehen. Searle´s Szenario Die Gegenthese vertritt J. Searle. Er behauptet, daß menschliches Verstehen nicht nachgebildet werden kann. Schanks Programm simuliertˆnur Verstehen der Geschichten. Zur Untermauerung dieser Gegenthese entwirft Searle das Szenario ’Chinesisches Zimmer’. Es soll auf den genannten prinzipiellen’ Unterschied hinweisen. Szenario: Searle sitzt allein in einem Raum. Von außen werden ihm eine Geschichte sowie Fragen zu dieser Geschichte in chinesischer Sprache/Schrift hereingereicht. Außerdem erhält er eine Anleitung in Englisch, die ihm angibt, wie er einen Text in chinesischer Sprache bearbeiten soll, wobei die Anleitungen beispielweise in Tabellenform ihm nur angeben, wie er mit chinesischen Zeichen umgehen soll: auf Zeichen A antworte mit Zeichen X. Den eigentlichen Inhalt erfährt er dadurch nicht. Diese Anleitungen ermöglichen es ihm, auf die Fragen zu der Geschichte korrekt zu antworten. D.h. Searle liefert Antworten, die einem Chinesen richtig und sinnvoll erscheinen, obwohl er selbst von der Geschichte nichts verstanden hat. Searle simuliert, chinesisch zu verstehen. Searle´s Fazit: Durch Simulation von intelligentem Verhalten erzeugt man keine Intelligenz. Man könnte nun den Turing−Test mit Searle´s Szenarium kombinieren zu einem chinesischen Turing−Test: ein Turing−Test mit Fragen und Antworten in chinesisch. Nun müßte aber nach Turing der Simulation doch Intelligenz zugesprochen werden. Anders formuliert, falls die Testperson einen chinesischen Turing−Test besteht, dann versteht die Testperson chinesisch. Hier eine weitere Antwort auf Searle´s Szenario: Ein einzelnes Neuron versteht auch keine Geschichten. In demselben Sinne ist auch die Versuchsperson nur Teil eines Gesamtsystems. 6 Wissensbasierte Systeme I Schließlich könnte man sogar zu dem Schluß kommen, daß tatsächlich die Versuchsperson keineswegs chinesisch versteht, wohl aber das Gesamtsystem. Eliza J. Weizenbaum hat ein einfaches Programm geschrieben, das einen syntaktisch richtigen Dialog mit einem Menschen führen kann. Simuliert wird eine psychotherapeutische Sitzung, in der das Programm die Rolle des Psychotherapeuten übernimmt. Weizenbaum wollte mit diesem Programm demonstrieren, daß es sinnlos ist, Programmen menschliche Intelligenz zuzusprechen, auch wenn Programme gelegentlich die Illusion von Intelligenz bei Menschen hervorrufen. Hier ein Ausschnitt eines Sitzungsprotokolls. I am the psychotherapist. Please describe your problems. Each time you are finished talking, type RET twice. Can you ask me a question? Why do you say can I ask you a question? I would like you to ask me something Is it because of your plans that you say you would like me to ask you something? No, I want to see whether you understand questions What makes you believe you might want to see whether? Grenzen mathematischer Beweisbarkeit Man kann die Frage stellen, ob beispielweise die Fähigkeit des mathematischen Beweisens auf Computern nachgebildet werden kann. Wir betrachten eine Menge von Regeln, die bei mathematischen Beweisen benutzt werden. Annahme: die Gesamtmenge solcher Regeln kann formal (z.B.als Algorithmus) in einer bestimmten (hinreichend allgemeinen) Sprache dargestellt werden. Wir bezeichnen diese Formalisierung mit F. Wir konstruieren nun aus F selber eine Aussage, für die gilt: 1. A ist beweisbar korrekt 2. A kann aber nicht durch F hergeleitet werden. Zur Konstruktion nehmen wir eine (hinreichend allgemeine) Sprache S an, in der alle Algorithmen C formuliert werden können, die eine natürliche Zahl n als Eingabe verarbeiten. Wir betrachten lediglich die Aussage, ob ein Algorithmus C für eine Eingabe n hält oder nicht 7 Wissensbasierte Systeme I hält. Wir suchen nun für möglichst viele Algorithmen C und Eingaben n Beweise für die Aussage C(n) hält nichtˆ. Wir nehmen nun weiter an, daß es eine in S formulierbare Methode F gibt, diese Beweise zu finden. Genauer, wir nehmen einen Algorithmus F(C,n) als gegeben an, der, falls er überhaupt anhält, beweist, daß C(n) nicht hält. Wie F aussieht, darüber wird nichts ausgesagt, z.B. könnte F nur nachsehen, ob in C(n) eine Schleife der Form loop: goto loop vorkommt. Es wird nicht gefordert, daß F selber immer hält. (F kann bei C(x) halten, falls x=3, und nicht halten, falls x=4.) Es wird übrigens auch nicht die Umkehrung gefordert, daß also F immer hält, falls C(n) nicht hält. Gefordert wird nur, daß F ’korrekt’ ist. D.h. falls F(C,n) hält, dann ist die Ausgabe von F ein korrekter Beweis dafür, daß C(n) nicht hält. Falls nun S, wie angenommen, hinreichend allgemein ist, gibt es einen Algorithmus NC, der alle Algorithmen der angenommenen Art durchnummeriert. D.h., für jeden Algorithmus C gibt es eine natürliche Zahl i, so daß C=NC(i) bzw. C(n)=NC(i,n). Wir konstruieren nun einen Algorithmus E durch E(n) = F(NC(n),n). Es gibt nun einen Index k, sodaß E = NC(k). Aussage 1: E(k) hält nicht. Denn würde E(k) halten, dann folgt aus E(k) = F(NC(k),k) = F(E,k), daß E(k) hält, was offensichtlich ein Widerspruch ist. Aussage 2: Aussage 1 ist mit F nicht beweisbar. 8 Wissensbasierte Systeme I Denn könnte man mit F beweisen, daß E(k) nicht hält, so müßte ja F(E,k)=E(k) halten. Hypothese (Penrose): Aus der Konstruktion folgt, daß mathematisches Beweisen nicht auf Computern nachgebildet werden kann. Einwände: − wenn A wirklich beweisbar korrekt ist, kann die Methode zum Beweis von A auch in F einbezogen werden Gegenmeinung hierzu: Gezeigt wird, daß für jede solche Formalisierung F eine (nicht mit F beweisbare) Aussage A konstruiert werden kann − Die obige Konstruktion ist bestenfalls ein Paradox über formale Systeme Trotzdem gibt es gegen die Hypothese von Penrose weitere Einwände: 1. Die genannte Konstruktion beweist sicherlich, daß das zugrundliegende algorithmische Modell nicht erklärt, wie menschliche Intelligenz mathematische Beweise hervorbringt. Dieses kann also intelligentes mathematisches Beweisen nicht erklären. Kann aber daraus geschlossen werden, daß es kein Modell für das mathematische Beweisen gibt, das auf Computern nachgebildet werden kann?. 2. Es ist keineswegs sicher, daß Menschen immer zwingend einen Beweis einer Aussage finden, selbst wenn dieser existiert. Offensichtlich benutzt auch menschliche Intelligenz Suchverfahrenˆ, die z.B. sehr wohl auch auf Zufallˆ beruhen können und damit nicht algorithmisch nach dem oben zugrundegelegten Modell sind. Warum sollte es aber von vornherein unmöglich sein, diese Suchverfahren auf Computer nachzubilden?. 9 Wissensbasierte Systeme I Pragmatische KI und wissensbasierter Ansatz Die Pragmatische KI vermeidet den Begriff künstliche Intelligenzˆ und spricht statt dessen von Wissenverarbeitungˆ oder wissensbasierten Systemenˆ. Sie geht aus von der in den siebziger Jahren gemachten Beobachtung, daß Menschen schwierige und theoretisch kaum faßbare Probleme vor allem durch gleichzeitigen und massiven Einsatz von heterogenem Wissen über den Problemgegenstand lösen. Heterogenes Wissen kann z.B. räumliches Wissen, Wissen über zeitliche Abläufe, Wissen über kausale Zusammenhänge sein usw.. Wir werden dazu einige Beispiele betrachten. Die pragmatische KI entwickelt daher Methoden zur Verarbeitung von stark heterogenen Daten mit allgemeinen Prinzipien. Kennzeichen wissensbasierter Systeme sind: − Allgemeine Inferenzmechanismen − Austauschbares Wissen − Verwendung von Standardmethoden wie ¯ Suche in geeigneten Suchräumen −heuristisch −zufallsgestützt ¯ Adaption und Lernenˆ Anwendungen: Expertensysteme, Robotik, Natürlichsprachliche Systeme, Bildverstehen Beispiele: Medizinische Diagnosesysteme Wissen stammt aus unterschiedlichen Quellen: Epidemologie, Statistik, Patientendaten Bildverarbeitung Gegeben ein Grauwertbild. Entscheide, ob auf dem Bild ein Hund abgebildet ist, etc. 10 Wissensbasierte Systeme I Mit dem massiven Einsatz von Wissen versucht man insbesondere der Tatsache zu begegnen, daß häufig die Suchräume, in denen nach Problemlösungen gesucht wird, bei weitem zu groß sind, um eine vollständige Suche durchzuführen. Das zur Einschränkung von Suchräumen herangezogene Hintergrundwissen nennt man in diesem Zusammenhang Heuristik. Beispiele für räumliches bzw. zeitliches Wissen: Fertigungsprozesse Verschnittminimierung, Wegplanung Halterungen, Stabilität, Erreichbarkeit und geometrische Realisierbarkeit Ablaufplanung, Zeitplanung 1. Fertigungsprozesse: Gesucht wird eine bestimmte Folge von Bewegungen, zum Zusammensetzen eines Produkts aus Teilen 2. Verschnittminimierung: Gegeben: Stoffbahn S, nach rechts ’unbegrenzt’. Lege Teile T1,...,Tn so, daß Verschnitt minimiert wird. 11 Wissensbasierte Systeme I T1 T2 S T3 T4 3. Wegplanung: Bestimme einen Weg in einem Labyrinth. Plane eine Folge von kollisionsfreien Bewegungen für einen Fertigungsprozeß 4. Zeitliche Planung: Ablaufplanung und Zuteilung, Stundenplan Ein Experte für Verschnittminimierung benutzt Heuristik, z.B. Fülle Hohlräume zwischen größeren Teilen mit kleineren Teilenˆ. Heuristik ist i.a. schwer formalisierbar. Probleme der Anwendung wissensbasierter Systeme Der Anwender (menschlicher Experte) versteht nur in begrenztem Umfang, wie das System intern arbeitet. (Beispiele: Eliza−Programm, Schachprogramme. Bei Schachprogrammen gibt die Kenntnis der internen Verarbeitung Vorteile.) Unvollständiges Verständnis der Arbeitsweise kann zu naiven Interpretationen der Ergebnisse führen. Für medizinische Expertensysteme kann häufig keine Garantie über die Korrektheit von Schlußfolgerungen gegeben werden. Systeme werden mit Erklärungskomponenten versehen. Es kann aber sein, daß die Erklärungen selbst schwer nachvollziehbar sind oder weitere Fehler verursachen. 12 Wissensbasierte Systeme I Anforderungen für Anwendbarkeit: Interaktive Antwortzeiten. Aber viele naive KI−Verfahren sind exponentiell. Korrektheit des Ergebnisses muß garantiert werden können. Häufig nur durch geeignete Formulierung oder Vereinfachung der Problemstellung erreichbar Interne Arbeitsweise des Systems muß nachvollziehbar sein. Um diesen Anforderungen gerecht zu werden, wird beim Entwurf wissensbasierter Systeme häufig ein pragmatischer Ansatz gewählt, das ist die Beschränkung auf Aussagen, die für den Anwender nachvollziehbar sind, und bei denen auf Grund der Spezifikation der Verfahren die Korrektheit der Ausgabe garantiert werden kann. 13 Wissensbasierte Systeme I Kapitel 2: Suchstrategien Die Lösung vieler Probleme läßt sich als Suche in Graphen modellieren. Der Graph stellt dabei Beziehungen zwischen Objekten dar. Wir betrachten die folgenden typischen Suchprobleme: Gegeben sei ein Graph. Wegsuche: Finde einen Weg von einem Anfangsknoten A zu einem Zielknoten B als Folge von Kanten, die A mit B verbindet. Zusammenhang: Finde eine Zusammenhangskomponente in einem Graphen, die bestimmte Knoten enthält. Beispiel Wegsuche: Wir betrachten ein Beispiel zur Wegsuche für Objekte in einem Hindernisraum. Die Aufgabe ist, ein Objekt (Roboter) von einem Anfangspunkt zu einem Zielpunkt zu bewegen, ohne anzustoßen. Szenario: Der Roboter erkennt Landmarken,d.h. die Landmarken sind für ihn unterscheidbar und die Landmarke Zielˆ kann identifiziert werden. In jeder Stellung ist nur eine Teilmenge der Landmarken sichtbar. Der Roboter kann sich ohne anzustoßen nur direkt zu Landmarken bewegen, die für ihn sichtbar sind. Suchmethode: Landmarken werden als Knoten eines Graphen dargestellt. Landmarken, die gegenseitig sichtbar sind werden durch Kanten im Graphen verbunden. Der folgende Plan stellt die geometrische Anordnung der Landmarken und deren gegenseitige Sichtbarkeit dar. 14 Wissensbasierte Systeme I O A B C Z S D E F Der Startknoten sei S, der Zielknoten Z. Der Roboter, der sich in einer Landmarke X befindet, sieht nur diejenigen Landmarken Y, die in dem folgenden Sichtbarkeitsgraphen durch eine Kante mit X verbunden sind. Sichtbarkeitsgraph: A B C S Z D E F Die Knotenmenge wird als Liste von Knoten (S, Z, A,....,F) dargestellt. Die Kanten werden dargestellt als Liste von Paaren (X,Y) mit Knoten X, Y. Gibt es eine Kante (X,Y), dann heissen X und Y direkt verbundenˆ. Aufgabe: berechne eine Liste L mit L = (S = X1,...,Xk = Z). Dabei muß gelten: Xi, Xi+1 sind direkt verbunden. Zur Lösung der Aufgabe wird dem Graphen ein Suchbaum zugeordnet. Ein einzelner Baumknoten stellt dabei einen ganzen (zyklenfreien) Pfad vom Anfangsknoten bis zu einem Knoten X im Graphen dar. Ein Baumknoten (Pfad) bekommt die Bezeichnung des Graphknotens, zu dem der entprechende Pfad vom Anfangsknoten aus führt. Die Baumwurzel erhält damit die Bezeichnung des Anfangsknotens. Jeder Baumknoten besitzt nur einen Vorgänger und ein kompletter Pfad im Graph kann aus einem Baumknoten rekonstruiert werden. Im Suchbaum kommen Knotennamen eventuell mehrmals vor. Dies entpricht dem Umstand, daß zu einem Graphknoten eventuell mehrere Pfade im Graphen führen. 15 Wissensbasierte Systeme I Demgegenüber gibt es für jeden Baumknoten nur einen Pfad, der dorthin führt (im ursprünglichen Graphen möglicherweise mehrere!) Suchbaum S D A C E D E A D B B E C F B F Z C Z F B E A C Z F Z Für die Lösung der Wegsuche kommen nur Pfade ohne Zyklen in Frage. Entsprechend enthält der obige Suchbaum keine Baumpfade, in denen die Bezeichnung eines Knotens zweimal vorkommt. Suchbaum mit Schleife: S ... A D B C E A ... ... Wir betrachten ein zweites Beispiel. Der Suchraum ist hier gegeben durch Zuständeˆ (Situationen) eines Puzzlespiels. Gegeben sind Ausgangs− und Zielzustand. Die Aufgabe ist, den Zielzustand über einen Weg˜ mit dem Ausgangszustand zu verbinden. 16 Wissensbasierte Systeme I Beispiel 9er−Puzzle: Anfangs− zustand End− zustand 2 8 3 1 6 4 7 5 1 2 3 4 8 7 6 5 Suchbaums: 2 8 3 1 6 4 7 ¯ 5 2 8 3 1 6 4 ¯ 7 5 ¯ ¯ ¯ 2 8 3 1 ¯ 4 7 6 5 2 8 3 ¯ 1 4 7 6 5 2 8 3 1 6 4 7 5 ¯ 2 ¯ 3 1 8 4 7 6 5 2 8 3 1 4 ¯ 7 6 5 ¯ ¯ ¯ ¯ 2 3 1 8 4 7 6 5 ¯ ¯ ¯ 2 3 ¯ 1 8 4 7 6 5 1 2 3 ¯ 8 4 7 6 5 1 2 3 8 ¯ 4 7 6 5 ¯ ¯ ¯ 2 3 4 1 8 ¯ 7 6 5 1 2 3 7 8 4 ¯ 6 5 Der Lösungspfad ist fettgedruckt. Bei einer konkreten Anwendung ist im allgemeinen der Graph implizit gegeben, z.B. durch die Geometrie der Räume, in denen der Roboter sich bewegen soll. Wird der Roboter in eine Startmarke gesetzt mit dem Auftrag, sich zu einer Zielmarke zu bewegen, dann hat er zunächst nur die Möglichkeit, zu einer der momentan sichtbaren Landmarken zu gehen. Die eingeschlagenen Wege allerdings wird er in einem Suchbaum protokollieren. D.h., daß der Suchbaum zur Laufzeit generiert wird. Nun gibt es aber verschiedene Strategien, den 17 Wissensbasierte Systeme I Suchbaum zu generieren. Im folgenden wollen wir zunächst die sogenannte Breitensuche und die Tiefensuche vorstellen und diskutieren. Breitensuche Wir abstrahieren nun von dem Beispiel der Wegsuche eines Roboters in einem Raum mit Hindernissen. Es sei nun ein Graph gegeben z.B als Liste von Knoten und einer Funktion, die zu jedem Knoten eine Liste seiner Nachbarknoten liefert. Außerdem sei ein Startknoten S und ein Zielknoten Z ausgezeichnet. Der Suchbaum wird nun schichtenweiseˆerzeugt, d.h., daß stets sämtliche Nachfolger von Knoten einer Schicht erzeugt werden bevor weitere Knoten erzeugt werden. Die erste Schicht besteht nur aus dem Startknoten. Diese Strategie nennen wir Breitensuche. Wir veranschaulichen diese Methode durch folgende Graphik und definieren anschließend eine Prozedur, die die Breitensuche implementiert. 18 Wissensbasierte Systeme I Erzeugung des Suchbaums mit Breitensuche: S D A C E D E A D B B E F B F Z C Z C F B E A C Z F Z Prozedur Breitensuche Eingabe: Graph G, Start S, Ziel Z. 1. Initialisiere Liste L von Baumknoten. L enthält nur den Startknoten S. Solange Ende noch nicht erreicht ist, wiederhole: 2. Setze P := erstes Element von L. Prüfe, ob P ein Zielknoten Z ist. Falls ja, Ende. Prüfe, ob L leer ist. Falls ja, Ende. Lösche erstes Element in L. (a) füge alle Nachbarn von P (im Graphen) ans Ende von L an. (b) Lösche diejenigen neuen Knoten am Ende von L, die Pfade mit Schleifen darstellen. Ist L beim Ende des Algorithmus leer, ohne daß die Zielbedingung erreicht wurde, dann gibt es keinen Pfad von S nach Z. Wenn umgekehrt es einen Weg vom Startknoten zum Zielknoten gibt, dann wird er gefunden. Die Breitensuche ist also in diesem Sinne vollständig. Die obige Prozedur Breitensuche enthält noch keine Operationen zum Aufbau des Suchbaums. Der Suchbaum muß während der Suche aufgebaut/gespeichert werden. Wenn für jeden Baumknoten dessen unmittelbarer Vorgänger gespeichert wird, dann ist die Berechnung des Pfades möglich, der zu einem erreichten Knoten führt. Die Berechnung diese Pfades ist notwendig zur Erkennung von Schleifen. Dies ist der Sinn von 19 Wissensbasierte Systeme I Schritt 2 b, Erkennen (Löschen) von Pfaden mit Schleifen:. Zur Vermeidung von Schleifen muß P aus der Liste L gelöscht werden, wenn in dem Pfad zu P bereits ein Baumknoten enthalten ist, die gleiche Bezeichnung trägt. Bei ungewichteten Graphen (das sind Graphen, in denen bei der Längenberechnung der Pfade alle Kanten mit dem gleichen Gewicht, z.B. der Länge 1 eingehen) erhält man mit obiger Prozedur auch einen minimalen (in der Länge kürzesten) Weg zum Zielknoten! Die Ergebnisliste E enthält beim Ende des Algorithmus offensichtlich alle Baumknoten, die Pfade zum Ziel darstellen. Falls nun die Gewichtung der Kanten im Graphen als sogenannte Kostenfunktion vorliegt, können die Kostenˆ (Gewicht, Länge) jedes Ergebnispfades berechnet und der kostengünstigste Pfad ausgewählt werden. Das Verfahren ist aber sehr ineffizient. Tiefensuche Die Breitensuche wird dann problematisch, wenn die Knoten hinreichend oft mehrere Nachfolgeknoten haben und der gesuchte Knoten in einer tiefen Schicht liegt, denn die Suchtiefeˆ wächst nur logarithmisch mit der Knotenzahl (beim vollständigen Binärbaum). Hier ist die Tiefensuche eine Alternative zur Breitensuche. Die Tiefensuche wird in dem folgendem Bild veranschaulicht. Erzeugung des Suchbaums mit Tiefensuche: S D A C E D E A D B B E F B F Z C Z C F B E A C Z F Z Bei gleichem Aufwand erreicht man unter Umständen eine größere Suchtiefe. Der Nachteil der Tiefensuche ist das Problem, daß sich i.a. die Tiefensuche bei unendlichen Graphen im falschen Ast verläuft und dann nicht terminiert. Man beschränkt deshalb häufig die 20 Wissensbasierte Systeme I Tiefensuche auf eine maximale Suchtiefe. Wird die maximale Suchtiefe erreicht, dann erfolgt ein Rücksprung im Baum (Backtrackingˆ) Prozedur Tiefensuche (ohne Backtracking): 1. Inititialisiere Liste L. L enthält nur S. Solange Ende noch nicht erreicht, wiederhole 2. Setze P := erstes Element von L. Prüfe, ob P gleich Z ist. Falls ja, Ende. Prüfe, ob L leer ist. Falls ja, Ende. Lösche erstes Element in L. (a) füge alle Nachbarn von P (im Graphen) an den Anfang von L an. (b) Lösche die neuen Knoten, die Pfade mit Schleifen darstellen. Die Tiefensuche beim Puzzleproblem sieht mit Backtracking wie folgt aus. Die Regeln werden in festgelegter Reihenfolge links, oben, rechts, unten angewendet. Durchgestrichene Stellungen bedeuten Schleifen. Man erhält keine Lösung falls die Suchtiefe zu gering gewählt wurde. Die beiden Methoden der Breiten−bzw. Tiefensuche unterscheiden sich in der Reihenfolge, in der die Knoten des Suchbaums expandiertˆwerden. Unter Expansion eines Knotens versteht man die Erzeugung der Liste der Nachfolger dieses Knotens. Im folgenden wird es vor allem um weitere Strategien gehen, die die Reihenfolge der Expansion von Baumknoten beeinflussen. Gradientenmethode (Hill−Climbing) Die Gradientenmethode befolgt eine einfache Heuristik: ’Nimm die Regel, die Dich dem Ziel am nächsten bringt.’ Falls eine Abstandsfunktion für Stellungen definiert ist, kann diese Heuristik wie folgt formuliert werden. 21 Wissensbasierte Systeme I Von Stellung P aus gehe zu P’, wenn Abstand (P’,Z) minimal unter den Nachfolgern von P ist. Prozedur Hill−Climbing Eingabe: Graph G, Start S, Zielknoten Z. 1. Initialisiere Liste L von Baumknoten. L enthält nur den Startknoten S. Solange Ende noch nicht erreicht, wiederhole: 2. Setze P := erstes Element von L. Prüfe, ob P gleich Z ist. Falls ja, Ende. Prüfe, ob L leer ist. Falls ja, Ende. Lösche erstes Element in L. (a) füge alle Nachbarn von P an den Anfang von L an. Sortiere die neuen Knoten nach geschätztem Abstand zum Ziel. (b) Lösche die neuen Knoten, die Pfade mit Schleifen darstellen. In dem Puzzle−Beispiel gibt es stets mehrere anwendbare Regeln in jeder Stellung, da das Leerfeld in bis zu vier Richtungen verschiebbar ist. Man könnte nun den Abstand definieren als Anzahl von Ziffern, die nach Verschiebung am falschen Platz sind. Falls das Ziel erreicht ist, hat der Abstand den Wert Null. Das folgende Bild zeigt eine Berechnungssequenz (der Abstand wird hier negativ gemessen). −4 −3 2 8 3 2 1 6 4 1 7 5 7 0 8 6 −3 3 2 4 1 5 −1 1 2 3 8 4 7 6 5 1 7 3 8 4 7 6 5 −2 2 8 3 4 2 3 1 8 4 6 5 7 6 5 Wir vergleichen die Methode der Breitensuche mit der Methode Hill−Climbing in dem schon betrachteten Beispiel der kollisionsfreien Bewegung eines Roboters. In dem entsprechenden Graphen versehen wir dazu die Knoten mit Entfernungsangaben zum Zielknoten. 22 Wissensbasierte Systeme I Vergleich: Hill−Climbing <−> Breitensuche A 3 B C 2 1 S Z D F E 3 2 1 Breitensuche: 22 Knoten werden expandiert, bis Z erreicht wird (siehe Suchbaum). Hill−Climbing (Betrachte L nach jedem Durchlauf von Schritt 2 in Alg. Hill−Climbing): (S), (A,D), (B,D), (C,D), (D), (E), (F), (Z) Ergebnis: 7 Expansionen. (Beachte: Bei Expansion von A wird D nicht erneut generiert, da eine Schleife entstehen würde.) Die Methode Hill−Climbing ist auch für kontinuierliche Suchräume anwendbar, beispielweise bei der Suche nach geeigneten Parameterwerten zur Einstellung eines Reglers bei k (unabhängigen) Parametern (k−dimensionaler Suchraum). Wie im diskreten Fall können in kontinuierlichen Suchräumen Sackgassen auftreten, die dann die Gestalt von lokalenMinimaˆ haben. Deshalb wird der Algorithmus im Fall kontinuierlicher Suchräume häufig mit zufallsgestützter Suche kombiniert. Wird eine Sackgasse erkannt, so wird eine zufällige Folge von Zügen ausgeführt, um aus der Sackgasse herauszukommen. Variante von Hill−Climbing: Best First Die Rechtfertigung der Hill−Climbing−Methode liegt darin, daß in jedem Graphen durch die kürzesten Pfade ein Abstand (Pseudometrik) gegeben ist, bezüglich dessen diese Methode tatsächlich stets am schnellsten den kürzesten Pfad zum Ziel finden würde. Dieser Abstand aber ist im allgemeinen nicht primär bekannt. Die Anwendung von Heuristik besteht nun gerade darin, einen anderen Abstand zu verwenden, der primär bekannt ist und der dem Abstand der kürzesten Pfade möglichst nahe kommt. Allein die Existenz von Sackgassen beweist allerdings, daß sich dieser gewählte Abstand von dem genannten optimalen Abstand offensichtlich erheblich unterscheiden kann. Beispielsweise kann es vorkommen, daß die nach der Hill−Climbing bestimmten Nachfolger eines Knotens doch tatsächlich und geschätzt weiter vom Ziel entfernt sind, als der expandierte Knoten selbst. In diesem Fall scheint es nicht immer gerechtfertigt, trotzdem einen dieser Nachfolger als nächstes zu expandieren, 23 Wissensbasierte Systeme I sondern einen der schon generierten anderen Knoten in der Liste L zu expandieren, der geschätzt näher am Ziel war, als die neuesten Knoten. Diese Überlegung führt zum Best First Algorithmus, der alte Pfade mitbewertet. (Die Sortierung erfolgt dann über die gesamte Liste L.) Prozedur Best−First Eingabe: Graph G, Start S, Zielknoten Z. 1. Initialisiere Liste L von Baumknoten. L enthält nur den Startknoten S. Solange Ende noch nicht erreicht, wiederhole: 2. Setze P := erstes Element von L. Prüfe, ob P gleich Z ist. Falls ja, Ende. Prüfe, ob L leer ist. Falls ja, Ende. Lösche erstes Element in L. (a) füge alle Nachbarn von P in L ein. Sortiere alle Knoten in L nach geschätzem Abstand zum Ziel (b) Lösche die (neuen) Knoten, die Pfade mit Schleifen darstellen. Den Unterschied von Hill−Climbing und Best−First−Suche zeigt folgendes Beispiel. Beispiel: Graph: B C 6 7 A 2 Z S D 5 Die Nummern bei den Knoten sind heuristische Schätzwerte für deren Abstand zum Ziel. Der Hill−Climbing−Algorithmus expandiert B und C vor D. Er ist dadurch langsamer als der Best−First−Algorithmus. Wir vergleichen dazu L nach jedem Schleifendurchlauf in 2.: 24 Wissensbasierte Systeme I Hill−Climbing im Beispiel: (S), (A, D), (C,B,D), (B, D) (Bei Expansion von B, lösche C, da Schleife), (D), (Z) Best−First im Beispiel: (S), (A, D), (D,C,B), (Z,C,B) Best First ist aber nicht generell besserˆals Hill−Climbing. Das folgende Gegenbeispiel zeigt einen Graph, für den Best−First mehr Knoten expandiert als Hill−Climbing. Gegenbeispiel: S A C 2 B 4 D 3 1 E 1 0 Z Gegenüberstellung: Hill−Climbing Best−First (S) (S) (A, B) (A,B) (C,B) (B, C) (Z,B) (D,E,C) (E,C) (C) (Z) Eine weitere Variante der Breitensuche ist die Strahlensuche, die wie die Breitensuche abläuft mit dem Unterschied, daß nur die m ’besten’ Knoten in L eingefügt werden. Übersicht: 25 Wissensbasierte Systeme I Strahlensuche Nicht−Det. Suche Hill−Climbing Breitensuche Tiefensuche Nicht informiert Best−First Heuristische Verfahren Einfache Suchverfahren Suche optimaler Wege Während bisher die grundsätzliche Erreichbarkeit eines Zielknotens im Vordergrund stand, wenden wir uns nun der Suche nach in gewissen Sinne kürzestenˆWegen zu einem Ziel zu. Wir betrachten dazu gewichtete Graphen, d.h. Graphen, bei denen den Kanten ein Gewicht zugeordnet ist (beispielweise die Länge der Kanten). Die Weglänge oder Pfadlänge ist hier die Summe der Gewichte der Kanten, die in dem Weg (Pfad) beschritten werden. Die Weglänge in ungewichteten Graphen kann man als den Spezialfall ansehen, wo jede Kante das Gewicht 1 hat. Ein optimaler Weg von Knoten A nach Knoten B ist derjenige unter allen A und B verbindenden Wegen, der eine kürzeste (gewichtete) Länge hat. Die Optimalität ist hier im Hinblick auf Weglänge zu sehen und nicht auf Laufzeit (oder minimale Zahl expandierter Knoten). Allgemeiner kann man fragen nach einem optimalen Weg von einem Knoten A zu mindestens einem Zielknoten aus einer gegebenen Menge von Zielknoten. Definition: Ein Suchverfahren heißt zulässig, falls es immer den kürzesten Weg liefert, sofern dieser existiert. Satz: Die Breitensuche ist zulässig für ungewichtete endliche Graphen. Beweis: Terminierung: Die Breitensuche erzeugt einen Suchbaum, in dem jeder Baumknoten einem schleifenfreien Pfad entspricht. Zwei verschiedene Baumknoten entsprechen dabei verschiedenen Pfade. Da in einem endlichen Graphen nur endlich viele verschiedene schleifenfreie Pfade existieren, ist der Suchbaum endlich. Also muß der Algorithmus terminieren, auch wenn kein Pfad zum Ziel führt. Kürzester Pfad: Sei X ein Baumknoten. Dann bezeichnen wir die Tiefe von X im Suchbaum mit T(X). X entspricht einem Pfad im Graphen der Länge T(X). In L sind zu jedem Zeitpunkt nur zwei verschiedene Arten von Knoten: k Knoten mit T(X) = s und k’ Knoten mit T(X) = 26 Wissensbasierte Systeme I s+1 (für geeignetes s. k oder k’ können 0 sein). Alle Knoten mit T(X) = s stehen vor allen Knoten mit T(X) = s + 1. Bevor Knoten mit T(X) = s + 1 expandiert werden, sind alle Knoten mit T(X) = s expandiert worden. D.h., daß alle Pfade mit Länge s vor Pfaden mit Länge s+1 betrachtet werden. Somit wird ein kürzester Pfad zum Ziel sicherlich vor längeren Pfaden betrachtet. Der erste kürzeste Pfad, der gefunden wird führt zum Ende des Algorithmus. Tiefensuche, Hill−Climbing und auch Best−First für ungewichtete Graphen sind nicht notwendigerweise zulässig. Für die Suche nach kürzesten Wegen in gewichteten Graphen haben wir bereits die Modifizierte Breitensuche kennengelernt. Dieses Verfahren ist allerdings offensichtlich ineffizient, weil der Algorithmus erst abbricht, wenn der vollständige Suchbaum aller Pfade (vom Start zum Ziel) in einem Graphen erzeugt worden ist. Wir stellen nun effiziente Verfahren für die Suche nach kürzesten Wegen in gewichteten Graphen vor. Definition: Sei X ein Baumknoten. Dann bezeichnen wir mit g(X) die Summe der Kantengewichte, ausgehend von S, entlang des durch X dargestellten Pfades im Graphen. Betrachten wir zunächst den folgenden Graphen (Bild) mit gewichteten Kanten. Die Zielknoten seien ZF und ZR. Zu ZR führt ein optimaler Pfad. S 9 7 ZF ZR Dieses Beispiel zeigt, daß eine (unmodifizierte) Breitensuche (Breitensuche ohne g−Funktion) bei gewichteten Graphen nicht zulässig ist. Diese würde den Knoten ZF als Ergebnis liefern, weil ZF zuerst in die Liste L eingetragen wird. Optimal ist aber nur ZR. ZR würde allerdings dann als Ziel erkannt werden, wenn die (ganze) Liste L der zu expandierenden Baumknoten nach jedem Schleifendurchlauf nach aufsteigendem g−Wert sortiert wird. Dieser Gedanke liegt dem folgenden Algorithmus zugrunde. 27 Wissensbasierte Systeme I Prozedur B1 (Branch−and−Bound) 1. Initialisiere L := [S]. Solange Ende noch nicht erreicht, wiederhole: 2. P := erstes Element von L. Falls P Zielknoten oder L leer, Ende. Lösche erstes Element in L. (a) Expandiere P, das liefert Knoten X1,...,Xn. (b) Lösche Schleifen. (c) Berechne g(Xi) für i = 1,...,n. Füge X1,...,Xn so in L ein, daß L nach aufsteigendem Wert von g sortiert ist. Bevor wir die Zulässigkeit des Branch−and−Bound Algorithmus beweisen, wollen wir in einigen Fallbeispielen mögliche Berechnungssequenzen aufzeigen. Fall1: L = (R, F) S 10 9 F R 7 7 ZF ZR ZR wird zuerst expandiert, d.h. der richtige Zielknoten wird ausgegeben. Fall 2: L= (F, R) S 9 F R 6 ZR 28 8 8 ZF Wissensbasierte Systeme I Warum findet B1 auch in diesem Fall den ’richtigen’ Zielknoten ZR ? Der Grund ist: Es gilt g(R) < g(ZF). Wegen g(R) < g(ZF) wird R expandiert, bevor die Zielbedingung für ZF geprüft wird. Fall 3: L = (R1, F) S 9 R1 3 R2 10 F 8 4 ZR ZF In diesem Fall wird F expandiert bevor R2 expandiert wird, d.h., daß tatsächlich das Ziel ZF in der Liste L steht bevor das optimale Ziel ZR in der Liste steht. Dies führt aber nicht zum Abbruch des Algorithmus, weil das erste Listenelement zu diesem Zeitpunkt immer noch R2 ist. Damit wird zunächst R2 expandiert, wodurch ZR nun in die Liste kommt, und zwar wegen der Sortierung nach g−Werten sogar an die erste Stelle. Damit wird ZR erkannt und der Algorithmus wird mit dem gewünschten Ergebnis abgebrochen. Feststellung: Gelte g(X) < g(Y) für irgendwelche Baumknoten X, Y. Dann wird − X expandiert, bevor die Zielbedingung für Y ausgewertet wird und − die Zielbedingung wird zuerst für X, dann für Y ausgewertet. − die Suche endet erst, wenn ein Zielknoten Z erreicht wurde und alle noch in L liegenden Pfade einen höheren g−Wert haben als Z. Satz: B1 ist zulässig. Beweis: Sei S=X1,...,Xk ein kürzester Weg von S zu irgend einem optimalen Zielknoten Z=Xk. Unterbehauptung: Zu jedem Zeitpunkt liegt wenigstens einer der Knoten X1,..., Xk in L. Dies gilt sicherlich zum Startzeitpunkt. Wenn zu einem anderen Zeitpunkt ein Xi eines kürzesten Weges nach Z, das in der Liste L ist, bearbeitet wird, dann ist Xi entweder selbst der Zielknoten und der Algorithmus endet. Andernfalls wird Xi sicher danach expandiert und es ist somit jeder Nachfolger von Xi in der Liste, also auch der Nachfolger X(i+1). Daraus folgt die Unterbehauptung. 29 Wissensbasierte Systeme I Angenommen nun, der Algorithmus prüft die Zielbedingung für einen falschen (nicht− optimalen) Zielknoten ZF. Zu diesem Zeitpunkt liege Xi in L. Dann gilt g(ZF) > g(Z). Damit folgt g(Xi) <= g(Z) < g(ZF). Da L aber sortiert wurde, bevor die Zielbedingung für ZF ausgewertet wird, kann ZF nicht vorne stehen wegen g(Xi) < g(ZF). Widerspruch! Daraus folgt der Satz. Datenstrukturen für Branch−and−Bound Neben einer Liste L mit entsprechenden Listenoperationen benötigt der Algorithmus den Zugriff auf alle bereits expandierten Baumknoten, um entscheiden zu können, ob bei Expansion eines Knotens eine Schleife entsteht und demzufolge ein neuer Nachfolger wieder aus der Liste gelöscht werden muß. Da diese Knoten i.a. nicht mehr in der Liste L stehen, muß der Suchbaum gesondert repräsentiert werden. Dies kann durch eine rückwärts verzeigerte Liste SL geschehen, für die einige Grundoperationen zur Verfügung stehen müssen. Operationen für Liste L: Löschen des ersten Knotens Anfügen neuer Knoten ans Ende von L Sortieren Liste SL: Rückwärts verzeigert. Operationen für SL: Zurückverfolgen eines Pfads mit Test, ob Knoten in der Zeigerkette Einfügen neuer Knoten Die Beziehung zwischen Suchbaum und der Datenstruktur SL werden verdeutlicht in der folgenden Graphik. Suchbaum: Liste SL: S A S D 4 B D 7 8 30 A D B D ... Wissensbasierte Systeme I Der Branch−and−Bound−Algorithmus konnte als Modifikation der Breitensuche aufgefaßt werden. Wir betrachten nun eine zweite Modifikation der Breitensuche, die zunächst die Verkleinerung der Liste L zum Ziel hat. Die Liste L kann nämlich mehrere verschiedene Baumknoten enthalten, die lediglich verschiedene Pfade zu ein und demselben Graphknoten darstellen, d.h. mit dem gleichen Graphknoten markiert sind. Für die Suche nach kürzesten Pfaden sind aber nur diejenigen Pfade zu einem Graphknoten X von Bedeutung, die einen kürzesten Pfad zu X darstellen, denn Teilpfade eines optimalen Pfades (z.B. eines optimalen Zielpfades) sind auch optimal (Prinzip der dynamischen Programmierung). Prinzip der ’Dynamische Programmierung’ Teilpfade eines optimalen Pfads sind auch optimal. Anwendung im Branch−and−Bound Verfahren: Stellen zwei Pfade den gleichen Zustand (Graphknoten) dar, behalte nur den (Baum−)knoten mit geringerem Gewicht g. 31 Wissensbasierte Systeme I Prozedur B2 (Branch−and−Bound mit ’dynamischer Programmierung’) 1. L := (S). Wiederhole bis Ende: 2. P := erstes Element von L. Falls Zielbedingung (P) oder Leer (L) Ende. Lösche erstes Element in L. (a) Expandiere P, liefert X1,...,Xn. (b) Lösche Pfade mit Schleifen. (c) Berechne g(Xi) für i = 1,...,n. Füge X1,...,Xn in L ein, falls nicht in (b) gelöscht. Sortiere L nach g. (d) Lösche neue Knoten in der Liste L, falls deren Markierung im Suchbaum schon vorher bei einem Knoten aufgetreten sind, und einen niedrigeren g−Wert haben. Lösche gegebenenfalls diese vorherigen Knoten aus dem Suchbaum, falls nämlich ein neuer Knoten einen niedrigeren g−Wert hat. Die Löschoperationen in (d) scheinen auf den ersten Blick nicht ganz unproblematisch. Was bedeutet es, einen Knoten aus dem Suchbaum zu löschen? Falls der Knoten in der Liste L steht, ist diese Operation klar. Was aber muß man tun, wenn der Knoten bereits expandiert wurde? Muß man dann alle Nachfolger dieses Knotens in der Liste Löschen? Tatsächlich kann, wie wir bei der Diskussion der benötigten Datenstrukturen sehen werden, dieser Fall nicht eintreten und die Anweisung kann wie folgt ausgeführt werden: (d´) ... Lösche gegebenenfalls diese vorherigen Knoten aus Liste L, falls nämlich ein neuer Knoten einen niedrigeren g−Wert hat. Zunächst aber beweisen wir den wichtigen Satz: B2 ist zulässig für endliche Graphen. Beweis: Sei S = X1,...,Xn ein optimaler Pfad zu einem Ziel. Unterbehauptung: ’Zu jedem Zeitpunkt’ liegt einer der Knoten Xi in L. 32 Wissensbasierte Systeme I (’Zu jedem Zeitpunkt’ heißt hier: Immer, wenn Ende−Bedingung berechnet wird.) Sei U ein neuer Baumknoten und es gelte: Xi und U stellen den gleichen Graphknoten dar. Fall 1: g(Xi) <= g(U). Dann wird nur U gelöscht, und Xi bleibt in L. Die Unterbehauptung gilt also. Fall 2: g(U) < g(Xi). Tatsächlich ist dieser Fall gar nicht möglich, denn dann der Pfad X1,...Xn kein optimaler Pfad wie folgende Überlegung zeigt. Sei S = U1,...,Uk = U Pfad zu U im Graphen. Wir verwenden folgende Notation: Falls A, B direkt verbunden, sei w(A, B) := Gewicht der Graphkante von A nach B. Dann gilt g(Xi) = w(X1,X2) + ... + w(Xi−1,Xi) > w(U1, U2) + ... + w(Uk−1,Uk) = g(U). Dann ist aber w(X1,X2) + ... + w(Xn−1,Xn) = w(X1,X2) + ... + w(Xi−1,Xi) + w(Xi,Xi+1) + ... + w(Xn−1,Xn) > w(U1,U2) + ... + w(Uk−1,Uk) + w(Xi,Xi+1) + ... + w(Xn−1,Xn), d.h. X1,...,Xn nicht optimal. Der Satz folgt nun leicht. Das folgende Beispiel zeigt einige Schritte des Algorithmus. Beispiel 1: Pfade b, b’ zu Knoten B mit g(b) < g(b´). Fall 1: b wird zuerst gefunden. b = (S, D, B), b’ = (S, A, B). 33 Wissensbasierte Systeme I A 5 S 9 4 D B 4 S A 5 D 4 S S A A D D 5 B B B 8 14 8 Fall 2: b’ wird zuerst gefunden. b’ = (S, A, B), b = (S, D, B). 34 Wissensbasierte Systeme I 3 A S 9 4 D B 4 Branch−and−Bound mit dynamischer Programmierung expandiert nie mehr Knoten als Branch−and−Bound allein, häufig weniger. 35 Wissensbasierte Systeme I Beispiel 2: 4 A 4 B C 3 5 S 5 Z 4 3 E D F 4 2 Schritt 1: S A D 3 4 Schritt 2: Der zweite mit D markierte Knoten wird gelöscht. S A D 4 B D 8 7 Schritt 3: S A D B D 8 7 A E 9 6 Schritt 4: S A B 7 D D 8 36 A 6 E 9 B F 11 10 Wissensbasierte Systeme I Schritt 5: S A 7 B D D 8 C E 11 12 A 6 E 9 B F 11 10 Schritt 6: Ohne dynamische Programmierung würde jetzt der gelöschte Knoten D (mit g− Wert 8) expandiert. Überflüssig! Mit dynamischer Programmierung wird stattdessen F expandiert, dies liefert den Pfad S−D−E−F−Z. Datenstruktur für Suchbaum bei dynamischer Programmierung Wir kommen nun noch einmal zurück auf die Löschoperation in (d) bzw. (d´). Für (d) benötigen wir die folgende zusätzliche Operation auf dem Suchbaum bzw. der Liste SL: Prüfe, ob Knoten nicht nur in der Zeigerkette zum Startknoten (Schleife?), sondern im ganzen bisher expandierten Baum schon vorhanden ist. Diese Operation muß dann ausgeführt werden, wenn eine Expansion einen Knoten b liefert mit einem g−Wert g(b) < g(b´), wo b´ ein schon erzeugter Knoten des Suchbaums ist. Falls nun b´ bereits expandiert ist, dann müssen alle Nachfolger von b´ in der Liste L gefunden und mit b´ ebenfalls gelöscht oder umgekettet werden. Die folgende Behauptung zeigt, daß der letztere Fall nicht eintreten kann mit der Konsequenz, daß die Datenstruktur für den Suchbaum nicht mit einer Vorwärtsverzeigerung ausgestattet werden muß. Die Rückwärtsverzeigerung der Liste SL reicht aus. Behauptung: B2 expandiert nie einen sub−optimalen Knoten.Wir präzisieren wie folgt: Sei b = (S=X1,..., Xk=B) ein optimaler Pfad zu einem Knoten B und b’ = (S=Y1,..., Ym=B) ein weiterer Pfad zu Graphknoten B, sodaß g(b) < g(b’). Dann werden nie die Nachfolger von b’ erzeugt. Beweis: Angenommen Branch−and−Bound mit dynamischer Programmierung expandiert b’. Zu diesem Zeitpunkt liege Xi in L. 37 Wissensbasierte Systeme I Dann gilt: g(Xi) < g(b) < g(b’). −> Behauptung. Der A*−Algorithmus Die Überlegung, die uns von den einfachen Algorithmen der Breiten− bzw. Tiefensuche bei ungewichteten Graphen zur Gradientenmethode geführt hat, kann analog auch ausgehend von den Algorithmen für gewichtete Graphen erfolgreich versucht werden. Wieder ist das Problem, die kürzesten Wege in einem gewichteten Graphen zu finden. Nun aber nehmen wir an, daß uns eine heuristische Überlegung, z.B. aus den Gegebenheiten eines Modells heraus, eine plausible Abschätzung h(X) der tatsächlichen Kosten (=minimale Pfadlänge) jedes Knotens X zu einem Zielknoten Z (oder einer Menge von Zielknoten) zur Verfügung steht. Wir betrachten also eine zusätzliche Schätzfunktion h, wobei h(X) = `geschätztes Gewicht des kürzesten Weges von X zum nächsten Zielknoten´. Bemerkung: Wir müssen im weiteren stets im Auge behalten, daß h keine Funktion auf der Menge der Baumknoten (=Pfade im Graphen), sondern auf der Menge der Graphknoten ist. Wenn wir trotzdem die Funktion h auch auf Baumknoten anwenden, ohne die Schreibweise für h zu ändern, dann ist das so zu verstehen, daß h auf den einem Baumknoten eindeutig (als Endpunkt des Pfades) zugeordneten Graphknoten angewandt wird. Dies ist wesentlich zum Verständnis dieses Abschnitts. Damit haben wir zwei Maße zur Bewertung von Baumknoten X zur Verfügung, nämlich einmal den tatsächlichen, bezüglich eines bestimmten Pfades gemessenen Abstand g(X) von X zum Startknoten und zum anderen den geschätzten Abstand h(X) von X zum nächsten Zielknoten. Liegt X auf dem kürzesten Weg vom Startknoten zum nächsten Zielknoten und wäre h tatsächlich exakt, dann wäre f(X) = g(X) + h(X) gleich der Länge des kürzesten Weges vom Startknoten zum Zielknoten. Für einen Nachfolger Y von X , der vom rechten Wegˆ (kürzesten Weg) zum Ziel abweicht, würde gelten f(Y) > f(X) und für die richtigenˆ Nachfolger von X (die also auf dem kürzesten Weg bleiben) ergäbe f ein Minimum. Dies Überlegung legt nahe, die Bewertungsfunktion f für Baumknoten X zu definieren als f(X) = g(X) + h(X). 38 Wissensbasierte Systeme I Prozedur A* : 1. L := (S). Wiederhole bis Ende: 2. P := erstes Element von L. Falls Zielbedingung(P) oder Leer(L) Ende. Lösche erstes Element in L. (a) Expandiere P, liefert X1,...,Xn. (b) Lösche Pfade mit Schleifen (c) Berechne f(Xi) = g(Xi) + h(Xi) für i = 1,...,n. Füge X1,...,Xn in L ein. Sortiere L nach f. (d) Lösche neue Knoten aus der Liste L, die im Suchbaum schon vorher aufgetreten sind, falls vorheriger Knoten niedrigeren g−Wert hat. Falls neuer Knoten niedrigeren g−Wert hat, aktualisiere Nachfolger des vorherigen Knotens, und lösche vorherigen Knoten. Die Aktualisierung der Nachfolger eines gelöschten Baumknotens in (d) ist notwendig, wenn dieser Knoten bereits expandiert worden ist. Dann müssen diese Nachfolger in der Liste L ebenfalls gelöscht werden. Leider hat der A*−Algorithmus nicht die schöne Eigenschaft des Branch−and−Bound mit dynamischer Programmierung, daß nämlich sub−optimale Knoten nicht expandiert werden. Dies hat zur Folge, daß die Datenstruktur des Suchbaums neben der Rückverzeigerung auch eine Struktur für eine effiziente Nachfolgerberechnung enthalten muß. Der A*−Algorithmus kann zu einer Reduktion der Anzahl expandierter Knoten führen, wie das folgende Beispiel zeigt. 39 Wissensbasierte Systeme I Beispiel: Einfaches Branch−and−Bound versus B−and−B mit h−Funktion, d.h. A* ohne dynamische Programmierung. 4 A 4 B C 3 5 S 5 Z 4 3 E D F 4 2 A B 10.4 C 6.7 4.0 11.0 S Z 8.9 E D 3.0 6.9 F Schritt 1 (Mit h−Funktion): S A D 12.9 13.4 Schritt 2: S A D 13.4 Schritt 3: 40 A E 19.4 12.9 Wissensbasierte Systeme I S A D 13.4 E A 19.4 B F 17.7 13.0 Schritt 4: F ist jetzt Knoten mit günstigstem f−Wert wird zuerst expandiert und liefert Z. Branch−and−Bound alleine hätte zuerst A (mit Nachfolger B, D) expandiert. Wir beweisen nun die Zulässigkeit von A*. Bezeichne h*(X) für einen Knoten X die tatsächlichen Kosten des kürzesten Weges zu irgend einem Zielknoten. h* ist natürlich i.a. unbekannt. A* benutzt heuristisch eine Schätzfunktion h. Trotzdem ist A* zulässig (siehe nachfolgenden Satz), falls gilt h(X) <= h*(X) für alle X. Falls diese Bedingung verletzt ist, gilt nicht notwendigerweise, daß A* zulässig ist, wie das folgende Beispiel zeigt. Beispiel 1: A* findet kürzesten Weg nicht, weil h ungünstig gewählt wurde. h=99 A 2 1 Z S h=0 1 3 B h=1 S−A−Z ist kürzester Weg, aber ausgegeben wird S−B−Z. Beachte: hier gilt nicht h<=h*. Beispiel 2: wie Beispiel 1, aber ’verbesserte’ h−Funktion. 41 Wissensbasierte Systeme I Der Knoten A liegt zwar auf dem richtigem (opt.) Weg, hat aber einen schlechteren h−Wert (und schlechteren f−Wert!) als Knoten B. Trotzdem wird hier der optimale Weg gefunden, da h <= h* überall gilt. h=2 A 2 1 Z S h=0 1 3 B h=1 Zusätzlich zu den Funktionen f, g, h und h* führen wir nun Funktionen f*, g* ein. Sei f*(X) := tatsächliche Kosten des kürzesten Wegs von S über X zu irgend einem Zielknoten. g*(X) := tatsächliche Kosten des kürzesten Wegs zwischen S und X. Im Unterschied zu f (Funktion auf Baumknoten) ist f* zunächst eine Funktion auf Graphknoten. Dies gilt auch für g und g*. f*(S) gibt die Kosten eines überhaupt kürzesten Wegs von S zu irgend einem Zielknoten im Graphen an. Man beachte den Unterschied zwischen g und g*, aber auch den zwischen f* und h*: h*(X) gibt nur die tatsächlichen Kosten von X aus(!) zum nächsten Zielknoten im Graphen an. Hier einige Eigenschaften dieser Funktionen: (1) g*(X) <= g(X), für alle (Graph− bzw. Baum−) Knoten X (2) für einen optimalen Pfad ZR gilt g(ZR) = f*(S) (3) Liegt X auf einem optimalem Pfad, dann gilt g*(X) = g(X) (4) f*(X) = g*(X) + h*(X). 42 Wissensbasierte Systeme I (Übung: Beweise Eigenschaften (1) − (4)! Beachte, daß die Anwendung der *−Funktionen auf Baumknoten eine (kanonische) Abbildung von Baum− in Graphknoten voraussetzen!) Satz: Falls h(X) <= h*(X) für alle X, dann ist A* zulässig. Beweis: Sei (S=X1,...,Xk = Z) ein kürzester Weg von S zu irgend einem Zielknoten Z. Unterbehauptung 1: Zu ’jedem Zeitpunkt’ liegt wenigstens ein Knoten X1,...,Xk in L. (Beweis von Unterbehauptung 1 wie bei Branch−and−Bound Verfahren). Wir nehmen nun an, daß das Verfahren die Zielbedingung für einen falschen (nicht− optimalen) Zielknoten ZF prüft. Zu diesem Zeitpunkt liege Xi in L. Da ZF Zielknoten ist, gilt h(ZF) = 0. Damit erhalten wir f(ZF) = g(ZF). Da ZF nicht optimal ist, gilt g(ZF) > f*(S), also f(ZF) > f*(S). Unterbehauptung 2: f(Xi) <= f*(S). Mit dieser Unterbehauptung 2 schließt man weiter, daß f(Xi) < f(ZF) gilt, d.h. Xi wird expandiert bevor die Zielbedingung für ZF geprüft wird, was ein Widerspruch ist. Daraus folgt dann der Satz. Beweis Unterbehauptung 2: f(Xi) = g(Xi) + h(Xi) = g*(Xi) + h(Xi) <= g*(Xi) + h*(Xi) = f*(Xi) = f*(S) (wegen h<= h*) (da Xi auf opt. Pfad liegt). Damit ist die Unterbehauptung und der Satz bewiesen. Gilt nicht h <= h*, oder kann h <= h* für die Anwendung nicht gezeigt werden, so ist nur vom A−Algorithmus die Rede. Für A−Algorithmen gilt der Satz nicht. Wir kommen nun zurück auf das Beispiel des 9er−Puzzles und geben für dieses Beispiel eine zulässige h− Funktion an. Beispiel: Zulässige h−Funktion für 9er−Puzzle. Wir definieren: 43 Wissensbasierte Systeme I g−Funktion: Kosten eines Zuges = 1 (Verschiebung des freien Plättchens um ein Feld) h−Funktion: Anzahl der Plättchen am falschen Platz (ohne freies Plättchen) Zulässigkeit: Sind n Plättchen am falschen Platz, so müssen mindestens noch n Züge ausgeführt werden, also h<= h* für jede beliebige Stellung. Übersicht dynamische Progr. Branch−and−Bound A* zul. Schätzfunktion Breitensuche Informierte Schätzfunktionen Die Effizienz eines A*−Algorithmus hängt wesentlich von der Güte der Schätzfunktion h ab, auf die sich der Algorithmus bezieht. Der Satz über die Zulässigkeit des A*−Algorithmus legt nahe, für h mindestes die Ungleichung h<=h* zu fordern. Definition: Eine Funktion h heißt zulässig, falls für alle X gilt: h(X) <= h*(X). Gilt h = 0, dann ist das von h herrührende A*−Verfahren gleichbedeutend mit einem (`uninformierten´) Branch−and−Bound. Falls h = h* gilt, dann hätte man das bestmögliche A*−Verfahren. `Bestmöglich´ heißt in diesem Zusammenhang, daß die geringste Anzahl von Baumknoten expandiert werden, bis ein Ziel erreicht wird. Von zwei verschiedenen zulässige Schätzfunktionen h1 und h2 ist i.a. diejenige `besser´, die näher an h* gelegen ist. Definition: h2 heißt informierter als h1, falls h2(X) > h1(X) für alle (nicht−terminalen) Knoten. 44 Wissensbasierte Systeme I Man beachte, daß bei zulässigen Funktionen h1< h2 nur für die nicht−terminalen Knoten gelten kann. (Warum?) Definition: Ein Suchbaumknoten X heißt (zu einem gewissen Zeitpunkt) offen, falls X in L liegt. Ein Suchbaum wird zur Laufzeit aufgebaut. L enthält dann jeweils die Blattknoten des momentanen Suchbaums. Die offenen Knoten sind dann also die Blattknoten des Baums zu dem jeweiligen Zeitpunkt. Wir betrachten, wie sich die offenen Knoten zu den expandierten Knoten in jedem Zeitpunkt verhalten: Offener Knoten <−> Expandierter Knoten: − Falls ein Knoten offen ist, sind noch keine Nachfolger erzeugt, der Knoten ist noch nicht expandiert. − Bei Expandierung wird offener Knoten aus L gelöscht Bereits expandierte Knoten werden auch als geschlossene Knoten bezeichnet. Der folgende Satz besagt, daß ein `besser informierter´ Algorithmus auch weniger Knoten expandiert. Satz: Gelte h1(X) < h2(X) für alle Knoten X und seien A1* und A2* die Versionen des A*−Verfahrens mit den Schätzfunktionen h1 bzw. h2. Außerdem seien K1 : die Menge der Knoten, die von A* mit h1 als Schätzfunktion (irgendwann) expandiert werden, und K2 : die Menge der mit h2 ( irgendwann) expandierten Knoten. Dann gilt: K2 ist Teilmenge von K1, d.h. A2* expandiert weniger Knoten als A1* Beweis: Sei h zulässig. Wir beweisen zunächst die Unterbehauptung: Falls Knoten U von A* expandiert wird, gilt f(U) <= f*(S) Beweis der Unterbehauptung: 45 Wissensbasierte Systeme I Zu jedem Zeitpunkt gibt es Knoten X auf einem optimalem Weg. Zum Zeitpunkt, in dem U expandiert wird, sei X0 in L, und X0 liege auf optimalem Weg. Dann gilt: f(U)<= f(X0), da U expandiert wird (Sortierung!). Damit folgt f(U) <= f(X0) = g(X0) + h(X0) = g*(X0) + h(X0) (da X0 auf opt. Weg.) <= g*(X0) + h*(X0) (Zulässigkeit von h) = f*(X0) <= f*(S). (da X0 auf opt. Weg.) −> Unterbehauptung Beweis des Satzes: Sei X ein Baumknoten, der von A2 expandiert wird. Zu zeigen ist: X wird auch von A1 expandiert. Induktion über die Baumtiefe von X: Auf Tiefe 0 liegt nur Startknoten S −> Induktionsanfang. Gelte nun der Satz für Knoten bis Tiefe k ( d.h. A1 expandiert alle Knoten, die auch A2 expandiert, jedenfalls bis Tiefe k) und X stehe auf Tiefe k+1. Nach Induktionsannahme hat A1 alle von A2 expandierten Vorgänger von X auch expandiert. Damit gilt g1(X) <= g2(X). (Warum?) Angenommen, A1 expandiert X nicht.Die Induktionsannahme besagt aber,daß mindestens ein Vorgänger von X durch A1 expandiert wird. D.h., bei Terminierung von A1 liegt X in L. Dann muß bei Terminierung von A1 folgendes gegolten haben: f1(X) >= f*(S). (Warum?) Also g1(X) + h1(X) >= f*(S). Damit g2(X) + h1(X) >= f*(S) (I) Nach Unterbehauptung gilt f2(X) <= f*(S). Damit folgt g2(X) + h2(X) <= f*(S) Aus (I) und (II) folgt f*(S) <= g2(X) + h1(X) ² g2(X) + h2(X) ² f*(S), d.h. statt `<=` gilt sogar überall ’=’. Damit gilt 46 (II) Wissensbasierte Systeme I g2(X) + h1(X) = g2(X) + h2(X) d.h. h1(X) = h2(X), entgegen der Voraussetzung h1 < h2 für alle nichtterminalen X. −> Satz. Bemerkung: A2 ist nur dann ’besser informiert’ als A1, wenn h2(X) > h1(X) für alle Knoten X. Es reicht nicht, wenn nur gilt h2 >= h1 reicht nicht, wie das folgende Beispiel zeigt! Beispiel: S 1 2 h1 = 1 h2 = 1 B 1 Z A2* A1* S S f1 = 2 f2 = 2 Z B Z B f1 = 2 f2 = 2 f1 = 2 f2 = 2 f1 = 2 f2 = 2 L = (Z, B) L = (B, Z) f1 = 2 f1 = 2 f1 = 2 f1 = 2 Im vorausgegangenen Beispiel gilt h1(X) <= h2(X) für alle Knoten X. Trotzdem expandiert A2* Knoten B, und A1* expandiert B nicht! D.h., die Bedingung h1<= h2 reicht nicht, um die Teilmengenbeziehung bezüglich expandierter Knoten nachzuweisen. Für jede Anwendung von A* muß h geeignet definiert werden. Die Zulässigkeit ist i.a. nur garantiert, wenn h<= h*. Damit erhebt sich die Frage, ob diese Bedingung überhaupt in den 47 Wissensbasierte Systeme I Anwendungen leicht sicherzustellen ist, d.h., ob man bei der Wahl von h heuristische Anhaltspunkte für das Gelten dieser Bedingung hat. Tatsächlich hat man für eine große Klasse von Problemen derartige Anhaltspunkte. Wir betrachten dazu eine Euklidische Wegsuche. Das Problem sei beispielsweise, den KürzsterWeg zwischen zwei Punkten auf einer Landkarte˜ zu finden, wobei allerdings die Bewegung auf Straßen eingeschränkt sei. Straßen und Straßenkreuzungen bilden die Kanten bzw. Knoten im Graphen. Die Kantengewichte seien die euklidischen Abstände zwischen Knoten. Wir definieren die h−Funktion: h(X) = d(X, Z), (Luftlinie von X zum Ziel Z) Es gibt hier nur einen Zielknoten im Graphen. Alle tatsächlichen Wege entlang der Straßen sind länger als die Luftlinie, d.h., die Zulässigkeitsbedingung h<=h*ist erfüllt. Monotonierestriktion Wir haben festgestellt, daß das A*−Verfahren i.a. auch nichtoptimale Teilpfade expandiert (d. h.natürlich, zunächst öffnet und später expandiert). Erfüllt allerdings h die im folgenden definierte `Monotonierestriktion´, dann werden nur optimale Pfade expandiert. Definition (Monotonierestriktion): Sei w(V,N) das Gewicht der Kante von V nach N, wobei V ein (direkter) Voränger von N ist. Falls die Funktion h für alle direkt verbundenen Knoten V, N (V ein Vorgänger von N im Suchbaum) die Bedingung h(V) <= h(N) + w(V,N) gilt, dann sagt man, daß h die Monotonierestriktion erfüllt. Beispiel: (Monotonierestriktion beim 9er−Puzzle) Sei h gegeben durch die Anzahl der im Vergleich zur Zielstellung falschplazierten Plättchen im 9er−Puzzle. Die Kosten eines Zuges sei 1, d.h. w(V,N) = 1. Dann ist h(V) <= h(N) + w(V,N), denn h(V) und h(N) können sich höchstens um 1 unterscheiden und w(V,N) >= 1. Satz: Falls h die Monotonierestriktion erfüllt ist, werden in dem zu h gehörigen A*− Verfahren nur 48 Wissensbasierte Systeme I optimale Teilpfade expandiert. Beweis: Sei (S=X0,...,Xk = X) ein optimaler Pfad zu X. S Xl Xl+1 opt. Pfad zu X nicht opt. Pfad zu X X Wir betrachten den Zeitpunkt, in dem X expandiert wird. Zu zeigen ist g*(X) = g(X) in diesem Zeitpunkt, denn dann stellt der Baumknoten X den optimalen Pfad dar. Zu diesem Zeitpunkt sei der Pfad (X0,...,Xk) bis zum Knoten Xl+1 entwickelt, d.h. Xl+1 ist in L, aber noch nicht expandiert. Außerdem sei der (optimale) Teilpfad (X1,...,Xl+1) bekannt. D.h. Xl+1 ist also der Knoten, bis zu dem der optimale Pfad bereits bekannt ist (evtl. gilt sogar Xl+1 = X1, auf jeden Fall wurde ja S expandiert). Da der optimale Pfad bis zu Xl+1 bekannt ist, gilt g(Xl+1) = g*(Xl+1). (I) Diese Gleichung werden zum Beweis der folgenden Unterbehauptung benötigen. Unterbehauptung: f(Xl+1)<= g*(X) + h(X). Aus der Unterbehauptung folgt dann der Satz wie folgt: Es gilt f(X) <= f(Xl+1 ), sonst würde Xl+1 und nicht X expandiert. 49 Wissensbasierte Systeme I Damit gilt f(X) <= f(Xl+1 ) <= g*(X) + h(X). auf Grund der Unterbehauptung. Also g(X) + h(X)<= g*(X) + h(X). Subtrahiere h(X) auf beiden Seiten: g(X) <= g*(X). Da auch umgekehrt gilt g*(X)<= g(X) folgt dann der Satz. Beweis der Unterbehauptung: Die Monotonierestriktion liefert h( Xl+1 ) <= h(Xl+2)+w(Xl+1, Xl+2) Addiere g*(Xl+1 ) auf beiden Seiten: g*(Xl+1)+h( Xl+1) <= g*(Xl+1)+h(Xl+2)+w(Xl+1, Xl+2) Andererseits, da Xl+1 und Xl+2 auf opt. Pfad liegen: g*(Xl+2) = g*(Xl+1 ) + w(Xl+1 , Xl+2 ) Einsetzen in vorige Gleichung liefert g*(Xl+1)+h( Xl+1) <= g*(Xl+2)+h(Xl+2) Mehrfache Anwendung der letzten Gleichung g*(Xl+1)+h( Xl+1) <= g*(Xl+2)+h(Xl+2) <= g*(Xl+3)+h(Xl+3) <= g*(Xk)+h(Xk) ... 50 Wissensbasierte Systeme I <= g*(X)+h(X) Insgesamt: g*(Xl+1)+h( Xl+1) <= g*(X)+h(X) Aber wie in (I) gezeigt: g*(Xl+1) = g(Xl+1) , da optimaler Pfad zu Xl+1 ja zum betrachteten Zeitpunkt bekannt ist. Also ist f(Xl+1) = g(Xl+1)+h( Xl+1) = g*(Xl+1)+h( Xl+1) <= g*(X)+h(X). −> Unterbehauptung. Zusammenfassung: Eigenschaften von A* − Zulässig, falls h<= h*. − Je näher die Schätzfunktion h an h* liegt, desto weniger Knoten werden expandiert, d.h., je ’informierter’, desto kleiner der Suchbaum. − Mit Monotonierestriktion (MR) werden nur optimale Knoten expandiert, d.h.einfach verzeigter Suchbaum reicht aus. 51