Wissensrepräsentation und Problemlösen

Werbung
Wissensrepräsentation und Problemlösen
Vorlesung an der Technischen Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Inhalt
Seite 2
Seite
1.
Einleitung.................................................................................................................................................................... 4
1.1.
Was ist KI? ......................................................................................................................................................... 4
2.
Intelligente Agenten.................................................................................................................................................... 5
2.1.
Aktionen und Verhalten eines Agenten .............................................................................................................. 5
2.2.
Struktur intelligenter Agenten............................................................................................................................. 6
2.3.
Umgebungen....................................................................................................................................................... 9
3.
Problemlösen durch Suchen...................................................................................................................................... 10
3.1.
Problemlösende Agenten .................................................................................................................................. 10
3.2.
Problemformulierung........................................................................................................................................ 11
3.3.
Beispielprobleme .............................................................................................................................................. 14
3.4.
Suche nach Lösungen ....................................................................................................................................... 17
3.5.
Suchstrategien................................................................................................................................................... 18
4.
Heuristische Suche.................................................................................................................................................... 21
4.1.
Best-first-Suche ................................................................................................................................................ 21
4.2.
Heuristische Funktionen für das 8-Puzzle ........................................................................................................ 22
4.3.
Suche mit iterativem Verbessern ...................................................................................................................... 22
5.
Agenten, die logisch schlussfolgern ......................................................................................................................... 24
5.1.
Ein wissensbasierter Agent ............................................................................................................................... 24
5.2.
Die Wumpus-Welt ............................................................................................................................................ 24
5.3.
Repräsentation, Schlussfolgern und Logik ....................................................................................................... 26
5.4.
Aussagenlogik................................................................................................................................................... 28
5.5.
Ein Agent für die Wumpus-Welt ...................................................................................................................... 30
6.
Logik erster Ordnung................................................................................................................................................ 32
6.1.
Syntax und Semantik ........................................................................................................................................ 32
6.2.
Zwei Anwendungsbereiche für die Logik erster Ordnung................................................................................ 34
6.3.
Logische Agenten für die Wumpus-Welt ......................................................................................................... 35
6.4.
Repräsentation von Veränderungen in der Welt ............................................................................................... 36
6.5.
Ableitung verborgener Eigenschaften der Welt ................................................................................................ 38
6.6.
Zielbasierte Agenten ......................................................................................................................................... 39
7.
Inferenzen in der Logik erster Ordnung.................................................................................................................... 40
7.1.
Inferenzregeln für quantifizierte Sätze.............................................................................................................. 40
7.2.
Ein Beispiel für einen Beweis........................................................................................................................... 41
7.3.
Verallgemeinerter Modus Ponens..................................................................................................................... 43
7.4.
Vollständigkeit.................................................................................................................................................. 44
7.5.
Resolution: Eine vollständige Inferenzprozedur ............................................................................................... 45
8.
Planen ....................................................................................................................................................................... 50
8.1.
Ein einfacher Planungsagent............................................................................................................................. 50
8.2.
Vom Problemlösen zum Planen........................................................................................................................ 50
8.3.
Planen im Situationskalkül ............................................................................................................................... 51
8.4.
Grundlegende Repräsentationen für das Planen ............................................................................................... 52
8.5.
Ein Beispiel für partiell geordnetes Planen....................................................................................................... 55
8.6.
Ein Algorithmus für partiell geordnetes Planen................................................................................................ 56
8.7.
Knowledge Engineering für das Planen............................................................................................................ 58
9.
Unsicherheit.............................................................................................................................................................. 58
9.1.
Handeln unter Unsicherheit .............................................................................................................................. 58
9.2.
Grundlegende Notationen für Wahrscheinlichkeit............................................................................................ 61
9.3.
Die Wahrscheinlichkeitsaxiome ....................................................................................................................... 62
9.4.
Die Bayessche Regel und ihre Verwendung..................................................................................................... 62
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 3
10. Lernen aus Beobachtungen ....................................................................................................................................... 65
10.1. Ein allgemeines Modell lernender Agenten...................................................................................................... 65
10.2. Induktives Lernen ............................................................................................................................................. 66
10.3. Lernen von Entscheidungsbäumen ................................................................................................................... 67
10.4. Die Verwendung der Informationstheorie ........................................................................................................ 72
11. Lernen in Neuronalen Netzen ................................................................................................................................... 74
11.1. Gehirn und Computer ....................................................................................................................................... 74
11.2. Neuronale Netze ............................................................................................................................................... 75
11.3. Perzeptrone ....................................................................................................................................................... 78
11.4. Mehrschichtige zyklenfreie Netze .................................................................................................................... 80
Literatur
M. Ginsberg: Essentials of Artificial Intelligence. Morgan Kaufmann Publ., San Mateo, CA, 1995.
2
G. Görz (Hrsg.): Einführung in die Künstliche Intelligenz , Addison-Wesley Publ., Bonn, 1995.
D. Poole, A. Mackworth, R. Goebel: Computational Intelligence. A Logical Approach. Oxford
University Press, New York, 1998.
S.J. Russell, P. Norvig: Artificial Intelligence. A Modern Approach. Prentice Hall, Upper Saddle
River, NJ, 1995.
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 4
1. Einleitung
1.1. Was ist KI?
1.1.1. Menschlich Handeln: Der Ansatz des Turing-Tests
Der Turing-Test wurde von dem britischen Mathematiker Alan Turing 1950 vorgeschlagen. Er
sollte eine befriedigende operationale Definition von Intelligenz liefern. Intelligentes Verhalten ist
danach die Fähigkeit bei beliebigen kognitiven Aufgaben das Niveau menschlicher Performanz zu
erreichen, gut genug um einen menschlichen Frager in die Irre zu führen.
Um den Turing-Test zu bestehen müsste ein künstliches System folgende Fähigkeiten haben:
•
•
•
•
Verarbeitung natürlicher Sprache - für die Kommunikation in derselben;
Wissensrepräsentation - zur Speicherung von Information vor und während der Kommunikation;
automatisches Schlussfolgern - zur Beantwortung der Fragen aus dem gespeicherten Wissen
und um neue Schlüsse zu ziehen;
Maschinelles Lernen - um sich an neue Umstände anzupassen und typische Muster zu entdecken.
Beim totalen Turing-Test findet außerdem eine Video-Übertragung statt, so dass die Testperson die
Wahrnehmungsfähigkeit des Kommunikationspartners kontrollieren kann, und die Testperson kann
dem Partner irgendwelche Gegenstände durchreichen. Um den totalen Turing-Test zu bestehen
müsste ein künstliches System zusätzlich folgende Fähigkeiten haben:
•
•
Computersehen - um Gegenstände wahrzunehmen;
Robotik - um Gegenstände handhaben zu können.
1.1.2. Menschlich Denken: Der Ansatz der kognitiven Modellierung
Wenn man behaupten will, dass ein Computerprogramm wie ein Mensch denkt, dann muss man
zuerst wissen, wie der Mensch denkt, erst dann kann man das Programm damit vergleichen.
Herausfinden wie der Mensch denkt kann man auf zweierlei Weise: durch Introspektion oder durch
psychologische Experimente. Wenn eine ausreichend präzise Theorie über das menschliche Denken
vorliegt, kann man sie in ein Computerprogramm umsetzen. Ist desen Ein-/Ausgabe-Verhalten und
sein zeitliches Verhalten dem des Menschen ähnlich, besteht eine gewisse Evidenz, dass das
menschliche Denken so abläuft wie das der Maschine. Dies ist der Untersuchungsgegenstand der
Kognitionswissenschaft.
1.1.3. Rational Denken: Der Ansatz des logischen Denkens
Die ersten "Gesetze des Denkens" waren die Syllogismen, entwickelt von dem griechischen
Philosophen Aristoteles. Er wollte damit Regeln des "richtigen" Denkens aufstellen. Sie iniziierten
die Entwicklung der Logik. Diese hatte ihre Hauptentwicklungszeit Ende des 19. und Anfang des
20. Jahrhunderts. Auf der Basis der modernen Logik wurden in den 60-er Jahren Problemlösungssysteme entwickelt, die auf der Basis logischer Notationen mit Hilfe des Ableitungsbegriffs
Probleme beliebigen Inhalts lösen konnten.
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 5
1.1.4. Rational Handeln: Der Ansatz der rationalen Agenten
Ein rationaler Agent hat Ziele, die er erreichen will, und geht dabei von bestimmten Annahmen aus.
Ein Agent ist also etwas, das wahrnimmt und handelt. In dieser Sichtweise wird KI als die Untersuchung und die Konstruktion rationaler Agenten aufgefasst. Ein Agent benötigt logisches Denken
und er benötigt kognitive Fähigkeiten wie Wissensrepräsentation, Schlussfolgern, Sprachverarbeitung, Lernen und perzeptive Fähigkeiten.
Die Auffassung der KI als Entwurf rationaler Agenten hat zwei Vorteile: Sie ist erstens allgemeiner
als der Ansatz des logischen Denkens, denn logisches Inferieren ist zwar nützlich, aber nicht unbedingt notwendig. Und sie ist zweitens für die wissenschaftliche Behandlung günstiger als die
Ansätze, die auf dem menschlichen Verhalten oder dem menschlichen Denken basieren, denn
Rationalität ist hier klar und ganz allgemein definiert, während menschliches Verhalten an eine
bestimmte Umgebung angepasst und das Produkt einer langen Evolution ist, die nicht unbedingt ein
optimales Ergebnis erzielt hat. Aus diesem Grund wird im Folgenden dieser Auffassung der KI der
Vorzug gegeben.
2. Intelligente Agenten
Ein Agent wird im Folgenden als etwas aufgefasst, das seine Umgebung mittels Sensoren wahrnehmen kann und mittels Effektoren auf die Umgebung einwirken kann. Mit den Sensoren kann er
Wahrnehmungen aufnehmen, mit den Effektoren kann er Aktionen ausführen.
2.1. Aktionen und Verhalten eines Agenten
Was rational ist, kann nur mit Bezug auf einen bestimmten Zeitpunkt angegeben werden. Vier
Dinge sind dafür maßgebend:
•
Das Performanzmaß, das den Grad des Erfolgs definiert.
•
Alles, was der Agent bis jetzt wahrgenommen hat. Diese vollständig wahrgenommene
Geschichte wird Wahrnehmungsfolge genannt.
•
Was der Agent über die Umgebung weiß.
•
Die Aktionen, die der Agent durchführen kann.
Definition (Idealer rationaler Agent)
Ein idealer rationaler Agent ist ein Agent, der für jede mögliche Wahrnehmungsfolge diejenige
Aktion ausführt, die sein Performanzmaß maximiert. Die Auswahl der Aktion erfolgt aufgrund der
Evidenz, die von der Wahrnehmungsfolge und dem eingebauten Wissen des Agenten gewonnen
werden kann.
Die Festlegung, welche Aktion ein Agent als Reaktion auf eine bestimmte Wahrnehmungsfolge
ausführen sollte, stellt den Entwurf für einen Agenten dar. Wenn der Agent ideal sein soll, dann
kann man diese Festlegung als ideale Abbildung von Wahrnehmungsfolgen auf Aktionen bezeichnen.
Das Verhalten eines Agenten kann sowohl auf seiner Erfahrung als auch auf dem ihm eingebauten
Wissen über eine bestimmte Umgebung, in der er agiert, beruhen. Ein Agent ist in dem Maß
autonom, in dem sein Verhalten durch seine Erfahrung bestimmt ist.
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 6
2.2. Struktur intelligenter Agenten
Die zentrale Aufgabe der KI ist der Entwurf des Agentenprogramms, d.h. einer Funktion, die die
Abbildung von den Wahrnehmungsfolgen auf die Aktionen implementiert. Das Agentenprogramm
läuft auf irgendeiner Art von Recheneinheit, diese wird Architektur genannt. Die Architektur kann
ein normaler Computer oder eine Spezialhardware sein und sie kann Softwarebestandteile enthalten.
Sie stellt eine Plattform dar, die die Entwicklung des Agentenprogramms auf hohem Niveau
erlaubt. Ihre Aufgaben sind: Bereitstellen des Sensorinputs für das Agentenprogramm, Ablauf des
Agentenprogramms, Übertragung der vom Agentenprogramm ausgewählten Aktion auf die
Effektoren. Kurz gesagt gilt:
Agent = Architektur + Programm
Zum Entwurf eines Agentenprogramms benötigt man Informationen oder präzise Vorstellungen
über mögliche Wahrnehmungen, mögliche Aktionen, Ziele und die Umgebung, in der der Agent
operiert. Die folgende Tabelle zeigt einige Beispiele von Agenten mit diesen vier Angaben.
Agententyp
Wahrnehmungen
Aktionen
Ziele
Umgebung
Medizinisches
Diagnosesystem
Fragen, Tests,
Behandlungen
Steuerung einer
chemischen Anlage
Temperatur- und
Druckanzeigen
Interaktiver EnglischTutor
Per Tasten eingegebene Wörter
Gesunder Patient,
Minimierung der
Kosten
Korrekte Kategorisierung
Einsortieren von
Teilen in die richtigen
Behälter
Maximierung von
Qualität, Ausbeute
und Sicherheit
Maximierung des
Erfolgs des Schülers
beim Test
Patient, Krankenhaus
SatellitenbildAnalysesystem
Teileergreifender
Roboter
Symptome, Untersuchungsergebnisse,
Patientenaussagen
Pixels verschiedener
Intensität, Farbe
Pixels verschiedener
Intensität
Ausgabe einer Kategorisierung der Szene
Ergreifen von Teilen
und Einsortieren in
Behälter
Öffnen und Schließen
von Ventilen, Anpassung der Temperatur
Ausgabe von Übungen, Vorschlägen und
Korrekturen
Satellitenbilder
Fließband mit Teilen
Chemische
Produktionsanlage
Menge von Schülern
2.2.1. Agentenprogramme
Die im Folgenden entwickelten Agentenprogramme haben alle die gleiche Grundstruktur: Sie
nehmen Wahrnehmungen aus der Umgebung auf und erzeugen Aktionen. Die Grundform eines
Agentenprogramms, auf der alle übrigen aufbauen, der sog Skelettagent, ist die folgende.
function SKELETTAGENT(Wahrnehmung) returns action
static: memory
; des Agenten Gedächtnis von der Welt
memory ← UPDATE-MEMORY(memory, Wahrnehmung)
action ← CHOOSE-BEST-ACTION(memory)
memory ← UPDATE-MEMORY(memory, action)
return action
Beispiel: Der automatische Taxifahrer
Agententyp
Wahrnehmungen
Aktionen
Ziele
Umgebung
Automatischer
Taxifahrer
Kameras, Tachometer, GPS, Ultraschall,
Mikrophon
Lenken, Beschleunigen, Bremsen, mit
dem Fahrgast
sprechen
Sichere, schnelle,
korrekte, bequeme
Fahrt, Maximierung
des Gewinns
Straßen, Verkehr,
Fußgänger, Kunden
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 7
2.2.2. Einfache reaktive Agenten
Eine Verbindung zwischen einer Bedingung und einer Aktion heißt Bedingungs-Aktions-Regel. Sie
wird ausgewertet indem die Bedingung mittels der Wahrnehmung oder der Wahrnehmungsfolge
überprüft wird. Trifft die Bedingung zu, dann wird die Aktion ausgewählt. Beispiel:
wenn das vorausfahrende Auto bremst dann leite Bremsvorgang ein
Abbildung 2.1 zeigt die Struktur des einfachen reaktiven Agententyps in schematischer Form.
Rechtecke bezeichnen die aktuellen internen Zustände des Agenten und Ovale bezeichnen die in
einem Schritt benutzte Hintergrundinformation.
Sensoren
Agent
Wie die Welt
jetzt aussieht
Bedingungs-Aktions-Regeln
Welche Aktion ich
ausführen soll
U
m
g
e
b
u
n
g
Effektoren
Abbildung 2.1
Der einfache reaktive Agent hat folgendes Agentenprogramm:
function EINFACHER-REAKTIVER-AGENT(Wahrnehmung) returns action
static: rules
; eine Menge von Bedingungs-Aktions-Regeln
state ← INTERPRET-INPUT(Wahrnehmung)
rule ← RULE-MATCH(state, rules)
action ← RULE-ACTION(rule)
return action
2.2.3. Agenten, die die Welt beobachten
Agenten, die die Welt beobachten, aktualisieren ihren internen Zustand in regelmäßigen Abständen
aufgrund der Wahrnehmung. Sie benötigen dazu Informationen darüber, wie sich die Umgebung
unabhängig vom Agenten entwickelt, und darüber, wie sich die eigenen Aktionen auf die Umgebung auswirken.
Abbildung 2.2 zeigt die Struktur des Agententyps, der die Welt beobachtet, in schematischer Form.
Er hat folgendes Agentenprogramm:
function INTERNER-ZUSTANDS-AGENT(Wahrnehmung) returns action
static: state
; eine Beschreibung des aktuellen Weltzustands
rules
; eine Menge von Bedingungs-Aktions-Regeln
state ← UPDATE-STATE(state, Wahrnehmung)
rule ← RULE-MATCH(state, rules)
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 8
action ← RULE-ACTION(rule)
state ← UPDATE-STATE(state, action)
return action
Agent
Sensoren
Zustand
Wie die Welt
jetzt aussieht
Wie sich die Welt entwickelt
Was meine Aktionen bewirken
Welche Aktion ich
ausführen soll
Bedingungs-Aktions-Regeln
U
m
g
e
b
u
n
g
Effektoren
Abbildung 2.2
2.2.4. Zielbasierte Agenten
Um im Falle unterschiedlicher Folgezustände aufgrund mehrerer gleichzeitig anwendbarer Aktionen den richtigen auszuwählen, benötigt ein Agent Information über Ziele. Das Agentenprogramm
vergleicht diese Information mit dem Ergebnis der möglichen Aktionen (erhältlich mittels UPDATESTATE(state, action)) und wählt die Aktion aus, die zum Ziel führt. Dabei ist zu beachten, dass dies
nicht immer in einem einzigen Schritt möglich ist, sondern nur durch eine Folge von Aktionen. Mit
der Ermittlung solcher Aktionsfolgen beschäftigen sich die Teilgebiete Suche und Planen der KI.
Abbildung 2.3 zeigt die Struktur des zielbasierten Agententyps in schematischer Form.
Agent
Sensoren
Zustand
Wie die Welt
jetzt aussieht
Wie sich die Welt entwickelt
Was meine Aktionen bewirken
Wie die Welt aussehen wird, wenn ich
Aktion A ausführe
Ziele
Welche Aktion ich
ausführen soll
U
m
g
e
b
u
n
g
Effektoren
Abbildung 2.3
2.2.5. Nutzenbasierte Agenten
Der Nutzen ist eine Abbildung von der Menge der Zustände in die reellen Zahlen. Die einem
Zustand zugeordnete Zahl beschreibt, wie günstig der Zustand für den Agenten ist. Bezüglich des
Erreichens eines Ziels kann der Nutzen in zweierlei Weise verwendet werden.
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 9
(1) Wenn es Ziele gibt, die einen Konflikt bilden (z.B. Geschwindigkeit und Sicherheit), lässt sich
mit dem Nutzen ein Trade-off zwischen den Zielen bestimmen.
(2) Wenn es mehrere für den Agenten erstrebenswerte Ziele gibt, von denen aber keines mit
Sicherheit erreicht werden kann, kann mit Hilfe des Nutzens die Wahrscheinlichkeit des
Erreichens eines Ziels gegen seine Wichtigkeit abgewogen werden.
Abbildung 2.4 zeigt die Struktur des nutzenbasierten Agententyps in schematischer Form.
Agent
Sensoren
Zustand
Wie die Welt
jetzt aussieht
Wie sich die Welt entwickelt
Was meine Aktionen bewirken
Wie die Welt aussehen wird,
wenn ich Aktion A ausführe
Nutzen
Wie günstig dieser
Zustand für mich ist
U
m
g
e
b
u
n
g
Welche Aktion ich
ausführen soll
Effektoren
Abbildung 2.4
2.3. Umgebungen
Eigenschaften von Umgebungen
1.
Zugänglich ↔ unzugänglich
Eine Umgebung heißt zugänglich, wenn die Sensorik einem Agenten ein vollständiges Bild der
Umgebung verschaffen kann, d.h. wenn die Wahrnehmung durch die Sensoren alle Aspekte
abdeckt, die für die Wahl einer Aktion relevant sind.
2.
Deterministisch ↔ indeterministisch
Eine Umgebung heißt deterministisch, wenn der nächste Zustand vollständig durch den aktuellen Zustand und die Aktionen, die der Agent auswählt, bestimmt ist.
3.
Episodisch ↔ nicht episodisch
Eine Umgebung heißt episodisch, wenn sich die Erfahrungen eines Agenten in dieser Umgebung in Episoden unterteilen lassen. Jede Episode besteht aus Wahrnehmungen und darauf
folgenden Aktionen. Die Qualität der Aktionen des Agenten ist nur durch die Episode
bestimmt, in der sie ausgeführt werden, sie hängt nicht von früheren Episoden ab.
4.
Statisch ↔ dynamisch
Eine Umgebung heißt dynamisch, wenn sie sich ändern kann, während der Agent am Überlegen ist, andernfalls statisch. Eine Umgebung heißt semidynamisch, wenn sich zwar die
Umgebung nicht verändert, aber die dem Agenten zur Verfügung stehende Zeit zur Ausführung seiner Aktionen beschränkt ist.
5.
Diskret ↔ kontinuierlich
Eine Umgebung heißt diskret, wenn es in ihr eine begrenzte Anzahl unterscheidbarer und klar
definierter Wahrnehmungen und Aktionen gibt.
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 10
In der folgenden Tabelle sind eine Reihe von bekannten Umgebungen nach den fünf Eigenschaften
charakterisiert. Die Zuordnungen hängen von dem Konzept ab, das man sich von den Umgebungen
und den Agenten macht.
Umgebung
Schach mit Uhr
Schach ohne Uhr
Poker
Backgammon
Taxifahren
Medizinische Diagnose
Bildanalyse
Teile ergreifen
Anlagensteuerung
Englischunterricht
zugänglich
ja
ja
nein
ja
nein
nein
ja
nein
nein
nein
deterministisch
ja
ja
nein
nein
nein
nein
ja
nein
nein
nein
episodisch
statisch
diskret
nein
nein
nein
nein
nein
nein
ja
ja
nein
nein
semi
ja
ja
ja
nein
nein
semi
nein
nein
nein
ja
ja
ja
ja
nein
nein
nein
nein
nein
ja
3. Problemlösen durch Suchen
3.1. Problemlösende Agenten
Beispiel Rumänien
Agent A befindet sich in Arad, Rumänien, gegen Ende einer Ferienrundreise. Er hat ein Rückflugticket für den nächsten Tag ab Bukarest. Das Ticket ist nicht rückerstattbar, A’s Visum läuft in
Kürze ab und nach dem morgigen Tag gibt es innerhalb der nächsten sechs Wochen keine freien
Plätze für einen Rückflug. Das Performanzmaß von A wird noch durch andere Faktoren bestimmt,
z.B. die Vertiefung seiner Sonnenbräune, die Verbesserung seiner rumänischen Sprachkenntnisse
oder irgendwelche Besichtigungen. Dementsprechend viele Aktionen können gewählt werden.
Angesichts des Ernstes der Lage sollte A jedoch das Ziel verfolgen, nach Bukarest zu fahren.
Die Zielformulierung, ausgehend von der aktuellen Situation, ist der erste Schritt beim Problemlösen. Ein Ziel wird als eine Menge von Weltzuständen betrachtet, in denen das Ziel erfüllt ist.
Aktionen werden als Übergänge zwischen Weltzuständen betrachtet.
Bei der Problemformulierung wird entschieden welche Aktionen und welche Zustände betrachtet
werden sollen. Sie folgt auf die Zielformulierung.
Hat ein Agent mehrere mögliche Aktionen mit unbekanntem Ausgang, dann kann er eine Entscheidung dadurch herbeiführen, dass er verschiedene mögliche Aktionsfolgen, die zu Zuständen mit
bekanntem Wert führen, untersucht und dann diejenige Aktionsfolge wählt, die zu dem Zustand mit
dem besten Wert führt. Dieser Vorgang heißt Suche. Ein Suchalgorithmus nimmt eine Problembeschreibung als Eingabe und liefert eine Lösung in Form einer Aktionsfolge. Die Lösung kann
dann in der Ausführungsphase ausgeführt werden. Damit ergibt sich als Entwurf des
Problemlösungs-Agenten der folgende Algorithmus.
function EINFACHER-PROBLEMLÖSUNGS-AGENT(p) returns action
inputs: p
; eine Wahrnehmung
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
static: s
state
g
problem
Seite 11
; eine Aktionsfolge, zu Beginn leer
; eine Beschreibung das aktuellen Weltzustands
; ein Ziel, zu Beginn leer
; eine Problemformulierung
state ← UPDATE-STATE(state, p)
if s ist leer then
g ← FORMULATE-GOAL(state)
problem ← FORMULATE-PROBLEM(state, g)
s ← SEARCH(problem)
action ← RECOMMENDATION(s, state)
s ← REMAINDER(s, state)
return action
3.2. Problemformulierung
Beispiel Staubsauge-Roboter
Die Staubsaugerwelt bestehe aus zwei Plätzen. An jedem Platz kann sich Schmutz befinden oder
nicht und der Agent Staubsauge-Roboter (SR) befindet sich am einen oder am anderen Platz. In
dieser Welt gibt es acht verschiedene Zustände, die graphisch in Abbildung 3.1 dargestellt sind, und
SR kann drei verschiedene Aktionen ausführen: Links, Rechts und Saugen. Die Saugeaktion arbeite
zuverlässig. Das Ziel ist, allen Schmutz aufzusaugen, d.h. das Ziel ist in einem der Zustände 7 und 8
von Abbildung 3.1 erfüllt.
1
2
3
4
5
6
7
8
Abbildung 3.1
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 12
3.1.1. Problemtypen
Ein-Zustands-Problem
Der Agent weiß, in welchem Zustand er sich befindet, d.h. die Umgebung ist zugänglich, und er
weiß, was jede Aktion bewirkt. Dann kann er, ausgehend von seinem Zustand, für eine Aktionsfolge vorausberechnen, in welchem Zustand er nach Ausführung der Aktionen sein wird.
Mehr-Zustands-Problem
Der Agent weiß nicht, in welchem Zustand er sich befindet, d.h. die Umgebung ist unzugänglich
oder nur beschränkt zugänglich, aber er weiß, was jede Aktion bewirkt. Dann kann er trotzdem das
Erreichen eines Zielzustands vorausberechnen. Dazu muss er aber über eine Menge von Zuständen
schlussfolgern, nicht nur über einzelne Zustände.
Kontingenz-Problem
Der Agent kann nicht im Voraus eine bestimmte Aktionsfolge berechnen, die zu einem Zielzustand
führt, vielmehr benötigt er während der Ausführung der Aktionen Sensorinformationen um zu
entscheiden, welche von mehreren möglichen Aktionen zum Ziel führt. Statt einer Folge von
Aktionen braucht er also einen Baum von Aktionen, in dem jeder Zweig von der Wurzel zu einem
Blatt eine Aktionsfolge darstellt, und jede Aktionsfolge behandelt ein kontingentes Ereignis.
Explorations-Problem
Der Agent kennt die Auswirkungen seiner Aktionen nicht. In diesem Fall muss er experimentieren
um herauszufinden, was seine Aktionen bewirken und welche Art von Zuständen es gibt. Dies kann
er nur in der realen Welt tun. Er kann aber dabei „lernen“, d.h. sich eine interne Repräsentation der
Welt aufbauen und diese für weitere Problemlösungen nutzen.
3.1.2. Wohldefinierte Probleme und Lösungen
Zur Definition eines Ein-Zustands-Problems sind folgende Informationen erforderlich:
•
•
•
•
Ein Anfangszustand;
eine Menge möglicher Aktionen;
ein Zielprädikat;
eine Pfadkostenfunktion.
Der Anfangszustand ist der Zustand, von dem der Agent weiß, dass er sich in ihm befindet. Eine
Aktion wird als Operator (alternativ: Nachfolgefunktion) bezeichnet in Verbindung mit dem
Zustand, zu dem sie von einem gegebenen Zustand aus führt.
Der Anfangszustand und die Menge der Aktionen definieren den Zustandsraum des Problems. Er
besteht aus der Menge aller Zustände, die vom Anfangszustand aus durch irgendwelche Aktionsfolgen erreichbar sind. Ein Pfad im Zustandsraum ist eine Aktionsfolge, die von einem Zustand zu
einem anderen führt.
Das Zielprädikat kann der Agent auf einen Zustand anwenden um zu testen, ob er ein Zielzustand
ist.
Die Pfadkostenfunktion ordnet jedem Pfad im Zustandsraum einen Kostenwert zu. Dieser ist die
Summe der Kosten jeder einzelnen Aktion entlang des Pfades. Die Pfadkostenfunktion wird häufig
mit g bezeichnet.
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 13
Der Datentyp Problem ist definiert durch:
datatype PROBLEM
components: ANFANGSZUSTAND, OPERATOREN, ZIELPRÄDIKAT, PFADKOSTENFUNKTION
Instanzen dieses Datentyps bilden die Eingaben für Suchalgorithmen. Die Ausgabe eines Suchalgorithmus ist eine Lösung, d.h. ein Pfad vom Anfangszustand zu einem Zustand, der das Zielprädikat
erfüllt.
Bei Mehr-Zustands-Problemen werden die Zustände durch Zustandsmengen ersetzt, eine Aktion
wird durch eine Menge von Operatoren repräsentiert, die die Folgezustandsmenge spezifizieren. Ein
Operator wird auf eine Zustandsmenge angewandt, indem er auf jeden einzelnen Zustand in der
Menge angewandt wird und die Ergebnisse vereinigt werden. Anstelle des Zustandsraums erhält
man einen Zustandsmengenraum und ein Pfad in diesem Raum führt über Zustandsmengen. Eine
Lösung ist ein Pfad zu einer Zustandsmenge, die nur aus Zielzuständen besteht.
Die Performanz einer Problemlösung wird durch drei Größen gemessen:
•
•
•
Wird eine Lösung gefunden?
Wie hoch sind die Pfadkosten?
Wie hoch sind die Suchkosten?
Die Gesamtkosten der Problemlösung sind die Summe aus Pfadkosten und Suchkosten.
3.1.3. Festlegung von Zuständen und Aktionen
Um Zustände und Aktionen für ein Problem zu definieren muss man immer von den realen Gegebenheiten abstrahieren. Im Folgenden wird anhand des Rumänien-Beispiels illustriert, wie Abstraktionen vorgenommen werden sollten. Abbildung 3.2 zeigt eine vereinfachte Landkarte mit den
Straßenverbindungen zwischen verschiedenen Orten.
Oradea
Zerind
Neamt
Arad
Sibiu
Iasi
Fagaras
Timisoara
Lugoj
Rimnicu Vilcea
Vaslui
Pitesti
Urziceni
Mehadia
Dobreta
Hirsova
Bukarest
Craiova
Giurgiu
Eforie
Abbildung 3.2
Das Problem heißt: „Fahre von Arad nach Bukarest unter Benutzung der Landkarte von Abbildung
3.2.“ Der Zustandsraum hat 20 Zustände, die durch die Befindlichkeit an den Orten gegeben sind.
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 14
Der Anfangszustand ist „in Arad“, das Zielprädikat heißt: „Ist dies Bukarest?“ Die Operatoren entsprechen den Fahrten zwischen den Orten entlang den eingezeichneten Straßen.
Als Pfadkosten wird die Anzahl der für eine Lösung erforderlichen Schritte genommen.
Das Weglassen von nicht erforderlichen Details aus einer Problembeschreibung heißt Abstraktion.
Eine Abstraktion ist gut, wenn so viele Details wie möglich weggelassen werden, aber die Gültigkeit der Problembeschreibung erhalten bleibt und die abstrakten Aktionen einfach auszuführen sind.
3.3. Beispielprobleme
3.3.1. Spielzeugprobleme
8-Puzzle
Das 8-Puzzle ist das in Abbildung 3.3 dargestellte bekannte Spielzeug. Durch Verschieben der
Plättchen soll, ausgehend von einer beliebigen Anordnung, eine bestimmte Ordnung der Zahlen
hergestellt werden, z.B. die im Zielzustand von Abbildung 3.3 dargestellte.
5
4
1
6
1
8
8
7
3
2
7
Startzustand
2
3
4
6
5
Zielzustand
Abbildung 3.3
•
•
•
•
Zustände: Beschreibung der Platzierung aller acht Plättchen sowie der Leerstelle in den neun
Quadraten.
Operatoren: Bewegung der Leerstelle nach links, rechts, oben oder unten.
Zielprädikat: Der Zustand, der identisch ist mit dem in Abbildung 3.3 dargestellten Zielzustand.
Pfadkosten: Jeder Schritt hat die Kosten 1, die Kosten eines Pfades sind damit gleich der Länge
des Pfads.
Kryptoarithmetik
Ein kryptoarithmetisches Problem ist die Formulierung einer arithmetischen Aufgabe samt Lösung,
in der die Ziffern durch Buchstaben ersetzt sind. Es ist eine Ersetzung der Buchstaben durch Ziffern
gesucht, so dass die arithmetische Aufgabe korrekt gelöst ist. Ein Beispiel ist die folgende Aufgabe:
FORTY
+ TEN
+ TEN
---SIXTY
Lösung: 29785
850
850
----31485
F=2, O=9, R=7 usw.
Eine einfache Problemformulierung:
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
•
•
•
•
Seite 15
Zustände: Eine kryptoarithmetische Aufgabe mit teilweise durch Ziffern ersetzten Buchstaben.
Operatoren: Ersetze alle Vorkommen eines Buchstabens mit einer Ziffer, die noch nicht in der
Aufgabe vorkommt.
Zielprädikat: Die Aufgabe enthält nur Ziffern und repräsentiert eine korrekte arithmetische
Aufgabe.
Pfadkosten: Null.
Staubsaugen
Zunächst wird das Ein-Zustands-Problem mit vollständiger Information und korrekt arbeitendem
Staubsauger betrachtet. Die Problemformulierung ist:
•
•
•
•
Zustände: Einer der acht Zustände von Abbildung 3.1.
Operatoren: Nach links bewegen (L), nach rechts bewegen (R), Saugen (S).
Zielprädikat: Kein Schmutz an beiden Plätzen.
Pfadkosten: Jede Aktion hat die Kosten 1.
Abbildung 3.5 zeigt den vollständigen Zustandsraum mit allen möglichen Pfaden.
R
L
R
L
S
S
R
R
L
L
R
L
S
S
S
R
L
S
R
L
R
L
S
S
Abbildung 3.5
Nun wird das Mehr-Zustands-Problem betrachtet, bei dem der Roboter keinen Sensor hat. Die
Problemformulierung ist:
•
•
•
•
Zustandsmengen: Teilmengen der acht Zustände von Abbildung 3.1.
Operatoren: Nach links bewegen (L), nach rechts bewegen (R), Saugen (S).
Zielprädikat: Alle Zustände in der Zustandsmenge haben keinen Schmutz an beiden Plätzen.
Pfadkosten: Jede Aktion hat die Kosten 1.
Der Startzustand ist die Menge aller Zustände, da der Roboter keinen Sensor hat um seinen Platz
festzustellen. Abbildung 3.6 zeigt den Zustandsmengenraum für das Problem.
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 16
L
R
L
R
S
S
L
S
R
R
L
S
S
R
L
R
L
S
R
S
L
Abbildung 3.6
Missionars-Kannibalen-Problem
Drei Missionare und drei Kannibalen befinden sich auf einer Seite eines Flusses und wollen
übersetzen. Es steht ein Boot zur Verfügung, das höchstens zwei Personen fasst. Gesucht ist eine
Möglichkeit die Personen so über den Fluss zu bringen, dass zu keinem Zeitpunkt an einem der
beiden Ufer mehr Kannibalen als Missionare sind (weil sonst die Missionare Gefahr laufen verspeist zu werden).
Problemformulierung:
•
•
•
Zustände: Ein Zustand besteht aus drei Zahlen. Die erste repräsentiert die Anzahl der Missionare, die zweite die der Kannibalen und die dritte die der Boote am Startufer. Der Startzustand
ist (3, 3, 1).
Operatoren: Das Boot fährt mit einem oder zwei Missionaren oder mit einem oder zwei Kannibalen oder mit einem Missionar und einem Kannibalen zwischen den Ufern. Es gibt also fünf
Operatoren. Bei einer Fahrt vom Startufer zum anderen Ufer verringern sich die Zahlen des
aktuellen Zustands, in der umgekehrten Richtung vergrößern sie sich.
Zielprädikat: Ist der aktuelle Zustand (0, 0, 0)?
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
•
Seite 17
Pfadkosten: Anzahl der Flussüberquerungen.
3.3.2. Realweltprobleme
Routen finden
Die Aufgabe ist das Finden von Routen über vorgegebene Plätze und Übergänge zwischen den
Plätzen, repräsentiert durch Kanten. Anwendungsbereiche: Routing in Computernetzen, Reiseberatungssysteme, Flugreisen-Planungssysteme.
Tourenplanung und das Travelling Salesman-Problem
Die Aufgabe ist das Finden einer Tour von einem Ort zu einem anderen (oder demselben), wobei
bestimmte andere Orte besucht werden müssen. Zusätzlich zum Routen finden müssen hier die
Zustände auch noch Informationen über die bereits besuchten Orte enthalten. Das bekannteste
Tourenplanungsproblem ist das Travelling Salesman-Problem, bei dem jeder Ort genau einmal
besucht werden muss. Gesucht ist die kürzeste Tour mit dieser Eigenschaft. Anwendungsbereiche:
Logistik, Steuerung von Maschinen bei der Bearbeitung großer Flächen, z.B. beim Bohren.
VLSI-Layout
Die Aufgabe ist Lösungen für das Zellen-Layout und das Channel Routing zu finden. In den Zellen
sind die elementaren Komponenten des Schaltkreises zu Gruppen zusammengefasst, von denen jede
eine bestimmte Funktion realisiert. Jede Zelle hat eine bestimmte Größe und Form und benötigt
eine bestimmte Anzahl von Verbindungen zu den anderen Zellen. Die Zellen müssen so auf dem
Chip platziert werden, dass sie sich nicht überlappen und dass noch genug Raum zwischen ihnen für
die Kanäle bleibt. Das Channel Routing bestimmt eine spezielle Route für jede Verbindung
zwischen zwei Zellen.
Roboternavigation
Die Aufgabe ist einen Weg für einen Roboter in einem zweidimensionalen Raum zu bestimmen.
Das Problem ist eine Verallgemeinerung des Routen-finden-Problems insofern, als hier ein kontinuierlicher Raum mit im Prinzip unendlich vielen möglichen Aktionen und Zuständen vorliegt.
Montageplanung
Die Aufgabe ist eine Reihenfolge zu finden, in der eine Menge von Teilen zu einem größeren
Ganzen zusammengebaut werden können. Eine falsche Reihenfolge führt in eine Sackgasse und
macht eine teilweise Demontage erforderlich. Es handelt sich bei diesem Problem um ein komplexes geometrisches Suchproblem.
3.4. Suche nach Lösungen
3.4.1. Erzeugung von Aktionsfolgen
Durch Anwendung eines Operators wird von einem gegebenen Zustand aus eine Menge anderer
Zustände erzeugt. Dieser Prozess heißt Expandieren des Zustands. Das Wesen der Suche ist einen
Zustand aus einer Menge auszuwählen und die anderen für einen eventuellen späteren Gebrauch
zurückzustellen, nämlich dann, wenn die getroffene Auswahl nicht zum Erfolg führt. Die Wahl des
als nächster zu expandierender Zustands wird durch eine Suchstrategie bestimmt. Der Suchprozess
kann als Aufbau eines Suchbaums, der über den Zustandsraum gelegt wird, gedacht werden. Die
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 18
Wurzel des Suchbaums ist der Suchknoten, der dem Anfangszustand entspricht. Die Blätter des
Baums entsprechen Zuständen, die keine Nachfolger im Baum haben, entweder weil sie noch nicht
expandiert wurden oder weil sie keine Nachfolger haben (bei der Expansion entstand die leere
Menge). In jedem Schritt wählt der Suchalgorithmus einen Blattknoten zum Expandieren aus.
3.4.2. Datenstrukturen für Suchbäume und allgemeiner Suchalgorithmus
Ein Knoten v eines Suchbaums ist eine Datenstruktur mit fünf Komponenten:
•
•
•
•
•
Der Zustand des Zustandsraums, dem v entspricht;
derjenige Knoten im Suchbaum, der v erzeugt hat (der Vaterknoten von v);
der zur Erzeugung von v verwendete Operator;
die Zahl der Knoten auf dem Pfad von der Wurzel zu v (die Tiefe von v);
die Pfadkosten des Pfades vom Anfangszustand bis zu dem v entsprechenden Zustand.
Der Datentyp Knoten ist definiert durch
datatype KNOTEN
components: ZUSTAND, VATERKNOTEN, OPERATOR, TIEFE, PFADKOSTEN
Es wird ferner eine Datenstruktur benötigt zur Repräsentation der Knoten, die zwar schon erzeugt,
aber noch nicht expandiert worden sind. Diese Knotenmenge heißt Rand.
Die Knotenmenge Rand wird als Liste implementiert. Auf einer Liste sind folgende Operationen
definiert:
•
•
•
•
MAKE-LIST(Elemente)
EMPTY?(Liste)
REMOVE-FRONT(Liste)
LISTING-FN(Elemente, Liste)
erzeugt eine Liste aus den eingegebenen Elementen
gibt true zurück, wenn keine Elemente mehr in der Liste sind
entfernt das erste Element der Liste und gibt es aus
fügt eine Menge von Elementen in die Liste ein
Bei der Funktion LISTING-FN kommt es darauf an, wie die Elemente in die Liste eingefügt werden.
Daraus ergeben sich verschiedene Varianten des Suchalgorithmus. Der allgemeine Suchalgorithmus ist unter Verwendung dieser Funktionen in folgender Weise definiert:
function ALLGEMEINE-SUCHE(Problem, LISTING-FN) returns eine Lösung oder Fehler
nodes ← MAKE-LIST(MAKE-NODE(INITIAL-STATE[Problem])
loop do
if nodes ist leer then return Fehler
node ← REMOVE-FRONT(nodes)
if STATE(node) erfüllt ZIELPRÄDIKAT[Problem] then return node
nodes ← LISTING-FN(nodes, EXPAND(node, OPERATORS[Problem]))
end
3.5. Suchstrategien
Die Bestimmung der richtigen Suchstrategie erfolgt nach vier Kriterien:
•
•
•
Vollständigkeit: Findet die Suchstrategie garantiert eine Lösung wenn es eine gibt?
Zeitbedarf: Wieviel Zeit benötigt die Suchstrategie um eine Lösung zu finden?
Speicherplatzbedarf: Wieviel Speicherplatz benötigt die Suchstrategie für die Suche?
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
•
Seite 19
Optimalität: Findet die Suchstrategie die beste Lösung, wenn es mehrere Lösungen gibt?
3.5.1. Breitensuche
Bei der Breitensuche (Breadth-first search) wird zuerst der Wurzelknoten expandiert, dann alle
seine Nachfolger, dann deren Nachfolger usw. Allgemein werden immer erst alle Knoten auf Tiefe
d des Suchbaums expandiert bevor ein Knoten auf Tiefe d + 1 expandiert wird. Die Breitensuche
wird durch Aufruf des Algorithmus ALLGEMEINE-SUCHE mit einer Listenfunktion, die die neuen
Knoten an das Ende der Liste einfügt, implementiert.
function BREITENSUCHE(Problem) returns eine Lösung oder Fehler
return ALLGEMEINE-SUCHE(Problem,ENLIST-AT-END)
Die Breitensuche erfüllt das Kriterium der Vollständigkeit, denn sie findet auf jeden Fall eine
Lösung, falls eine existiert, und sie findet diejenige mit dem kürzesten Pfad. Sind die Pfadkosten
eine monoton wachsende Funktion der Tiefe des Suchbaums, dann ist deshalb die Breitensuche
sogar optimal.
Zur Abschätzung des Zeit- und Speicherplatzbedarfs wird ein hypothetischer Zustandsraum angenommen, in dem jeder Zustand zu genau b Folgezuständen expandiert werden kann. b heißt der
Verzweigungsfaktor (branching factor) der Zustände. Die Anzahl der insgesamt erzeugten Knoten
des Suchbaums ist ein Maß für den Zeit- und Speicherplatzbedarf. Auf Tiefe 0 gibt es einen Knoten
(die Wurzel), auf Tiefe 1 b Knoten, auf Tiefe 2 b2 Knoten usw., allgemein auf Tiefe d bd Knoten.
Liegt eine (die erste) Lösung auf Tiefe d, dann ist die Zahl der maximal zu erzeugenden Knoten
1 + b + b 2 + b3 +
+ bd =
b d +1 − 1
= O(b d )
b −1
Zeit- und Speicherplatzbedarf sind komplexitätsmäßig gleich groß (O(bd)), denn im ungünstigsten
Fall müssen alle Knoten der Tiefe d gespeichert werden, im günstigeren Fall immerhin die Knoten
der Tiefe d-1.
3.5.2. Kostengesteuerte Breitensuche
Bei der kostengesteuerten Breitensuche wird immer der Knoten aus dem Rand mit den niedrigsten
Pfadkosten als nächster expandiert. Unter bestimmten Voraussetzungen wird damit die kostengünstigste Lösung als erste gefunden.
Die kostengesteuerte Breitensuche findet die kostengünstigste Lösung, wenn sich die Kosten
entlang eines Pfades an keiner Stelle verringern, d.h. wenn für alle Knoten n gilt
g(NACHFOLGER(n)) ≥ g(n)
3.5.3. Tiefensuche
Die Tiefensuche expandiert immer einen Knoten auf der tiefsten Ebene des Baumes. Nur wenn
keiner der Knoten auf der tiefsten Ebene expandierbar ist, geht sie zurück und expandiert einen
Knoten auf einer niedrigeren Ebene. Diese Suchstrategie kann durch Aufruf des Algorithmus
ALLGEMEINE-SUCHE mit einer Listenfunktion, die die neuen Knoten an den Anfang der Liste
einfügt, implementiert werden.
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 20
function TIEFENSUCHE(Problem) returns eine Lösung oder Fehler
return ALLGEMEINE-SUCHE(Problem,ENLIST-AT-FRONT)
Der Speicherplatzbedarf der Tiefensuche ist linear, denn beim Absteigen in die Tiefe muss immer
nur ein Knoten zusammen mit seinen Geschwisterknoten im Speicher gehalten werden. Ist m die
größte im Suchbaum vorkommende Tiefe (m kann größer sein als die Lösungstiefe d), dann ist der
Speicherplatzbedarf b⋅m.
Der Zeitbedarf der Tiefensuche ist O(bm), da im ungünstigsten Fall alle Knoten bis zur maximalen
Tiefe m expandiert und besucht werden müssen. In der Praxis kann der Zeitbedarf niedriger sein,
weil nur ein Teil des Zustandsraums durchsucht werden muss bis eine Lösung gefunden ist.
Der Nachteil der Tiefensuche gegenüber der Breitensuche ist, dass sie bei sehr tiefen oder gar
unendlich tiefen Suchbäumen in einem falschen Zweig „hängenbleibt“ oder zumindest sehr viel
Zeit verbraucht und deshalb keine Lösung findet, auch wenn eine existiert. Aus ähnlichem Grund ist
bei der Tiefensuche auch nicht garantiert, dass sie eine optimale Lösung findet. Die Tiefensuche ist
also weder vollständig noch optimal.
3.5.4. Tiefenbegrenzte Suche
Die tiefenbegrenzte Suche ist Tiefensuche mit einem Tiefenschnitt. Jeder Pfad im Suchbaum wird
höchstens bis zu einer vorgegebenen Tiefe entwickelt. Die tiefenbegrenzte Suche kann mit einem
speziellen Algorithmus oder durch Aufruf von ALLGEMEINE-SUCHE zusammen mit Operatoren, die
die Tiefe kontrollieren, implementiert werden. Der Zeit- und Speicherplatzbedarf ist ähnlich wie bei
der Tiefensuche; ist l der Tiefenschnitt, dann ist der Zeitbedarf O(bl) und der Speicherbedarf O(b⋅l).
3.5.5. Suche mit iterativem Vertiefen
Die Suche mit iterativem Vertiefen ist tiefenbegrenzte Suche mit variablem Tiefenschnitt. Dabei
werden sukzessive wachsende Tiefenschnitte 0, 1, 2, ... festgelegt und für jeden Wert die tiefenbeschränkte Suche durchgeführt. Die Implementierung kann durch folgende Funktion geschehen:
function SUCHE-MIT-ITERATIVEM-VERTIEFEN(Problem) returns eine Lösungsfolge oder Fehler
inputs: Problem
; eine Problembeschreibung
for depth ← 0 to ∞ do
if Tiefenbeschränkte-Suche(Problem, depth) erfolgreich then return ihr Ergebnis
end
return Fehler
Die Suche mit iterativem Vertiefen vereinigt die Vorteile der Breitensuche und der Tiefensuche, sie
ist vollständig und optimal. Sie benötigt nur so viel Speicherplatz wie die Tiefensuche.
Der Zeitbedarf der Suche mit iterativem Vertiefen ist O(bd) und der Speicherplatzbedarf O (b ⋅ d ) .
Die Suche ist vollständig und optimal. Damit ist die Suche mit iterativem Vertiefen das beste blinde
Suchverfahren. Es ist geeignet für große Suchräume mit unbekannter Tiefe der Lösung.
3.5.6. Vergleich der Suchverfahren
In der folgenden Tabelle sind die sechs Suchverfahren nach ihrer Komplexität und den Kriterien
Vollständigkeit und Optimalität aufgelistet.
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Kriterium
Seite 21
Breitensuche kostengesteu- Tiefensuche Tiefenbegrenzerte Breite
te Suche
d
d
m
Zeit
b
b
b
bl
Speicherplatz
bd
bd
bm
bl
Optimal?
ja
ja
nein
nein
Vollständig?
ja
ja
nein
ja, falls l ≥ d
Iteratives
Vertiefen
bd
bd
ja
ja
4. Heuristische Suche
4.1. Best-first-Suche
Will man Wissen über ein zu lösendes Problem zur Steuerung des Suchprozesses nutzen, dann kann
man dies mit Hilfe der allgemeinen Suchprozedur tun. Mit ihr können verschiedene Suchstrategien
dadurch verwirklicht werden, dass man neue Knoten in unterschiedlicher Weise in die Schlange
einfügt, sofern man die Knoten immer an derselben Stelle aus der Schlange entfernt. Für das
Einfügen benötigt man eine Evaluierungsfunktion, die die richtige Reihenfolge bestimmt. Werden
die Knoten so geordnet, dass der mit der besten Bewertung zuerst expandiert wird, dann nennt man
das Verfahren Best-first-Suche. Der folgende Algorithmus realisiert diese Suche.
function BEST-FIRST-SUCHE(Problem, EVAL-FN) returns eine Lösungsfolge oder Fehler
inputs: Problem
; eine Problembeschreibung
EVAL-FN
; eine Evaluierungsfunktion
LISTING-FN ← eine Funktion, die Knoten mittels EVAL-FN ordnet
return ALLGEMEINE-SUCHE(Problem, LISTING-FN)
Es gibt eine ganze Familie von Best-first-Suchverfahren. Sie benutzen alle ein geschätztes Kostenmaß für die Lösung und versuchen, dieses zu minimieren. Dieses Kostenmaß muss die Kosten eines
Pfads von einem Zustand zu dem nächstgelegenen Zielzustand erfassen.
4.1.1. Greedy-Suche
Eine einfache Best-first-Suche ist die Minimierung der geschätzten Kosten für das Erreichen des
Ziels. Dazu wird derjenige Knoten, dessen Zustand als dem Zielzustand am nächsten liegend eingeschätzt wird, als erster expandiert. Eine Funktion, die die Kosten schätzt, nennt man heuristische
Funktion, bezeichnet mit h. h(n) sind also die geschätzten Kosten des billigsten Pfads vom Knoten
n zu einem Zielzustand. Best-first-Suche, die eine heuristische Funktion h verwendet, heißt
Greedy-Suche. Der folgende Algorithmus ist eine Implementierung der Greedy-Suche.
function GREEDY-SUCHE(Problem) returns eine Lösung oder Fehler
return BEST-FIRST-SUCHE(Problem, h)
Jede beliebige Funktion kann als heuristische Funktion verwendet werden. Es muss nur h(n) = 0
gelten, falls n ein Zielknoten ist.
Greedy-Suche geht ähnlich vor wie Tiefensuche, insofern als sie einen direkten Weg zur Lösung
bevorzugt und rücksetzen muss, wenn sie in eine Sackgasse gerät. Sie hat die gleichen Nachteile
wie die Tiefensuche, sie ist nicht vollständig und nicht optimal. Der worst case-Zeitbedarf ist O(bm),
wobei m die maximale Tiefe des Suchraums ist. Es werden alle Knoten im Speicher gehalten,
deshalb ist auch der worst case-Speicherplatzbedarf O(bm).
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 22
4.1.2. A*-Suche
Durch Addition der heuristischen Funktion h und der Pfadkostenfunktion g erhält man die Funktion
f(n) = g(n) + h(n)
die die geschätzten Kosten der billigsten Lösung durch den Knoten n wiedergibt.
Hat die Funktion h die Eigenschaft, dass sie die Kosten eines Pfades bis zu einem Zielknoten nicht
überschätzt, dann heißt sie eine zulässige Heuristik. Formal definiert: Sind h‘ die tatsächlichen
(aber nicht bekannten) Kosten, dann muss für h gelten: Für alle Knoten n: h(n) ≤ h‘(n). Wenn h
zulässig ist, dann überschätzt auch die Funktion f niemals die Kosten der besten Lösung durch n.
Best-first-Suche unter Verwendung von f als Evaluierungsfunktion mit zulässigem h heißt A*Suche. Der folgende Algorithmus implementiert die A*-Suche.
function A*-SUCHE(Problem) returns eine Lösung oder Fehler
return BEST-FIRST-SUCHE(Problem, g + h)
Eine heuristische Funktion, deren Werte entlang der Pfade im Suchbaum von der Wurzel zu einem
Blatt nie kleiner werden, nennt man monoton.
4.2. Heuristische Funktionen für das 8-Puzzle
•
h1 = Anzahl der falsch platzierten Plättchen. In Abbildung 3.3 sind 7 Plättchen an der falschen
Position, also ist hier h1 = 7. h1 ist zulässig, denn jedes falsch platzierte Plättchen muss
mindestens um eine Position verschoben werden.
•
h2 = Summe der Entfernungen der Plättchen von ihren Zielpositionen. Die Entfernungen werden
in horizontaler und vertikaler Richtung gemessen, wie die Plättchen bewegt werden können. h2
gibt also an, wieviele Züge mindestens notwendig sind, um ein falsch platziertes Plättchen in die
richtige Position zu bringen. Damit ist h2 ebenfalls zulässig. Die Heuristik wird auch StadtblockDistanz oder Manhattan-Distanz genannt. Im Beispiel von Abbildung 3.3 ist
h2 = 2 + 3 + 3 + 2 + 4 + 2 + 0 + 2 = 18
4.3. Suche mit iterativem Verbessern
4.3.1. Bergsteigen
Der folgende Algorithmus realisiert die Suche durch Bergsteigen.
function BERGSTEIGEN(Problem) returns einen Lösungszustand
inputs: Problem
; eine Problembeschreibung
local variables: node
; der aktuelle Knoten
next
; ein Knoten
node ← MAKE-NODE(INITIAL-STATE[Problem])
loop do
next ← ein Nachfolger von node mit höchstem Wert
if VALUE[next] < VALUE[node] then return node
node ← next
end
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Wissensrepräsentation und Problemlösung
Seite 23
Gibt es bei der Suche mehrere Nachfolgerknoten mit dem besten Wert, dann muss einer zufällig
ausgewählt werden. Dabei kann eines der drei folgenden Probleme auftreten:
•
Lokales Maximum: Ein lokales Maximum ist eine Spitze in der Landschaft, d.h. ein Punkt,
dessen Nachbarn alle einen schlechteren Wert haben, aber er ist nicht das globale Maximum.
Stößt die Suche auf ein lokales Maximum, dann bleibt sie dort hängen und findet kein globales
Maximum.
•
Plateau: Ein Plateau ist ein flacher Bereich der Landschaft, d.h. die Nachbarn eines Punktes in
einem Plateau haben alle denselben Wert wie der Punkt selbst. Die Suche kann nur in eine
zufällig gewählte Richtung fortgesetzt werden.
•
Grat: Ein Grat ist ein Bereich mit steilen Flanken, aber entlang des Grats kann das Gefälle
gering sein. Man benötigt Operatoren, die dafür sorgen, dass die Suche entlang des Grates
verläuft und nicht nutzlos zwischen den Flanken hin und her pendelt.
Um diesen Problemen aus dem Weg zu gehen, kann man die Suche durch Bergsteigen mehrfach
von verschiedenen zufällig gewählten Startpunkten aus durchführen und den besten erzielten Wert
nehmen oder die Suche so oft durchführen, bis nach einer gewissen Anzahl von Wiederholungen
kein besserer Wert mehr gefunden wird.
4.3.2. Simuliertes Ausglühen
Die Idee des simulierten Ausglühens ist, während der Suche in zufälligen Abständen Knoten mit
schlechteren Werten auszuwählen um auf diese Weise den lokalen Maxima zu entgehen. Der
folgende Algorithmus realisiert das simulierte Ausglühen.
function SIMULIERTES-AUSGLÜHEN(Problem, Zeitplan) returns einen Lösungszustand
inputs: Problem
; eine Problembeschreibung
Zeitplan
; eine Abbildung der Zeit auf „Temperatur“
local variables: node
; der aktuelle Knoten
next
; ein Knoten
T
; eine „Temperatur“, die die Wahrscheinlichkeit von
Abwärtsschritten steuert
node ← MAKE-NODE(INITIAL-STATE[Problem])
for t ← 1 to ∞ do
T ← Zeitplan[t]
if T = 0 then return node
next ← ein zufällig gewählter Nachfolger von node
∆E ← VALUE[next] − VALUE[node]
if ∆E > 0 then node ← next
else node ← next nur mit Wahrscheinlichkeit e∆E/T
end
Technische Universität Chemnitz
Wintersemester 2003/2004
Prof. Dr. Werner Dilger
Herunterladen