Wissensbasierte Systeme I TU MÜNCHEN Institut für Informatik A

Werbung
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
Herunterladen