20.03.2014 Aufrufe

Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...

Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...

Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> <strong>Methoden</strong> <strong>der</strong><br />

<strong>Künstlichen</strong> <strong>Intelligenz</strong><br />

W<strong>in</strong>tersemester 2012/2013<br />

Prof. Dr. Manfred Schmidt-Schauß<br />

und<br />

Dr. David Sabel<br />

Institut für Informatik<br />

Fachbereich Informatik und Mathematik<br />

<strong>Goethe</strong>-Universität Frankfurt am Ma<strong>in</strong><br />

Postfach 11 19 32<br />

D-60054 Frankfurt am Ma<strong>in</strong><br />

Email: sabel@ki.<strong>in</strong>formatik.uni-frankfurt.de<br />

Stand: 11. Februar 2013


Inhaltsverzeichnis<br />

1 E<strong>in</strong>leitung 1<br />

1.1 Themen und Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.1.1 Wesentliche Lehrbücher für <strong>die</strong>se Veranstaltung . . . . . . . . . . . 2<br />

1.1.2 Weitere Lehr- und Hanbücher . . . . . . . . . . . . . . . . . . . . . 2<br />

1.2 Was ist Künstliche <strong>Intelligenz</strong>? . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.2.1 Menschliches Handeln . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

1.2.2 Menschliches Denken . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

1.2.3 Rationales Denken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

1.2.4 Rationales Handeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

1.2.5 Ausrichtungen und Ausrichtung <strong>der</strong> Vorlesung . . . . . . . . . . . 6<br />

1.3 Philosophische Aspekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

1.3.1 Die starke und <strong>die</strong> schwache KI-Hypothese . . . . . . . . . . . . . . 8<br />

1.3.2 Der Tur<strong>in</strong>g-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

1.3.3 Das Gedankenexperiment „Ch<strong>in</strong>esischer Raum“ . . . . . . . . . . . 9<br />

1.3.4 Das Prothesenexperiment . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

1.3.5 Symbolverarbeitungshypothese vs. Konnektionismus . . . . . . . . 10<br />

1.4 KI-Paradigmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

1.4.1 Analyse und Programmieren von Teilaspekten . . . . . . . . . . . . 11<br />

1.4.2 Wissensrepräsentation und Schlussfolgern . . . . . . . . . . . . . . 11<br />

1.5 Bemerkungen zur Geschichte zur Geschichte <strong>der</strong> KI . . . . . . . . . . . . . 12<br />

1.5.1 Schlussfolgerungen aus den bisherigen Erfahrungen: . . . . . . . . 14<br />

1.6 Intelligente Agenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

1.6.1 Gesichtspunkte, <strong>die</strong> <strong>die</strong> Güte des Agenten bestimmen . . . . . . . . 16<br />

1.6.2 Lernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

1.6.3 Verschiedene Varianten von Umgebungen . . . . . . . . . . . . . . 17<br />

1.6.4 Struktur des Agenten . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

2 Suchverfahren 21<br />

2.1 Algorithmische Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

2.1.1 Beispiel: das n-Damen Problem . . . . . . . . . . . . . . . . . . . . . 22<br />

2.1.2 Beispiel: „Missionare und Kannibalen“ . . . . . . . . . . . . . . . . 23<br />

2.1.3 Suchraum, Suchgraph . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 Stand: 11. Februar 2013


Inhaltsverzeichnis<br />

2.1.4 Prozeduren für nicht-<strong>in</strong>formierte Suche (Bl<strong>in</strong>d search) . . . . . . . 27<br />

2.1.4.1 Varianten <strong>der</strong> bl<strong>in</strong>den Suche: Breitensuche und Tiefensuche 27<br />

2.1.4.2 Pragmatische Verbesserungsmöglichkeiten <strong>der</strong> Tiefensuche 29<br />

2.1.4.3 Effekt des Zurücksetzen: (Backtrack<strong>in</strong>g) . . . . . . . . . . 30<br />

2.1.4.4 Iteratives Vertiefen (iterative deepen<strong>in</strong>g) . . . . . . . . . . 31<br />

2.1.4.5 Iteratives Vertiefen (iterative deepen<strong>in</strong>g) mit Speicherung 33<br />

2.1.5 Rückwärtssuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

2.2 Informierte Suche, Heuristische Suche . . . . . . . . . . . . . . . . . . . . . 34<br />

2.2.1 Bergsteigerprozedur (Hill-climb<strong>in</strong>g) . . . . . . . . . . . . . . . . . . 36<br />

2.2.2 Der Beste-zuerst (Best-first) Suche . . . . . . . . . . . . . . . . . . . 37<br />

2.2.3 Simuliertes Ausglühen (simulated anneal<strong>in</strong>g) . . . . . . . . . . . . 39<br />

2.3 A ∗ -Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

2.3.1 Eigenschaften des A ∗ -Algorithmus . . . . . . . . . . . . . . . . . . . 43<br />

2.3.2 Spezialisierungen des A ∗ -Algorithmus: . . . . . . . . . . . . . . . . 48<br />

2.3.3 IDA ∗ -Algorithmus und SMA ∗ -Algorithmus . . . . . . . . . . . . . . 52<br />

2.4 Suche <strong>in</strong> Spielbäumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

2.4.1 Alpha-Beta Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

2.4.2 Mehr als 2 Spieler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />

2.4.3 Spiele mit Zufallsereignissen . . . . . . . . . . . . . . . . . . . . . . 67<br />

2.5 Evolutionäre (Genetische) Algorithmen . . . . . . . . . . . . . . . . . . . . 69<br />

2.5.1 Genetische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

2.5.2 Ermitteln <strong>der</strong> Selektionswahrsche<strong>in</strong>lichkeit . . . . . . . . . . . . . . 72<br />

2.5.2.1 Bemerkungen zu evolutionären Algorithmen: . . . . . . . 74<br />

2.5.2.2 Parameter e<strong>in</strong>er Implementierung . . . . . . . . . . . . . . 75<br />

2.5.3 Statistische Analyse von Genetischen Algorithmen . . . . . . . . . 75<br />

2.5.4 Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

2.5.5 Transportproblem als Beispiel . . . . . . . . . . . . . . . . . . . . . . 78<br />

2.5.6 Schlußbemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />

3 Aussagenlogik 81<br />

3.1 Syntax und Semantik <strong>der</strong> Aussagenlogik . . . . . . . . . . . . . . . . . . . . 82<br />

3.2 Folgerungsbegriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />

3.3 Tautologien und e<strong>in</strong>ige e<strong>in</strong>fache Verfahren . . . . . . . . . . . . . . . . . . 87<br />

3.4 Normalformen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

3.5 L<strong>in</strong>eare CNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

3.6 Resolution für Aussagenlogik . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />

3.6.1 Optimierungen des Resolutionskalküls . . . . . . . . . . . . . . . . 97<br />

3.6.1.1 Tautologische Klauseln . . . . . . . . . . . . . . . . . . . . 97<br />

3.6.1.2 Klauseln mit isolierten Literalen . . . . . . . . . . . . . . . 98<br />

3.6.1.3 Subsumtion . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

3.7 DPLL-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 iii Stand: 11. Februar 2013


Inhaltsverzeichnis<br />

3.8 Modellierung von Problemen als Aussagenlogische Erfüllbarkeitsprobleme 108<br />

3.9 Tableaukalkül für Aussagenlogik . . . . . . . . . . . . . . . . . . . . . . . . 113<br />

3.9.1 Tableau-Kalkül für Aussagenlogik . . . . . . . . . . . . . . . . . . . 114<br />

4 Prädikatenlogik 121<br />

4.1 Syntax und Semantik <strong>der</strong> Prädikatenlogik (P L 1 ) . . . . . . . . . . . . . . . 121<br />

4.1.1 Syntax <strong>der</strong> Prädikatenlogik erster Stufe . . . . . . . . . . . . . . . . 121<br />

4.1.2 Semantik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

4.1.3 Berechenbarkeitseigenschaften <strong>der</strong> Prädikatenlogik . . . . . . . . . 129<br />

4.1.4 Normalformen von P L 1 -Formeln . . . . . . . . . . . . . . . . . . . . 130<br />

4.2 Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133<br />

4.2.1 Grundresolution: Resolution ohne Unifikation . . . . . . . . . . . . 134<br />

4.2.2 Resolution im allgeme<strong>in</strong>en Fall . . . . . . . . . . . . . . . . . . . . . 135<br />

4.2.3 Unifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br />

4.3 Vollständigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142<br />

4.4 Löschregeln: Subsumtion, Tautologie und Isoliertheit . . . . . . . . . . . . 142<br />

4.5 Optimierungen und Varianten <strong>der</strong> Resolution . . . . . . . . . . . . . . . . . 147<br />

4.5.1 Unit-Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147<br />

4.5.2 Set-of-Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148<br />

4.5.3 UR-Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148<br />

4.5.4 Input-Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149<br />

4.5.5 L<strong>in</strong>eare Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149<br />

4.5.6 Hornklauseln und SLD-Resolution . . . . . . . . . . . . . . . . . . . 150<br />

5 Logisches Programmieren 152<br />

5.1 Von <strong>der</strong> Resolution zum Logischen Programmieren . . . . . . . . . . . . . 152<br />

5.2 Semantik von Hornklauselprogrammen . . . . . . . . . . . . . . . . . . . . 157<br />

5.2.1 Vollständigkeit <strong>der</strong> SLD-Resolution . . . . . . . . . . . . . . . . . . 159<br />

5.2.2 Strategien zur Berechnung von Antworten . . . . . . . . . . . . . . 159<br />

5.3 Implementierung logischer Programmiersprachen: Prolog . . . . . . . . . 161<br />

5.3.1 Syntaxkonventionen von Prolog . . . . . . . . . . . . . . . . . . . . 162<br />

5.3.2 Beispiele zu Prologs Tiefensuche . . . . . . . . . . . . . . . . . . . . 162<br />

5.3.3 Arithmetische Operationen . . . . . . . . . . . . . . . . . . . . . . . 165<br />

5.3.4 Listen und Listenprogrammierung . . . . . . . . . . . . . . . . . . . 167<br />

5.3.5 Differenzlisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174<br />

5.3.6 Der Cut-Operator: Steuerung <strong>der</strong> Suche . . . . . . . . . . . . . . . . 176<br />

5.3.7 Negation: Die Closed World-Annahme . . . . . . . . . . . . . . . . 179<br />

5.3.8 Vergleich: Theoretische Eigenschaften und reale Implementierungen 182<br />

5.4 Sprachverarbeitung und Parsen <strong>in</strong> Prolog . . . . . . . . . . . . . . . . . . . 182<br />

5.4.1 Kontextfreie Grammatiken für Englisch . . . . . . . . . . . . . . . . 185<br />

5.4.2 Verwendung von Def<strong>in</strong>ite Clause Grammars . . . . . . . . . . . . . 189<br />

Stand: 11. Februar 2013 iv M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


Inhaltsverzeichnis<br />

5.4.2.1 Lexikon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192<br />

5.4.2.2 Berechnung von Parse-Bäumen . . . . . . . . . . . . . . . 192<br />

5.4.2.3 DCG’s erweitert um Prologaufrufe . . . . . . . . . . . . . 193<br />

5.4.2.4 DCG’s als formales System . . . . . . . . . . . . . . . . . . 193<br />

6 Qualitatives zeitliches Schließen 194<br />

6.1 Allens Zeit<strong>in</strong>tervall-Logik . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

6.2 Darstellung Allenscher Formeln als Allensche Constra<strong>in</strong>ts . . . . . . . . . 198<br />

6.2.1 Abkürzende Schreibweise . . . . . . . . . . . . . . . . . . . . . . . . 198<br />

6.2.2 Allensche Constra<strong>in</strong>ts . . . . . . . . . . . . . . . . . . . . . . . . . . 199<br />

6.3 Der Allensche Kalkül . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200<br />

6.3.1 Berechnung des Allenschen Abschlusses e<strong>in</strong>es Constra<strong>in</strong>ts . . . . . 202<br />

6.4 Untersuchungen zum Kalkül . . . . . . . . . . . . . . . . . . . . . . . . . . 205<br />

6.4.1 Komplexität <strong>der</strong> Berechnung des Allenschen Abschlusses . . . . . 205<br />

6.4.2 Korrektheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207<br />

6.4.3 Partielle Vollständigkeit . . . . . . . . . . . . . . . . . . . . . . . . . 208<br />

6.5 Unvollständigkeiten des Allenschen Kalküls. . . . . . . . . . . . . . . . . . 209<br />

6.6 E<strong>in</strong>ge Analysen zur Implementierungen . . . . . . . . . . . . . . . . . . . . 211<br />

6.7 Komplexität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212<br />

6.8 E<strong>in</strong>e polynomielle und vollständige Variante . . . . . . . . . . . . . . . . . 214<br />

7 Konzeptbeschreibungssprachen 216<br />

7.1 Ursprünge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216<br />

7.1.1 Semantische Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216<br />

7.1.1.1 Operationen auf semantischen Netzen: . . . . . . . . . . . 217<br />

7.1.2 Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218<br />

7.2 Attributive Konzeptbeschreibungssprachen (Description Logic) . . . . . . 219<br />

7.2.1 Die Basis-Sprache AL . . . . . . . . . . . . . . . . . . . . . . . . . . 220<br />

7.2.2 Allgeme<strong>in</strong>ere Konzept-Def<strong>in</strong>itionen . . . . . . . . . . . . . . . . . . 223<br />

7.2.3 Semantik von Konzepttermen . . . . . . . . . . . . . . . . . . . . . . 225<br />

7.2.4 Namensgebung <strong>der</strong> Familie <strong>der</strong> AL-Sprachen . . . . . . . . . . . . 226<br />

7.2.5 Inferenzen und Eigenschaften . . . . . . . . . . . . . . . . . . . . . . 228<br />

7.2.6 Anwendungen <strong>der</strong> Beschreibungslogiken . . . . . . . . . . . . . . . 228<br />

7.3 T-Box und A-Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229<br />

7.3.1 Term<strong>in</strong>ologien: Die T-Box . . . . . . . . . . . . . . . . . . . . . . . . 229<br />

7.3.2 Fixpunktsemantik für zyklische T-Boxen . . . . . . . . . . . . . . . 231<br />

7.3.3 Inklusionen <strong>in</strong> T-Boxen . . . . . . . . . . . . . . . . . . . . . . . . . . 235<br />

7.3.4 Beschreibung von Modellen: Die A-Box . . . . . . . . . . . . . . . . 236<br />

7.3.5 T-Box und A-Box: Term<strong>in</strong>ologische Beschreibung . . . . . . . . . . 237<br />

7.3.6 Erweiterung <strong>der</strong> Term<strong>in</strong>ologie um Individuen . . . . . . . . . . . . 238<br />

7.3.7 Open-World und Closed-World Semantik . . . . . . . . . . . . . . . 239<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 v Stand: 11. Februar 2013


Inhaltsverzeichnis<br />

7.4 Inferenzen <strong>in</strong> Beschreibungslogiken: Subsumtion . . . . . . . . . . . . . . . 240<br />

7.4.1 Struktureller Subsumtionstest für <strong>die</strong> e<strong>in</strong>fache Sprache FL 0 . . . . 240<br />

7.4.1.1 Struktureller Subsumtionstest . . . . . . . . . . . . . . . . 241<br />

7.4.2 Struktureller Subsumtionstest für weitere DL-Sprachen . . . . . . . 244<br />

7.4.2.1 Subsumtionstest für <strong>die</strong> Sprache FL − . . . . . . . . . . . 244<br />

7.4.2.2 Weitere Sprachen . . . . . . . . . . . . . . . . . . . . . . . 244<br />

7.4.2.3 Subsumtions-Algorithmus für AL . . . . . . . . . . . . . . 244<br />

7.4.2.4 Konflikte bei Anzahlbeschränkungen . . . . . . . . . . . . 245<br />

7.4.3 Subsumtion und Äquivalenzen <strong>in</strong> ALC . . . . . . . . . . . . . . . . 245<br />

7.4.4 E<strong>in</strong> Subsumtionsalgorithmus für ALC . . . . . . . . . . . . . . . . . 246<br />

7.4.5 Subsumtion mit Anzahlbeschränkungen . . . . . . . . . . . . . . . 250<br />

7.4.5.1 Konsistenztest von A-Boxen . . . . . . . . . . . . . . . . . 250<br />

7.4.6 Komplexität <strong>der</strong> Subsumtions-Inferenzen <strong>in</strong> <strong>der</strong> T-Box/A-Box . . . 251<br />

7.5 Erweiterungen, weitere Fragestellungen und Anwendungen . . . . . . . . 251<br />

7.5.1 Konstrukte auf Rollen: Rollenterme . . . . . . . . . . . . . . . . . . 251<br />

7.5.2 Unifikation <strong>in</strong> Konzeptbeschreibungssprachen . . . . . . . . . . . . 252<br />

7.5.2.1 Unifikation <strong>in</strong> EL . . . . . . . . . . . . . . . . . . . . . . . 252<br />

7.5.2.2 Unifikation <strong>in</strong> ALC . . . . . . . . . . . . . . . . . . . . . . 253<br />

7.5.3 Beziehung zu Entscheidungsbäumen, Entscheidungslisten . . . . . 253<br />

7.5.4 Merkmals-strukturen (feature-structures) . . . . . . . . . . . . . . . 253<br />

7.5.5 Verarbeitung natürlicher (geschriebener) Sprache . . . . . . . . . . 254<br />

7.6 OWL – Die Web Ontology Language . . . . . . . . . . . . . . . . . . . . . . 255<br />

8 Masch<strong>in</strong>elles Lernen 258<br />

8.1 <strong>E<strong>in</strong>führung</strong>: Masch<strong>in</strong>elles Lernen . . . . . . . . . . . . . . . . . . . . . . . . 258<br />

8.1.1 E<strong>in</strong>ordnung von Lernverfahren . . . . . . . . . . . . . . . . . . . . . 259<br />

8.1.2 E<strong>in</strong>ige Maßzahlen zur Bewertung von Lern- und Klassifikationsverfahren<br />

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260<br />

8.2 Wahrsche<strong>in</strong>lichkeit und Entropie . . . . . . . . . . . . . . . . . . . . . . . . 262<br />

8.2.1 Wahrsche<strong>in</strong>lichkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262<br />

8.2.2 Entropie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263<br />

8.3 Lernen mit Entscheidungsbäumen . . . . . . . . . . . . . . . . . . . . . . . 264<br />

8.3.1 Das Szenario und Entscheidungsbäume . . . . . . . . . . . . . . . . 264<br />

8.3.2 Lernverfahren ID3 und C4.5 . . . . . . . . . . . . . . . . . . . . . . . 267<br />

8.3.2.1 C4.5 als verbesserte Variante von ID3 . . . . . . . . . . . . 271<br />

8.3.2.2 Übergeneralisierung (Overfitt<strong>in</strong>g) . . . . . . . . . . . . . . 272<br />

Literatur 274<br />

Stand: 11. Februar 2013 vi M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1<br />

E<strong>in</strong>leitung<br />

1.1 Themen und Literatur<br />

Für <strong>die</strong> Veranstaltung s<strong>in</strong>d <strong>die</strong> folgenden Inhalte geplant (kann sich noch leicht än<strong>der</strong>n).<br />

• <strong>E<strong>in</strong>führung</strong>: Ziele <strong>der</strong> künstliche <strong>Intelligenz</strong>, <strong>in</strong>telligente Agenten.<br />

• Suchverfahren: Un<strong>in</strong>formierte und <strong>in</strong>formierte Suche, Suche <strong>in</strong> Spielbäumen.<br />

• Evolutionäre (o<strong>der</strong> auch genetische) Algorithmen.<br />

• Wissensrepräsentation und Deduktion <strong>in</strong> <strong>der</strong> Aussagenlogik.<br />

• Prädikatenlogik<br />

• Planen (evtl.)<br />

• Qualitatives zeitliches Schließen am Beispiel von Allens Intervalllogik<br />

• Konzeptbeschreibungsschreibungssprachen<br />

• Masch<strong>in</strong>elles Lernen<br />

Wir werden e<strong>in</strong>ige Algorithmen erörtern, wobei wir neben (imperativem) Pseudo-Code<br />

auch desöfteren e<strong>in</strong>e entsprechende Implementierung <strong>in</strong> <strong>der</strong> funktionalen Programmiersprache<br />

Haskell angeben. Die Haskellprogramme <strong>die</strong>nen eher zum Verständnis und s<strong>in</strong>d<br />

daher selbst ke<strong>in</strong> Prüfungsstoff.<br />

Stand: 15. Oktober 2012 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1 E<strong>in</strong>leitung<br />

1.1.1 Wesentliche Lehrbücher für <strong>die</strong>se Veranstaltung<br />

D. Poole, and A. Mackworth, Artificial Intelligence: Foundations of Computational<br />

Agents. Cambridge University Press, 2010. auch onl<strong>in</strong>e unter http://art<strong>in</strong>t.<strong>in</strong>fo/<br />

frei verfügbar<br />

S.J. Russel and P. Norvig. Artificial Intelligence: A Mo<strong>der</strong>n Approach. Third Edition,<br />

Prentice Hall, 2010.<br />

W. Ertel Grundkurs Künstliche <strong>Intelligenz</strong>: E<strong>in</strong>e praxisorientierte <strong>E<strong>in</strong>führung</strong>. Vieweg-<br />

Teubner Verlag, 2009. Aus dem Netz <strong>der</strong> Universität als E-Book kostenlos verfügbar<br />

unter http://www.spr<strong>in</strong>gerl<strong>in</strong>k.com/content/t13128/<br />

D. Poole, A. Mackworth, and R. Goebel. Computational Intelligence: A Logical Approach.<br />

Oxford University Press, 1998.<br />

Franz Baa<strong>der</strong>, Deborah McGu<strong>in</strong>ess, Daniele Nardi, and Peter Patel-<br />

Schnei<strong>der</strong>. The description logic handbook. Cambridge university press,<br />

2002. Aus dem Netz <strong>der</strong> Universität als E-Book kostenlos verfügbar unter<br />

http://site.ebrary.com/lib/frankfurtm/docDetail.action?docID=10069975<br />

Christoph Beierle and Gabriele Kern-Isberner. <strong>Methoden</strong> wissensbasierter Systeme. 4.<br />

Auflage, Vieweg, 2008. Aus dem Netz <strong>der</strong> Universität als E-Book kostenlos verfügbar<br />

unter http://www.spr<strong>in</strong>gerl<strong>in</strong>k.com/content/h67586/<br />

P. W<strong>in</strong>ston. Artificial Intelligence. Addison Wesley, 1992.<br />

McDermott Charniak. Introduction to Artificial Intelligence. Addison Wesley, 1985.<br />

Genesereth and Nilsson. Logical foundations of artificial <strong>in</strong>telligence. Morgan Kaufmann,<br />

1988.<br />

M. G<strong>in</strong>sberg. Essentials of artificial <strong>in</strong>telligence. Morgan Kaufmann, 1993.<br />

Wolfgang Bibel, Steffen Hölldobler, and Torsten Schaub. Wissensrepräsentation und<br />

Inferenz. E<strong>in</strong>e grundlegende <strong>E<strong>in</strong>führung</strong>. Vieweg, 1993.<br />

Joachim Herzberg. Planen: <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Planerstellungsmethoden <strong>der</strong> <strong>Künstlichen</strong><br />

<strong>Intelligenz</strong>. Reihe Informatik. BI Wissenschaftsverlag, 1989.<br />

Michael M. Richter. Pr<strong>in</strong>zipien <strong>der</strong> <strong>Künstlichen</strong> <strong>in</strong>telligenz. Teubner Verlag, 1992.<br />

1.1.2 Weitere Lehr- und Hanbücher<br />

A. Barr, P.R. Cohen, and E.A. Feigenbaum. The Handbook of Artificial Intelligence.<br />

Addison Wesley, 1981-1989. 4 Bände.<br />

Stand: 15. Oktober 2012 2 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1.2 Was ist Künstliche <strong>Intelligenz</strong>?<br />

E. Davies. Representation of Commonsense Knowledge. Morgan Kaufmann, 1990.<br />

H.L. Dreyfus. What Computers Can’t Do. Harper Colophon Books, 1979.<br />

Günter Görz, editor. <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> künstliche <strong>Intelligenz</strong>. Addison Wesley, 1993.<br />

Peter Jackson. Introduction to expert systems, 3rd ed. Addison-Wesley, 1999.<br />

George F. Luger and William A. Stubblefield . Artificial <strong>in</strong>telligence: structures and<br />

strategies for complex problem solv<strong>in</strong>g. 3rd ed. Addison-Wesley, 1998.<br />

Zbigniew Michalewicz.<br />

Spr<strong>in</strong>ger-Verlag, 1994.<br />

Genetic algorithms + data structures = evolution programs.<br />

Todd C. Moody. Philosophy and Artificial Intelligence. Prentice Hall, 1993.<br />

Frank Puppe. Problemlösungsmethoden <strong>in</strong> Expertensystemen. Spr<strong>in</strong>ger-Verlag, 1990.<br />

Frank Puppe. <strong>E<strong>in</strong>führung</strong> <strong>in</strong> Expertensysteme. Spr<strong>in</strong>ger-Verlag, 1991.<br />

Peter Schefe. Künstliche <strong>Intelligenz</strong>, Überblick und Grundlagen. Reihe Informatik. BI<br />

Wissenschaftsverlag, 1991.<br />

S. Shapiro. Encyclopedia of Artificial Intelligence. John Wiley, 1989-1992. 2 Bände.<br />

Herbert Stoyan. Programmiermethoden <strong>der</strong> <strong>Künstlichen</strong> <strong>Intelligenz</strong>. Spr<strong>in</strong>ger-Verlag,<br />

1988.<br />

J. Retti u.a. Artificial Intelligence – E<strong>in</strong>e <strong>E<strong>in</strong>führung</strong>. Teubner Verlag, 1986.<br />

Vidysagar. A theory of learn<strong>in</strong>g and generalization. Spr<strong>in</strong>ger-Verlag.<br />

Ingo Wegener, editor. Highlights aus <strong>der</strong> Informatik. Spr<strong>in</strong>ger, 1996.<br />

Re<strong>in</strong>hard Wilhelm, editor. Informatics – 10 years back – 10 years ahead. Lecture Notes<br />

<strong>in</strong> Computer Science. Spr<strong>in</strong>ger-Verlag, 2000.<br />

1.2 Was ist Künstliche <strong>Intelligenz</strong>?<br />

Ziel <strong>der</strong> <strong>Künstlichen</strong> <strong>Intelligenz</strong> ist <strong>die</strong> Herstellung e<strong>in</strong>es <strong>in</strong>telligenten Agenten. Dies kann<br />

man auch als <strong>die</strong> Herstellung e<strong>in</strong>es möglichst guten (autonomen, lernenden, <strong>in</strong>telligenten,<br />

automatischen) Informationssystems ansehen. E<strong>in</strong>ige Beispiele für solche System s<strong>in</strong>d:<br />

• Taschenrechner, <strong>die</strong> analog zum Menschen Rechenaufgaben lösen können (dabei<br />

aber an<strong>der</strong>s Rechnen als <strong>der</strong> Mensch).<br />

• Schachspielende Computer wie z.B. Deep Blue, Deep Thought und Deep Fritz<br />

• Sprachübersetzer wie z.B. GoogleTranslate, Babelfish, etc.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 3 Stand: 15. Oktober 2012


1 E<strong>in</strong>leitung<br />

• wissensbasierte Systeme <strong>in</strong> vielen Varianten<br />

• Texterkennungssysteme <strong>in</strong> Komb<strong>in</strong>ationen mit H<strong>in</strong>tergrundwissen wie z.B. das<br />

Watson-Programm 1 , welches bei <strong>der</strong> amerikanischen TV-Show „Jeopardy“ gegen<br />

frühere Champions antrat und gewann.<br />

• Roboter, z.B. Haushaltsrobotor wie Staubsaugerroboter, Industrieroboter, etc.<br />

• <strong>in</strong>telligente Informationssysteme<br />

Allgeme<strong>in</strong> ist e<strong>in</strong> <strong>in</strong>telligenter Agent, <strong>der</strong> im Kern e<strong>in</strong>en Computer hat und mit <strong>der</strong> physikalischen<br />

Umwelt agiert, e<strong>in</strong> Roboter. S<strong>in</strong>d <strong>die</strong> Umgebungen nicht-physikalisch, so wird<br />

<strong>die</strong>s meist durch spezielle Namen gekennzeichnet: E<strong>in</strong> Software-Robotor (softbot) hat e<strong>in</strong>e<br />

Wissensbasis und gibt Antworten und Ratschläge, aber agiert nicht mit <strong>der</strong> physikalischen<br />

Umwelt. Web-Roboter (webbot) <strong>in</strong>teragieren mit dem WWW, z.B. zum Durchsuchen<br />

und Erstellen von Suchdatenbanken im WWW. E<strong>in</strong> Chat-Roboter (chatbot) agiert<br />

<strong>in</strong> e<strong>in</strong>em Chat. E<strong>in</strong> Agent hat als E<strong>in</strong>gaben und Zwischenzustände zum e<strong>in</strong>en Vorwissen<br />

über <strong>die</strong> Umgebung (z.B. e<strong>in</strong>e Karte), aber auch erlerntes Wissen, Testfälle etc. Die<br />

vom Agent zu erreichenden Ziele s<strong>in</strong>d üblicherweise mit Prioritäten und Wichtigkeiten<br />

versehen. Allgeme<strong>in</strong> kann e<strong>in</strong> Agent Beobachtungen über <strong>die</strong> Umgebung und auch Beobachtungen<br />

über sich selbst machen (und daraus Schlüsse ziehen, beispielsweise Lernen).<br />

Aufgrund <strong>die</strong>ser „E<strong>in</strong>gaben“ berechnet <strong>der</strong> Agent als als Ausgabe se<strong>in</strong>en nächste Aktion.<br />

Vorwissen<br />

Erfahrungswissen<br />

Ziele, Prioritäten<br />

Beobachtungen<br />

Agent<br />

Aktion<br />

Bevor wir auf <strong>die</strong> genauere Modellierung von Agenten e<strong>in</strong>gehen, wollen wir erörtern,<br />

was man unter Künstlicher <strong>Intelligenz</strong> versteht, d.h. wann e<strong>in</strong> System (Computer) über<br />

künstliche <strong>Intelligenz</strong> verfügt und welche Eigenschaften e<strong>in</strong>e Methode als KI-Methode<br />

auszeichnet.<br />

Allerd<strong>in</strong>gs gibt es ke<strong>in</strong>e e<strong>in</strong>deutige allgeme<strong>in</strong>e Def<strong>in</strong>ition <strong>der</strong> künstlichen <strong>Intelligenz</strong>.<br />

Wir werden daher verschiedene Ansätze und Kennzeichen für künstliche <strong>Intelligenz</strong> erläutern.<br />

Gemäß (Russell & Norvig, 2010) kann man <strong>die</strong> verschiedenen Ansätze entsprechend<br />

<strong>der</strong> zwei Dimensionen:<br />

• menschliches Verhalten gegenüber rationalem Verhalten<br />

• Denken gegenüber Handeln<br />

1 www.ibm.com/de/watson<br />

Stand: 15. Oktober 2012 4 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1.2 Was ist Künstliche <strong>Intelligenz</strong>?<br />

<strong>in</strong> vier Klassen von Ansätzen unterteilen: Menschliches Denken, rationales Denken,<br />

menschliches Handeln und rationales Handeln. Während „menschlich“ bedeutet, dass<br />

das Ziel ist, den Menschen nachzuahmen, me<strong>in</strong>t „rational“ e<strong>in</strong> vernünftiges Vorgehen,<br />

das optimal (bezüglich e<strong>in</strong>er Kostenabschätzung o.ä.) ist. Wir erläuten im Folgenden genauer,<br />

was KI entsprechend <strong>die</strong>ser Klassen me<strong>in</strong>t und als Ziel hat.<br />

1.2.1 Menschliches Handeln<br />

Verwendet man menschliches Handeln als Ziel künstlicher <strong>Intelligenz</strong>, so steht im Vor<strong>der</strong>grund,<br />

Systeme o<strong>der</strong> auch Roboter zu erschaffen, <strong>die</strong> analog zu Menschen handeln.<br />

E<strong>in</strong> Ziel dabei ist es, <strong>Methoden</strong> und Verfahren zu entwickeln, <strong>die</strong> Computer dazu br<strong>in</strong>gen,<br />

D<strong>in</strong>ge zu tun, <strong>die</strong> momentan nur <strong>der</strong> Mensch kann, o<strong>der</strong> <strong>in</strong> denen <strong>der</strong> Mensch noch<br />

den Computern überlegen ist. E<strong>in</strong>e Methode, um „nachzuweisen“, ob <strong>der</strong> Computer entsprechend<br />

<strong>in</strong>telligent handelt, besteht dar<strong>in</strong>, se<strong>in</strong>e Handlungen mit den Handlungen des<br />

Menschen zu vergleichen (wie z.B. <strong>der</strong> Tur<strong>in</strong>g-Test, siehe unten).<br />

1.2.2 Menschliches Denken<br />

Dieser Ansatz verfolgt das Ziel, dass e<strong>in</strong> Computer „wie e<strong>in</strong> Mensch denkt“. Dabei muss<br />

zunächst erforscht werden, wie <strong>der</strong> Mensch selbst denkt, bevor entsprechende Modelle<br />

auf Computer übertragen werden können. Dieses Erforschen kann beispielsweise durch<br />

psychologische Experimente o<strong>der</strong> Hirntomografie erfolgen. Ist e<strong>in</strong>e Theorie aufgestellt,<br />

so kann <strong>die</strong>se <strong>in</strong> e<strong>in</strong> System umgesetzt werden. Wenn <strong>die</strong> E<strong>in</strong>- und Ausgaben <strong>die</strong>ses Systems<br />

dem menschlichen Verhalten entsprechen, kann man davon ausgehen, dass <strong>die</strong>ses<br />

System auch im Mensch e<strong>in</strong>gesetzt werden könnte und daher dem menschlichen Denken<br />

entspricht. Dieser Ansatz ist jedoch nicht alle<strong>in</strong>ig <strong>in</strong> <strong>der</strong> Informatik angesiedelt, son<strong>der</strong>n<br />

entspricht eher dem <strong>in</strong>terdiszipl<strong>in</strong>ären Gebiet <strong>der</strong> Kognitionswissenschaft, <strong>die</strong> <strong>in</strong>formatische<br />

Modelle mit experimentellen psychologischen Versuchen komb<strong>in</strong>iert, um Menschliches<br />

Verhalten durch Modelle zu erfassen und nachzuahmen. Beispiele für <strong>die</strong>ses Gebiet<br />

s<strong>in</strong>d Fragen danach, wie <strong>der</strong> Mensch etwas erkennt (z.B. wie erkennen wir Gesichter),<br />

o<strong>der</strong> Verständnis des Spracherwerbs des Menschen. E<strong>in</strong> System ist kognitiv adäquat, wenn<br />

es strukturell und methodisch wie e<strong>in</strong> Mensch arbeitet und entsprechende Leistungen<br />

erzielt. Z.B. ist e<strong>in</strong> Taschenrechner nicht kognitiv adäquat, da er an<strong>der</strong>s ad<strong>die</strong>rt als <strong>der</strong><br />

Mensch, <strong>die</strong> Methodik stimmt also nicht übere<strong>in</strong>. Daher ist <strong>die</strong>ser Ansatz <strong>der</strong> kognitiven<br />

Simulation eher vom Gebiet <strong>der</strong> künstlichen <strong>Intelligenz</strong> abzugrenzen (also als verschieden<br />

anzusehen), da er sehr auf exakte Nachahmung des menschlichen Denkens zielt. Wir werden<br />

daher <strong>die</strong>sen Ansatz nicht weiter verfolgen, son<strong>der</strong>n ihn <strong>der</strong> Kognitionswissenschaft<br />

überlassen.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 5 Stand: 15. Oktober 2012


1 E<strong>in</strong>leitung<br />

1.2.3 Rationales Denken<br />

Rationales Denken versucht Denken durch Axiome und korrekte Schlussregeln zu formalisieren.<br />

Meistens wird hierzu e<strong>in</strong>e Logik verwendet. D.h. <strong>der</strong> logische Ansatz (e<strong>in</strong> großes<br />

Teilgebiet <strong>der</strong> <strong>Künstlichen</strong> <strong>Intelligenz</strong>) ist es, aufgrund e<strong>in</strong>er Logik e<strong>in</strong> Deduktionssystem<br />

zu implementieren, das sich <strong>in</strong>telligent verhält. E<strong>in</strong>e Hürde bei <strong>die</strong>sem Ansatz ist es, das<br />

entsprechende Problem bzw. das Wissen <strong>in</strong> e<strong>in</strong>er Logik zu formalisieren.<br />

1.2.4 Rationales Handeln<br />

Dies ist <strong>der</strong> Agenten-Ansatz. E<strong>in</strong> Agent ist e<strong>in</strong> System, dass agiert, d.h. auf se<strong>in</strong>e Umgebung<br />

(<strong>die</strong> E<strong>in</strong>gaben) e<strong>in</strong>e Reaktion (<strong>die</strong> Ausgaben) durchführt. Dabei erwartet man<br />

im Allgeme<strong>in</strong>en, dass <strong>der</strong> Agent autonom operiert, d.h. auf <strong>die</strong> Umgebung für längere<br />

Zeiträume reagiert, sich auf Än<strong>der</strong>ungen anpassen kann und e<strong>in</strong> Ziel verfolgt (und <strong>die</strong>ses<br />

eventuell den Gegebenheiten anpasst). E<strong>in</strong> rationaler Agent ist e<strong>in</strong> Agent, <strong>der</strong> se<strong>in</strong><br />

Ergebnis maximiert, d.h. stets das bestmögliche Ergebnis erzielt. Dieser Ansatz ist sehr<br />

allgeme<strong>in</strong>, und kann auch teilweise <strong>die</strong> an<strong>der</strong>en Ansätze mite<strong>in</strong>beziehen. So ist es durchaus<br />

denkbar, dass e<strong>in</strong> rationaler Agent e<strong>in</strong>e Logik mitsamt Schlussregeln verwendet, um<br />

rationale Entscheidungen zu treffen. Die Wirkung des rationalen Agentes kann menschlich<br />

se<strong>in</strong>, wenn <strong>die</strong>s eben rational ist. Es ist jedoch ke<strong>in</strong>e Anfor<strong>der</strong>ung an den rationalen<br />

Agent, menschliches Verhalten abzubilden. Dies ist meist e<strong>in</strong> Vorteil, da man sich eben<br />

nicht an e<strong>in</strong>em gegebenen Modell (dem Mensch) orientiert, son<strong>der</strong>n auch davon unabhängige<br />

<strong>Methoden</strong> und Verfahren verwenden kann. E<strong>in</strong> weiterer Vorteil ist, dass Rationalität<br />

klar mathematisch def<strong>in</strong>iert werden kann, und man daher philosophische Fragen,<br />

was <strong>in</strong>telligentes Verhalten o<strong>der</strong> Denken ist, quasi umgehen kann.<br />

1.2.5 Ausrichtungen und Ausrichtung <strong>der</strong> Vorlesung<br />

Die Kognitionswissenschaft versucht das <strong>in</strong>telligente Handeln und Denken des Menschen<br />

zu analysieren, zu modellieren und durch <strong>in</strong>formatische Systeme nachzuahmen. Dafür<br />

werden <strong>in</strong>sbeson<strong>der</strong>e das Sprachverstehen, Bildverstehen (und auch Videoverstehen) untersucht<br />

und durch Lernverfahren werden entsprechende Systeme tra<strong>in</strong>iert und verbessert.<br />

Die <strong>in</strong>genieurmäßig ausgerichtet KI h<strong>in</strong>gegen stellt <strong>Methoden</strong>, Techniken und Werkzeuge<br />

zum Lösen komplexer Anwendungsprobleme bereit, <strong>die</strong> teilweise kognitive Fähigkeiten<br />

erfor<strong>der</strong>n. Als Beispiele s<strong>in</strong>d hier Deduktionstechniken, KI-Programmiersprachen,<br />

neuronale Netze als Mustererkenner, Lernalgorithmen, wissensbasierte Systeme, Expertensysteme<br />

zu nennen.<br />

In <strong>der</strong> Vorlesung werden wir <strong>die</strong> <strong>in</strong>genieurmäßige Ausrichtung verfolgen und uns mit<br />

direkt programmierbaren KI-<strong>Methoden</strong> beschäftigen, <strong>die</strong> <strong>in</strong>sbeson<strong>der</strong>e Logik <strong>in</strong> verschiedenen<br />

Varianten verwenden.<br />

E<strong>in</strong>ige Gebiete <strong>der</strong> <strong>Künstlichen</strong> <strong>Intelligenz</strong> s<strong>in</strong>d<br />

• Programmierung strategischer Spiele (Schach, ...)<br />

Stand: 15. Oktober 2012 6 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1.3 Philosophische Aspekte<br />

• Automatisches/Interaktives Problemlösen und Beweisen<br />

• Natürlichsprachliche Systeme (Computerl<strong>in</strong>guistik)<br />

• Bildverarbeitung<br />

• Robotik<br />

• (mediz<strong>in</strong>ische) Expertensysteme<br />

• Masch<strong>in</strong>elles Lernen<br />

1.3 Philosophische Aspekte<br />

Wir betrachten kurz e<strong>in</strong>ige philosophische Aspekte <strong>der</strong> künstlichen <strong>Intelligenz</strong>, <strong>in</strong>dem<br />

wir zunächst <strong>die</strong> philosophischen Richtungen Materialismus, Behaviorismus und Funktionalismus<br />

erötern.<br />

Materialismus Dem Materialismus liegt <strong>der</strong> Gedanke zu grunde, dass es nichts gibt<br />

außer Materie. Diese bewirkt auch den Geist bzw. <strong>die</strong> Gedanken e<strong>in</strong>es Menschen. Die<br />

Implikation daraus ist, dass alles was e<strong>in</strong>en Menschen ausmacht pr<strong>in</strong>zipiell mithilfe naturwissenschaftlicher<br />

<strong>Methoden</strong> (Chemie, Physik, Biologie, ...) analysierbar ist. Als Konsequenz<br />

(<strong>in</strong>sbeson<strong>der</strong>e für <strong>die</strong> künstliche <strong>Intelligenz</strong>) ergibt sich, dass pr<strong>in</strong>zipiell auch<br />

alles konstruierbar ist, <strong>in</strong>sbeson<strong>der</strong>e ist bei <strong>die</strong>sem Ansatz im Pr<strong>in</strong>zip auch <strong>der</strong> denkende,<br />

<strong>in</strong>telligent Mensch konstruierbar.<br />

Behaviorismus Der Behaviorismus geht davon aus, dass nur das Beobachtbare Gegenstand<br />

<strong>der</strong> Wissenschaft ist. D.h. nur verifizierbare Fragen und Probleme werden als s<strong>in</strong>nvoll<br />

angesehen. Glauben, Ideen, Wissen s<strong>in</strong>d nicht direkt, son<strong>der</strong>n nur <strong>in</strong>direkt beobachtbar.<br />

Bewußtse<strong>in</strong>, Ideen, Glaube, Furcht, usw. s<strong>in</strong>d Umschreibungen für bestimmte Verhaltensmuster.<br />

E<strong>in</strong> Problem <strong>die</strong>ser Sichtweise ist, dass man zum Verifizieren evtl. unendlich<br />

viele Beobachtungen braucht. Zum Falsifizieren kann h<strong>in</strong>gegen e<strong>in</strong>e genügen. Äquivalenz<br />

von Systemen (z.B. Mensch und Roboter) wird angenommen, wenn sie gleiches E<strong>in</strong>-<br />

/Ausgabe-Verhalten zeigen.<br />

Funktionalismus Der Funktionalismus geht davon aus, dass geistige Zustände (Ideen,<br />

Glauben, Furcht, ...) <strong>in</strong>terne (funktionale) Zustände e<strong>in</strong>es komplexen System s<strong>in</strong>d. E<strong>in</strong>zig<br />

<strong>die</strong> Funktion def<strong>in</strong>iert <strong>die</strong> Semantik e<strong>in</strong>es Systems. D.h. <strong>der</strong> Zustand S 1 des Systems A is<br />

funktional äquivalent zu Zustand S 2 des Systems B, gdw. A und B bei gleicher E<strong>in</strong>gabe<br />

<strong>die</strong> gleiche Ausgabe liefern und <strong>in</strong> funktional äquivalente Zustände übergehen. Z.B. s<strong>in</strong>d<br />

das Röhren-Radio und das Transistor-Radio funktional äquivalent, da sie <strong>die</strong>selbe Funktion<br />

implementieren. Im Unterschied dazu s<strong>in</strong>d Radio und CD-Player nicht äquivalent.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 7 Stand: 15. Oktober 2012


1 E<strong>in</strong>leitung<br />

Dieser Ansatz läuft darauf h<strong>in</strong>aus, dass <strong>der</strong> Mensch im Pr<strong>in</strong>zip e<strong>in</strong> endlicher Automat<br />

mit E<strong>in</strong>/Ausgabe ist, wenn auch mit sehr vielen Zuständen.<br />

1.3.1 Die starke und <strong>die</strong> schwache KI-Hypothese<br />

Im Rahmen <strong>der</strong> <strong>Künstlichen</strong> <strong>Intelligenz</strong> unterscheidet <strong>die</strong> Philosophie <strong>die</strong> schwache und<br />

<strong>die</strong> starke KI-Hypothese. Die schwache KI-Hypothese ist <strong>die</strong> Behauptung, dass Masch<strong>in</strong>en<br />

agieren können, alsob sie <strong>in</strong>telligent wären.<br />

Die starke KI-Hypothese geht im Gegensatz dazu davon aus, dass Masch<strong>in</strong>en wirklich<br />

denken können, d.h. sie simulieren nicht nur das Denken.<br />

Die schwache KI-Hypothese wird von den meisten als gegeben h<strong>in</strong>genommen. Die starke<br />

KI-Hypothese steht <strong>in</strong> <strong>der</strong> KI-Forschung im Allgeme<strong>in</strong>en nicht im Vor<strong>der</strong>grund, son<strong>der</strong>n<br />

eher <strong>die</strong> pragmatische Sichtweise, dass es irrelevant ist, ob das „Denken“ nur ansche<strong>in</strong>lich<br />

o<strong>der</strong> tatsächlich passiert – hauptsache das System funktioniert.<br />

Trotzallem sollte man sich als KI-Forscher über <strong>die</strong> ethisch-moralischen Konsequenzen<br />

se<strong>in</strong>er Forschung bewusst se<strong>in</strong>.<br />

1.3.2 Der Tur<strong>in</strong>g-Test<br />

E<strong>in</strong> Test, <strong>der</strong> <strong>die</strong> starke KI-Hypothese nachweisen könnte, könnte <strong>der</strong> folgende von<br />

Alan Tur<strong>in</strong>g vorgeschlagene Test se<strong>in</strong>. Der sogenannte Tur<strong>in</strong>gtest besteht dar<strong>in</strong>, dass e<strong>in</strong><br />

menschlicher Fragesteller schriftliche Fragen an den Computer (<strong>die</strong> Gegenstelle) stellt<br />

und <strong>die</strong>ser darauf antwortet. Der Test ist bestanden, wenn <strong>der</strong> Fragesteller nicht erkennen<br />

kann, ob <strong>die</strong> Antworten von e<strong>in</strong>em Computer o<strong>der</strong> von e<strong>in</strong>em Menschen stammen, d.h.<br />

<strong>die</strong> Gegenstelle sollte wechselsweise mal durch den Computer mal durch e<strong>in</strong>en Mensch<br />

ersetzt werden.<br />

Kommunikationsleitung<br />

(Textübertragung)<br />

menschlicher<br />

Fragesteller<br />

Gegenstelle<br />

(Mensch o<strong>der</strong> Computer)<br />

E<strong>in</strong> Problem des Tur<strong>in</strong>gtests ist, dass <strong>die</strong>ser nicht objektiv ist, da er von den Fähigkeiten<br />

des menschlichen Fragestellers abhängt, z.B. vom Wissen über aktuelle Fähigkeiten e<strong>in</strong>es<br />

Computers. Die Aussagekraft kann durch wie<strong>der</strong>holen des Experiments mit mehreren<br />

Fragestellern erhöht werden.<br />

Der Test ist absichtlich so ausgelegt, dass es ke<strong>in</strong>e physische Interaktion zwischen<br />

Mensch und Computer gibt (<strong>der</strong> Mensch sieht den Computer nicht und er stellt <strong>die</strong> Fragen<br />

schriftlich), da <strong>die</strong>se zusätzlichen Anfor<strong>der</strong>ungen nicht <strong>die</strong> <strong>Intelligenz</strong> ausmachen.<br />

H<strong>in</strong>gegen verwendet <strong>der</strong> totale Tur<strong>in</strong>gtest zusätzlich e<strong>in</strong> Videosignal, so dass <strong>der</strong> Computer<br />

anhand <strong>die</strong>ses Signals auch den menschlichen Befrager analysisieren kann (z.B.<br />

Stand: 15. Oktober 2012 8 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1.3 Philosophische Aspekte<br />

durch Gestenerkennung), und umgekehrt <strong>der</strong> Befrager feststellen kann, ob <strong>der</strong> Befragte<br />

über wahrnehumngsorientierte Fähigkeiten verfügt. Zusätzlich kann <strong>der</strong> Befrager physisische<br />

Objekte an den Befragten übergeben. Der Computer muss daher über Fähigkeiten<br />

zur Objekterkennung und Robotik (Bewegen des Objekts) etc. verfügen.<br />

E<strong>in</strong> Wettbewerb, <strong>der</strong> sich am Tur<strong>in</strong>gtest orientiert, ist <strong>der</strong> seit 1991 vergebene Loebner-<br />

Preis 2 . Dabei werden Chat-Bots getestet und <strong>der</strong> von e<strong>in</strong>er Jury am menschenähnlichsten<br />

ausgewählte Chat-Bot wird zum jährlichen Sieger gekührt. In je<strong>der</strong> Runde des Tests<br />

kommuniziert e<strong>in</strong> Jury-Mitglied simultan mit e<strong>in</strong>em Chat-Bot und e<strong>in</strong>em Menschen ausschließlich<br />

über Textnachrichten <strong>in</strong> begrenzter Zeit. Im Anschluss entscheidet <strong>der</strong> Juror<br />

wer Mensch, wer Masch<strong>in</strong>e ist. Es gibt zudem noch e<strong>in</strong>malige Preise für den ersten Chat-<br />

Bot, <strong>der</strong> es schafft <strong>die</strong> Jury überzeugend zu täuschen, e<strong>in</strong> Mensch zu se<strong>in</strong>, und schließlich<br />

den mit 100.000 USD dotierten Preis, für den ersten Chat-Bot, <strong>der</strong> <strong>die</strong>s auch bezüglich<br />

audio-visueller Kommunikation schafft. Beide e<strong>in</strong>malige Preise wurden bisher nicht vergeben.<br />

Das <strong>in</strong>teressante an den Tur<strong>in</strong>g-ähnlichen Tests ist, dass sie e<strong>in</strong> halbwegs e<strong>in</strong>sichtiges<br />

Kriterum festlegen, um zu entscheiden ob e<strong>in</strong>e Masch<strong>in</strong>e menschliches Handeln simulieren<br />

kann o<strong>der</strong> nicht. Gegenargumente für den Tur<strong>in</strong>gtest s<strong>in</strong>d vielfältig, z.B. könnte man<br />

e<strong>in</strong> System als riesige Datenbank implementieren, <strong>die</strong> auf jede Frage vorgefertigte Antworten<br />

aus <strong>der</strong> Datenbank liest und <strong>die</strong>se präsentiert. Ist e<strong>in</strong> solches System <strong>in</strong>telligent?<br />

An<strong>der</strong>erseits gibt es Programme <strong>die</strong> manche Menschen <strong>in</strong> Analogie zum Tur<strong>in</strong>gtest täuschen<br />

können. E<strong>in</strong> solches Programm ist das von J. Weizenbaum entwickelte Programm<br />

ELIZA 3 , dass (als Softbot) e<strong>in</strong>en Psychotherapeuten simuliert. Zum e<strong>in</strong>en benutzt ELI-<br />

ZA vorgefertigte Phrasen für den Fall, dass das System nichts versteht (z.B. „Erzählen Sie<br />

mir etwas aus Ihrer Jugend.“), zum an<strong>der</strong>en wird mithilfe von Mustererkennung <strong>in</strong> <strong>der</strong><br />

E<strong>in</strong>gabe des Benutzers nach Schlüsselwörtern gesucht und anschließend werden daraus<br />

Ausgaben (anhand von Datenbank und Schlussregeln) geniert (z.B. „Erzählen Sie mir etwas<br />

über xyz“).<br />

Der Tur<strong>in</strong>g-Test wird <strong>in</strong> <strong>der</strong> Forschergeme<strong>in</strong>de nicht stark als angestrebtes Ziel verfolgt,<br />

aber aufgrund se<strong>in</strong>er E<strong>in</strong>fachheit demonstriert er e<strong>in</strong>drucksvoll, was künstliche <strong>Intelligenz</strong><br />

bedeutet.<br />

1.3.3 Das Gedankenexperiment „Ch<strong>in</strong>esischer Raum“<br />

Das von John Searle vorgeschlagenes Gedankenexperiment zum „Ch<strong>in</strong>esischen Raum“<br />

soll als Gegenargument zur starken KI-Hypothese <strong>die</strong>nen, d.h. es soll e<strong>in</strong> Nachweis se<strong>in</strong>,<br />

dass e<strong>in</strong> technisches System ke<strong>in</strong> Verständnis <strong>der</strong> Inhalte hat, <strong>die</strong> verarbeiten werden, bzw.<br />

dass es ke<strong>in</strong>en verstehenden Computer geben kann.<br />

Das Experiment lässt sich wie folgt beschreiben: Jemand, <strong>der</strong> ke<strong>in</strong> ch<strong>in</strong>esisch versteht,<br />

sitzt <strong>in</strong> e<strong>in</strong>em Raum. Es gibt dort ch<strong>in</strong>esisch beschriftete Zettel und e<strong>in</strong> dickes Handbuch<br />

2 http://www.loebner.net/Prizef/loebner-prize.html<br />

3 siehe z.B. http://www.med-ai.com/models/eliza.html.de<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 9 Stand: 15. Oktober 2012


1 E<strong>in</strong>leitung<br />

mit Regeln (<strong>in</strong> se<strong>in</strong>er Muttersprache), <strong>die</strong> jedoch ausschließlich angeben, welche ch<strong>in</strong>esische<br />

Zeichen als Antwort auf an<strong>der</strong>e ch<strong>in</strong>esische Zeichen gegeben werden sollen. Durch<br />

e<strong>in</strong>en Schlitz an <strong>der</strong> Tür erhält <strong>die</strong> Person Zettel mit ch<strong>in</strong>esischen Zeichen. Anhand des<br />

Handbuchs und <strong>der</strong> bereits beschrifteten Zettel erzeugt <strong>die</strong> Person neue Zettel auf se<strong>in</strong>em<br />

Stapel und e<strong>in</strong>en neuen beschrifteten Zettel (mit ch<strong>in</strong>esischen Schriftzeichen), den er nach<br />

außen reicht.<br />

Es stellen sich nun <strong>die</strong> Fragen: Versteht <strong>die</strong> Person im Raum ch<strong>in</strong>esisch? Versteht das<br />

Gesamtsystem ch<strong>in</strong>esisch? John Searles Argument ist, das ke<strong>in</strong> Teil des Systems etwas<br />

vom Inhalt versteht, und daher we<strong>der</strong> <strong>die</strong> Person noch das System ch<strong>in</strong>esisch versteht. Das<br />

Gegenargument (entsprechend dem Behaviorismus) ist, dass das Gesamtsystem etwas<br />

versteht, da das Verständnis beobachtbar ist.<br />

1.3.4 Das Prothesenexperiment<br />

Dieses Gedankenexperiment geht davon aus, dass <strong>die</strong> Verb<strong>in</strong>dungen von Neuronen im<br />

Gehirn voll verstanden s<strong>in</strong>d, und dass man funktional gleiche Bauteile (elektronische<br />

Neuronen) herstellen und im Gehirn e<strong>in</strong>setzen kann. Das Experiment besteht nun dar<strong>in</strong>,<br />

e<strong>in</strong>zelne Neuronen durch elektronische Neuronen zu ersetzen. Die Fragen dabei s<strong>in</strong>d:<br />

Wird sich <strong>die</strong> Funktionalität des Gehirns än<strong>der</strong>n? Ab welcher Anzahl von elektronischen<br />

Neuronen wird sich das Prothesen-Gehirn <strong>in</strong> e<strong>in</strong>en Computer verwandeln, <strong>der</strong> nichts versteht.<br />

Die Folgerung aus <strong>die</strong>sem Experiment ist, dass entwe<strong>der</strong> das Gehirn nur aus Neuronen<br />

besteht (d.h. das Prothesengehirn än<strong>der</strong>t nichts, <strong>die</strong> starke KI-Hypothese gilt daher),<br />

o<strong>der</strong> das es etwas gibt, das noch unbekannt ist (Bewusstse<strong>in</strong>, Geist, etc.).<br />

1.3.5 Symbolverarbeitungshypothese vs. Konnektionismus<br />

E<strong>in</strong> physikalisches Symbolsystem basiert auf Symbolen, denen e<strong>in</strong>e Bedeutung <strong>in</strong> <strong>der</strong> Realität<br />

zugeordnet werden kann. Aus e<strong>in</strong>er e<strong>in</strong>gegeben Symbolstruktur (z.B. e<strong>in</strong> Str<strong>in</strong>g aus<br />

Symbolen o.ä.) werden sukzessive weitere Symbolstrukturen erzeugt und evtl. auch ausgegeben.<br />

Die Symbolverarbeitungshypothese (von A. Newell and H. Simon) geht davon aus, dass e<strong>in</strong><br />

physikalisches Symbolsystem so konstruiert werden kann, dass es <strong>in</strong>telligentes Verhalten<br />

zeigt (d.h. den Tur<strong>in</strong>gtest besteht). Überlegungen zu Quantencomputern und <strong>der</strong>en parallele,<br />

pr<strong>in</strong>zipielle Fähigkeiten könnten hier zu neuen Ansätzen und Unterscheidungen<br />

führen. Im Moment gibt es aber noch ke<strong>in</strong>e verwendbaren Computer, <strong>die</strong> auf <strong>die</strong>sem Ansatz<br />

basieren.<br />

M. G<strong>in</strong>sberg charakterisiert <strong>die</strong> künstliche <strong>Intelligenz</strong> durch das Ziel <strong>der</strong> Konstruktion<br />

e<strong>in</strong>es physikalischen Symbolsystems, das zuverlässig den Tur<strong>in</strong>gtest besteht.<br />

Die Hypothese des Konnektionismus geht davon aus, dass man subsymbolische, verteilte,<br />

parallele Verarbeitung benötigt, um e<strong>in</strong>e Masch<strong>in</strong>e zu konstruieren, <strong>die</strong> <strong>in</strong>telligentes<br />

Verhalten zeigt (den Tur<strong>in</strong>gtest besteht).<br />

Stand: 15. Oktober 2012 10 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1.4 KI-Paradigmen<br />

Die technische Hypothese dazu ist, dass man künstliche neuronale Netze benötigt. Als<br />

Gegenargument dazu wäre zu nennen, dass man künstliche neuronale Netze auch (als<br />

Software) programmieren und auf normaler Hardware simulieren kann.<br />

1.4 KI-Paradigmen<br />

Zwei wesentliche Paradigmen <strong>der</strong> künstlichen <strong>Intelligenz</strong> s<strong>in</strong>d zum e<strong>in</strong>en das physikalische<br />

Symbolsystem (erstellt durch explizites Programmieren und verwenden von Logiken,<br />

Schlussregeln und Inferenzverfahren). Die Stärken <strong>die</strong>ses Paradigmas bestehen dar<strong>in</strong>,<br />

dass man gute Ergebnisse <strong>in</strong> den Bereichen Ziehen von Schlüssen, strategische Spiele,<br />

Planen, Konfiguration, Logik, . . . erzielen kann.<br />

E<strong>in</strong> an<strong>der</strong>es Paradima konzentriert sich auf Lernverfahren und verwendet <strong>in</strong>sbeson<strong>der</strong>e<br />

künstliche neuronale Netze. Dessen Stärken liegen vorallem <strong>in</strong> <strong>der</strong> Erkennung von<br />

Bil<strong>der</strong>n, <strong>der</strong> Musterverarbeitung, <strong>der</strong> Verarbeitung verrauschter Daten, dem masch<strong>in</strong>elles<br />

Lernen, und adaptiven Systeme (Musterlernen).<br />

Trotzallem benötigt man für e<strong>in</strong> komplexes KI-System im Allgeme<strong>in</strong>en alle Paradigmen.<br />

1.4.1 Analyse und Programmieren von Teilaspekten<br />

Die folgende Arbeitshypothese steht h<strong>in</strong>ter <strong>der</strong> Untersuchung von Teilaspekten <strong>der</strong><br />

<strong>Künstlichen</strong> <strong>Intelligenz</strong>:<br />

Untersuche und programmiere Teilaspekte an kle<strong>in</strong>en Beispielen. Wenn das klar verstanden<br />

ist, dann untersuche große Beispiele und komb<strong>in</strong>iere <strong>die</strong> Lösungen <strong>der</strong> Teilaspekte.<br />

Das ergibt zwei Problematiken:<br />

Komb<strong>in</strong>ation <strong>der</strong> Lösungen von Teilaspekten. Die Lösungen s<strong>in</strong>d oft komb<strong>in</strong>ierbar, aber<br />

es gibt genügend viele Beispiele, <strong>die</strong> <strong>in</strong>kompatibel s<strong>in</strong>d, so dass <strong>die</strong> Komb<strong>in</strong>ation<br />

<strong>der</strong> <strong>Methoden</strong> oft nicht möglich ist bzw. nur unter Verzicht auf gute Eigenschaften<br />

<strong>der</strong> Teillösungen.<br />

realistische Beispiele (scale up) Wenn <strong>die</strong> Software-Lösung für kle<strong>in</strong>e Beispiele (Mikrowelten)<br />

funktioniert, heißt das noch nicht, dass <strong>die</strong>se auch für realistische Beispiel<br />

(Makrowelten) s<strong>in</strong>nvoll funktioniert bzw. durchführbar ist.<br />

1.4.2 Wissensrepräsentation und Schlussfolgern<br />

Wissensrepräsentationshypothese: ((Smith, 1982)) “Die Verarbeitung von Wissen läßt sich<br />

trennen <strong>in</strong>: Repräsentation von Wissen, wobei <strong>die</strong>ses Wissen e<strong>in</strong>e Entsprechung <strong>in</strong> <strong>der</strong><br />

realen Welt hat; und <strong>in</strong> e<strong>in</strong>en Inferenzmechanismus, <strong>der</strong> Schlüsse daraus zieht.“<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 11 Stand: 15. Oktober 2012


1 E<strong>in</strong>leitung<br />

Dieses Paradigma ist <strong>die</strong> Basis für alle Programme <strong>in</strong> Software/Hardware, <strong>der</strong>en <strong>in</strong>nere<br />

Struktur als Modellierung von Fakten, Wissen, Beziehungen und als Operationen,<br />

Simulationen verstanden werden kann.<br />

E<strong>in</strong> Repräsentations- und Inferenz-System (representation and reason<strong>in</strong>g system) besteht,<br />

wenn man es abstrakt beschreibt, aus folgenden Komponenten:<br />

1. E<strong>in</strong>e formale Sprache: Zur Beschreibung <strong>der</strong> gültigen Symbole, <strong>der</strong> gültigen syntaktischen<br />

Formen e<strong>in</strong>er Wissensbasis, <strong>der</strong> syntaktisch korrekten Anfragen usw.<br />

Im allgeme<strong>in</strong>en kann man annehmen, dass e<strong>in</strong>e Wissensbasis e<strong>in</strong>e Multimenge von<br />

gültigen Sätzen <strong>der</strong> formalen Sprache ist.<br />

2. E<strong>in</strong>e Semantik: Das ist e<strong>in</strong> Formalismus, <strong>der</strong> den Sätzen <strong>der</strong> formalen Sprache e<strong>in</strong>e<br />

Bedeutung zuweist.<br />

Im allgeme<strong>in</strong>en ist <strong>die</strong> Semantik modular, d.h. den kle<strong>in</strong>sten E<strong>in</strong>heiten wird e<strong>in</strong>e<br />

Bedeutung zugeordnet, und darauf aufbauend den Sätzen, wobei <strong>die</strong> Bedeutung<br />

<strong>der</strong> Sätze auf <strong>der</strong> Bedeutung von Teilsätzen aufbaut.<br />

3. E<strong>in</strong>e Inferenz-Prozedur (operationale Semantik) <strong>die</strong> angibt, welche weiteren Schlüsse<br />

man aus e<strong>in</strong>er Wissensbasis ziehen kann. I.a. s<strong>in</strong>d <strong>die</strong>se Schlüsse wie<strong>der</strong> Sätze <strong>der</strong><br />

formalen Sprache.<br />

Diese Inferenzen müssen korrekt bzgl. <strong>der</strong> Semantik se<strong>in</strong>.<br />

Dieses System kann auf Korrektheit geprüft werden, <strong>in</strong>dem man e<strong>in</strong>en theoretischen<br />

Abgleich zwischen Semantik und operationaler Semantik durchführt.<br />

Die Implementierung des Repräsentations- und Inferenz-Systems besteht aus:<br />

1. Parser für <strong>die</strong> formale Sprache<br />

2. Implementierung <strong>der</strong> Inferenzprozedur.<br />

Interessanterweise trifft <strong>die</strong>se Beschreibung auch auf an<strong>der</strong>e Formalismen zu, wie Programmiersprachen<br />

und Logische Kalküle.<br />

1.5 Bemerkungen zur Geschichte zur Geschichte <strong>der</strong> KI<br />

Wir geben e<strong>in</strong>en groben Abriss über <strong>die</strong> geschichtliche Entwicklung des Gebiets <strong>der</strong><br />

künstlichen <strong>Intelligenz</strong>.<br />

1950: A. Tur<strong>in</strong>g: Imititationsspiel<br />

1956 J. McCarthy Dartmouth Konferenz: Start des Gebietes “artificial <strong>in</strong>telligence“ und<br />

Formulierung <strong>der</strong> Ziele.<br />

Stand: 15. Oktober 2012 12 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1.5 Bemerkungen zur Geschichte zur Geschichte <strong>der</strong> KI<br />

1957- 1962 “allgeme<strong>in</strong>er Problemlöser“<br />

Entwicklung von LISP (higher-or<strong>der</strong>, Parser und Interpreter zur Laufzeit)<br />

Dameprogramm von A. Samuels (adaptierend “lernend“)<br />

Newell & Simon: GPS (General Problem Solver)<br />

1963-1967 spezialisierte Systeme<br />

• semantische Verarbeitung (Benutzung von Spezialwissen über das Gebiet)<br />

• Problem des Common Sense<br />

• Resolutionspr<strong>in</strong>zip im automatischen Beweisen<br />

1968- 1972 Modellierung von Mikrowelten<br />

• MACSYMA mathematische Formel-Manipulation<br />

• DENDRAL Expertensystem zur Bestimmung von organischen Verb<strong>in</strong>dungen<br />

mittels Massenspektroskopie<br />

• SHRDLU, ELIZA: erste Versuche zur Verarbeitung natürlicher Sprache<br />

1972-77 Wissensverarbeitung als Technologie<br />

• mediz<strong>in</strong>isches Expertensystem: MYCIN<br />

• D. Lenats AM (automated mathematics)<br />

• KI-Sprachentwicklungen: PLANNER, KRL PROLOG KL-ONE<br />

1977- Entwicklung von Werkzeugen Trend zur Erarbeitung von Grundlagen;<br />

• Expertensystem-Schalen (E-MYCIN)<br />

• Fifth generation project <strong>in</strong> Japan (beendet)<br />

• Computerl<strong>in</strong>guistik<br />

• künstliche neuronale Netze<br />

• logisches Programmieren<br />

• 1985 Doug Lenats CYC<br />

aktuelle Forschungsrichtungen<br />

• Technologie zum textuellen Sprachverstehen und zur Ermöglichung von<br />

Mensch-Computer-Dialogen. (Wahlster: Verbmobil-Projekt)<br />

• Robotik-Ansatz: (Embo<strong>die</strong>d artificial <strong>in</strong>telligence, R. Pfeifer). s<strong>in</strong>ngemäß: E<strong>in</strong>e<br />

geme<strong>in</strong>same Untersuchung und Entwicklung von Sensorik, Motorik, d.h. physikalische<br />

Gesetzmäßigkeiten des Roboters und <strong>der</strong> Steuerung mittels Computer<br />

(neuronalen-Netzen) ist notwendig: „<strong>in</strong>telligentes Insekt“<br />

• Automatische Deduktion<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 13 Stand: 15. Oktober 2012


1 E<strong>in</strong>leitung<br />

• Logik<br />

• Robotik<br />

• künstliche neuronale Netze<br />

• . . .<br />

1.5.1 Schlussfolgerungen aus den bisherigen Erfahrungen:<br />

• Das Fernziel sche<strong>in</strong>t mit den aktuellen <strong>Methoden</strong>, Techniken, Hardware und Software<br />

nicht erreichbar<br />

• Motivationen und Visionen <strong>der</strong> KI s<strong>in</strong>d heute <strong>in</strong> <strong>der</strong> Informatik verbreitet.<br />

• Die direkte Programmierung von Systemen (ohne sehr gute Lernalgorithmen) hat Grenzen<br />

<strong>in</strong> <strong>der</strong> Komplexität des e<strong>in</strong>zugebenden Modells (Regeln, Fakten, ...); Auch wird<br />

es zunehmend schwerer, <strong>die</strong> Systeme und <strong>die</strong> Wissensbasis zu warten und konsistent<br />

zu än<strong>der</strong>n.<br />

Das Projekt CYC 4 von Doug Lenat zur Erzeugung e<strong>in</strong>es vernünftigen Programms<br />

mit Alltagswissen durch E<strong>in</strong>gabe e<strong>in</strong>er Enzyklopä<strong>die</strong> hat nicht zum erhofften<br />

durchschlagenden Erfolg geführt.<br />

• Manche Gebiete wie (computerunterstützte) „Verarbeitung natürlicher (schriftlicher<br />

o<strong>der</strong> gesprochener) Sprache“, Robotik, Automatische Deduktion, ...haben sich zu<br />

eigenständigen Forschungsgebieten entwickelt.<br />

• Forschungsziele s<strong>in</strong>d aktuell eher spezialisierte Aspekte bzw. anwendbare Verfahren:<br />

Logik und Inferenzen, Mensch-Masch<strong>in</strong>e-Kommunikation, Lernverfahren (adaptive<br />

Software), Repräsentationsmechanismen; e<strong>in</strong>gebettete KI, nicht-Standard-<br />

Logiken und Schlsmith82ussfolgerungssysteme, ....<br />

1.6 Intelligente Agenten<br />

Unter dem Überbegriff Agenten kann man alle KI-Systeme e<strong>in</strong>ordnen.<br />

Wir stellen e<strong>in</strong>ige e<strong>in</strong>fache Überlegungen an zu Agenten und <strong>der</strong>en Interaktionsmöglichkeiten<br />

mit ihrer Umgebung.<br />

E<strong>in</strong> Agent hat<br />

• Sensoren zum Beobachten se<strong>in</strong>er Umgebung und<br />

• Aktuatoren (Aktoren; Effektoren) um <strong>die</strong> Umgebung zu manipulieren.<br />

4 http://www.cyc.com/<br />

Stand: 15. Oktober 2012 14 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1.6 Intelligente Agenten<br />

Agent<br />

Sensoren<br />

Beobachtungen<br />

Agentensteuerung<br />

Umgebung<br />

Aktuatoren<br />

Aktionen<br />

Er macht Beobachtungen (Messungen, percept). Die (zeitliche) Folge se<strong>in</strong>er Beobachtungen<br />

nennt man Beobachtungssequenz (percept sequence). Er kann mittels se<strong>in</strong>er Aktuatoren<br />

Aktionen ausführen, <strong>die</strong> <strong>die</strong> Umgebung, evtl. auch se<strong>in</strong>e Position, bee<strong>in</strong>flussen. Wenn<br />

man das Verhalten des Agenten allgeme<strong>in</strong> beschreiben will, dann kann man das als<br />

Agentenfunktion: {Beobachtungsfolgen} → {Aktionen}.<br />

beschreiben.<br />

Diese Agentenfunktion kann man durch das Agentenprogramm def<strong>in</strong>ieren. Pr<strong>in</strong>zipiell<br />

kann man <strong>die</strong>se Funktion durch e<strong>in</strong>e vollständige Tabelle beschreiben, o<strong>der</strong> durch e<strong>in</strong>en<br />

Algorithmus.<br />

Beispiel 1.6.1 (Staubsaugerwelt (Russell & Norvig, 2010)). Das ist nur e<strong>in</strong>e Modellwelt, <strong>die</strong><br />

man variieren kann, um <strong>die</strong> Problematik und <strong>die</strong> Effekte zu illustrieren, und anhand <strong>der</strong>er man<br />

sich leichter verdeutlichen kann, welche Konzepte e<strong>in</strong>e Rolle spielen.<br />

Der e<strong>in</strong>fachste Fall ist wie folgt modelliert:<br />

• Es gibt nur zwei Orte an denen sich <strong>der</strong> Agent (Staubsauger) aufhalten kann: Quadrate A<br />

und B (bzw. Räume A, B)<br />

• Jedes Quadrat kann Dreck enthalten o<strong>der</strong> nicht. Der Agent kann nur sehen, ob das Quadrat<br />

<strong>in</strong> dem er sich aufhält, dreckig ist: Sauber/ Dreckig, D.h. se<strong>in</strong>e Beobachtung ergibt e<strong>in</strong>en<br />

Booleschen Wert.<br />

• Die mögliche Aktionen des Agenten s<strong>in</strong>d: InsAn<strong>der</strong>eQuadrat, Saugen und NichtsTun.<br />

A<br />

B<br />

E<strong>in</strong>ige implizite Annahmen s<strong>in</strong>d <strong>in</strong> <strong>die</strong>sm Modell versteckt:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 15 Stand: 15. Oktober 2012


1 E<strong>in</strong>leitung<br />

• Der Agent ist nur an e<strong>in</strong>em Ort.<br />

• Aktionen kann er nur zur aktuellen Zeit und am aktuellen Ort vornehmen.<br />

• Die Umgebung kann sich unabhängig vom Agenten verän<strong>der</strong>n: Hier nur <strong>der</strong> Zustand<br />

„Dreck o<strong>der</strong> ke<strong>in</strong> Dreck im Quadrat A o<strong>der</strong> B“.<br />

• Normalerweise nimmt man auch an, dass <strong>der</strong> Dreck nicht von selbst verschw<strong>in</strong>det. Jedoch<br />

kann er nicht se<strong>in</strong>en eigenen Ort beobachten, o<strong>der</strong> <strong>die</strong> Anzahl <strong>der</strong> möglichen Quadrate (Räume).<br />

• Der obige Agent kann nicht beobachten, wo er ist, und se<strong>in</strong>e Aktionen s<strong>in</strong>d immer ausführbar.<br />

Er kann nur e<strong>in</strong>e Aktion gleichzeitig ausführen.<br />

Die Aufgabe o<strong>der</strong> Fragestellung ist nun: Wann ist <strong>der</strong> Agent (das zugehörige Programm)<br />

gut / vernünftig bzw. <strong>in</strong>telligent ? Dazu braucht man e<strong>in</strong>e Vorgabe: e<strong>in</strong> (externes)<br />

Performanzmaß, d.h. e<strong>in</strong>e Leistungsbewertung des Agenten. Z.B:<br />

• Alles soll immer maximal sauber se<strong>in</strong>. Konsequenz wäre, dass <strong>der</strong> Staubsauger immer<br />

h<strong>in</strong> und her fährt und saugt.<br />

• Alles soll möglichst sauber se<strong>in</strong>, und <strong>der</strong> Stromverbrauch soll möglichst kle<strong>in</strong> se<strong>in</strong>.<br />

Hier kann man diskrete Zeit annehmen, pro Zeite<strong>in</strong>heit jeweils e<strong>in</strong>e Anzahl Punkte<br />

pro sauberes Quadrat vergeben und jeden Wechsel des Quadrats mit e<strong>in</strong>em bestimmten<br />

Abzug versehen. Die mittlere Punktzahl pro Zeit wäre dann das passende<br />

Maß.<br />

• Alles soll möglichst sauber se<strong>in</strong>, und <strong>der</strong> Staubsauger soll möglichst wenig stören.<br />

Der Agent kann nicht beobachten, ob er stört.<br />

• ... ?<br />

Der optimale agierende Agent ist <strong>der</strong> <strong>in</strong>telligente Agent.<br />

Man sieht, dass abhängig vom Performanzmaß jeweils an<strong>der</strong>e Agenten als optimal zählen.<br />

Im allgeme<strong>in</strong>en ist das Performanzmaß nicht vom Agenten selbst zu berechnen, da<br />

er nicht ausreichend viele Beobachtungen machen kann. Normalerweise muss man Kompromisse<br />

zwischen den verschiedenen Kriterien machen, da nicht alle Kriterien gleichzeitig<br />

optimal zu erfüllen s<strong>in</strong>d, und da auch nicht alle Kriterien zu berechnen bzw. effizient<br />

zu berechnen s<strong>in</strong>d.<br />

1.6.1 Gesichtspunkte, <strong>die</strong> <strong>die</strong> Güte des Agenten bestimmen<br />

• Das Performanzmaß<br />

• Das Vorwissen über <strong>die</strong> Umgebung<br />

• Die möglichen Aktionen<br />

Stand: 15. Oktober 2012 16 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1.6 Intelligente Agenten<br />

• Die aktuelle Beobachtungsfolge<br />

Def<strong>in</strong>ition 1.6.2. E<strong>in</strong> vernünftiger (<strong>in</strong>telligenter, rationaler) Agent ist <strong>der</strong>jenige, <strong>der</strong> stets <strong>die</strong><br />

optimale Aktion bzgl des Performanzmaßes wählt, aufgrund se<strong>in</strong>er Beobachtungsfolge und se<strong>in</strong>es<br />

Vorwissens über <strong>die</strong> Umgebung.<br />

Allerd<strong>in</strong>gs muss man beachten, dass man den vernünftigen Agenten nicht immer implementieren<br />

kann, da <strong>der</strong> Agent oft das Performanzmaß nicht berechnen kann. Zum<br />

Vorwissen kann hier z.B. <strong>die</strong> stochastische Verteilung des Verschmutzung über <strong>die</strong> Zeit<br />

gelten, d.h. wie groß ist <strong>die</strong> Wahrsche<strong>in</strong>lichkeit, dass das Quadrat A <strong>in</strong> <strong>der</strong> nächsten Zeite<strong>in</strong>heit<br />

wie<strong>der</strong> dreckig wird.<br />

1.6.2 Lernen<br />

Da normalerweise das Vorwissen über <strong>die</strong> Umgebung nicht ausreicht, o<strong>der</strong> sich <strong>die</strong> Umgebung<br />

und <strong>der</strong>en Langzeitverhalten än<strong>der</strong>n kann, ist es notwendig für e<strong>in</strong>en guten Agenten<br />

• mittels <strong>der</strong> Sensoren Wissen über <strong>die</strong> Umgebung zu sammeln;<br />

• lernfähig zu se<strong>in</strong>, bzw. sich adaptiv zu verhalten, aufgrund <strong>der</strong> Beobachtungssequenz.<br />

Z.B. kann e<strong>in</strong>e Erkundung <strong>der</strong> Umgebung notwendig se<strong>in</strong>, wenn <strong>der</strong> Staubsauger <strong>in</strong><br />

e<strong>in</strong>er neuen Umgebung e<strong>in</strong>gesetzt wird, und das Wissen dazu nicht vorgegeben ist.<br />

E<strong>in</strong> Agent wird als autonom bezeichnet, wenn <strong>der</strong> Agent eher aus se<strong>in</strong>en Beobachtungen<br />

lernt und nicht auf vorprogrammierte Aktionen angewiesen ist.<br />

1.6.3 Verschiedene Varianten von Umgebungen<br />

Umgebungen können anhand verschiedener Eigenschaften klassfiziert werden. Die Eigenschaften<br />

s<strong>in</strong>d:<br />

• Vollständig beobachtbar vs. teilweise beobachtbar.<br />

Der Staubsauger kann z.B. nur se<strong>in</strong> eigenes Quadrat beobachten.<br />

• Determ<strong>in</strong>istisch vs. Stochastisch.<br />

Der Dreck ersche<strong>in</strong>t zufällig <strong>in</strong> den Quadraten.<br />

• Episodisch vs. sequentiell.<br />

Episodisch: Es gibt feste Zeitabschnitte, <strong>in</strong> denen beobachtet agiert wird, und <strong>die</strong><br />

alle unabhängig vone<strong>in</strong>an<strong>der</strong> s<strong>in</strong>d.<br />

Sequentiell. Es gibt Spätfolgen <strong>der</strong> Aktionen.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 17 Stand: 15. Oktober 2012


1 E<strong>in</strong>leitung<br />

• Statisch vs. Dynamisch<br />

Dynamisch: <strong>die</strong> Umgebung kann sich während <strong>der</strong> Nachdenkzeit des Agenten verän<strong>der</strong>n.<br />

Wir bezeichnen <strong>die</strong> Umgebung als semi-dynamisch, wenn sich während <strong>der</strong><br />

Nachdenkzeit zwar <strong>die</strong> Umgebung nicht verän<strong>der</strong>t, jedoch das Performanzmaß. E<strong>in</strong><br />

Beispiel ist Schachspielen mit Uhr.<br />

• Diskret vs. Stetig.<br />

• E<strong>in</strong> Agent o<strong>der</strong> Multiagenten.<br />

Bei Multiagenten kann man unterscheiden zwischen Gegnern / Wettbewerber /<br />

Kooperierenden Agenten. Es gibt auch entsprechende Komb<strong>in</strong>ationen.<br />

Beispiel 1.6.3. E<strong>in</strong>e Beispieltabelle aus (Russell & Norvig, 2010)<br />

Arbeitsumgebung<br />

Beobachtbar<br />

Determ<strong>in</strong>istisch<br />

Episodisch<br />

Statisch Diskret Agenten<br />

Kreuzworträtsel vollst. det. seq. statisch diskret 1<br />

Schach mit Uhr vollst. det. seq. semi diskret n<br />

Poker teilw. stoch. seq. statisch diskret n<br />

Backgammon vollst. stoch. seq. statisch diskret n<br />

Taxifahren teilw. stoch. seq. dyn. stetig n<br />

Mediz<strong>in</strong>ische teilw. stoch. seq. dyn. stetig 1<br />

Diagnose<br />

Bildanalyse vollst. det. episod. semi stetig 1<br />

Interaktiver<br />

Englischlehrer<br />

teilw. stoch. seq. dyn. diskret n<br />

1.6.4 Struktur des Agenten<br />

E<strong>in</strong> Agent besteht aus:<br />

• Physikalischer Aufbau <strong>in</strong>kl. Sensoren und Aktuatoren; man spricht von<br />

<strong>der</strong> Architektur des Agenten.<br />

• dem Programm des Agenten<br />

Wir beschreiben <strong>in</strong> allgeme<strong>in</strong>er Form e<strong>in</strong>ige Möglichkeiten:<br />

• Tabellengesteuerter Agent: (endlicher Automat) mit e<strong>in</strong>er Tabelle von E<strong>in</strong>trägen:<br />

Beobachtungsfolge1 ↦→ Aktion1<br />

Beobachtungsfolge2 ↦→ Aktion2<br />

... . ..<br />

Stand: 15. Oktober 2012 18 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


1.6 Intelligente Agenten<br />

Diese Beschreibung ist zu allgeme<strong>in</strong> und eignet sich nicht als Programmieridee; <strong>die</strong><br />

Tabelle ist e<strong>in</strong>fach zu groß. Leicht abgeän<strong>der</strong>t und optimiert, nähert man sich „normalen“<br />

Programmen:<br />

(Zustand, Beobachtung) ↦→ Aktion, Zu-<br />

• Agent mit Zustand<br />

implementiert e<strong>in</strong>e Funktion <strong>der</strong> Form<br />

stand’<br />

Wobei <strong>der</strong> Zustand auch <strong>die</strong> gespeicherte Folge (Historie) <strong>der</strong> Beobachtungen se<strong>in</strong><br />

kann.<br />

• E<strong>in</strong>facher Reflex-Agent:<br />

Tabellengesteuert (endlicher Automat) mit e<strong>in</strong>er Tabelle von E<strong>in</strong>trägen:<br />

Beobachtung1 ↦→ Aktion1<br />

Beobachtung2 ↦→ Aktion2<br />

• Modellbasierte Strukturierung:<br />

Der Zustand wird benutzt, um <strong>die</strong> Umgebung zu modellieren und <strong>der</strong>en Zustand<br />

zu speichern. Z.B. beim Staubsauger: <strong>in</strong>neres Modell des Lageplan des Stockwerks;<br />

welche Räume wurden vom Staubsauger gerade gesäubert, usw.<br />

– Zweckbasierte Strukturierung (goalbased, zielbasiert): Die Entscheidung, welche<br />

Aktion als nächste ausgeführt wird, hängt davon ab, ob damit e<strong>in</strong> vorgegebenes<br />

Ziel erreicht wird.<br />

Dr Agent kann erkennen, ob er das Zeil erreicht hat.<br />

– Nutzenbasierte Strukturierung (utility-based, nutzenbasiert): Die Entscheidung,<br />

welche Aktion als nächste ausgeführt wird, hängt davon ab, ob damit<br />

e<strong>in</strong>e vorgegebene (<strong>in</strong>terne) Nutzenfunktion (<strong>in</strong>ternes Gütemaß) verbessert<br />

wird. Da das Performanzmaß vom Agenten selbst meist nicht berechnet werden<br />

kann, da ihm <strong>die</strong> Informationen fehlen, gibt es e<strong>in</strong>e Bewertungsfunktion (utility<br />

function), <strong>die</strong> <strong>der</strong> Agent berechnen und als Bewertung verwenden kann.<br />

• Lernende Agenten (s.o.): Das Vorsehen aller möglichen Aktionen auf alle Varianten<br />

<strong>der</strong> Beobachtung ist, auch stark optimiert, sehr aufwändig, manchmal unmöglich,<br />

da man leicht Fälle beim Programmieren übersieht, und oft <strong>die</strong> optimale Aktion<br />

nicht so e<strong>in</strong>fach aus <strong>der</strong> jeweiligen Beobachtungsfolge ausrechnen kann. Die Speicherung<br />

<strong>der</strong> ganzen Beobachtungsfolge kann zudem sehr viel Speicher benötigen.<br />

Lernverfahren bieten hier e<strong>in</strong>en Ausweg und erhöhen <strong>die</strong> Autonomie des Agenten.<br />

Da man e<strong>in</strong>e Meta-Ebene <strong>in</strong>s Programm e<strong>in</strong>führt, muss man unterscheiden zwischen<br />

– Lernmodul<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 19 Stand: 15. Oktober 2012


1 E<strong>in</strong>leitung<br />

– Ausführungmodul<br />

Das Ausführungsmodul ist das bisher betrachtete Programm, das Aktionen berechnet,<br />

das Lernmodul verwendet <strong>die</strong> Beobachtungsfolge, um das Ausführungsmodul<br />

bzw. dessen Parameter (im Zustand gespeichert) zu verän<strong>der</strong>n.<br />

Zum Lernen benötigt man e<strong>in</strong>e Rückmeldung bzw. Bewertung (critic) <strong>der</strong> aktuellen<br />

Performanz, um dann das Ausführungsmodul gezielt zu verbessern. Das kann e<strong>in</strong>e<br />

<strong>in</strong>terne Bewertungsfunktion se<strong>in</strong>, aber auch e<strong>in</strong> von Außen gesteuertes Tra<strong>in</strong><strong>in</strong>g:<br />

Es gibt verschiedene Lernmethoden dazu: onl<strong>in</strong>e, offl<strong>in</strong>e, <strong>die</strong> sich weiter unterglie<strong>der</strong>n.<br />

Offl<strong>in</strong>e-Lernen kann man als Tra<strong>in</strong><strong>in</strong>gsphase sehen, wobei anhand vorgegebener<br />

o<strong>der</strong> zufällig erzeugter „Probleme“ <strong>die</strong> optimale Aktion tra<strong>in</strong>iert werden kann.<br />

Das Lernverfahren kann z.B. durch Vorgabe <strong>der</strong> richtigen Aktion durch e<strong>in</strong>en Lehrer,<br />

o<strong>der</strong> mittels Belohnung / Bestrafung für gute / schlechte Aktionsauswahl das<br />

Tra<strong>in</strong><strong>in</strong>g durchführen.<br />

Stand: 18. Oktober 2012 20 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2<br />

Suchverfahren<br />

2.1 Algorithmische Suche<br />

Oft hat man <strong>in</strong> e<strong>in</strong>er vorgegebenen Problemlösungs-Situation <strong>die</strong> Aufgabe, e<strong>in</strong>en bestimmten<br />

Zweck zu erreichen, e<strong>in</strong>en (Aktions-)Plan für e<strong>in</strong>en Agenten zu entwickeln,<br />

e<strong>in</strong>en Weg zu f<strong>in</strong>den o.ä. Hierzu benötigt man zunächst e<strong>in</strong>e Repräsentation des aktuellen<br />

Zustandes sowie <strong>der</strong> Möglichkeiten, <strong>die</strong> man hat, um se<strong>in</strong> Ziel zu erreichen. Im Allgeme<strong>in</strong>en<br />

gibt es ke<strong>in</strong> effizientes Verfahren, um den Plan zu berechnen, denn nicht alle<br />

Probleme haben so e<strong>in</strong>fache Lösungen wie <strong>die</strong> Aufgabe zu zwei gegebenen Zahlen <strong>der</strong>en<br />

Produkt zu bestimmen. Man benötigt daher Suchverfahren. In <strong>die</strong>sem Kapitel erden wir<br />

e<strong>in</strong>ige Suchverfahren und <strong>der</strong>en Anwendung und Eigenschaften besprochen.<br />

Beispiele für solche Suchprobleme s<strong>in</strong>d:<br />

• Spiele: Suche nach dem besten Zug<br />

• Logik: Suche nach e<strong>in</strong>er Herleitung e<strong>in</strong>er Aussage<br />

• Agenten: Suche nach <strong>der</strong> optimalen nächsten Aktion<br />

• Planen: Suche nach e<strong>in</strong>er Folge von Aktionen e<strong>in</strong>es <strong>in</strong>telligenten Agenten.<br />

• Optimierung: Suche e<strong>in</strong>es Maximums e<strong>in</strong>er mehrstelligen Funktion auf den reellen<br />

Zahlen<br />

Wir beschränken uns auf <strong>die</strong> Fälle, <strong>in</strong> denen <strong>die</strong> Aufgabe e<strong>in</strong>deutig und exakt formulierbar<br />

ist.<br />

Die exakte Repräsentation <strong>der</strong> Zustände, <strong>der</strong> Übergänge, <strong>der</strong> Regeln ist Teil <strong>der</strong> Programmierung<br />

und Optimierung <strong>der</strong> Suche. Meist hat man:<br />

Stand: 18. Oktober 2012 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2 Suchverfahren<br />

• Anfangssituationen<br />

• Kalkülregeln, <strong>die</strong> es erlauben aus e<strong>in</strong>er Situation <strong>die</strong> nächste zu berechnen (Spielregeln),<br />

<strong>die</strong> sogenannte Nachfolgerfunktion<br />

• E<strong>in</strong> Test auf Zielsituation<br />

Beispiel 2.1.1.<br />

Schach: Gegeben ist als Anfangssituation e<strong>in</strong>e Stellung im Spiel, <strong>die</strong> Nachfolgerfunktion entspricht<br />

den möglichen Zügen. E<strong>in</strong>e Zielsituation ist erreicht, wenn man gewonnen hat. Gesucht<br />

ist nun e<strong>in</strong> Zug, <strong>der</strong> zum Gew<strong>in</strong>n führt.<br />

Deduktion: Gegeben ist als Anfangssituation e<strong>in</strong>e zu beweisende Aussage A und e<strong>in</strong>er Menge<br />

von Axiomen und evtl. schon bewiesenen Sätzen und Lemmas. Gesucht ist e<strong>in</strong> Beweis für<br />

A.<br />

Planen: Gegeben e<strong>in</strong>e formale Beschreibung des <strong>in</strong>teressierenden Bereichs; z.B. Fahrplan, Anfangsort,<br />

Zeit, Zielort <strong>der</strong> zu planenden Reise. Gesucht ist e<strong>in</strong> Plan, <strong>der</strong> <strong>die</strong> Reise ermöglicht.<br />

2.1.1 Beispiel: das n-Damen Problem<br />

Beim n-Damen Problem 1 ist e<strong>in</strong> n × n-Schachfeld gegeben und gesucht ist e<strong>in</strong>e Lösung<br />

dafür n Damen auf dem Schachbrett so zu verteilen, dass ke<strong>in</strong>e Dame e<strong>in</strong>e an<strong>der</strong>e bedroht<br />

(Damen bedrohen sich, wenn sie auf e<strong>in</strong>er, horizontalen, vertikalen o<strong>der</strong> diagonalen L<strong>in</strong>ie<br />

stehen).<br />

E<strong>in</strong>e mögliche Lösung für das 4-Damen Problem ist:<br />

4<br />

3<br />

2<br />

1<br />

A B C D<br />

E<strong>in</strong> möglicher Ablauf <strong>der</strong> Suche, wenn n = 4 ist, ist <strong>der</strong> folgende:<br />

1 Wir betrachten das n-Damen Problem hier nur als Demonstrationsbeispiel für <strong>die</strong> Suche, denn es es gibt<br />

bessere, l<strong>in</strong>ear berechenbare systematische Lösungen.<br />

Stand: 18. Oktober 2012 22 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.1 Algorithmische Suche<br />

1. Dame A-1<br />

2. Dame A-2; Bedrohung<br />

3. Dame A-2 nach B-2 Bedrohung (Diagonale)<br />

4. Dame B-2 nach C-2<br />

5. Dame A-3; Bedrohung<br />

6. Dame A-3 nach B-3; Bedrohung<br />

usw<br />

9. Dame auf Reihe 3 zurücknehmen, Dame C-2 auf D-2<br />

10. Dame A-3<br />

11. Dame A-3 nach B-3<br />

usw.<br />

2.1.2 Beispiel: „Missionare und Kannibalen“<br />

3 Missionare und 3 Kannibalen s<strong>in</strong>d auf e<strong>in</strong>er Seite e<strong>in</strong>es Flusses. Es gibt e<strong>in</strong><br />

Boot, <strong>in</strong> dem höchstens zwei Personen ru<strong>der</strong>n können.<br />

Bed<strong>in</strong>gung: Auf ke<strong>in</strong>er Uferseite dürfen jemals mehr Kannibalen als Missionare<br />

se<strong>in</strong>.<br />

Gesucht: e<strong>in</strong> Plan zur Überquerung des Flusses, <strong>der</strong> <strong>die</strong>se Bed<strong>in</strong>gung e<strong>in</strong>hält.<br />

Ko<strong>die</strong>rungsmöglichkeiten des Problems:<br />

Wir betrachten aufe<strong>in</strong>an<strong>der</strong>folgende Zustände, <strong>die</strong> aus <strong>der</strong> Anzahl M. und K. an e<strong>in</strong>em<br />

Ufer bestehen sowie <strong>der</strong> Position des Bootes:<br />

1. Am Anfang: 3M, 3K, L, 0M, 0K<br />

Ziel ist <strong>die</strong> Situation: 0M, 0K, R, 3M, 3K<br />

mögliche zweite Situationen:<br />

2.1 2M, 3K, R, 1M, 0K<br />

2.2 1M, 3K, R, 2M, 0K<br />

2.3 2M, 2K, R, 1M, 1K<br />

2.4 3M, 2K, R, 0M, 1K<br />

2.5 3M, 1K, R, 0M, 2K<br />

Man sieht: 2.1 und 2.2 s<strong>in</strong>d verboten, <strong>die</strong> an<strong>der</strong>en erlaubt.<br />

Die naive Suche würde Zyklen enthalten, <strong>die</strong> dem H<strong>in</strong>-und-Her-Ru<strong>der</strong>n entsprechen,<br />

ohne dass sich etwas än<strong>der</strong>t. Es gibt offensichtliche Verbesserungen <strong>der</strong> naiven Suche:<br />

• Suche nicht <strong>in</strong> e<strong>in</strong>em Baum aller Möglichkeiten, son<strong>der</strong>n <strong>in</strong> e<strong>in</strong>em gerichteten Graphen.<br />

• schon versuchte Situationen werden nicht noch e<strong>in</strong>mal verfolgt.<br />

E<strong>in</strong> Diagramm des Zusammenhangs <strong>der</strong> ersten Zustände. Verbotene Zustände s<strong>in</strong>d mit<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 23 Stand: 18. Oktober 2012


2 Suchverfahren<br />

¬ markiert.<br />

(3, 3, , 2, 0) ¬(2, 3, >, 1, 0) (3, 2, >, 0, 1) (2, 2, >, 1, 1)<br />

(3, 1, >, 0, 2)<br />

<br />

Der Suchgraph ohne ungültige Situationen ist:<br />

¬(2, 3, , 0, 2)<br />

<br />

Allerd<strong>in</strong>gs ist das Problem doch nicht ganz e<strong>in</strong>deutig formuliert: Es gibt folgende Probleme<br />

<strong>der</strong> Repräsentation:<br />

1. Die Repräsentation kann E<strong>in</strong>deutigkeit herbeiführen, <strong>die</strong> <strong>in</strong> <strong>der</strong> Problemstellung<br />

nicht enthalten war. Zum Beispiel ist das E<strong>in</strong>-und Aussteigen aus dem Boot nicht<br />

mitberücksichtigt: Was passiert, wenn e<strong>in</strong> Kannibale mit dem Boot am Ufer an-<br />

Stand: 18. Oktober 2012 24 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.1 Algorithmische Suche<br />

kommt, und dort bef<strong>in</strong>den sich e<strong>in</strong> Missionar und e<strong>in</strong> Kannibale, und <strong>der</strong> Missionar<br />

will im Boot zurückfahren. Ist das erlaubt o<strong>der</strong> nicht? Repräsentiert man an<strong>der</strong>e Zustände,<br />

z.B. nur <strong>die</strong> Zustände während des Bootfahrens, kann es erlaubt se<strong>in</strong>.<br />

2. Die Repräsentation bestimmt <strong>die</strong> Struktur des Suchraumes mit. Z.B. Wenn man <strong>die</strong><br />

Missionare und Kannibalen mit Namen benennt, und als Zustand <strong>die</strong> Menge <strong>der</strong><br />

Personen auf <strong>der</strong> Startseite des Flusses speichert und zusätzlich B genau dann <strong>in</strong><br />

<strong>die</strong> Menge e<strong>in</strong>fügt, wenn das Boot auf <strong>der</strong> Startseite des Flusses ist. Dann ist <strong>die</strong><br />

Anfangssituation: {M 1 , M 2 , M 3 , K 1 , K 2 , K 3 , B}<br />

Jetzt gibt es 21 Folgesituationen:<br />

1. {M 2 , M 3 , K 1 , K 2 , K 3 }<br />

2. {M 1 , M 3 , K 1 , K 2 , K 3 }<br />

3. {M 1 , M 2 , K 1 , K 2 , K 3 }<br />

4. {M 1 , M 2 , M 3 , K 2 , K 3 }<br />

5. {M 1 , M 2 , M 3 , K 1 , K 3 }<br />

6. {M 1 , M 2 , M 3 , K 1 , K 2 }<br />

7. {M 3 , K 1 , K 2 , K 3 }<br />

8. {M 2 , K 1 , K 2 , K 3 }<br />

9. {M 2 , M 3 , K 2 , K 3 }<br />

10. {M 2 , M 3 , K 1 , K 3 }<br />

11. {M 2 , M 3 , K 1 , K 2 }<br />

12. {M 1 , K 1 , K 2 , K 3 }<br />

13. {M 1 , M 3 , K 2 , K 3 }<br />

14. {M 1 , M 3 , K 1 , K 3 }<br />

15. {M 1 , M 3 , K 1 , K 2 }<br />

16. {M 1 , M 2 , K 2 , K 3 }<br />

17. {M 1 , M 2 , K 1 , K 3 }<br />

18. {M 1 , M 2 , K 1 , K 2 }<br />

19. {M 1 , M 2 , M 3 , K 3 }<br />

20. {M 1 , M 2 , M 3 , K 2 }<br />

21. {M 1 , M 2 , M 3 , K 1 }<br />

Die Anzahl <strong>der</strong> erlaubten Folgesituationen ist 12.<br />

Offensichtlich ist <strong>in</strong> <strong>die</strong>ser Repräsentation <strong>die</strong> Suche sehr viel schwieriger.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 25 Stand: 18. Oktober 2012


2 Suchverfahren<br />

3. Die Repräsentation hat auch e<strong>in</strong>e Wahl bei <strong>der</strong> Festlegung <strong>der</strong> Knoten und <strong>der</strong> Nachfolgerfunktion.<br />

Z.B. kann man bei n-Dame auch als Nachfolger jede Situation nehmen,<br />

bei <strong>der</strong> e<strong>in</strong>e Dame mehr auf dem Schachbrett steht<br />

Das F<strong>in</strong>den e<strong>in</strong>er geeigneten Repräsentation und <strong>die</strong> Organisation <strong>der</strong> Suche erfor<strong>der</strong>t<br />

Nachdenken und ist Teil <strong>der</strong> Optimierung <strong>der</strong> Suche.<br />

2.1.3 Suchraum, Suchgraph<br />

Wenn man vom Problem und <strong>der</strong> Repräsentation abstrahiert, kann man <strong>die</strong> Suche nach<br />

e<strong>in</strong>er Lösung als Suche <strong>in</strong> e<strong>in</strong>em gerichteten Graphen (Suchgraph, Suchraum) betrachten.<br />

Hier ist zu beachten, dass <strong>der</strong> gerichtete Graph nicht explizit gegeben ist, er kann z.B.<br />

auch unendlich groß se<strong>in</strong>. Der Graph is daher implizit durch Erzeugungsregeln gegeben.<br />

Die Suche und partielle Erzeugung des Graphen s<strong>in</strong>d somit verflochten. Der Suchgraph<br />

besteht aus:<br />

• Knoten Situation, Zustände<br />

• Kanten <strong>in</strong> Form e<strong>in</strong>er Nachfolger-Funktion N, <strong>die</strong> für e<strong>in</strong>en Knoten dessen Nachfolgesituationen<br />

berechnet.<br />

• Anfangssituation<br />

• Zielsituationen: Eigenschaft e<strong>in</strong>es Knotens, <strong>die</strong> geprüft werden kann.<br />

Diesen Graphen (zusammen mit se<strong>in</strong>er Erzeugung) nennt man auch Suchraum.<br />

Wir def<strong>in</strong>ieren e<strong>in</strong>ige wichtige Begriffe.<br />

Def<strong>in</strong>ition 2.1.2. Die Verzweigungrate des Knotens K (branch<strong>in</strong>g factor) ist <strong>die</strong> Anzahl <strong>der</strong><br />

direkten Nachfolger von K, also <strong>die</strong> Mächtigkeit <strong>der</strong> Menge N(K).<br />

Die mittlere Verzweigunsrate des Suchraumes ist entsprechend <strong>die</strong> durchschnittliche Verzweigungrate<br />

aller Knoten.<br />

Die Größe des Suchraumes ab Knoten K <strong>in</strong> Tiefe d ist <strong>die</strong> Anzahl <strong>der</strong> Knoten, <strong>die</strong> von K<br />

aus <strong>in</strong> d Schritten erreichbar s<strong>in</strong>d, d.h. <strong>die</strong> Mächtigkeit von N d (K), wobei<br />

N 1 (M) = ⋃ {N(L) | L ∈ M} und N i (K) = N(N i−1 (K)).<br />

E<strong>in</strong>e Suchstragie ist e<strong>in</strong>e Vorgehensweise bei <strong>der</strong> Durchmuster des Suchraumes. E<strong>in</strong>e Suchstrategie<br />

ist vollständig, wenn sie <strong>in</strong> endlich vielen Schritten (Zeit) e<strong>in</strong>en Zielknoten f<strong>in</strong>det, falls<br />

<strong>die</strong>ser existiert.<br />

Bemerkung 2.1.3. Im Allgeme<strong>in</strong>en hat man e<strong>in</strong>e mittlere Verzweigungsrate c > 1. Damit ist <strong>der</strong><br />

Aufwand <strong>der</strong> Suche exponentiell <strong>in</strong> <strong>der</strong> Tiefe des Suchraums. Das nennt man auch komb<strong>in</strong>atorische<br />

Explosion.<br />

Die meisten Suchprobleme s<strong>in</strong>d NP-vollständig bzw. NP-hart. In <strong>die</strong>sem Fall benötigen alle bekannten<br />

Algorithmen im schlechtesten Fall (m<strong>in</strong>destens) exponentiellen Zeitaufwand <strong>in</strong> <strong>der</strong> Größe<br />

des Problems.<br />

Stand: 18. Oktober 2012 26 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.1 Algorithmische Suche<br />

2.1.4 Prozeduren für nicht-<strong>in</strong>formierte Suche (Bl<strong>in</strong>d search)<br />

Wir betrachten zunächst <strong>die</strong> nicht-<strong>in</strong>formierte Suche, wobei nicht-<strong>in</strong>formiert bedeutet,<br />

dass <strong>die</strong> Suche nur den Graphen und <strong>die</strong> Nachfolgerfunktion verwenden darf (kann),<br />

aber ke<strong>in</strong>e an<strong>der</strong>en Informationen über <strong>die</strong> Knoten, Kanten usw. verwenden kann.<br />

Die Parameter s<strong>in</strong>d<br />

• Menge <strong>der</strong> <strong>in</strong>itialen Knoten<br />

• Menge <strong>der</strong> Zielknoten, bzw. e<strong>in</strong>deutige Festlegung <strong>der</strong> Eigenschaften <strong>der</strong> Zielknoten<br />

• Nachfolgerfunktion N<br />

Algorithmus Nicht-<strong>in</strong>formierte Suche<br />

Datenstrukturen: L sei e<strong>in</strong>e Menge von Knoten, markiert mit dem dorth<strong>in</strong> führenden<br />

Weg.<br />

E<strong>in</strong>gabe: Setze L := Menge <strong>der</strong> <strong>in</strong>itialen Knoten mit leerem Weg<br />

Algorithmus:<br />

1. Wenn L leer ist, dann breche ab.<br />

2. Wähle e<strong>in</strong>en beliebigen Knoten K aus L.<br />

3. Wenn K e<strong>in</strong> Zielknoten ist, dann gebe aus: Zielknoten und Weg dorth<strong>in</strong> (d.h.<br />

Weg im Graphen dorth<strong>in</strong>)<br />

4. Wenn K ke<strong>in</strong> Zielknoten, dann nehme Menge N(K) <strong>der</strong> direkten Nachfolger<br />

von K und verän<strong>der</strong>e L folgen<strong>der</strong>maßen:<br />

L := (L ∪ N(K)) \ {K} (Wege entsprechend anpassen)<br />

Mache weiter mit Schritt 1<br />

Wir betrachten im folgenden Varianten <strong>der</strong> bl<strong>in</strong>den Suche, <strong>die</strong> <strong>in</strong>sbeson<strong>der</strong>e das Wählen<br />

des Knotens K aus L e<strong>in</strong>deutig durchführen.<br />

2.1.4.1 Varianten <strong>der</strong> bl<strong>in</strong>den Suche: Breitensuche und Tiefensuche<br />

Die Tiefensuche verwendet anstelle <strong>der</strong> Menge <strong>der</strong> L e<strong>in</strong>e Liste von Knoten und wählt stets<br />

als nächsten zu betrachtenden Knoten <strong>die</strong>ser Liste. Außerdem werden neue Nachfolger<br />

stets vorne <strong>in</strong> <strong>die</strong> Liste e<strong>in</strong>gefügt, was zur Charakteristik führt, dass zunächst <strong>in</strong> <strong>der</strong> Tiefe<br />

gesucht wird.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 27 Stand: 18. Oktober 2012


2 Suchverfahren<br />

Algorithmus Tiefensuche<br />

Datenstrukturen: L sei e<strong>in</strong>e Liste (Stack) von Knoten, markiert mit dem dorth<strong>in</strong> führenden<br />

Weg.<br />

E<strong>in</strong>gabe: Füge <strong>die</strong> <strong>in</strong>itialen Knoten <strong>in</strong> <strong>die</strong> Liste L e<strong>in</strong>.<br />

Algorithmus:<br />

1. Wenn L <strong>die</strong> leere Liste ist, dann breche ab.<br />

2. Wähle ersten Knoten K aus L, sei R <strong>die</strong> Restliste.<br />

3. Wenn K e<strong>in</strong> Zielknoten ist, dann gebe aus: Zielknoten und Weg dorth<strong>in</strong> (d.h.<br />

Weg im Graphen dorth<strong>in</strong>)<br />

4. Wenn K ke<strong>in</strong> Zielknoten, dann sei N(K) <strong>die</strong> (geordnete) Liste <strong>der</strong> direkten<br />

Nachfolger von K, mit dem Weg dorth<strong>in</strong> markiert<br />

L := N(K) ++ R. (wobei ++ Listen zusammenhängt)<br />

Mache weiter mit 1.<br />

E<strong>in</strong>e e<strong>in</strong>fache, rekursive Implementierung <strong>in</strong> Haskell ist:<br />

dfs ::(a -> Bool) -- Zieltest (goal)<br />

-> (a -> [a]) -- Nachfolgerfunktion (succ)<br />

-> [a] -- Startknoten<br />

-> Maybe (a, [a]) -- Ergebnis: Just (Zielknoten,Pfad) o<strong>der</strong> Noth<strong>in</strong>g<br />

dfs goal succ stack =<br />

-- E<strong>in</strong>fuegen <strong>der</strong> Anfangspfade, dann mit iterieren mit go<br />

go [(k,[k]) | k


2.1 Algorithmische Suche<br />

Beachte, dass Tiefensuche nicht vollständig ist, wenn <strong>der</strong> Suchgraph unendlich groß ist, denn <strong>die</strong><br />

Suche kann am Ziel vorbeilaufen, und für immer im unendlichen langen Pfad laufen.<br />

2.1.4.2 Pragmatische Verbesserungsmöglichkeiten <strong>der</strong> Tiefensuche<br />

E<strong>in</strong>ige offensichtliche, e<strong>in</strong>fache Verbesserungsmöglichkeiten <strong>der</strong> Tiefensuche s<strong>in</strong>d:<br />

Tiefensuche mit Tiefenbeschränkung k<br />

Wenn <strong>die</strong> vorgegebene Tiefenschranke k überschritten wird, werden ke<strong>in</strong>e Nachfolger<br />

<strong>die</strong>ser Knoten mehr erzeugt. Die Tiefensuche f<strong>in</strong>det <strong>in</strong> <strong>die</strong>sem Fall jeden Zielknoten,<br />

<strong>der</strong> höchstens Tiefe k hat.<br />

E<strong>in</strong>e Haskell-Implementierung dazu wäre (anstelle <strong>der</strong> Tiefe wird <strong>die</strong> noch verfügbare<br />

Suchtiefe mit den Knoten gespeichert):<br />

dfsBisTiefe goal succ stack maxdepth =<br />

-- wir speichern <strong>die</strong> Tiefe mit <strong>in</strong> den Knoten auf dem Stack:<br />

go [(k,maxdepth,[k]) | k 0 = go ([(k’,i -1, k’:p) | k’


2 Suchverfahren<br />

Tiefensuche mit Shar<strong>in</strong>g, aber beschränktem Speicher<br />

Diese Variante funktioniert wie Tiefensuche mit Shar<strong>in</strong>g, aber es werden maximal<br />

nur B Knoten gespeichert.<br />

Der Vorteil gegenüber Tiefensuche ist Ausnutzen von geme<strong>in</strong>samen Knoten; besser<br />

als Tiefensuche mit Shar<strong>in</strong>g, da <strong>die</strong> Suche weiterläuft, wenn <strong>die</strong> Speicherkapazität<br />

nicht für alle besuchten Knoten ausreicht.<br />

2.1.4.3 Effekt des Zurücksetzen: (Backtrack<strong>in</strong>g)<br />

Die Tiefensuche führt Backtrack<strong>in</strong>g durch, wenn nicht erfolgreiche Pfade erkannt werden.<br />

Die Arbeitsweise <strong>der</strong> Tiefensuche ist: Wenn Knoten K ke<strong>in</strong>e Nachfolger hat (o<strong>der</strong> e<strong>in</strong>e<br />

Tiefenbeschränkung) überschritten wurde, dann mache weiter mit dem nächsten Bru<strong>der</strong><br />

von K. Dies wird auch als chronologisches Zurücksetzen,chronological backtrack<strong>in</strong>g, bezeichnet.<br />

Abwandlungen <strong>die</strong>ser Verfahren s<strong>in</strong>d Dynamic Backtrack<strong>in</strong>g und Dependency-directed<br />

Backtrack<strong>in</strong>g. Diese Varianten, schneiden Teile des Suchraumes ab, und können verwendet<br />

werden, wenn mehr über <strong>die</strong> Struktur des Suchproblems bekannt ist. Insbeson<strong>der</strong>e dann,<br />

wenn sichergestellt ist, dass man trotz <strong>der</strong> Abkürzungen <strong>der</strong> Suche auf jeden Fall noch<br />

e<strong>in</strong>en Zielknoten f<strong>in</strong>den kann.<br />

Es gibt auch Suchprobleme, bei denen ke<strong>in</strong> Backtrack<strong>in</strong>g erfor<strong>der</strong>lich ist (greedy Verfahren<br />

ist möglich)<br />

Dies kann z.B. <strong>der</strong> Fall se<strong>in</strong>, wenn je<strong>der</strong> Knoten noch e<strong>in</strong>en Zielknoten als Nachfolger<br />

hat. Die Tiefensuche reicht dann aus, wenn <strong>die</strong> Tiefe <strong>der</strong> Zielknoten <strong>in</strong> alle Richtungen<br />

unterhalb jedes Knotens beschränkt ist. An<strong>der</strong>enfalls reicht Tiefensuche nicht aus (ist nicht<br />

vollständig), da <strong>die</strong>se Suche sich immer den Ast aussuchen kann, <strong>in</strong> dem <strong>der</strong> Zielknoten<br />

weiter weg ist.<br />

Algorithmus Breitensuche<br />

Datenstrukturen: L sei e<strong>in</strong>e Menge von Knoten, markiert mit dem dorth<strong>in</strong> führenden<br />

Weg.<br />

E<strong>in</strong>gabe: Füge <strong>die</strong> <strong>in</strong>itialen Knoten <strong>in</strong> <strong>die</strong> MengeL e<strong>in</strong>.<br />

Algorithmus:<br />

1. Wenn L leer ist, dann breche ab.<br />

2. Wenn L e<strong>in</strong>en Zielknoten K enthält, dann gebe aus: K und Weg dorth<strong>in</strong>.<br />

3. Sonst, sei N(L) Menge aller direkten Nachfolger <strong>der</strong> Knoten von L, mit e<strong>in</strong>em<br />

Weg dorth<strong>in</strong> markiert.<br />

Mache weiter mit Schritt 1 und L := N(L).<br />

E<strong>in</strong>e Implementierung <strong>in</strong> Haskell ist:<br />

Stand: 18. Oktober 2012 30 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.1 Algorithmische Suche<br />

bfs goal succ start =<br />

go [(k,[k]) | k go [(k’,k’:p) | (k,p) 1 ist:<br />

Platz: ∼ Anzahl <strong>der</strong> Knoten <strong>in</strong> Tiefe d, d.h. c d , und das ist exponentiell <strong>in</strong> <strong>der</strong> Tiefe d.<br />

Zeit: (Anzahl <strong>der</strong> Knoten <strong>in</strong> Tiefe d) + Aufwand für Mengenbildung: n + n ∗ log(n), wenn<br />

n = #Knoten. Bei obiger Annahme e<strong>in</strong>er fester Verzweigungsrate ist das c d (1 + d ∗<br />

log(c)).<br />

Die Breitensuche ist vollständig! D.h. wenn es e<strong>in</strong>en (erreichbaren) Zielknoten gibt, wird<br />

sie auch <strong>in</strong> endlicher Zeit e<strong>in</strong>en f<strong>in</strong>den.<br />

2.1.4.4 Iteratives Vertiefen (iterative deepen<strong>in</strong>g)<br />

Dieses Verfahren ist e<strong>in</strong> Kompromiss zwischen Tiefen- und Breitensuche, wobei man <strong>die</strong><br />

Tiefensuche mit Tiefenbeschränkung anwendet. Hierbei wird <strong>die</strong> Tiefenschranke iterativ<br />

erhöht. Wenn ke<strong>in</strong> Zielknoten gefunden wurde, wird <strong>die</strong> ganze Tiefensuche jeweils mit<br />

größerer Tiefenschranke nochmals durchgeführt.<br />

E<strong>in</strong>e Implementierung <strong>in</strong> Haskell ist:<br />

idfs goal succ stack =<br />

let -- alle Ergebnisse mit sukzessiver Erh"ohung <strong>der</strong> Tiefenschranke<br />

alleSuchen = [dfsBisTiefe goal succ stack i | i Noth<strong>in</strong>g -- Trotzdem nichts gefunden<br />

(r:rs) -> r -- sonst erstes Ergebnisse<br />

Man beachte, dass man <strong>die</strong> Tiefe, <strong>in</strong> welcher <strong>der</strong> erste Zielknoten auftritt, nicht vorhersagen<br />

kann.<br />

Der Vorteil des iterativen Vertiefens ist <strong>der</strong> viel ger<strong>in</strong>gere Platzbedarf gegenüber <strong>der</strong><br />

Breitensuche bei Erhaltung <strong>der</strong> Vollständigkeit des Verfahrens. Man nimmt e<strong>in</strong>e leichte<br />

Verschlechterung des Zeitbedarfs <strong>in</strong> Kauf, da Knoten mehrfach untersucht werden.<br />

Komplexitätsbetrachtung: bei fester Verzweigungsrate c > 1.<br />

Platzbedarf: l<strong>in</strong>ear <strong>in</strong> <strong>der</strong> Tiefe ! Zeitbedarf: Wir zählen nur <strong>die</strong> im Mittel besuchten Knoten,<br />

wenn <strong>der</strong> erste Zielknoten <strong>in</strong> Tiefe k ist, wobei wir bei <strong>der</strong> Rechnung <strong>die</strong> Näherung<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 31 Stand: 18. Oktober 2012


2 Suchverfahren<br />

n∑<br />

a i ≈ an+1<br />

für a > 1 verwenden.<br />

i=1 a − 1<br />

Tiefensuche mit Tiefenbeschränkung k:<br />

Iteratives Vertiefen bis Tiefe k:<br />

0.5 ∗ (<br />

k∑<br />

i=1<br />

c i ) ≈ 0.5 ∗ ( ck+1<br />

c − 1 )<br />

=<br />

∑k−1<br />

i=1<br />

c i+1 ck+1<br />

+ 0.5 ∗ (<br />

c − 1<br />

∑<br />

( k c i ) − c k<br />

i=1<br />

c − 1<br />

c k+1<br />

= (<br />

(c − 1) 2 ) − c<br />

c − 1<br />

k−1 ∑<br />

c − 1 ) = i=1<br />

c i+1<br />

c − 1<br />

ck+1<br />

+ 0.5 ∗ (<br />

c − 1 )<br />

+ 0.5 ∗ ( ck+1<br />

c − 1 ) ≈ 1 ck+1<br />

((<br />

c − 1 c − 1 ) − c1 ) + 0.5 ∗ ( ck+1<br />

c − 1 )<br />

ck+1<br />

+ 0.5 ∗ (<br />

c − 1 ) ≈ ( c k+1<br />

ck+1<br />

) + 0.5 ∗ (<br />

(c − 1) 2 c − 1 )<br />

Der Faktor des Mehraufwandes für iteratives Vertiefen im Vergleich zur Tiefensuche<br />

(mit <strong>der</strong> richtigen Tiefenbeschränkung) ergibt sich zu:<br />

c k+1<br />

ck+1<br />

2<br />

+ 0.5 ∗ (<br />

(c − 1) c − 1 )<br />

=<br />

0.5 ∗ ( ck+1<br />

c − 1 )<br />

c k+1<br />

E<strong>in</strong> Tabelle <strong>der</strong> ca.-Werte des Faktors d = 2<br />

c − 1 + 1 ist<br />

c 2 3 4 5 . . . 10<br />

(c − 1) 2<br />

+ 1 = 2<br />

0.5 ∗ ( ck+1<br />

c − 1 ) c − 1 + 1<br />

d 3 2 1, 67 1, 5 . . . 1, 22<br />

D.h. <strong>der</strong> eigentliche Aufwand ergibt sich am Horizont <strong>der</strong> Suche. Der Vergleich ist zudem<br />

leicht unfair für iteratives Vertiefen, da <strong>die</strong> Tiefensuche ja den Wert von k nicht kennt.<br />

Das Verfahren des iteratives Vertiefen wird z.B. im Automatischen Beweisen verwendet<br />

(siehe z.B. M. Stickel: A PROLOG-technology theorem prover.) Die Entscheidungsalternativen,<br />

<strong>die</strong> man beim Optimieren abwägen muss, s<strong>in</strong>d:<br />

• Speichern<br />

• Neu Berechnen.<br />

Stickels Argument: <strong>in</strong> exponentiellen Suchräumen greift <strong>die</strong> Intuition nicht immer: Neuberechnen<br />

kann besser se<strong>in</strong> als Speichern und Wie<strong>der</strong>verwenden.<br />

Stand: 18. Oktober 2012 32 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.1 Algorithmische Suche<br />

Bemerkung 2.1.5. Beim dynamischen Programmieren ist <strong>in</strong> e<strong>in</strong>igen Fällen <strong>der</strong> Effekt gerade umgekehrt.<br />

Man spen<strong>die</strong>rt Platz für bereits berechnete Ergebnisse und hat dadurch e<strong>in</strong>e enorme Ersparnis<br />

beim Zeitbedarf.<br />

2.1.4.5 Iteratives Vertiefen (iterative deepen<strong>in</strong>g) mit Speicherung<br />

Die Idee hierbei ist, den freien Speicherplatz beim iterativen Vertiefen s<strong>in</strong>nvoll zu nutzen.<br />

Hierbei kann man zwei verschiedene Verfahren verwenden:<br />

1. Bei jedem Restart <strong>der</strong> Tiefensuche wird <strong>der</strong> zugehörige Speicher <strong>in</strong>itialisiert. Während<br />

<strong>der</strong> Tiefensuchphase speichert man Knoten, <strong>die</strong> bereits expan<strong>die</strong>rt waren und<br />

vermeidet damit <strong>die</strong> wie<strong>der</strong>holte Expansion. Hier kann man soviele Knoten speichern<br />

wie möglich. Man spart sich redundante Berechnungen, aber <strong>der</strong> Nachteil ist,<br />

dass bei je<strong>der</strong> Knotenexpansion nachgeschaut werden muss, ob <strong>die</strong> Knoten schon<br />

besucht wurden.<br />

2. Man kann Berechnungen, <strong>die</strong> <strong>in</strong> e<strong>in</strong>er Tiefensuchphase gemacht wurden, <strong>in</strong> <strong>die</strong><br />

nächste Iteration <strong>der</strong> Tiefensuche retten und somit redundante Berechnungen vermeiden.<br />

Wenn alle Knoten <strong>der</strong> letzten Berechnung gespeichert werden können,<br />

kann man von dort aus sofort weiter machen (d.h. man hat dann Breitensuche). Da<br />

man das i.a. nicht kann, ist folgendes s<strong>in</strong>nvoll:<br />

Man speichert den l<strong>in</strong>ken Teil des Suchraum, um den Anfang <strong>der</strong> nächsten Iteration<br />

schneller zu machen, und Knoten, <strong>die</strong> schon als Fehlschläge bekannt s<strong>in</strong>d, d.h.<br />

solche, <strong>die</strong> garantiert ke<strong>in</strong>en Zielknoten als Nachfolger haben.<br />

2.1.5 Rückwärtssuche<br />

Die Idee <strong>der</strong> Rückwärtssuche ist:<br />

man geht von e<strong>in</strong>em (bekannten) Zielknoten aus und versucht den Anfangsknoten<br />

zu erreichen.<br />

Voraussetzungen dafür s<strong>in</strong>d:<br />

• Man kann Zielknoten explizit angeben (nicht nur e<strong>in</strong>e Eigenschaft, <strong>die</strong> <strong>der</strong> Zielknoten<br />

erfüllen muss).<br />

• man kann von jedem Knoten <strong>die</strong> direkten Vorgänger berechnen.<br />

Rückwärtssuche ist besser als Vorwärtssuche, falls <strong>die</strong> Verzweigungsrate <strong>in</strong> Rückwärtsrichtung<br />

kle<strong>in</strong>er ist <strong>die</strong> Verzweigungsrate <strong>in</strong> Vorwärtsrichtung.<br />

Man kann normale Suche und Rückwärtssuche komb<strong>in</strong>ieren zur Bidirektionalen Suche,<br />

<strong>die</strong> von beiden Seiten sucht.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 33 Stand: 18. Oktober 2012


2 Suchverfahren<br />

2.2 Informierte Suche, Heuristische Suche<br />

Die Suche nennt man „<strong>in</strong>formiert“, wenn man zusätzlich e<strong>in</strong>e Bewertung von allen Knoten<br />

des Suchraumes angeben kann, d.h. e<strong>in</strong>e Schätzfunktion, <strong>die</strong> man <strong>in</strong>terpretieren kann<br />

als Ähnlichkeit zu e<strong>in</strong>em Zielknoten, o<strong>der</strong> als Schätzung des Abstands zum Zielknoten.<br />

Der Zielknoten sollte e<strong>in</strong> Maximum bzw. M<strong>in</strong>imum <strong>der</strong> Bewertungsfunktion se<strong>in</strong>.<br />

E<strong>in</strong>e Heuristik („Daumenregel“) ist e<strong>in</strong>e Methode, <strong>die</strong> oft ihren Zweck erreicht, aber nicht<br />

mit Sicherheit. Man spricht von heuristischer Suche, wenn <strong>die</strong> Schätzfunktion <strong>in</strong> vielen<br />

praktisch brauchbaren Fällen <strong>die</strong> richtige Richtung zu e<strong>in</strong>em Ziel angibt, aber möglicherweise<br />

manchmal versagt.<br />

Das Suchproblem kann jetzt ersetzt werden durch:<br />

M<strong>in</strong>imierung (bzw. Maximierung) e<strong>in</strong>er Knotenbewertung (e<strong>in</strong>er Funktion)<br />

auf e<strong>in</strong>em gerichteten Graphen (<strong>der</strong> aber erst erzeugt werden muss)<br />

Variante: Maximierung <strong>in</strong> e<strong>in</strong>er Menge o<strong>der</strong> <strong>in</strong> e<strong>in</strong>em n-dimensionaler Raum.<br />

Beispiel: 8-Puzzle<br />

Wir betrachten als Beispiel das sogenannte 8-Puzzle. Dabei s<strong>in</strong>d 8 Plättchen mit den Zahlen<br />

1 bis beschriftet und <strong>in</strong> e<strong>in</strong>em 3x3 Raster angeordnet, d.h. es gibt e<strong>in</strong> leeres Feld. Mögliche<br />

Züge s<strong>in</strong>d: Plättchen können auf das freie Feld verschoben werden, wenn sie direkter<br />

Nachbar des freien Feldes s<strong>in</strong>d. Ziel des Puzzles ist es, <strong>die</strong> Zahlen <strong>der</strong> Reihe nach anzuordnen.<br />

8<br />

6<br />

7<br />

5<br />

2<br />

1<br />

4<br />

3<br />

Wir repräsentieren das 8-Puzzle als als 3×3-Matrix, wobei a ij = n, wenn n <strong>die</strong> Nummer<br />

des Plättchens ist, das an Position (i, j) ist. B bezeichne das leere Feld.<br />

Anfang: beliebige Permutation <strong>der</strong> Matrix, z.B.<br />

⎛<br />

⎜<br />

⎝<br />

8 B 1<br />

6 5 4<br />

7 2 3<br />

⎞<br />

⎟<br />

⎠<br />

Ziel:<br />

⎛<br />

⎜<br />

⎝<br />

1 2 3<br />

4 5 6<br />

7 8 B<br />

⎞<br />

⎟<br />

⎠<br />

Bewertungsfunktionen: zwei Beispiele s<strong>in</strong>d:<br />

Stand: 18. Oktober 2012 34 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.2 Informierte Suche, Heuristische Suche<br />

1. f 1 () Anzahl <strong>der</strong> Plättchen an <strong>der</strong> falschen Stelle<br />

2. f 2 () Anzahl <strong>der</strong> Züge (ohne Beh<strong>in</strong><strong>der</strong>ungen zu beachten), <strong>die</strong> man braucht, um<br />

Endzustand zu erreichen.<br />

S 1 =<br />

⎛<br />

⎜<br />

⎝<br />

2 3 1<br />

8 7 6<br />

B 5 4<br />

⎞<br />

⎟<br />

⎠<br />

f 1 (S 1 ) = 7 (nur Plättchen 6 ist richtig)<br />

f 2 (S 1 ) = 2 + 1 + 1 + 3 + 1 + 0 + 2 + 2 = 12<br />

(Die Summe ist <strong>in</strong> <strong>der</strong> Reihenfolge 1, . . . , n)<br />

S 2 =<br />

⎛<br />

⎜<br />

⎝<br />

2 3 1<br />

B 7 6<br />

8 5 4<br />

⎞<br />

⎟<br />

⎠ f 1(S 2 ) = 7<br />

f 2 (S 2 ) = 2 + 1 + 1 + 3 + 1 + 0 + 2 + 1 = 11<br />

Man sieht, dass <strong>die</strong> zweite Bewertungsfunktion genauer angibt als <strong>die</strong> erste, wie gut<br />

<strong>die</strong> erreichte Situation ist.<br />

Aber: es ist bekannt, dass es Ausgangssituationen gibt, von denen aus man das Ziel<br />

nicht erreichen kann (Permutation ist ungerade).<br />

In den Unterlagen ist e<strong>in</strong> Haskell-Programm, das mit Best-First und verschiedenen<br />

Bewertungsfunktionen, nach nicht allzu langer Zeit e<strong>in</strong>e Zugfolge für 3 × 3 f<strong>in</strong>det. Wenn<br />

man <strong>die</strong>ses Puzzle für größere n per Hand und per Suche probiert und vergleicht, so<br />

erkennt man, dass <strong>der</strong> Rechner sich <strong>in</strong> lokalen Optimierungen verliert, während man von<br />

Hand e<strong>in</strong>e Strategie f<strong>in</strong>det, <strong>die</strong> <strong>die</strong> Zielsituation herstellt, falls es überhaupt möglich ist.<br />

Diese Strategie ist <strong>in</strong> etwa so:<br />

• Verschiebe zunächst <strong>die</strong> 1 so, dass <strong>die</strong>se an ihrem Platz ist.<br />

• Verschiebe zunächst <strong>die</strong> 2 so, dass <strong>die</strong>se an ihrem Platz ist.<br />

• ......<br />

• bei den letzten beiden Ziffern <strong>der</strong> ersten Zeile: n − 1, n erlaube e<strong>in</strong>e Suche durch<br />

Verschieben <strong>in</strong>nerhalb e<strong>in</strong>es 3 × 2-Kästchens.<br />

• Benutze <strong>die</strong>se Strategie bis zur vorletzten Zeile.<br />

• Bei <strong>der</strong> vorletzten Zeile, fange von l<strong>in</strong>ks an, jeweils zwei Plättchen korrekt zu schieben,<br />

bis das letzte 2 × 3 Rechteck bleibt.<br />

• Innerhalb <strong>die</strong>ses Rechtecks probiere, bis <strong>die</strong> Plättchen an ihrem Platz s<strong>in</strong>d.<br />

Man sieht, dass e<strong>in</strong>fache Bewertungsfunktionen <strong>die</strong>se Strategie nicht erzeugen. Kennt<br />

man <strong>die</strong> Strategie, kann man e<strong>in</strong>e (komplizierte) Bewertungsfunktion angeben, <strong>die</strong> <strong>die</strong>ses<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 35 Stand: 18. Oktober 2012


2 Suchverfahren<br />

Verhalten erzw<strong>in</strong>gt. Beim n-Puzzle ist es vermutlich schwieriger <strong>die</strong>se Bewertungsfunktion<br />

zu f<strong>in</strong>den, als das Problem direkt zu programmieren, wenn man e<strong>in</strong>e Strategie erzw<strong>in</strong>gen<br />

will. Hier braucht man eigentlich e<strong>in</strong>en guten Planungsalgorithmus mit Zwischenund<br />

Unterzielen und Prioritäten.<br />

2.2.1 Bergsteigerprozedur (Hill-climb<strong>in</strong>g)<br />

Dies ist auch als Gra<strong>die</strong>ntenaufstieg (-abstieg) 2 bekannt, wenn man e<strong>in</strong>e n-dimensionale<br />

Funktion <strong>in</strong> <strong>die</strong> reellen Zahlen maximieren will (siehe auch Verfahren im Bereich Operations<br />

Research).<br />

Parameter <strong>der</strong> Bergsteigerprozedur s<strong>in</strong>d<br />

• Menge <strong>der</strong> <strong>in</strong>itialen Knoten<br />

• Nachfolgerfunktion (Nachbarschaftsrelation)<br />

• Bewertungsfunktion <strong>der</strong> Knoten, wobei wir annehmen, dass Zielknoten maximale<br />

Werte haben (M<strong>in</strong>imierung erfolgt analog)<br />

• Zieltest<br />

Algorithmus Bergsteigen<br />

Datenstrukturen: L : Liste von Knoten, markiert mit Weg dorth<strong>in</strong><br />

h sei <strong>die</strong> Bewertungsfunktion <strong>der</strong> Knoten<br />

E<strong>in</strong>gabe: L sie <strong>die</strong> Liste <strong>der</strong> <strong>in</strong>itialen Knoten, absteigend sortiert entsprechend h<br />

Algorithmus:<br />

1. Sei K das erste Element von L und R <strong>die</strong> Restliste<br />

2. Wenn K e<strong>in</strong> Zielknoten, dann stoppe und geben K markiert mit dem Weg zurück<br />

3. Sortiere <strong>die</strong> Liste NF (K) absteigend entsprechend h und entferne schon besuchte<br />

Knoten aus dem Ergebnis. Sei <strong>die</strong>s <strong>die</strong> Liste L ′ .<br />

4. Setze L := L ′ ++R und gehe zu 1.<br />

Bergsteigen verhält sich analog zur Tiefensuche, wobei jedoch stets als nächster Knoten<br />

<strong>der</strong> Nachfolger expan<strong>die</strong>rt wird, <strong>der</strong> heuristisch den besten Wert besitzt. Bei lokalen Maxima<br />

kann <strong>die</strong> Bergsteigerprozedur e<strong>in</strong>e zeitlang <strong>in</strong> <strong>die</strong>sen verharren, bevor Backtrack<strong>in</strong>g<br />

durchgeführt wird. Beachte, dass das vermeiden von Zyklen unabd<strong>in</strong>gbar ist, da ansonsten<br />

<strong>die</strong> Bergsteigerprozedur <strong>in</strong> lokalen Maxima hängen bleibt. Der Erfolg <strong>der</strong> Bergsteigerprozedur<br />

hängt stark von <strong>der</strong> Güte <strong>der</strong> Bewertungsfunktion ab. E<strong>in</strong> an<strong>der</strong>es Problem<br />

2 Gra<strong>die</strong>nt: Richtung <strong>der</strong> Vergrößerung e<strong>in</strong>er Funktion; kann berechnet werden durch Differenzieren<br />

Stand: 18. Oktober 2012 36 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.2 Informierte Suche, Heuristische Suche<br />

ergibt sich bei Plateaus, d.h. wenn mehrere Nachfolger <strong>die</strong> gleiche Bewertung haben, <strong>in</strong><br />

<strong>die</strong>sem Fall ist nicht e<strong>in</strong>deutig, welcher Weg gewählt werden soll.<br />

Durch <strong>die</strong> Speicherung <strong>der</strong> besuchten Knoten ist <strong>der</strong> Platzbedarf l<strong>in</strong>ear <strong>in</strong> <strong>der</strong> Anzahl<br />

<strong>der</strong> besuchten Knoten, also exponentiell <strong>in</strong> <strong>der</strong> Tiefe.<br />

In Haskell (unter Verwendung <strong>der</strong> Klassenfunktion <strong>der</strong> Typklasse HeuristicSearch)<br />

könnte man <strong>die</strong> Bergsteigerprozedur implementieren durch folgenden Code:<br />

hillclimb<strong>in</strong>g cmp heuristic goal successor start =<br />

let -- sortiere <strong>die</strong> Startknoten<br />

list = map (\k -> (k,[k])) (sortByHeuristic start)<br />

<strong>in</strong> go list []<br />

where<br />

go ((k,path):r) mem<br />

| goal k = Just (k,path) -- Zielknoten erreicht<br />

| otherwise =<br />

let -- Berechne <strong>die</strong> Nachfolger (nur neue Knoten)<br />

nf = (successor k) \\ mem<br />

-- Sortiere <strong>die</strong> Nachfolger entsprechend <strong>der</strong> Heuristik<br />

l’ = map (\k -> (k,k:path)) (sortByHeuristic nf)<br />

<strong>in</strong> go (l’ ++ r) (k:mem)<br />

sortByHeuristic = sortBy (\a b -> cmp (heuristic a) (heuristic b))<br />

Dabei ist das erste Argument cmp <strong>die</strong> Vergleichsfunktion (z.B. compare), <strong>die</strong> es daher<br />

flexibel ermöglich zu m<strong>in</strong>imieren o<strong>der</strong> zu maximieren. Das zweite Argument ist e<strong>in</strong>e<br />

Liste von Startzuständen. Die Element <strong>der</strong> Liste müssen dabei Instanzen <strong>der</strong> Typklasse<br />

HeuristicSearch se<strong>in</strong> (damit <strong>die</strong> Funktionen successor, goal und heuristic für <strong>die</strong>sen<br />

Typ def<strong>in</strong>iert s<strong>in</strong>d.<br />

2.2.2 Der Beste-zuerst (Best-first) Suche<br />

Wir betrachten als nächste <strong>die</strong> Best-first-Suche. Diese wählt immer als nächsten zu expan<strong>die</strong>renden<br />

Knoten, denjenigen Knoten aus, <strong>der</strong> den Besten Wert bzgl. <strong>der</strong> Heuristik hat.<br />

Der Algorithmus ist:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 37 Stand: 18. Oktober 2012


2 Suchverfahren<br />

Algorithmus Best-First Search<br />

Datenstrukturen:<br />

Sei L Liste von Knoten, markiert mit dem Weg dorth<strong>in</strong>.<br />

h sei <strong>die</strong> Bewertungsfunktion <strong>der</strong> Knoten<br />

E<strong>in</strong>gabe: L Liste <strong>der</strong> <strong>in</strong>itialen Knoten, sortiert, so dass <strong>die</strong> besseren Knoten vorne<br />

s<strong>in</strong>d.<br />

Algorithmus:<br />

1. Wenn L leer ist, dann breche ab<br />

2. Sei K <strong>der</strong> erste Knoten von L und R <strong>die</strong> Restliste.<br />

3. Wenn K e<strong>in</strong> Zielknoten ist, dann gebe K und den Weg dah<strong>in</strong> aus.<br />

4. Sei N(K) <strong>die</strong> Liste <strong>der</strong> Nachfolger von K. Entferne aus N(K) <strong>die</strong> bereits im<br />

Weg besuchten Knoten mit Ergebnis N<br />

5. Setze L := N ++ R<br />

6. Sortiere L, so dass bessere Knoten vorne s<strong>in</strong>d und gehe zu 1.<br />

Die best-first Suche entspricht e<strong>in</strong>er Tiefensuche, <strong>die</strong> jedoch den nächsten zu expan<strong>die</strong>renden<br />

Knoten anhand <strong>der</strong> Heuristik sucht. Im Unterschied zum Bergsteigen, bewertet<br />

<strong>die</strong> Best-First-Suche stets alle Knoten im Stack und kann daher schneller zurücksetzen<br />

und daher lokale Maxima schneller wie<strong>der</strong> verlassen. In <strong>der</strong> angegebenen Variante ist <strong>die</strong><br />

Suche nicht vollständig (analog wie <strong>die</strong> Tiefensuche). Der Platzbedarf ist durch <strong>die</strong> Speicherung<br />

<strong>der</strong> besuchten Knoten exponentiell <strong>in</strong> <strong>der</strong> Tiefe.<br />

Der Vollständigkeit halber geben wir e<strong>in</strong>e Implementierung <strong>in</strong> Haskell an:<br />

Stand: 18. Oktober 2012 38 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.2 Informierte Suche, Heuristische Suche<br />

bestFirstSearchMitShar<strong>in</strong>g cmp heuristic goal successor start =<br />

let -- sortiere <strong>die</strong> Startknoten<br />

list = sortByHeuristic (map (\k -> (k,[k])) (start))<br />

<strong>in</strong> go list []<br />

where<br />

go ((k,path):r) mem<br />

| goal k = Just (k,path) -- Zielknoten erreicht<br />

| otherwise =<br />

let -- Berechne <strong>die</strong> Nachfolger und nehme nur neue Knoten<br />

nf = (successor k) \\ mem<br />

-- aktualisiere Pfade<br />

l’ = map (\k -> (k,k:path)) nf<br />

-- Sortiere alle Knoten nach <strong>der</strong> Heuristik<br />

l’’ = sortByHeuristic (l’ ++ r)<br />

<strong>in</strong> go l’’ (k:mem)<br />

sortByHeuristic =<br />

sortBy (\(a,_) (b,_)-> cmp (heuristic a) (heuristic b))<br />

2.2.3 Simuliertes Ausglühen (simulated anneal<strong>in</strong>g)<br />

Die Analogie zum Ausglühen ist:<br />

Am Anfang hat man hohe Energie und alles ist beweglich,<br />

dann langsame Abkühlung, bis <strong>die</strong> Kristallisation e<strong>in</strong>tritt (bei m<strong>in</strong>imaler Energie).<br />

Die Anwendung <strong>in</strong> e<strong>in</strong>em Suchverfahren ist s<strong>in</strong>nvoll für Optimierung von n-<br />

dimensionalen Funktionen mit reellen Argumenten, weniger bei e<strong>in</strong>er Suche nach e<strong>in</strong>em<br />

Zielknoten <strong>in</strong> e<strong>in</strong>em gerichteten Suchgraphen.<br />

Bei Optimierung von n-dimensionalen Funktionen kann man <strong>die</strong> Argumente verän<strong>der</strong>n,<br />

wobei man den Abstand <strong>der</strong> verschiedenen Argumenttupel abhängig von <strong>der</strong> Temperatur<br />

def<strong>in</strong>ieren kann. Bei ger<strong>in</strong>gerer Temperatur s<strong>in</strong>kt <strong>die</strong>ser Abstand. Der Effekt ist, dass<br />

man zunächst mit e<strong>in</strong>em etwas groben Raster versucht, Anhaltspunkte für <strong>die</strong> Nähe zu<br />

e<strong>in</strong>em Optimum zu f<strong>in</strong>den. Hat man solche Anhaltspunkte, verfe<strong>in</strong>ert man das Raster,<br />

um e<strong>in</strong>em echten Maximum näher zu kommen, und um nicht über den Berg drüber zu<br />

spr<strong>in</strong>gen bzw. <strong>die</strong>sen zu untertunneln.<br />

Implementierung <strong>in</strong> e<strong>in</strong>em Optimierungsverfahren:<br />

1. Am Anfang große Schrittweite (passend zum Raum <strong>der</strong> Argumente). Mit <strong>die</strong>sen<br />

Werten und <strong>der</strong> Schrittweite Suche analog zu Best-First; dann allmähliche Verm<strong>in</strong><strong>der</strong>ung<br />

<strong>der</strong> Schrittweite, hierbei Schrittweite und Richtung zufällig auswählen, bis<br />

sich das System stabilisiert. Die besten Knoten werden jeweils weiter expan<strong>die</strong>rt.<br />

2. Alternativ: Das System läuft getaktet. Am Anfang wird e<strong>in</strong>e zufällige Menge von<br />

Knoten berücksichtigt. Bessere Knoten dürfen mit größerer Wahrsche<strong>in</strong>lichkeit im<br />

nächsten Takt Nachfolger erzeugen als schlechte Knoten. Die Wahrsche<strong>in</strong>lichkeit<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 39 Stand: 18. Oktober 2012


2 Suchverfahren<br />

für schlechte Knoten wird allmählich gesenkt, ebenso <strong>die</strong> Schrittweite.<br />

Analoge Verfahren werden auch <strong>in</strong> künstlichen neuronalen Netzen beim Lernen verwendet.<br />

Variante 2 hat Analogien zum Vorgehen bei evolutionären Algorithmen. E<strong>in</strong> Vorteil<br />

des Verfahrens liegt dar<strong>in</strong>, dass lokale Maxima können verlassen werden. E<strong>in</strong> Probleme<br />

des Verfahrens ist, dass es e<strong>in</strong>ige Parameter zu justieren s<strong>in</strong>d, <strong>die</strong> stark vom Problem<br />

abhängen können:<br />

• Schnelligkeit <strong>der</strong> „Abkühlung“<br />

• Abhängigkeit <strong>der</strong> Wahrsche<strong>in</strong>lichkeit von <strong>der</strong> „Temperatur“ (bzw. Wert <strong>der</strong> Schätzfunktion)<br />

2.3 A ∗ -Algorithmus<br />

Die vom A ∗ -Algorithmus zu lösenden Suchprobleme bestehen aus den E<strong>in</strong>gaben:<br />

• e<strong>in</strong> (gerichteter) Graph (wobei <strong>die</strong> Nachfolgerbeziehung i.a. algorithmisch gegeben<br />

ist), d.h. es gibt e<strong>in</strong>e Nachfolgerfunktion NF, <strong>die</strong> zu jedem Knoten N <strong>die</strong> Nachfolger<br />

NF(N) berechnet. Wir nehmen an, dass <strong>der</strong> Graph schlicht ist, d.h. es gibt höchstens<br />

e<strong>in</strong>e Kante zwischen zwei Knoten.<br />

• e<strong>in</strong>e (i.a. reellwertige) Kostenfunktion c für Kanten, sodass c(N 1 , N 2 ) ∈ R gerade <strong>die</strong><br />

Kosten <strong>der</strong> Kante von Knoten N 1 zu Knoten N 2 festlegt.<br />

Für e<strong>in</strong>en Weg N 1 → N 2 → . . . → N k bezeichne c W (N 1 N 2 . . . N k ) gerade <strong>die</strong> Summe<br />

<strong>der</strong> Kosten ∑ k−1<br />

i=1 c(N i, N i+1 ).<br />

• e<strong>in</strong> Startknoten S<br />

• e<strong>in</strong>e Schätzfunktion h(·), <strong>die</strong> <strong>die</strong> Kosten von e<strong>in</strong>em bereits erreichten Knoten N bis<br />

zum nächsten Zielknoten abschätzt.<br />

• e<strong>in</strong>en Test auf Zielknoten Z. Die Zielknoten s<strong>in</strong>d meist algorithmisch def<strong>in</strong>iert, d.h.<br />

man hat nur e<strong>in</strong>en Test, ob e<strong>in</strong> gegebener Knoten e<strong>in</strong> Zielknoten ist.<br />

Ziel ist das Auff<strong>in</strong>den e<strong>in</strong>es optimalen (d.h. mit m<strong>in</strong>imalen Kosten) Weges vom Startknoten<br />

zu e<strong>in</strong>em <strong>der</strong> Zielknoten,<br />

Beispiel 2.3.1. E<strong>in</strong> typisches Beispiel ist <strong>die</strong> Suche nach e<strong>in</strong>em kürzesten Weg von A nach B<br />

<strong>in</strong> e<strong>in</strong>em Stadtplan. Hier s<strong>in</strong>d <strong>die</strong> Knoten <strong>die</strong> Kreuzungen und <strong>die</strong> Kanten <strong>die</strong> Straßenabschnitte<br />

zwischen den Kreuzungen; <strong>die</strong> Kosten entsprechen <strong>der</strong> Weglänge.<br />

Der A ∗ -Algorithmus stützt sich auf e<strong>in</strong>e Komb<strong>in</strong>ation <strong>der</strong> bereits verbrauchten Kosten<br />

g(N) vom Start bis zu e<strong>in</strong>em aktuellen Knoten N und <strong>der</strong> noch geschätzten Kosten h(N)<br />

bis zu e<strong>in</strong>em Zielknoten Z, d.h. man benutzt <strong>die</strong> Funktion f(N) = g(N) + h(N). Die<br />

Funktion h(·) sollte leicht zu berechnen se<strong>in</strong>, und muss nicht exakt se<strong>in</strong>.<br />

Es gibt zwei Varianten des A ∗ -Algorithmus (abhängig von den Eigenschaften von h).<br />

Stand: 18. Oktober 2012 40 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.3 A ∗ -Algorithmus<br />

• Baum-Such-Verfahren: Ke<strong>in</strong> Update des m<strong>in</strong>imalen Weges bis zu e<strong>in</strong>em Knoten<br />

während des Ablaufs.<br />

• Graph-Such-Verfahren: Update des m<strong>in</strong>imalen Weges bis zu e<strong>in</strong>em Knoten während<br />

des Ablaufs<br />

Im Folgenden ist <strong>der</strong> A ∗ -Algorithmus als Graph-Such-Verfahren angegeben.<br />

Algorithmus A ∗ -Algorithmus<br />

Datenstrukturen:<br />

• Mengen von Knoten: Open und Closed<br />

• Wert g(N) für jeden Knoten (markiert mit Pfad vom Start zu N)<br />

• Heuristik h, Zieltest Z und Kantenkostenfunktion c<br />

E<strong>in</strong>gabe:<br />

• Open := {S}, wenn S <strong>der</strong> Startknoten ist<br />

• g(S) := 0, ansonsten ist g nicht <strong>in</strong>itialisiert<br />

• Closed := ∅<br />

Algorithmus:<br />

repeat<br />

Wähle N aus Open mit m<strong>in</strong>imalem f(N) = g(N) + h(N)<br />

if Z(N) then<br />

break; // Schleife beenden<br />

else<br />

Berechne Liste <strong>der</strong> Nachfolger N := NF (N)<br />

Schiebe Knoten N von Open nach Closed<br />

for N ′ ∈ N do<br />

if N ′ ∈ Open ∪ Closed und g(N) + c(N, N ′ ) > g(N ′ ) then<br />

skip // Knoten nicht verän<strong>der</strong>n<br />

else<br />

g(N’) := g(N) + c(N,N’); // neuer M<strong>in</strong>imalwert für g(N’)<br />

Füge N ′ <strong>in</strong> Open e<strong>in</strong> und (falls vorhanden) lösche N ′ aus Closed;<br />

end-if<br />

end-for<br />

end-if<br />

until Open = ∅<br />

if Open = ∅ then Fehler, ke<strong>in</strong> Zielknoten gefunden<br />

else N ist <strong>der</strong> Zielknoten mit g(N) als m<strong>in</strong>imalen Kosten<br />

end-if<br />

Bei <strong>der</strong> Variante als Baumsuche gibt es ke<strong>in</strong>e Closed-Menge. Daher kann <strong>der</strong> gleiche<br />

Knoten mehrfach <strong>in</strong> <strong>der</strong> Menge Open mit verschiedenen Wegen stehen. Bei Graphsuche<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 41 Stand: 18. Oktober 2012


2 Suchverfahren<br />

hat man immer den aktuell bekannten m<strong>in</strong>imalen Weg, und somit den Knoten nur e<strong>in</strong>mal<br />

<strong>in</strong> Open.<br />

Beachte, dass <strong>der</strong> (bzw. e<strong>in</strong>) Zielknoten <strong>in</strong> <strong>der</strong> Open-Menge se<strong>in</strong> kann, <strong>die</strong>ser aber erst als<br />

Ziel erkannt wird, wenn er als zu expan<strong>die</strong>ren<strong>der</strong> Knoten ausgewählt wird. Ebenso ist zu<br />

beachten, dass e<strong>in</strong> Knoten <strong>in</strong> <strong>der</strong> Closed-Menge se<strong>in</strong> kann, und wie<strong>der</strong> <strong>in</strong> <strong>die</strong> Open-Menge<br />

e<strong>in</strong>gefügt wird, weil e<strong>in</strong> kürzerer Weg entdeckt wird.<br />

E<strong>in</strong>e rekursive Implementierung <strong>der</strong> A ∗ -Suche <strong>in</strong> Haskell ist:<br />

-- E<strong>in</strong>tr"age <strong>in</strong> open / closed: (Knoten, (g(Knoten), Pfad zum Knoten))<br />

aStern heuristic goal successor open closed<br />

| null open = Noth<strong>in</strong>g -- Ke<strong>in</strong> Ziel gefunden<br />

| otherwise =<br />

let n@(node,(g_node,path_node)) = Knoten mit m<strong>in</strong>. f-Wert<br />

m<strong>in</strong>imumBy (\(a,(b,_)) (a’,(b’,_))<br />

-> compare ((heuristic a) + b) ((heuristic a’) + b’)) open<br />

<strong>in</strong><br />

if goal node then Just n else -- Zielknoten expan<strong>die</strong>rt<br />

let nf = (successor node) -- Nachfolger<br />

-- aktualisiere open und closed:<br />

(open’,closed’) = update nf (delete n open) (n:closed)<br />

update [] o c = (o,c)<br />

update ((nfnode,c_node_nfnode):xs) o c =<br />

let (o’,c’) = update xs o c -- rekursiver Aufruf<br />

-- m"oglicher neuer Knoten, mit neuem g-Wert und Pfad<br />

newnode = (nfnode,(g_node + c_node_nfnode,path_node ++ [node]))<br />

<strong>in</strong> case lookup nfnode open of -- Knoten <strong>in</strong> Open?<br />

Noth<strong>in</strong>g -> case lookup nfnode closed of -- Knoten <strong>in</strong> Closed?<br />

Noth<strong>in</strong>g -> (newnode:o’,c’)<br />

Just (curr_g,curr_path) -><br />

if curr_g > g_node + c_node_nfnode<br />

then (newnode:o’,delete (nfnode,(curr_g,curr_path)) c’)<br />

else (o’,c’)<br />

Just (curr_g,curr_path) -><br />

if curr_g > g_node + c_node_nfnode<br />

then (newnode:(delete (nfnode,(curr_g,curr_path)) o’),c’)<br />

else (o’,c’)<br />

<strong>in</strong> aStern heuristic goal successor open’ closed’<br />

Beispiel 2.3.2. Im Beispiel kann man sich den Fortschritt des A ∗ -Algorithmus leicht klarmachen,<br />

wenn man e<strong>in</strong>e Kante als 1 zählt, weiß wo das Ziel ist, und als Schätzfunktion des Abstands <strong>die</strong><br />

Rechteck-Norm |y 2 − y 1 | + |x 2 − x 1 | des Abstands vom aktuellen Knoten zum Ziel nimmt.<br />

Stand: 18. Oktober 2012 42 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.3 A ∗ -Algorithmus<br />

Z<br />

S<br />

Rechnet man das Beispiel durch, dann sieht man, dass <strong>der</strong> A ∗ -Algorithmus sowohl den oberen als<br />

auch den unteren Weg versucht.<br />

2.3.1 Eigenschaften des A ∗ -Algorithmus<br />

Im folgenden e<strong>in</strong>ige Bezeichnungen, <strong>die</strong> wir zur Klärung <strong>der</strong> Eigenschaften benötigen.<br />

g ∗ (N, N ′ ) = Kosten des optimalen Weges von N nach N ′<br />

g ∗ (N) = Kosten des optimalen Weges vom Start bis zu N<br />

c ∗ (N) = Kosten des optimalen Weges von N bis zum nächsten Zielknoten Z.<br />

f ∗ (N) = g ∗ (N) + c ∗ (N)<br />

(Kosten des optimalen Weges durch N bis zu e<strong>in</strong>em Zielknoten Z)<br />

Der A ∗ -Algorithmus hat gute Eigenschaften, wenn <strong>die</strong> Schätzfunktion h <strong>die</strong> Kosten unterschätzt.<br />

D.h., wenn für jeden Knoten N: h(N) ≤ c ∗ (N) gilt.<br />

Beispiel 2.3.3. Wir betrachten das folgende Beispiel, mit e<strong>in</strong>er überschätzenden Schätzfunktion:<br />

A/6<br />

1<br />

1<br />

S/7<br />

Z/0<br />

2<br />

B/3<br />

2<br />

Die Notation dabei ist N/h(N), d.h. <strong>in</strong> jedem Knoten ist <strong>die</strong> heuristische Bewertung angegeben.<br />

Führt man den A ∗ -Algorithmus für <strong>die</strong>ses Beispiel mit Startknoten S und Zielknoten Z aus, erhält<br />

man den Ablauf:<br />

Am Anfang:<br />

Open : {S}<br />

Closed : {∅}<br />

Nach Expansion von S:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 43 Stand: 18. Oktober 2012


2 Suchverfahren<br />

Open : {A, B} mit g(A) = 1 und g(B) = 2 Closed : {S}<br />

Nächster Schritt:<br />

Da f(A) = g(A) + h(a) = 1 + 6 = 7 und f(B) = g(B) + h(B) = 2 + 3 = 5, wird B als<br />

nächster Knoten expan<strong>die</strong>rt und man erhält:<br />

Open : {Z, B} mit g(Z) = 4<br />

Closed : {B, S}<br />

Nächster Schritt:<br />

Da f(B) = g(B) + h(B) = 2 + 3 = 5 und f(Z) = g(Z) + h(Z) = 4 + 0 = 0, wird <strong>der</strong><br />

Zielknoten Z expan<strong>die</strong>rt und <strong>der</strong> A ∗ -Algorithmus gibt den Weg S → A → Z mit Kosten 4 als<br />

optimalen Weg aus, obwohl e<strong>in</strong> kürzerer Weg existiert.<br />

Beispiel 2.3.4. Die Länge jedes Weges von A nach B <strong>in</strong> e<strong>in</strong>em Stadtplan ist stets länger als <strong>die</strong><br />

direkte Entfernung (Luftl<strong>in</strong>ie) √ (b 2 − a 2 ) 2 + (b 1 − a 1 ) 2 . Diese e<strong>in</strong>fach zu berechnende Schätzfunktion<br />

unterschätzt <strong>die</strong> echten Kosten.<br />

Wenn alle Straßen rechtw<strong>in</strong>klig aufe<strong>in</strong>an<strong>der</strong> zulaufen, und es ke<strong>in</strong>e Abkürzungen gibt, kann<br />

man auch <strong>die</strong> Rechtecknorm als Schätzung nehmen: |b 2 − a 2 | + |b 1 − a 1 |, denn <strong>die</strong> echten Wege<br />

können dann nicht kürzer als <strong>die</strong> Rechtecknorm se<strong>in</strong> (auch Manhattan-Abstand genannt).<br />

Def<strong>in</strong>ition 2.3.5. Voraussetzungen für den A ∗ -Algorithmus:<br />

1. es gibt nur endlich viele Knoten N mit g ∗ (N) + h(N) ≤ d, wobei<br />

d = <strong>in</strong>f {Kosten aller Wege von S zu e<strong>in</strong>em Zielknoten Z}.<br />

2. Für jeden Knoten N gilt: h(N) ≤ c ∗ (N), d.h. <strong>die</strong> Schätzfunktion ist unterschätzend.<br />

3. Für jeden Knoten N ist <strong>die</strong> Anzahl <strong>der</strong> Nachfolger endlich.<br />

4. Alle Kanten kosten etwas: c(N, N ′ ) > 0 für alle N, N ′ .<br />

5. Der Graph ist schlicht 3 .<br />

Die Voraussetzung (1) <strong>der</strong> Endlichkeit <strong>der</strong> Knoten und (4) s<strong>in</strong>d z.B. erfüllt, wenn es e<strong>in</strong>e<br />

untere Schranke δ > 0 für <strong>die</strong> Kosten e<strong>in</strong>er Kante gibt.<br />

Beispiel 2.3.6. Betrachte den folgenden Suchgraph, <strong>der</strong> Bed<strong>in</strong>gung 1 aus Def<strong>in</strong>ition 2.3.5 verletzt:<br />

1<br />

Z/0<br />

S/1<br />

1<br />

2<br />

A 1 / 1 2<br />

A 2 / 1 4<br />

A 3 / 1 8<br />

1<br />

4<br />

1<br />

8<br />

1<br />

16<br />

. . .<br />

3 schlicht = zwischen zwei Knoten gibt es höchstens e<strong>in</strong>e Kante<br />

Stand: 18. Oktober 2012 44 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.3 A ∗ -Algorithmus<br />

Dabei gehen wir davon aus, dass <strong>der</strong> Pfad A 1 → A 2 → A 3 → . . . entsprechend unendlich weiter<br />

verläuft, mit c(A i , A i+1 ) = 1<br />

2 i+1 und h(A i ) = 1 2 i . In <strong>die</strong>sem Fall gibt es nur den direkten Pfad<br />

S → Z als mögliche und optimale Lösung, <strong>in</strong>sbeson<strong>der</strong>e ist d = 1. Der A ∗ -Algorithmus startet<br />

mit S und fügt <strong>die</strong> Knoten A 1 und Z <strong>in</strong> <strong>die</strong> Open-Menge e<strong>in</strong>. Anschließend wird stets für i = 1, . . .<br />

A i expan<strong>die</strong>rt und A i+1 <strong>in</strong> <strong>die</strong> Open-Menge e<strong>in</strong>gefügt. Da Z nie expan<strong>die</strong>rt wird, term<strong>in</strong>iert <strong>der</strong><br />

A ∗ -Algorithmus nicht.<br />

Beispiel 2.3.7. Das folgende Beispiel ist ähnlich zum vorhergehenden, es verletzt ebenfalls Bed<strong>in</strong>gung<br />

1 aus Def<strong>in</strong>ition 2.3.5. Es zeigt jedoch, dass es zum Infimum d nicht notwendigerweise auch<br />

e<strong>in</strong>en endlichen Weg im Suchgraphen geben muss:<br />

1 1<br />

2 1<br />

4<br />

Z/0<br />

S/1<br />

1<br />

2<br />

A 1 / 1 2<br />

A 2 / 1 4<br />

A 3 / 1 8<br />

1<br />

4<br />

1<br />

8<br />

1<br />

16<br />

. . .<br />

Der Pfad A 1 → A 2 → A 3 → . . . laufe entsprechend unendlich weiter, wobei c(A i , Z) = 1<br />

2 i−1 ,<br />

c(A i , A i+1 ) = 1<br />

2 i+1 und h(A i ) = 1 2 i . In <strong>die</strong>sem Fall gibt es unendlich viele Wege von S nach Z,<br />

<strong>der</strong> Form S → A 1 → . . . A k → Z für k = 1, 2, . . .. Die Kosten <strong>der</strong> Pfade s<strong>in</strong>d 1 1 2 , 1 1 4 , 1 1 8 , . . ..<br />

Das Beispiel zeigt, daher das d = 1 als Infimum def<strong>in</strong>iert werden muss, und dass es ke<strong>in</strong>en Weg<br />

von S zu Z mit Kosten 1 gibt, man aber für jedes ɛ > 0 e<strong>in</strong>en Weg f<strong>in</strong>det, dessen Kosten kle<strong>in</strong>er<br />

1 + ɛ s<strong>in</strong>d. Der A ∗ -Algorithmus würde für obigen Graphen, nur <strong>die</strong> A i -Knoten expan<strong>die</strong>ren, aber<br />

nie den Zielknoten Z expan<strong>die</strong>ren.<br />

Wir zeigen nun zunächst, dass <strong>die</strong> Bed<strong>in</strong>gungen aus Def<strong>in</strong>ition 2.3.5 ausreichen, um zu<br />

folgern, dass zum es zum Infimum d auch stets e<strong>in</strong> endlicher Weg mit Kosten d existiert.<br />

Für e<strong>in</strong>en Knoten N sei <strong>in</strong>fWeg(N) := <strong>in</strong>f {Kosten aller Wege von N zu e<strong>in</strong>em<br />

Zielknoten}<br />

Satz 2.3.8. Es existiere e<strong>in</strong> Weg vom Start S bis zu e<strong>in</strong>em Zielknoten. Sei d = <strong>in</strong>fWeg(S) =<br />

<strong>in</strong>f {Kosten aller Wege von S zu e<strong>in</strong>em Zielknoten Z}. Die Voraussetzungen <strong>in</strong> Def<strong>in</strong>ition 2.3.5<br />

seien erfüllt.<br />

Dann existiert e<strong>in</strong> optimaler Weg von S zum Ziel mit Kosten d.<br />

Beweis. Wir zeigen mit Induktion, dass wir für jedes n ≥ 1 e<strong>in</strong>en <strong>der</strong> folgenden beiden<br />

Wege konstruieren können:<br />

1. S = K 1 → . . . → K i mit i ≤ n, c W (K 1 , . . . , K i ) = d und K i ist e<strong>in</strong> Zielknoten<br />

2. S = K 1 → . . . → K n , wobei c W (K 1 , . . . K j ) + <strong>in</strong>fWeg(K j ) = d für alle j ∈ {1, . . . , n}<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 45 Stand: 1. November 2012


2 Suchverfahren<br />

Basisfall n = 1. Dann erfüllt <strong>der</strong> „Weg“ S <strong>die</strong> Voraussetzung, da <strong>in</strong>fWeg(S) = d angenommen<br />

wurde. Für den Induktionsschritt, sei <strong>die</strong> Bed<strong>in</strong>gung für n − 1 erfüllt. Wir betrachten<br />

zwei Fälle:<br />

• Die Induktionsannahme erfüllt Bed<strong>in</strong>gung 1, d.h. es gibt e<strong>in</strong>en Weg K 1 → . . . K i<br />

(für e<strong>in</strong> i ≤ n − 1) mit c W (K 1 , . . . , K i ) = d und K i ist Zielknoten. Dann erfüllt <strong>der</strong><br />

gleiche Weg Bed<strong>in</strong>gung 1 für n.<br />

• Die Induktionsannahme erfüllt Bed<strong>in</strong>gung 2. Sei K 1 → . . . → K n−1 <strong>der</strong> entsprechende<br />

Weg. Insbeson<strong>der</strong>e gilt c W (K 1 , . . . , K n−1 ) + <strong>in</strong>fWeg(K n−1 ) = d.<br />

Wenn K n−1 e<strong>in</strong> Zielknoten ist, ist Bed<strong>in</strong>gung 1 erfüllt und wir s<strong>in</strong>d fertig.<br />

An<strong>der</strong>enfalls betrachte alle Nachfolger N 1 , . . . , N m von K j . Da es nur endliche<br />

viele Nachfolger gibt, gibt es m<strong>in</strong>destens e<strong>in</strong>en Nachfolger N h , so dass<br />

c W (K 1 , . . . , K n−1 ) + c(K j , N h ) + <strong>in</strong>fWeg(N h ) = d. Mit K n := N h erfült <strong>der</strong> Weg<br />

K 1 → . . . → K n Bed<strong>in</strong>gung 2.<br />

Zum Beweis <strong>der</strong> eigentlichen Aussage, müssen wir jetzt nur noch zeigen, dass es e<strong>in</strong> n gibt,<br />

dass Bed<strong>in</strong>gung 1 erfüllt, d.h. es gibt ke<strong>in</strong>en unendlichen langen Weg <strong>der</strong> Bed<strong>in</strong>gung 2<br />

erfüllt.<br />

Betrachte <strong>die</strong> konstruierte Folge K 1 → K 2 → . . . gem. Bed<strong>in</strong>gung 2. E<strong>in</strong> Knoten kann<br />

nicht mehrfach <strong>in</strong> <strong>der</strong> Folge K 0 , K 1 , . . . vorkommen, da man sonst das Infimum d echt<br />

verkle<strong>in</strong>ern könnte (den Zyklus immer wie<strong>der</strong> gehen). Weiterh<strong>in</strong> muss für jeden Knoten<br />

K j gelten, dass h(K j ) ≤ <strong>in</strong>fWeg(K j ) ist, da h unterschätzend ist und <strong>in</strong>fWeg(K j ) das<br />

entsprechende Infimum <strong>der</strong> existierenden Wege zum Ziel ist. Gäbe es unendlich viele<br />

Knoten K j , dann wäre daher Bed<strong>in</strong>gung 1 aus Def<strong>in</strong>ition 2.3.5 verletzt. Somit folgt, dass<br />

es ke<strong>in</strong>e unendliche Folge gibt und man daher stets e<strong>in</strong>en endlichen optimalen Weg f<strong>in</strong>det.<br />

Lemma 2.3.9. Es existiere e<strong>in</strong> optimaler Weg S = K 0 → . . . → K n = Z vom Startknoten S bis<br />

zu e<strong>in</strong>em Zielknoten Z . Die Voraussetzungen <strong>in</strong> Def<strong>in</strong>ition 2.3.5 seien erfüllt. Dann ist während<br />

<strong>der</strong> Ausführung des A ∗ -Algorithmus stets e<strong>in</strong> Knoten K i <strong>in</strong> Open, markiert mit g(K i ) = g ∗ (K i ),<br />

d.h. mit e<strong>in</strong>em optimalen Weg von S zu K i .<br />

Beweis. Induktion über <strong>die</strong> Iterationen des A ∗ -Algorithmus. Für den Basisfall, genügt es<br />

zu beachten, dass S ∈ Open und g(S) = 0 gilt, und im Anschluss K 1 <strong>in</strong> Open e<strong>in</strong>gefügt<br />

wird. Da S → K 1 und K 1 auf e<strong>in</strong>em optimalen Weg liegt, muss K 1 mit g(K 1 ) = c(S, K 1 ) =<br />

g ∗ (S, K 1 ) markiert werden (sonst gäbe es e<strong>in</strong>en kürzeren Weg von S zu Z).<br />

Induktionsschritt: Als Induktionshypothese verwenden wir, dass Open m<strong>in</strong>destens<br />

e<strong>in</strong>en <strong>der</strong> Knoten K i enthält, <strong>der</strong> mit g(K i ) = g ∗ (K i ) markiert ist. Sei j maximal, so dass<br />

K j <strong>die</strong>se Bed<strong>in</strong>gungen erfüllt. Wir betrachten unterschiedliche Fälle:<br />

• E<strong>in</strong> Knoten ≠ K j wird expan<strong>die</strong>rt. Dann verbleibt K j <strong>in</strong> Open und <strong>der</strong> Wert g(K j )<br />

wird nicht verän<strong>der</strong>t, da er bereits optimal ist.<br />

Stand: 1. November 2012 46 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.3 A ∗ -Algorithmus<br />

• Der Knoten K j wird expan<strong>die</strong>rt. Dann wird K j+1 <strong>in</strong> Open e<strong>in</strong>gefügt und erhält den<br />

Wert g(K j+1 ) = g(K j ) + c(K j , K j+1 ) = g ∗ (K j ) + c(K j , K j+1 ) Dieser Wert muss<br />

optimal se<strong>in</strong>, da ansonsten <strong>der</strong> Weg S → K 1 → . . . → K n nicht optimal wäre.<br />

Lemma 2.3.10. Unter <strong>der</strong> Annahme, dass <strong>die</strong> Bed<strong>in</strong>gungen aus 2.3.5 erfüllt s<strong>in</strong>d, gilt: Wenn A∗<br />

e<strong>in</strong>en Zielknoten expan<strong>die</strong>rt, dann ist <strong>die</strong>ser optimal.<br />

Beweis. Nehme an S = K 0 → K 1 . . . K n = Z ist e<strong>in</strong> optimaler Weg. Angenommen,<br />

e<strong>in</strong> Zielknoten Z ′ wird expan<strong>die</strong>rt. Dann ist Z ′ <strong>der</strong> Knoten aus Open mit dem m<strong>in</strong>imalen<br />

f(Z ′ ) = g(Z ′ ) + h(Z ′ ) = g(Z ′ ). Betrachte den Knoten K j mit maximalem j aus<br />

dem optimalen Weg, <strong>der</strong> noch <strong>in</strong> Open ist und mit g(K j ) = g ∗ (K j ) markiert ist (gem.<br />

Lemma 2.3.9). Wenn Z = Z ′ und genau auf dem Weg erreicht wurde, dann ist genau<br />

<strong>der</strong> optimale Weg S → K 1 → . . . → Z gefunden worden. Wenn K j ≠ Z ′ , dann gilt<br />

f(K j ) = g(K j ) + h(K j ) ≤ d da h <strong>die</strong> Kosten bis zum Ziel unterschätzt. Da Z ′ expan<strong>die</strong>rt<br />

wurde, gilt f(Z ′ ) = g(Z ′ ) + h(Z ′ ) = g(Z ′ ) ≤ g(K j ) + h(K j ) ≤ d, und daher ist <strong>der</strong><br />

gefundene Weg optimal.<br />

Lemma 2.3.11. Unter <strong>der</strong> Annahme, dass <strong>die</strong> Bed<strong>in</strong>gungen aus 2.3.5 erfüllt s<strong>in</strong>d, und e<strong>in</strong> Weg<br />

vom Start zum Zielknoten existiert gilt: Der A ∗ -Algorithmus expan<strong>die</strong>rt e<strong>in</strong>en Zielknoten nach<br />

endlich vielen Schritten.<br />

Beweis. Seien d <strong>die</strong> Kosten des optimalen Wegs S = K 0 → K 1 . . . → K n = Z. Aufgrund<br />

von Lemma 2.3.9 genügt es zu zeigen, dass je<strong>der</strong> <strong>der</strong> Knoten K i nach endlich vielen Schritten<br />

expan<strong>die</strong>rt wird, o<strong>der</strong> e<strong>in</strong> an<strong>der</strong>er Zielknoten wird expan<strong>die</strong>rt. Da stets e<strong>in</strong> K i <strong>in</strong> Open<br />

mit Wert g(K i ) = g ∗ (K i ) markiert ist und g ∗ (K i ) + h(K i ) ≤ d gelten muss (<strong>die</strong> Heuristik<br />

ist unterschätzend), werden nur Knoten L expan<strong>die</strong>rt für <strong>die</strong> zum Zeitpunkt ihrer Expansion<br />

gilt: g(L) + h(L) ≤ g ∗ (K i ) + h(K i ) ≤ d. Da g ∗ (L) + h(L) ≥ g(L) + h(L), gilt auch<br />

g ∗ (L) + h(L) ≤ d für all <strong>die</strong>se Knoten L. Gemäß Bed<strong>in</strong>gung 1 aus Def<strong>in</strong>ition2.3.5 kann es<br />

daher nur endlich viele solcher Knoten L geben, <strong>die</strong> vor K i expan<strong>die</strong>rt werden.<br />

Aus den Lemmas 2.3.10 und 2.3.11 und Satz 2.3.8 folgt direkt:<br />

Theorem 2.3.12. Es existiere e<strong>in</strong> Weg vom Start bis zu e<strong>in</strong>em Zielknoten. Die Voraussetzungen<br />

<strong>in</strong> Def<strong>in</strong>ition 2.3.5 seien erfüllt. Dann f<strong>in</strong>det <strong>der</strong> A ∗ -Algorithmus e<strong>in</strong>en optimalen Weg zu e<strong>in</strong>em<br />

Zielknoten.<br />

Beachte, dass <strong>der</strong> A ∗ -Algorithmus auch e<strong>in</strong>en an<strong>der</strong>en optimalen Weg f<strong>in</strong>den kann, <strong>der</strong><br />

von K 1 , . . . , K n verschieden ist.<br />

Beispiel 2.3.13. Für das Stadtplan-Beispiel können wir folgern, dass <strong>der</strong> A ∗ -Algorithmus im Falle<br />

des Abstandsmaßes h(.), das <strong>die</strong> Luftl<strong>in</strong>ienentfernung zum Ziel misst, e<strong>in</strong>en optimalen Weg f<strong>in</strong>den<br />

wird. Hat <strong>der</strong> Stadtplan nur Straßen <strong>in</strong> zwei zue<strong>in</strong>an<strong>der</strong> senkrechten Richtungen, dann kann man<br />

auch <strong>die</strong> Rechtecknorm nehmen.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 47 Stand: 1. November 2012


2 Suchverfahren<br />

Der Aufwand des A ∗ -Algorithmus ist i.a. exponentiell <strong>in</strong> <strong>der</strong> Länge des optimalen<br />

Weges (unter <strong>der</strong> Annahme e<strong>in</strong>er konstanten Verzweigungsrate).<br />

Bemerkung 2.3.14. Wenn man den endlichen Graphen als gegeben annimmt, mit Bewertungen<br />

<strong>der</strong> Kanten, dann kann man mit dynamischem Programmieren <strong>in</strong> polynomieller Zeit (<strong>in</strong> <strong>der</strong> Größe<br />

des Graphen) alle kostenoptimalen Wege berechnen, <strong>in</strong>dem man analog zur Berechnung <strong>der</strong> transitiven<br />

Hülle e<strong>in</strong>e Matrix von Zwischenergebnissen iteriert (Floyd-Algorithmus für kürzeste Wege,<br />

Dijkstra-Algorithmus).<br />

Der Dijkstra-Algorithmus entspricht dem A ∗ -Algorithmus, wenn man <strong>die</strong> Schätzfunktion<br />

h(N) = 0 setzt für alle Knoten N. Dieser hat als Aufgabe, e<strong>in</strong>en Weg mit m<strong>in</strong>imalen Kosten<br />

zwischen zwei Knoten e<strong>in</strong>es gegebenen endlichen Graphen zu f<strong>in</strong>den.<br />

In <strong>die</strong>sem Fall hat man stets e<strong>in</strong>e Front (Open) <strong>der</strong> Knoten mit m<strong>in</strong>imalen Wegen ab dem Startknoten.<br />

2.3.2 Spezialisierungen des A ∗ -Algorithmus:<br />

Beispiel 2.3.15. Weitere Beispiele für Graphen und Kostenfunktionen s<strong>in</strong>d:<br />

Wenn h(N) = 0, dann ist <strong>der</strong> A ∗ -Algorithmus dasselbe wie <strong>die</strong> sogenannte Gleiche-Kostensuche<br />

(branch-and-bound)<br />

Wenn c(N 1 , N 2 ) = k (k Konstante, z.B. 1), und h(N) = 0, dann entspricht <strong>der</strong> A ∗ -<br />

Algorithmus <strong>der</strong> Breitensuche.<br />

Die Variante A ∗o des A ∗ -Algorithmus, <strong>die</strong> alle optimalen Weg f<strong>in</strong>den soll, hat folgende<br />

Ergänzung im Algorithmus: sobald e<strong>in</strong> Weg zum Ziel gefunden wurde, mit e<strong>in</strong>em Wert<br />

d, werden nur noch Knoten <strong>in</strong> Open akzeptiert (d.h. <strong>die</strong> an<strong>der</strong>en kommen nach Closed),<br />

bei denen g(N) + h(N) ≤ d. Der Algorithmus stoppt erst, wenn ke<strong>in</strong>e Knoten mehr <strong>in</strong><br />

Open s<strong>in</strong>d.<br />

Theorem 2.3.16. Es gelten <strong>die</strong> Voraussetzung von Satz 2.3.12. Dann f<strong>in</strong>det <strong>der</strong> Algorithmus A ∗o<br />

alle optimalen Wege von S nach Z.<br />

Beweis. Zunächst f<strong>in</strong>det <strong>der</strong> A ∗ -Algorithmus e<strong>in</strong>en optimalen Weg zu e<strong>in</strong>em Ziel. Daraus<br />

ergibt sich e<strong>in</strong>e obere Schranke d für <strong>die</strong> Kosten e<strong>in</strong>es optimalen Weges. Aus den Voraussetzungen<br />

ergibt sich, dass <strong>der</strong> A ∗o -Algorithmus nur endlich viele Knoten und Wege<br />

<strong>in</strong>spiziert.<br />

Def<strong>in</strong>ition 2.3.17. Wenn man zwei Schätzfunktionen h 1 und h 2 hat mit:<br />

1. h 1 und h 2 unterschätzen den Aufwand zum Ziel<br />

2. für alle Knoten N gilt: h 1 (N) ≤ h 2 (N) ≤ c ∗ (N)<br />

Stand: 1. November 2012 48 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.3 A ∗ -Algorithmus<br />

dann nennt man h 2 besser <strong>in</strong>formiert als h 1 .<br />

Hieraus alle<strong>in</strong>e kann man noch nicht folgern, dass <strong>der</strong> A ∗ -Algorithmus zu h 2 sich besser<br />

verhält als zu h 1 . (Übungsaufgabe)<br />

Notwendig ist: Die Abweichung bei Sortierung <strong>der</strong> Knoten mittels f muss kle<strong>in</strong> se<strong>in</strong>.<br />

D.h. optimal wäre f(k) ≤ f(k ′ ) ⇔ f ∗ (k) ≤ f ∗ (k ′ ).<br />

Der wichtigere Begriff ist:<br />

Def<strong>in</strong>ition 2.3.18. E<strong>in</strong>e Schätzfunktion h(.) ist monoton, gdw.<br />

h(N) ≤ c(N, N ′ ) + h(N ′ ) für alle Knoten N und <strong>der</strong>en Nachfolger N ′ und wenn h(Z) = 0 ist<br />

für Zielknoten Z.<br />

Offenbar gilt <strong>die</strong> Monotonie-Ungleichung auch für <strong>die</strong> optimale Weglänge von N nach<br />

N ′ , wenn N ′ ke<strong>in</strong> direkter Nachfolger von N ist. Dies kann man so sehen:<br />

h(N) ≤ g W (N, N 1 ) + h(N 1 ) ≤ g W (N, N 1 ) + g W (N 1 , N 2 ) + h(N 2 )<br />

Iteriert man das, erhält man: h(N) ≤ g W (N, N ′ ) + h(N ′ )<br />

Und damit auch h(N) ≤ g ∗ (N, N ′ ) + h(N ′ )<br />

Für den Weg zum Ziel Z gilt damit h(N) ≤ g ∗ (N, Z) + h(Z) = g ∗ (N, Z) , da h(Z) = 0 ist.<br />

Lemma 2.3.19. E<strong>in</strong>e monotone Schätzfunktion h(.) ist unterschätzend.<br />

Die Monotonie <strong>der</strong> Schätzfunktion entspricht <strong>der</strong> Dreiecksungleichung <strong>in</strong> Geometrien<br />

und metrischen Räumen.<br />

Die Monotonieeigenschaft beschreibt das Verhalten <strong>der</strong> Funktion f beim Expan<strong>die</strong>ren:<br />

Wenn <strong>die</strong> Schätzfunktion monoton ist, dann wächst <strong>der</strong> Wert von f monoton, wenn man<br />

e<strong>in</strong>en Weg weiter expan<strong>die</strong>rt.<br />

Satz 2.3.20. Ist <strong>die</strong> Schätzfunktion h monoton, so expan<strong>die</strong>rt <strong>der</strong> A ∗ -Algorithmus jeden untersuchten<br />

Knoten beim ersten mal bereits mit dem optimalen Wert. D.h. g(N) = g ∗ (N) für alle<br />

expan<strong>die</strong>rten Knoten.<br />

Beweis. Sei S = K 1 → . . . → K n e<strong>in</strong> optimaler Weg von S nach K n . Wir nehmen an <strong>die</strong><br />

Aussage sei falsch und es gelte g(K n ) > g ∗ (K n ) und K n wird expan<strong>die</strong>rt. Aus Lemma 2.3.9<br />

folgt: Es gibt e<strong>in</strong>en Knoten K i ≠ K n und (i < n), <strong>der</strong> <strong>in</strong> Open ist und für den gilt g(K i ) =<br />

g ∗ (K i ).<br />

f(K i ) = g ∗ (K i ) + h(K i )<br />

≤ g ∗ (K i ) + g ∗ (K i , K N ) + h(K N ) folgt aus Monotonie<br />

= g ∗ (K N ) + h(K N )<br />

< g(K N ) + h(K N ) = f(K N ).<br />

Da f(K i ) < f(K N ) müsste aber K i anstelle von K n expan<strong>die</strong>rt werden. D.h. wir haben<br />

e<strong>in</strong>en Wi<strong>der</strong>spruch gefunden.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 49 Stand: 1. November 2012


2 Suchverfahren<br />

Diese Aussage erlaubt es bei monotonen Schätzfunktionen, den A ∗ -Algorithmus zu vere<strong>in</strong>fachen:<br />

man braucht ke<strong>in</strong> Update <strong>der</strong> optimalen Weglänge <strong>in</strong> Closed durchzuführen.<br />

D.h. <strong>die</strong> Baumsuchvariante des A ∗ -Algorithmus reicht aus.<br />

Beispiel 2.3.21. Die Aussage bedeutet nicht, dass nicht schon Knoten des optimalen Weges vorher<br />

<strong>in</strong> Open s<strong>in</strong>d. Diese könnten auf e<strong>in</strong>em nichtoptimalen Weg erreicht werden, werden dann aber<br />

nicht expan<strong>die</strong>rt.<br />

A h(A) = 4<br />

1<br />

h(S) = 5 5<br />

4<br />

S<br />

1<br />

h(B) = 5<br />

B<br />

N<br />

1<br />

Z<br />

Theorem 2.3.22. Ist <strong>die</strong> Schätzfunktion h monoton, so f<strong>in</strong>det <strong>der</strong> A ∗ -Algorithmus auch <strong>in</strong> <strong>der</strong><br />

Baum-Variante (ohne update) den optimalen Weg zum Ziel.<br />

Bemerkung 2.3.23. Der Dijkstra-Algorithmus zum F<strong>in</strong>den optimaler Wege <strong>in</strong> e<strong>in</strong>em Graphen<br />

entspricht (wenn man von <strong>der</strong> Speicherung des optimalen Weges absieht) folgen<strong>der</strong> Variante:<br />

Man wählt h() = 0 und nimmt den A ∗ -Algorithmus.<br />

Dann ist h() monoton und es gelten <strong>die</strong> Aussagen für monotone Schätzfunktionen.<br />

Es gelten folgende weitere Tatsachen für monotone Schätzfunktionen:<br />

Satz 2.3.24. Unter den Voraussetzungen von Aussage 2.3.20 (d.h. Monotonie von h) gilt:<br />

1. Wenn N später als M expan<strong>die</strong>rt wurde, dann gilt f(N) ≥ f(M).<br />

2. Wenn N expan<strong>die</strong>rt wurde, dann gilt g ∗ (N) + h(N) ≤ d wobei d <strong>der</strong> optimale Wert ist.<br />

3. Je<strong>der</strong> Knoten mit g ∗ (N) + h(N) ≤ d wird von A ∗o expan<strong>die</strong>rt.<br />

Theorem 2.3.25. Wenn e<strong>in</strong>e monotone Schätzfunktion gegeben ist, <strong>die</strong> Schätzfunktion <strong>in</strong> konstanter<br />

Zeit berechnet werden kann, dann läuft <strong>der</strong> A ∗ -Algorithmus <strong>in</strong> Zeit O(|D|), wenn<br />

D = {N | g ∗ (N) + h(N) ≤ d}.<br />

Nimmt man <strong>die</strong> Verzweigungsrate c als konstant an, d als Wert des optimalen Weges und δ als <strong>der</strong><br />

kle<strong>in</strong>ste Abstand zweier Knoten, dann ist <strong>die</strong> Komplexität O(c d δ ).<br />

In e<strong>in</strong>em rechtw<strong>in</strong>kligen Stadtplan, <strong>in</strong> dem <strong>die</strong> Abstände zwischen zwei Kreuzungen<br />

alle gleich s<strong>in</strong>d, gilt, dass <strong>der</strong> A ∗ -Algorithmus <strong>in</strong> quadratischer Zeit abhängig von <strong>der</strong><br />

Weglänge des optimalen Weges e<strong>in</strong>en Weg f<strong>in</strong>det. Das liegt daran, dass es nur quadratisch<br />

viele Knoten <strong>in</strong> allen Richtungen gibt. Im allgeme<strong>in</strong>en kann <strong>die</strong> Suche exponentiell dauern<br />

(z.B. mehrdimensionale Räume)<br />

Stand: 1. November 2012 50 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.3 A ∗ -Algorithmus<br />

Beispiel 2.3.26. Die Suche e<strong>in</strong>es kürzesten Weges im Stadtplan mit dem Luftl<strong>in</strong>ienabstand als<br />

Schätzfunktion ist monoton: Mit ll() bezeichnen wir den Luftl<strong>in</strong>ienabstand. Es gilt wegen <strong>der</strong><br />

Dreiecksungleichung: ll(N, Z) < ll(N, N ′ ) + ll(N ′ , Z). Da <strong>der</strong> echte Abstand stets größer als<br />

Luftl<strong>in</strong>ie ist, gilt: ll(N, N ′ ) ≤ g(N, N ′ ), und mit <strong>der</strong> Bezeichnung h(·) := ll(·) gilt h(N) ≤<br />

g(N, N ′ ) + h(N ′ ).<br />

Dasselbe gilt für das Beispiel des gitterförmigen Stadtplans, bei dem man <strong>die</strong> Rechtecknorm<br />

nimmt, da auch <strong>die</strong>se <strong>die</strong> Dreiecksungleichung erfüllt.<br />

Man sieht auch, dass <strong>in</strong> e<strong>in</strong>em quadratischen Stadtplan <strong>die</strong> Rechtecknorm besser <strong>in</strong>formiert ist<br />

als <strong>die</strong> Luftl<strong>in</strong>ienentfernung.<br />

Satz 2.3.27. es gelten <strong>die</strong> Voraussetzungen <strong>in</strong> Satz 2.3.12. Seien d <strong>die</strong> Kosten des optimalen Weges.<br />

Seien h 1 , h 2 zwei monotone Schätzfunktionen, so dass h 2 besser <strong>in</strong>formiert sei als h 1 .<br />

Sei A 1 <strong>der</strong> A ∗o -Algorithmus zu h 1 und A 2 sei <strong>der</strong> A ∗o -Algorithmus zu h 2 .<br />

Dann gilt: Alle Knoten N mit g ∗ (N) + h 2 (N) ≤ d <strong>die</strong> von A 2 expan<strong>die</strong>rt werden, werden auch<br />

von A 1 expan<strong>die</strong>rt.<br />

Beweis. Der A ∗o -Algorithmus stoppt erst, wenn er ke<strong>in</strong>e Knoten mehr f<strong>in</strong>det, <strong>die</strong> unter<br />

<strong>der</strong> Grenze s<strong>in</strong>d. E<strong>in</strong> Knoten N wird von A 1 expan<strong>die</strong>rt, wenn es e<strong>in</strong>en Weg von S nach<br />

N gibt, so dass für alle Knoten M auf dem Weg <strong>die</strong> Ungleichung g ∗ (M) + h 2 (M) ≤ d gilt.<br />

Da wegen h 1 (M) ≤ h 2 (M) dann g ∗ (M) + h 1 (M) ≤ d gilt, wird <strong>der</strong> Knoten auch von A 1<br />

expan<strong>die</strong>rt<br />

Was macht man, wenn <strong>die</strong> Schätzfunktion nicht monoton ist? Im Fall e<strong>in</strong>er unterschätzenden<br />

Funktion h gibt es e<strong>in</strong>e Methode <strong>der</strong> Korrektur während des Ablaufs des Algorithmus.<br />

Angenommen, N hat Nachfolger N ′ und es gilt h(N) > g(N, N ′ ) + h(N ′ ). Nach Voraussetzung<br />

ist <strong>der</strong> optimale Wert e<strong>in</strong>es Weges von N zum Zielknoten größer als h(N). Wenn<br />

es e<strong>in</strong>en Weg von N ′ zu e<strong>in</strong>em Ziel gäbe <strong>der</strong> besser als h(N) − g(N, N ′ ) ist, dann hätte<br />

man e<strong>in</strong>en Wi<strong>der</strong>spruch zur Unterschätzung. Damit kann man h ′ (N ′ ) := h(N)−g(N, N ′ )<br />

def<strong>in</strong>ieren. Danach gilt h(N) = g(N, N ′ ) + h ′ (N ′ ).<br />

Beispiel 2.3.28.<br />

h(A) = 7<br />

A<br />

1<br />

4<br />

S<br />

1<br />

2<br />

B<br />

h(B) = 8<br />

1<br />

5<br />

C D<br />

h(C) =3 h(D)=4<br />

In <strong>die</strong>sem Beispiel sieht man, dass es vorkommen kann, dass e<strong>in</strong> Knoten im normalen A ∗ -<br />

Algorithmus von Open nach Closed geschoben wird, aber danach nochmal nach Open bewegt wird,<br />

Z<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 51 Stand: 1. November 2012


2 Suchverfahren<br />

da man doch e<strong>in</strong>en besseren Weg gefunden hat. Die Expansionsreihenfolge ist:<br />

expan<strong>die</strong>rt Nachfolger Open Closed<br />

S A,B S<br />

A C A,B S<br />

C D B,C S,A<br />

B C B,D S,A,C<br />

C D C,D S,A,B<br />

...<br />

Dies tritt beim Knoten C auf.<br />

Diese Schätzfunktion kann nicht monoton se<strong>in</strong>. Es gilt 8 = h(B) > g(B, C) + h(C) = 5.<br />

Was <strong>die</strong>ses Beispiel auch noch zeigt, ist dass <strong>der</strong> Reparaturmechanismus, <strong>der</strong> dynamisch h zu<br />

e<strong>in</strong>er monotonen Schätzfunktion verbessert, das Verhalten des Algorithmus nicht so verbessert,<br />

dass Aussage 2.3.20 gilt, denn <strong>die</strong> Aussage gilt nicht für <strong>die</strong>ses Beispiel unter <strong>der</strong> Annahme <strong>der</strong><br />

nachträglichen Korrektur von h.<br />

2.3.3 IDA ∗ -Algorithmus und SMA ∗ -Algorithmus<br />

Da <strong>der</strong> A ∗ -Algorithmus sich alle jemals besuchten Knoten merkt, wird er oft an <strong>die</strong> Speichergrenze<br />

stoßen und aufgeben. Um das zu umgehen, nimmt man e<strong>in</strong>e Komb<strong>in</strong>ation<br />

des abgeschwächten A ∗ -Algorithmus und des iterativen Vertiefens. Die Rolle <strong>der</strong> Grenze<br />

spielt <strong>in</strong> <strong>die</strong>sem Fall <strong>der</strong> maximale Wert d e<strong>in</strong>es Weges, <strong>der</strong> schon erzeugt wurde.<br />

IDA ∗ mit Grenze d:<br />

• Ist analog zu A ∗ .<br />

• es gibt ke<strong>in</strong>e Open/Closed-Listen, nur e<strong>in</strong>en Stack mit Knoten und Wegekosten.<br />

• <strong>der</strong> Wert g(N) wird bei gerichteten Graphen nicht per Update verbessert.<br />

• Der Knoten N wird nicht expan<strong>die</strong>rt, wenn f(N) > d.<br />

• das M<strong>in</strong>imum <strong>der</strong> Werte f(N) mit f(N) > d wird das d <strong>in</strong> <strong>der</strong> nächsten Iteration.<br />

Dieser Algorithmus benötigt nur l<strong>in</strong>earen Platz <strong>in</strong> <strong>der</strong> Länge des optimalen Weges, da<br />

er nur e<strong>in</strong>en Stack (Rekursions-Stack des aktuellen Weges) verwalten muss.<br />

Da <strong>die</strong>ser Algorithmus <strong>in</strong> e<strong>in</strong>em gerichteten Graphen möglicherweise e<strong>in</strong>e exponentielle<br />

Anzahl von Wegen absuchen muss, obwohl das beim A ∗ -Algorithmus durch Update<br />

zu vermeiden ist, gibt es e<strong>in</strong>e pragmatische Variante, den SMA ∗ -Algorithmus, <strong>der</strong> wie <strong>der</strong><br />

A ∗ -Algorithmus arbeitet, aber im Fall, dass <strong>der</strong> Speicher nicht reicht, bereits gespeicherte<br />

Knoten löscht. Der Algorithmus nutzt hierzu <strong>die</strong> verfügbare Information und löscht<br />

<strong>die</strong> Knoten, <strong>der</strong> am ehesten nicht zu e<strong>in</strong>em optimalen Weg beiträgt. Das s<strong>in</strong>d Knoten, <strong>die</strong><br />

hohe f-Werte haben. Es gibt weitere Optimierungen hierzu (siehe Russel-Norvig).<br />

Stand: 19. Oktober 2012 52 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.4 Suche <strong>in</strong> Spielbäumen<br />

2.4 Suche <strong>in</strong> Spielbäumen<br />

Ziel <strong>die</strong>ses Kapitels ist <strong>die</strong> Untersuchung von algorithmischen <strong>Methoden</strong> zum <strong>in</strong>telligenten<br />

Beherrschen von strategischen Zweipersonenspielen, wie z.B. Schach, Dame, Mühle, Go,<br />

Tictactoe, bei dem <strong>der</strong> Zufall ke<strong>in</strong>e Rolle spielt (siehe auch 2 Artikel aus (Wegener, 1996)).<br />

Spiele mit mehr als zwei Personen s<strong>in</strong>d auch <strong>in</strong>teressant, aber erfor<strong>der</strong>n an<strong>der</strong>e <strong>Methoden</strong><br />

und werden hier nicht behandelt.<br />

Zum Schachspiel existierten bereits vor Benutzung von Computern Schachtheorien,<br />

Untersuchungen zu Gew<strong>in</strong>nstrategien <strong>in</strong> bestimmten Spielsituationen (Eröffnungen, Endspiel,<br />

usw) und zum Bewerten von Spielsituationen. Mittlerweile gibt es zahlreiche Varianten<br />

von recht passabel spielenden Schachprogrammen, und auch e<strong>in</strong>ige sehr spielstarke<br />

Programme.<br />

Es gibt zwei verschiedene Ansätze, e<strong>in</strong> Programm zum Schachspielen zu konzipieren:<br />

1. Man baut auf den bekannten Schachtheorien und Begriffen auf, wie Verteidigung,<br />

Angriff, Bedrohung, Decken, Mittelfeld, ..., und versucht <strong>die</strong> menschliche Methode<br />

zu programmieren.<br />

2. Man versucht mit re<strong>in</strong>er Absuche aller Möglichkeiten unter Ausnutzung <strong>der</strong> Geschw<strong>in</strong>digkeit<br />

e<strong>in</strong>es Computers, e<strong>in</strong>en guten nächsten Zug zu f<strong>in</strong>den.<br />

Betrachtet man heutige, erfolgreiche Schachprogramme, dann ist <strong>die</strong> wesentliche Methode<br />

das Absuchen <strong>der</strong> Varianten, wobei auf e<strong>in</strong>er (e<strong>in</strong>fachen) statischen Bewertung von<br />

Spielsituationen aufgebaut wird. Ergänzend dazu wird e<strong>in</strong>e Eröffnungsbibliothek verwendet<br />

und Endspielvarianten werden getrennt programmiert. Die Programmierung <strong>der</strong><br />

meisten Schachtheorien scheitert daran, dass sie nicht auf Computer übertragbar s<strong>in</strong>d, da<br />

<strong>die</strong> Begriffe unscharf def<strong>in</strong>iert s<strong>in</strong>d.<br />

Wir betrachten zunächst sogenannte Spielbäume, <strong>die</strong> e<strong>in</strong> Zweipersonenspiel repräsentieren:<br />

Def<strong>in</strong>ition 2.4.1 (Spielbaum). Es gibt zwei Spieler, <strong>die</strong> gegene<strong>in</strong>an<strong>der</strong> spielen. Diese werden aus<br />

bald ersichtlichen Gründen Maximierer und M<strong>in</strong>imierer genannt. Wir nehmen an, es gibt e<strong>in</strong>e<br />

Darstellung e<strong>in</strong>er Spielsituation (z.B. Schachbrett mit Aufstellung <strong>der</strong> Figuren), und <strong>die</strong> Angabe<br />

welcher <strong>der</strong> beiden Spieler am Zug ist. Der Spielbaum dazu ist wiefolgt def<strong>in</strong>iert:<br />

• Die Wurzel ist mit <strong>der</strong> aktuellen Spielsituation markiert.<br />

• Für jeden Knoten s<strong>in</strong>d dess K<strong>in</strong><strong>der</strong> genau <strong>die</strong> Spielsituationen <strong>die</strong> durch den nächsten Zug<br />

des aktuellen Spielers möglich s<strong>in</strong>d. Pro Ebene wechselt <strong>der</strong> Spieler<br />

• Blätter s<strong>in</strong>d Knoten, <strong>die</strong> ke<strong>in</strong>e Nachfolger mehr haben, d.h. Endsituation des Spiels<br />

• Blätter werden mit e<strong>in</strong>em Gew<strong>in</strong>nwert bewertet. Normalerweise ist <strong>die</strong> e<strong>in</strong>e ganze Zahl.<br />

Bei Schach z.B.: 1, wenn <strong>der</strong> Maximierer gewonnen hat, -1, wenn <strong>der</strong> M<strong>in</strong>imierer gewonnen<br />

hat, 0 bei Remis. Bei an<strong>der</strong>en Spielen kann <strong>die</strong>s auch e<strong>in</strong>e Punktzahl o.ä. se<strong>in</strong>.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 53 Stand: 19. Oktober 2012


2 Suchverfahren<br />

Als Beispiel betrachten wir TicTacToe: In <strong>die</strong>sem Spiel wird e<strong>in</strong>e Anfangs leere (3x3)-<br />

Matrix abwechselnd durch <strong>die</strong> beiden Spieler mit X und O gefüllt. E<strong>in</strong> Spieler gew<strong>in</strong>nt,<br />

wenn er drei se<strong>in</strong>er Symbole <strong>in</strong> e<strong>in</strong>er Reihe hat (vertikal, horizontal o<strong>der</strong> Diagonal). Wir<br />

nehmen an, dass Maximierer X als Symbol benutzt und M<strong>in</strong>imierer O.<br />

Betrachte z.B. den Spielbaum zur Situation<br />

wobei <strong>der</strong> Maximierer am Zug ist.<br />

X O X<br />

O<br />

X O X<br />

O<br />

O X<br />

O<br />

X<br />

X O X<br />

X O<br />

O X<br />

X O X<br />

O X<br />

O X<br />

X O X<br />

O<br />

O X X<br />

X O X<br />

X O O<br />

O X<br />

X O X<br />

X O<br />

O X O<br />

X O X<br />

O O X<br />

O X<br />

X O X<br />

O X<br />

O X O<br />

X O X<br />

O O<br />

O X X<br />

X O X<br />

O O<br />

O X X<br />

X O X<br />

X O O<br />

O X X<br />

0<br />

X O X<br />

X O X<br />

O X O<br />

0<br />

X O X<br />

O O X<br />

O X X<br />

1<br />

X O X<br />

X O X<br />

O X O<br />

0<br />

X O X<br />

O O X<br />

O X X<br />

1<br />

X O X<br />

X O O<br />

O X X<br />

0<br />

Der Spielbaum zeigt schon, dass <strong>der</strong> Maximierer ke<strong>in</strong>esfalls verlieren wird, aber kann<br />

er sicher gew<strong>in</strong>nen? Und wenn ja, welchen Zug sollte er als nächsten durchführen?<br />

Das Ziel <strong>der</strong> Suche besteht dar<strong>in</strong>, den optimalen nächsten Zug zu f<strong>in</strong>den, d.h. das F<strong>in</strong>den<br />

e<strong>in</strong>er Gew<strong>in</strong>nstrategie. Dabei soll zu je<strong>der</strong> Spielsituation s<strong>der</strong> optimale Zug gefunden<br />

werden. Als Sprechweise kann man verwenden, d ass man e<strong>in</strong>en e<strong>in</strong>zelnen Zug Halbzug<br />

nennt; e<strong>in</strong> Zug ist dann e<strong>in</strong>e Folge von zwei Halbzügen.<br />

Für <strong>die</strong> betrachteten Spiele ist <strong>die</strong> Menge <strong>der</strong> Spielsituationen endlich, also kann man im<br />

Pr<strong>in</strong>zip auch herausf<strong>in</strong>den, welche Spielsituationen bei optimaler Spielweise zum Verlust,<br />

Gew<strong>in</strong>n bzw. Remis führen.<br />

Wenn man Spiele hat, <strong>die</strong> zyklische Zugfolgen erlauben, bzw. wie im Schach bei dreifach<br />

sich wie<strong>der</strong>holen<strong>der</strong> Stellung (bei gleichem Spieler am Zug) <strong>die</strong> Stellung als Remis<br />

werten, dann ist <strong>die</strong> folgende M<strong>in</strong>max-Prozedur noch etwas zu erweitern.<br />

Die Suche im Spielbaum <strong>der</strong> Abspielvarianten mit e<strong>in</strong>er Bewertungsfunktion wurde<br />

schon von den Pionieren <strong>der</strong> Informatik vorgeschlagen (von Shannon, Tur<strong>in</strong>g; siehe auch<br />

<strong>die</strong> Übersicht <strong>in</strong> Russel und Norvig). Dies nennt man <strong>die</strong> M<strong>in</strong>max-Methode.<br />

Stand: 19. Oktober 2012 54 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.4 Suche <strong>in</strong> Spielbäumen<br />

Algorithmus M<strong>in</strong>Max-Suche<br />

Datenstrukturen: Nachfolgerfunktion, Wert(Zustand) für Endsituationen, Datenstruktur<br />

für Spielzustand, Spieler<br />

Funktion M<strong>in</strong>max(Zustand,Spieler):<br />

NF := alle Nachfolgezustände zu (Zustand,Spieler);<br />

if NF = ∅ then return Wert(Zustand) else<br />

if Spieler == Maximierer then<br />

return max{M<strong>in</strong>max(Z, Spieler) | Z ∈ NF }<br />

else // Spieler ist M<strong>in</strong>imierer<br />

return m<strong>in</strong>{M<strong>in</strong>max(Z, Spieler) | Z ∈ NF }<br />

endif<br />

endif<br />

Wobei Spieler <strong>der</strong> jeweils an<strong>der</strong>en Spieler bedeuten soll.<br />

In e<strong>in</strong>er echten Implementierung, sollte man zusätzlich den gegangenen Weg speichern,<br />

damit <strong>der</strong> nächste optimale Zug ebenfalls als Ausgabe zur Verfügung steht.<br />

Im Spielbaum entspricht <strong>die</strong> M<strong>in</strong>Max-Suche gerade dem Verfahren:<br />

• Bewerte alle Blätter<br />

• Berechne den Wert <strong>der</strong> an<strong>der</strong>en Knoten Stufenweise von unten nach oben, wobei<br />

über <strong>die</strong> Werte <strong>der</strong> K<strong>in</strong><strong>der</strong> maximiert bzw. m<strong>in</strong>imiert wird, je nachdem welcher<br />

Spieler am Zug ist.<br />

Beachte, dass <strong>die</strong> Implementierung des M<strong>in</strong>Max-Algorithmus jedoch als Tiefensuche erfolgen<br />

kann, und daher <strong>die</strong> Ebenenweise Bewertung (M<strong>in</strong>imierung / Maximierung) nach<br />

und nach vornimmt.<br />

Wir betrachten erneut das TicTacToe-Beispiel und markieren alle Knoten entsprechend:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 55 Stand: 19. Oktober 2012


2 Suchverfahren<br />

Max<br />

X O X<br />

O<br />

O X<br />

0<br />

M<strong>in</strong><br />

X O X<br />

X O<br />

O X<br />

0<br />

X O X<br />

O X<br />

O X<br />

0<br />

X O X<br />

O<br />

O X X<br />

0<br />

Max<br />

X O X<br />

X O O<br />

O X<br />

0<br />

X O X<br />

X O<br />

O X O<br />

0<br />

X O X<br />

O O X<br />

O X<br />

1<br />

X O X<br />

O X<br />

O X O<br />

0<br />

X O X<br />

O O<br />

O X X<br />

1<br />

X O X<br />

O O<br />

O X X<br />

0<br />

X O X<br />

X O O<br />

O X X<br />

0<br />

X O X<br />

X O X<br />

O X O<br />

0<br />

X O X<br />

O O X<br />

O X X<br />

1<br />

X O X<br />

X O X<br />

O X O<br />

0<br />

X O X<br />

O O X<br />

O X X<br />

1<br />

X O X<br />

X O O<br />

O X X<br />

0<br />

D.h. <strong>der</strong> M<strong>in</strong>Max-Algorithmus wir 0 als Ergebnis liefern, d.h. <strong>der</strong> Maximierer wird<br />

nicht gew<strong>in</strong>nen, wenn sich beide Spieler optimal verhalten, da <strong>der</strong> M<strong>in</strong>imierer stets e<strong>in</strong>e<br />

Möglichkeit hat, das Ergebnis auf e<strong>in</strong> Unentschieden zu lenken.<br />

E<strong>in</strong>e Implementierung des M<strong>in</strong>Max-Verfahrens <strong>in</strong> Haskell (mit Merken <strong>der</strong> Pfade) ist:<br />

m<strong>in</strong>max endZustand wert nachfolger spieler zustand =<br />

go (zustand,[]) spieler<br />

where<br />

go (zustand,p) spieler<br />

| endZustand zustand = (wert zustand,reverse $ zustand:p)<br />

| otherwise =<br />

let l = nachfolger spieler zustand<br />

<strong>in</strong> case spieler of<br />

Maximierer -> maximumBy<br />

(\(a,_) (b,_) -> compare a b)<br />

[go (z,zustand:p) M<strong>in</strong>imierer | z m<strong>in</strong>imumBy<br />

(\(a,_) (b,_) -> compare a b)<br />

[go (z,zustand:p) Maximierer | z


2.4 Suche <strong>in</strong> Spielbäumen<br />

baum ab e<strong>in</strong>er bestimmten Tiefe ab. Nun bewertet man <strong>die</strong> Blattknoten (<strong>die</strong> i.A. ke<strong>in</strong>e Endsituationen<br />

s<strong>in</strong>d!) mithilfe e<strong>in</strong>er heuristische Bewertungsfunktion (Heuristik). Anschließend<br />

verfährt man wie bei <strong>der</strong> M<strong>in</strong>Max-Methode und berechnet <strong>die</strong> M<strong>in</strong>ima bzw. Maxima <strong>der</strong><br />

K<strong>in</strong><strong>der</strong>, um den aktuellen Wert des Knotens zu ermitteln. D.h. man m<strong>in</strong>imiert über <strong>die</strong><br />

Situationen nach Zug des Gegners und maximiert über <strong>die</strong> eigenen Zugmöglichkeiten.<br />

Die Zugmöglichkeit, mit dem optimalen Wert ist dann <strong>der</strong> berechnete Zug.<br />

E<strong>in</strong>e solche heuristische Bewertung von Spielsituationen muss algorithmisch berechenbar<br />

se<strong>in</strong>, und <strong>der</strong>en Güte bestimmt entsprechend auch <strong>die</strong> Güte des M<strong>in</strong>Max-Verfahrens.<br />

Beispiele für <strong>die</strong> Bewertungsfunktion s<strong>in</strong>d:<br />

Schach: Materialvorteil, evtl. Stellungsvorteil, Gew<strong>in</strong>nsituation, ...<br />

Mühle: Material, #Mühlen, Bewegungsfreiheit, ...<br />

Tictactoe: am e<strong>in</strong>fachsten: Gew<strong>in</strong>n = 1, Verlust = -1, Remis = 0<br />

nur e<strong>in</strong>deutige Spielsituationen werden direkt bewertet.<br />

Re<strong>in</strong> theoretisch reicht <strong>die</strong>se Bewertung bei allen <strong>die</strong>sen Spielen aus, wenn man bis<br />

zum Ende suchen könnte.<br />

Beachte, dass <strong>in</strong> Spielen ohne Zufall gilt: Die Berechnung des besten Zuges ist unabhängig<br />

von den exakten Werten <strong>der</strong> Bewertungsfunktion; es kommt nur auf <strong>die</strong> erzeugte<br />

Ordnung zwischen den Spielsituationen an. Z.B. ist bei TicTacToe egal, ob wir mit Sieg,<br />

Nie<strong>der</strong>lage, Unentschieden mit 1, -1, 0 bewerten o<strong>der</strong> 100, 10, 50. Allerd<strong>in</strong>gs än<strong>der</strong>t sich<br />

<strong>die</strong> Suche, wenn wir <strong>die</strong> Ordnung än<strong>der</strong>n und bspw. Sieg, Nie<strong>der</strong>lage, Unentschieden mit<br />

1,-1,1 bewerten (M<strong>in</strong>Max unterscheidet dann nicht zwischen Sieg und Unentschieden).<br />

Beispiel 2.4.2. Heuristische Bewertung für Tictactoe. E<strong>in</strong>e komplizierte Bewertung ist:<br />

(#e<strong>in</strong>fach X-besetzte Zeilen/Spalten/Diag) * 1<br />

+ (# doppelt X-besetzte Zeilen/Spalten/Diag) * 5<br />

+ (20, falls Gew<strong>in</strong>nsituation)<br />

- (#e<strong>in</strong>fach O-besetzte Zeilen/Spalten/Diag) * 1<br />

- (# doppelt O-besetzte Zeilen/Spalten/Diag) * 5<br />

- (20, falls Verlustsituation)<br />

Die aktuelle Spielsituation sei<br />

O X<br />

den Bewertungen, wenn X-Spieler dran ist, s<strong>in</strong>d:<br />

X<br />

O<br />

. Die nächsten Spielsituationen zusammen mit<br />

X<br />

O<br />

X X X X<br />

X<br />

X<br />

O<br />

O X O<br />

O X O<br />

X O X O X O X O X X<br />

0 8 −3 1 −3<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 57 Stand: 19. Oktober 2012


2 Suchverfahren<br />

Die Weiterführung <strong>der</strong> ersten Situation nach möglichen Zügen von O-Spieler ergibt:<br />

X X O<br />

O<br />

O<br />

X<br />

O<br />

X<br />

O<br />

X O X O X O O X<br />

−20 0 0 1<br />

Über <strong>die</strong>se ist zu m<strong>in</strong>imieren, so dass sich hier e<strong>in</strong> Wert von −20 ergibt.<br />

In <strong>der</strong> ersten Ebene, nach <strong>der</strong> ersten Zugmöglichkeit von X, ist zu maximieren. Der erste Zug trägt<br />

−20 dazu bei.<br />

Auf <strong>der</strong> Webseite zu <strong>die</strong>ser Veranstaltung ist e<strong>in</strong> Haskell-Programm, das zur e<strong>in</strong>fachen Bewertung<br />

+1, 0, −1 e<strong>in</strong>e Berechnung des nächsten Gew<strong>in</strong>nzuges bzw. falls es ke<strong>in</strong>en solchen gibt, den<br />

Zug ausrechnet, <strong>der</strong> zum Remis führt, o<strong>der</strong> aufgibt. Dieses Programm f<strong>in</strong>det <strong>in</strong> annehmbarer Zeit<br />

jeweils den besten Zug, und erkennt auch, dass es ke<strong>in</strong>en garantierten Gew<strong>in</strong>n für den X-Spieler<br />

o<strong>der</strong> O-Spieler am Anfang gibt. Z.B.<br />

*Ma<strong>in</strong>> nzug ’X’ "XBBBBOBBB"<br />

"Siegzug Feld: 3"<br />

*Ma<strong>in</strong>> nzug ’X’ "XBBBBBOBB"<br />

"Siegzug Feld: 2"<br />

*Ma<strong>in</strong>> nzug ’X’ "XBBBBBBOB"<br />

"Siegzug Feld: 3"<br />

*Ma<strong>in</strong>> nzug ’X’ "XBBBBBBBO"<br />

Man könnte <strong>die</strong> Bewertung verbessern, wenn man beachtet, wer am Zug ist, allerd<strong>in</strong>gs<br />

ergibt sich <strong>der</strong> gleiche Effekt, wenn man e<strong>in</strong>en Zug weiter sucht und bewertet.<br />

Praktisch erwünschte Eigenschaften <strong>der</strong> Bewertungsfunktion s<strong>in</strong>d:<br />

• hoher Wert ≡ hohe Wahrsche<strong>in</strong>lichkeit zu gew<strong>in</strong>nen<br />

• schnell zu berechnen<br />

Dies verdeckt manchmal den Weg zum Sieg. z.B. im Schach: E<strong>in</strong> Damenopfer, das zum<br />

Gew<strong>in</strong>n führt, würde zwischenzeitlich <strong>die</strong> Bewertung bzgl. Material verr<strong>in</strong>gern.<br />

Beachte, dass <strong>der</strong> folgende E<strong>in</strong>wand nicht ganz aus <strong>der</strong> Luft gegriffen ist: Wenn man<br />

e<strong>in</strong> sehr gute Bewertungsfunktion hat: Warum sollte man überhaupt mit M<strong>in</strong>Max <strong>in</strong> <strong>die</strong><br />

Tiefe schauen, und nicht direkt <strong>die</strong> Nachfolger <strong>der</strong> Wurzel bewerten, und den am besten<br />

bewerteten Zug übernehmen? Das Gegenargument ist, dass i.A. <strong>die</strong> Bewertung besser<br />

wird, je weiter man sich dem Ziel nähert. Betrachtet man z.B. Schach, dann kann man aus<br />

<strong>der</strong> Bewertung des Anfangszustand und dessen direkte Nachfolger vermutlich nicht viel<br />

schließen.<br />

E<strong>in</strong>e Tiefenbeschränkte M<strong>in</strong>-Max-Suche braucht O(c m ) Zeit, wenn c <strong>die</strong> mittlere Verzweigungrate,<br />

m <strong>die</strong> Tiefenschranke ist und <strong>die</strong> Bewertungsfunktion konstante Laufzeit<br />

hat<br />

X<br />

X<br />

O<br />

O<br />

X<br />

X<br />

O<br />

Stand: 19. Oktober 2012 58 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.4 Suche <strong>in</strong> Spielbäumen<br />

2.4.1 Alpha-Beta Suche<br />

Betrachtet man den Ablauf <strong>der</strong> M<strong>in</strong>Max-Suche bei Verwendung <strong>der</strong> (i.A. tiefenbeschränkten)<br />

Tiefensuche, so stellt man fest, dass man manche Teilbäume eigentlich nicht betrachten<br />

muss.<br />

Betrachte den folgenden Spielbaum<br />

Max<br />

A<br />

M<strong>in</strong><br />

B<br />

k<br />

E<br />

Max<br />

C<br />

D<br />

F G H<br />

k ′<br />

Dann ergibt sich <strong>der</strong> Wert für <strong>die</strong> Wurzel aus<br />

M<strong>in</strong>Max(A, Max)<br />

= max{M<strong>in</strong>Max(B, M<strong>in</strong>), M<strong>in</strong>Max(E, M<strong>in</strong>)}<br />

= max{m<strong>in</strong>{M<strong>in</strong>Max(C, Max), M<strong>in</strong>Max(D, Max)},<br />

m<strong>in</strong>{M<strong>in</strong>Max(F, Max), M<strong>in</strong>Max(G, Max), M<strong>in</strong>Max(H, Max)}}<br />

Nehmen wir an, <strong>die</strong> Tiefensuche, hat bereits <strong>die</strong> Werte für <strong>die</strong> Knoten B und F als k<br />

und k ′ berechnet (<strong>die</strong> Schattierungen <strong>der</strong> Knoten sollen <strong>die</strong>s gerade verdeutlichen: ganz<br />

dunkle Knoten s<strong>in</strong>d fertig bearbeitet durch <strong>die</strong> Tiefensuche, hellgraue Knoten noch <strong>in</strong><br />

Bearbeitung, und weiße Knoten noch unbesucht).<br />

Dann ergibt sich:<br />

M<strong>in</strong>Max(A, Max) = max{k, m<strong>in</strong>{k ′ , M<strong>in</strong>Max(G, Max), M<strong>in</strong>Max(H, Max)}}<br />

Wenn k ′ ≤ k, dann „weiß“ <strong>der</strong> M<strong>in</strong>imierer, dass <strong>die</strong> komplette Berechnung von<br />

m<strong>in</strong>{k ′ , M<strong>in</strong>Max(G, Max), M<strong>in</strong>Max(H, Max)} (also dem Wert des Knotens E), dem Maximierer<br />

bei <strong>der</strong> Berechnung des Wertes für A irrelevant se<strong>in</strong> wird, da <strong>der</strong> Maximierer<br />

von E sicher e<strong>in</strong>en Wert kle<strong>in</strong>er gleich k ′ (und kle<strong>in</strong>er gleich k) geliefert bekommt, und<br />

daher <strong>der</strong> Wert k für <strong>die</strong> Knoten B und E <strong>der</strong> bessere (maximale) Wert ist.<br />

Aus <strong>die</strong>sem Grund ist es nicht mehr nötig, <strong>die</strong> Werte von G und H zu berechnen. D.h.<br />

<strong>die</strong>se Äste (G und H können größe Unterbäume besitzen!) braucht nicht betrachtet zu<br />

werden.<br />

Um es nochmals zu verdeutlichen, betrachte den gleichen Baum mit konkreten Werten:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 59 Stand: 19. Oktober 2012


2 Suchverfahren<br />

Max<br />

A<br />

M<strong>in</strong><br />

3<br />

E<br />

Max<br />

3 4<br />

2 -2 5<br />

Obwohl das M<strong>in</strong>imum für <strong>die</strong> Berechnung des Wertes von E eigentlich −2 ergibt, kann<br />

<strong>die</strong> Suche beim Entdecken des Werts 2 abgebochen werden, da <strong>die</strong> Bewertung für A (Maximieren),<br />

<strong>in</strong> jedem Fall <strong>die</strong> 3 aus dem l<strong>in</strong>ken Teilbaum bevorzugen wird (da 3 > 2).<br />

Schließlich gibt es den symmetrischen Fall, wenn an e<strong>in</strong>em Knoten m<strong>in</strong>imiert statt maximiert<br />

wird. Betrachte den Baum:<br />

M<strong>in</strong><br />

A<br />

Max<br />

B<br />

l<br />

E<br />

M<strong>in</strong><br />

C<br />

D<br />

F G H<br />

l ′<br />

Der Baum unterscheidet sich vom vorherigen lediglich <strong>in</strong> <strong>der</strong> M<strong>in</strong>imierungs- und Maximierungsreihenfolge.<br />

Die Berechnung des Werts von A ist:<br />

M<strong>in</strong>Max(A, M<strong>in</strong>)<br />

= m<strong>in</strong>{M<strong>in</strong>Max(B, Max), M<strong>in</strong>Max(E, Max)}<br />

= m<strong>in</strong>{M<strong>in</strong>Max(B, Max),<br />

max{M<strong>in</strong>Max(F, M<strong>in</strong>), M<strong>in</strong>Max(G, M<strong>in</strong>), M<strong>in</strong>Max(H, M<strong>in</strong>)}}<br />

Wenn M<strong>in</strong>Max(B, Max) = l und M<strong>in</strong>Max(F, M<strong>in</strong>) = l ′ schon berechnet s<strong>in</strong>d, ergibt das<br />

m<strong>in</strong>{l, max{l’, M<strong>in</strong>Max(G, M<strong>in</strong>), M<strong>in</strong>Max(H, M<strong>in</strong>)}}.<br />

Wenn l ′ ≥ l, dann brauchen <strong>die</strong> Werte von G und H nicht berechnet werden, da <strong>der</strong><br />

M<strong>in</strong>imierer an A sowieso niedrigeren Wert k wählen wird.<br />

Die Alpha-Beta-Suche verwendet genau <strong>die</strong>se Ideen und führt bei <strong>der</strong> Suche zwei<br />

Schranken mit, <strong>die</strong> das Suchfenster festlegen (und den Werten k und l <strong>in</strong> den obigen Beispielen<br />

entsprechen). Als untere Begrenzung des Suchfensters wird <strong>der</strong> Wert <strong>der</strong> Variablen<br />

α verwendet, als obere Begrenzung <strong>der</strong> aktuelle Wert <strong>der</strong> Variablen β. Das ergibt das<br />

Fenster [α, β]. Der Algorithmus startet mit α = −∞ und β = ∞ und passt während <strong>der</strong><br />

Stand: 19. Oktober 2012 60 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.4 Suche <strong>in</strong> Spielbäumen<br />

Suche <strong>die</strong> Wert von α und β an. Sobald an e<strong>in</strong>em Knoten α ≥ β gilt, wird <strong>der</strong> entsprechende<br />

Teilbaum nicht mehr untersucht.<br />

Beachte, dass <strong>die</strong> Alpha-Beta-Suche e<strong>in</strong>e Tiefensuche mit Tiefenschranke durchführt<br />

(um <strong>die</strong> Term<strong>in</strong>ierung sicherzustellen).<br />

Algorithmus α − β-Suche<br />

E<strong>in</strong>gaben: Nachfolgerfunktion, Bewertungsfunktion, Tiefenschranke, Anfangsspielsituation<br />

und Spieler<br />

Aufruf: AlphaBeta(Zustand,Spieler,−∞,+∞)<br />

Funktion: AlphaBeta(Zustand,Spieler,α,β)<br />

1. Wenn Tiefenschranke erreicht, bewerte <strong>die</strong> Situation, return Wert<br />

2. Sei NF <strong>die</strong> Folge <strong>der</strong> Nachfolger von (Zustand,Spieler)<br />

3. Wenn Spieler = M<strong>in</strong>imierer:<br />

β l := ∞;<br />

for-each L ∈ NF<br />

β l := m<strong>in</strong>{β l , AlphaBeta(L,Maximierer,α,β)}<br />

if β l ≤ α then return β l endif// verlasse Schleife<br />

β := m<strong>in</strong>{β, β l }<br />

end-for<br />

return β l<br />

4. Wenn Spieler = Maximierer<br />

α l := −∞;<br />

for-each L ∈ NF<br />

α l := max{α l , AlphaBeta(L,M<strong>in</strong>imierer,α,β)}<br />

if α l ≥ β then return α l endif// verlasse Schleife<br />

α := max{α, α l }<br />

end-for<br />

return α l<br />

Beachte, dass <strong>der</strong> Algorithmus lokale α l und β l Werte verwendet, und dass <strong>die</strong> rekursiven<br />

Aufrufe auch entsprechend <strong>die</strong> aktuelle Tiefe anpassen müssen (was <strong>der</strong> E<strong>in</strong>fachheithalber<br />

<strong>in</strong> <strong>der</strong> Beschreibung weggelassen wurde).<br />

Wir betrachten e<strong>in</strong> Beispiel:<br />

Beispiel 2.4.3. Betrachte den folgenden Spielbaum, wobei <strong>der</strong> Maximierer an <strong>der</strong> Wurzel am Zug<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 61 Stand: 19. Oktober 2012


2 Suchverfahren<br />

Max<br />

a<br />

M<strong>in</strong><br />

b<br />

c<br />

ist<br />

2 4 -1<br />

6 -2 0<br />

Die folgenden Abbildungen zeigen <strong>die</strong> Schrittweise Abarbeitung durch <strong>die</strong> Alpha-Beta-Suche:<br />

Max<br />

a<br />

α = −∞<br />

β = ∞<br />

α l = −∞<br />

Max<br />

a<br />

α = −∞<br />

β = ∞<br />

α l = −∞<br />

Max<br />

a<br />

α = −∞<br />

β = ∞<br />

α l = −∞<br />

M<strong>in</strong><br />

b<br />

c<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = ∞<br />

β l = ∞<br />

c<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = ∞<br />

β l = 2<br />

c<br />

2 4 -1<br />

6 -2 0<br />

2 4 -1<br />

6 -2 0<br />

2 4 -1<br />

6 -2 0<br />

(i) (ii) (iii)<br />

Max<br />

a<br />

α = −∞<br />

β = ∞<br />

α l = −∞<br />

Max<br />

a<br />

α = −∞<br />

β = ∞<br />

α l = −∞<br />

Max<br />

a<br />

α = −∞<br />

β = ∞<br />

α l = −∞<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = 2<br />

β l = 2<br />

c<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = 2<br />

β l = 2<br />

c<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = 2<br />

β l = −1<br />

c<br />

2 4 -1<br />

6 -2 0<br />

2 4 -1<br />

6 -2 0<br />

2 4 -1<br />

6 -2 0<br />

(iv) (v) (vi)<br />

Max<br />

a<br />

α = −∞<br />

β = ∞<br />

α l = −1<br />

Max<br />

a<br />

α = −1<br />

β = ∞<br />

α l = −1<br />

Max<br />

a<br />

α = −1<br />

β = ∞<br />

α l = −1<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = −1<br />

β l = −1<br />

c<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = −1<br />

β l = −1<br />

c<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = −1<br />

β l = −1<br />

c<br />

α = −1<br />

β = ∞<br />

β l = ∞<br />

2 4 -1<br />

6 -2 0<br />

2 4 -1<br />

6 -2 0<br />

2 4 -1<br />

6 -2 0<br />

(vii) (viii) (ix)<br />

Max<br />

a<br />

α = −1<br />

β = ∞<br />

α l = −1<br />

Max<br />

a<br />

α = −1<br />

β = ∞<br />

α l = −1<br />

Max<br />

a<br />

α = −1<br />

β = ∞<br />

α l = −1<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = −1<br />

β l = −1<br />

c<br />

α = −1<br />

β = ∞<br />

β l = 6<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = −1<br />

β l = −1<br />

c<br />

α = −1<br />

β = 6<br />

β l = 6<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = −1<br />

β l = −1<br />

c<br />

α = −1<br />

β = 6<br />

β l = −2<br />

2 4 -1<br />

6 -2 0<br />

2 4 -1<br />

6 -2 0<br />

2 4 -1<br />

6 -2 0<br />

(x) (xi) (xii)<br />

Max<br />

a<br />

α = −1<br />

β = ∞<br />

α l = max{−1, −2} = −1<br />

Max<br />

a<br />

α = −1<br />

β = ∞<br />

α l = −1<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = −1<br />

β l = −1<br />

c<br />

α = −1<br />

β = 6<br />

β l = −2<br />

M<strong>in</strong><br />

b<br />

α = −∞<br />

β = −1<br />

β l = −1<br />

c<br />

α = −1<br />

β = 6<br />

β l = −2<br />

2 4 -1<br />

6 -2 0<br />

2 4 -1<br />

6 -2 0<br />

(xiii)<br />

(xiv)<br />

Am Knoten c kann <strong>die</strong> Suche abgebrochen worden, nachdem <strong>die</strong> −2 als K<strong>in</strong>dwert entdeckt wurde.<br />

Daher kann braucht <strong>der</strong> mit 0 markierte Knoten (<strong>der</strong> auch e<strong>in</strong> großer Baum se<strong>in</strong> könnte) nicht<br />

untersucht werden. Der zugehörige Schritt ist (xii), da dort α ≥ β l (β l ist <strong>der</strong> lokal beste gefundene<br />

β-Wert) festgestellt wird. Anschließend wird <strong>der</strong> β l -Wert (-2) direkt nach oben gegeben, und zur<br />

Stand: 19. Oktober 2012 62 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.4 Suche <strong>in</strong> Spielbäumen<br />

Aktualisierung des α l -Wertes von Knoten (a) verwendet (Schritt (xiii)). Da <strong>die</strong>ser schlechter ist,<br />

als <strong>der</strong> Bereits erhaltene liefert <strong>die</strong> AlphaBeta-Suche den Wert −1 <strong>in</strong>sgesamt als Ergebnis zurück.<br />

Die Alpha-Beta-Prozedur kann bei geeignetem Suchfenster auf je<strong>der</strong> Ebene <strong>die</strong> Suche<br />

abbrechen, es muss nicht je<strong>der</strong> <strong>in</strong>nere Konten untersucht werden!.<br />

E<strong>in</strong>e Implementierung <strong>der</strong> Alpha-Beta-Suche <strong>in</strong> Haskell (ohne Merken des Pfades) ist:<br />

alphaBeta wert nachfolger maxtiefe neg<strong>in</strong>fty <strong>in</strong>fty spieler zustand =<br />

ab 0 neg<strong>in</strong>fty <strong>in</strong>fty spieler zustand<br />

where<br />

ab tiefe alpha beta spieler zustand<br />

| null (nachfolger spieler zustand) || maxtiefe maximize tiefe alpha beta l<br />

M<strong>in</strong>imierer -> m<strong>in</strong>imize tiefe alpha beta l<br />

maximize tiefe alpha beta xs = it_maximize alpha neg<strong>in</strong>fty xs<br />

where<br />

it_maximize alpha alpha_l [] = alpha_l<br />

it_maximize alpha alpha_l (x:xs) =<br />

let alpha_l’ = max alpha_l (ab (tiefe+1) alpha beta M<strong>in</strong>imierer x)<br />

<strong>in</strong> if alpha_l’ >= beta then alpha_l’ else<br />

it_maximize (max alpha alpha_l’) alpha_l’ xs<br />

m<strong>in</strong>imize tiefe alpha beta xs = it_m<strong>in</strong>imize beta <strong>in</strong>fty xs<br />

where<br />

it_m<strong>in</strong>imize beta beta_l [] = beta_l<br />

it_m<strong>in</strong>imize beta beta_l (x:xs) =<br />

let beta_l’ = m<strong>in</strong> beta_l (ab (tiefe+1) alpha beta Maximierer x)<br />

<strong>in</strong> if beta_l’


2 Suchverfahren<br />

muss <strong>die</strong> Suche sämtliche K<strong>in</strong><strong>der</strong> von c explorieren. Im rechten Baum h<strong>in</strong>gegen wird für<br />

c <strong>der</strong> Wert 5 ermittelt, da das erste K<strong>in</strong>d von b bereits den niedrigeren Wert 4 hat, wird<br />

<strong>die</strong> Alpha-Beta-Suche <strong>die</strong> restlichen K<strong>in</strong><strong>der</strong> von b nicht mehr explorieren.<br />

Abhilfe kann hierbei wie<strong>der</strong> e<strong>in</strong>e Heuristik schaffen, <strong>die</strong> entscheidet welche K<strong>in</strong>dknoten<br />

zuerst untersucht werden sollen (d.h. <strong>die</strong> Nachfolger werden anhand <strong>der</strong> Heuristik<br />

vorsortiert). Z.B. kann man bei Schach <strong>die</strong> verschiedenen Stellungen berücksichtigen und<br />

bspw. schlagende Züge re<strong>in</strong>em Ziehen vorziehen usw.<br />

Schließlich stellt sich <strong>die</strong> Frage, wie groß <strong>die</strong> Wirkung <strong>der</strong> Alpha-Beta-Suche als Verbesserung<br />

<strong>der</strong> M<strong>in</strong>-Max-Suche ist. Wie bereits obiges Beispiel zur Reihenfolge <strong>der</strong> Nachfolger<br />

zeigt, ist im worst case <strong>die</strong> Alpha-Beta-Suche gar nicht besser als <strong>die</strong> M<strong>in</strong>-Max-Suche und<br />

muss alles <strong>in</strong>spizieren und benötigt daher O(c d ) Zeit, wenn c <strong>die</strong> mittlere Verzweigungrate,<br />

d <strong>die</strong> Tiefenschranke ist und <strong>die</strong> Bewertungsfunktion konstante Laufzeit hat.<br />

Für den best case kann man nachweisen, dass Alpha-Beta nur O(c d 2 ) Knoten explorieren<br />

muss. Diese Schranke gilt auch im Mittel, wenn man e<strong>in</strong>e gute Heuristik verwendet.<br />

Umgekehr bedeutet das, dass man mit Alpha-Beta-Suche bei guter Heuristik bei gleichen<br />

Ressourcen (Zeit und Platz) doppelt so tief suchen kann, wie bei Verwendung <strong>der</strong> M<strong>in</strong>-<br />

Max-Suche. Damit wird auch <strong>die</strong> Spielstärke e<strong>in</strong>es entsprechenden Programms gesteigert,<br />

denn tiefere Suche führt zur Verbesserung <strong>der</strong> Spielstärke.<br />

Verwendet man zufälliges Raten beim Explorieren <strong>der</strong> Nachfolger, so kann man als<br />

Schranke für <strong>die</strong> Laufzeit O(c 3 4 d ) herleiten.<br />

Wichtige Optimierungen <strong>der</strong> Suche, <strong>die</strong> z.B. beim Schach vorgenommen werden, s<strong>in</strong>d<br />

<strong>die</strong> Speicherung bereits bewerteter Stellungen, um bei Zugvertauschungen nicht zuviele<br />

Stellungen mehrfach zu bewerten. Damit kann man <strong>die</strong> Vorsortierung von Zügen unterstützen.<br />

Auftretende Probleme bei <strong>der</strong> Suche s<strong>in</strong>d:<br />

• Tiefere Suche kann <strong>in</strong> seltenen Fällen zur schlechteren Zugauswahl führen. Dies tritt<br />

mit immer ger<strong>in</strong>gerer Wahrsche<strong>in</strong>lichkeit e<strong>in</strong>, falls man e<strong>in</strong>e gute Bewertungsfunktion<br />

hat<br />

• Horizont-Effekt: (z.B. durch Schach bieten gerät e<strong>in</strong> wichtiger Zug außerhalb des<br />

Suchhorizonts)<br />

Um den Horizont-Effekt <strong>in</strong> <strong>der</strong> Hauptvariante auszuschalten, kann man den Horizont<br />

unter gewissen Bed<strong>in</strong>gungen erweitern.<br />

Idee: falls bei Suche mit Tiefe d e<strong>in</strong> e<strong>in</strong>zelner Zug k 0 beson<strong>der</strong>s auffällt (d.h. gut beim<br />

Maximierer und schlecht beim M<strong>in</strong>imierer):<br />

Wenn v d (k 0 ) > v d (k) + S für alle Brü<strong>der</strong> k ≠ k 0 und für feste, vorgegebene Schranke<br />

S, wobei v d <strong>die</strong> Bewertung bei Suchtiefe d bezeichnet; Dann wird <strong>die</strong>ser Zug e<strong>in</strong>e Tiefe<br />

weiter untersucht. Die tiefere Suche ist auch s<strong>in</strong>nvoll bei Zugzwang, d.h. wenn nur e<strong>in</strong><br />

weiterer Zug möglich ist.<br />

Stand: 19. Oktober 2012 64 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.4 Suche <strong>in</strong> Spielbäumen<br />

Im Falle des Zugzwangs vergrößert das den Suchraum nicht, aber erhöht <strong>die</strong> Vorausschau<br />

Die Implementierung <strong>die</strong>ser Idee ist e<strong>in</strong>e wichtige Erweiterung <strong>der</strong> Suchmethoden <strong>in</strong><br />

Programmen zu strategischen Spielen.<br />

Folgendes Vorgehen ist üblich: es gibt mehrere Durchgänge:<br />

1. normale Bewertung<br />

2. Erkennen aller beson<strong>der</strong>en Züge:<br />

3. Alle auffallenden Züge dürfen um 1 weiter expan<strong>die</strong>ren.<br />

Effekte:<br />

• Die Suche kann <strong>in</strong>stabil werden:<br />

ob e<strong>in</strong> Zug auf Ebene n als <strong>in</strong>teressant auffällt, kann davon abhängen, wie tief <strong>die</strong><br />

Suche unterhalb <strong>die</strong>ses Knotens im Baum ist.<br />

• Der Suchraum kann beliebig wachsen, falls man mehrere Durchgänge macht: jeweils<br />

e<strong>in</strong> an<strong>der</strong>er Knoten wird als wichtig erkannt.<br />

• Durch <strong>die</strong> tiefere Suche kann e<strong>in</strong> guter Zug wie<strong>der</strong> schlechter bewertet werden.<br />

2.4.2 Mehr als 2 Spieler<br />

In <strong>die</strong>sem kurzen Abschnitt werden wir erläutern, warum <strong>die</strong> M<strong>in</strong>-Max-Methode (analog<br />

<strong>die</strong> Alpha-Beta-Suche) bei Spielen mit mehr als 2 Spielern nicht mehr funktioniert. Wir<br />

geben ke<strong>in</strong>e Lösungen für <strong>die</strong>se Spiele an, da <strong>die</strong> Verfahren komplizierte und aufwändig<br />

s<strong>in</strong>d und <strong>in</strong> <strong>der</strong> Literatur nachgelesen werden können.<br />

Wir betrachten ausschließlich Spiele mit drei Spielern (sagen wir S 1 , S 2 und S 3 ), wobei<br />

alle Spieler nache<strong>in</strong>an<strong>der</strong> ziehen. Zur Blattbewertung macht es <strong>in</strong> <strong>die</strong>sem Fall ke<strong>in</strong>en S<strong>in</strong>n<br />

e<strong>in</strong>en e<strong>in</strong>zigen Wert zu verwenden, daher benutzen wir e<strong>in</strong> Drei-Tupel (Ergebnis für S 1 ,<br />

Ergebnis für S 2 , Ergebnis für S 3 ). Jede Komponente stellt das Ergebnis aus Sicht des Spieler<br />

dar. Zunächst sche<strong>in</strong>t das M<strong>in</strong>-Max-Verfahren e<strong>in</strong>fach übertragbar: Jenachdem welcher<br />

Spiel an e<strong>in</strong>em Knoten am Zug ist, wird entsprechend se<strong>in</strong>er Komponente maximiert.<br />

Betrachte z.B. den Spielbaum:<br />

Spieler S 1<br />

Spieler S 2<br />

Spieler S 3<br />

(1,2,0) (0,1,3) (1,0,4) (0,1,2) (3,0,2) (4,0,1) (1,3,2) (0,2,0)<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 65 Stand: 19. Oktober 2012


2 Suchverfahren<br />

Bewertet man den Baum von unten nach oben, <strong>in</strong>dem<br />

je<strong>der</strong> Spieler se<strong>in</strong> Ergebnis maximiert, so erhält man:<br />

Spieler S 1<br />

(1,3,2)<br />

Spieler S 3 (0,1,3) (1,0,4) (3,0,2) (1,3,2)<br />

Spieler S 2<br />

(0,1,3) (1,3,2)<br />

(1,2,0) (0,1,3) (1,0,4) (0,1,2) (3,0,2) (4,0,1) (1,3,2) (0,2,0)<br />

Hierbei s<strong>in</strong>d wir jedoch davon ausgegangen, dass je<strong>der</strong> Spieler nur nach <strong>der</strong> eigenen<br />

Gew<strong>in</strong>nmaximierung vorgeht. Nehmen wir an, Spieler 1 und Spieler 3 verbünden sich, mit<br />

dem Ziel, das Ergebnis von Spieler 2 zu m<strong>in</strong>imieren, so ergibt sich e<strong>in</strong>e an<strong>der</strong>e Bewertung:<br />

Spieler S 1<br />

(0,1,3)<br />

Spieler S 2<br />

(0,1,3) (0,2,0)<br />

Spieler S 3 (0,1,3) (1,0,4) (3,0,2) (0,2,0)<br />

(1,2,0) (0,1,3) (1,0,4) (0,1,2) (3,0,2) (4,0,1) (1,3,2) (0,2,0)<br />

Noch gravieren<strong>der</strong> ist <strong>der</strong> Fall, dass bei ke<strong>in</strong>er Kooperation e<strong>in</strong> Spieler quasi zufällig<br />

e<strong>in</strong>en Zug auswählt, da mehrere Nachfolger den gleichen Wert für ihn haben, aber <strong>die</strong>se<br />

Wahl <strong>die</strong> Bewertung <strong>der</strong> an<strong>der</strong>en Spieler bee<strong>in</strong>flussen kann.<br />

Betrachte z.B. den Baum:<br />

Spieler S 1<br />

?<br />

Spieler S 2<br />

(0,0,0) ?<br />

Spieler S 3 (0,0,0) (0,0,0) (1,-1,-1) (-1,-1,1)<br />

(0,0,0) (1,-1,-1) (-1,1,-1) (0,0,0) (1,-1,-1) (1,-1,-1) (-1,-1,1) (0,0,0)<br />

Spieler 2 hat zunächst ke<strong>in</strong>e Präferenz, wie er den zweiten K<strong>in</strong>dknoten bewerten soll,<br />

da <strong>die</strong> Bewertungen (1,-1,-1) und (-1,-1,1) aus se<strong>in</strong>er Sicht beide gleich schlecht s<strong>in</strong>d.<br />

Stand: 19. Oktober 2012 66 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.4 Suche <strong>in</strong> Spielbäumen<br />

Allerd<strong>in</strong>gs nimmt er (1,-1,-1), so würde Spieler 1 an <strong>der</strong> Wurzel gew<strong>in</strong>nen, nimmt er<br />

(-1,-1,1) ist <strong>die</strong>s rational besser, da Spieler 1 an <strong>der</strong> Wurzel (0,0,0) also unentschieden<br />

nimmt.<br />

Allgeme<strong>in</strong> sche<strong>in</strong>t es jedoch ke<strong>in</strong>e e<strong>in</strong>fache Strategie zu geben, <strong>die</strong> stets zu e<strong>in</strong>er rationalen<br />

Entscheidung führt.<br />

2.4.3 Spiele mit Zufallsereignissen<br />

In <strong>die</strong>sem Abschnitt betrachten wir wie<strong>der</strong> Zwei-Spieler-Spiele, jedoch Spiele, bei denen<br />

<strong>der</strong> Zufall e<strong>in</strong>e Rolle spielt. Auch <strong>in</strong> <strong>die</strong>ser Variante kann <strong>die</strong> M<strong>in</strong>max-Suche mit leichten<br />

Anpassungen verwendet werden.<br />

Z.B. beim Backgammon besteht e<strong>in</strong> Spielzug dar<strong>in</strong>, zunächst mit zwei Würfeln zu würfeln<br />

und dann zu ziehen, wobei man bei <strong>der</strong> Zugwahl selbst entscheiden kann, welche<br />

Ste<strong>in</strong>e zu ziehen s<strong>in</strong>d. Da <strong>der</strong> Gegner auch würfelt und erst dann e<strong>in</strong>e Entscheidungsmöglichkeit<br />

für se<strong>in</strong>en Zug hat, das gleiche aber auch für weitere eigene Züge gilt, hat<br />

man ke<strong>in</strong>en festen Baum <strong>der</strong> Zugmöglichkeiten. Man könnte e<strong>in</strong>en Zug des Gegners vorausschauend<br />

über alle se<strong>in</strong>e Würfel- und Zugmöglichkeiten m<strong>in</strong>imieren, aber s<strong>in</strong>nvoller<br />

ersche<strong>in</strong>t es, über <strong>die</strong> bekannte Wahrsche<strong>in</strong>lichkeit zu argumentieren und den Erwartungswert<br />

des Gegners zu m<strong>in</strong>imieren und den eigenen Erwartungswert zu maximieren.<br />

Theorem 2.4.4. Es gilt: Wenn Wahrsche<strong>in</strong>lichkeit e<strong>in</strong>e Rolle spielt, dann ist <strong>die</strong> Berechnung des<br />

Zuges mit dem besten Erwartungswert abhängig von den exakten Werten <strong>der</strong> Bewertungsfunktion;<br />

nicht nur von <strong>der</strong> relativen Ordnung auf den Situationen.<br />

Beweis. Als Gegenbeispiel, wobei <strong>die</strong> Wahrsche<strong>in</strong>lichkeiten 0, 7 und 0, 3 und 0, 1 und 0, 9<br />

s<strong>in</strong>d, und <strong>die</strong> Bewertungen <strong>der</strong> Situation A mit möglichen Situation A 1 , A 2 und B mit<br />

möglichen Situation B 1 , B 2 seien ϕ 1 (A 1 ) = 1, ϕ 1 (A 2 ) = 20 und ϕ 1 (B 1 ) = 2, ϕ 1 (B 2 ) = 8;<br />

bei <strong>der</strong> zweiten Bewertungsfunktion bleibe <strong>die</strong> Bewertung von A 1 , A 2 gleich und<br />

ϕ 1 (B 1 ) = 3, ϕ 1 (B 2 ) = 6.<br />

O<br />

p =<br />

A<br />

B<br />

0,7 0,3 0,1 0,9<br />

A1 A2 B1 B2<br />

1 20 2 8<br />

20<br />

3 6<br />

1<br />

Dies erhält <strong>die</strong> relative Ordnung <strong>der</strong> Situationen. Aber <strong>die</strong> Erwartungswerte verschieben<br />

sich:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 67 Stand: 19. Oktober 2012


2 Suchverfahren<br />

A<br />

Bewertung 1 0.7 ∗ 1 + 0.3 ∗ 20 < 0.1 ∗ 2 + 0.9 ∗ 8<br />

Bewertung 2 0.7 ∗ 1 + 0.3 ∗ 20 > 0.1 ∗ 3 + 0.9 ∗ 6<br />

Damit ist e<strong>in</strong>mal <strong>der</strong> l<strong>in</strong>ke, e<strong>in</strong>mal <strong>der</strong> rechte Erwartungswert größer. D.h. e<strong>in</strong>mal ist B,<br />

e<strong>in</strong>mal A zu bevorzugen.<br />

D.h., <strong>die</strong> Bewertungsfunktion muss auch von den Werten her vorsichtig def<strong>in</strong>iert werden.<br />

Beim Backgammon wäre <strong>die</strong> richtige Intuition: <strong>die</strong> Anzahl <strong>der</strong> benötigten Züge bis<br />

alle Ste<strong>in</strong>e das Ziel erreicht haben. Diese ist aber vermutlich schwer zu schätzen, da <strong>der</strong><br />

Spielbaum viel zu groß ist.<br />

Maximum<br />

A zieht<br />

B<br />

E<br />

B würfelt<br />

M<strong>in</strong>imum<br />

B zieht<br />

E<br />

A würfelt<br />

p1 p2 p3<br />

Maximum<br />

A zieht<br />

Bewertungen<br />

Bei Vorausschau mit Tiefe 2 wird <strong>der</strong> Baum <strong>der</strong> Möglichkeiten aufgebaut. Die Blätter<br />

werden bewertet. Im Bild s<strong>in</strong>d es <strong>die</strong> Situationen nach e<strong>in</strong>em Zug von A. Man maximiert<br />

über <strong>die</strong> Geschwisterknoten und erhält den besten Zug. Im nächsten Schritt nach oben berechnet<br />

man den Erwartungswert für den Wert des besten Zuges. Geht man weiter nach<br />

oben, ist das gleiche zu tun für gegnerische Züge und Würfeln, wobei man m<strong>in</strong>imieren<br />

muss. An <strong>der</strong> Wurzel ist das Würfelergebnis bekannt, so dass man als besten Zug denjenigen<br />

mit dem höchsten Erwartungswert ermittelt.<br />

Hat man e<strong>in</strong>e gute Bewertungsfunktion, dann kann man <strong>die</strong> M<strong>in</strong>max-Suche verbessern<br />

durch e<strong>in</strong>e Variante <strong>der</strong> Alpha-Beta-Suche. Diese Optimierung spielt allerd<strong>in</strong>gs <strong>in</strong> <strong>der</strong><br />

Praxis ke<strong>in</strong>e so große Rolle wie <strong>in</strong> determ<strong>in</strong>istischen Spielen, da <strong>der</strong> Spielbaum i.a. viel<br />

zu groß ist, um mehrere Züge voraus zu schauen.<br />

Stand: 19. Oktober 2012 68 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.5 Evolutionäre (Genetische) Algorithmen<br />

2.5 Evolutionäre (Genetische) Algorithmen<br />

Das Ziel bzw. <strong>die</strong> Aufgabe von evolutionären Algorithmen ist e<strong>in</strong>e Optimierung von Objekten<br />

mit komplexer Beschreibung, wobei es variable Parameter gibt. Dabei werden <strong>die</strong><br />

Objekte (Zustände) als Bitstr<strong>in</strong>gs ko<strong>die</strong>rt, so dass <strong>die</strong> Aufgabe <strong>die</strong> Optimierung e<strong>in</strong>er reellwertigen<br />

Bewertungsfunktion auf Bitfolgen fester Länge ist. Dabei wird stets e<strong>in</strong>e Multimenge<br />

solcher Objekte betrachtet, d.h. es wird e<strong>in</strong>e parallele Suche durchgeführt.<br />

Genetische bzw. evolutionäre Algorithmen orientieren sich dabei an <strong>der</strong> Evolution von<br />

Lebewesen, daher werden entsprechende an<strong>der</strong>e Sprechweisen benutzt, <strong>die</strong> wir gleich<br />

e<strong>in</strong>führen:<br />

Die E<strong>in</strong>gaben e<strong>in</strong>es evolutionären Algorithmus s<strong>in</strong>d:<br />

• E<strong>in</strong>e Anfangspopulation, d.h. e<strong>in</strong>e (Multi-)Menge von Individuen (Zuständen, Objekten),<br />

<strong>die</strong> üblicherweise als Bitstr<strong>in</strong>g dargestellt s<strong>in</strong>d. E<strong>in</strong> Bit o<strong>der</strong> e<strong>in</strong>e Teilfolge von<br />

Bits entspricht dabei e<strong>in</strong>em Gen.<br />

• E<strong>in</strong>e Bewertungsfunktion, welche Fitnessfunktion genannt wird.<br />

Gesucht (als Ausgabe) ist e<strong>in</strong> optimaler Zustand<br />

Die Anzahl <strong>der</strong> möglichen Zustände ist im Allgeme<strong>in</strong>en astronomisch, so dass e<strong>in</strong>e<br />

Durchmusterung aller Zustände aussichtslos ist. Da <strong>die</strong> Evolution Lebewesen „optimiert“,<br />

versucht man <strong>die</strong> <strong>Methoden</strong> <strong>der</strong> Evolution und zwar Mutation, Crossover (Rekomb<strong>in</strong>ation)<br />

und Selektion analog auf <strong>die</strong>se Optimierungen zu übertragen, und mittels<br />

Simulationsläufen e<strong>in</strong> Optimum zu f<strong>in</strong>den.<br />

Die Idee ist daher<br />

• Zustände (Individuen) werden als Bitfolgen (Chromosomen) ko<strong>die</strong>rt.<br />

• Die Bewertung entspricht <strong>der</strong> Fitness <strong>der</strong> Bitfolge (<strong>die</strong>ses Chromosomensatzes bzw.<br />

Individuums),<br />

• Höhere Fitness bedeutet mehr Nachkommen<br />

• Man beobachtet <strong>die</strong> Entwicklung e<strong>in</strong>er Menge von Bitfolgen (Population). D.h. aus<br />

e<strong>in</strong>er aktuellen Population wird <strong>die</strong> nächste Generation erzeugt.<br />

• Nachkommen werden durch zufällige Prozesse unter Verwendung von Operationen<br />

analog zu Mutation und Crossover erzeugt<br />

2.5.1 Genetische Operatoren<br />

Um von e<strong>in</strong>er Population <strong>der</strong> Generation n zur Population n + 1 zu kommen, werden<br />

verschiedene Operatoren verwendet, <strong>die</strong> auf <strong>der</strong> Basis <strong>der</strong> Population zu n <strong>die</strong> Population<br />

n+1 ausrechnen. Wir beschreiben <strong>die</strong>se Operationen allgeme<strong>in</strong>. Für spezifische Probleme<br />

können <strong>die</strong>se Operationen angepasst (o<strong>der</strong> auch verboten) se<strong>in</strong>.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 69 Stand: 19. Oktober 2012


2 Suchverfahren<br />

Wahl <strong>der</strong> Anfangspopulation: Möglichst breit und gut verteilt.<br />

Selektion: Unter Selektion versteht man <strong>die</strong> Auswahl e<strong>in</strong>es Individuums (Chromoson)<br />

aus <strong>der</strong> Population zur Generation n Diese Auswahl kann zum Zwecke <strong>der</strong> Fortpflanzung<br />

o<strong>der</strong> <strong>der</strong> Mutation, des Weiterlebens usw. passieren. Diese Auswahl erfolgt<br />

für e<strong>in</strong> Individuum mit hoher Fitness mit höherer Wahrsche<strong>in</strong>lichkeit, wobei<br />

<strong>die</strong> Wahrsche<strong>in</strong>lichkeit auch vom Zweck <strong>der</strong> Selektion abhängen kann.<br />

Rekomb<strong>in</strong>ation Zwei Chromosomen werden ausgewählt mittels Selektion. Danach wird<br />

<strong>in</strong>nerhalb <strong>der</strong> Chromosomen (zufällig) e<strong>in</strong>e Stelle zum Zerschneiden ermittelt, ab<br />

<strong>die</strong>ser werden <strong>die</strong> Gene ausgetauscht. Es entstehen zwei neue Chromosomensätze.<br />

Alternativ kann man auch mehrere Abschnitte <strong>der</strong> Chromosomen austauschen. Die<br />

folgende Darstellung illustriert <strong>die</strong> Rekomb<strong>in</strong>ation:<br />

Elternteil 1<br />

0 1 1 0 0 1 0 0<br />

Nachkomme<br />

Elternteil 2 0 1 1 0 0 1 1 0<br />

1 1 0 1 1 1 1 0<br />

Zufällig gewählter Schnitt<br />

Mutation. mit e<strong>in</strong>er gewissen Wahrsche<strong>in</strong>lichkeit werden zufällig ausgewählte Bits <strong>in</strong><br />

den Chromosomen verän<strong>der</strong>t. (0 → 1 bzw. 1 → 0)<br />

Aussterben Wenn <strong>die</strong> Populationsgröße überschritten wird, stirbt das schlechteste Individuum.<br />

Alternativ e<strong>in</strong> zufällig gewähltes, wobei das schlechteste mit größerer<br />

Wahrsche<strong>in</strong>lichkeit als des beste ausstirbt.<br />

Ende <strong>der</strong> Evolution Wenn vermutlich das Optimum erreicht ist.<br />

E<strong>in</strong> genetischer / evolutionärer Algorithmus beg<strong>in</strong>nt daher mit e<strong>in</strong>er <strong>in</strong>itialen Population<br />

(1. Generation) und erzeugt durch <strong>die</strong> genetischen Operationen Nachfolgegenerationen.<br />

Er stoppt, wenn e<strong>in</strong> optimales Individuum gefunden wurde, o<strong>der</strong> nach e<strong>in</strong>er Zeitschranke.<br />

Im letzteren Fall wird nicht notwendigerweise e<strong>in</strong> Optimum gefunden, aber<br />

häufig (z.B. bei Verteilungsproblemen) e<strong>in</strong> ausreichend gutes Ergebnis.<br />

E<strong>in</strong> e<strong>in</strong>faches Grundgerüst für e<strong>in</strong>en genetischen Algorithmus ist:<br />

Stand: 19. Oktober 2012 70 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.5 Evolutionäre (Genetische) Algorithmen<br />

Algorithmus Genetische Suche<br />

E<strong>in</strong>gabe: Anfangspopulation, Fitnessfunktion φ, K <strong>die</strong> Populationsgröße<br />

Datenstrukturen: S, S ′ : Mengen von Individuen<br />

Algorithmus:<br />

S := Anfangspopulation;<br />

while (K enthält ke<strong>in</strong> Individuum mit maximalem φ) do:<br />

S ′ := ∅<br />

for i := 1 to K do:<br />

Wähle zufällig (mit φ gewichtet) zwei Individuen A und B aus S;<br />

Erzeuge Nachkomme C aus A und B durch Rekomb<strong>in</strong>ation;<br />

C ′ := Mutation (ger<strong>in</strong>ge Wahrsche<strong>in</strong>lichkeit) von C;<br />

S ′ := S ′ ∪ {C ′ };<br />

end for<br />

S := S ′<br />

end while<br />

Gebe Individuum mit maximaler Fitness aus<br />

Allerd<strong>in</strong>gs s<strong>in</strong>d weitere genetische Operatione und Anpassungen von Mutation, Rekomb<strong>in</strong>ation<br />

und Selektion möglich. Außerdem ist es evtl. ratsam beson<strong>der</strong>s gute Individuen<br />

ohne Rekomb<strong>in</strong>ation <strong>in</strong> <strong>die</strong> nächste Generation zu übernehmen (weiterleben bzw.<br />

Klonen).<br />

Im Allgeme<strong>in</strong>en s<strong>in</strong>d <strong>die</strong> adjustierende Parameter vielfältig:<br />

• Erzeugung <strong>der</strong> <strong>in</strong>itialen Population und Kriterien zum Beenden<br />

• Mutationswahrsche<strong>in</strong>lichkeit: wieviel Bits werden geflippt?, welche Bits?<br />

• Crossover-Wahrsche<strong>in</strong>lichkeit: an welcher Stelle wird zerschnitten? Welche Individuen<br />

dürfen Nachkommen zeugen?<br />

• Abhängigkeit <strong>der</strong> Anzahl <strong>der</strong> Nachkommen von <strong>der</strong> Fitness<br />

• Größe <strong>der</strong> Population<br />

Wie bereits <strong>in</strong> den vorherigen Abschnitten zur Suche s<strong>in</strong>d auch folgende Aspekte hier<br />

wichtig:<br />

• F<strong>in</strong>den e<strong>in</strong>er geeigneten Repräsentation <strong>der</strong> Zustände<br />

• F<strong>in</strong>den geeigneter genetischer Operatoren (auf <strong>der</strong> Repräsentation).<br />

Problem: auch bei genetischen Algorithmen kann sich <strong>die</strong> Population um e<strong>in</strong> lokales<br />

Maximum versammeln. Z.B. durch Inzucht o<strong>der</strong> durch e<strong>in</strong>en lokalen Bergsteigereffekt,<br />

bei dem <strong>die</strong> Mutation das lokale Optimum nicht verlassen kann.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 71 Stand: 19. Oktober 2012


2 Suchverfahren<br />

Die Co<strong>die</strong>rung <strong>der</strong> Chromosomen ist im allgeme<strong>in</strong>en e<strong>in</strong>e Bitfolge, <strong>in</strong> <strong>die</strong>sem Fall<br />

spricht man von genetischen Algorithmen.<br />

Die Ko<strong>die</strong>rung kann aber auch dem Problem angepasst se<strong>in</strong>, so dass nicht mehr alle Ko<strong>die</strong>rungen<br />

e<strong>in</strong>em Problem entsprechen (ungültige Individuen). In dem Fall ist es meist<br />

auch s<strong>in</strong>nvoll, Operatoren zu verwenden, <strong>die</strong> nur gültige Nachkommen erzeugen. In <strong>die</strong>sem<br />

Fall spricht man von evolutionären Algorithmen<br />

2.5.2 Ermitteln <strong>der</strong> Selektionswahrsche<strong>in</strong>lichkeit<br />

Alternativen:<br />

1. Proportional zur Fitness.<br />

Dies macht <strong>die</strong> Optimierung sehr sensibel für den genauen Wert und <strong>der</strong> Steigung<br />

<strong>der</strong> Fitness. Flacht <strong>die</strong> Fitness ab – z.B. <strong>in</strong> <strong>der</strong> Nähe zum Optimum o<strong>der</strong> auf e<strong>in</strong>em<br />

Plateau– dann gibt es ke<strong>in</strong>e bevorzugte Auswahl mehr.<br />

2. Proportional zur Reihenfolge <strong>in</strong>nerhalb <strong>der</strong> Population.<br />

z.B bestes Individuum 2-3 fach wahrsche<strong>in</strong>licher als schlechtestes Individuum. In<br />

<strong>die</strong>sem Fall ist man flexibler <strong>in</strong> <strong>der</strong> Auswahl <strong>der</strong> Fitness-Funktion. Die Auswahl<br />

hängt nicht vom genauen Wert ab.<br />

3. Proportional zu e<strong>in</strong>er normierten Fitness (z.B. Fitness −c), wobei man <strong>die</strong> Fitness c<br />

als das M<strong>in</strong>imum wählen kann.<br />

Beispiel 2.5.1. n-Dame mit evolutionären Algorithmen.<br />

Wir geben zwei verschiedene Ko<strong>die</strong>rungen an.<br />

Ko<strong>die</strong>rung 1:<br />

Co<strong>die</strong>rung <strong>der</strong> Individuen : E<strong>in</strong> Individuum ist e<strong>in</strong>e Folge von n Zahlen, wobei <strong>die</strong> i. Zahl <strong>die</strong><br />

Position (Spalte) <strong>der</strong> Dame <strong>in</strong> Zeile i angibt.<br />

Z.B. für das 8-Damenproblem ko<strong>die</strong>rt <strong>die</strong> Folge [3,2,4,2,7,6,8,5] gerade <strong>die</strong> Belegung:<br />

H<br />

G<br />

F<br />

E<br />

D<br />

C<br />

B<br />

A<br />

1 2 3 4 5 6 7 8<br />

Stand: 19. Oktober 2012 72 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.5 Evolutionäre (Genetische) Algorithmen<br />

Fitness: Anzahl <strong>der</strong> Damenpaare, <strong>die</strong> sich nicht gegenseitig bedrohen. Im schlechtesten Fall bedrohen<br />

sich alle Paare gegenseitig, und <strong>die</strong> Fitness ist daher 0. Im besten Fall (Optimum,<br />

Ziel) s<strong>in</strong>d <strong>die</strong>s alle Damenpaare (ke<strong>in</strong>e Dame bedroht e<strong>in</strong>e an<strong>der</strong>e). Der Wert hierfür ist<br />

(<br />

n<br />

2<br />

)<br />

= n∗(n−1)<br />

2<br />

.<br />

Operationen: Mutation än<strong>der</strong>t e<strong>in</strong>en E<strong>in</strong>trag <strong>in</strong> <strong>der</strong> Folge auf e<strong>in</strong>en beliebigen Wert zwischen 1<br />

und n. Dies entspricht gerade dem Verschieben e<strong>in</strong>er e<strong>in</strong>zelnen Dame <strong>in</strong> <strong>der</strong> entsprechenden<br />

Zeile.<br />

Z.B. entspricht <strong>die</strong> Mutation des Individuums [3,2,4,2,7,6,8,5] zum [3,2,4,2,7,1,8,5] gerade<br />

<strong>der</strong> folgenden Bewegung:<br />

H<br />

G<br />

F<br />

E<br />

D<br />

C<br />

B<br />

A<br />

H<br />

G<br />

F<br />

E<br />

D<br />

C<br />

B<br />

A<br />

1 2 3 4 5 6 7 8<br />

1 2 3 4 5 6 7 8<br />

Rekomb<strong>in</strong>ation entspricht gerade dem horizontalen Teilen <strong>der</strong> zwei Schachfel<strong>der</strong>. Z.B. beim<br />

8-Damenproblem und den Individuen [3,2,4,2,7,6,8,5] und [1,5,8,3,6,2,7,2] ensteht durch<br />

Rekomb<strong>in</strong>ation mit Schnitt <strong>in</strong> <strong>der</strong> Mitte das Individuum [3,2,4,2,6,2,7,2]:<br />

H<br />

G<br />

F<br />

E<br />

D<br />

C<br />

B<br />

A<br />

H<br />

G<br />

F<br />

E<br />

D<br />

C<br />

B<br />

A<br />

H<br />

G<br />

F<br />

E<br />

D<br />

C<br />

B<br />

A<br />

1 2 3 4 5 6 7 8<br />

1 2 3 4 5 6 7 8<br />

1 2 3 4 5 6 7 8<br />

Da man jedoch beim Damespiel schon weiß, das Zustände mit doppelten Zahlen <strong>in</strong> <strong>der</strong> Folge<br />

nicht gültig s<strong>in</strong>d kann man alternativ wie folgt ko<strong>die</strong>ren:<br />

Man lässt nur Permutationen <strong>der</strong> Zahlen von 1 bis n als Individuen zu. Als Mutationsoperator<br />

verwendet man das Austauschen zweier Zahlen, Die Rekomb<strong>in</strong>ation sche<strong>in</strong>t für <strong>die</strong>se Ko<strong>die</strong>rung<br />

wenig s<strong>in</strong>nvoll, da sie im Allgeme<strong>in</strong>en ke<strong>in</strong>en gültigen Individuen erzeugt. Wenn man sie verwendet,<br />

sollte man verh<strong>in</strong><strong>der</strong>n, dass verbotene Individuen entstehen:<br />

1. großer negativer Wert <strong>der</strong> Fitnessfunktion<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 73 Stand: 19. Oktober 2012


2 Suchverfahren<br />

2. sofortiges Aussterben<br />

3. determ<strong>in</strong>istische o<strong>der</strong> zufällige Abän<strong>der</strong>ung des Individuums <strong>in</strong> e<strong>in</strong> erlaubtes<br />

E<strong>in</strong>e beispielhafte Verän<strong>der</strong>ung e<strong>in</strong>er Population für das 5-Damenproblem, wobei <strong>die</strong> Population<br />

nur aus 1-2 Elementen besteht:<br />

Population {[3, 2, 1, 4, 5]}<br />

Fitness ϕ([3, 2, 1, 4, 5]) = 4<br />

Mutationen [3, 2, 1, 4, 5] → [5, 2, 1, 4, 3]; [3, 2, 1, 4, 5] → [3, 4, 1, 2, 5]<br />

Population {[5, 2, 1, 4, 3], [3, 4, 1, 2, 5]}<br />

Bewertung ϕ([5, 2, 1, 4, 3]) = 6, ϕ([3, 4, 1, 2, 5]) = 6<br />

Mutationen [3, 4, 1, 2, 5] → [2, 5, 1, 4, 3], [5, 2, 1, 4, 3] → [5, 2, 4, 1, 3]<br />

Population {[5, 2, 1, 4, 3], [3, 4, 1, 2, 5], [2, 5, 1, 4, 3], [5, 2, 4, 1, 3]}<br />

Bewertung ϕ([2, 5, 1, 4, 3]) = 8, ϕ([5, 2, 4, 1, 3]) = 10<br />

Selektion {[2, 5, 1, 4, 3], [5, 2, 4, 1, 3]}<br />

Die Ko<strong>die</strong>rung [5, 2, 4, 1, 3] ist e<strong>in</strong>e Lösung.<br />

Re<strong>in</strong>e Mutationsverän<strong>der</strong>ungen s<strong>in</strong>d analog zu Bergsteigen und Best-First.<br />

2.5.2.1 Bemerkungen zu evolutionären Algorithmen:<br />

Wesentliche Unterschiede zu Standardsuchverfahren<br />

• Evolutionäre Algorithmen benutzen Co<strong>die</strong>rungen <strong>der</strong> Lösungen<br />

• Evolutionäre Algorithmen benutzen e<strong>in</strong>e Suche, <strong>die</strong> parallel ist und auf e<strong>in</strong>er Menge<br />

von Lösungen basiert.<br />

• Evolutionäre Algorithmen benutzen nur <strong>die</strong> Zielfunktion zum Optimieren<br />

• Evolutionäre Algorithmen benutzen probabilistische Übergangsregeln. Der Suchraum<br />

wird durchkämmt mit stochastischen <strong>Methoden</strong>.<br />

E<strong>in</strong>e gute Ko<strong>die</strong>rung erfor<strong>der</strong>t annähernde Stetigkeit. D.h. es sollte e<strong>in</strong>en annähernd stetigen<br />

Zusammenhang zwischen Bitfolge und Fitnessfunktion geben. D.h. optimale Lösungen<br />

s<strong>in</strong>d nicht s<strong>in</strong>guläre Punkte, son<strong>der</strong>n man kann sie durch Herantasten über gute,<br />

suboptimale Lösungen erreichen.<br />

Damit Crossover zur Optimierung wesentlich beiträgt, muss es e<strong>in</strong>en (vorher meist unbekannten)<br />

Zusammenhang geben zwischen Teilfolgen <strong>in</strong> <strong>der</strong> Ko<strong>die</strong>rung (Gene) und <strong>der</strong>en<br />

Zusammenwirken bei <strong>der</strong> Fitnessfunktion. Es muss so etwas wie „gute Gene “geben,<br />

<strong>der</strong>en Auswirkung auf <strong>die</strong> Fitness e<strong>in</strong>es Individuums sich ebenfalls als gut erweist.<br />

Bauste<strong>in</strong>-Hypothese (Goldberg, 1989) (zur Begründung des Crossover)<br />

(Build<strong>in</strong>g block hypothesis)<br />

Genetische Algorithmen verwenden e<strong>in</strong>fache Chromosomenbauste<strong>in</strong>e und sammeln und<br />

mischen <strong>die</strong>se um <strong>die</strong> eigene Fitness zu optimieren.<br />

Stand: 19. Oktober 2012 74 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.5 Evolutionäre (Genetische) Algorithmen<br />

Hypothese: das Zusammenmischen vieler guter (kle<strong>in</strong>er) Bauste<strong>in</strong>e ergibt das fitteste Individuum<br />

2.5.2.2 Parameter e<strong>in</strong>er Implementierung<br />

Es gibt viele Varianten und Parameter, <strong>die</strong> man bei genetischen/evolutionären Algorithmen<br />

verän<strong>der</strong>n kann.<br />

• Welche Operatoren werden verwendet? (Mutation, Crossover, ...)<br />

• Welche Wahrsche<strong>in</strong>lichkeiten werden <strong>in</strong> den Operatoren verwendet? Wahrsche<strong>in</strong>lichkeit<br />

e<strong>in</strong>er Mutation, usw.<br />

• Welcher Zusammenhang soll zwischen Fitnessfunktion und Selektionswahrsche<strong>in</strong>lichkeit<br />

bestehen?<br />

• Wie groß ist <strong>die</strong> Population? Je größer, desto breiter ist <strong>die</strong> Suche angelegt, allerd<strong>in</strong>gs<br />

dauert es dann auch länger.<br />

• Werden Individuen ersetzt o<strong>der</strong> dürfen sie weiterleben?<br />

• Gibt es Kopien von Individuen <strong>in</strong> <strong>der</strong> Population?<br />

• ...<br />

2.5.3 Statistische Analyse von Genetischen Algorithmen<br />

Vere<strong>in</strong>fachende Annahme: Fitness = Wahrsche<strong>in</strong>lichkeit, dass e<strong>in</strong> Individuum 1 Nachkommen<br />

<strong>in</strong> <strong>der</strong> nächsten Generation hat.<br />

Es soll <strong>die</strong> Frage untersucht werden: „wie wächst <strong>die</strong> Häufigkeit e<strong>in</strong>zelner Gene?“ von<br />

Generation zu Generation?<br />

D.h. wie ist <strong>die</strong> „genetische Drift“?<br />

Sei S <strong>die</strong> Menge <strong>der</strong> Individuen, <strong>die</strong> e<strong>in</strong> bestimmtes Gen G enthält.<br />

Die „Schema-theorie“ stellt <strong>die</strong>se mittels e<strong>in</strong>es Schemas dar:<br />

z.B. durch [∗ ∗ ∗ ∗ 1 0 1 0 1 ∗ ∗ ∗ ∗]. Die Folge 1 0 1 0 1 <strong>in</strong> <strong>der</strong> Mitte kann man als geme<strong>in</strong>sames<br />

Gen <strong>der</strong> Unterpopulation S ansehen. Die ebenfalls vere<strong>in</strong>fachende Annahme ist, dass das<br />

Gen vererbt wird: <strong>die</strong> Wahrsche<strong>in</strong>lichkeit <strong>der</strong> Zerstörung muss ger<strong>in</strong>g se<strong>in</strong>.<br />

Sei p() <strong>die</strong> Fitnessfunktion (und Wahrsche<strong>in</strong>lichkeit für Nachkommen), wobei man<br />

<strong>die</strong>se auch auf Mengen anwenden darf, und <strong>in</strong> <strong>die</strong>sem Fall <strong>die</strong> Fitness aller Individuen<br />

summiert wird. Sei V <strong>die</strong> Gesamtpopulation.<br />

Der Erwartungswert <strong>der</strong> Anzahl <strong>der</strong> Nachkommen aus <strong>der</strong> Menge S ist, wenn man<br />

annimmt, dass |V | mal unabhängig e<strong>in</strong> Nachkomme ermittelt wird.<br />

p(s 1 ) ∗ |V | + . . . + p(s |S| ) ∗ |V | = p(S) ∗ |V |<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 75 Stand: 19. Oktober 2012


2 Suchverfahren<br />

Verbreitung tritt e<strong>in</strong>, wenn p(S) ∗ |V | > |S|, d.h. wenn p(S)<br />

|S|<br />

mittlere Wahrsche<strong>in</strong>lichkeit <strong>in</strong> <strong>der</strong> Menge |S| erhöht ist:<br />

> 1/|V | ist. D.h. wenn <strong>die</strong><br />

p(S)<br />

|S|<br />

> 1/|V |<br />

Damit kann man p(S) als Wachstumsfaktor <strong>der</strong> Menge S ansehen. Wenn <strong>die</strong>ser Vorteil<br />

|S|<br />

<strong>in</strong> <strong>der</strong> nächsten Generation erhalten bleibt, dann verbreitet sich <strong>die</strong>ses Gen exponentiell.<br />

Es tritt aber e<strong>in</strong>e Sättigung e<strong>in</strong>, wenn sich das Gen schon ausgebreitet hat. Analog ist das<br />

Aussterben von schlechten Genen exponentiell.<br />

E<strong>in</strong>e etwas an<strong>der</strong>e Analyse ergibt sich, wenn man annimmt, dass über <strong>die</strong> Generationen<br />

<strong>die</strong> Fitness a <strong>der</strong> S-Individuen konstant ist, ebenso wie <strong>die</strong> Fitness b <strong>der</strong> Individuen <strong>in</strong> V \<br />

S. Dann erhält man <strong>die</strong> Nachkommenswahrsche<strong>in</strong>lichkeit durch Normierung <strong>der</strong> Fitness<br />

auf 1. Wir nehmen an, dass S t <strong>die</strong> Menge <strong>der</strong> Individuen zum Gen S <strong>in</strong> <strong>der</strong> Generation t<br />

ist.<br />

Das ergibt<br />

p S :=<br />

a<br />

a ∗ |S t | + b ∗ (|V | − |S t |)<br />

Damit ist <strong>der</strong> Erwartungswert für |S t+1 |:<br />

|S t+1 | =<br />

a ∗ |S t |<br />

a ∗ |S t | + b ∗ (|V | − |S t |) ∗ |V |<br />

Wenn wir r(S, t) für den relativen Anteil von S schreiben, dann erhalten wir:<br />

|r(S, t + 1)| =<br />

a<br />

∗ r(S, t).<br />

a ∗ r(S, t) + b ∗ (1 − r(S, t))<br />

Beispiel 2.5.2. Wählt man als Wert a = 2b, dann erhält man als Funktion<br />

und Kurve für <strong>die</strong> Anteile, wenn man mit 0, 1 startet<br />

2r , folgende Werte<br />

r + 1<br />

t 1 2 3 4 5 6 7 8 9 10 11<br />

r(S, t) 0, 1 0, 18 0, 31 0, 47 0, 64 0, 78 0, 88 0, 93 0, 97 0, 98 0, 99<br />

Stand: 19. Oktober 2012 76 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.5 Evolutionäre (Genetische) Algorithmen<br />

2.5.4 Anwendungen<br />

Man kann evolutionäre Algorithmen verwenden für Optimierungen von komplexen Problemstellungen,<br />

<strong>die</strong><br />

• ke<strong>in</strong>en e<strong>in</strong>fachen Lösungs- o<strong>der</strong> Optimierungsalgorithmus haben,<br />

• bei denen man relativ leicht sagen kann, wie gut <strong>die</strong>se Lösungen s<strong>in</strong>d<br />

• <strong>die</strong> nicht <strong>in</strong> Echt-Zeit lösbar se<strong>in</strong> müssen, d.h. man hat ausreichend (Rechen-)Zeit<br />

um zu optimieren.<br />

• bei denen man aus e<strong>in</strong>er (bzw. zwei) (Fast-)Lösungen neue Lösungen generieren<br />

kann.<br />

• wenn man <strong>die</strong> Problemstellung leicht mit weiteren Parametern versehen will, und<br />

trotzdem noch optimieren können will.<br />

Beispiele:<br />

Handlungsreisenden-Problem.<br />

Es gibt verschiedene Ko<strong>die</strong>rung, und viele Operatoren, <strong>die</strong> untersucht wurden. Die<br />

e<strong>in</strong>fachste ist e<strong>in</strong>e Ko<strong>die</strong>rung als Folge <strong>der</strong> besuchten Städte. Die Fitnessfunktion ist<br />

<strong>die</strong> Weglänge (evtl. negativ).<br />

Mutationen, <strong>die</strong> gültige Individuen (Wege) erzeugen soll, braucht Reparaturmechanismen.<br />

Man kann e<strong>in</strong>en algorithmischen Schritt dazwischen schalten, <strong>der</strong> lokale<br />

Optimierungen erlaubt, z.B. kann man alle benachbarten Touren prüfen, <strong>die</strong> sich<br />

von <strong>der</strong> zu optimierenden Tour nur um 2 Kanten unterscheiden.<br />

E<strong>in</strong> vorgeschlagener Operator ist z.B. das partielle Invertieren: Man wählt zwei<br />

Schnittpunkte <strong>in</strong> e<strong>in</strong>er gegebenen Tour aus, und <strong>in</strong>vertiert e<strong>in</strong>e <strong>der</strong> Teiltouren mit<br />

anschließen<strong>der</strong> Reparatur.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 77 Stand: 19. Oktober 2012


2 Suchverfahren<br />

Ähnliches Bemerkungen wie für Mutation gelten für Crossover, das e<strong>in</strong>e neue Tour<br />

aus Teiltouren an<strong>der</strong>er Touren <strong>der</strong> Population zusammensetzt.<br />

Operations Research-Probleme: Schedul<strong>in</strong>gprobleme, Tourenplanung.<br />

SAT (Erfüllbarkeit von aussagenlogischen Formeln)<br />

Bei SAT kann man <strong>die</strong> Interpretation als Bitstr<strong>in</strong>g ko<strong>die</strong>ren: Man nimmt e<strong>in</strong>e feste<br />

Reihenfolge <strong>der</strong> Aussagenvariablen und schreibt im Bitstr<strong>in</strong>g <strong>die</strong> Belegung mit 0/1<br />

h<strong>in</strong>. Mutation und Crossover erzeugen immer gültige Individuen. Als Fitnessfunktion<br />

kann man <strong>die</strong> Anzahl <strong>der</strong> wahren Klauseln nehmen.<br />

Optimale Verteilung <strong>der</strong> Studenten auf Prosem<strong>in</strong>are (Bachelor-Sem<strong>in</strong>are). Dies wird im<br />

Institut mit e<strong>in</strong>em evolutionären Algorithmus optimiert (geschrieben von Herrn<br />

Björn Weber)<br />

2.5.5 Transportproblem als Beispiel<br />

Wir betrachten als Beispiel e<strong>in</strong> e<strong>in</strong>faches Transportproblem mit 3 Lagern L 1 , L 2 , L 3 von<br />

Waren und 4 Zielpunkten Z 1 , . . . , Z 4 . 4 . Man kennt <strong>die</strong> Kosten für den Transport von Waren<br />

von L i nach Z i pro E<strong>in</strong>heit.<br />

Folgende Daten s<strong>in</strong>d gegeben:<br />

Lagerbestand<br />

L 1 L 2 L 3<br />

15 25 5<br />

Warenwünsche<br />

Z 1 Z 2 Z 3 Z 4<br />

5 15 15 10<br />

Die Wünsche s<strong>in</strong>d erfüllbar. E<strong>in</strong> Bild ist:<br />

15 25 5<br />

5? 15? 15? 10?<br />

Die Kosten pro E<strong>in</strong>heit s<strong>in</strong>d:<br />

Z 1 Z 2 Z 3 Z 4<br />

L 1 10 0 20 11<br />

L 2 12 7 9 20<br />

L 3 0 14 16 18<br />

4 siehe (Michalewicz, 1992)<br />

Stand: 19. Oktober 2012 78 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


2.5 Evolutionäre (Genetische) Algorithmen<br />

E<strong>in</strong>e optimale Lösung ist:<br />

5 15 15 10<br />

15 0 5 0 10<br />

25 0 10 15 0<br />

5 5 0 0 0<br />

Die Kosten s<strong>in</strong>d:<br />

5 ∗ 0 + 10 ∗ 11 + 10 ∗ 7 + 15 ∗ 9 + 5 ∗ 0 = 315<br />

Will man das Problem mittels evolutionärer Algorithmen lösen, so kann man verschiedene<br />

Ko<strong>die</strong>rungen wählen.<br />

1. Nehme <strong>die</strong> Lösungsmatrix als Ko<strong>die</strong>rung.<br />

2. Nehme e<strong>in</strong>e Matrix <strong>der</strong> gleichen Dimension wie <strong>die</strong> Lösungsmatrix, Prioritäten<br />

1,2,3,. . . als E<strong>in</strong>träge.<br />

Als Fitnessfunktion wählt man <strong>die</strong> Kosten (bzw. negativen Kosten: Ersparnisse).<br />

1. hat den Vorteil, dass man e<strong>in</strong>e exakte Ko<strong>die</strong>rung hat. Allerd<strong>in</strong>gs weiss man bei <strong>die</strong>sem<br />

Problem, dass man <strong>die</strong> billigsten Fuhren zuerst nehmen kann, so dass man<br />

damit evtl. Lösungen variiert, <strong>die</strong> man mit etwas E<strong>in</strong>sicht <strong>in</strong> das Problem als äquivalent<br />

ansehen kann. Als Bed<strong>in</strong>gung hat man noch, dass es ke<strong>in</strong>e negativen Werte<br />

geben soll und dass <strong>die</strong> Spaltensummen den Wünschen entsprechen sollen, <strong>die</strong> Zeilensummen<br />

sollen nicht größer se<strong>in</strong> als <strong>der</strong> jeweilige Lagerbestand.<br />

2. hat den Vorteil, dass alle Ko<strong>die</strong>rung gültig s<strong>in</strong>d und man das Wissen über das Problem<br />

nutzt. Aus den Prioritäten wird nach folgendem festgelegten Schema e<strong>in</strong>e Lösung<br />

berechnet: zunächst wird <strong>die</strong> Fuhre mit <strong>der</strong> Priorität 1 so voll wie möglich gemacht.<br />

Danach unter Beachtung, dass schon geliefert wurde, <strong>die</strong> Fuhre mit Priorität<br />

2. usw. Hierbei verliert man ke<strong>in</strong>e optimalen Lösungen. Zudem kann man leichter<br />

neue Ko<strong>die</strong>rungen erzeugen.<br />

E<strong>in</strong>e Ko<strong>die</strong>rung entspricht e<strong>in</strong>er Permutation <strong>der</strong> 12 Matrixe<strong>in</strong>träge, <strong>die</strong> als Folge<br />

von 12 Zahlen geschrieben werden kann.<br />

Mutation <strong>in</strong> 1. : verschiebe e<strong>in</strong>e Warene<strong>in</strong>heit auf e<strong>in</strong>e an<strong>der</strong>e Fuhre. Hierbei kann aber<br />

e<strong>in</strong>e ungültige Lösung entstehen. Crossover: unklar.<br />

Mutation <strong>in</strong> 2) : permutiere <strong>die</strong> Folge durch Austausch von 2 Prioritäten. Hierbei entsteht<br />

e<strong>in</strong>e gültige Ko<strong>die</strong>rung.<br />

Inversion: <strong>in</strong>vertiere <strong>die</strong> Reihenfolge <strong>der</strong> Prioritäten:<br />

Crossover: Wähle zwei Permutation p 1 , p 2 aus <strong>der</strong> Population aus, und wähle aus p 1 e<strong>in</strong><br />

Unterfolge aus. Entferne aus p 2 <strong>die</strong> Prioritäten, <strong>die</strong> <strong>in</strong> p 2 vorkommen, ergibt Folge<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 79 Stand: 19. Oktober 2012


2 Suchverfahren<br />

p ′ 2 . Dann setze <strong>die</strong> Prioritäten an den freien Stellen <strong>in</strong> p′ 2 wie<strong>der</strong> e<strong>in</strong>.<br />

Alternativ (aber ohne bezug: setze <strong>die</strong> Prioritäten an irgendwelchen Stellen wie<strong>der</strong><br />

e<strong>in</strong>.<br />

2.5.6 Schlußbemerkungen<br />

Bemerkung 2.5.3. Es gibt generische Programme, <strong>die</strong> <strong>die</strong> Berechnung <strong>der</strong> Generationen usw.<br />

bereits ausführen, und denen man nur noch <strong>die</strong> Ko<strong>die</strong>rung <strong>der</strong> Problemstellung geben muss, <strong>die</strong><br />

Ko<strong>die</strong>rung <strong>der</strong> Operatoren und <strong>die</strong> Parameter.<br />

Es gibt auch verschiedene e<strong>in</strong>gebettete implementierte Anwendungen<br />

Bemerkung 2.5.4. Für komplexe Probleme und <strong>der</strong>en Optimierung gilt <strong>die</strong> Heuristik: mit e<strong>in</strong>em<br />

Evolutionären Algorithmus kann man immer ganz brauchbar verbessern, wenn man wenig über<br />

<strong>die</strong> Struktur und Eigenschaft <strong>der</strong> Problemklasse sagen kann.<br />

Aber sobald man sich mit <strong>der</strong> Problemklasse genauer beschäftigt und experimentiert, wird e<strong>in</strong><br />

Optimierungsalgorithmus <strong>in</strong>formierter se<strong>in</strong>, und sich mehr und mehr zu e<strong>in</strong>em eigenständigen<br />

Verfahren entwickeln, das bessere Ergebnisse produziert als allgeme<strong>in</strong>e Ansätze mit evolutionären<br />

Algorithmen.<br />

Probleme <strong>der</strong> genetischen/evolutionären Algorithmen ist <strong>die</strong> möglicherweise sehr lange Laufzeit<br />

Man braucht mehrere Durchläufe, bis man e<strong>in</strong>e gute EInstellung <strong>der</strong> Parameter gefunden hat.<br />

Auch problematisch ist, dass unklar ist, wann man mit Erfolg aufhören kann und wie nahe man<br />

e<strong>in</strong>em Optimum ist.<br />

Stand: 25. November 2012 80 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3<br />

Aussagenlogik<br />

In <strong>die</strong>sem Kapitel werden <strong>die</strong> Aussagenlogik und dort angesiedelte Deduktionsverfahren<br />

erörtern, und zeigen, wie <strong>die</strong>se (relativ e<strong>in</strong>fache) Logik verwendet werden kann, um<br />

<strong>in</strong>telligente Schlüsse zu ziehen und Entscheidungsverfahren zu implementieren. Bereits<br />

<strong>in</strong> Kapitel 1 haben wir <strong>in</strong> Abschnitt 1.4.2 <strong>die</strong> Wissenrepräsentationshypothese nach Brian<br />

Smith erörtert. Wir wie<strong>der</strong>holen sie an <strong>die</strong>ser Stelle, da sie als Paradigma <strong>in</strong>sbeson<strong>der</strong>e<br />

<strong>die</strong>ses Kapitel motiviert:<br />

„Die Verarbeitung von Wissen lässt sich trennen <strong>in</strong>: Repräsentation von Wissen,<br />

wobei <strong>die</strong>ses Wissen e<strong>in</strong>e Entsprechung <strong>in</strong> <strong>der</strong> realen Welt hat; und <strong>in</strong><br />

e<strong>in</strong>en Inferenzmechanismus, <strong>der</strong> Schlüsse daraus zieht.“<br />

Diese Hypothese ist <strong>die</strong> Basis für solche Programme, <strong>die</strong> Faken, Wissen, Beziehung<br />

modellieren und entsprechende Operationen (und Simulationen) darauf aufbauen. E<strong>in</strong><br />

Repräsentations- und Inferenz-System besteht, abstrakt gesehen dabei aus den Komponenten:<br />

Formale Sprache, <strong>die</strong> <strong>die</strong> syntaktisch gültigen Formeln und Anfragen festegt, Semantik<br />

<strong>der</strong> den Sätzen <strong>der</strong> formalen Sprache e<strong>in</strong>e bedeutung zuweist, und <strong>der</strong> Inferenzprozedur<br />

(operationale Semantik), <strong>die</strong> (algorithmisch) angibt, wie man Schlüsse aus <strong>der</strong> gegebenen<br />

Wissensbasis ziehen kann. Die Inferenzen müssen korrekt bezüglich <strong>der</strong> Semantik<br />

se<strong>in</strong>. Die Korrektheit e<strong>in</strong>e solchen Systems kann geprüft werden, <strong>in</strong>dem man nachweist,<br />

dass <strong>die</strong> operationale Semantik <strong>die</strong> Semantik erhält.<br />

Die Implementierung des Repräsentations- und Inferenz-Systems besteht im Allgeme<strong>in</strong>en<br />

aus e<strong>in</strong>em Parser für <strong>die</strong> Erkennung <strong>der</strong> Syntax (<strong>der</strong> formalen Sprache) und <strong>der</strong> Implementierung<br />

<strong>der</strong> Inferenzprozedur.<br />

Stand: 25. November 2012 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3 Aussagenlogik<br />

3.1 Syntax und Semantik <strong>der</strong> Aussagenlogik<br />

Die Aussagenlogik ist <strong>in</strong> vielen an<strong>der</strong>en Logiken enthalten; sie hat e<strong>in</strong>fache verstehbare<br />

Inferenzmethoden, man kann e<strong>in</strong>fache Beispiele modellhaft <strong>in</strong> <strong>der</strong> Aussagenlogik betrachten.<br />

Bei <strong>der</strong> Verallgeme<strong>in</strong>erung auf Prädikatenlogik und an<strong>der</strong>e Logiken startet man<br />

meist auf <strong>der</strong> Basis <strong>der</strong> Aussagenlogik.<br />

Wir werden <strong>in</strong> <strong>die</strong>sem Kapitel detailliert auf Aussagenlogik, Kalküle und Eigenschaften<br />

e<strong>in</strong>gehen. Das Ziel dabei ist jeweils, vere<strong>in</strong>fachte Varianten von allgeme<strong>in</strong>en Verfahren<br />

zum Schlussfolgern zu verstehen, damit man e<strong>in</strong>en E<strong>in</strong>blick <strong>in</strong> <strong>die</strong> Wirkungsweise von<br />

Inferenzverfahren für Prädikatenlogik und an<strong>der</strong>e Logiken gew<strong>in</strong>nt. Ziel ist eher nicht,<br />

optimale und effiziente Verfahren für <strong>die</strong> Aussagenlogik vorzustellen.<br />

Def<strong>in</strong>ition 3.1.1 (Syntax <strong>der</strong> Aussagenlogik). Sei X e<strong>in</strong> Nichtterm<strong>in</strong>al für für aussagenlogische<br />

Variablen (aus e<strong>in</strong>er Menge von abzählbar unendlich vielen Variablen). Die folgende Grammatik<br />

legt <strong>die</strong> Syntax aussagenlogischer Formeln fest:<br />

A ::= X | (A ∧ A) | (A ∨ A) | (¬ A) | (A ⇒ A) | (A ⇔ A) | 0 | 1<br />

Die Konstanten 0 und 1 entsprechen <strong>der</strong> falschen bzw. wahren Aussage. Üblicherweise werden bei<br />

<strong>der</strong> Notation von Aussagen Klammern weggelassen. wobei man <strong>die</strong> Klammerung aus den Prioritäten<br />

<strong>der</strong> Operatoren wie<strong>der</strong> rekonstruieren kann: Die Prioritätsreihenfolge ist: ¬, ∧, ∨, ⇒, ⇐⇒ .<br />

Die Zeichen ∧, ∨, ¬, ⇒, ⇔ nennt man Junktoren. Die Bezeichnungen <strong>der</strong> Junktoren s<strong>in</strong>d:<br />

A ∧ B: Konjunktion (Verundung).<br />

A ∨ B: Disjunktion (Vero<strong>der</strong>ung).<br />

A ⇒ B: Implikation .<br />

A ⇔ B: Äquivalenz (Biimplikation).<br />

¬A: negierte Formel (Negation).<br />

Aussagen <strong>der</strong> Form 0, 1 o<strong>der</strong> x nennen wir Atome. E<strong>in</strong> Literal ist entwe<strong>der</strong> e<strong>in</strong> Atom o<strong>der</strong> e<strong>in</strong>e<br />

Aussage <strong>der</strong> Form ¬A, wobei A e<strong>in</strong> Atom ist.<br />

Oft wählt man aussagekräftige Namen (Bezeichnungen) für <strong>die</strong> Variablen, um<br />

<strong>die</strong> entsprechenden Aussagen auch umgangsprachlich zu verstehen. Z.B. kann man<br />

den Satz „Wenn es heute nicht regnet, gehe ich Fahrradfahren.“ als Aussagenlogische<br />

Formel mit den Variablen esregnetheute und fahrradfahren darstellen als<br />

¬esregnetheute ⇒ fahrradfahren.<br />

Wir lassen auch teilweise e<strong>in</strong>e erweiterte Syntax zu, bei <strong>der</strong> auch noch an<strong>der</strong>e Operatoren<br />

zulässig s<strong>in</strong>d wie: NOR, XOR, NAND.<br />

Dies erweitert nicht <strong>die</strong> Fähigkeit zum H<strong>in</strong>schreiben von logischen Ausdrücken, denn<br />

man kann <strong>die</strong>se Operatoren simulieren. Auch könnte man 0, 1 weglassen, wie wir noch<br />

sehen werden, denn man kann 1 als Abkürzung von A ∨ ¬A, und 0 als Abkürzung von<br />

A ∧ ¬A auffassen.<br />

Stand: 25. November 2012 82 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.1 Syntax und Semantik <strong>der</strong> Aussagenlogik<br />

Def<strong>in</strong>ition 3.1.2 (Semantik <strong>der</strong> Junktoren). Zunächst def<strong>in</strong>iert man für jeden Junktor ¬, ∧, ∨,<br />

⇒ und ⇔ Funktionen {0, 1} → {0, 1} bzw. {0, 1} 2 → {0, 1}. Die Funktion f ¬ ist def<strong>in</strong>iert als<br />

f ¬ (0) = 1, f ¬ (1) = 0. Ebenso def<strong>in</strong>iert man f 0 := 0, f 1 := 1. Die an<strong>der</strong>en Funktionen f op s<strong>in</strong>d<br />

def<strong>in</strong>iert gemäß folgen<strong>der</strong> Tabelle:<br />

∧ ∨ ⇒ ⇐ NOR NAND ⇔ XOR<br />

1 1 1 1 1 1 0 0 1 0<br />

1 0 0 1 0 1 0 1 0 1<br />

0 1 0 1 1 0 0 1 0 1<br />

0 0 0 0 1 1 1 1 1 0<br />

Der E<strong>in</strong>fachheit halber werden oft <strong>die</strong> syntaktischen Symbole auch als Funktionen gedeutet.<br />

Def<strong>in</strong>ition 3.1.3 (Interpretation). E<strong>in</strong>e Interpretation (Variablenbelegung) I ist e<strong>in</strong>e Funktion:<br />

I : {aussagenlogische Variablen} → {0, 1}.<br />

E<strong>in</strong>e Interpretation I def<strong>in</strong>iert für jede Aussage e<strong>in</strong>en Wahrheitswert, wenn man sie auf Aussagen<br />

wie folgt fortsetzt:<br />

• I(0) := 0, I(1) := 1<br />

• I(¬A) := f ¬ (I(A))<br />

• I(A op B) := f op (I(A), I(B)), wobei op ∈ {∧, ∨, ⇒, ⇔ . . .}<br />

E<strong>in</strong>e Interpretation I ist genau dann e<strong>in</strong> Modell für <strong>die</strong> Aussage F , wenn I(F ) = 1 gilt. Ist I e<strong>in</strong><br />

Modell für F so schreiben wir I |= F . Als weitere Sprechweisen verwenden wir <strong>in</strong> <strong>die</strong>sem Fall „F<br />

gilt <strong>in</strong> I“ und „I macht F wahr“.<br />

Aufbauend auf dem Begriff <strong>der</strong> Interpretation, werden <strong>in</strong> <strong>der</strong> Aussagenlogik verschiedene<br />

Eigenschaften von Formeln def<strong>in</strong>iert.<br />

Def<strong>in</strong>ition 3.1.4. Sei A e<strong>in</strong> Aussage.<br />

• A ist genau dann e<strong>in</strong>e Tautologie (Satz, allgeme<strong>in</strong>gültig), wenn für alle Interpretationen<br />

I gilt: I |= A.<br />

• A ist genau dann e<strong>in</strong> Wi<strong>der</strong>spruch (wi<strong>der</strong>sprüchlich, unerfüllbar), wenn für alle Interpretationen<br />

I gilt: I(A) = 0.<br />

• A ist genau dann erfüllbar (konsistent), wenn es e<strong>in</strong>e Interpretation I gibt mit: I |= A<br />

(d.h. wenn es e<strong>in</strong> Modell für A gibt).<br />

• A ist genau dann falsifizierbar, wenn es e<strong>in</strong>e Interpretation I gibt mit I(A) = 0.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 83 Stand: 25. November 2012


3 Aussagenlogik<br />

Man kann jede Aussage <strong>in</strong> den n Variablen X 1 , . . . , X n auch als e<strong>in</strong>e Funktion mit den<br />

n Argumenten X 1 , . . . , X n auffassen. Dies entspricht dann Booleschen Funktionen.<br />

Beispiel 3.1.5. Wir betrachten e<strong>in</strong>ige Beispiele:<br />

• X ∨ ¬X ist e<strong>in</strong>e Tautologie, denn für jede Interpretation I gilt: I(X ∨ ¬X) =<br />

f ∨ (f ¬ (I(X)), I(X)) = 1, da f ¬ (I(X)) o<strong>der</strong> I(X) gleich zu 1 se<strong>in</strong> muss.<br />

• X ∧ ¬X ist e<strong>in</strong> Wi<strong>der</strong>spruch, denn für jede Interpretation I gilt: I(X ∧ ¬X) =<br />

f ∧ (f ∧ (I(X)), I(X)) = 0, da f ¬ (I(X)) o<strong>der</strong> I(X) gleich zu 0 se<strong>in</strong> muss.<br />

• (X ⇒ Y ) ⇒ ((Y ⇒ Z) ⇒ (X ⇒ Z)) ist e<strong>in</strong>e Tautologie.<br />

• X ∨ Y ist erfüllbar. Z.B. ist I mit I(X) = 1, I(Y ) = 1 e<strong>in</strong> Modell für X ∨ Y : I(X ∨ Y ) =<br />

f ∨ (I(X), I(Y )) = f ∨ (1, 1) = 1.<br />

• I mit I(X) = 1, I(Y ) = 0 ist e<strong>in</strong> Modell für X ∧ ¬Y<br />

Beispiel 3.1.6. Bauernregeln:<br />

• „Abendrot Schlechtwetterbot’“ kann man übersetzen <strong>in</strong><br />

Abendrot ⇒ Schlechtes_Wetter. Diese Aussage ist we<strong>der</strong> Tautologie noch Wi<strong>der</strong>spruch, aber<br />

erfüllbar.<br />

• „Wenn <strong>der</strong> Hahn kräht auf dem Mist, än<strong>der</strong>t sich das Wetter o<strong>der</strong> es bleibt wie es ist. “ kann<br />

man übersetzen <strong>in</strong><br />

Hahn_kraeht_auf_Mist ⇒ (Wetteraen<strong>der</strong>ung ∨ ¬Wetteraen<strong>der</strong>ung).<br />

Man sieht, dass das e<strong>in</strong>e Tautologie ist.<br />

Die tautologischen Aussagen s<strong>in</strong>d <strong>in</strong> Bezug auf <strong>die</strong> Wirklichkeit ohne Inhalt. Erst wenn man<br />

sie verwendet zum F<strong>in</strong>den von Folgerungen ergibt sich etwas neues.<br />

Theorem 3.1.7.<br />

• Es ist entscheidbar, ob e<strong>in</strong>e Aussage e<strong>in</strong>e Tautologie (Wi<strong>der</strong>spruch, erfüllbar) ist.<br />

• Die Frage „Ist A erfüllbar?“ ist N P-vollständig.<br />

• Die Frage „Ist A falsifizierbar?“ ist ebenso N P-vollständig.<br />

• Die Frage „Ist A Tautologie?“ ist CoN P-vollständig.<br />

• Die Frage „Ist A e<strong>in</strong> Wi<strong>der</strong>spruch?“ ist CoN P-vollständig.<br />

Das e<strong>in</strong>fachste und bekannteste Verfahren zur Entscheidbarkeit ist das <strong>der</strong> Wahrheitstafeln.<br />

Es werden e<strong>in</strong>fache alle Interpretation ausprobiert.<br />

Zur Erläuterung: N P-vollständig bedeutet, dass jedes Problem <strong>der</strong> Problemklasse mit<br />

e<strong>in</strong>em nicht-determ<strong>in</strong>istischen Verfahren <strong>in</strong> polynomieller Zeit gelöst werden kann, und dass<br />

Stand: 25. November 2012 84 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.2 Folgerungsbegriffe<br />

es ke<strong>in</strong>e bessere obere Schranke gibt (unter <strong>der</strong> allgeme<strong>in</strong> vermuteten Hypothese P ̸=<br />

N P).<br />

E<strong>in</strong>e Problemklasse ist CoN P-vollständig, wenn <strong>die</strong> Problemklasse, <strong>die</strong> aus dem Komplement<br />

gebildet wird, N P-vollständig ist. 1<br />

Sequentielle Algorithmen zur Lösung haben für beide Problemklassen nur<br />

Exponential-Zeit Algorithmen. Genaugenommen ist es e<strong>in</strong> offenes Problem <strong>der</strong> theoretischen<br />

Informatik, ob es nicht bessere sequentielle Algorithmen gibt (d.h. ob P = N P<br />

bzw. P = CoN P gilt).<br />

Die Klasse <strong>der</strong> N P-vollständigen Probleme ist vom praktischen Standpunkt aus leichter<br />

als CoN P-vollständig: Für N P-vollständige Probleme kann man mit Glück (d.h. Raten)<br />

oft schnell e<strong>in</strong>e Lösung f<strong>in</strong>den. Z.B. e<strong>in</strong>e Interpretation e<strong>in</strong>er Formel. Für CoN P-<br />

vollständige Probleme muß man i.a. viele Möglichkeiten testen: Z.B. muß man i.A. alle<br />

Interpretationen e<strong>in</strong>er Formel ausprobieren.<br />

3.2 Folgerungsbegriffe<br />

Man muß zwei verschiedene Begriffe <strong>der</strong> Folgerungen für Logiken unterscheiden:<br />

• semantische Folgerung<br />

• syntaktische Folgerung (Herleitung, Ableitung) mittels e<strong>in</strong>er prozeduralen Vorschrift.<br />

Dies ist meist e<strong>in</strong> nicht-determ<strong>in</strong>istischer Algorithmus (Kalkül), <strong>der</strong> auf Formeln<br />

o<strong>der</strong> auf erweiterten Datenstrukturen operiert. Das Ziel ist i.A. <strong>die</strong> Erkennung<br />

von Tautologien (o<strong>der</strong> Folgerungsbeziehungen).<br />

In <strong>der</strong> Aussagenlogik fallen viele Begriffe zusammen, <strong>die</strong> <strong>in</strong> an<strong>der</strong>en Logiken verschieden<br />

s<strong>in</strong>d. Trotzdem wollen wir <strong>die</strong> Begriffe hier unterscheiden.<br />

1 Üblicherweise werden Problemklassen als Wortproblem über e<strong>in</strong>er formalen Sprache aufgefasst. Die Frage<br />

nach <strong>der</strong> Erfüllbarkeit wäre <strong>in</strong> <strong>die</strong>ser Darstellung <strong>die</strong> Sprache SAT def<strong>in</strong>iert als:<br />

SAT := {F | F ist erfüllbare aussagenlogische Formel }.<br />

Das Wortproblem ist <strong>die</strong> Frage, ob e<strong>in</strong>e gegebene Formel <strong>in</strong> <strong>der</strong> Sprache SAT liegt o<strong>der</strong> nicht.<br />

Die Komplexitätsklasse N P umfasst alle Sprachen, <strong>der</strong>en Wortproblem auf e<strong>in</strong>er nichtdeterm<strong>in</strong>istischen<br />

Tur<strong>in</strong>gmasch<strong>in</strong>e <strong>in</strong> polynomieller Zeit lösbar ist. Die Komplexitätsklasse CoN P ist def<strong>in</strong>iert als:<br />

CoN P := {L | L C ∈ N P}, wobei L C das Komplement <strong>der</strong> Sprache L ist.<br />

Die Sprache UNSAT := {F | F ist Wi<strong>der</strong>spruch} ist e<strong>in</strong>e <strong>der</strong> Sprachen <strong>in</strong> CoN P, da UNSAT C = Alle<br />

Formeln \UNSAT = SAT, und SAT ∈ N P.<br />

E<strong>in</strong> Sprache L ∈ N P ist N P-vollständig, wenn es für jede Sprache L ′ ∈ N P e<strong>in</strong>e Polynomialzeit-<br />

Ko<strong>die</strong>rung R gibt, <strong>die</strong> jedes Wort x ∈ L ′ <strong>in</strong> <strong>die</strong> Sprache L ko<strong>die</strong>rt (d.h. R(x) ∈ L) (<strong>die</strong>s nennt man<br />

auch Polynomialzeitreduktion). Die N P-vollständigen Sprachen s<strong>in</strong>d daher <strong>die</strong> „schwersten“ Probleme<br />

<strong>in</strong> N P.<br />

Analog dazu ist <strong>die</strong> CoN P-Vollständigkeit def<strong>in</strong>iert: E<strong>in</strong>e Sprache L ∈ CoN P ist CoN P-vollständig,<br />

wenn jede an<strong>der</strong>e Sprache aus CoN P <strong>in</strong> Polynomialzeit auf L reduziert werden kann.<br />

Man kann relativ leicht nachweisen, dass sich auch <strong>die</strong> Vollständigkeit mit den Komplementen überträgt,<br />

d.h. dass e<strong>in</strong>e Sprache L genau dann CoN P-vollständig ist, wenn ihr Komplement L C e<strong>in</strong>e N P-<br />

vollständige Sprache ist.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 85 Stand: 25. November 2012


3 Aussagenlogik<br />

Def<strong>in</strong>ition 3.2.1. Sei F e<strong>in</strong>e Menge von (aussagenlogischen) Formeln und G e<strong>in</strong>e weitere Formel.<br />

Wir sagen G folgt semantisch aus F<br />

gdw.<br />

Für alle Interpretationen I gilt: ( wenn für alle Formeln F ∈ F <strong>die</strong> Auswertung<br />

I(F ) = 1 ergibt ) , dann auch I(G) = 1.<br />

An<strong>der</strong>s ausgedrückt: Jedes Modell für alle Formeln aus F ist auch e<strong>in</strong> Modell für G.<br />

Die semantische Folgerung notieren wir auch als F |= G<br />

Wir schreiben auch F 1 , . . . , F n |= G statt {F 1 , . . . , F n } |= G.<br />

Es gilt<br />

Satz 3.2.2. Wenn e<strong>in</strong> F i e<strong>in</strong> Wi<strong>der</strong>spruch ist, dann kann man alles folgern: Es gilt dann für jede<br />

Formel G: F 1 , . . . , F n |= G.<br />

Wenn e<strong>in</strong> F i e<strong>in</strong>e Tautologie ist, dann kann man <strong>die</strong>s <strong>in</strong> den Voraussetzungen weglassen: Es gilt<br />

dann für alle Formeln G: F 1 , . . . , F n |= G ist dasselbe wie F 1 , . . . , F i−1 , F i+1 , . . . , F n |= G<br />

In <strong>der</strong> Aussagenlogik gibt es e<strong>in</strong>e starke Verb<strong>in</strong>dung von semantischer Folgerung mit<br />

Tautologien:<br />

Theorem 3.2.3 (Deduktionstheorem <strong>der</strong> Aussagenlogik).<br />

{F 1 , . . . , F n } |= G gdw. F 1 ∧ . . . ∧ F n ⇒ G ist Tautologie.<br />

Zwei Aussagen F, G nennen wir äquivalent (F ∼ G), gdw. F ⇐⇒ G e<strong>in</strong>e Tautologie<br />

ist. Beachte, dass F und G genau dann äquivalent s<strong>in</strong>d, wenn für alle Interpretationen I<br />

gilt: I |= F gdw. I |= G gilt.<br />

Es ist auch zu beachten, dass z.B. X ∧ Y nicht zu X ′ ∧ Y ′ äquivalent ist. D.h. bei <strong>die</strong>sen<br />

Beziehungen spielen <strong>die</strong> Variablennamen e<strong>in</strong>e wichtige Rolle.<br />

Def<strong>in</strong>ition 3.2.4. Gegeben sei e<strong>in</strong> (nicht-determ<strong>in</strong>istischer) Algorithmus A (e<strong>in</strong> Kalkül), <strong>der</strong> aus<br />

e<strong>in</strong>er Menge von Formeln H e<strong>in</strong>e neue Formel H berechnet, Man sagt auch, dass H syntaktisch<br />

aus H folgt (bezeichnet mit H ⊢ A H o<strong>der</strong> auch H → A H).<br />

• Der Algorithmus A ist korrekt (sound), gdw. aus H ⊢ A H stets H |= H folgt.<br />

• Der Algorithmus A ist vollständig (complete), gdw. H |= H impliziert, dass H ⊢ A H<br />

Aus obigen Betrachtungen folgt, dass es <strong>in</strong> <strong>der</strong> Aussagenlogik für <strong>die</strong> Zwecke <strong>der</strong><br />

Herleitung im Pr<strong>in</strong>zip genügt, e<strong>in</strong>en Algorithmus zu haben, <strong>der</strong> Aussagen auf Tautologieeigenschaft<br />

prüft. Gegeben {F 1 , . . . , F n }, zähle alle Formeln F auf, prüfe, ob<br />

F 1 ∧ . . . ∧ F n ⇒ F e<strong>in</strong>e Tautologie ist, und gebe F aus, wenn <strong>die</strong> Antwort ja ist. Das<br />

funktioniert, ist aber nicht sehr effizient, wegen <strong>der</strong> Aufzählung aller Formeln. Außerdem<br />

kann man immer e<strong>in</strong>e unendliche Menge von Aussagen folgern, da alle Tautologien<br />

immer dabei s<strong>in</strong>d.<br />

Stand: 25. November 2012 86 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.3 Tautologien und e<strong>in</strong>ige e<strong>in</strong>fache Verfahren<br />

Es gibt verschiedene <strong>Methoden</strong>, aussagenlogische Tautologien (o<strong>der</strong> auch erfüllbare<br />

Aussagen) algorithmisch zu erkennen: Z.B. BDDs (b<strong>in</strong>ary decision diagrams) : e<strong>in</strong>e Methode,<br />

Aussagen als Boolesche Funktionen anzusehen und möglichst kompakt zu repräsentieren;<br />

Genetische Algorithmen zur Erkennung erfüllbarer Formeln; Suchverfahren<br />

<strong>die</strong> mit statischer Suche und etwas Zufall und Bewertungsfunktionen operieren; DPLL-<br />

Verfahren: Fallunterscheidung mit Simplifikationen (siehe unten 3.7); Tableaukalkül, <strong>der</strong><br />

Formeln syntaktisch analysiert (analytic tableau) (siehe 3.9).<br />

3.3 Tautologien und e<strong>in</strong>ige e<strong>in</strong>fache Verfahren<br />

Wir wollen im folgenden Variablen <strong>in</strong> Aussagen nicht nur durch <strong>die</strong> Wahrheitswerte 0, 1<br />

ersetzen, son<strong>der</strong>n auch durch Aussagen. Wir schreiben dann A[B/x], wenn <strong>in</strong> <strong>der</strong> Aussage<br />

A <strong>die</strong> Aussagenvariable x durch <strong>die</strong> Aussage B ersetzt wird. In Erweiterung <strong>die</strong>ser<br />

Notation schreiben wir auch: A[B 1 /x 1 , . . . , B n /x n ], wenn mehrere Aussagevariablen ersetzt<br />

werden sollen. Diese E<strong>in</strong>setzung passiert gleichzeitig, so dass <strong>die</strong>s kompatibel zur<br />

Eigenschaft <strong>der</strong> Komposition als Funktionen ist: Wenn A n-stellige Funktion <strong>in</strong> den Aussagevariablen<br />

ist, dann ist A[B 1 /x 1 , . . . , B n /x n ] <strong>die</strong> gleiche Funktion wie A◦(B 1 , . . . , B n ).<br />

Theorem 3.3.1. Gilt A 1 ∼ A 2 und B 1 , . . . , B n s<strong>in</strong>d weitere Aussagen, dann gilt auch<br />

A 1 [B 1 /x 1 , . . . , B n /x n ] ∼ A 2 [B 1 /x 1 , . . . , B n /x n ].<br />

Beweis. Man muß zeigen, dass alle Zeilen <strong>der</strong> Wahrheitstafeln für <strong>die</strong> neuen Ausdrücke<br />

gleich s<strong>in</strong>d. Seien y 1 , . . . , y m <strong>die</strong> Variablen. Den Wert e<strong>in</strong>er Zeile kann man berechnen,<br />

<strong>in</strong>dem man zunächst <strong>die</strong> Wahrheitswerte für B i berechnet und dann <strong>in</strong> <strong>der</strong> Wahrheitstabelle<br />

von A i nachschaut. Offenbar erhält man für beide Ausdrücke jeweils denselben<br />

Wahrheitswert.<br />

Theorem 3.3.2. S<strong>in</strong>d A, B äquivalente Aussagen, und F e<strong>in</strong>e weitere Aussage, dann s<strong>in</strong>d F [A]<br />

und F [B] ebenfalls äquivalent. 2<br />

Die Junktoren ∧ und ∨ s<strong>in</strong>d kommutativ, assoziativ, und idempotent, d.h. es gilt:<br />

F ∧ G ⇐⇒ G ∧ F<br />

F ∧ F ⇐⇒ F<br />

F ∧ (G ∧ H) ⇐⇒ (F ∧ G) ∧ H<br />

F ∨ G ⇐⇒ G ∨ F<br />

F ∨ (G ∨ H) ⇐⇒ (F ∨ G) ∨ H<br />

F ∨ F ⇐⇒ F<br />

Weiterh<strong>in</strong> gibt es für Aussagen noch Rechenregeln und Gesetze, <strong>die</strong> wir im folgenden<br />

auflisten wollen. Alle lassen sich mit Hilfe <strong>der</strong> Wahrheitstafeln beweisen, allerd<strong>in</strong>gs erweist<br />

sich das bei steigen<strong>der</strong> Variablenanzahl als mühevoll, denn <strong>die</strong> Anzahl <strong>der</strong> Überprü-<br />

2 Hierbei ist F [B] <strong>die</strong> Aussage, <strong>die</strong> dadurch entsteht, dass <strong>in</strong> F <strong>die</strong> Subaussage A durch B ersetzt wird.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 87 Stand: 25. November 2012


3 Aussagenlogik<br />

fungen ist 2 n wenn n <strong>die</strong> Anzahl <strong>der</strong> Aussagenvariablen ist. Die Frage nach dem maximal<br />

nötigen Aufwand (<strong>in</strong> Abhängigkeit von <strong>der</strong> Größe <strong>der</strong> Aussagen) für <strong>die</strong> Bestimmung,<br />

ob e<strong>in</strong>e Aussage erfüllbar ist, ist e<strong>in</strong> berühmtes offenes Problem <strong>der</strong> (theoretischen) Informatik,<br />

das SAT ∈ P-Problem, dessen Lösung weitreichende Konsequenzen hätte, z.B.<br />

würde P = N P daraus folgen. Im Moment geht man davon aus, dass <strong>die</strong>s nicht gilt.<br />

Lemma 3.3.3 (Äquivalenzen).<br />

¬(¬A)) ⇐⇒ A<br />

(A ⇒ B) ⇐⇒ (¬A ∨ B)<br />

(A ⇐⇒ B) ⇐⇒ ((A ⇒ B) ∧ (B ⇒ A))<br />

¬(A ∧ B) ⇐⇒ ¬A ∨ ¬B (DeMorgansche Gesetze)<br />

¬(A ∨ B) ⇐⇒ ¬A ∧ ¬B<br />

A ∧ (B ∨ C) ⇐⇒ (A ∧ B) ∨ (A ∧ C) Distributivität<br />

A ∨ (B ∧ C) ⇐⇒ (A ∨ B) ∧ (A ∨ C) Distributivität<br />

(A ⇒ B) ⇐⇒ (¬B ⇒ ¬A) Kontraposition<br />

A ∨ (A ∧ B) ⇐⇒ A Absorption<br />

A ∧ (A ∨ B) ⇐⇒ A Absorption<br />

Diese Regeln s<strong>in</strong>d nach Satz 3.3.1 nicht nur verwendbar, wenn A, B, C Aussagevariablen<br />

s<strong>in</strong>d, son<strong>der</strong>n auch, wenn A, B, C für Aussagen stehen.<br />

3.4 Normalformen<br />

Für Aussagen <strong>der</strong> Aussagenlogik gibt es verschiedene Normalformen. U.a. <strong>die</strong> disjunktive<br />

Normalform (DNF) und <strong>die</strong> konjunktive Normalform (CNF): Die letzte nennt man auch<br />

Klauselnormalform.<br />

• disjunktive Normalform (DNF). Die Aussage ist e<strong>in</strong>e Disjunktion von Konjunktionen<br />

von Literalen. D.h. von <strong>der</strong> Form<br />

wobei L i,j Literale s<strong>in</strong>d.<br />

(L 1,1 ∧ . . . ∧ L 1,n1 ) ∨ . . . ∨ (L m,1 ∧ . . . ∧ L m,nm )<br />

• konjunktive Normalform (CNF). Die Aussage ist e<strong>in</strong>e Konjunktion von Disjunktionen<br />

von Literalen. D.h. von <strong>der</strong> Form<br />

wobei L i,j Literale s<strong>in</strong>d.<br />

(L 1,1 ∨ . . . ∨ L 1,n1 ) ∧ . . . ∧ (L m,1 ∨ . . . ∨ L m,nm )<br />

Die Klauselnormalform wird oft als Menge von Mengen notiert und auch behandelt.<br />

Dies ist gerechtfertigt, da sowohl ∧ als auch ∨ assoziativ, kommutativ und idempotent<br />

Stand: 25. November 2012 88 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.4 Normalformen<br />

s<strong>in</strong>d, so dass Vertauschungen und e<strong>in</strong> Weglassen <strong>der</strong> Klammern erlaubt ist. Wichtig ist<br />

<strong>die</strong> Idempotenz, <strong>die</strong> z.B. erlaubt, e<strong>in</strong>e Klausel {A, B, A, C} als unmittelbar äquivalent zur<br />

Klausel {A, B, C} zu betrachten. E<strong>in</strong>e Klausel mit e<strong>in</strong>em Literal bezeichnet man auch als<br />

1-Klausel (Unit-Klausel). E<strong>in</strong>e Klausel (<strong>in</strong> Mengenschreibweise) ohne Literale wird als leere<br />

Klausel bezeichnet. Diese ist äquivalent zu 0, dem Wi<strong>der</strong>spruch.<br />

Lemma 3.4.1. E<strong>in</strong>e Klausel C ist genau dann e<strong>in</strong>e Tautologie, wenn es e<strong>in</strong>e Variable A gibt, so<br />

dass sowohl A als auch ¬A <strong>in</strong> <strong>der</strong> Klausel vorkommen<br />

Beweis. Übungsaufgabe.<br />

Es gilt:<br />

Lemma 3.4.2. Zu je<strong>der</strong> Aussage kann man e<strong>in</strong>e äquivalente CNF f<strong>in</strong>den und ebenso e<strong>in</strong>e äquivalente<br />

DNF. Allerd<strong>in</strong>gs nicht <strong>in</strong> e<strong>in</strong>deutiger Weise.<br />

Lemma 3.4.3.<br />

• E<strong>in</strong>e Aussage <strong>in</strong> CNF kann man <strong>in</strong> Zeit O(n ∗ log(n)) auf Tautologie-Eigenschaft testen.<br />

• E<strong>in</strong>e Aussage <strong>in</strong> DNF kann man <strong>in</strong> Zeit O(n ∗ log(n)) auf Unerfüllbarkeit testen.<br />

Beweis. E<strong>in</strong>e CNF C 1 ∧ . . . ∧ C n ist e<strong>in</strong>e Tautologie, gdw. für alle Interpretationen I <strong>die</strong>se<br />

Formel stets wahr ist. D.h. alle C i müssen ebenfalls Tautologien se<strong>in</strong>. Das geht nur, wenn<br />

jedes C i e<strong>in</strong> Paar von Literalen <strong>der</strong> Form A, ¬A enthält.<br />

Das gleiche gilt <strong>in</strong> dualer Weise für e<strong>in</strong>e DNF, wenn man dualisiert, d.h. wenn man<br />

ersetzt: ∧ ↔ ∨, 0 ↔ 1, CNF ↔ DNF, Tautologie ↔ Wi<strong>der</strong>spruch.<br />

Der duale Test: CNF auf Unerfüllbarkeit bzw. DNF auf Allgeme<strong>in</strong>gültigkeit ist <strong>die</strong> eigentliche<br />

harte Nuß.<br />

Dualitätspr<strong>in</strong>zip Man stellt fest, dass <strong>in</strong> <strong>der</strong> Aussagenlogik (auch <strong>in</strong> <strong>der</strong> Prädikatenlogik)<br />

Def<strong>in</strong>itionen, Lemmas, <strong>Methoden</strong>, Kalküle, Algorithmen stets e<strong>in</strong>e duale Variante<br />

haben. Die Dualität ist wie im Beweis oben durch Vertauschung zu sehen: ∧ ↔ ∨, 0 ↔ 1,<br />

CNF ↔ DNF, Tautologie ↔ Wi<strong>der</strong>spruch, Test auf Allgeme<strong>in</strong>gültigkeit ↔ Test auf Unerfüllbarkeit.<br />

D.h. auch, dass <strong>die</strong> Wahl zwischen Beweissystemen, <strong>die</strong> auf Allgeme<strong>in</strong>gültigkeit<br />

testen und solchen, <strong>die</strong> auf Unerfüllbarkeit testen, e<strong>in</strong>e Geschmacksfrage ist und<br />

ke<strong>in</strong>e pr<strong>in</strong>zipielle Frage.<br />

Lemma 3.4.4. Sei F e<strong>in</strong>e Formel. Dann ist F allgeme<strong>in</strong>gültig gdw. ¬F e<strong>in</strong> Wi<strong>der</strong>spruch ist<br />

Bemerkung 3.4.5. Aus Lemma 3.4.3 kann man Schlussfolgerungen ziehen über <strong>die</strong> zu erwartende<br />

Komplexität e<strong>in</strong>es Algorithmus, <strong>der</strong> e<strong>in</strong>e Formel (unter Äquivalenzerhaltung) <strong>in</strong> e<strong>in</strong>e DNF<br />

(CNF) transformiert. Wenn <strong>die</strong>ser Algorithmus polynomiell wäre, dann könnte man e<strong>in</strong>en polynomiellen<br />

Tautologietest durchführen:<br />

Zuerst überführe e<strong>in</strong>e Formel <strong>in</strong> CNF und dann prüfe, ob <strong>die</strong>se CNF e<strong>in</strong>e Tautologie<br />

ist.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 89 Stand: 25. November 2012


3 Aussagenlogik<br />

Dies wäre e<strong>in</strong> polynomieller Algorithmus für e<strong>in</strong> CoN P-vollständiges Problem.<br />

Allerd<strong>in</strong>gs sehen wir später, dass <strong>die</strong> DNF (CNF-)Transformation selbst nicht <strong>der</strong> Engpass ist,<br />

wenn man nur verlangt, dass <strong>die</strong> Allgeme<strong>in</strong>gültigkeit (Unerfüllbarkeit) <strong>in</strong> e<strong>in</strong>e Richtung erhalten<br />

bleibt.<br />

Def<strong>in</strong>ition 3.4.6 (Transformation <strong>in</strong> Klauselnormalform). Folgende Prozedur wandelt jede<br />

aussagenlogische Formel <strong>in</strong> konjunktive Normalform (CNF, Klauselnormalform) um:<br />

1. Elim<strong>in</strong>ation von ⇔ und ⇒:<br />

F ⇔ G → F ⇒ G ∧ G ⇒ F<br />

F ⇒ G → ¬F ∨ G<br />

2. Negation ganz nach <strong>in</strong>nen schieben:<br />

¬¬F → F<br />

¬(F ∧ G) → ¬F ∨ ¬G<br />

¬(F ∨ G) → ¬F ∧ ¬G<br />

3. Distributivität (und Assoziativität, Kommutativität) iterativ anwenden, um ∧ nach außen<br />

zu schieben (“Ausmultiplikation“). F ∨ (G ∧ H) → (F ∨ G) ∧ (F ∨ H) (Das duale Distributivgesetz<br />

würde e<strong>in</strong>e disjunktive Normalform ergeben.)<br />

Das Resultat <strong>die</strong>ser Prozedur ist e<strong>in</strong>e Konjunktion von Disjunktionen (Klauseln) von Literalen:<br />

(L 1,1 ∨ . . . ∨ L 1,n1 ) ∧ (L 2,1 ∨ . . . ∨ L 2,n2 ) ∧ . . . ∧ (L k,1 ∨ . . . ∨ L k,nk )<br />

o<strong>der</strong> <strong>in</strong> (Multi-)Mengenschreibweise:<br />

{{L 1,1 , . . . , L 1,n1 }, {L 2,1 , . . . , L 2,n2 }, . . . {L k,1 , . . . , L k,nk }}<br />

Die so hergestellte CNF ist e<strong>in</strong>e Formel, <strong>die</strong> äquivalent zur e<strong>in</strong>gegebenen Formel ist.<br />

Dieser CNF-Algorithmus ist im schlechtesten Fall exponentiell, d.h. <strong>die</strong> Anzahl <strong>der</strong> Literale<br />

<strong>in</strong> <strong>der</strong> Klauselform wächst exponentiell mit <strong>der</strong> Größe <strong>der</strong> Ausgangsformel.<br />

Es gibt zwei Schritte, <strong>die</strong> zum exponentiellem Anwachsen <strong>der</strong> Formel führen können,<br />

• <strong>die</strong> Elim<strong>in</strong>ation von ⇔: Betrachte <strong>die</strong> Formel (A 1 ⇔ A 2 ) ⇔ (A 3 ⇔ A 4 ) und <strong>die</strong><br />

Verallgeme<strong>in</strong>erung.<br />

• Ausmultiplikation mittels Distributivgesetz:<br />

(A 1 ∧ . . . ∧ A n ) ∨ B 2 ∨ . . . ∨ B m → ((A 1 ∨ B 2 ) ∧ . . . ∧ (A n ∨ B 2 )) ∨ B 3 . . . ∨ B n<br />

Dies verdoppelt B 2 und führt zum Iterieren des Verdoppelns, wenn B i selbst wie<strong>der</strong><br />

zusammengesetzte Aussagen s<strong>in</strong>d.<br />

Stand: 25. November 2012 90 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.5 L<strong>in</strong>eare CNF<br />

Beispiel 3.4.7.<br />

((A ∧ B) ⇒ C) ⇒ C<br />

→<br />

¬(¬(A ∧ B) ∨ C) ∨ C<br />

→<br />

(A ∧ B) ∧ ¬C) ∨ C<br />

→ (A ∨ C) ∧ (B ∨ C) ∧ (¬C ∨ C)<br />

3.5 L<strong>in</strong>eare CNF<br />

Wir geben e<strong>in</strong>en Algorithmus an, <strong>der</strong> e<strong>in</strong>e aussagenlogische Formel F <strong>in</strong> polynomieller<br />

(sogar fast-l<strong>in</strong>earer) Zeit <strong>in</strong> e<strong>in</strong>e CNF F CNF umwandelt, wobei <strong>die</strong> Formel F erfüllbar ist<br />

gdw. F CNF erfüllbar ist. Es ist hierbei nicht gefor<strong>der</strong>t, dass F und F CNF äquivalent als<br />

Formeln s<strong>in</strong>d! Beachte, dass bei <strong>die</strong>sem Verfahren <strong>die</strong> Anzahl <strong>der</strong> Variablen erhöht wird.<br />

Der Trick ist, komplexe Subformeln iterativ durch neue Variablen abzukürzen. Sei F [G]<br />

e<strong>in</strong>e Formel mit <strong>der</strong> Subformel G. Dann erzeuge daraus (A ⇐⇒ G) ∧ F [A], wobei A e<strong>in</strong>e<br />

neue aussagenlogische Variable ist.<br />

Lemma 3.5.1. F [G] ist erfüllbar gdw. (G ⇐⇒ X) ∧ F [X] erfüllbar ist. Hierbei muß X e<strong>in</strong>e<br />

Variable se<strong>in</strong>, <strong>die</strong> nicht <strong>in</strong> F [G] vorkommt.<br />

Beweis. “⇒“ Sei F [G] erfüllbar und sei I e<strong>in</strong>e beliebige Interpretation mit I(F [G]) = 1.<br />

Erweitere I zu I ′ , so dass I ′ (X) := I(G). Werte <strong>die</strong> Formel (G ⇐⇒ X) ∧ F [X] unter I ′<br />

aus: Es gilt I ′ (G ⇐⇒ X) = 1 und I ′ (F [G]) = I ′ (F [X]) = 1.<br />

“⇐“ Sei I(G ⇐⇒ X) ∧ F [X]) = 1 für e<strong>in</strong>e Interpretation I. Dann ist I(G) = I(A) und<br />

I(F [X]) = 1. Damit muss auch I(F [G]) = 1 se<strong>in</strong>.<br />

Analog dazu erhält <strong>die</strong>se Transformation auch <strong>die</strong> Wi<strong>der</strong>sprüchlichkeit.<br />

Zunächst benötigen wir den Begriff Tiefe e<strong>in</strong>er Aussage und Subformel <strong>in</strong> Tiefe n. Beachte<br />

hierbei aber, dass es jetzt auf <strong>die</strong> genaue syntaktische Form ankommt: Es muß voll<br />

geklammert se<strong>in</strong>. Man kann es auch für e<strong>in</strong>e flachgeklopfte Form def<strong>in</strong>ieren, allerd<strong>in</strong>gs<br />

braucht man dann e<strong>in</strong>e an<strong>der</strong>e Syntaxdef<strong>in</strong>ition usw. Wir betrachten <strong>die</strong> Tiefe <strong>der</strong> Formeln,<br />

<strong>die</strong> <strong>in</strong> e<strong>in</strong>er Formel-Menge emthalten s<strong>in</strong>d.<br />

Def<strong>in</strong>ition 3.5.2. Die Tiefe e<strong>in</strong>er Subformel <strong>in</strong> Tiefe n def<strong>in</strong>iert man entsprechend dem Aufbau<br />

<strong>der</strong> Syntax: Zunächst ist jede Formel F e<strong>in</strong>e Subformel <strong>der</strong> Tiefe 0 von sich selbst. Sei H e<strong>in</strong>e<br />

Subformel von F <strong>der</strong> Tiefe n. Dann def<strong>in</strong>ieren wir Subformeln von F wie folgt:<br />

• Wenn H ≡ ¬G, dann ist G e<strong>in</strong>e Subformel <strong>der</strong> Tiefe n + 1<br />

• Wenn H ≡ (G 1 op G 2 ), dann s<strong>in</strong>d G 1 , G 2 Subformeln <strong>der</strong> Tiefe n + 1, wobei op e<strong>in</strong>er <strong>der</strong><br />

Junktoren ∨, ∧, ⇒, ⇐⇒ se<strong>in</strong> kann.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 91 Stand: 25. November 2012


3 Aussagenlogik<br />

Die Tiefe e<strong>in</strong>er Formel sei <strong>die</strong> maximale Tiefe e<strong>in</strong>er Subformel.<br />

Algorithmus Schnelle CNF-Berechnung<br />

E<strong>in</strong>gabe: Aussagenlogische Formel F<br />

Verfahren:<br />

Sei F von <strong>der</strong> Form H 1 ∧ . . . ∧ H n , wobei H i ke<strong>in</strong>e Konjuktionen s<strong>in</strong>d.<br />

while e<strong>in</strong> H i Tiefe ≥ 4 besitzt do<br />

for i ∈ {1, . . . , n} do<br />

if H i hat Tiefe ≥ 4 then<br />

Seien G 1 , . . . , G m alle Subformeln von H i <strong>in</strong> Tiefe 3, <strong>die</strong> selbst Tiefe ≥ 1 haben<br />

Ersetze H i wie folgt:<br />

H i [G 1 , . . . , G m ] → (G 1 ⇐⇒ X 1 ) ∧ . . . ∧ (G m ⇐⇒ X m ) ∧ H i [X 1 , . . . , X m ]<br />

end if<br />

end for<br />

Iteriere mit <strong>der</strong> entstandenen Formeln als neues F<br />

end while<br />

Wende <strong>die</strong> (langsame) CNF-Erstellung auf <strong>die</strong> entstandene Formel an<br />

Beachte, dass nach Ablauf <strong>der</strong> while-Schleife, alle Subformeln H i e<strong>in</strong>e Tiefe ≤ 3 besitzen<br />

und <strong>die</strong> langsame CNF-Erstellung nur <strong>die</strong> H i Formeln e<strong>in</strong>zeln transformieren muss, da<br />

<strong>die</strong> Konjunktionen zwischen den H i bereits <strong>in</strong> <strong>der</strong> richtigen Form s<strong>in</strong>d. Jede <strong>die</strong>ser Formeln<br />

hat Tiefe ≤ 3, daher kann man <strong>die</strong> Laufzeit für <strong>die</strong> Transformation e<strong>in</strong>er solchen<br />

kle<strong>in</strong>en Formel als konstant ansehen.<br />

Beachte dass <strong>die</strong> entstande Teilformel H i [X 1 , . . . , X m ] Tiefe 3 hat und daher nicht nochmal<br />

bearbeitet wird. Die Formeln (G j ⇐⇒ X j ) müssen evtl. weiter bearbeitet werden,<br />

allerd<strong>in</strong>gs nur <strong>in</strong>nerhalb von G j . Insbeson<strong>der</strong>e gilt dabei: Wenn H i vorher Tiefe n > 3 hat,<br />

dann hat H i [X 1 , . . . , X m ] Tiefe 3 und jede <strong>der</strong> Formeln G j hat selbst Tiefe maximal n − 3.<br />

Jede neuen Formeln (G j ⇐⇒ X j ) hat <strong>der</strong> Tiefe maximal n − 2. D.h. <strong>in</strong>sgesamt wird<br />

im schlechsten Fall e<strong>in</strong> H i <strong>der</strong> Tiefe n durch mehrere Formeln G j <strong>der</strong> Tiefe n − 2 ersetzt<br />

(wobei n > 3). Dies zeigt schon <strong>die</strong> Term<strong>in</strong>ierung des Verfahrens. Da jede Subformel <strong>der</strong><br />

ursprünglichen Formel höchstens e<strong>in</strong>mal durch e<strong>in</strong>e neue Abkürzung abgekürzt wird,<br />

können höchstens l<strong>in</strong>ear viele solcher Ersetzungen passieren. Wenn man das Verfahren<br />

geschickt implementiert (durch Merken <strong>der</strong> nicht zu betrachtenden Subformeln), kann<br />

daher <strong>die</strong> CNF <strong>in</strong> l<strong>in</strong>earer Zeit <strong>in</strong> <strong>der</strong> Größe <strong>der</strong> E<strong>in</strong>gabeformel erstellt werden.<br />

Satz 3.5.3. Zu je<strong>der</strong> aussagenlogischen Formel kann unter Erhaltung <strong>der</strong> Erfüllbarkeit e<strong>in</strong>e CNF<br />

<strong>in</strong> Zeit O(n) berechnet werden, wobei n <strong>die</strong> Größe <strong>der</strong> aussagenlogischen Formel ist.<br />

Beachte, dass <strong>die</strong> schnelle CNF-Berechnung (sofern m<strong>in</strong>destens e<strong>in</strong>e Abkürzung e<strong>in</strong>geführt<br />

wird), <strong>die</strong> Tautologieeigenschaft nicht erhält.<br />

Stand: 25. November 2012 92 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.5 L<strong>in</strong>eare CNF<br />

Bemerkung 3.5.4. Sei F [G] e<strong>in</strong>e Tautologie. Dann ist <strong>die</strong> Formel F [X] ∧ (X ⇐⇒ G), wobei<br />

X e<strong>in</strong>e neue aussagenlogische Variable, ke<strong>in</strong>e Tautologie: Seie I e<strong>in</strong>e Interpretation, <strong>die</strong> F [G]<br />

wahr macht (d.h. I(F [G]) = 1).<br />

Setze I ′ (Y ) :=<br />

{<br />

I(Y )<br />

f ¬ (I(G))<br />

falls Y ≠ X<br />

falls Y = X<br />

Dann falsifiziert I ′ <strong>die</strong> Formel F [X] ∧ (X ⇐⇒ G), denn I ′ (F [X] ∧ (X ⇐⇒<br />

G)) = f ∧ (I ′ (F [X]), f ⇐⇒ (I ′ (X), I ′ (G))) = f ∧ (I ′ (F [X]), f ⇐⇒ (f ¬ I(G), I(G))) =<br />

f ∧ (I ′ (F [X]), 0) = 0.<br />

Beachte auch, dass es gar ke<strong>in</strong>en polynomiellen Algorithmus zur CNF-Berechnung geben<br />

kann (solange P ≠ CoN P), <strong>der</strong> e<strong>in</strong>e äquivalente CNF berechnet, da man dann e<strong>in</strong>en<br />

polynomiellen Algorithmus zum Test auf Tautologieeigenschaft hätte.<br />

Dual zur schnellen Herstellung <strong>der</strong> CNF ist wie<strong>der</strong> <strong>die</strong> schnelle Herstellung<br />

e<strong>in</strong>er DNF, <strong>die</strong> allerd<strong>in</strong>gs mit e<strong>in</strong>er an<strong>der</strong>en Transformation durchgeführt wird:<br />

F [G] −→ (G ⇐⇒ X) ⇒ F [X]. Diese Transformation erhält <strong>die</strong> Falsifizierbarkeit (und<br />

daher auch <strong>die</strong> Tautologieeigenschaft), aber <strong>die</strong> Erfüllbarkeit bleibt nicht erhalten. Genauer<br />

gilt (G ⇐⇒ X) ⇒ F [X] ist stets erfüllbar, unabhängig davon, ob F [G] erfüllbar ist<br />

o<strong>der</strong> nicht (Beweis: Übungsaufgabe).<br />

Beispiel 3.5.5. Wandle e<strong>in</strong>e DNF <strong>in</strong> e<strong>in</strong>e CNF auf <strong>die</strong>se Art und Weise um unter Erhaltung <strong>der</strong><br />

Erfüllbarkeit. Sei (D 11 ∧ D 12 ) ∨ . . . ∨ (D n1 ∧ D n2 ) <strong>die</strong> DNF. Wenn man das Verfahren leicht<br />

abwandelt, damit man besser sieht, was passiert: ersetzt man <strong>die</strong> Formeln (D i1 ∧ D i2 ) durch neue<br />

Variablen A i und erhält am Ende:<br />

(A 1 ∨ . . . ∨ A n ) ∧ (¬A 1 ∨ D 11 ) ∧ (¬A 1 ∨ D 12 ) ∧ (¬D 11 ∨ ¬D 12 ∨ A 1 ) ∧ . . .. Diese Formel hat<br />

8n Literale.<br />

Beispiel 3.5.6. Wandle <strong>die</strong> Formel<br />

(((((X ⇐⇒ Y ) ⇐⇒ Y ) ⇐⇒ Y ) ⇐⇒ Y ) ⇐⇒ X)<br />

um. Das ergibt:<br />

(A ⇐⇒ ((X ⇐⇒ Y ) ⇐⇒ Y )) ⇒ ((((A ⇐⇒ Y ) ⇐⇒ Y ) ⇐⇒ X)<br />

Danach kann man <strong>die</strong>se Formel dann auf übliche Weise <strong>in</strong> DNF umwandeln.<br />

Bemerkung 3.5.7. Es gibt zahlreiche Implementierungen von Algorithmen, <strong>die</strong> Formeln <strong>in</strong> Klauselmengen<br />

verwandelt. Z.B. siehe <strong>die</strong> www-Seite http://www.spass-prover.org/.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 93 Stand: 25. November 2012


3 Aussagenlogik<br />

3.6 Resolution für Aussagenlogik<br />

Das Resolutionsverfahren <strong>die</strong>nt zum Erkennen von Wi<strong>der</strong>sprüchen, wobei statt des Testes<br />

auf Allgeme<strong>in</strong>gültigkeit e<strong>in</strong>er Formel F <strong>die</strong> Formel ¬F auf Unerfüllbarkeit getestet wird.<br />

E<strong>in</strong>e Begründung wurde bereits gegeben. E<strong>in</strong>e erweiterte liefert das folgende Lemma zum<br />

Beweis durch Wi<strong>der</strong>spruch:<br />

Lemma 3.6.1. E<strong>in</strong>e Formel A 1 ∧ . . . ∧ A n ⇒ F ist allgeme<strong>in</strong>gültig gdw. A 1 ∧ . . . ∧ A n ∧ ¬F<br />

wi<strong>der</strong>sprüchlich ist.<br />

Beweis. Übungsaufgabe<br />

Die semantische Entsprechung ist:<br />

Lemma 3.6.2. {A 1 , . . . , A n } |= F gdw. es ke<strong>in</strong>e Interpretation I gibt, so dass<br />

I |= {A 1 , . . . , A n , ¬F }.<br />

Die Resolution ist e<strong>in</strong>e Regel mit <strong>der</strong> man aus zwei Klauseln e<strong>in</strong>er Klauselmenge e<strong>in</strong>e<br />

weitere herleiten und dann zur Klauselmenge h<strong>in</strong>zufügen kann.<br />

Resolution:<br />

A ∨B 1 ∨ . . . ∨ B n<br />

¬A ∨C 1 ∨ . . . ∨ C m<br />

B 1 ∨ . . . ∨ B n ∨ C 1 ∨ . . . ∨ C m<br />

Man nennt <strong>die</strong> ersten beiden Klauseln auch Elternklauseln und <strong>die</strong> neu hergeleitete<br />

Klausel Resolvente. Oft verwendet man auch <strong>die</strong> folgende Schreibweise als „Graph“:<br />

A ∨ B 1 ∨ . . . ∨ B n<br />

¬A ∨ C 1 ∨ . . . ∨ C m<br />

B 1 ∨ . . . ∨ B n ∨ C 1 ∨ . . . ∨ C m<br />

Auf <strong>der</strong> Ebene <strong>der</strong> Klauselmengen sieht das Verfahren so aus:<br />

C → C ∪ {R}<br />

wobei R e<strong>in</strong>e Resolvente ist, <strong>die</strong> aus zwei Klauseln von C berechnet worden ist. Man<br />

nimmt <strong>der</strong> E<strong>in</strong>fachheit halber an, dass Klauseln Mengen s<strong>in</strong>d, d.h. es kommen ke<strong>in</strong>e Literale<br />

doppelt vor. Außerdem nimmt man auch noch an, dass <strong>die</strong> Konjunktion <strong>der</strong> Klauseln<br />

e<strong>in</strong>e Menge ist, d.h. nur neue Klauseln, <strong>die</strong> nicht bereits vorhanden s<strong>in</strong>d, können h<strong>in</strong>zugefügt<br />

werden. Wird <strong>die</strong> leere Klausel hergeleitet, ist das Verfahren beendet, denn e<strong>in</strong><br />

Wi<strong>der</strong>spruch wurde hergeleitet.<br />

E<strong>in</strong>gesetzt wird <strong>die</strong> Resolution zur Erkennung unerfüllbarer Klauselmengen. Es werden<br />

solange Resolventen hergeleitet, bis entwe<strong>der</strong> <strong>die</strong> leere Klausel h<strong>in</strong>zugefügt wurde<br />

Stand: 25. November 2012 94 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.6 Resolution für Aussagenlogik<br />

o<strong>der</strong> ke<strong>in</strong>e neue Resolvente mehr herleitbar ist. Dies geschieht meist <strong>in</strong> <strong>der</strong> Form, dass<br />

man Axiome (als Konjunktion) e<strong>in</strong>gibt und ebenso e<strong>in</strong>e negierte Folgerung, so dass <strong>die</strong><br />

Unerfüllbarkeit bedeutet, dass man e<strong>in</strong>en Wi<strong>der</strong>spruch hergeleitet hat.<br />

Wenn man ke<strong>in</strong>e neuen Klauseln mehr herleiten kann, o<strong>der</strong> wenn beson<strong>der</strong>s kurze (aussagekräftige)<br />

Klauseln hergeleitet werden, kann man <strong>die</strong>se als echte Folgerungen aus den<br />

e<strong>in</strong>gegebenen Formeln ansehen, und evtl. e<strong>in</strong> Modell konstruieren. Allerd<strong>in</strong>gs ist das bei<br />

obiger Wi<strong>der</strong>spruchsvorgehensweise nicht unbed<strong>in</strong>gt e<strong>in</strong> Modell <strong>der</strong> Axiome, da <strong>die</strong> negiert<br />

e<strong>in</strong>gegebene Folgerung dazu beigetragen haben kann. Ist <strong>die</strong> kle<strong>in</strong>e Formel nur aus<br />

den Axiomen hergeleitet worden, dann hat man e<strong>in</strong> Lemma, dass <strong>in</strong> allen Modellen <strong>der</strong><br />

Axiome gilt.<br />

Lemma 3.6.3. Wenn C → C ′ mit Resolution, dann ist C äquivalent zu C ′ .<br />

Beweis. Wir zeigen den nichttrivialen Teil:<br />

Sei I e<strong>in</strong>e Interpretation, <strong>die</strong> sowohl A∨B 1 ∨. . .∨B n und ¬A∨C 1 ∨. . .∨C m wahr macht.<br />

Wenn I(A) = 1, dann gibt es e<strong>in</strong> C j , so dass I(C j ) = 1. Damit ist auch <strong>die</strong> Resolvente unter<br />

I wahr. Im Fall I(A) = 0 gilt I(B j ) = 1 für e<strong>in</strong> j und somit ist <strong>die</strong> Resolvente wahr unter<br />

<strong>der</strong> Interpretation.<br />

Lemma 3.6.4. Die Resolution auf e<strong>in</strong>er aussagenlogischen Klauselmenge term<strong>in</strong>iert, wenn man<br />

e<strong>in</strong>en Resolutionsschritt nur ausführen darf, wenn sich <strong>die</strong> Klauselmenge vergrößert.<br />

Beweis. Es gibt nur endlich viele verschiedene Klauseln, da Resolution ke<strong>in</strong>e neuen Variablen<br />

e<strong>in</strong>führt.<br />

Übungsaufgabe 3.6.5. Gebe e<strong>in</strong> Beispiel an, so dass R sich aus C 1 , C 2 mit Resolution herleiten<br />

läßt, aber C 1 ∧ C 2 ⇐⇒ R ist falsch<br />

Da Resolution <strong>die</strong> Äquivalenz <strong>der</strong> Klauselmenge als Formel erhält, kann man <strong>die</strong>se<br />

auch verwenden, um e<strong>in</strong> Modell zu erzeugen, bzw. e<strong>in</strong> Modell e<strong>in</strong>zuschränken. Lei<strong>der</strong> ist<br />

<strong>die</strong>se Methode nicht immer erfolgreich: Zum Beispiel betrachte man <strong>die</strong> Klauselmenge<br />

{{A, B}, {¬A, ¬B}}. Resolution ergibt:<br />

{{A, B}, {A, ¬A}, {B, ¬B}, {¬A, ¬B}}<br />

D.h. es wurden zwei tautologische Klauseln h<strong>in</strong>zugefügt. (E<strong>in</strong>e Klausel ist e<strong>in</strong>e Tautologie,<br />

wenn P, ¬P vorkommt für e<strong>in</strong> P .) E<strong>in</strong> Modell läßt sich nicht direkt ablesen. Zum<br />

Generieren von Modellen ist <strong>die</strong> DPLL-Prozedur (siehe 3.7) o<strong>der</strong> e<strong>in</strong> Tableaukalkül (siehe<br />

3.9) geeigneter.<br />

Was jetzt noch fehlt, ist e<strong>in</strong> Nachweis <strong>der</strong> naheliegenden Vermutung, dass <strong>die</strong> Resolution<br />

für alle unerfüllbaren Klauselmengen <strong>die</strong> leere Klausel auch f<strong>in</strong>det.<br />

Theorem 3.6.6. Für e<strong>in</strong>e unerfüllbare Klauselmenge f<strong>in</strong>det Resolution nach endlich vielen Schritten<br />

<strong>die</strong> leere Klausel.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 95 Stand: 25. November 2012


3 Aussagenlogik<br />

Beweis. Wir verwenden das folgende Maß für Klauselmengen C:<br />

#aou(C) = Anzahl <strong>der</strong> verschiedenen Atome <strong>in</strong> C, <strong>die</strong> nicht <strong>in</strong>nerhalb von Literalen von<br />

1-Klauseln <strong>in</strong> C vorkommen<br />

Z.B. ist #aou({{A, ¬B}, {B, C}, {¬A}, {¬B}}) = 1, da von den drei Atomen A, B, C nur<br />

C nicht <strong>in</strong> e<strong>in</strong>er 1-Klausel vorkommt.<br />

Sei C e<strong>in</strong>e unerfüllbare Klausel. Wir zeigen per Induktion über #aou(C), dass das Resolutionsverfahren<br />

stets <strong>die</strong> leere Klausel herleitet.<br />

Für <strong>die</strong> Induktionsbasis nehmen wir an, dass #aou(C) = 0 ist, d.h. sämtliche Atome<br />

kommen <strong>in</strong> 1-Klauseln vor. Wenn C bereits <strong>die</strong> leere Klausel enthält, o<strong>der</strong> zwei<br />

1-Klauseln <strong>der</strong> Form {A} und {¬A} für e<strong>in</strong> Atom A, dann s<strong>in</strong>d wir fertig (im zweiten<br />

Fall muss <strong>die</strong> leere Klausel irgendwann durch Resolution <strong>der</strong> Klauseln {A} und<br />

{¬A} hergeleitet werden). An<strong>der</strong>enfalls gibt es 1-Klauseln und Klauseln mit mehr als<br />

e<strong>in</strong>em Literal, wobei <strong>die</strong> 1-Klauseln untere<strong>in</strong>an<strong>der</strong> nicht resolvierbar s<strong>in</strong>d. O.B.d.A. sei<br />

C = {{L 1 }, . . . , {L n }, K 1 , . . . , K m }, wobei alle Klauseln K i ke<strong>in</strong>e 1-Klauseln s<strong>in</strong>d. Betrachte<br />

<strong>die</strong> Interpretation I mit I(L i ) = 1 für i = 1, . . . , n. Da C unerfüllbar ist, muss C jedoch<br />

e<strong>in</strong>e Klausel K enthalten mit I(K) = 0. K kann ke<strong>in</strong>es <strong>der</strong> Literale L i enthalten, sonst<br />

würde I(K) = 1 gelten. Daher enthält K nur Literale L i , wobei ¬A = A und A = ¬A.<br />

Offensichtlich kann man <strong>die</strong> passenden 1-Klauseln {L i } zusammen mit K verwenden,<br />

um mit mehrfacher Resolution <strong>die</strong> leere Klausel herzuleiten.<br />

Nun betrachten wir den Induktionsschritt. Sei #aou(C) = n > 0. Dann gibt es m<strong>in</strong>destens<br />

e<strong>in</strong> Atom, dass <strong>in</strong> ke<strong>in</strong>er 1-Klausel vorkommt. O.B.d.A. sei A <strong>die</strong>ses Atom. Betrachte<br />

<strong>die</strong> Klauselmenge C ′ := C ∪ {{A}}. Jede Interpretation <strong>die</strong> C falsch macht, macht offensichtlich<br />

auch C ′ falsch. Daher ist C ′ auch unerfüllbar. Außerdem gilt #aou(C ′ ) = n − 1.<br />

Daher folgt aus <strong>der</strong> Induktionshypothese, dass es e<strong>in</strong>e Resolutionsherleitung für C ′ gibt,<br />

welche <strong>die</strong> leere Klausel herleitet. Verwende <strong>die</strong>se Herleitung wie folgt: Streiche <strong>die</strong> Klausel<br />

{A} aus <strong>der</strong> Herleitung heraus. Dies ergibt e<strong>in</strong>e Herleitung für C, <strong>die</strong> entwe<strong>der</strong> immer<br />

noch <strong>die</strong> leere Klausel herleitet (dann s<strong>in</strong>d wir fertig), o<strong>der</strong> <strong>die</strong> Klausel {¬A} herleitet. Im<br />

letzten Fall betrachte <strong>die</strong> Klauselmenge C ′′ := C ∪ {{¬A}}. Auch C ′′ ist unerfüllbar (aufgrund<br />

<strong>der</strong> Unerfüllbarkeit von C). Ebenso gilt #aou(C ′′ ) = n − 1, und daher (aufgrund<br />

<strong>der</strong> Induktionshypothese) existiert e<strong>in</strong>e Herleitung <strong>der</strong> leeren Klauseln beg<strong>in</strong>nend mit C ′′ .<br />

Nun streichen wir aus <strong>die</strong>ser Herleitung <strong>die</strong> 1-Klausel {¬A}. Erneut ergibt sich e<strong>in</strong>e Resolutionsherleitung<br />

für C, <strong>die</strong> entwe<strong>der</strong> <strong>die</strong> leere Klausel herleitet (dann s<strong>in</strong>d wir fertig)<br />

o<strong>der</strong>, <strong>die</strong> <strong>die</strong> Klausel {A} herleitet. Im letzten Fall verknüpfen wir <strong>die</strong> beiden Herleitungen<br />

von {¬A} und {A} zu e<strong>in</strong>er Herleitung (z.B. sequentiell). Aus <strong>der</strong> entstandenen Klauselmenge<br />

muss <strong>die</strong> Resolution <strong>die</strong> leere Klausel herleiten, da sie <strong>die</strong> beiden 1-Klauseln {¬A}<br />

und {A} enthält.<br />

Theorem 3.6.7. Resolution erkennt unerfüllbare Klauselmengen.<br />

Die Komplexität im schlimmsten Fall wurde von A. Haken (Haken, 1985) (siehe auch<br />

(E<strong>der</strong>, 1992) nach unten abgeschätzt: Es gibt e<strong>in</strong>e Folge von Formeln (<strong>die</strong> sogenannten<br />

Stand: 25. November 2012 96 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.6 Resolution für Aussagenlogik<br />

Taubenschlag-formeln (pigeon hole formula, Schubfach-formeln), für <strong>die</strong> gilt, dass <strong>die</strong><br />

kürzeste Herleitung <strong>der</strong> leeren Klausel mit Resolution e<strong>in</strong>e exponentielle Länge (<strong>in</strong> <strong>der</strong><br />

Größe <strong>der</strong> Formel) hat.<br />

Betrachtet man das ganze Verfahren zur Prüfung <strong>der</strong> Allgeme<strong>in</strong>gültigkeit e<strong>in</strong>er aussagenlogischen<br />

Formel, so kann man e<strong>in</strong>e CNF <strong>in</strong> l<strong>in</strong>earer Zeit herstellen, aber e<strong>in</strong> Resolutionsbeweis<br />

muß m<strong>in</strong>destens exponentiell lange se<strong>in</strong>, d.h. auch exponentiell lange dauern.<br />

Beachte, dass es formale Beweisverfahren gibt, <strong>die</strong> polynomiell lange Beweise für <strong>die</strong><br />

Schubfachformeln haben. Es ist theoretisch offen, ob es e<strong>in</strong> Beweisverfahren gibt, das für<br />

alle Aussagen polynomiell lange Beweise hat: Dies ist äquivalent zum offenen Problem<br />

ob N P = CoN P.<br />

3.6.1 Optimierungen des Resolutionskalküls<br />

Es gibt verschiedene Optimierungen, <strong>die</strong> es erlauben, bestimmte Klauseln während <strong>der</strong><br />

Resolution nicht weiter zu betrachten. Diese Klauseln können gelöscht, bzw. erst gar nicht<br />

erzeugt werden, ohne dass <strong>die</strong> Korrektheit und Vollständigkeit des Verfahrens verloren<br />

geht. In <strong>die</strong>sem Abschnitt werden wir drei solche Löschregeln behandeln und kurz <strong>der</strong>en<br />

Korrektheit begründen.<br />

3.6.1.1 Tautologische Klauseln<br />

E<strong>in</strong> Literal ist positiv, wenn es Atom ist (z.B. A), und negativ, wenn es e<strong>in</strong> negiertes Atom<br />

(z.B. ¬A) ist.<br />

Def<strong>in</strong>ition 3.6.8. E<strong>in</strong>e Klausel ist tautologisch, wenn sie e<strong>in</strong> Literal sowohl positiv als auch<br />

negativ enthält.<br />

Aus e<strong>in</strong>er Klauselmenge kann man tautologische Klauseln löschen, denn es gilt:<br />

Satz 3.6.9. Sei C ∪ {K} e<strong>in</strong>e Klauselmenge, wobei K e<strong>in</strong>e tautologische Klausel ist. Dann s<strong>in</strong>d<br />

C ∪ {K} und C äquivalente Formeln.<br />

Beweis. Offensichtlich gilt: Jede Interpretation I macht <strong>die</strong> tautologische Klausel K wahr.<br />

Daher gilt I(C ∪ {K}) = f ∧ (I(C), I(K)) = f ∧ (I(C), 1) = I(C).<br />

D.h. während <strong>der</strong> Resolution kann man auf das Erzeugen von solchen Resolventen, <strong>die</strong><br />

tautologische Klauseln s<strong>in</strong>d, verzichten. In <strong>der</strong> <strong>in</strong>itialen Klauselmenge kann man tautologische<br />

Klauseln bereits entfernen. Beachte <strong>in</strong>sbeson<strong>der</strong>e: E<strong>in</strong>e CNF ist e<strong>in</strong>e Tautologie<br />

gdw. alle Klauseln tautologisch s<strong>in</strong>d. D.h. für Tautologien (<strong>die</strong> komplette Klauselmenge)<br />

braucht man das Resolutionsverfahren gar nicht starten: Alle Klauseln werden durch das<br />

Löschen tautologischer Klauseln entfernt und man erhält <strong>die</strong> leere Klauselmenge.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 97 Stand: 25. November 2012


3 Aussagenlogik<br />

3.6.1.2 Klauseln mit isolierten Literalen<br />

Def<strong>in</strong>ition 3.6.10. E<strong>in</strong> Literal L ist isoliert <strong>in</strong> e<strong>in</strong>er Klauselmenge C, wenn das Literal L <strong>in</strong> C<br />

nicht vorkommt. Dabei ist L das zu L negierte Literal, d.h.<br />

L :=<br />

{<br />

¬X, wenn L = X<br />

X, wenn L = ¬X<br />

Beispiel 3.6.11. In {{A, ¬B}, {A, ¬B, C}, {¬A, C}} ist das Literal C isoliert, da ¬C nicht <strong>in</strong><br />

<strong>der</strong> Klauselmenge vorkommt. Ebenso ist ¬B isoliertes Literal, da B nicht <strong>in</strong> <strong>der</strong> Klauselmenge<br />

vorkommt.<br />

Man kann Klauseln, <strong>die</strong> isolierte Literale enthalten, aus e<strong>in</strong>er Klauselmenge entfernen.<br />

Dabei wird <strong>die</strong> Erfüllbarkeit <strong>der</strong> Klauselmenge nicht verän<strong>der</strong>t:<br />

Satz 3.6.12. Sei C e<strong>in</strong>e Klauselmenge und C ′ <strong>die</strong> Klauselmenge, <strong>die</strong> aus C entsteht, <strong>in</strong>dem alle<br />

Klauseln entfernt werden, <strong>die</strong> isolierte Literale enthalten. Dann ist C erfüllbar gdw. C ′ erfüllbar<br />

ist.<br />

Beweis. Sei C erfüllbar und I e<strong>in</strong>e Interpretation mit I(C) = 1. Dann gilt offensichtlich<br />

I(C ′ ) = 1, da C ′ ⊆ C (C ′ enthält weniger Klauseln als C).<br />

Für <strong>die</strong> umgekehrte Richtung sei C ′ erfüllbar und I e<strong>in</strong>e Interpretation mit I(C ′ ) = 1.<br />

Betrachte <strong>die</strong> Interpretation I ′ mit<br />

⎧<br />

⎪⎨ 1, wenn X isoliertes Literal <strong>in</strong> C<br />

I ′ (X) := 0, wenn ¬X isoliertes Literal <strong>in</strong> C<br />

⎪⎩<br />

I(X), sonst<br />

Es muss gelten I ′ (C) = 1, denn Klauseln mit isolierten Literalen werden offensichtlich<br />

wahr gemacht und alle an<strong>der</strong>en Klauseln werden bereits durch I wahr gemacht. D.h. C<br />

ist erfüllbar.<br />

Beachte, dass das Entfernen von Klauseln mit isolierten Literalen nicht <strong>die</strong> Äquivalenz<br />

<strong>der</strong> Klauselmengen erhält:<br />

Bemerkung 3.6.13. Betrachte <strong>die</strong> Klauselmenge C = {{A, ¬A}, {B}}. Das Literal B ist isoliert.<br />

Nach Löschen <strong>der</strong> Klausel entsteht C ′ = {{A, ¬A}}. Während C ′ e<strong>in</strong>e Tautologie ist, ist C<br />

falsifizierbar (mit I(B) = 0).<br />

Für das Resolutionsverfahren reicht <strong>die</strong> Erfüllbarkeitsäquivenz jedoch aus, da das Verfahren<br />

auf Wi<strong>der</strong>sprüchlichkeit testet. Daher können Klauseln mit isolierten Literalen entfernt<br />

werden.<br />

Stand: 25. November 2012 98 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.7 DPLL-Verfahren<br />

3.6.1.3 Subsumtion<br />

Def<strong>in</strong>ition 3.6.14. E<strong>in</strong>e Klausel K 1 subsumiert e<strong>in</strong>e Klausel K 2 , wenn K 1 ⊆ K 2 gilt. Man sagt<br />

<strong>in</strong> <strong>die</strong>sem Fall auch: „K 2 wird von K 1 subsumiert“.<br />

Gibt es <strong>in</strong> e<strong>in</strong>er Klauselmenge, Klauseln, <strong>die</strong> durch an<strong>der</strong>e Klauseln subsumiert werden,<br />

so können <strong>die</strong> subsumierten Klauseln entfernt werden, denn es gilt:<br />

Satz 3.6.15. Sei C ∪{K 1 }∪{K 2 } e<strong>in</strong>e Klauselmenge, wobei K 1 <strong>die</strong> Klausel K 2 subsumiert. Dann<br />

s<strong>in</strong>d <strong>die</strong> Formeln C ∪ {K 1 } ∪ {K 2 } und C ∪ {K 1 } äquivalent.<br />

Beweis. Sei I e<strong>in</strong>e Interpretation. Wir betrachten zwei Fälle:<br />

• I(C ∪ {K 1 }) = 1. Dann muss gelten I(K 1 ) = 1. Da K 1 ⊆ K 2 muss ebenso gelten<br />

I(K 2 ) = 1 (beachte K 1 ≠ ∅, da I(K 1 ) = 1) und daher macht I auch C ∪ {K 1 } ∪ {K 2 }<br />

wahr.<br />

• I(C ∪ {K 1 }) = 0, dann kann nur I(C ∪ {K 1 } ∪ {K 2 }) = 0 gelten.<br />

Das zeigt, dass subsumierte Klauseln im Resolutionsverfahren entfernt werden können.<br />

3.7 DPLL-Verfahren<br />

Die Prozedur von Davis, Putnam, Logemann und Loveland (DPLL) <strong>die</strong>nt zum Entscheiden<br />

<strong>der</strong> Erfüllbarkeit (und Unerfüllbarkeit) von aussagenlogische Klauselmengen. Sie ist<br />

e<strong>in</strong>e Abwandlung e<strong>in</strong>es vorher von Davis und Putnam vorgeschlagenen Verfahrens (und<br />

wird daher manchmal auch nur als Davis-Putnam-Prozedur bezeichnet).<br />

Das Verfahren beruht auf Fallunterscheidung und Ausnutzen und Propagieren <strong>der</strong> Information.<br />

Die Korrektheit und Vollständigkeit des Verfahrens lässt sich aus <strong>der</strong> Resolution<br />

samt den Löschregeln leicht folgern.<br />

Der Algorithmus hat e<strong>in</strong>e Klauselmenge als E<strong>in</strong>gabe und liefert genau dann true als<br />

Ausgabe, wenn <strong>die</strong> Klauselmenge unerfüllbar ist. Wir nehmen an, dass tautologische<br />

Klauseln <strong>in</strong> <strong>der</strong> E<strong>in</strong>gabe bereits entfernt s<strong>in</strong>d. Der genaue Algorithmus ist wie folgt:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 99 Stand: 25. November 2012


3 Aussagenlogik<br />

Algorithmus DPLL-Prozedur<br />

E<strong>in</strong>gabe: Klauselmenge C, <strong>die</strong> ke<strong>in</strong>e tautologischen Klauseln enthält<br />

Funktion DPLL(C):<br />

if ∅ ∈ C // C enthält <strong>die</strong> leere Klausel<br />

then return true; // unerfüllbar<br />

endif<br />

if C = ∅ // C ist <strong>die</strong> leere Menge<br />

then return false; // erfüllbar<br />

endif<br />

if C enthält 1-Klausel {L} then<br />

Sei C ′ <strong>die</strong> Klauselmenge, <strong>die</strong> aus C entsteht, <strong>in</strong>dem<br />

(1) alle Klauseln, <strong>die</strong> L enthalten, entfernt werden und<br />

(2) <strong>in</strong> den verbleibenden Klausel alle Literale L entfernt werden<br />

(wobei L = ¬X, wenn L = X und L = X, wenn L = ¬X)<br />

DPLL(C ′ ); // rekursiver Aufruf<br />

endif<br />

if C enthält isoliertes Literal L then<br />

Sei C ′ <strong>die</strong> Klauselmenge, <strong>die</strong> aus C entsteht, <strong>in</strong>dem alle Klauseln, <strong>die</strong> L enthalten,<br />

entfernt werden.<br />

DPLL(C ′ ); // rekursiver Aufruf<br />

endif<br />

// Nur wenn ke<strong>in</strong>er <strong>der</strong> obigen Fälle zutraf:<br />

Wähle Atom A, dass <strong>in</strong> C vorkommt;<br />

return DPLL(C ∪ {{A}}) ∧ DPLL(C ∪ {{¬A}}) // Fallunterscheidung<br />

Dies ist e<strong>in</strong> vollständiges, korrektes Entscheidungsverfahren für <strong>die</strong> (Un-)Erfüllbarkeit<br />

von aussagenlogischen Klauselmengen.<br />

Das Entfernen <strong>der</strong> Klauseln, <strong>die</strong> das Literal aus <strong>der</strong> 1-Klausel enthalten, ((1) im Algorithmus)<br />

entspricht <strong>der</strong> Subsumtion, da <strong>die</strong> 1-Klausel {L} alle Klauseln subsumiert, <strong>die</strong><br />

L enthalten. Das Entfernen <strong>der</strong> 1-Klausel selbst entspricht <strong>der</strong> Vorgehensweise, das entsprechende<br />

Literal L <strong>in</strong> <strong>der</strong> Interpretation wahr zu machen, da jedes Modell <strong>die</strong> 1-Klausel<br />

wahr machen muss.<br />

Das Entfernen <strong>der</strong> Literale L <strong>in</strong> (2) entspricht <strong>der</strong> Resolution <strong>der</strong> jeweiligen Klausel mit<br />

<strong>der</strong> 1-Klausel {L} und anschließen<strong>der</strong> Subsumtion, denn <strong>die</strong> Resolvente subsumiert <strong>die</strong><br />

ursprüngliche Klausel:<br />

{L} {L, L ′ 1 , . . . , L′ n}<br />

{L ′ 1 , . . . , L′ n}<br />

Stand: 25. November 2012 100 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.7 DPLL-Verfahren<br />

Das Entfernen <strong>der</strong> Klauseln, <strong>die</strong> isolierten Literale enthalten, entspricht genau <strong>der</strong> oben<br />

behandelten Löschregel für isolierte Literale.<br />

Wenn all <strong>die</strong>se Regeln nicht mehr anwendbar s<strong>in</strong>d (es gibt we<strong>der</strong> 1-Klauseln noch isolierte<br />

Literale), wird <strong>in</strong> <strong>der</strong> letzten Zeile e<strong>in</strong>e Fallunterscheidung durchgeführt, <strong>die</strong> <strong>die</strong><br />

beiden Fälle A ist wahr, o<strong>der</strong> A ist falsch probiert.<br />

Diese DPLL-Prozedur ist im Allgeme<strong>in</strong>en (aus praktischer Sicht) sehr viel besser als e<strong>in</strong>e<br />

vollständige Fallunterscheidung über alle möglichen Variablenbelegungen, d.h. besser<br />

als <strong>die</strong> Erstellung e<strong>in</strong>er Wahrheitstafel. Die DPLL-Prozedur braucht im schlimmsten Fall<br />

exponentiell viel Zeit (<strong>in</strong> <strong>der</strong> Anzahl <strong>der</strong> unterschiedlichen Variablen), was nicht weiter<br />

verwun<strong>der</strong>n kann, denn e<strong>in</strong> Teil des Problems ist gerade SAT, das Erfüllbarkeitsproblem<br />

für aussagenlogische Klauselmengen, und das ist bekanntlich N P-vollständig.<br />

Der DPLL-Algorithmus ist erstaunlich schnell, wenn man bei <strong>der</strong> Fallunterscheidung<br />

am Ende noch darauf achtet, dass man Literale auswählt, <strong>die</strong> <strong>in</strong> möglichst kurzen Klauseln<br />

vorkommen. Dies erhöht nämlich <strong>die</strong> Wahrsche<strong>in</strong>lichkeit, dass nach wenigen Schritten<br />

große Anteile <strong>der</strong> Klauselmenge gelöscht werden.<br />

Der DPLL-Algorithmus kann leicht so erweitert werden, dass im Falle <strong>der</strong> Erfüllbarkeit<br />

<strong>der</strong> Klauselmenge auch e<strong>in</strong> Modell (e<strong>in</strong>e erfüllende Interpretation) berechnet wird. Der<br />

Algorithmus arbeitet depth-first mit backtrack<strong>in</strong>g. Wenn <strong>die</strong> Antwort „erfüllbar“ ist, kann<br />

man durch Rückverfolgung <strong>der</strong> folgenden Annahmen e<strong>in</strong> Modell bestimmen:<br />

1. Isolierte Literale werden als wahr angenommen.<br />

2. Literale <strong>in</strong> 1-Klauseln werden ebenfalls als wahr angenommen.<br />

3. Dadurch nicht belegt Variablen können für das vollständige Modell beliebig belegt<br />

werden<br />

Beispiel 3.7.1. Betrachte folgende Klauselmenge, wobei jede Zeile e<strong>in</strong>er Klausel entspricht.<br />

P, Q<br />

¬P, Q R<br />

P, ¬Q, R<br />

¬, P ¬Q, R<br />

P, Q, ¬R<br />

¬P, Q, ¬R<br />

P, ¬Q, ¬R<br />

¬P, ¬Q, ¬R<br />

Fall 1: Ad<strong>die</strong>re <strong>die</strong> Klausel {P }. Das ergibt nach e<strong>in</strong>igen Schritten:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 101 Stand: 25. November 2012


3 Aussagenlogik<br />

Q, R<br />

¬Q, R<br />

Q, ¬R<br />

¬Q, ¬R<br />

Fall 1.1: Ad<strong>die</strong>re {Q}: ergibt <strong>die</strong> leere Klausel.<br />

Fall 1.2: Ad<strong>die</strong>re {¬Q}: ergibt <strong>die</strong> leere Klausel.<br />

Fall 2: Ad<strong>die</strong>re <strong>die</strong> Klausel {¬P }. Das ergibt nach e<strong>in</strong>igen Schritten:<br />

Weitere Schritte für Q ergeben<br />

Q<br />

¬Q R<br />

Q ¬R<br />

¬Q ¬R<br />

R<br />

¬R<br />

Auch <strong>die</strong>s ergibt sofort <strong>die</strong> leere Klausel. Damit hat <strong>die</strong> DPLL-Prozedur <strong>die</strong> e<strong>in</strong>gegebene Klauselmenge<br />

als unerfüllbar erkannt.<br />

Beispiel 3.7.2. Wir nehmen uns e<strong>in</strong> Rätsel von Raymond Smullyan vor: Die Frage nach dem<br />

Pfeffer<strong>die</strong>b. Es gibt drei Verdächtige: Den Hutmacher, den Schnapphasen und <strong>die</strong> (Hasel-)Maus.<br />

Folgendes ist bekannt:<br />

• Genau e<strong>in</strong>er von ihnen ist <strong>der</strong> Dieb.<br />

• Unschuldige sagen immer <strong>die</strong> Wahrheit<br />

• Schnapphase: <strong>der</strong> Hutmacher ist unschuldig.<br />

• Hutmacher: <strong>die</strong> Hasel-Maus ist unschuldig<br />

Ko<strong>die</strong>rung: H, S, M s<strong>in</strong>d Variablen für Hutmacher, Schnapphase, Maus und bedeuten jeweils “ist<br />

schuldig“. Man ko<strong>die</strong>rt das <strong>in</strong> Aussagenlogik und fragt nach e<strong>in</strong>em Modell.<br />

• H ∨ S ∨ M<br />

• H ⇒ ¬(S ∨ M)<br />

• S ⇒ ¬(H ∨ M)<br />

• M ⇒ ¬(H ∨ S)<br />

• ¬S ⇒ ¬H<br />

• ¬H ⇒ ¬M<br />

Stand: 25. November 2012 102 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.7 DPLL-Verfahren<br />

Dies ergibt e<strong>in</strong>e Klauselmenge (doppelte s<strong>in</strong>d schon elim<strong>in</strong>iert):<br />

1. H, S, M<br />

2. ¬H, ¬S<br />

3. ¬H, ¬M<br />

4. ¬S, ¬M<br />

5. S, ¬H<br />

6. H, ¬M<br />

Wir können verschiedene Verfahren zur Lösung verwenden.<br />

1. Resolution ergibt: 2+5 : ¬H, 3+6 : ¬M. Diese beiden 1-Klauseln mit 1 resolviert ergibt: S.<br />

Nach Prüfung, ob {¬H, ¬M, S} e<strong>in</strong> Modell ergibt, können wir sagen, dass <strong>der</strong> Schnapphase<br />

schuldig ist.<br />

2. DPLL: Wir verfolgen nur e<strong>in</strong>en Pfad im Suchraum:<br />

Fall 1: S = 0. Die 5-te Klausel ergibt dann ¬H. Danach <strong>die</strong> 6te Klausel ¬M. Zusammen<br />

mit (den Resten von) Klausel 1 ergibt <strong>die</strong>s e<strong>in</strong> Wi<strong>der</strong>spruch.<br />

Fall 2: S = 1. Dann bleibt von <strong>der</strong> vierten Klausel nur ¬M übrig, und von <strong>der</strong> zweiten<br />

Klausel nur ¬H. Diese ergibt somit das gleiche Modell.<br />

Beispiel 3.7.3. E<strong>in</strong>e Logelei aus <strong>der</strong> Zeit: Abianer sagen <strong>die</strong> Wahrheit, Bebianer Lügen. Es gibt<br />

folgende Aussagen:<br />

1. Knasi: Knisi ist Abianer.<br />

2. Knesi: Wenn Knösi Bebianer, dann ist auch Knusi e<strong>in</strong> Abianer.<br />

3. Knisi: Wenn Knusi Abianer, dann ist Knesi Bebianer.<br />

4. Knosi: Knesi und Knüsi s<strong>in</strong>d beide Abianer.<br />

5. Knusi: Wenn Knüsi Abianer ist, dann ist auch Knisi Abianer.<br />

6. Knösi: Entwe<strong>der</strong> ist Knasi o<strong>der</strong> Knisi Abianer.<br />

7. Knüsi: Knosi ist Abianer.<br />

E<strong>in</strong>e offensichtliche Ko<strong>die</strong>rung ergibt<br />

A I<br />

E (-OE => U)<br />

I (U => -E)<br />

O (E /\ UE)<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 103 Stand: 25. November 2012


3 Aussagenlogik<br />

U (UE => I)<br />

OE (A XOR I)<br />

UE O<br />

Die E<strong>in</strong>gabe <strong>in</strong> den DPLL-Algorithmus 3 ergibt:<br />

abianer1Expr = "((A I) /\\ (E (-OE => U)) /\\ (I (U => -E))<br />

/\\ (O (E /\\ UE)) /\\ (U (UE => I))<br />

/\\ (OE -(A I)) /\\ (UE O))"<br />

Resultat:<br />

"Modell: -OE, -O, -UE, E, U, -I, -A"<br />

Damit s<strong>in</strong>d Knesi und Knusi Abianer, <strong>die</strong> an<strong>der</strong>en s<strong>in</strong>d Bebianer.<br />

Beispiel 3.7.4. E<strong>in</strong> weiteres Rätsel von Raymond Smullyan:<br />

Hier geht es um den Diebstahl von Salz. Die Verdächtigen s<strong>in</strong>d: Lakai mit dem Froschgesicht,<br />

Lakai mit dem Fischgesicht, Herzbube.<br />

Die Aussagen und <strong>die</strong> bekannten Tatsachen s<strong>in</strong>d:<br />

• Frosch: <strong>der</strong> Fisch wars<br />

• Fisch: ich wars nicht<br />

• Herzbube: ich wars<br />

• Genau e<strong>in</strong>er ist <strong>der</strong> Dieb<br />

• höchstens e<strong>in</strong>er hat gelogen<br />

Man sieht, dass es nicht nur um <strong>die</strong> Lösung des Rätsels selbst geht, son<strong>der</strong>n auch um etwas<br />

Übung und Geschick, das Rätsel so zu formalisieren, dass es von e<strong>in</strong>em Computer gelöst werden<br />

kann. Man muß sich auch davon überzeugen, dass <strong>die</strong> Formulierung dem gestellten Problem entspricht.<br />

Wir wollen Aussagenlogik verwenden. Wir verwenden Variablen mit folgenden Namen<br />

und Bedeutung:<br />

FRW<br />

FIW<br />

HBW<br />

FID<br />

FRD<br />

HBD<br />

Frosch sagt <strong>die</strong> Wahrheit<br />

Fisch sagt <strong>die</strong> Wahrheit<br />

Herzbube sagt <strong>die</strong> Wahrheit<br />

<strong>der</strong> Fisch ist <strong>der</strong> Dieb<br />

<strong>der</strong> Frosch ist <strong>der</strong> Dieb<br />

<strong>der</strong> Herzbube ist <strong>der</strong> Dieb<br />

Die Formulierung ist:<br />

3 E<strong>in</strong>e Implementierung zum e<strong>in</strong>fachen Ausprobieren ist über www.ki.<strong>in</strong>formatik.unifrankfurt.de/lehre/allgeme<strong>in</strong>/DP/<br />

zu f<strong>in</strong>den.<br />

Stand: 25. November 2012 104 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.7 DPLL-Verfahren<br />

höchstens e<strong>in</strong>er sagt nicht <strong>die</strong> Wahrheit:<br />

¬F RW ⇒ F IW ∧ HBW<br />

¬F IW ⇒ F RW ∧ HBW<br />

¬HBW ⇒ F RW ∧ F IW<br />

genau e<strong>in</strong>er ist <strong>der</strong> Dieb:<br />

F ID ∨ F RD ∨ HBD<br />

F ID ⇒ ¬F RD ∧ ¬HBD<br />

F RD ⇒ ¬F ID ∧ ¬HBD<br />

HBD ⇒ ¬F ID ∧ ¬F RD<br />

E<strong>in</strong>gabe <strong>in</strong> den DPLL-Algorithmus:<br />

Die Aussagen:<br />

F RW ⇒ F ID<br />

F IW ⇒ ¬F ID<br />

HBW ⇒ HBD<br />

dp "((-FRW => FIW /\\ HBW) /\\ (-FIW => FRW /\\ HBW)<br />

/\\ (-HBW => FRW /\\ FIW)<br />

/\\ (FID => -FRD /\\ -HBD) /\\ (FRD => -FID /\\ -HBD)<br />

/\\ (HBD => -FID /\\ -FRD) /\\ (FRW => FID)<br />

/\\ (FIW => -FID) /\\ (HBW => HBD))"<br />

Die berechnete Lösung ist: −F RD, −F ID, −F RW, F IW, HBW, HBD D.h FRW ist falsch,<br />

d.h. <strong>der</strong> Lakai mit dem Froschgesicht hat gelogen und <strong>der</strong> Herzbube war <strong>der</strong> Dieb.<br />

Der Aufruf<br />

dpalle fischfroschexpr<br />

(siehe Programme zur Veranstaltung) ergibt, dass es genau e<strong>in</strong> Modell gibt, also gibt es nur <strong>die</strong><br />

e<strong>in</strong>e Lösung.<br />

Beispiel 3.7.5. Anwendung auf e<strong>in</strong> Suchproblem: Das n-Damen Problem. s sollen König<strong>in</strong>nen<br />

auf e<strong>in</strong>em quadratischen Schachbrett <strong>der</strong> Seitenlänge n so platziert werden, dass <strong>die</strong>se sich nicht<br />

schlagen können. Damit <strong>die</strong> Formulierung e<strong>in</strong>facher wird, erwarten wir, dass sich <strong>in</strong> je<strong>der</strong> Zeile<br />

und Spalte e<strong>in</strong>e König<strong>in</strong> bef<strong>in</strong>det. Man kann leicht e<strong>in</strong> Programm schreiben, dass <strong>die</strong> entsprechende<br />

Klauselmenge direkt erzeugt. Wir demonstrieren <strong>die</strong>s <strong>in</strong> Haskell, wobei wir Literale durch Zahlen<br />

darstellen: Negative Zahlen entsprechen dabei negativen Literalen.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 105 Stand: 25. November 2012


3 Aussagenlogik<br />

Zunächst muss man sich verdeutlichen, welche Bed<strong>in</strong>gungen zur Lösung erfor<strong>der</strong>lich s<strong>in</strong>d: Pro<br />

Zeile und pro Spalte muss e<strong>in</strong>e Dame stehen und es darf ke<strong>in</strong>e bedrohenden Paare von Damen<br />

geben. In Haskell programmiert ergibt das:<br />

nDamen n =<br />

(proZeileE<strong>in</strong>eDame n)<br />

++ (proSpalteE<strong>in</strong>eDame n)<br />

++ (bedrohendePaare n)<br />

Der E<strong>in</strong>fachheit halber ko<strong>die</strong>ren wir <strong>die</strong> n × n Fel<strong>der</strong> durch Zahlen von 1 bis n 2 , verwenden<br />

dafür aber e<strong>in</strong>e Funktion, <strong>die</strong> uns Koord<strong>in</strong>aten (im Bereich (1, 1) bis (n, n) direkt umrechnet:<br />

koord<strong>in</strong>ateZuZahl (x,y) n =<br />

(x-1)*n+y<br />

Die Bed<strong>in</strong>gungen, dass e<strong>in</strong>e Dame pro Zeile bzw. pro Spalte vorkommt, lassen sich leicht als Klauselmengen<br />

Programmieren: Z.B. wird <strong>die</strong>s für Zeile i zugesichert, <strong>in</strong>dem alle Fel<strong>der</strong> <strong>in</strong> Zeile i <strong>in</strong><br />

e<strong>in</strong>er Klausel vere<strong>in</strong>t werden, damit ist e<strong>in</strong>es <strong>die</strong>ser Fel<strong>der</strong> sicher belegt. In Haskell kann man das<br />

leicht mit List Comprehensions programmieren:<br />

proZeileE<strong>in</strong>eDame n = [[koord<strong>in</strong>ateZuZahl (i,j) n | j


3.7 DPLL-Verfahren<br />

[[-4,-8,-15,5,-13,14,-6,-2,12,-9,-1,3,-16,-10,-7,-11],<br />

[-4,2,8,-6,-1,9,-12,-14,-13,-5,15,-3,-16,-10,-7,-11]]<br />

Die entsprechen den zwei möglichen Platzierungen im Fall n = 4.<br />

Der Aufruf dpqueens 8 ergibt nach kurzer Zeit:<br />

- - D - - - - -<br />

- - - - - - D -<br />

- D - - - - - -<br />

- - - - - - - D<br />

- - - - D - - -<br />

D - - - - - - -<br />

- - - D - - - -<br />

- - - - - D - -<br />

Beispiel 3.7.6. Das n-Damen Problem gibt es noch <strong>in</strong> weiteren Varianten: Die Torus-Variante:<br />

In dem Fall setzt sich <strong>die</strong> Bedrohung über <strong>der</strong> Rand an <strong>der</strong> Seite und oben und unten fort. Die <strong>die</strong><br />

Bedrohung entlang Diagonall<strong>in</strong>ien des 8 × 8 Feldes ist so dasss <strong>die</strong> Dame <strong>in</strong> <strong>der</strong> ersten Zeile im<br />

unteren Beispiel <strong>die</strong> Dame <strong>in</strong> <strong>der</strong> vierten Zeile bedroht, wenn man <strong>die</strong> Diagonale nach l<strong>in</strong>ks unten<br />

verfolgt.<br />

- - D - - - - -<br />

- - - - - - D -<br />

- D - - - - - -<br />

- - - - - - - D<br />

- - - - D - - -<br />

D - - - - - - -<br />

- - - D - - - -<br />

- - - - - D - -<br />

Recherche im Internet ergibt (z.B Polya hat sich schon damit beschäftigt): es gibt offenbar Lösungen,<br />

wenn n teilerfremd zu 6 ist und n ≥ 5. D.h. für n = 5, 7, 11, 13, 17, .. gibt es Lösungen, für<br />

n = 4, 6, 8, 9, 10, 12, 14, 15, 16, . . . gibt es ke<strong>in</strong>e Lösungen. E<strong>in</strong>e Lösung (Aufruf: dpqueenscyl<br />

5) ist:<br />

D - - - -<br />

- - D - -<br />

- - - - D<br />

- D - - -<br />

- - - D -<br />

Für n = 11 werden 4 Lösungen ermittelt und für n = 13 werden 174 Lösungen ermittelt<br />

(allerd<strong>in</strong>gs nach e<strong>in</strong>er Symmetrieoptimierung). E<strong>in</strong>e generische Lösung ist:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 107 Stand: 25. November 2012


3 Aussagenlogik<br />

D - - - - - - - - - - - -<br />

- - D - - - - - - - - - -<br />

- - - - D - - - - - - - -<br />

- - - - - - D - - - - - -<br />

- - - - - - - - D - - - -<br />

- - - - - - - - - - D - -<br />

- - - - - - - - - - - - D<br />

- D - - - - - - - - - - -<br />

- - - D - - - - - - - - -<br />

- - - - - D - - - - - - -<br />

- - - - - - - D - - - - -<br />

- - - - - - - - - D - - -<br />

- - - - - - - - - - - D -<br />

Aus <strong>die</strong>sen Beispielen kann man sich auch e<strong>in</strong>e Serie von erfüllbaren und unerfüllbaren Klauselmengen<br />

generieren, <strong>die</strong> man für Testzwecke verwenden kann.<br />

3.8 Modellierung von Problemen als Aussagenlogische<br />

Erfüllbarkeitsprobleme<br />

In <strong>die</strong>sem Abschnitt wollen wir kurz darauf e<strong>in</strong>gehen, wie man aus e<strong>in</strong>em gegebenen Problem<br />

e<strong>in</strong>e passende Ko<strong>die</strong>rung als Erfüllbarkeitsproblem <strong>der</strong> Aussagenlogik f<strong>in</strong>det. Die<br />

Beispiele am Ende des letzten Abschnitts geben hier schon <strong>die</strong> Richtung vor. Man kann allerd<strong>in</strong>gs<br />

für häufige auftretende Ko<strong>die</strong>rungsprobleme, allgeme<strong>in</strong> Formeln angeben, <strong>die</strong> es<br />

erlauben, schnell Ko<strong>die</strong>rungen zu f<strong>in</strong>den. Außerdem soll <strong>die</strong>ser Abschnitt verdeutlichen,<br />

dass das Modellieren von Problemen als Aussagenlogische Erfüllbarkeitsprobleme oft systematisch<br />

möglich ist. Schließlich werden wir zum Abschluss des Kapitels <strong>die</strong> entwickelten<br />

Formeln verwenden, um als Anwendungsbeispiel das Lösen von Sudokus durch Verwendung<br />

<strong>der</strong> Aussagenlogik zu automatisieren.<br />

E<strong>in</strong> häufiges Problem bei <strong>der</strong> Modellierung s<strong>in</strong>d Nebenbed<strong>in</strong>gungen, <strong>die</strong> erfor<strong>der</strong>n,<br />

dass e<strong>in</strong>e gewisse Anzahl von Literalen im Modell wahr ist, o<strong>der</strong> nicht wahr ist. Im e<strong>in</strong>facheren<br />

Fall besteht <strong>die</strong> Aufgabe dar<strong>in</strong> sicherzustellen, dass m<strong>in</strong>destens e<strong>in</strong>e, höchstens<br />

e<strong>in</strong>e o<strong>der</strong> genau e<strong>in</strong> Literal (o<strong>der</strong> auch Subformel) aus e<strong>in</strong>er Menge von Literalen (bzw.<br />

Formeln) wahr ist.<br />

Wir geben hier allgeme<strong>in</strong> an, wie man <strong>die</strong>se Formeln erstellen kann. Sei S e<strong>in</strong>e Menge<br />

von Formeln (o<strong>der</strong> im e<strong>in</strong>facheren Fall Literalen). Die Formel, <strong>die</strong> m<strong>in</strong>destens e<strong>in</strong>e <strong>der</strong><br />

Formeln aus S wahr macht, ist e<strong>in</strong>fach <strong>die</strong> Disjunktion aller Formeln <strong>in</strong> S:<br />

at_least_one(S) = (F 1 ∨ . . . ∨ F n )<br />

Beachte, dass <strong>die</strong> Formel genau e<strong>in</strong>er Klausel entspricht, wenn F 1 , . . . , F n Literale s<strong>in</strong>d.<br />

Die Formel, <strong>die</strong> höchstens e<strong>in</strong>e <strong>der</strong> Formeln aus S wahr macht, kann man konstruieren,<br />

<strong>in</strong>dem man sich überlegt, dass <strong>die</strong>se Anfor<strong>der</strong>ung identisch dazu ist, dass nie zwei Formeln<br />

aus S gleichzeitig wahr se<strong>in</strong> dürfen. Statt ¬(F i ∧ F j ) kann man gleich (¬F i ∨ ¬F j )<br />

verwenden:<br />

Stand: 25. November 2012 108 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.8 Modellierung von Problemen als Aussagenlogische Erfüllbarkeitsprobleme<br />

at_most_one(S) = ∧ {(¬F i ∨ ¬F j ) | i ∈ {1, . . . , n}, j ∈ {1, . . . , n}, i < j}<br />

Die Formel ist <strong>in</strong> CNF, wenn F 1 , . . . , F n Literale s<strong>in</strong>d.<br />

Die Ko<strong>die</strong>rung <strong>der</strong> Bed<strong>in</strong>gung, dass genau e<strong>in</strong>e Formel wahr ist, ist nun <strong>die</strong> Konjunktion<br />

<strong>der</strong> at_least_one und at_most_one Formeln:<br />

exactly_one(S) = at_least_one(S) ∧ at_most_one(S)<br />

Beispiel 3.8.1. Wir betrachten das folgende Problem: s Studenten schreiben Klausuren. Der Dozent<br />

hat k verschiedene Klausurtypen entworfen und er weiß bereits, wie <strong>die</strong> Studenten im Klausurraum<br />

sitzen (er kennt <strong>die</strong> Paarungen aller benachbart sitzenden Studenten). Der Dozent möchte<br />

verh<strong>in</strong><strong>der</strong>n, dass benachbart sitzende Studenten den gleichen Klausurtyp erhalten. Das Problem<br />

besteht daher dar<strong>in</strong>, welcher Student welchen Klausurtyp erhält.<br />

Wir verwenden <strong>die</strong> Aussagenlogischen Variablen:<br />

s j i<br />

= Student i schreibt Klausurtyp j<br />

Das Problem hat im Grunde zwei Bed<strong>in</strong>gungen: Je<strong>der</strong> Student erhält genau e<strong>in</strong>e Klausur und<br />

benachbarte Studenten erhalten nicht <strong>die</strong> gleiche Klausur. Dies lässt sich ausdrücken durch:<br />

Je<strong>der</strong> Student erhält genau e<strong>in</strong>e Klausur:<br />

Benachbarte Studenten, nicht <strong>die</strong> gleiche Klausur:<br />

klausur_formel(s, k, benachbart) =<br />

s∧<br />

exactly_one({s j i<br />

} {{ | j ∈ {1..k}}) }<br />

i=1<br />

}{{} Student i genau e<strong>in</strong>e Klausur<br />

alle Studenten<br />

∧ ∧<br />

∧<br />

k<br />

j=1 (¬sj a ∨ ¬s j b )<br />

(a,b)∈benachbart<br />

Beachte, dass direkt e<strong>in</strong>e CNF erzeugt wird, <strong>die</strong> z.B. als E<strong>in</strong>gabe für <strong>die</strong> DPLL-Prozedur verwendet<br />

werden kann. Ist <strong>die</strong> Formel wi<strong>der</strong>sprüchlich, dann gibt es zu wenige Klausurtypen. Ist <strong>die</strong> Formel<br />

erfüllbar, so lässt sich aus dem Modell ablesen, welche Klausur je<strong>der</strong> Student erhält.<br />

Die Verallgeme<strong>in</strong>erung <strong>der</strong> bisher def<strong>in</strong>ierten Formeln, ist es K viele m<strong>in</strong>destens,<br />

höchstens, o<strong>der</strong> genau als wahr zu for<strong>der</strong>n. Hierfür bietet es sich an, als Vorarbeit alle<br />

Teilmengen <strong>der</strong> Mächtigkeit K <strong>der</strong> Menge S von Formeln zu berechnen.<br />

Sei all_subsets(S, K) = {S ′ ⊆ S | |S ′ | = K}. E<strong>in</strong>e rekursive Berechnung lässt sich z.B.<br />

aus folgen<strong>der</strong> Def<strong>in</strong>ition von all_subsets leicht herleiten:<br />

all_subsets(S, 0) = {{}}<br />

all_subsets(S, K) = {S}, wenn |S| = K<br />

all_subsets({s} ·∪S, K) = all_subsets(S, K)<br />

∪{{s} ∪ S ′ | S ′ ∈ all_subsets(S, K − 1)}<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 109 Stand: 25. November 2012


3 Aussagenlogik<br />

Wir betrachten zunächst den Fall, dass höchstens K Formeln aus S erfüllt werden sollen.<br />

Offensichtlich reicht hierfür aus, zu for<strong>der</strong>n, dass <strong>in</strong> allen K +1-elementigen Teilmengen<br />

von S m<strong>in</strong>destens e<strong>in</strong>e Formel falsch ist. Das ergibt:<br />

at_most(K, S) = ∧ ⎧<br />

⎨<br />

⎩ (¬F 1 ∨ . . . ∨ ¬F k+1 )<br />

} {{ }<br />

m<strong>in</strong>d. 1 falsch<br />

⎫<br />

⎬<br />

| {F 1 , . . . , F K+1 } ∈ all_subsets(S, K + 1)<br />

⎭<br />

Der Vorteil ist erneut, dass <strong>die</strong> erzeugte Formel bereits <strong>in</strong> CNF ist, wenn S nur Literale<br />

enthält.<br />

Zum Erzeugen e<strong>in</strong>er Formel, <strong>die</strong> zusichert, dass m<strong>in</strong>destens K Formeln aus S wahr<br />

s<strong>in</strong>d, kann man zunächst <strong>die</strong> Idee verwenden, dass <strong>in</strong> m<strong>in</strong>destens e<strong>in</strong>er K-Elementigen<br />

Teilmenge von S alle Formeln erfüllt se<strong>in</strong> müssen. Dies ergibt:<br />

⎧ ⎫<br />

⎪⎨<br />

at_least(K, S) = ∨ ∧<br />

⎪⎬<br />

S<br />

′<br />

| S ′ ∈ all_subsets(S, K)<br />

⎪ ⎩ } {{ }<br />

⎪⎭<br />

K wahr<br />

Allerd<strong>in</strong>gs ist <strong>die</strong>se Formel ke<strong>in</strong>e CNF, daher bietet es sich an <strong>die</strong> folgende Formel zu<br />

verwenden, <strong>die</strong> <strong>die</strong> Idee verwendet: Zunächst muss e<strong>in</strong>e Formel wahr se<strong>in</strong>, und zusätzlich<br />

müssen, wenn Formel F i wahr ist, K −1 weitere Formeln wahr se<strong>in</strong>. Daraus lässt sich e<strong>in</strong>e<br />

Formel <strong>in</strong> CNF (wenn S nur Literale enthält) herleiten:<br />

at_least(K, S)<br />

= at_least_one(S)<br />

∧ ∧ {f ⇒ ∨ S ′ | f ∈ S, S ′ ∈ all_subsets(S \ {f}, |S| − (K − 1))}<br />

= at_least_one(S)<br />

∧ ∧ {¬f ∨ ∨ S ′ | f ∈ S, S ′ ∈ all_subsets(S \ {f}, |S| − (K − 1))}<br />

Die Formel, <strong>die</strong> zusichert, dass genau K Formeln aus S wahr s<strong>in</strong>d, ist <strong>die</strong> Konjunktion<br />

<strong>der</strong> at_least und at_most Formeln:<br />

exactly(K, S) = at_least(K, S) ∧ at_most(K, S)<br />

Beispiel 3.8.2. Wir betrachten e<strong>in</strong>e Logelei aus <strong>der</strong> Zeit:<br />

Tom, e<strong>in</strong> Biologiestudent, sitzt verzweifelt <strong>in</strong> <strong>der</strong> Klausur, denn er hat vergessen, das Kapitel<br />

über <strong>die</strong> Wolfswürmer zu lernen. Das E<strong>in</strong>zige, was er weiß, ist, dass es bei den Multiple-Choice-<br />

Aufgaben immer genau 3 korrekte Antworten gibt. Und <strong>die</strong>s s<strong>in</strong>d <strong>die</strong> angebotenen Antworten:<br />

Stand: 25. November 2012 110 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.8 Modellierung von Problemen als Aussagenlogische Erfüllbarkeitsprobleme<br />

a) Wolfswürmer werden oft von Igelwürmern gefressen.<br />

b) Wolfswürmer meiden <strong>die</strong> Gesellschaft von Eselswürmern.<br />

c) Wolfswürmer ernähren sich von Lammwürmern.<br />

d) Wolfswürmer leben <strong>in</strong> <strong>der</strong> banesischen Tundra.<br />

e) Wolfswürmer gehören zur Gattung <strong>der</strong> Hundswürmer.<br />

f) Wolfswürmer s<strong>in</strong>d grau gestreift.<br />

g) Genau e<strong>in</strong>e <strong>der</strong> beiden Aussagen b) und e) ist richtig.<br />

h) Genau e<strong>in</strong>e <strong>der</strong> beiden Aussagen a) und d) ist richtig.<br />

i) Genau e<strong>in</strong>e <strong>der</strong> beiden Aussagen c) und h) ist richtig.<br />

j) Genau e<strong>in</strong>e <strong>der</strong> beiden Aussagen f) und i) ist richtig.<br />

k) Genau e<strong>in</strong>e <strong>der</strong> beiden Aussagen c) und d) ist richtig.<br />

l) Genau e<strong>in</strong>e <strong>der</strong> beiden Aussagen d) und h) ist richtig.<br />

Wir verwenden A, B, . . . , L als Variablen, sodass <strong>die</strong> entsprechende Aussage wahr ist, gdw. <strong>die</strong><br />

Variable wahr ist. Für <strong>die</strong> Aussagen a) bis f) müssen wir zunächst nichts ko<strong>die</strong>ren. Für g) bis l):<br />

• G ⇐⇒ B XOR E<br />

• H ⇐⇒ A XOR D<br />

• I ⇐⇒ C XOR H<br />

• J ⇐⇒ F XOR I<br />

• K ⇐⇒ C XOR D<br />

• L ⇐⇒ D XOR H<br />

Die Bed<strong>in</strong>gung, dass genau 3 Antworten richtig s<strong>in</strong>d, kann mit <strong>der</strong> exactly-Formel erzeugt werden:<br />

exactly(3, {A, B, C, D, E, F, G, H, I, J, K, L})<br />

Nach Konjunktion aller Aussagen und E<strong>in</strong>gabe <strong>in</strong> den DPLL-Algorithmus erhält man als Modell<br />

[-K,-J,-I,-G,-F,-E,-B,C,-L,-A,H,D], d.h. Tom muss<br />

c) Wolfswürmer ernähren sich von Lammwürmern.<br />

d) Wolfswürmer leben <strong>in</strong> <strong>der</strong> banesischen Tundra.<br />

h) Genau e<strong>in</strong>e <strong>der</strong> beiden Aussagen a) und d) ist richtig.<br />

ankreuzen.<br />

Schließlich betrachten wir größeres Beispiel, das Lösen Sudokus. Dabei ist e<strong>in</strong>e 9x9 Matrix<br />

gegeben, wobei e<strong>in</strong>ige Zelle schon Zahlen enthalten. Die Aufgabe ist es, alle Zellen mit<br />

Zahlen aus dem Bereich 1 bis 9 zu füllen, sodass <strong>in</strong> jede Zeile, <strong>in</strong> je<strong>der</strong> Spalte, und <strong>in</strong> je<strong>der</strong><br />

<strong>der</strong> 9 disjunkten 3x3 Teilmatrizen, e<strong>in</strong>e Permutation <strong>der</strong> Zahlen von 1 bis 9 steht.<br />

Z.B. kann man das Sudoku<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 111 Stand: 25. November 2012


3 Aussagenlogik<br />

3 6 5<br />

5 8 2 6<br />

4 6 8 3<br />

3 5 2<br />

2 3 9 8<br />

9 1 5<br />

folgen<strong>der</strong>maßen Vervollständigen (Lösen):<br />

6 4 1 5<br />

4 6 5<br />

1 7<br />

7 9 6 4 8 1 5 3 2<br />

1 2 3 6 5 9 8 4 7<br />

5 8 4 3 2 7 6 9 1<br />

4 6 9 8 1 2 7 4 3<br />

8 3 5 7 9 4 1 2 6<br />

2 1 7 5 6 3 9 8 4<br />

9 4 1 2 7 5 3 6 8<br />

3 7 8 9 4 6 2 1 5<br />

6 5 2 1 3 8 4 7 9<br />

Wir ko<strong>die</strong>ren e<strong>in</strong> Sudoku <strong>in</strong>dem wir direkt Zahlen als Variablen verwenden, negative<br />

Zahlen stehen dabei für <strong>die</strong> negierten Variablen. Wir verwenden dreistellige Zahlen XY Z,<br />

wobei<br />

• X = Zeile<br />

• Y = Spalte<br />

• V = Zahl <strong>die</strong> <strong>in</strong> <strong>der</strong> Zelle stehen kann <strong>in</strong> {1, . . . , 9}<br />

D.h. es gibt pro Zelle 9 Variablen von denen genau e<strong>in</strong>e Wahr se<strong>in</strong> muss.<br />

Die Klauselmenge zur Lösung des Sudokus besteht aus mehreren Teilen:<br />

Klauselmenge =<br />

Startbelegung<br />

∪ Fel<strong>der</strong>E<strong>in</strong>deutigBelegt<br />

∪ ZeilenBed<strong>in</strong>gung<br />

∪ SpaltenBed<strong>in</strong>gung<br />

∪ QuadratBed<strong>in</strong>gung<br />

Die Startbelegung gibt für manche Zellen vor, welche Zahl dort steht. In unserer Ko<strong>die</strong>rung<br />

fügen wir hierfpr den entsprechenden 1-Klauseln [XYV] h<strong>in</strong>zu, wenn <strong>in</strong> Zelle (X, Y )<br />

<strong>die</strong> Zahl V steht.<br />

Stand: 25. November 2012 112 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.9 Tableaukalkül für Aussagenlogik<br />

Die restlichen Klauseln s<strong>in</strong>d statisch für jeden 9x9 Sudokus. Zunächst müssen wir zusichern,<br />

dass <strong>in</strong> jedem Feld genau e<strong>in</strong>e Zahl steht. Hier für lässt sich <strong>die</strong> exactly_one-Formel<br />

verwenden:<br />

Fel<strong>der</strong>E<strong>in</strong>deutigBelegt =<br />

9 ∧<br />

9∧<br />

X=1 Y =1<br />

exactly_one({XY 1, . . . , XY 9})<br />

Die Zeilen- und Spaltenbed<strong>in</strong>gungen lassen sich ebenfalls durch exactly_one-Formeln<br />

ausdrücken, es reicht jedoch aus, <strong>die</strong> at_most_one-Formel zu verwenden, da <strong>der</strong> Rest<br />

bereits durch <strong>die</strong> e<strong>in</strong>deutige Belegung zugesichert wird.<br />

ZeilenBed<strong>in</strong>gung<br />

= 9 ∧<br />

SpaltenBed<strong>in</strong>gung = 9 ∧<br />

9∧<br />

X=1 V =1<br />

9∧<br />

Y =1 V =1<br />

at_most_one({X1V, . . . , X9V })<br />

at_most_one({1Y V, . . . , 9Y V })<br />

Schließlich brauchen wir noch <strong>die</strong> Bed<strong>in</strong>gungen für <strong>die</strong> 3x3 Quadrate<br />

QuadratBed<strong>in</strong>gung =<br />

⎛<br />

⎞<br />

at_most_one({11V, 12V, 13V, 21V, 22V, 23V, 31V, 32V, 33V })∧<br />

at_most_one({14V, 15V, 16V, 24V, 25V, 26V, 34V, 35V, 36V })∧<br />

at_most_one({17V, 18V, 19V, 27V, 28V, 29V, 37V, 38V, 39V })∧<br />

9∧<br />

at_most_one({41V, 42V, 43V, 51V, 52V, 53V, 61V, 62V, 63V })∧<br />

at_most_one({44V, 45V, 46V, 54V, 55V, 56V, 64V, 65V, 66V })∧<br />

V =1<br />

at_most_one({47V, 48V, 49V, 57V, 58V, 59V, 67V, 68V, 69V })∧<br />

at_most_one({71V, 72V, 73V, 81V, 82V, 83V, 91V, 92V, 93V })∧<br />

⎜<br />

⎟<br />

⎝ at_most_one({74V, 75V, 76V, 84V, 85V, 86V, 94V, 95V, 96V })∧ ⎠<br />

at_most_one({77V, 78V, 79V, 87V, 88V, 89V, 97V, 98V, 99V })<br />

Die erzeugten Klauselmengen lassen sich anschließend direkt <strong>in</strong> <strong>der</strong> DPLL-Prozedur<br />

verwenden. Die Programme zu Veranstaltung halten e<strong>in</strong> Programm, dass vollautomatisch<br />

nach <strong>die</strong>sem Verfahren Sudokus löst.<br />

3.9 Tableaukalkül für Aussagenlogik<br />

Im folgenden betrachten wir e<strong>in</strong>en Kalkül, den Tableaukalkül, auch analytischer Tableaukalkül<br />

genannt, <strong>der</strong> <strong>in</strong> verschiedenen Formen und Ausprägungen viele E<strong>in</strong>satzbereiche<br />

hat: u.a Aussagenlogik, Prädikatenlogik, Modallogik, mehrwertige Logik, und Programmanalysen.<br />

E<strong>in</strong> Tableau ist i.A. e<strong>in</strong>e baumförmig organisierte Datenstruktur, <strong>die</strong> mit (beliebigen)<br />

Formeln markiert ist, und <strong>die</strong> mit geeigneten Regeln aufgebaut wird. Die Formel an <strong>der</strong><br />

Wurzel ist bewiesen (e<strong>in</strong>e Tautologie), wenn das Tableau (<strong>der</strong> Baum) bestimmte Bed<strong>in</strong>gungen<br />

erfüllt. Wir betrachten hier e<strong>in</strong>e Variante des sogenannten analytischen Tableaukalküls,<br />

<strong>der</strong> e<strong>in</strong>e komplexe Formel Schritt für Schritt vere<strong>in</strong>facht und am Ende Literale<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 113 Stand: 25. November 2012


3 Aussagenlogik<br />

an den Blättern hat. Die zu überprüfende Bed<strong>in</strong>gung betrifft jeweils <strong>die</strong> Formeln auf den<br />

Pfaden.<br />

Grundbegriffe für den aussagenlogischen Tableaukalkül s<strong>in</strong>d:<br />

• α-Formeln (konjunktive Formeln) und<br />

• β-Formeln (disjunktive Formeln)<br />

Beachte, dass <strong>die</strong> Negationszeichen nicht nach <strong>in</strong>nen gezogen s<strong>in</strong>d.<br />

Die direkten Unterformeln <strong>der</strong> α-Formeln s<strong>in</strong>d:<br />

α α 1 α 2<br />

X ∧ Y X Y<br />

¬(X ∨ Y ) ¬X ¬Y<br />

¬(X ⇒ Y ) X ¬Y<br />

(X ⇐⇒ Y ) X ⇒ Y Y ⇒ X<br />

Die direkten Unterformeln <strong>der</strong> β-Formeln s<strong>in</strong>d:<br />

β β 1 β 2<br />

X ∨ Y X Y<br />

¬(X ∧ Y ) ¬X ¬Y<br />

X ⇒ Y ¬X Y<br />

¬(X ⇐⇒ Y ) ¬(X ⇒ Y ) ¬(Y ⇒ X)<br />

Es gilt: α ist äquivalent zu (α 1 ∧ α 2 ), und β ist äquivalent zu (β 1 ∨ β 2 ).<br />

3.9.1 Tableau-Kalkül für Aussagenlogik<br />

Ziel des Tableaukalküls ist: Beweise, dass e<strong>in</strong>e Aussage A e<strong>in</strong>e Tautologie ist. Damit kann<br />

man auch zeigen, dass e<strong>in</strong>e Aussage B aus e<strong>in</strong>er Menge von Aussagen A 1 , . . . , A n folgt:<br />

nämlich durch den Nachweis, dass A 1 ∧ . . . ∧ A n ⇒ B e<strong>in</strong>e Tautologie ist.<br />

Idee beim Tableau-Kalkül: Zeige, dass <strong>die</strong> Verne<strong>in</strong>ung e<strong>in</strong>e <strong>in</strong>konsistente Aussage ist.<br />

Def<strong>in</strong>ition 3.9.1. E<strong>in</strong> (aussagenlogisches) Tableau ist e<strong>in</strong> markierter Baum, wobei <strong>die</strong> Knoten mit<br />

aussagenlogischen Formeln markiert s<strong>in</strong>d. E<strong>in</strong> Pfad ist e<strong>in</strong> Weg von <strong>der</strong> Wurzel zum Blatt, wobei<br />

man alle Formeln auf dem Weg betrachtet.<br />

• E<strong>in</strong> Pfad ist geschlossen, wenn 0 vorkommt, o<strong>der</strong> e<strong>in</strong>e Formel X existiert, so dass auch ¬X<br />

auf <strong>die</strong>sem Pfad ist.<br />

• E<strong>in</strong> Pfad ist (atomar) geschlossen, wenn 0 vorkommt, o<strong>der</strong> e<strong>in</strong> Atom A existiert, so dass<br />

auch ¬A auf <strong>die</strong>sem Pfad ist.<br />

• E<strong>in</strong> Tableau ist (atomar) geschlossen, wenn alle Pfade (atomar) geschlossen s<strong>in</strong>d.<br />

Stand: 25. November 2012 114 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.9 Tableaukalkül für Aussagenlogik<br />

Man kann <strong>die</strong> Regeln ansehen als Tableau-Aufbauregeln o<strong>der</strong> als Transformationsregeln<br />

auf Tableaus. Wir werden <strong>die</strong> Sichtweise <strong>der</strong> Tableau-Aufbauregeln verfolgen, denn<br />

dann gibt es ke<strong>in</strong>en Unterschied zwischen <strong>der</strong> Situation beim Aufbau und <strong>der</strong> Situation<br />

des fertigen (geschlossenen) Tableaus. Im Falle von Transformationsregeln könnte es se<strong>in</strong>,<br />

dass das fertige Tableau ke<strong>in</strong>e Überprüfung <strong>der</strong> Aufbauregeln zuläßt.<br />

Def<strong>in</strong>ition 3.9.2. Der Tableaukalkül T K A hat als E<strong>in</strong>gabe e<strong>in</strong>e Formel F . Initial wird e<strong>in</strong> Tableau<br />

mit e<strong>in</strong>em Knoten und <strong>der</strong> Formel ¬F erzeugt. Danach werden ausgehend vom <strong>in</strong>itialen Tableau<br />

weitere Tableaus erzeugt mit folgenden Expansionsregeln:<br />

¬¬X<br />

X<br />

α<br />

α 1<br />

α 2<br />

β ¬0<br />

β 1 | β 2 1<br />

¬1<br />

0<br />

Diese Regeln s<strong>in</strong>d wie folgt zu verstehen: Sei θ e<strong>in</strong> Pfad im Tableau T , und <strong>die</strong> obere Formel F o<br />

e<strong>in</strong>e Markierung e<strong>in</strong>es Knotens auf <strong>die</strong>sem Pfad, dann erweitere das Tableau durch Verlängern des<br />

Pfades θ (d.h. Anhängen an das Blatt des Pfades) um e<strong>in</strong>en mit <strong>der</strong> unteren Formel F u markierten<br />

Knoten. Stehen unten zwei o<strong>der</strong> mehrere durch | getrennte Formeln, dann sollen entsprechend<br />

viele Blätter als Töchter angehängt werden, mit <strong>der</strong> jeweiligen Formel markiert. Danach verzweigt<br />

<strong>der</strong> Pfad θ am alten Blatt zu mehreren Pfaden.<br />

Stehen zwei o<strong>der</strong> mehr Formeln untere<strong>in</strong>an<strong>der</strong>, dann sollen <strong>in</strong> Folge an den Pfad θ zwei o<strong>der</strong><br />

mehrere Blätter (mit den jeweiligen Formeln markiert) angehängt werden.<br />

Wenn oben e<strong>in</strong>e α-Formel steht, erweitere erst um α 1 , dann den neuen Knoten um α 2 . Wenn<br />

oben e<strong>in</strong>e β-Formel steht, hänge zwei markierte Knoten als Töchter an, e<strong>in</strong>e mit β 1 e<strong>in</strong>e mit β 2<br />

markiert.<br />

Als E<strong>in</strong>schränkung wird verwendet, dass jede Formel auf jedem Pfad nur e<strong>in</strong>mal analysiert (bzw.<br />

expan<strong>die</strong>rt) wird.<br />

E<strong>in</strong> Formel F ist (als Tautologie) bewiesen, wenn aus dem Tableau mit e<strong>in</strong>em Knoten und <strong>der</strong><br />

Formel ¬F e<strong>in</strong> geschlossenes Tableau erzeugt worden ist.<br />

Im allgeme<strong>in</strong>en wird man <strong>die</strong> Formel direkt am Blatt markieren. Allerd<strong>in</strong>gs kommt es<br />

auch vor, dass e<strong>in</strong>e Formel, <strong>die</strong> nicht das Blatt ist, expan<strong>die</strong>rt wird.<br />

Diese Regeln s<strong>in</strong>d nicht-determ<strong>in</strong>istisch, d.h. es gibt ke<strong>in</strong>e genaue Angabe, welche Formel<br />

zu expan<strong>die</strong>ren ist. Diese Formulierung ist gewählt, um e<strong>in</strong>e möglichst große Freiheit<br />

bei <strong>der</strong> Anwendung zu haben, mit <strong>der</strong> Garantie, dass <strong>die</strong> Anwendung korrekt bleibt.<br />

Allerd<strong>in</strong>gs sollte man <strong>in</strong> e<strong>in</strong>er effizienten Implementierung zunächst <strong>die</strong> besten Schritte<br />

machen: D.h. möglichst wenig verzweigen. Dies wird durch Bevorzugung <strong>der</strong> α-Regeln<br />

erreicht. Außerdem sollte man Formeln nicht zweimal auf dem gleichen Pfad expan<strong>die</strong>ren.<br />

Beispiel 3.9.3. Wir zeigen e<strong>in</strong> (das) Tableau für X ∧ ¬X:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 115 Stand: 25. November 2012


3 Aussagenlogik<br />

X ∧ ¬X<br />

|<br />

X<br />

|<br />

¬X<br />

Beispiel 3.9.4. E<strong>in</strong> Tableau für ¬(X ∧ Y ⇒ X):<br />

Beide Tableaus s<strong>in</strong>d atomar geschlossen.<br />

¬(X ∧ Y ⇒ X)<br />

|<br />

X ∧ Y<br />

|<br />

¬X<br />

|<br />

X<br />

|<br />

Y<br />

Zur Optimierung <strong>der</strong> Analyse von Aussagen <strong>der</strong> Form A ⇔ B gibt es e<strong>in</strong>e bessere<br />

Alternative:<br />

Erf<strong>in</strong>de neue Tableau-Expansionsregeln<br />

A ⇔ B<br />

A ¬A<br />

B ¬B<br />

¬(A ⇔ B)<br />

A ¬A<br />

¬B B<br />

Bemerkung 3.9.5. Im Falle <strong>der</strong> Aussagenlogik kann man statt <strong>der</strong> nichtdeterm<strong>in</strong>istischen Wahl<br />

<strong>der</strong> Formel und des Pfades, auf dem dann expan<strong>die</strong>rt wird, e<strong>in</strong>e Formel F auswählen, und <strong>die</strong>se<br />

dann <strong>in</strong> allen Pfaden expan<strong>die</strong>ren, <strong>die</strong> unterhalb <strong>der</strong> Formel enden. In <strong>die</strong>sem Fall wird <strong>der</strong><br />

Term<strong>in</strong>ierungsbeweis <strong>der</strong> Kalkülregeln vere<strong>in</strong>facht. Allerd<strong>in</strong>gs verliert man dadurch etwas an Flexibilität,<br />

welche Strategien des Tableau-Aufbaus man verwenden darf.<br />

Hat man <strong>die</strong> Aufgabe zu zeigen, dass B aus A 1 , . . . , A n folgt, so kann man daraus sofort<br />

e<strong>in</strong> Tableau machen:<br />

Stand: 25. November 2012 116 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.9 Tableaukalkül für Aussagenlogik<br />

A 1<br />

|<br />

. . .<br />

|<br />

A n<br />

|<br />

¬B<br />

Beispiel 3.9.6. Zeige, dass P ⇒ (Q ⇒ P ) e<strong>in</strong>e Tautologie ist:<br />

¬(P ⇒ (Q ⇒ P ))<br />

|<br />

P<br />

|<br />

¬(Q ⇒ P )<br />

|<br />

Q<br />

|<br />

¬P<br />

Das Tableau ist geschlossen, da P und ¬P auf dem e<strong>in</strong>en Pfad liegen.<br />

Beispiel 3.9.7. (Transitivität <strong>der</strong> Implikation)<br />

((P ⇒ Q) ∧ (Q ⇒ R)) ⇒ (P ⇒ R):<br />

(P ⇒ Q)<br />

|<br />

(Q ⇒ R)<br />

|<br />

¬(P ⇒ R)<br />

|<br />

P<br />

|<br />

¬R<br />

❅<br />

❅<br />

¬P Q<br />

❅<br />

geschlossen ¬Q R<br />

beide geschlossen<br />

Der Nachweis <strong>der</strong> algorithmischen Korrektheit des Tableaukalküls für Aussagenlogik be-<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 117 Stand: 25. November 2012


3 Aussagenlogik<br />

steht aus zwei Teilen:<br />

1. Korrektheit (Soundness): Der Kalkül erzeugt geschlossene Tableaus nur für Tautologien<br />

2. Vollständigkeit (completeness): Für jede Tautologie kann <strong>der</strong> Tableaukalkül e<strong>in</strong> geschlossenes<br />

Tableau erzeugen.<br />

Im folgenden verwenden wir “Korrektheit“ im S<strong>in</strong>ne <strong>der</strong> Soundness.<br />

Def<strong>in</strong>ition 3.9.8. E<strong>in</strong> Pfad e<strong>in</strong>es Tableaus ist erfüllbar, wenn <strong>die</strong> Konjunktion aller Formeln auf<br />

dem Pfad erfüllbar ist. E<strong>in</strong> Tableau ist erfüllbar, wenn es e<strong>in</strong>en Pfad gibt, <strong>der</strong> erfüllbar ist.<br />

Beachte: Wenn e<strong>in</strong>e Menge <strong>die</strong> Formel 0 o<strong>der</strong> ¬1 enthält, dann ist sie nicht erfüllbar.<br />

E<strong>in</strong> geschlossenes Tableau ist nicht erfüllbar.<br />

Lemma 3.9.9. Für <strong>die</strong> Tableau-Expansionsregeln gilt: Wenn T zu T ′ expan<strong>die</strong>rt wird, dann ist<br />

T erfüllbar gdw. T ′ erfüllbar.<br />

Beweis. “⇒“ Es genügt, sich e<strong>in</strong>en erfüllbaren Pfad θ anzuschauen, und e<strong>in</strong>e Interpretation<br />

I <strong>der</strong> aussagenlogischen Variablen zu wählen, <strong>die</strong> alle Formeln des Pfades θ wahr<br />

macht und alle Fälle <strong>der</strong> Expansionsregeln durchzugehen.<br />

• Wenn ¬¬X <strong>in</strong> θ, dann ist I(¬¬X) = 1 wahr, also auch I(X) = 1<br />

• Wenn für <strong>die</strong> α-Formel X ∧ Y gilt, dass I(X ∧ Y ) = 1, dann auch I(X) = I(Y ) = 1.<br />

• Wenn für <strong>die</strong> β-Formel X ∨ Y gilt dass I(X ∨ Y ), dann gilt auch entwe<strong>der</strong> I(X) = 1<br />

o<strong>der</strong> I(Y ) = 1. Somit ist e<strong>in</strong>er <strong>der</strong> Pfade, <strong>die</strong> θ fortsetzen, erfüllbar, entwe<strong>der</strong> <strong>der</strong><br />

mit dem Blatt X, o<strong>der</strong> <strong>der</strong> mit dem Blatt Y .<br />

• Analog für <strong>die</strong> an<strong>der</strong>en α und β-Formeln.<br />

“⇐“: Wenn e<strong>in</strong> Pfad <strong>in</strong> T ′ erfüllbar ist, dann ist auch <strong>der</strong> verkürzte Pfad <strong>in</strong> T , <strong>der</strong> den<br />

Pfad T ′ erzeugt hat, erfüllbar.<br />

Korollar 3.9.10. Der Tableaukalkül T K A ist sound.<br />

Beweis. Gegeben e<strong>in</strong>e Formel F , <strong>die</strong> ke<strong>in</strong>e Tautologie ist. Dann ist ¬F erfüllbar. Der Tableaukalkül<br />

startet mit ¬F , also ist das <strong>in</strong>itiale Tableau erfüllbar, also auch alle daraus<br />

erzeugten, <strong>in</strong>sbeson<strong>der</strong>e kann ke<strong>in</strong> geschlossenes Tableau erzeugt werden.<br />

Die Vollständigkeit kann im Fall <strong>der</strong> Aussagenlogik auf relativ e<strong>in</strong>fache Weise gezeigt<br />

werden, allerd<strong>in</strong>gs ist <strong>die</strong>se Beweis-Methode nicht auf allgeme<strong>in</strong>ere Logiken übertragbar.<br />

Zwischenziel: Zeige <strong>die</strong> Term<strong>in</strong>ierung des Tableaukalkül für Aussagenlogik.<br />

Stand: 25. November 2012 118 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


3.9 Tableaukalkül für Aussagenlogik<br />

Bemerkung 3.9.11. Er<strong>in</strong>nerung:<br />

E<strong>in</strong> fun<strong>die</strong>rte (well-founded) Ordnung ist e<strong>in</strong>e partielle Ordnung ≥ auf e<strong>in</strong>er Menge M, so<br />

dass es ke<strong>in</strong>e unendlich absteigenden Ketten a 1 > a 2 > . . . <strong>in</strong> M gibt.<br />

Es gilt: Die lexikographische Komb<strong>in</strong>ation von fun<strong>die</strong>rten Ordnungen ist wie<strong>der</strong> fun<strong>die</strong>rte<br />

Ordnung. D.h. Seien M 1 , ≥ 1 und M 2 , ≥ 2 fun<strong>die</strong>rte Ordnungen. Dann ist M 1 × M 2 mit <strong>der</strong><br />

Ordnung (m 1 , m 2 ) > 12 (m ′ 1 , m′ 2 ) gdw. m 1 > 1 m ′ 1 o<strong>der</strong> (m 1 = 1 m ′ 1 und m 2 > 2 m ′ 2 ) fun<strong>die</strong>rt.<br />

E<strong>in</strong>e weitere nützliche Konstruktion von fun<strong>die</strong>rten Ordnungen gibt es mittels Multimengen,<br />

sogenannte Multimengenordnungen: Sei (M, >) e<strong>in</strong>e Menge mit fun<strong>die</strong>rter Ordnung, dann kann<br />

man auf Multimengen (Mengen bei denen mehrfaches Vorkommen von Elementen erlaubt ist) über<br />

M e<strong>in</strong>e Ordnung erklären:<br />

Seien A und B Multimengen über M, dann def<strong>in</strong>iert man A >> B, wenn es weitere Multimengen<br />

X und Y gibt, so dass B = (A\X)∪Y und es zu jedem Element von Y e<strong>in</strong> echt größeres<br />

Element <strong>in</strong> X gibt.<br />

Es gilt: Die Multimengenordnung >> ist e<strong>in</strong>e partielle Ordnung. Sie ist fun<strong>die</strong>rt, gdw. > fun<strong>die</strong>rt<br />

ist.<br />

Z. B Nimmt man <strong>die</strong> natürlichen Zahlen mit <strong>der</strong> >-Ordnung, dann gilt {3, 3, 2, 1} >><br />

{3, 2, 2, 2}, denn {3, 2, 2, 2} = {3, 3, 2, 1} \ {3, 1} ∪ {2, 2, 2}.<br />

Mit folgen<strong>der</strong> Steuerung term<strong>in</strong>iert <strong>der</strong> Tableaukalkül: Jede Formel wird auf jedem Pfad<br />

nur e<strong>in</strong>mal expan<strong>die</strong>rt.<br />

Beachte, dass e<strong>in</strong>e Formel <strong>die</strong> als Markierung e<strong>in</strong>es Knoten auftritt, möglicherweise<br />

mehrfach expan<strong>die</strong>rt werden muß, da mehrere Pfade h<strong>in</strong>durchgehen können. Dies ist unabhängig<br />

von <strong>der</strong> Art <strong>der</strong> Formel.<br />

Jeden Pfad können wir e<strong>in</strong>em Blatt zuordnen, dem Endknoten des Pfades.<br />

Lemma 3.9.12. Der Tableaukalkül für Aussagenlogik term<strong>in</strong>iert, wenn man jede Formel auf jedem<br />

Pfad höchstens e<strong>in</strong>mal expan<strong>die</strong>rt.<br />

Beweis. Wir konstruieren e<strong>in</strong> fun<strong>die</strong>rtes Maß für <strong>die</strong> Größe e<strong>in</strong>es Tableaus als Multimenge,<br />

so dass jede Expansionsregel <strong>die</strong>ses Maß verkle<strong>in</strong>ert.<br />

1. Die Größe e<strong>in</strong>er Formel sei e<strong>in</strong>e gewichtete Anzahl <strong>der</strong> Zeichen: Das Zeichen ⇐⇒<br />

wird doppelt gezählt, Klammern werden nicht gezählt, alle an<strong>der</strong>en e<strong>in</strong>fach.<br />

2. Die Größe e<strong>in</strong>es Pfades wird gemessen durch <strong>die</strong> Multimenge <strong>der</strong> Größe <strong>der</strong> Formeln<br />

an se<strong>in</strong>en Knoten, wobei <strong>der</strong> Expansions-status für <strong>die</strong>sen Pfad noch berücksichtigt<br />

werden muß: E<strong>in</strong> Knoten wird nur dann <strong>in</strong> das Maß aufgenommen, wenn<br />

er auf <strong>die</strong>sem Pfad noch nicht expan<strong>die</strong>rt worden ist.<br />

3. Die Größe des Tableaus ist <strong>die</strong> Multimenge <strong>der</strong> Größe aller nicht geschlossenen Pfade.<br />

Betrachte typische Fälle <strong>der</strong> Expansionsregeln:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 119 Stand: 25. November 2012


3 Aussagenlogik<br />

• ¬¬X → X macht e<strong>in</strong>en Pfad kle<strong>in</strong>er, unabhängig von <strong>der</strong> Art <strong>der</strong> Formel X, da<br />

danach ¬¬X <strong>in</strong> <strong>die</strong>sem Pfad schon expan<strong>die</strong>rt wurde. D.h. im Maß des Pfades wird<br />

<strong>die</strong> Größe von ¬¬X durch <strong>die</strong> Größe von X ersetzt.<br />

• X ∧ Y wird durch X, Y ersetzt. D.h. gr(X) + gr(Y ) + 1 wird im Maß des Pfades<br />

durch {gr(X), gr(Y )} ersetzt. Analog für <strong>die</strong> an<strong>der</strong>en α-Formeln.<br />

• X ∨ Y wird durch X | Y ersetzt. D.h. es werden zwei Pfade erzeugt. D.h e<strong>in</strong> Pfad θ<br />

wird durch zwei an<strong>der</strong>e ersetzt. Im Maß wirkt sich das wie folgt aus: Da gr(X∨Y ) ><br />

gr(X), gr(Y ) für alle Formeln X, Y . Dadurch wird gr(θ) >> gr(θ 1 ) und gr(θ) >><br />

gr(θ 2 ). Damit wird <strong>die</strong> Multimenge aller Pfade kle<strong>in</strong>er.<br />

• X ⇐⇒ Y wird durch X ⇒ Y und Y ⇒ X ersetzt. Da gr(X ⇐⇒ Y ) − 1 =<br />

gr(X ⇒ Y ), kann man <strong>die</strong> gleiche Argumentation wie oben anwenden.<br />

• An<strong>der</strong>e Fälle analog.<br />

Das zugehörige Maß für das Tableau ist fun<strong>die</strong>rt, also term<strong>in</strong>iert das Verfahren.<br />

Lemma 3.9.13. Sei T e<strong>in</strong> Tableau, auf das ke<strong>in</strong>e Expansionsregeln mehr angewendet werden können.<br />

Dann ist je<strong>der</strong> Pfad entwe<strong>der</strong> geschlossen o<strong>der</strong> <strong>die</strong> Menge <strong>der</strong> Aussagen auf dem Pfad ist<br />

erfüllbar<br />

Theorem 3.9.14. Der Tableaukalkül für Aussagenlogik term<strong>in</strong>iert, ist korrekt und vollständig.<br />

Satz 3.9.15. Der Tableaukalkül konstruiert für erfüllbare Formeln e<strong>in</strong> Modell. E<strong>in</strong> Modell kann<br />

man ablesen an jedem Pfad, <strong>der</strong> nicht geschlossen ist, aber auch nicht weiter expan<strong>die</strong>rt werden<br />

kann.<br />

Stand: 25. November 2012 120 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4<br />

Prädikatenlogik<br />

4.1 Syntax und Semantik <strong>der</strong> Prädikatenlogik (P L 1 )<br />

Prädikatenlogik (PL) ist e<strong>in</strong>e ausdrucksstarke Logik, <strong>die</strong> im Pr<strong>in</strong>zip für sehr viele Anwendungen<br />

ausreicht.<br />

Man unterscheidet verschiedene Stufen <strong>der</strong> Prädikatenlogik. Prädikatenlogik 0.Stufe<br />

(P L 0 ) ist <strong>die</strong> Aussagenlogik. Sie erlaubt ke<strong>in</strong>e Quantifikationen. Prädikatenlogik erster<br />

Stufe (P L 1 ) dagegen erlaubt schon Quantifikationen über Individuenvariablen. Prädikatenlogik<br />

2.Stufe (P L 2 ) erlaubt darüberh<strong>in</strong>aus noch unabhängig Quantifikationen über <strong>die</strong><br />

Funktionen und Relationen über <strong>die</strong>se Trägermenge. Man kann also z.B. <strong>in</strong> P L 2 h<strong>in</strong>schreiben<br />

„∀x : ∃f : ∀P : P (f(x, f))“, was <strong>in</strong> P L 1 nicht geht. Prädikatenlogik noch höherer<br />

Stufe erlaubt Quantifizierungen über <strong>die</strong> Funktionen und Relationen über <strong>der</strong> Funktionsund<br />

Relationsmenge usw. (Ebb<strong>in</strong>ghaus et al., 1986).<br />

Aus praktischer Sicht gibt es viele Zusammenhänge, <strong>die</strong> sich <strong>in</strong> an<strong>der</strong>en Logiken wesentlich<br />

eleganter und e<strong>in</strong>facher formulieren lassen als <strong>in</strong> P L n .<br />

4.1.1 Syntax <strong>der</strong> Prädikatenlogik erster Stufe<br />

P L 1 ist e<strong>in</strong>e Erweiterung <strong>der</strong> Aussagenlogik. Wie für <strong>die</strong> meisten Logiken besteht <strong>die</strong><br />

Syntaxbeschreibung aus den drei Komponenten:<br />

• Signatur<br />

• Bildungsregeln für Terme<br />

• Bildungsregeln für Formeln<br />

Stand: 25. November 2012 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4 Prädikatenlogik<br />

Die Signatur gibt das Alphabet an, aus dem <strong>die</strong> zusammengesetzten Objekte bestehen.<br />

Man unterscheidet Funktions- und Prädikatensymbole. Neben <strong>die</strong>sen Symbolen gibt es noch<br />

unendliche viele Variablensymbole, <strong>die</strong> nicht zur Signatur gerechnet werden.<br />

Beispiel 4.1.1. In e<strong>in</strong>er Formel „∀x : ∃y : P (x, f(y))“ s<strong>in</strong>d x und y Variablensymbole, f ist e<strong>in</strong><br />

e<strong>in</strong>stelliges Funktionssymbol und P e<strong>in</strong> zweistelliges Prädikatensymbol.<br />

Aus den Variablen- und Funktionssymbolen lassen sich Terme aufbauen (f(y) ist zum<br />

Beispiel e<strong>in</strong> Term) und damit und mit den Prädikatensymbolen Atome, Literale und Formeln.<br />

Terme bezeichnen Objekte e<strong>in</strong>er Trägermenge und Formeln bezeichnen Wahrheitswerte.<br />

Die formale Def<strong>in</strong>ition ist:<br />

Def<strong>in</strong>ition 4.1.2 (Syntax von P L 1 ). Die Syntax von P L 1 besteht zunächst aus e<strong>in</strong>er Signatur<br />

Σ, darauf aufbauend werden Terme erzeugt, <strong>die</strong> schließlich <strong>in</strong>nerhalb von Formeln verwendet<br />

werden:<br />

Signatur: E<strong>in</strong>e Signatur Σ ist e<strong>in</strong> Paar Σ = (F, P), wobei<br />

• F ist <strong>die</strong> Menge <strong>der</strong> Funktionssymbole<br />

• P ist <strong>die</strong> Menge <strong>der</strong> Prädikatensymbole<br />

Diese Mengen s<strong>in</strong>d disjunkt. Daneben braucht man noch <strong>die</strong> Menge V <strong>der</strong> Variablensymbole<br />

(abzählbar unendlich viele). Diese Menge ist ebenfalls disjunkt zu F und P.<br />

Jedem Funktions- und Prädikatensymbol f ∈ Σ ist e<strong>in</strong>deutig e<strong>in</strong>e Stelligkeit arity(f) ≥ 0<br />

zugeordnet, <strong>die</strong> angibt wieviele Argumente das Funktions- o<strong>der</strong> Prädikatensymbole erhält.<br />

Funktionssymbole mit <strong>der</strong> Stelligkeit 0 bezeichnet man auch als Konstantensymbole, d.h.<br />

<strong>die</strong> Menge <strong>der</strong> Konstantensymbole ist gerade {f ∈ F | arity(f) = 0}. Es muß m<strong>in</strong>destens<br />

e<strong>in</strong> Konstantensymbol <strong>in</strong> F vorhanden se<strong>in</strong>!<br />

Terme: Die Menge <strong>der</strong> Terme T (Σ, V ) über <strong>der</strong> Signatur Σ = (F, P) und den Variablen V<br />

wird <strong>in</strong>duktiv als <strong>die</strong> kle<strong>in</strong>ste Menge def<strong>in</strong>iert, <strong>die</strong> folgendes erfüllt:<br />

• V ⊆ T (Σ, V )<br />

• falls f ∈ F, arity(f) = n, t 1 , . . . t n ∈ T (Σ, V ) dann f(t 1 , . . . t n ) ∈ T (Σ, V ). Hierbei<br />

ist f(t 1 , . . . t n ) zu lesen als Zeichenkette bzw. als e<strong>in</strong> Baum.<br />

Formeln: Die Menge <strong>der</strong> Formeln F (Σ, V ) über <strong>der</strong> Signatur Σ = (F, P) und den Variablen<br />

V wird <strong>in</strong>duktiv als <strong>die</strong> kle<strong>in</strong>ste Menge def<strong>in</strong>iert, <strong>die</strong> folgendes erfüllt:<br />

• falls P ∈ P, arity(P ) = n, t 1 , . . . , t n ∈ T (Σ, V ) dann P (t 1 , . . . t n ) ∈ F (Σ, V )<br />

(Atom) . Auch hier ist P (t 1 , . . . t n ) als Zeichenkette zu lesen.<br />

• falls F, G ∈ F (Σ, V ) und x ∈ V , dann auch: (¬F ), (F ∨ G), (F ∧ G), (F ⇒<br />

G), (F ⇔ G), (∀x : F ) und (∃x : F ) ∈ F (Σ, V ).<br />

Stand: 25. November 2012 122 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.1 Syntax und Semantik <strong>der</strong> Prädikatenlogik (P L 1 )<br />

Wir machen bei den Schreibweisen e<strong>in</strong>ige Vere<strong>in</strong>fachungen: Geschachtelte gleiche<br />

Quantoren schreiben wir als Quantor über mehreren Variablen: ∀x : ∀y : F wird als<br />

∀x, y : F geschrieben. In Formeln werden zum Teil Klammern weggelassen, wenn <strong>die</strong><br />

E<strong>in</strong>deutigkeit gewährleistet bleibt, mit den üblichen Prioritätsregeln. Weiterh<strong>in</strong> erlauben<br />

wir auch als Formelkonstanten <strong>die</strong> Formeln false und true.<br />

Beispiel 4.1.3. Signatur Σ := ({a, b, f, g}, {P, Q, R}) mit arity(a) = arity(b) = arity(P ) =<br />

0, arity(f) = arity(Q) = 1 arity(g) = arity(R) = 2. V = {x, y, z, . . .}<br />

T (Σ, V ) = F (Σ, V ) =<br />

f(a), f(b), f(x), . . .<br />

g(a, a), g(a, b), g(a, f(a)), . . .<br />

f(f(a)), f(f(b)), . . . f(g(a, a)), . . .<br />

g(f(f(a)), a), . . .<br />

. . .<br />

{P, Q(a), Q(b), Q(x), . . . , R(a, a), . . . R(a, b), . . .<br />

¬P, ¬Q(a), . . .<br />

P ∧ Q(a), P ∧ ¬Q(a), . . .<br />

P ∨ Q(a), P ∨ ¬Q(a), . . .<br />

P ⇒ Q(a), P ⇔ ¬Q(a), . . .<br />

∀x : Q(x), . . .<br />

∃x : R(x, y) ⇒ Q(x), . . .<br />

Mit <strong>der</strong> For<strong>der</strong>ung, dass m<strong>in</strong>destens e<strong>in</strong> Konstantensymbol vorhanden se<strong>in</strong> muss, ist<br />

implizit verbunden, dass <strong>die</strong> Trägermengen, über <strong>die</strong> <strong>in</strong> e<strong>in</strong>er jeweiligen Interpretation<br />

quantifiziert wird, nicht leer se<strong>in</strong> kann – es muss m<strong>in</strong>destens e<strong>in</strong> Element vorhanden se<strong>in</strong>,<br />

auf das <strong>die</strong>ses Konstantensymbol abgebildet wird. Damit verh<strong>in</strong><strong>der</strong>t man, dass Quantifizierungen<br />

<strong>der</strong> Art „∀x : (P ∧ ¬P )“ wahr gemacht werden können; <strong>in</strong>dem <strong>die</strong> Menge,<br />

über <strong>die</strong> quantifiziert wird, leer ist. E<strong>in</strong>ige <strong>der</strong> logischen Verknüpfungen, wie z.B. ⇒ und<br />

⇔ s<strong>in</strong>d redundant. Sie können durch <strong>die</strong> an<strong>der</strong>en dargestellt werden. Bei <strong>der</strong> Herstellung<br />

<strong>der</strong> Klauselnormalform (Abschnitt 4.1.4) werden sie dann auch konsequenterweise wie<strong>der</strong><br />

elim<strong>in</strong>iert. Nichtsdestotrotz erleichtern sie <strong>die</strong> Lesbarkeit von Formeln beträchtlich<br />

und s<strong>in</strong>d daher mit e<strong>in</strong>geführt worden.<br />

Def<strong>in</strong>ition 4.1.4 (Konventionen). Wir verwenden <strong>die</strong> folgenden Konventionen:<br />

• Da 0-stellige Funktionssymbole als Konstantensymbole <strong>die</strong>nen 1 , schreibt man im allgeme<strong>in</strong>en<br />

nicht „a()“ son<strong>der</strong>n e<strong>in</strong>fach nur „a“<br />

• Variablen s<strong>in</strong>d genau e<strong>in</strong>em Quantor zugeordnet Insbeson<strong>der</strong>e gelten ähnlich wie <strong>in</strong> den<br />

meisten Programmiersprachen <strong>die</strong> schon gewohnten Bereichsregeln (lexical scop<strong>in</strong>g) für Variable.<br />

D. h. Formeln <strong>der</strong> Art ∀x : ∃x : P (x) haben nicht <strong>die</strong> vermutete Bedeutung, nämlich<br />

dass für alle x das gleiche x existiert, son<strong>der</strong>n x ist gebunden <strong>in</strong> ∃x : P (x) und dass äußere<br />

x <strong>in</strong> alle ∀x : kann das <strong>in</strong>nere x nicht bee<strong>in</strong>flussen. D.h. <strong>die</strong> Formel ∀x : ∃x : P (x)<br />

1 Indem man Konstantensymbole nicht extra ausweist, spart man sich <strong>in</strong> vielen Fallunterscheidungen eben<br />

<strong>die</strong>sen speziellen Fall.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 123 Stand: 25. November 2012


4 Prädikatenlogik<br />

ist zu ∀y : ∃x : P (x) und daher zu ∃x : P (x) äquivalent. Da man unendlich viele Variablensymbole<br />

zur Verfügung hat, kann man <strong>in</strong> jedem Fall für jeden Quantor e<strong>in</strong> an<strong>der</strong>es<br />

Variablensymbol wählen.<br />

• Meist haben <strong>die</strong> logischen Verknüpfungssymbole <strong>die</strong> B<strong>in</strong>dungsordnung ⇒, ⇔, ∧, ∨, ¬ , d.h.<br />

⇒ b<strong>in</strong>det am schwächsten und ¬ am stärksten. Danach gilt e<strong>in</strong>e Formel ¬A ∧ B ∨ C ⇒<br />

D ⇔ E ∧ F als folgen<strong>der</strong>maßen strukturiert: ((¬A) ∧ (B ∨ C)) ⇒ (D ⇔ (E ∧ F )).<br />

Quantoren b<strong>in</strong>den, soweit <strong>die</strong> quantifizierte Variable vorkommt. D.h. ∀x : P (x) ∧ Q steht<br />

für (∀x : P (x))∧Q während ∀x : P (x)∧R(x) für (∀x : (P (x)∧R(x))) steht. Um Zweifel<br />

auszuschließen, werden aber meist <strong>die</strong> Klammern explizit angegeben.<br />

• Im Folgenden wird <strong>die</strong> allgeme<strong>in</strong> übliche Konvention für <strong>die</strong> Benutzung des Alphabets verwendet:<br />

Buchstaben am Ende des Alphabets, d.h. u, v, w, x, y, z bezeichnen Variablensymbole.<br />

Buchstaben am Anfang des Alphabets, d.h. a, b, c, d, e bezeichnen Konstantensymbole.<br />

Die Buchstaben f, g, h werden für Funktionssymbole benutzt. Die großen Buchstaben<br />

P, Q, R, T werden für Prädikatensymbole benutzt.<br />

Die Syntax <strong>der</strong> Terme und Formeln wurde <strong>in</strong>duktiv def<strong>in</strong>iert: Aus den e<strong>in</strong>fachen Objekten,<br />

Variable im Fall von Termen und Atome im Fall von Formeln wurden mit Hilfe<br />

von Konstruktionsvorschriften <strong>die</strong> komplexeren Objekte aufgebaut. Damit hat man e<strong>in</strong>e<br />

Datenstruktur, <strong>die</strong> e<strong>in</strong>e Syntaxbaum hat, <strong>der</strong> mit verschiedenen Konstruktoren aufgebaut<br />

wurde. Def<strong>in</strong>itionen, Algorithmen, Argumentation und Beweise müssen nun jeweils rekursiv<br />

(<strong>in</strong>duktiv) gemacht werden, wobei man stets Fallunterscheidung und Induktion<br />

über <strong>die</strong> Struktur <strong>der</strong> Formeln und Terme machen muss<br />

Variablen, <strong>die</strong> nicht im Skopus e<strong>in</strong>e Quantors stehen nennt man freie Variablen. FÃ 1 4 r<br />

e<strong>in</strong>e Formel F bzw. Term t bezeichnen wir mit F V (F ) bzw. F V (t) <strong>die</strong> Menge <strong>der</strong> freien<br />

Variablen.<br />

Beispiel 4.1.5. Seien x, y, z Variablensymbole, dann gilt:<br />

• F V (x) = F V (f(x)) = F V (g(x, g(x, a))) = {x}<br />

• F V (P (x) ∧ Q(y)) = {x, y}<br />

• F V (∃x : R(x, y)) = {y}.<br />

Def<strong>in</strong>ition 4.1.6 (Sprechweisen). Wir fà 1 4 hren e<strong>in</strong>ige à 1 4 bliche Sprechweisen fà 1 4 r spezielle<br />

Formeln und Terme e<strong>in</strong>:<br />

Stand: 25. November 2012 124 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.1 Syntax und Semantik <strong>der</strong> Prädikatenlogik (P L 1 )<br />

Atom:<br />

Literal:<br />

Grundterm:<br />

Grundatom:<br />

geschlossene Formel:<br />

Klausel<br />

E<strong>in</strong>e Formel <strong>der</strong> Art P (t 1 , . . . t n ) wobei P e<strong>in</strong> Prädikatensymbol<br />

und t 1 , . . . , t n Terme s<strong>in</strong>d heißt Atom.<br />

E<strong>in</strong> Atom o<strong>der</strong> e<strong>in</strong> negiertes Atom heißt Literal. (Beispiele: P (a)<br />

und ¬P (a))<br />

E<strong>in</strong> Term t ohne Variablensymbole, d.h. F V (t) = ∅, heißt Grundterm<br />

(engl. ground term).<br />

E<strong>in</strong> Atom F ohne Variablensymbole, d.h. F V (F ) = ∅, heißt<br />

Grundatom.<br />

E<strong>in</strong>e Formel F ohne freie Variablensymbole, d.h. F V (F ) = ∅<br />

heißt geschlossen.<br />

Formel mit e<strong>in</strong>em Quantorpräfix nur aus Allquantoren besteht<br />

. d.h F = ∀ n .F ′ und F ′ ist e<strong>in</strong>e Disjunktionen von Literalen.<br />

Beispiel 4.1.7. Für e<strong>in</strong>e geschlossene Formel: ∀x : ∃y : P (x, y). Nicht geschlossen ist: ∃y :<br />

P (x, y), da F V (∃y : P (x, y)) = {y}) .<br />

4.1.2 Semantik<br />

Die Semantik <strong>der</strong> Prädikatenlogik kann man analog zur Aussagenlogik def<strong>in</strong>ieren, man<br />

benötigt <strong>in</strong> <strong>die</strong>sem Fall noch e<strong>in</strong>e Menge von Individuen (den Doma<strong>in</strong>) und Interpretationsmöglichkeiten<br />

für Terme (Funktionen) und Prädikate.<br />

Def<strong>in</strong>ition 4.1.8. Interpretation Gegeben e<strong>in</strong>e Signatur Σ = (F, P) und Variablensymbole V .<br />

E<strong>in</strong>e Interpretation I = (S, I V ) mit S = (D S , F S , P S ) besteht aus e<strong>in</strong>er nichtleeren Menge D S<br />

(<strong>die</strong> Trägermenge), e<strong>in</strong>er Interpretation <strong>der</strong> Funktionssymbole F S , <strong>die</strong> jedem Funktionssysmbol<br />

f ∈ F e<strong>in</strong>e totale Funktionen f S ∈ F S über D zuordnet und <strong>der</strong> Interpretation <strong>der</strong> Prädikatensymbole<br />

P S , <strong>die</strong> jedem Prädikat P ∈ P e<strong>in</strong> Prädikat P S ∈ P S (als Relation über D) zuordnet.<br />

Schließlich ist I V : V → D S e<strong>in</strong>e Variablenbelegung, <strong>die</strong> jedem Variablensymbol e<strong>in</strong>en Wert <strong>in</strong><br />

<strong>der</strong> Trägermenge von D S zuordnet.<br />

Diese Interpretation wird verträglich erweitert auf Terme, als I(x) = I V (x) und<br />

I(f(t 1 , . . . , t n )) = f S (I(t 1 ), . . . , I ( t n )).<br />

Das Paar (D S , F S ) nennt man auch Σ-Algebra, und das 3-Tupel (D S , F S ), P S ) Σ-<br />

Struktur. E<strong>in</strong>e ganz spezielle Σ-Algebra, ist <strong>die</strong> Termalgebra. Diese <strong>in</strong>terpretiert <strong>die</strong> Funktionssymbole<br />

als syntaktische Terme:<br />

Def<strong>in</strong>ition 4.1.9. (Termalgebra) Für e<strong>in</strong>e Signatur Σ = (F, P) und e<strong>in</strong>e Menge von Variablen<br />

V sei (T (Σ, V ) <strong>die</strong> Menge <strong>der</strong> Terme über <strong>der</strong> Signatur Σ und den Variablen V . Sei F T <strong>die</strong> Menge<br />

<strong>der</strong> Funktionen {f Σ | f ∈ F, arity(f) = n, f Σ (t 1 , . . . , t n ) := f(t 1 , . . . , t n )}). Dann nennt man<br />

(T (Σ, V ), F T ) <strong>die</strong> Termalgebra über <strong>der</strong> Signatur Σ.<br />

Für e<strong>in</strong>e gegebene Interpretation I def<strong>in</strong>ieren wir e<strong>in</strong>e abgeän<strong>der</strong>te Interpretation<br />

I[a/x], mit I[a/x](x) := a und I[a/x](y) := I(y) falls y ≠ x.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 125 Stand: 25. November 2012


4 Prädikatenlogik<br />

Nun kÃnnen wir den Wahrheitswert von Formeln bzgl. e<strong>in</strong>er Interpretation I def<strong>in</strong>ieren:<br />

Def<strong>in</strong>ition 4.1.10 (Auswertung von Formeln). Sei I e<strong>in</strong>e Interpretation. Die Basisfälle s<strong>in</strong>d:<br />

Fall: H = P (t 1 , . . . t n ) falls (I(t 1 ), . . . , I(t n )) ∈ P 2 S , dann I(H) := 1.<br />

falls (I(t 1 ), . . . , I(t n )) ∉ P S , dann I(H) := 0.<br />

Fall H = P I(P ) := P S .<br />

Rekursionsfälle:<br />

Fall: H = false dann I(H) = 0<br />

Fall: H = true dann I(H) = 1<br />

Fall: H = ¬F dann I(H) = 1 falls I(F ) = 0<br />

Fall: H = F ∨ G dann I(H) = 1 falls I(F ) = 1 o<strong>der</strong> I(G) = 1<br />

Fall: H = F ∧ G, dann I(H) = 1 falls I(F ) = 1 und I(G) = 1<br />

Fall: H = F ⇒ G dann I(H) = 1 falls I(F ) = 0 o<strong>der</strong> I(G) = 1<br />

Fall: H = F ⇔ G dann I(H) = 1 falls I(F ) = 1 gdw. I(G) = 1<br />

Fall: H = ∀x : F dann I(H) = 1 falls für alle a ∈ D S : I[a/x](F ) = 1<br />

Fall: H = ∃x : F dann I(H) = 1 falls für e<strong>in</strong> a ∈ D S : I[a/x](F ) = 1<br />

Diese Def<strong>in</strong>ition erlaubt es, für e<strong>in</strong>e Formel und e<strong>in</strong>e Interpretation I zu bestimmen,<br />

ob <strong>die</strong> Formel <strong>in</strong> <strong>die</strong>ser Interpretation wahr o<strong>der</strong> falsch ist. Im nächsten Schritt lassen<br />

sich dann <strong>die</strong> Formeln danach klassifizieren, ob sie <strong>in</strong> allen Interpretationen wahr werden<br />

(Tautologien), <strong>in</strong> irgende<strong>in</strong>er Interpretation wahr werden (erfüllbare Formeln), <strong>in</strong> irgende<strong>in</strong>er<br />

Interpretation falsch werden (falsifizierbare Formeln) o<strong>der</strong> <strong>in</strong> allen Interpretationen<br />

falsch werden (unerfüllbare o<strong>der</strong> wi<strong>der</strong>sprüchliche Formeln).<br />

Def<strong>in</strong>ition 4.1.11 (Modelle, Tautologien etc.). E<strong>in</strong>e Interpretation I, <strong>die</strong> e<strong>in</strong>e Formel F wahr<br />

macht (erfüllt) heißt Modell von F . Man sagt auch: F gilt <strong>in</strong> I (F ist wahr <strong>in</strong> I, I erfüllt F ).<br />

Bezeichnung: I |= F .<br />

E<strong>in</strong>e Formel F heißt:<br />

allgeme<strong>in</strong>gültig (Tautologie, Satz) wenn sie von allen Interpretationen erfüllt wird<br />

erfüllbar wenn sie von e<strong>in</strong>er Interpretation erfüllt wird, d.h. wenn es e<strong>in</strong> Modell gibt<br />

unerfüllbar (wi<strong>der</strong>sprüchlich) wenn sie von ke<strong>in</strong>er Interpretation erfüllt wird.<br />

falsifizierbar wenn sie <strong>in</strong> e<strong>in</strong>er Interpretation falsch wird.<br />

Es gibt dabei folgende Zusammenhänge:<br />

• E<strong>in</strong>e Formel F ist allgeme<strong>in</strong>gültig gdw. ¬F unerfüllbar<br />

• Falls F nicht allgeme<strong>in</strong>gültig ist: F ist erfüllbar gdw. ¬F erfüllbar<br />

2 P S ist <strong>die</strong> <strong>in</strong> P S dem Symbol P zugeordnete Relation<br />

Stand: 25. November 2012 126 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.1 Syntax und Semantik <strong>der</strong> Prädikatenlogik (P L 1 )<br />

Die Menge <strong>der</strong> unerfüllbaren und <strong>die</strong> Menge <strong>der</strong> allgeme<strong>in</strong>gültigen Formeln s<strong>in</strong>d disjunkt.<br />

Formeln <strong>die</strong> we<strong>der</strong> unerfüllbar noch allgeme<strong>in</strong>gültig s<strong>in</strong>d s<strong>in</strong>d gleichzeitig erfüllbar<br />

und falsifizierbar.<br />

Beispiel 4.1.12. E<strong>in</strong>ige Beispiele fà 1 4 r allgeme<strong>in</strong>gà 1 4 ltige, unerfà 1 4 llbare, erfà 1 4llbare und falsifizierbare<br />

Formeln s<strong>in</strong>d:<br />

allgeme<strong>in</strong>gültig: P ∨ ¬P<br />

unerfüllbar P ∧ ¬P<br />

erfüllbar, falsifizierbar: ∀x.P (x)<br />

Für den letzten Fall geben wir Interpretation an, <strong>die</strong> <strong>die</strong> Formel erfüllt und e<strong>in</strong>e <strong>die</strong> sie falsifiziert:<br />

1. Als Menge D S wählen wir {0, 1}, als Interpretation für P ebenfalls <strong>die</strong> Menge P S = {0, 1}.<br />

Dann ergibt e<strong>in</strong>e Interpretation I: I(∀x.P (x)) gdw. 0 ∈ P S und 1 ∈ P S . D.h.<br />

I(∀x.P (x)) = 1.<br />

2. Als Menge D S wählen wir {0, 1}, als Interpretation für P <strong>die</strong> Menge P S = {0}. Dann<br />

ergibt e<strong>in</strong>e Interpretation I: I(∀x.P (x)) gdw. 0 ∈ P S und 1 ∈ P S . D.h. I(∀x.P (x)) = 0.<br />

Als weiteren, e<strong>in</strong>fachen Testfall untersuchen wir Klauseln.<br />

Beispiel 4.1.13. Wann ist <strong>die</strong> Klausel {P (s), ¬P (t)} e<strong>in</strong>e Tautologie? Zunächst ist e<strong>in</strong>fach zu<br />

sehen, dass {P (s), ¬P (s)} e<strong>in</strong>e Tautologie ist: Für jede Interpretation I gilt, dass I(P (s)) gerade<br />

<strong>der</strong> negierte Wahrheitswert von I(¬P (s)) ist.<br />

Angenommen, s ≠ t. Vermutung: dann ist es ke<strong>in</strong>e Tautologie. Um <strong>die</strong>s nachzuweisen, muss<br />

man e<strong>in</strong>e Interpretation f<strong>in</strong>den, <strong>die</strong> <strong>die</strong>se Klausel falsch macht.<br />

Zuerst def<strong>in</strong>ieren wir e<strong>in</strong>e Trägermenge D S und e<strong>in</strong>e Σ-Algebra. Man startet mit e<strong>in</strong>er Menge<br />

A 0 , <strong>die</strong> m<strong>in</strong>destens soviele Elemente enthält, wie <strong>die</strong> Terme s, t Konstanten und Variablen enthalten.<br />

Also A 0 := {a 1 , . . . , a n , c x1 , . . . c xm }, wobei a i <strong>die</strong> Konstanten <strong>in</strong> s, t s<strong>in</strong>d und x i <strong>die</strong><br />

Variablen.<br />

Danach def<strong>in</strong>iert man alle Funktionen so, <strong>die</strong> <strong>in</strong> s, t vorkommen, so dass ke<strong>in</strong>erlei Beziehungen<br />

gelten. D.h. man kann genau alle Terme nehmen, <strong>die</strong> sich aus den A 0 als Konstanten und den Funktionssymbolen<br />

aufbauen lassen. D.h. es ist <strong>die</strong> Termmenge e<strong>in</strong>er Termalgebra über e<strong>in</strong>er erweiterten<br />

Signatur Σ ′ .<br />

Danach wählt man als Interpretation I(a i ) := a i , I(x i ) = c xi , f S = f. Beachte, dass <strong>der</strong><br />

Quantorpräfix nur aus Allquantoren besteht.<br />

Damit gilt nun: I(S) ≠ I(t). Da man <strong>die</strong> e<strong>in</strong>stellige Relation P S , <strong>die</strong> P zugeordnet wird, frei<br />

wählen kann, kann man <strong>die</strong>s so machen, dass I(s) ∉ P S und I(t) ∈ P S . Damit wird aber <strong>die</strong><br />

Klausel falsch unter <strong>die</strong>ser Interpretation. D.h. es kann ke<strong>in</strong>e Tautologie se<strong>in</strong>.<br />

Analog kann man <strong>die</strong>se Argumentation für Klauseln mit mehrstelligen Prädikaten verwenden.<br />

Jede Klausel, <strong>die</strong> mehr als e<strong>in</strong> Literal enthält, ist erfüllbar. Wie nehmen an, dass <strong>die</strong><br />

Formeln true, false nicht <strong>in</strong> Klauseln verwendet werden.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 127 Stand: 25. November 2012


4 Prädikatenlogik<br />

Mit <strong>der</strong> <strong>E<strong>in</strong>führung</strong> des Begriffs e<strong>in</strong>es Modell (und e<strong>in</strong>er Interpretation) s<strong>in</strong>d alle Voraussetzungen<br />

gegeben, um – <strong>in</strong> Verallgeme<strong>in</strong>erung <strong>der</strong> Begriffe für Aussagenlogik – e<strong>in</strong>e<br />

semantische Folgerungsbeziehung |= zwischen zwei Formeln zu def<strong>in</strong>ieren:<br />

Def<strong>in</strong>ition 4.1.14 (Semantische Folgerung).<br />

F |= G gdw. G gilt (ist wahr) <strong>in</strong> allen Modellen von F .<br />

Diese Def<strong>in</strong>ition ist zwar sehr <strong>in</strong>tuitiv, da es aber i.A. unendlich viele Modelle für e<strong>in</strong>e<br />

Formel gibt, ist sie jedoch <strong>in</strong> ke<strong>in</strong>er Weise geeignet, um für zwei konkrete Formeln F und<br />

G zu testen, ob G aus F semantisch folgt. Die semantische Folgerungsbeziehung <strong>die</strong>nt<br />

aber als Referenz; jedes konkrete, d.h. programmierbare Testverfahren muss sich daran<br />

messen, ob und wie genau es <strong>die</strong>se Beziehung zwischen zwei Formeln realisiert.<br />

Bemerkung 4.1.15. Das Beispiel <strong>der</strong> natürlichen Zahlen und <strong>der</strong> dar<strong>in</strong> geltenden Sätze ist nicht<br />

vollständig mit P L 1 zu erfassen. Der Grund ist, dass man nur von e<strong>in</strong>er e<strong>in</strong>zigen festen Σ-Struktur<br />

ausgeht (<strong>die</strong> natürlichen Zahlen) und dann nach <strong>der</strong> Gültigkeit von Sätzen fragt.<br />

Versucht man <strong>die</strong> natürlichen Zahlen <strong>in</strong> P L 1 zu erfassen, so stellt sich heraus, dass man mit<br />

endlich vielen Axiomen nicht auskommt. Es ist sogar so, dass <strong>die</strong> Menge <strong>der</strong> Axiome nicht rekursiv<br />

aufzählbar ist.<br />

Beispiel 4.1.16. E<strong>in</strong> Beispiel für e<strong>in</strong>e <strong>in</strong> P L 1 modellierbare Theorie s<strong>in</strong>d <strong>die</strong> Gruppen. Man benötigt<br />

nur endlich viele Axiome. Und man kann dann danach fragen, welche Sätze <strong>in</strong> allen Gruppen<br />

gelten.<br />

E<strong>in</strong> erster Schritt zur Mechanisierung <strong>der</strong> Folgerungsbeziehung liefert das sogenannte<br />

Deduktionstheorem, welches <strong>die</strong> semantische Folgerungsbeziehung <strong>in</strong> Beziehung setzt mit<br />

dem syntaktischen Implikationszeichen. Dieses Theorem erlaubt <strong>die</strong> Rückführung <strong>der</strong><br />

semantischen Folgerung auf e<strong>in</strong>en Tautologietest.<br />

Theorem 4.1.17 (Deduktionstheorem). Für alle Formeln F und G gilt: F |= G gdw. F ⇒ G<br />

ist allgeme<strong>in</strong>gültig (Tautologie).<br />

Bemerkung 4.1.18. Will man wissen, ob e<strong>in</strong>e Formel F aus e<strong>in</strong>er Menge von Axiomen<br />

A 1 , . . . , A n folgt, so kann man <strong>die</strong>s zunächst auf <strong>die</strong> äquivalente Frage zurückführen, ob F aus<br />

<strong>der</strong> Konjunktion <strong>der</strong> Axiome A 1 ∧ . . . ∧ A n folgt und dann auf <strong>die</strong> äquivalente Frage, ob <strong>die</strong> Implikation<br />

(A 1 ∧ . . . ∧ A n ) ⇒ F e<strong>in</strong>e Tautologie ist.<br />

Das Deduktionstheorem gilt <strong>in</strong> an<strong>der</strong>en Logiken i.A. nicht mehr. Das kann daran liegen,<br />

dass <strong>die</strong> semantische Folgerungsbeziehung dort an<strong>der</strong>s def<strong>in</strong>iert ist o<strong>der</strong> auch, dass<br />

<strong>die</strong> Implikation selbst an<strong>der</strong>s def<strong>in</strong>iert ist. Die Implikation, so wie sie <strong>in</strong> P L 1 def<strong>in</strong>ert ist,<br />

hat nämlich den paradoxen Effekt, dass aus etwas Falschem alles folgt, d.h. <strong>die</strong> Formel<br />

false ⇒ F ist e<strong>in</strong>e Tautologie. Versucht man, <strong>die</strong>sen Effekt durch e<strong>in</strong>e geän<strong>der</strong>te Def<strong>in</strong>ition<br />

für ⇒ zu vermeiden, dann muss das Deduktionstheorem nicht mehr unbed<strong>in</strong>gt<br />

gelten. Da F e<strong>in</strong>e Tautologie ist genau dann wenn ¬F unerfüllbar ist, folgt unmittelbar:<br />

Stand: 25. November 2012 128 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.1 Syntax und Semantik <strong>der</strong> Prädikatenlogik (P L 1 )<br />

F |= G<br />

gdw.<br />

¬(F ⇒ G) ist unerfüllbar (wi<strong>der</strong>sprüchlich)<br />

gdw.<br />

F ∧ ¬G ist unerfüllbar.<br />

Das bedeutet, dass man <strong>in</strong> P L 1 den Test <strong>der</strong> semantischen Folgerungsbeziehung weiter<br />

zurückführen kann auf e<strong>in</strong>en Unerfüllbarkeitstest. Genau <strong>die</strong>ses Verfahren ist <strong>die</strong> häufig<br />

verwendete Methode des Beweis durch Wi<strong>der</strong>spruch: Um zu zeigen, dass aus Axiomen<br />

e<strong>in</strong> Theorem folgt, zeigt man, dass <strong>die</strong> Axiome zusammen mit dem negierten Theorem<br />

e<strong>in</strong>en Wi<strong>der</strong>spruch ergeben.<br />

4.1.3 Berechenbarkeitseigenschaften <strong>der</strong> Prädikatenlogik<br />

Es gilt <strong>die</strong> Unentscheidbarkeit <strong>der</strong> Prädikatenlogik:<br />

Theorem 4.1.19. Es ist unentscheidbar, ob e<strong>in</strong>e geschlossene Formel e<strong>in</strong> Satz <strong>der</strong> Prädikatenlogik<br />

ist.<br />

E<strong>in</strong>en Beweis geben wir nicht. Der Beweis besteht dar<strong>in</strong>, e<strong>in</strong> Verfahren anzugeben, das<br />

je<strong>der</strong> Tur<strong>in</strong>gmasch<strong>in</strong>e M e<strong>in</strong>e prädikatenlogische Formel zuordnet, <strong>die</strong> genau dann e<strong>in</strong><br />

Satz ist, wenn <strong>die</strong>se Tur<strong>in</strong>gmasch<strong>in</strong>e auf dem leeren Band term<strong>in</strong>iert. Hierbei nimmt man<br />

TM, <strong>die</strong> nur mit e<strong>in</strong>em Endzustand term<strong>in</strong>ieren können. Da das Halteproblem für Tur<strong>in</strong>gmasch<strong>in</strong>en<br />

unentscheidbar ist, hat man damit e<strong>in</strong>en Beweis für den Satz.<br />

Analog dazu gilt jedoch, <strong>die</strong> Semi-Entscheidbarkeit, d.h.<br />

Theorem 4.1.20. Die Menge <strong>der</strong> Sätze <strong>der</strong> Prädikatenlogik ist rekursiv aufzählbar.<br />

Als Schlußfolgerung kann man sagen, dass es ke<strong>in</strong> Deduktionssystem gibt (Algorithmus),<br />

das bei e<strong>in</strong>gegebener Formel nach endlicher Zeit entscheiden kann, ob <strong>die</strong> Formel<br />

e<strong>in</strong> Satz ist o<strong>der</strong> nicht. Allerd<strong>in</strong>gs gibt es e<strong>in</strong>en Algorithmus, <strong>der</strong> für jede Formel, <strong>die</strong> e<strong>in</strong><br />

Satz ist, auch term<strong>in</strong>iert und <strong>die</strong>se als Satz erkennt.<br />

Über das theoretische Verhalten e<strong>in</strong>es automatischen Deduktionssystems kann man daher<br />

folgendes sagen: Es kann term<strong>in</strong>ieren und antworten: ist o<strong>der</strong> ist ke<strong>in</strong> Satz. Wenn das<br />

System sehr lange läuft, kann das zwei Ursachen haben: Der Satz ist zu schwer zu zeigen<br />

(zu erkennen) o<strong>der</strong> <strong>die</strong> e<strong>in</strong>gegebene Formel ist ke<strong>in</strong> Satz und das System kann auch <strong>die</strong>s<br />

nicht erkennen.<br />

Die E<strong>in</strong>ordnung <strong>der</strong> sogenannten quantifizierten Booleschen Formeln – Quantoren<br />

über null-stellige Prädikate s<strong>in</strong>d erlaubt, aber ke<strong>in</strong>e Funktionssymbole, und ke<strong>in</strong>e mehrstelligen<br />

Prädikate – ist <strong>in</strong> P L 1 nicht möglich. Diese QBF s<strong>in</strong>d e<strong>in</strong> „Fragment“ von P L 2 .<br />

Es ist bekannt, dass <strong>die</strong> Eigenschaft „Tautologie“ für QBF entscheidbar ist (PSPACEvollständig).<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 129 Stand: 25. November 2012


4 Prädikatenlogik<br />

4.1.4 Normalformen von P L 1 -Formeln<br />

Ziel <strong>die</strong>se Abschnitts ist es, e<strong>in</strong>en Algorithmus zu entwickeln, <strong>der</strong> beliebige Formeln<br />

<strong>in</strong> e<strong>in</strong>e Klauselnormalform (conjunctive normal form, CNF), d.h. e<strong>in</strong>e Konjunktion (∧)<br />

von Disjunktionen (∨ ) von Literalen, transformiert. Diese Klauselnormalform ist nur<br />

„ganz außen“ allquantifiziert, es gibt ke<strong>in</strong>e <strong>in</strong>neren Quantoren. Folgendes Lemma erlaubt<br />

<strong>die</strong> Transformation von Formeln, wobei <strong>die</strong> Regeln <strong>in</strong> Tautologien entsprechen, aber als<br />

Transformationen benutzt werden. Diese s<strong>in</strong>d Erweiterungen <strong>der</strong> Tautologien <strong>der</strong> Aussagenlogik.<br />

Lemma 4.1.21. Elementare Rechenregeln<br />

¬∀x : F ⇔ ∃x : ¬F<br />

¬∃x : F ⇔ ∀x : ¬F<br />

(∀x : F ) ∧ G ⇔ ∀x : (F ∧ G) falls x nicht frei <strong>in</strong> G<br />

(∀x : F ) ∨ G ⇔ ∀x : (F ∨ G) falls x nicht frei <strong>in</strong> G<br />

(∃x : F ) ∧ G ⇔ ∃x : (F ∧ G) falls x nicht frei <strong>in</strong> G<br />

(∃x : F ) ∨ G ⇔ ∃x : (F ∨ G) falls x nicht frei <strong>in</strong> G<br />

∀x : F ∧ ∀x : G ⇔ ∀x : (F ∧ G)<br />

∃x : F ∨ ∃x : G ⇔ ∃x : (F ∨ G)<br />

Bemerkung 4.1.22. Mithilfe <strong>der</strong> obigen Tautologien kann man <strong>die</strong> sogenannte Pränexform und<br />

auch <strong>die</strong> Negationsnormalform e<strong>in</strong>er Formel herstellen. Die Pränex-form ist dadurch gekennzeichnet,<br />

dass <strong>in</strong> <strong>der</strong> Formel zuerst alle Quantoren kommen (Quantorpräfix), und dann e<strong>in</strong>e quantorenfreie<br />

Formel. Die Negations-normalform ist dadurch gekennzeichnet, dass alle Negationszeichen<br />

nur vor Atomen vorkommen und dass <strong>die</strong> Junktoren ⇒, ⇔ elim<strong>in</strong>iert s<strong>in</strong>d.<br />

Zur Umwandlung e<strong>in</strong>er Formel <strong>in</strong> Pränexform braucht man nur <strong>die</strong> Äquivalenzen zu verwenden,<br />

<strong>die</strong> Quantoren nach außen schieben. Hierzu müssen alle gebundenen Variablen verschiedene<br />

Namen haben. Die Äquivalenzen, <strong>die</strong> es erlauben, Subformeln unter Quantoren ∀x. zu schieben,<br />

falls <strong>die</strong>se <strong>die</strong> Subformel <strong>die</strong> Variable x nicht enthält, spielen e<strong>in</strong>e wichtige Rolle.<br />

Die Negationsnormalform wird erreicht, <strong>in</strong>dem man zunächst ⇒, ⇔ elim<strong>in</strong>iert und dann alle<br />

Äquivalenzen nutzt, um Negationszeichen nach <strong>in</strong>nen zu schieben.<br />

Die Elim<strong>in</strong>ation von Existenzquantoren ist <strong>die</strong> sogenannte Skolemisierung (Nach Thoralf<br />

Skolem).<br />

Idee: Ersetze <strong>in</strong> ∃x : P (x) das x, „das existiert“ durch e<strong>in</strong> Konstantensymbol a, d.h. ∃x :<br />

P (x) → P (a) Ersetze <strong>in</strong> ∀x 1 . . . x n : ∃y : P (x 1 , . . . , x n , y) das y durch e<strong>in</strong>e Funktion von<br />

x 1 , . . . , x n , d.h. ∀x 1 . . . x n : ∃y : P (x 1 , . . . , x n , y) → ∀x 1 . . . x n : P (x 1 , . . . , x n , f(x 1 , . . . , x n )).<br />

Im nächsten Theorem sei G[x 1 , . . . , x n , y] e<strong>in</strong>e beliebige Formel, <strong>die</strong> <strong>die</strong> Variablensymbole<br />

x 1 , . . . , x n , y frei enthält und G[x 1 , . . . , x n , t] e<strong>in</strong>e Variante von F , <strong>in</strong> <strong>der</strong> alle Vorkommnisse<br />

von y durch t ersetzt s<strong>in</strong>d.<br />

Stand: 25. November 2012 130 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.1 Syntax und Semantik <strong>der</strong> Prädikatenlogik (P L 1 )<br />

Theorem 4.1.23. Skolemisierung<br />

E<strong>in</strong>e Formel F = ∀x 1 . . . x n : ∃y : G[x 1 , . . . , x n , y] ist (un-)erfüllbar gdw. F ′ = ∀x 1 . . . x n :<br />

G[x 1 , . . . , x n , f(x 1 , . . . , x n )] (un-)erfüllbar ist, wobei f e<strong>in</strong> n-stelliges Funktionssymbol ist mit<br />

n ≥ 0, das nicht <strong>in</strong> G vorkommt.<br />

Beispiel 4.1.24. Skolemisierung<br />

∃x : P (x) → P (a)<br />

∀x : ∃y : Q(f(y, y), x, y) → ∀x : Q(f(g(x), g(x)), x, g(x))<br />

∀x, y : ∃z : x + z = y → ∀x, y : x + h(x, y) = y.<br />

Beispiel 4.1.25. Skolemisierung erhält i.a. nicht <strong>die</strong> Allgeme<strong>in</strong>gültigkeit (Falsifizierbarkeit):<br />

∀x : P (x) ∨ ¬∀x : P (x) ist e<strong>in</strong>e Tautologie<br />

∀x : P (x) ∨ ∃x : ¬P (x) ist äquivalent zu<br />

∀x : P (x) ∨ ¬P (a) nach Skolemisierung.<br />

E<strong>in</strong>e Interpretation, <strong>die</strong> <strong>die</strong> skolemisierte Formel falsifiziert kann man konstruieren wie folgt:<br />

Die Trägermenge ist {a, b}. Es gelte P (a) und ¬P (b). Die Formel ist aber noch erfüllbar.<br />

Beachte, dass es dual dazu auch e<strong>in</strong>e Form <strong>der</strong> Skolemisierung gibt, bei <strong>der</strong> <strong>die</strong> allquantifizierten<br />

Variablen skolemisiert werden. Dies wird verwendet, wenn man statt auf<br />

Wi<strong>der</strong>sprüchlichkeit <strong>die</strong> Formeln auf Allgeme<strong>in</strong>gültigkeit testet. Im Beweis ersetzt man<br />

dann <strong>die</strong> Begriff erfüllbar durch falsifizierbar und unerfüllbar durch allgeme<strong>in</strong>gültig.<br />

Skolemisierung ist e<strong>in</strong>e Operation, <strong>die</strong> nicht lokal <strong>in</strong>nerhalb von Formeln verwendet<br />

werden darf, son<strong>der</strong>n nur global, d.h. wenn <strong>die</strong> ganze Formel e<strong>in</strong>e bestimmte Form hat.<br />

Zudem bleibt bei <strong>die</strong>ser Operation nur <strong>die</strong> Unerfüllbarkeit <strong>der</strong> ganzen Klausel erhalten.<br />

Theorem 4.1.26 (Allgeme<strong>in</strong>ere Skolemisierung). Sei F e<strong>in</strong>e geschlossene Formel, G e<strong>in</strong>e existentiell<br />

quantifizierte Unterformel <strong>in</strong> F an e<strong>in</strong>er Position p, Weiterh<strong>in</strong> sei G nur unter Allquantoren,<br />

Konjunktionen, und Disjunktionen. Die All-quantoren über G b<strong>in</strong>den <strong>die</strong> Variablen<br />

x 1 , . . . , x n mit n ≥ 0. D.h. F ist von <strong>der</strong> Form F [∃y : G ′ [x 1 , . . . , x n , y]].<br />

Dann ist F [G] (un-)erfüllbar gdw. F [G ′ [x 1 , . . . , x n , f(x 1 , . . . , x n )]] (un-)erfüllbar ist, wobei f<br />

e<strong>in</strong> n-stelliges Funktionssymbol ist, das nicht <strong>in</strong> G vorkommt.<br />

Def<strong>in</strong>ition 4.1.27 (Transformation <strong>in</strong> Klauselnormalform). Folgende Prozedur wandelt jede<br />

prädikatenlogische Formel <strong>in</strong> Klauselform (CNF) unter Erhaltung <strong>der</strong> Erfüllbarkeit um:<br />

1. Elim<strong>in</strong>ation von ⇔ und ⇒: F ⇔ G → F ⇒ G ∧ G ⇒ F (Lemma 4.1.21) und<br />

F ⇒ G → ¬F ∨ G<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 131 Stand: 25. November 2012


4 Prädikatenlogik<br />

2. Negation ganz nach <strong>in</strong>nen schieben:<br />

¬¬F → F<br />

¬(F ∧ G) → ¬F ∨ ¬G<br />

¬(F ∨ G) → ¬F ∧ ¬G<br />

¬∀x : F → ∃x : ¬F<br />

¬∃x : F → ∀x : ¬F<br />

3. Skopus von Quantoren m<strong>in</strong>imieren, d.h. Quantoren so weit wie möglich nach <strong>in</strong>nen schieben<br />

(kann auch nur teilweise geschehen)<br />

∀x : (F ∧ G) → (∀x : F ) ∧ G falls x nicht frei <strong>in</strong> G<br />

∀x : (F ∨ G) → (∀x : F ) ∨ G falls x nicht frei <strong>in</strong> G<br />

∃x : (F ∧ G) → (∃x : F ) ∧ G falls x nicht frei <strong>in</strong> G<br />

∃x : (F ∨ G) → (∃x : F ) ∨ G falls x nicht frei <strong>in</strong> G<br />

∀x : (F ∧ G) → ∀x : F ∧ ∀x : G<br />

∃x : (F ∨ G) → ∃x : F ∨ ∃x : G<br />

4. Alle gebundenen Variablen s<strong>in</strong>d systematisch umzubenennen, um Namenskonflikte aufzulösen.<br />

5. Existenzquantoren werden durch Skolemisierung elim<strong>in</strong>iert<br />

6. Allquantoren nach außen schieben<br />

7. Distributivität (und Assoziativität, Kommutativität) iterativ anwenden, um ∧ nach außen<br />

zu schieben („Ausmultiplikation“). F ∨ (G ∧ H) → (F ∨ G) ∧ (F ∨ H) (Das duale<br />

Distributivgesetz würde e<strong>in</strong>e disjunktive Normalform ergeben.)<br />

8. Allquantoren vor <strong>die</strong> Klauseln schieben, anschließend umbenennen und <strong>die</strong> Quantoren löschen<br />

(alle Variablen werden als allquantifiziert angenommen).<br />

Das Resultat <strong>die</strong>ser Prozedur ist e<strong>in</strong>e Konjunktion von Disjunktionen (Klauseln) von Literalen:<br />

(L 1,1 ∨ . . . ∨ L 1,n1 )<br />

∧ (L 2,1 ∨ . . . ∨ L 2,n2 )<br />

∧<br />

. . .<br />

∧ (L k,1 ∨ . . . ∨ L 1,nk )<br />

Stand: 25. November 2012 132 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.2 Resolution<br />

o<strong>der</strong> <strong>in</strong> Mengenschreibweise:<br />

{{L 1,1 , . . . , L 1,n1 },<br />

{L 2,1 , . . . , L 2,n2 },<br />

. . .<br />

{L k,1 , . . . , L 1,nk }}<br />

Beispiel 4.1.28. Analog zur Aussagenlogik kann das CNF-Verfahren so optimiert werden, dass<br />

es statt exponentiell großen Formeln nur l<strong>in</strong>ear große Klauselmengen generiert.<br />

A1: Dieb(Anton) ∨ Dieb(Ede) ∨ Dieb(Karl)<br />

A2: Dieb(Anton) ⇒ (Dieb(Ede) ∨ Dieb(Karl))<br />

Beispiel 4.1.29. A3: Dieb(Karl) ⇒ (Dieb(Ede) ∨ Dieb(Anton))<br />

A4: Dieb(Ede) ⇒ (¬ Dieb(Anton) ∧¬ Dieb(Karl))<br />

A5: ¬ Dieb(Anton) ∨¬ Dieb(Karl)<br />

Klauselform:<br />

A1: Dieb(Anton), Dieb(Ede), Dieb(Karl)<br />

A2: ¬ Dieb(Anton), Dieb(Ede), Dieb(Karl)<br />

A3: ¬ Dieb(Karl), Dieb(Ede), Dieb(Anton)<br />

A4a: ¬ Dieb(Ede), ¬ Dieb(Anton)<br />

A4b: ¬ Dieb(Ede), ¬ Dieb(Karl)<br />

A5: ¬ Dieb(Anton),¬ Dieb(Karl)<br />

Beispiel 4.1.30. verschiedene Typen von Normalformen:<br />

Orig<strong>in</strong>al Formel: ∀ε : (ε > 0 ⇒ ∃δ : (δ > 0 ∧ ∀x, y : (|x − y| < δ ⇒ |g(x) − g(y)| < ε)))<br />

Negations Normalform : (Alle Negationen <strong>in</strong>nen; ⇒, ⇔ elim<strong>in</strong>iert)<br />

∀ε : (¬ε > 0 ∨ ∃δ : (δ > 0 ∧ ∀x, y : (¬|x − y| < δ ∨ |g(x) − g(y)| < ε)))<br />

Pränex Form : (Alle Quantoren außen) ∀ε : ∃δ : ∀x, y : ε > 0 ⇒ δ > 0 ∧ (|x − y| < δ ⇒<br />

|g(x) − g(y)| < ε)<br />

Skolemisierte Pränex Form : ε > 0 ⇒ f δ (ε) > 0 ∧ (|x − y| < f δ (ε) ⇒ |g(x) − g(y)| < ε)<br />

Disjunktive Normalform : (¬ε > 0)∨(fd(ε) > 0∧¬|x−y| < f δ (ε))∨(f δ (ε) > 0∧|g(x)−<br />

g(y)| < ε)<br />

Konjunktive Normalform : (¬ε > 0 ∨ f δ (ε) > 0) ∧ (¬ε > 0 ∨ ¬|x − y| < fd(ε) ∨ |g(x) −<br />

g(y)| < ε)<br />

Klauselform : {{¬ε > 0, f δ (ε) > 0}, {¬ε > 0, ¬|x − y| < f δ (ε), |g(x) − g(y)| < ε}}.<br />

4.2 Resolution<br />

E<strong>in</strong> Kalkül soll <strong>die</strong> semantische Folgerungsbeziehung durch syntaktische Manipulation<br />

nachbilden, d.h. genau dann wenn F |= G, soll es möglich se<strong>in</strong>, entwe<strong>der</strong> G aus F durch<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 133 Stand: 25. November 2012


4 Prädikatenlogik<br />

syntaktische Manipulation abzuleiten (F ⊢ G, positiver Beweis) o<strong>der</strong> F ∧ ¬G durch syntaktische<br />

Manipulation zu wi<strong>der</strong>legen (F ∧ ¬G ⊢ false, Wi<strong>der</strong>legungsbeweis). Für jeden<br />

Kalkül muss <strong>die</strong> Korrektheit gezeigt werden, d.h. wann immer F ⊢ G, dann F |= G. Die<br />

Vollständigkeit, d.h. wann immer F |= G, dann F ⊢ G ist nicht notwendig. Was möglichst<br />

gelten sollte (aber bei manchen Logiken nicht möglich ist), ist <strong>die</strong> Wi<strong>der</strong>legungsvollständigkeit,<br />

d.h. wann immer F |= G dann F ∧ ¬G ⊢ false. Für P L 1 gibt es e<strong>in</strong>e ganze Reihe<br />

unterschiedlicher Kalküle. E<strong>in</strong> wichtiger und gut automatisierbarer ist <strong>der</strong> 1963 von John<br />

Alan Rob<strong>in</strong>son entwickelte Resolutionskalkül (Rob<strong>in</strong>son, 1965). Er arbeitet <strong>in</strong> erster L<strong>in</strong>ie<br />

auf Klauseln.<br />

4.2.1 Grundresolution: Resolution ohne Unifikation<br />

Im folgenden schreiben wir Klauseln teilweise als Folge von Literalen: L 1 , . . . L n und behandeln<br />

<strong>die</strong>se als wären es Multimengen. (teilweise auch als Mengen).<br />

Grundresolution behandelt Grund-Klauselmengen, d.h. Klauselmengen <strong>die</strong> nur<br />

Grundterme enthalten und somit variablenfrei s<strong>in</strong>d.<br />

Def<strong>in</strong>ition 4.2.1. Resolution im Fall direkt komplementärer Resolutionsliterale.<br />

Elternklausel 1: L, K 1 , . . . , K m<br />

Elternklausel 2: ¬L, N 1 , . . . , N n<br />

Resolvente: K 1 , . . . , K m , N 1 , . . . , N n<br />

Hierbei kann es passieren, dass <strong>die</strong> Resolvente ke<strong>in</strong>e Literale mehr enthält. Diese Klausel<br />

nennt man <strong>die</strong> leere Klausel; Bezeichnung: □. Sie wird als „falsch“ <strong>in</strong>terpretiert und<br />

stellt i.a. den gesuchten Wi<strong>der</strong>spruch dar.<br />

Beispiel 3.2.14 weiter fortgesetzt:<br />

Beispiel 4.2.2. siehe Beispiel 4.1.29<br />

A1: Dieb(Anton), Dieb(Ede), Dieb(Karl)<br />

A2: ¬ Dieb(Anton), Dieb(Ede), Dieb(Karl)<br />

A3: ¬ Dieb(Karl), Dieb(Ede), Dieb(Anton)<br />

A4a: ¬ Dieb(Ede), ¬ Dieb(Anton)<br />

A4b: ¬ Dieb(Ede), ¬ Dieb(Karl)<br />

A5: ¬ Dieb(Anton),¬ Dieb(Karl)<br />

Resolutionsableitung:<br />

A2,2 & A4a,1 ⊢ R1: ¬ Dieb(Anton), Dieb(Karl)<br />

R1,2 & A5,2 ⊢ R2: ¬ Dieb(Anton)<br />

R2 & A3,3 ⊢ R3: ¬ Dieb(Karl), Dieb(Ede)<br />

R3,2 & A4b,1 ⊢ R4: ¬ Dieb(Karl)<br />

R4 & A1,3 ⊢ R5: Dieb(Anton), Dieb(Ede)<br />

R5,1 & R2 ⊢ R6: Dieb(Ede)<br />

Also, Ede wars.<br />

Stand: 25. November 2012 134 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.2 Resolution<br />

Satz 4.2.3. Die Grund-Resolution ist korrekt:<br />

Dann gilt C 1 ∧ C 2 |= R.<br />

C 1 := L, K 1 , . . . , K m<br />

C2 :=: ¬L, N 1 , . . . , N n<br />

R = K 1 , . . . , K m , N 1 , . . . , N n<br />

Beweis. Wir müssen zeigen: Jede Interpretation, <strong>die</strong> <strong>die</strong> beiden Elternklauseln wahr<br />

macht, macht auch <strong>die</strong> Resolvente wahr. Das geht durch e<strong>in</strong>fache Fallunterscheidung:<br />

Falls L wahr ist, muss ¬L falsch se<strong>in</strong>. Da C 2 wahr ist, muss e<strong>in</strong> N i wahr se<strong>in</strong>. Da <strong>die</strong>ses<br />

Literal <strong>in</strong> R vorkommt, ist auch R (als Disjunktion betrachtet) wahr. Falls L falsch ist, muss<br />

e<strong>in</strong> K j wahr se<strong>in</strong>. Da das ebenfalls <strong>in</strong> <strong>der</strong> Resolvente vorkommt, ist R auch <strong>in</strong> <strong>die</strong>sem Fall<br />

wahr.<br />

Bemerkung 4.2.4. Im S<strong>in</strong>ne <strong>der</strong> Herleitbarkeit ist Resolution unvollständig: Nicht jede Formel,<br />

<strong>die</strong> semantisch folgt, läßt sich durch Anwenden <strong>der</strong> Resolution ableiten: Denn P |= P ∨ Q. aber<br />

auf P alle<strong>in</strong>e kann man ke<strong>in</strong>e Resolution anwenden.<br />

Für den e<strong>in</strong>geschränkten Fall, dass <strong>die</strong> Klauselmenge ke<strong>in</strong>e Variablen enthält (Grundfall)<br />

können wir schon <strong>die</strong> Wi<strong>der</strong>legungsvollständigkeit <strong>der</strong> Resolution beweisen.<br />

Theorem 4.2.5 (Wi<strong>der</strong>legungsvollständigkeit <strong>der</strong> Grundresolution). Jede endliche unerfüllbare<br />

Grundklauselmenge läßt sich durch Resolution wi<strong>der</strong>legen.<br />

4.2.2 Resolution im allgeme<strong>in</strong>en Fall<br />

Für den allgeme<strong>in</strong>en Fall, wenn <strong>in</strong> den Literalen auch Variablen vorkommen, benötigt<br />

man e<strong>in</strong>e zusätzliche Operation, um potentielle Resolutionspartner, d.h. Literale mit gleichem<br />

Prädikat und verschiedenem Vorzeichen durch E<strong>in</strong>setzung von Termen für Variablen<br />

komplementär gleich zu machen. Dazu führen wir zunächst das Konzept <strong>der</strong> Substitution<br />

e<strong>in</strong>.<br />

Def<strong>in</strong>ition 4.2.6 (Substitution). E<strong>in</strong>e Substitution σ ist e<strong>in</strong>e Abbildung endlich vieler Variablen<br />

auf Terme. Die Erweiterung von σ auf Terme ist def<strong>in</strong>iert durch:<br />

σ(x) = x, wenn σ <strong>die</strong> Variable x nicht abbildet<br />

σ(f(t 1 , . . . , t n )) = f(σ(t 1 ), . . . , σ(t n ))<br />

Entsprechend kann man <strong>die</strong> Anwendung von Substitutionen auf Literale und Klauseln def<strong>in</strong>ieren.<br />

D.h. <strong>die</strong> Substitution σ kann man sehen als gleichzeitige Ersetzung <strong>der</strong> Variablen x durch den<br />

Term σ(x).<br />

Substitutionen werden meist geschrieben wie e<strong>in</strong>e Menge von Variable – Term Paaren:<br />

{x 1 ↦→ t 1 , . . . , x n ↦→ t 1 }<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 135 Stand: 25. November 2012


4 Prädikatenlogik<br />

Beispiel 4.2.7.<br />

σ = {x ↦→ a} σ(x) = a, σ(f(x, x)) = f(a, a)<br />

σ = {x ↦→ g(x)} σ(x) = g(x), σ(f(x, x)) = f(g(x), g(x)),<br />

σ(σ(x)) = g(g(x))<br />

σ = {x ↦→ y, y ↦→ a} σ(x) = y, σ(σ(x)) = a,<br />

σ(f(x, y)) = f(y, a)<br />

σ = {x ↦→ y, y ↦→ x} σ(x) = y, σ(f(x, y)) = f(y, x)<br />

Def<strong>in</strong>ition 4.2.8. Für e<strong>in</strong>e Substitution σ = {x 1 ↦→ t 1 , . . . , x n ↦→ t n } heißt<br />

dom(σ) := {x 1 , . . . , x n } <strong>die</strong> Doma<strong>in</strong><br />

cod(σ) := {t 1 , . . . , t n } <strong>die</strong> Codoma<strong>in</strong><br />

Gleichheit (modulo e<strong>in</strong>er Menge von Variablen W ) zwischen Substitutionen σ und τ wird folgen<strong>der</strong>maßen<br />

def<strong>in</strong>iert: σ = τ[W ] gdw. σx = τx für alle x ∈ W .<br />

E<strong>in</strong>e Instantiierungrelation ≤ [W ] zwischen Substitutionen σ und τ (für e<strong>in</strong>e Menge von<br />

Variablen W ) ist folgen<strong>der</strong>maßen def<strong>in</strong>iert:<br />

σ ≤ τ[W ] gdw. es existiert e<strong>in</strong>e Substitution λ mit λσ = τ[W ]. Zwei Substitutionen σ und<br />

τ s<strong>in</strong>d äquivalent, d.h. σ ≈ t[W ] gdw. σ ≤ τ[W ] und τ ≤ σ[W ] gilt.Ist W <strong>die</strong> Menge aller<br />

Variablen, so kann man W weglassen.<br />

Beispiel 4.2.9.<br />

Komposition:<br />

• {x ↦→ a}{y ↦→ b} = {x ↦→ a, y ↦→ b}<br />

• {y ↦→ b}{x ↦→ f(y)} = {x ↦→ f(b), y ↦→ b}<br />

• {x ↦→ b}{x ↦→ a} = {x ↦→ a}<br />

Instantiierungsrelation:<br />

• {x ↦→ y} ≤ {x ↦→ a}[x]<br />

• {x ↦→ y} ≤ {x ↦→ a}[x, y] gilt nicht !<br />

• {x ↦→ y} ≤ {x ↦→ a, y ↦→ a}<br />

• {x ↦→ f(x)} ≤ {x ↦→ f(a)}<br />

Äquivalenz: {x ↦→ y, y ↦→ x} ≈ Id (Id ist <strong>die</strong> identische Substitution)<br />

Def<strong>in</strong>ition 4.2.10. (Resolution mit Unifikation)<br />

Elternklausel 1: L, K 1 , . . . , K m σ ist e<strong>in</strong>e Substitution (Unifikator)<br />

Elternklausel 2: ¬L ′ , N 1 , . . . , N n σ(L) = σ(L ′ )<br />

Resolvente: σ(K 1 , . . . , K m , N 1 , . . . , N n )<br />

Stand: 25. November 2012 136 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.2 Resolution<br />

Die Operation auf e<strong>in</strong>er Klauselmenge, <strong>die</strong> e<strong>in</strong>e Klausel C auswählt, auf <strong>die</strong>se e<strong>in</strong>e Substitution<br />

σ anwendet und σ(C) zur Klauselmenge h<strong>in</strong>zufügt, ist korrekt. Damit ist auch<br />

<strong>die</strong> allgeme<strong>in</strong>e Resolution als Folge von Variablene<strong>in</strong>setzung und Resolution korrekt.<br />

Beispiel 4.2.11. Dieses Beispiel (E<strong>in</strong>e Variante <strong>der</strong> Russelschen Ant<strong>in</strong>omie) zeigt, dass noch e<strong>in</strong>e<br />

Erweiterung <strong>der</strong> Resolution, <strong>die</strong> Faktorisierung, notwendig ist. Die Aussage ist: Der Friseur rasiert<br />

alle, <strong>die</strong> sich nicht selbst rasieren:<br />

∀x : ¬(rasiert(x, x)) ⇔ rasiert(F riseur, x)<br />

rasiert(x, x), rasiert(F riseur, x) σ = {x ↦→ F riseur, y ↦→ F riseur}<br />

¬rasiert(F riseur, y), ¬rasiert(y, y)<br />

rasiert(F riseur, F riseur), ¬rasiert(F riseur, F riseur)<br />

Die Klauseln s<strong>in</strong>d wi<strong>der</strong>sprüchlich, was aber ohne e<strong>in</strong>e Verschmelzung <strong>der</strong> Literale mittels Resolution<br />

nicht ableitbar ist. In <strong>der</strong> folgenden Herleitung werden <strong>die</strong> Variablen mit „Friseur“ <strong>in</strong>stantiiert,<br />

und dann <strong>die</strong> Literale verschmolzen.<br />

rasiert(x, x), rasiert(F riseur, x) ⊢ rasiert(F riseur, F riseur)<br />

¬rasiert(F riseur, y), ¬rasiert(y, y) ⊢ ¬rasiert(F riseur, F riseur)<br />

Danach ist es möglich, <strong>die</strong>se beiden Literale durch Resolution zur leeren Klausel abzuleiten.<br />

Def<strong>in</strong>ition 4.2.12. (Faktorisierung)<br />

Elternklausel: L, L ′ , K 1 , . . . , K m σ(L) = σ(L ′ )<br />

Faktor: σ(L, K 1 , . . . , K m )<br />

Damit besteht <strong>der</strong> Resolutionskalkül jetzt aus Resolution und Faktorisierung.<br />

Def<strong>in</strong>ition 4.2.13. Der Resolutionskalkül transformiert Klauselmengen S wie folgt:<br />

1. S → S ∪ {R}, wobei R e<strong>in</strong>e Resolvente von zwei (nicht notwendig verschiedenen) Klauseln<br />

aus S ist.<br />

2. S → S ∪ {F }, wobei F e<strong>in</strong> Faktor e<strong>in</strong>er Klausel aus S ist.<br />

Der Resolutionskalkül term<strong>in</strong>iert mit Erfolg, wenn <strong>die</strong> leere Klausel abgeleitet wurde, d.h. wenn<br />

□ ∈ S.<br />

Bei Klauselmengen nehmen wir wie üblich an, dass <strong>die</strong> Klauseln variablendisjunkt<br />

s<strong>in</strong>d.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 137 Stand: 25. November 2012


4 Prädikatenlogik<br />

Beispiel 4.2.14. Wir wollen <strong>die</strong> Transitivität <strong>der</strong> Teilmengenrelation mit Resolution beweisen.<br />

Wir starten mit <strong>der</strong> Def<strong>in</strong>ition von ⊆ unter Benutzung von ∈:<br />

Das zu beweisende Theorem ist:<br />

∀x, y : x ⊆ y ⇔ ∀w : w ∈ x ⇒ w ∈ y<br />

Umwandlung <strong>in</strong> Klauselform ergibt:<br />

∀x, y, z : x ⊆ y ∧ y ⊆ z ⇒ x ⊆ z<br />

H1: ¬x ⊆ y, ¬w ∈ x, w ∈ y (⇒ Teil <strong>der</strong> Def<strong>in</strong>ition)<br />

H2: x ⊆ y, f(x, y) ∈ x (zwei ⇐ Teile <strong>der</strong> Def<strong>in</strong>ition,<br />

H3: x ⊆ y, ¬f(x, y) ∈ y f ist <strong>die</strong> Skolem Funktion für w)<br />

C1: a ⊆ b (drei Teile <strong>der</strong> negierten Behauptung,<br />

C2: b ⊆ c a, b, c s<strong>in</strong>d Skolem Konstanten für x, y, z)<br />

C3: ¬a ⊆ c<br />

Resolutionswi<strong>der</strong>legung:<br />

H1,1 & C1, {x ↦→ a, y ↦→ b} ⊢ R1: ¬w ∈ a, w ∈ b<br />

H1,1 & C2, {x ↦→ b, y ↦→ c} ⊢ R2: ¬w ∈ b, w ∈ c<br />

H2,2 & R1,1, {x ↦→ a, w ↦→ f(a, y)} ⊢ R3: a ⊆ y, f(a, y) ∈ b<br />

H3,2 & R2,2, {y ↦→ c, w ↦→ f(x, c)} ⊢ R4: x ⊆ c, ¬f(x, c) ∈ b<br />

R3,2 & R4,2, {x ↦→ a, y ↦→ c} ⊢ R5: a ⊆ c, a ⊆ c<br />

R5 & (Faktorisierung) ⊢ R6: a ⊆ c<br />

R6 & C3 ⊢ R7: □<br />

Stand: 25. November 2012 138 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.2 Resolution<br />

4.2.3 Unifikation<br />

Die Resolutions- und Faktorisierungsregel verwenden Substitutionen (Unifikatoren), <strong>die</strong><br />

zwei Atome syntaktisch gleich machen. Meist will man jedoch nicht irgende<strong>in</strong>en Unifikator,<br />

son<strong>der</strong>n e<strong>in</strong>en möglichst allgeme<strong>in</strong>en. Was das bedeutet, zeigen <strong>die</strong> folgenden Beispiele:<br />

Beispiel 4.2.15. Unifikatoren und allgeme<strong>in</strong>ste Unifikatoren.<br />

P (x), Q(x)<br />

¬P (y), R(y) σ = {x ↦→ a, y ↦→ a}<br />

Q(a), R(a) σ ist e<strong>in</strong> Unifikator<br />

P (x), Q(x)<br />

¬P (y), R(y) σ = {x ↦→ y}<br />

Q(y), R(y) σ ist e<strong>in</strong> allgeme<strong>in</strong>ster Unifikator<br />

Fragen:<br />

• Was heißt „allgeme<strong>in</strong>ster“ Unifikator?<br />

• Wieviele gibt es davon? (σ ′ = {y ↦→ x} im obigen Beispiel ist offensichtlich auch<br />

e<strong>in</strong>er.)<br />

• Wie berechnet man sie?<br />

E<strong>in</strong> allgeme<strong>in</strong>ster Unifikator (von zwei Atomen) kann man <strong>in</strong>tuitiv dadurch erklären,<br />

dass es e<strong>in</strong>e Substitution ist, <strong>die</strong> zwei Terme o<strong>der</strong> Atome gleich macht, und möglichst<br />

wenig <strong>in</strong>stantiiert. Optimal ist es dann, wenn alle Unifikatoren durch weitere E<strong>in</strong>setzung<br />

<strong>in</strong> den allgeme<strong>in</strong>sten Unifikator erzeugt werden können.<br />

Beispiel 4.2.16. E<strong>in</strong> Beispiel zur Unifikation.<br />

P (x, y, f(z, x) = P (a, f(z, a), y)<br />

P<br />

<br />

x y f<br />

z<br />

x<br />

?<br />

=<br />

a<br />

z<br />

P<br />

f<br />

a<br />

y<br />

a<br />

P<br />

f<br />

f<br />

z a z a<br />

?<br />

=<br />

a<br />

P<br />

f<br />

f<br />

z a z a<br />

x = a<br />

y = f(z, a)<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 139 Stand: 25. November 2012


4 Prädikatenlogik<br />

E<strong>in</strong> Anwendung <strong>der</strong> Unifikation is <strong>der</strong> polymorphe Typcheck, <strong>der</strong> als e<strong>in</strong>e Basisoperation<br />

genau <strong>die</strong> Unifikation von Typen verwendet, wobei Typvariablen <strong>in</strong>stanziiert werden.<br />

Dieser wird <strong>in</strong> Haskell, Ml, und mittlerweile auch <strong>in</strong> e<strong>in</strong>er Variante auch Java benutzt.<br />

Def<strong>in</strong>ition 4.2.17. Unifikatoren und allgeme<strong>in</strong>ste Unifikatoren.<br />

Seien s und t <strong>die</strong> zu unifizierenden Terme (Atome) und W := F V (s, t). E<strong>in</strong>e Substitution σ<br />

heißt Unifikator (von s, t), wenn σ(s) = σ(t). Die Menge aller Unifikatoren bezeichnet man auch<br />

mit U(s, t),<br />

E<strong>in</strong>e Substitution σ heißt allgeme<strong>in</strong>ster Unifikator für zwei Terme s und t wenn<br />

σ e<strong>in</strong> Unifikator ist<br />

für alle Unifikatoren τ gilt σ ≤ τ[W ]<br />

(Korrektheit)<br />

(Vollständigkeit)<br />

Beachte, dass es bis auf Variablenumbenennung immer e<strong>in</strong>en allgeme<strong>in</strong>sten Unifikator<br />

gibt. Wir geben den Unifikationsalgorithmus <strong>in</strong> Form e<strong>in</strong>er Regelmenge an, <strong>die</strong> auf<br />

Mengen von (zu lösenden) Gleichungen operiert.<br />

Def<strong>in</strong>ition 4.2.18. Unifikationsalgorithmus U1:<br />

E<strong>in</strong>gabe: zwei Terme o<strong>der</strong> Atome s und t:<br />

Ausgabe:<br />

„nicht unifizierbar“ o<strong>der</strong> e<strong>in</strong>en allgeme<strong>in</strong>sten Unifikator:<br />

Zustände: auf denen <strong>der</strong> Algorithmus operiert: E<strong>in</strong>e Menge Γ von Gleichungen.<br />

Initialzustand: Γ 0 = {s ? = t}.<br />

Unifikationsregeln:<br />

Stand: 25. November 2012 140 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.2 Resolution<br />

f(s 1 , . . . , s n ) ? = f(t 1 , . . . , t n ), Γ<br />

?<br />

?<br />

s 1 = t 1 , . . . , s n = t n , Γ<br />

(Dekomposition)<br />

x ? = x, Γ<br />

Γ<br />

(Tautologie)<br />

x ? = t, Γ<br />

x ? = t, {x ↦→ t}Γ<br />

x ∈ F V (Γ), x ∉ F V (t)<br />

(Anwendung)<br />

t ? = x, Γ<br />

x ? = t, Γ<br />

t ∉ V<br />

(Orientierung)<br />

Abbruchbed<strong>in</strong>gungen:<br />

f(. . .) ? = g(. . .), Γ<br />

F ail<br />

wenn f ≠ g<br />

(Clash)<br />

x ? = t, Γ<br />

F ail<br />

wenn x ∈ F V (t)<br />

und t ≠ x<br />

(occurs check Fehler)<br />

Steuerung:<br />

Starte mit Γ = Γ 0 , und transformiere Γ solange durch (nichtdeterm<strong>in</strong>istische, aber nicht<br />

verzweigende) Anwendung <strong>der</strong> Regeln, bis entwe<strong>der</strong> e<strong>in</strong>e Abbruchbed<strong>in</strong>gung erfüllt ist o<strong>der</strong><br />

ke<strong>in</strong>e Regel mehr anwendbar ist. Falls e<strong>in</strong>e Abbruchbed<strong>in</strong>gung erfüllt ist, term<strong>in</strong>iere mit<br />

„nicht unifizierbar“. Falls ke<strong>in</strong>e Regel mehr anwendbar ist, hat <strong>die</strong> Gleichungsmenge <strong>die</strong> Form<br />

?<br />

?<br />

{x 1 = t 1 , . . . , x k = t k }, wobei ke<strong>in</strong>e <strong>der</strong> Variablen x i <strong>in</strong> e<strong>in</strong>em t j vorkommt; d.h. sie ist <strong>in</strong> gelöster<br />

Form. Das Resultat ist dann {x 1 ↦→ t 1 , . . . , x k ↦→ t k }.<br />

Beispiel 4.2.19. Unifikation von zwei Termen durch Anwendung <strong>der</strong> obigen Regeln:<br />

{k(f(x, g(a, y)), g(x, h(y)) = ? k(f(h(y), g(y, a)), g(z, z))}<br />

→ {f(x, g(a, y)) = ? f(h(y), g(y, a)), g(x, h(y)) = ? g(z, z)} (Dekomposition)<br />

→ x = ? h(y), g(a, y) = ? g(y, a), g(x, h(y)) = g(z, z) (Dekomposition)<br />

→ x = ? h(y), a = ? y, y = ? a, g(x, h(y)) = ? g(z, z) (Dekomposition)<br />

→ x = ? h(y), y = ? a, g(x, h(y)) = ? g(z, z) (Orientierung)<br />

→ x = ? h(a), y = ? a, g(x, h(a)) = ? g(z, z) (Anwendung, y)<br />

→ x = ? h(a), y = ? a, x = ? z, h(a) = ? z (Dekomposition)<br />

→ x = ? h(a), y = ? a, x = ? z, z = ? h(a) (Orientierung)<br />

→ x = ? h(a), y = ? a, z = ? h(a) (Anwendung,z)<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 141 Stand: 25. November 2012


4 Prädikatenlogik<br />

Unifizierte Terme: k(f(h(a), g(a, a)), g(h(a), h(a))).<br />

In <strong>der</strong> Baumdarstellung sieht es so aus:<br />

x<br />

f<br />

k<br />

g<br />

g x h<br />

<br />

a y y<br />

?<br />

=<br />

h<br />

f<br />

g<br />

k<br />

y y a<br />

z<br />

g<br />

z<br />

Unifizierter Term: k(f(h(a), g(a, a)), g(h(a), h(a))).<br />

f<br />

k<br />

h g h h<br />

<br />

a a a a a<br />

g<br />

Theorem 4.2.20. Der Unifikationsalgorithmus term<strong>in</strong>iert, ist korrekt und vollständig Erliefert,<br />

falls er nicht abbricht, genau e<strong>in</strong>en allgeme<strong>in</strong>sten Unifikator.<br />

Was man hieraus folgern kann, ist dass <strong>der</strong> Unifikationsalgorithmus alle<strong>in</strong>e ausreicht,<br />

um <strong>die</strong> Unerfüllbarkeit e<strong>in</strong>er Menge von Unit-Klauseln 3 zu entscheiden.<br />

4.3 Vollständigkeit<br />

Theorem 4.3.1. (Gödel-Herbrand-Skolem Theorem) Zu je<strong>der</strong> unerfüllbaren Menge C von Klauseln<br />

gibt es e<strong>in</strong>e endliche unerfüllbare Menge von Grund<strong>in</strong>stanzen (Grundklauseln) von C.<br />

Zusammen mit dem Satz, dass jede unerfüllbare Menge von Grundklauseln sich mit Resolution<br />

wi<strong>der</strong>legen lässt, kommt man dem Beweis <strong>der</strong> Vollständigkeit <strong>der</strong> allgeme<strong>in</strong>en<br />

Resolution näher. Man braucht als Verb<strong>in</strong>dung noch e<strong>in</strong> Lift<strong>in</strong>g-Lemma, das <strong>die</strong> Grundresolutionsschritte<br />

<strong>in</strong> Resolutionsschritte überträgt (liftet). Bei <strong>die</strong>ser Übertragung erkennt<br />

man, dass man auf <strong>der</strong> allgeme<strong>in</strong>en Ebene <strong>der</strong> Klauseln mit Variablen noch <strong>die</strong> Faktorisierung<br />

benötigt, sonst lassen sich nicht alle Grundresolutionsschritte als Resolutionsschritte<br />

mit anschließen<strong>der</strong> Instanzbildung <strong>der</strong> Resolvente verstehen.<br />

4.4 Löschregeln: Subsumtion, Tautologie und Isoliertheit<br />

Wenn man e<strong>in</strong>en automatischen Beweiser, <strong>der</strong> nur mit Resolution und Faktorisierung arbeitet,<br />

beobachtet, dann wird man sehr schnell zwei Arten von Redundanzen feststellen:<br />

Der Beweiser wird Tautologien ableiten, d.h. Klauseln, <strong>die</strong> e<strong>in</strong> Literal positiv und negativ<br />

3 Das s<strong>in</strong>d Klauseln mit nur e<strong>in</strong>em Literal<br />

Stand: 25. November 2012 142 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.4 Löschregeln: Subsumtion, Tautologie und Isoliertheit<br />

enthalten, z.B. {P, ¬P, . . .}. Diese Klauseln s<strong>in</strong>d <strong>in</strong> allen Interpretationen wahr und können<br />

daher zur Suche des Wi<strong>der</strong>spruchs (leere Klausel) nicht beitragen. Man sollte entwe<strong>der</strong><br />

ihre Entstehung verh<strong>in</strong><strong>der</strong>n o<strong>der</strong> sie wenigstens sofort löschen. Weiterh<strong>in</strong> wird <strong>der</strong><br />

Beweiser Klauseln ableiten, <strong>die</strong> Spezialisierungen von schon vorhandenen Klauseln s<strong>in</strong>d.<br />

Z.B. wenn schon {P (x), Q} vorhanden ist, dann ist {P (a), Q} aber auch {P (y), Q, R}, e<strong>in</strong>e<br />

Spezialisierung. Alles was man mit <strong>die</strong>sen (subsumierten) Klauseln machen kann, kann<br />

man genausogut o<strong>der</strong> besser mit <strong>der</strong> allgeme<strong>in</strong>eren Klausel machen. Daher sollte man<br />

subsumierte Klauseln sofort löschen. Es kann auch passieren, dass e<strong>in</strong>e neue abgeleitete<br />

Klausel allgeme<strong>in</strong>er ist als schon vorhandene Klauseln (<strong>die</strong> neue subsumiert <strong>die</strong> alte).<br />

Pragmatisch gesehen, muss man auch verh<strong>in</strong><strong>der</strong>n, dass bereits hergeleitete und h<strong>in</strong>zugefügte<br />

Resolventen (Faktoren) noch e<strong>in</strong>mal h<strong>in</strong>zugefügt werden. D.h. e<strong>in</strong>e Buchführung<br />

kann s<strong>in</strong>nvoll se<strong>in</strong>.<br />

Im folgenden wollen wir uns <strong>die</strong> drei wichtigsten Löschregeln und <strong>der</strong>en Wirkungsweise<br />

anschauen und <strong>der</strong>en Vollständigkeit im Zusammenhang mit <strong>der</strong> Resolution zeigen.<br />

Def<strong>in</strong>ition 4.4.1. Isoliertes Literal<br />

Sei C e<strong>in</strong>e Klauselmenge, D e<strong>in</strong>e Klausel <strong>in</strong> C und L e<strong>in</strong> Literal <strong>in</strong> D. L heißt isoliert, wenn es<br />

ke<strong>in</strong>e Klausel D ′ ≠ D mit e<strong>in</strong>em Literal L ′ <strong>in</strong> C gibt, so dass L und L ′ verschiedenes Vorzeichen<br />

haben und L und L ′ unifizierbar s<strong>in</strong>d.<br />

Die entsprechende Reduktionsregel ist:<br />

Def<strong>in</strong>ition 4.4.2. ISOL: Löschregel für isolierte Literale<br />

Wenn D e<strong>in</strong>e Klausel aus C ist mit e<strong>in</strong>em isolierten Literal, dann lösche <strong>die</strong> Klausel D aus C.<br />

Der Test, ob e<strong>in</strong> Literal <strong>in</strong> e<strong>in</strong>er Klauselmenge isoliert ist, kann <strong>in</strong> Zeit O(n 3 log(n))<br />

durchgeführt werden.<br />

Dass <strong>die</strong>se Regel korrekt ist, kann man mit folgen<strong>der</strong> prozeduralen Argumentation e<strong>in</strong>sehen:<br />

E<strong>in</strong>e Klausel D, <strong>die</strong> e<strong>in</strong> isoliertes Literal enthält, kann niemals <strong>in</strong> e<strong>in</strong>er Resolutionsableitung<br />

<strong>der</strong> leeren Klausel vorkommen, denn <strong>die</strong>ses Literal kann mittels Resolution<br />

nicht mehr entfernt werden und ist deshalb <strong>in</strong> allen nachfolgenden Resolventen enthalten.<br />

Dies gilt auch für e<strong>in</strong>e eventuelle spätere Resolution mit e<strong>in</strong>er Kopie von D. Also kann e<strong>in</strong><br />

Resolutionsbeweis <strong>in</strong> <strong>der</strong> restlichen Klauselmenge gefunden werden. Somit gilt:<br />

Theorem 4.4.3. Die Löschregel für isolierte Literale kann zum Resolutionskalkül h<strong>in</strong>zugenommen<br />

werden, ohne <strong>die</strong> Wi<strong>der</strong>legungsvollständigkeit zu verlieren.<br />

Die Löschregel für isolierte Literale gehört gewissermaßen zur Grundausstattung von<br />

Deduktionssystemen auf <strong>der</strong> Basis von Resolution. Sie kann mögliche E<strong>in</strong>gabefehler f<strong>in</strong>den<br />

und kann Resolventen mit isolierten Literalen wie<strong>der</strong> entfernen. Der Suchraum wird<br />

im allgeme<strong>in</strong>en jedoch nicht kle<strong>in</strong>er, denn <strong>die</strong> E<strong>in</strong>gabeformeln enthalten normalerweise<br />

ke<strong>in</strong>e isolierten Literale. Das Löschen von Resolventen mit isolierten Literalen ist noch<br />

nicht ausreichend. Denn e<strong>in</strong> nachfolgen<strong>der</strong> Resolutionsschritt könnte genau denselben<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 143 Stand: 25. November 2012


4 Prädikatenlogik<br />

Resolutionsschritt noch e<strong>in</strong>mal machen. Das Klauselgraphverfahren z.B.hat <strong>die</strong>se Schwächen<br />

nicht.<br />

Beispiel 4.4.4. Betrachte <strong>die</strong> Klauselmenge<br />

C1 :<br />

C2 :<br />

C3 :<br />

C4 :<br />

P (a)<br />

P (b)<br />

¬Q(b)<br />

¬P (x), Q(x)<br />

Diese Klauselmenge ist unerfüllbar. Am Anfang gibt es ke<strong>in</strong>e isolierten Literale. Resolviert man<br />

C1 + C4 so erhält man <strong>die</strong> Resolvente {Q(a)}. Das e<strong>in</strong>zige Literal ist isoliert. Somit kann <strong>die</strong>se<br />

Resolvente gleich wie<strong>der</strong> gelöscht werden. D.h. <strong>die</strong>ser Versuch war e<strong>in</strong>e Sackgasse <strong>in</strong> <strong>der</strong> Suche.<br />

E<strong>in</strong>e weitere mögliche Redundanz ist <strong>die</strong> Subsumtion<br />

Def<strong>in</strong>ition 4.4.5. Seien D und E Klauseln. Wir sagen dass D <strong>die</strong> Klausel E subsumiert, wenn<br />

es e<strong>in</strong>e Substitution σ gibt, so dass σ(D) ⊆ E<br />

D subsumiert E wenn D e<strong>in</strong>e Teilmenge von E ist o<strong>der</strong> allgeme<strong>in</strong>er als e<strong>in</strong>e Teilmenge<br />

von E ist. Zum Beispiel {P (x)} subsumiert {P (a), P (b), Q(y)}. Dass e<strong>in</strong>e Klausel E, <strong>die</strong><br />

von D subsumiert wird, redundant ist, kann man sich folgen<strong>der</strong>maßen klarmachen:<br />

Wenn e<strong>in</strong>e Resolutionsableitung <strong>der</strong> leeren Klausel irgendwann E benutzt, dann müssen<br />

<strong>in</strong> nachfolgenden Resolutionsschritten <strong>die</strong> „überflüssigen“ Literale wie<strong>der</strong> wegresolviert<br />

werden. Hätte man statt dessen D benutzt, wären <strong>die</strong>se extra Schritte überflüssig.<br />

Die entsprechende Reduktionsregel ist:<br />

Def<strong>in</strong>ition 4.4.6. SUBS: Löschregel für subsumierte Klauseln<br />

Wenn D und E Klauseln aus C s<strong>in</strong>d, D subsumiert E und E hat nicht weniger Literale als D,<br />

dann lösche <strong>die</strong> Klausel E aus C .<br />

Beispiel 4.4.7.<br />

• P subsumiert {P, S}.<br />

• {Q(x), R(x)} subsumiert {R(a), S, Q(a)}<br />

• {E(a, x), E(x, a)} subsumiert {E(a, a)} D.h e<strong>in</strong>e Klausel subsumiert e<strong>in</strong>en ihren Faktoren.<br />

In <strong>die</strong>sem Fall wird nicht gelöscht.<br />

• {¬P (x), P (f(x))} impliziert {¬P (x), P (f(f(x))} aber subsumiert nicht.<br />

Die Subsumtionslöschregel unterscheidet man manchmal noch nach Vorwärts- und<br />

Rückwärtsanwendung. Vorwärtsanwendung bedeutet, dass man gerade neu erzeugte Klauseln,<br />

<strong>die</strong> subsumiert werden, löscht. Rückwärtsanwendung bedeutet, dass man alte Klauseln<br />

löscht, <strong>die</strong> von gerade erzeugten Klausel subsumiert werden. Die Bed<strong>in</strong>gung, dass<br />

D nicht weniger Literale als C haben muss, verh<strong>in</strong><strong>der</strong>t, dass Elternklauseln ihre Faktoren<br />

Stand: 25. November 2012 144 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.4 Löschregeln: Subsumtion, Tautologie und Isoliertheit<br />

subsumieren. Die E<strong>in</strong>schränkung auf das syntaktische Kriterium θ(C) ⊆ D für Subsumtion<br />

ist zunächst mal pragmatischer Natur. Es ist nämlich so, dass man <strong>die</strong> allgeme<strong>in</strong>e<br />

Implikation, C ⇒ D, nicht immer entscheiden kann. Selbst wenn man es entscheiden<br />

könnte, wäre es nicht immer geschickt, solche Klauseln zu löschen. Z.B. folgt <strong>die</strong> Klausel<br />

{¬P (x), P (f(f(f(f(f(x))))))} aus <strong>der</strong> Klausel {¬P (x), P f(x))}. Um e<strong>in</strong>e Wi<strong>der</strong>legung<br />

mit den beiden unären Klauseln P (a) und ¬P (f(f(f(f(f(a)))))) zu f<strong>in</strong>den, benötigt man<br />

mit <strong>der</strong> ersten Klausel gerade zwei Resolutionsschritte, während man mit <strong>der</strong> zweiten<br />

Klausel 6 Resolutionsschritte benötigt. Würde man <strong>die</strong> implizierte Klausel löschen, würde<br />

<strong>der</strong> Beweis also viel länger werden.<br />

E<strong>in</strong> praktisches Problem bei <strong>der</strong> Löschung subsumierter Klauseln ist, dass <strong>der</strong> Test, ob<br />

e<strong>in</strong>e Klausel C e<strong>in</strong>e an<strong>der</strong>e subsumiert, N P-vollständig ist. Die Komplexität steckt <strong>in</strong> den<br />

Permutationen <strong>der</strong> Literale beim Subsumtionstest. In <strong>der</strong> Praxis macht das ke<strong>in</strong>e Schwierigkeiten,<br />

da man entwe<strong>der</strong> <strong>die</strong> Länge <strong>der</strong> Klauseln für <strong>die</strong> Subsumtion testet, beschränken<br />

kann, o<strong>der</strong> den Subsumtionstest unvollständig ausführt, <strong>in</strong>dem man nicht alle möglichen<br />

Permutationen von Literalen mit gleichem Prädikat ausprobiert.<br />

Um zu zeigen, dass man gefahrlos subsumierte Klauseln löschen kann, d.h. dass man<br />

Subsumtion zu e<strong>in</strong>em Resolutionsbeweiser h<strong>in</strong>zufügen kann ohne dass <strong>die</strong> Wi<strong>der</strong>legungsvollständigkeit<br />

verlorengeht, zeigen wir zunächst e<strong>in</strong> Lemma.<br />

Lemma 4.4.8. Seien D, E Klauseln <strong>in</strong> <strong>der</strong> Klauselmenge C, so dass D <strong>die</strong> Klausel E subsumiert.<br />

Dann wird jede Resolvente und je<strong>der</strong> Faktor von E von e<strong>in</strong>er Klausel subsumiert, <strong>die</strong> ableitbar ist,<br />

ohne E zu verwenden, wobei statt E <strong>die</strong> Klausel D o<strong>der</strong> Faktoren von D verwendet werden.<br />

Beweis. Faktoren von E werden offensichtlich von D subsumiert. Seien E = {K}∪E R und<br />

F = {M} ∪ F R , wobei K und M komplementäre Literale s<strong>in</strong>d und sei R := τE R ∪ τF R<br />

<strong>die</strong> Resolvente.<br />

Sei σ(D) ⊆ E.<br />

1. σ(D) ⊆ E R .<br />

Dann ist τσ(D) ⊆ F R , d.h. D subsumiert <strong>die</strong> Resolvente R.<br />

2. D = {L} ∪ D R , σD R ⊆ E R und σ(L) = K<br />

Die Resolvente von D mit F auf den Literalen L, M und dem allgeme<strong>in</strong>sten Unifikator<br />

µ ist dann µD R ∪ µF R . Sei τ ′ <strong>die</strong> Substitution, <strong>die</strong> auf E wie τσ wirkt<br />

und auf F wie τ. Diese Def<strong>in</strong>ition ist möglich durch Abän<strong>der</strong>ung auf Variablen,<br />

da wir stets annehmen, dass verschiedene Klauseln variablendisjunkt s<strong>in</strong>d. Da µ<br />

allgeme<strong>in</strong>st ist, gibt es e<strong>in</strong>e Substitution λ mit λµ = τ ′ . Dann ist λµD R ∪ λµF R<br />

= τσD R ∪ τF R ⊆ τE R ∪ τF R . Also wird <strong>die</strong> Resolvente Rvon E und F subsumiert<br />

von e<strong>in</strong>er Resolvente von D und F .<br />

3. σD R ⊆ E aber nicht σD R ⊆ E R .<br />

Dann ist D R = {L 1 , . . . , L m } ∪ D ′ R und σL i = σL = K. Mit e<strong>in</strong>er Argumentation<br />

ähnlich zu <strong>der</strong> <strong>in</strong> Fall 1 sieht man, dass es e<strong>in</strong>en Faktor D ′ von D gibt, <strong>der</strong> L und<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 145 Stand: 25. November 2012


4 Prädikatenlogik<br />

alle L i verschmilzt und immer noch E subsumiert. Auf <strong>die</strong>sen kann dann Fall 1<br />

angewendet werden.<br />

Theorem 4.4.9. Der Resolutionskalkül zusammen mit <strong>der</strong> Löschung subsumierter Klauseln ist<br />

wi<strong>der</strong>legungsvollständig.<br />

Beweis. Induktion nach <strong>der</strong> Länge e<strong>in</strong>er Resolutionsableitung mit Lemma 4.4.8 als Induktionsschritt<br />

und <strong>der</strong> Tatsache, dass <strong>die</strong> e<strong>in</strong>zige Klausel, <strong>die</strong> <strong>die</strong> leere Klausel subsumiert,<br />

selbst nur <strong>die</strong> leere Klausel se<strong>in</strong> kann, liefert <strong>die</strong> Behauptung.<br />

Def<strong>in</strong>ition 4.4.10. Sei D e<strong>in</strong>e Klausel. Wir sagen dass D e<strong>in</strong>e Tautologie ist, wenn D <strong>in</strong> allen<br />

Interpretationen wahr ist.<br />

Beispiele für Tautologien s<strong>in</strong>d {P a, ¬P a}, {Qa, P (f(x)), ¬P (f(x), Qb} o<strong>der</strong> {P x, ¬P x}.<br />

Ke<strong>in</strong>e Tautologien s<strong>in</strong>d {P x, ¬P f(y)} und {¬P (x, y), P (y, x)}.<br />

E<strong>in</strong> syntaktisches Kriterium zur Erkennung von tautologischen Klauseln ist <strong>der</strong> Test, ob<br />

zwei komplementäre Literale L, L ′ enthalten s<strong>in</strong>d mit gleichen Atomen. (siehe Beispiel<br />

4.1.13). Dieser Test ist für <strong>die</strong> ganze Klauselmenge <strong>in</strong> Zeit O(n 3 ) durchführbar.<br />

Die entsprechende Reduktionsregel ist:<br />

Def<strong>in</strong>ition 4.4.11. TAUT: Löschregel für tautologische Klauseln<br />

Wenn D e<strong>in</strong>e tautologische Klausel aus <strong>der</strong> Klauselmenge C ist, dann lösche <strong>die</strong> Klausel D aus C.<br />

Da tautologische Klauseln <strong>in</strong> allen Interpretationen wahr s<strong>in</strong>d, ist <strong>die</strong> Löschung von<br />

Tautologien unerheblich für <strong>die</strong> Unerfüllbarkeit.<br />

Theorem 4.4.12. Die Löschregel für tautologische Klauseln ist wi<strong>der</strong>legungsvollständig.<br />

Beweis. Hierzu zeigt man, dass e<strong>in</strong> Beweis, <strong>der</strong> e<strong>in</strong>e tautologische Klausel benutzt, verkürzt<br />

werden kann:<br />

Sei C = C 1 ∨L∨¬L e<strong>in</strong>e tautologische Klausel, <strong>die</strong> im Beweis benutzt wird. Sei D = D 1 ∨<br />

L ′ <strong>die</strong> Klausel, mit <strong>der</strong> als nächstes resolviert wird. Wir können annehmen, dass L ′ und ¬L<br />

komplementär s<strong>in</strong>d mit allgeme<strong>in</strong>stem Unifikator σ. Das Resultat ist σ(C 1 ∨L∨D 1 ). Diese<br />

Resolvente wird von D subsumiert. Mit Lemma 4.4.8 können wir den Resolutionsbeweis<br />

verkürzen, <strong>in</strong>dem D statt <strong>die</strong>ser Resolvente genommen wird. Mit Induktion können so alle<br />

Tautologien aus e<strong>in</strong>er Resolutionsherleitung <strong>der</strong> leeren Klausel elim<strong>in</strong>iert werden.<br />

Es gilt:<br />

Theorem 4.4.13. Der Resolutionskalkül zusammen mit LÃschung subsumierter Klauseln, Löschung<br />

von Klauseln mit isolierten Literalen und Löschung von Tautologien ist wi<strong>der</strong>legungsvollständig.<br />

Stand: 25. November 2012 146 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.5 Optimierungen und Varianten <strong>der</strong> Resolution<br />

Die Löschung von subsumierten Klauseln kann sehr zur Verkle<strong>in</strong>erung von Suchräumen<br />

beitragen. Umgekehrt kann das Abschalten <strong>der</strong> Subsumtionsregel e<strong>in</strong>en Beweis dadurch<br />

praktisch unmöglich machen, dass mehr als 99% aller abgeleiteten Resolventen<br />

subsumierte Klauseln s<strong>in</strong>d. Es gibt noch verschiedene destruktive Operationen auf <strong>der</strong><br />

Menge <strong>der</strong> Klauseln, <strong>die</strong> als Zusammensetzung von Resolution, Faktorisierung und Subsumtion<br />

verstanden werden können. Zum Beispiel gibt es den Fall, dass e<strong>in</strong> Faktor e<strong>in</strong>e<br />

Elternklausel subsumiert, wie <strong>in</strong> {P (x, x), P (x, y)}. Faktorisierung zu {P (x, x)} und anschließende<br />

Subsumtionslöschung kann man dann sehen als Ersetzen <strong>der</strong> ursprünglichen<br />

Klausel durch den Faktor. Diese Operation wird auch Subsumtionsresolution genannt. Die<br />

Prozedur von Davis und Putnam (siehe Abschnitt zu Aussagenlogik) zum Entscheiden<br />

<strong>der</strong> Unerfüllbarkeit von aussagenlogische Klauselmengen kann man jetzt leicht aus Resolution,<br />

Subsumtionsregel, Isolationsregel und Fallunterscheidung zusammenbauen.<br />

4.5 Optimierungen und Varianten <strong>der</strong> Resolution<br />

Der Resolutionskalkül <strong>in</strong> allgeme<strong>in</strong>er Form besitzt das Problem, dass im Allgeme<strong>in</strong>en<br />

sehr viele Resolventen gebildet werden können, d.h. aufgrund <strong>der</strong> komb<strong>in</strong>atorischen Explosion<br />

ist <strong>der</strong> Suchraum sehr groß. Es gibt Varianten und E<strong>in</strong>schränkungen <strong>der</strong> Resolution<br />

<strong>die</strong> zum E<strong>in</strong>en versuchen, den Suchraum e<strong>in</strong>zugrenzen und zum An<strong>der</strong>en versuchen,<br />

e<strong>in</strong> determ<strong>in</strong>istischeres Verfahren zur Herleitung <strong>der</strong> leeren Klausel □ anzugeben.<br />

Je nach Art <strong>der</strong> E<strong>in</strong>schränkung kann dabei <strong>die</strong> Vollständigkeit des Verfahrens verloren<br />

gehen, o<strong>der</strong> nicht mehr jede P L 1 -Formel erlaubt se<strong>in</strong>. Wir erötern e<strong>in</strong>ige <strong>die</strong>se Varianten<br />

kurz.<br />

4.5.1 Unit-Resolution<br />

Die Unit-Resolution for<strong>der</strong>t, dass bei je<strong>der</strong> Resolution m<strong>in</strong>destens e<strong>in</strong>e <strong>der</strong> Elternklauseln<br />

e<strong>in</strong> 1-Klausel, also e<strong>in</strong>e Klausel mit nur e<strong>in</strong>em Literal ist, d.h. nur <strong>die</strong> Resolutionregeln:<br />

Elternklausel 1: L σ(L) = σ(L ′ )<br />

Elternklausel 2: ¬L ′ , N 1 , . . . , N n<br />

Resolvente: σ(N 1 , . . . , N n )<br />

und<br />

Elternklausel 1: ¬L σ(L) = σ(L ′ )<br />

Elternklausel 2: L ′ , N 1 , . . . , N n<br />

Resolvente: σ(N 1 , . . . , N n )<br />

s<strong>in</strong>d erlaubt.<br />

Der Vorteil <strong>der</strong> Unit-Resolution besteht dar<strong>in</strong>, dass <strong>die</strong> Resolvente kle<strong>in</strong>er ist als e<strong>in</strong>e<br />

<strong>der</strong> beiden Elternklauseln.<br />

Die Unit-Resolution im Allgeme<strong>in</strong>en nicht wi<strong>der</strong>legungsvollständig, da z.B. <strong>die</strong> Klauselmenge<br />

{{P, Q}, {P, ¬Q}, {¬P, Q}, {¬P, ¬Q}}<br />

wi<strong>der</strong>sprüchlich ist, aber ke<strong>in</strong>e Unit-Resolution anwendbar (ist alle Klauseln enthalten<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 147 Stand: 04. Dezember 2012


4 Prädikatenlogik<br />

zwei Literale).<br />

Für sogenannte Hornklauseln (siehe unten) ist h<strong>in</strong>gegen <strong>die</strong> Unit-Resolution wi<strong>der</strong>legungsvollständig.<br />

Für allgeme<strong>in</strong>e Klauseln ist e<strong>in</strong>e Abwandlung des Verfahrens, dass <strong>die</strong> Wi<strong>der</strong>legungsvollständigkeit<br />

beibehält, Erlaube allgeme<strong>in</strong>e Resolution nur dann, wenn ke<strong>in</strong>e Unit-<br />

Resolution möglich ist, und verwende ansonsten Unit-Resolution.<br />

4.5.2 Set-of-Support<br />

Bei <strong>der</strong> Resolution mit e<strong>in</strong>er Stützmenge (set of support) besitzt <strong>die</strong> Klauselmenge C e<strong>in</strong>e<br />

Teilmenge T von <strong>der</strong> bekannt ist, dass C \ T erfüllbar ist. D.h. man nimmt im Grunde<br />

an, dass C \ T <strong>die</strong> Wissenbasis ist, <strong>die</strong> selbst nicht wi<strong>der</strong>sprüchlich ist, und T <strong>der</strong> negierten<br />

herzuleitende Folgerung entspricht. D.h. wenn man <strong>die</strong> semantische Folgerung<br />

F 1 , . . . , F n |= G zeigen will, startet man mit Klauselmenge {F 1 ′, . . . , F n} ′ ∪ ¬G ′ , wobei<br />

F i ′,<br />

¬G′ <strong>die</strong> Klauselformen zu F i und ¬G s<strong>in</strong>d. Als Stützmenge verwendet man ¬G ′ .<br />

Die Resolution mit Stützmenge T muss darf niemals zwei Elternklauseln aus C \ T<br />

verwenden, d.h. m<strong>in</strong>destens e<strong>in</strong>e Elternklausel muss aus T o<strong>der</strong> aus den hergeleiteten<br />

Klauseln stammen. Wenn T sehr kle<strong>in</strong> ist, werden viele Resolutionsmöglichkeiten (alle<br />

mit zwei Elternklauseln aus C \ T ) vermieden, was zu schnellem Erfolg (d.h. Herleitung<br />

<strong>der</strong> leeren Klausel □) führen kann.<br />

Wenn C \ T erfüllbar ist, dann kann man nachweisen, dass <strong>die</strong> Stützmengeresolution<br />

wi<strong>der</strong>legunsvollständig ist.<br />

4.5.3 UR-Resolution<br />

Die Unit-Result<strong>in</strong>g-Resolution (UR-Resolution) besitzt <strong>die</strong> E<strong>in</strong>schränkung, dass <strong>die</strong> Resolvente<br />

stets e<strong>in</strong>e 1-Klausel se<strong>in</strong> ergibt. Dafür wird e<strong>in</strong>e angepasste Variante <strong>der</strong> Resolution<br />

verwendet, <strong>die</strong> simultan e<strong>in</strong>e Klausel mit n + 1 Literalen (dem sogenannten Nukleus) mit<br />

n 1-Klauseln resolviert, sodass <strong>die</strong> Resolvente selbst wie<strong>der</strong> e<strong>in</strong>e 1-Klausel ist.<br />

n 1-Klauseln: {L 1 }, . . . {L n }<br />

Nukleus: {L ′ 1 , . . . , L′ n, L}<br />

σ(L)<br />

Dabei ist σ e<strong>in</strong> simultaner Unifikator, so dass σ(L i ) = σ(L ′′<br />

i ) falls L′ i = ¬L ′ i und<br />

σ(L ′′<br />

i ) = σ(L′ i ) falls L i = ¬L ′′<br />

i . Der simultane Unifikator wird berechnet, <strong>in</strong>dem man <strong>die</strong><br />

Termgleichungen aus L i und L ′ i bildet und als Menge von Termgleichungen verwendet.<br />

Die UR-Resolution entspricht im Wesentlichen n e<strong>in</strong>zelnen Resolutionen beg<strong>in</strong>nen mit<br />

dem Nukleus und e<strong>in</strong>er <strong>der</strong> 1-Klauseln {L j }, allerd<strong>in</strong>gs werden <strong>die</strong> dabei erzeugen Resolventen<br />

von <strong>der</strong> UR-Resolution nicht erzeugt. Dies begründet <strong>die</strong> Korrektheit <strong>der</strong> UR-<br />

Resolution. Genau wie <strong>die</strong> Unit-Resolution ist <strong>die</strong> UR-Resolution nicht wi<strong>der</strong>legungsvoll-<br />

Stand: 04. Dezember 2012 148 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.5 Optimierungen und Varianten <strong>der</strong> Resolution<br />

ständig, da z.B. auf <strong>die</strong> Klauselmenge<br />

{{P, Q}, {P, ¬Q}, {¬P, Q}, {¬P, ¬Q}}<br />

ke<strong>in</strong>e UR-Resolution anwendbar ist. Für <strong>die</strong> e<strong>in</strong>geschränkte Klasse <strong>der</strong> sogenannten unärwi<strong>der</strong>legbaren<br />

Klauseln ist <strong>die</strong> UR-Resolution h<strong>in</strong>gegen vollständig. Die Hornklauseln<br />

s<strong>in</strong>d e<strong>in</strong>e Teilmenge <strong>der</strong> unär-wi<strong>der</strong>legbaren Klauseln.<br />

4.5.4 Input-Resolution<br />

Für <strong>die</strong> Klasse <strong>der</strong> unär wi<strong>der</strong>legbaren Klauseln ist auch e<strong>in</strong>e weitere E<strong>in</strong>schränkung noch<br />

wi<strong>der</strong>legungsvollständig: <strong>die</strong> sogenannte Input-Resolution. Diese verbietet es zwei Resolventen<br />

als Elternklauseln e<strong>in</strong>er Resolution zu verwenden, o<strong>der</strong> umgekehrt: E<strong>in</strong>e <strong>der</strong><br />

Elternklauseln muss stets aus <strong>der</strong> <strong>in</strong>itialen Klauselmenge stammen.<br />

4.5.5 L<strong>in</strong>eare Resolution<br />

Die l<strong>in</strong>eare Resolution beg<strong>in</strong>nt mit e<strong>in</strong>er Zentralklausel. Am Anfang muss <strong>die</strong>se als e<strong>in</strong>e<br />

<strong>der</strong> Elternklausel verwendet werden, im Anschluss muss stets <strong>die</strong> erhaltene Resolvente<br />

als Elternklausel verwendet werden. Als zweite Elternklausel kann dabei sowohl e<strong>in</strong>e<br />

E<strong>in</strong>gabeklausel o<strong>der</strong> auch e<strong>in</strong>e vorher berechnete Resolvente verwendet werden.<br />

Zum Beispiel kann man <strong>die</strong> Klauselmenge {{P, Q}, {P, ¬Q}, {¬P, Q}, {¬P, ¬Q}} durch<br />

l<strong>in</strong>eare Resolution mit <strong>der</strong> Zentralklausel {P, Q} wiefolgt wi<strong>der</strong>legen:<br />

{P, Q}<br />

{P, ¬Q}<br />

{P } {¬P, ¬Q}<br />

{¬Q} {¬P, Q}<br />

{¬P }<br />

□<br />

Wenn man Faktorisierung auch erlaubt, so lässt sich nachweisen, dass l<strong>in</strong>eare Resolution<br />

wi<strong>der</strong>legungsvollständig ist. Im Falle von Hornklauseln ist <strong>die</strong> Faktorisierung nicht<br />

notwendig.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 149 Stand: 04. Dezember 2012


4 Prädikatenlogik<br />

4.5.6 Hornklauseln und SLD-Resolution<br />

Hornklauseln s<strong>in</strong>d syntaktisch e<strong>in</strong>geschränkte Klauseln, d.h. nicht alle Klauseln s<strong>in</strong>d<br />

Hornklauseln, und daher werden nicht alle Prädikatenlogischen Formeln von Hornklauselmengen<br />

erfasst.<br />

Def<strong>in</strong>ition 4.5.1 (Hornklausel). E<strong>in</strong>e Hornklausel ist e<strong>in</strong>e Klausel, <strong>die</strong> höchstens e<strong>in</strong> positives<br />

Literal enthält. E<strong>in</strong>e Klauselmenge, <strong>die</strong> nur aus Hornklauseln besteht, nennt man Hornklauselmenge.<br />

Beispiel 4.5.2. {̸= R(x), P (a), Q(f(y))} ist ke<strong>in</strong>e Hornklausel, da sie zwei positive Literale enthält.<br />

H<strong>in</strong>gegen s<strong>in</strong>d <strong>die</strong> Klauseln {¬R(f(x)), ¬P (g(x, a), )Q(y)} und {¬R(g(y)), ¬P (h(b))}<br />

beide Hornklauseln, da <strong>die</strong> erste Klausel genau e<strong>in</strong> positives Literal (das Literal Q(y)) und <strong>die</strong><br />

zweite Klausel gar ke<strong>in</strong>e positiven Literale enthält.<br />

Hornklauseln f<strong>in</strong>den Verwendung <strong>in</strong> logischen Programmiersprache, wie z.B. Prolog,<br />

was wir noch behandeln werden. Hornklauseln lassen sich weiter unterteilen:<br />

• Def<strong>in</strong>ite Klauseln s<strong>in</strong>d Klauseln mit genau e<strong>in</strong>em positiven Literal.<br />

• Def<strong>in</strong>ite E<strong>in</strong>sklauseln( mit positivem Literal) werden auch als Fakt bezeichnet.<br />

• Klauseln, <strong>die</strong> nur negative Literale enthalten, nennt man auch e<strong>in</strong> def<strong>in</strong>ites Ziel.<br />

E<strong>in</strong>e Menge von def<strong>in</strong>iten Klauseln nennt man auch def<strong>in</strong>ites Programm.<br />

Wie bereits erwähnt s<strong>in</strong>d <strong>die</strong> l<strong>in</strong>eare Resolution ohne Verwendung <strong>der</strong> Faktorisierung<br />

und auch <strong>die</strong> Unit-Resolution vollständige Strategien für Hornklauseln.<br />

Die sogenannte SLD-Resolution ist nur für Hornklauselmengen def<strong>in</strong>iert. Das D steht<br />

dabei für Def<strong>in</strong>ite Klauseln. Beg<strong>in</strong>nend mit e<strong>in</strong>er Zentralklausel (<strong>die</strong> e<strong>in</strong> def<strong>in</strong>ites Ziel ist,<br />

also ke<strong>in</strong>e positiven Literale enthält), wird L<strong>in</strong>eare Resolution durchgeführt, wobei e<strong>in</strong>e<br />

determ<strong>in</strong>istische Selektionsfunktion bestimmt, welches Literal aus <strong>der</strong> aktuellen Zentralklausel<br />

wegresolviert wird.<br />

Tatsächlich lässt sich nachweisen, dass <strong>die</strong> Auswahl <strong>die</strong>ses Literals nicht entsche<strong>in</strong>ed<br />

für <strong>die</strong> Wi<strong>der</strong>legungsvollständigkeit ist, d.h. unabhängig davon, welches Literal gewählt<br />

wird, f<strong>in</strong>det <strong>die</strong> Resolution <strong>die</strong> leere Klausel; o<strong>der</strong> umgekehrt: wenn man Literal L i zu<br />

erst wegresolviert und man f<strong>in</strong>det <strong>die</strong> leere Klausel nicht, dann f<strong>in</strong>det man sie auch nicht,<br />

wenn man zunächst Literal L j wegresolviert. D.h. <strong>die</strong> Wahl des Literals ist sogenannter<br />

don’t care-Nichtdeterm<strong>in</strong>ismus <strong>der</strong> durch <strong>die</strong> Selektionsfunktion entfernt wird. Man<br />

kann hier verschiedene Heuristiken verwenden. Üblicherweise werden zunächst durch<br />

<strong>die</strong> Resolution neu h<strong>in</strong>zugefügte Literal wegresolviert. Als weitere Selektionsfunktion<br />

kann man <strong>die</strong> Aufschreibereihenfolge verwenden, o<strong>der</strong> beispielsweise zuerst <strong>die</strong> am meisten<br />

<strong>in</strong>stanziierten Literale (o<strong>der</strong> <strong>die</strong> am wenigsten <strong>in</strong>stanziierten Literale) verwenden.<br />

Als weitere Beson<strong>der</strong>heit <strong>der</strong> SLD-Resolution ist zu beachten, dass bei e<strong>in</strong>em def<strong>in</strong>iten<br />

Ziel als Zentralklausel und def<strong>in</strong>item Programm als E<strong>in</strong>gabeklauseln, jede l<strong>in</strong>eare Resolution<br />

stets <strong>die</strong> Resolvente und e<strong>in</strong>e Seitenklausel verwendet, d.h. es werden nie zwei Re-<br />

Stand: 04. Dezember 2012 150 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


4.5 Optimierungen und Varianten <strong>der</strong> Resolution<br />

solventen mite<strong>in</strong>an<strong>der</strong> resolviert (beachte: bei allgeme<strong>in</strong>er l<strong>in</strong>earer Resolution ist <strong>die</strong>ser<br />

Fall möglich). Der Grund liegt dar<strong>in</strong>, dass alle Resolventen stets nur aus negativen Literalen<br />

bestehen, zur Resolution muss daher e<strong>in</strong>e def<strong>in</strong>ite Klausel (mit positivem Literal) als<br />

zweite Elternklausel gewählt werden.<br />

Die so def<strong>in</strong>ierte SLD-Resolution ist für Hornklauselmengen korrekt und vollständig.<br />

Beachte, dass <strong>die</strong> Resolutionsreihenfolge allerd<strong>in</strong>gs nicht-determ<strong>in</strong>istisch ist: Zwar legt<br />

<strong>die</strong> Selektionsfunktion das wegzuresolvierende Literal fest, jedoch kann <strong>die</strong> zweite Elternklausel<br />

beliebig gewählt werden. E<strong>in</strong> vollständige Strategie wäre es e<strong>in</strong>e Breitensuche<br />

zu verwenden, <strong>die</strong> alle <strong>die</strong>se Möglichkeiten quasi gleichzeitig versucht. Wir werden <strong>die</strong><br />

SLD-Resolution im nächsten Kapitel zur logischen Programmierung nochmal genauer<br />

<strong>in</strong>spizieren.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 151 Stand: 7. Januar 2013


5<br />

Logisches Programmieren<br />

In <strong>die</strong>sem Kapitel werden wir erläutern, wie logische Programmierung – <strong>in</strong>sbeson<strong>der</strong>e<br />

mit Prolog – funktioniert und welche Konzepte dah<strong>in</strong>ter stecken. Wir werden aufgrund<br />

des Umfangs nicht auf alle Fe<strong>in</strong>heiten und Beson<strong>der</strong>heiten von Prolog e<strong>in</strong>gehen. Hierfür<br />

sei auf <strong>die</strong> entsprechenden Bücher verwiesen.<br />

5.1 Von <strong>der</strong> Resolution zum Logischen Programmieren<br />

Zunächst werden wir erörtern wie man das Herleiten <strong>der</strong> leeren Klausel mithilfe <strong>der</strong> Prädikatenlogischen<br />

Resolution als Ausführung e<strong>in</strong>es Programms auffassen kann.<br />

Wo ist das Programm? Nicht nur <strong>in</strong> funktionalen Programmiersprachen, son<strong>der</strong>n <strong>in</strong> fast<br />

allen Programmiersprachen steht das Konzept / Konstrukt <strong>der</strong> Funktion zu Verfügung,<br />

also <strong>die</strong> Def<strong>in</strong>ition e<strong>in</strong>er Abbildung von E<strong>in</strong>gaben auf Ausgaben. Er<strong>in</strong>nern wir uns an<br />

<strong>die</strong> Semantik <strong>der</strong> Prädikatenlogischen Prädikate: Diese stellen Relationen dar. Daher kann<br />

man Relationen auch als Abbildungen auffassen. Betrachte zum Beispiel <strong>die</strong> Funktion, <strong>die</strong><br />

e<strong>in</strong>e Zahl um E<strong>in</strong>s <strong>in</strong>krementiert:<br />

f(x) = x + 1.<br />

Relational kann man <strong>die</strong>s als Relation auffassen, <strong>die</strong> <strong>die</strong> E<strong>in</strong>gabe x zur Ausgabe x + 1 <strong>in</strong><br />

Beziehung setzt. Wenn wir daher <strong>in</strong> <strong>der</strong> Prädikatenlogik schreiben ∀x.P (x, x + 1) (wobei<br />

+ als zweistelliges Funktionssymbol aufzufassen ist), so kann man das Prädikat P gerade<br />

als Abbildung jedes x auf se<strong>in</strong>en Nachfolger x + 1 <strong>in</strong>terpretieren. Allerd<strong>in</strong>gs kann<br />

man <strong>in</strong> <strong>die</strong>sem Fall für x auch e<strong>in</strong>en beliebigen Term e<strong>in</strong>setzen und eigentlich ist x + 1<br />

re<strong>in</strong> syntaktisch erstmal nur e<strong>in</strong>e Folge von Symbolen. Tatsächlich erfor<strong>der</strong>t <strong>die</strong> Behand-<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 Stand: 7. Januar 2013


5.1 Von <strong>der</strong> Resolution zum Logischen Programmieren<br />

lung von Zahlen etwas mehr Aufwand und muss durch spezielle Operationen <strong>in</strong> logische<br />

Programmiersprachen e<strong>in</strong>gebaut werden. Außerdem fehlt noch <strong>die</strong> möglich rekursiv zu<br />

programmieren und das Def<strong>in</strong>ieren von Bed<strong>in</strong>gungen (z.B. möchte man nicht durch 0<br />

divi<strong>die</strong>ren). Betrachten wir daher e<strong>in</strong> etwas e<strong>in</strong>facheres Beispiel:<br />

Die Klauseln:<br />

{vater(peter, maria)},<br />

{mutter(susanne, maria)},<br />

{vater(peter, monika)},<br />

{mutter(susanne, monika)},<br />

{vater(karl, peter)},<br />

{mutter(elisabeth, peter)},<br />

{vater(karl, pia)},<br />

{mutter(elisabeth, pia)},<br />

{vater(karl, paul)},<br />

{mutter(elisabeth, paul)}<br />

wobei vater und mutter zweistellige Prädikate und alle Vornamen Konstanten s<strong>in</strong>d, kann<br />

man als Wissenbasis o<strong>der</strong> auch als Def<strong>in</strong>ition / Fakten aufassen.<br />

Die P L 1 -Formel<br />

∀X, Y : vater(X, Y ) =⇒ eltern(X, Y ) ∧ ∀X, Y : mutter(X, Y ) =⇒ eltern(X, Y )<br />

kann man als Def<strong>in</strong>ition <strong>der</strong> Relation eltern auffassen. Beachte, dass wir sowohl<br />

X als E<strong>in</strong>gabe und Y als Ausgabe auffassen können, aber auch umgekehrt.<br />

In CNF ergibt <strong>die</strong>s gerade <strong>die</strong> beiden Klauseln {eltern(X, Y ), ¬vater(X, Y )} und<br />

{eltern(X, Y ), ¬mutter(X, Y )}.<br />

E<strong>in</strong> Aufruf des Programms könnte nun z.B. <strong>die</strong> Anfrage ∃Y.eltern(karl, Y ) se<strong>in</strong>, um<br />

zu fragen, ob Karl K<strong>in</strong><strong>der</strong> hat. D.h. wir möchten aus obiger Klauselmenge (<strong>die</strong> Wissenbasis<br />

/ Programm) <strong>die</strong> Formel ∃Y.eltern(karl, Y ) folgern. Die E<strong>in</strong>gabe für den Resolutionskalkül<br />

muss daher <strong>die</strong> negierte Anfrage ∀Y.¬eltern(karl, Y ) se<strong>in</strong>, o<strong>der</strong> als Klausel<br />

{¬eltern(karl, Y )}. Resolution kann hier e<strong>in</strong>en Wi<strong>der</strong>spruch herleiten<br />

{¬eltern(karl, Y )} {eltern(X 1 , Y 1 ), ¬vater(X 1 , Y 1 )}<br />

X 1 ↦→ karl,<br />

Y 1 ↦→ Y<br />

{¬vater(karl, Y 1 )}<br />

{vater(karl, peter)}<br />

Y ↦→ peter<br />

□<br />

. . .<br />

Wir würden aber trotzdem gerne wissen, wer nun e<strong>in</strong> K<strong>in</strong>d von Karl ist. Die Resolu-<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 153 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

tion liefert hierfür zunächst ke<strong>in</strong> echtes Ergebnis (außer dem Beweis <strong>der</strong> Unerfüllbarkeit<br />

<strong>der</strong> E<strong>in</strong>gabeformel). Es fehlt daher <strong>die</strong> Erzeugung e<strong>in</strong>er Antwort bzw. Ausgabe des Programms.<br />

Hierfür kann man <strong>die</strong> errechneten Substitutionen verwenden. Beachte: Wir haben<br />

oben schon l<strong>in</strong>eare Resolution verwendet, und <strong>die</strong> Zentralklausel war gerade <strong>die</strong> Anfrage<br />

{¬eltern(karl, Y )}. Wendet man alle <strong>in</strong> <strong>der</strong> Herleitung entstanden Substitutionen<br />

nache<strong>in</strong>an<strong>der</strong> auf <strong>die</strong>se Klausel an, so erhält man gerade {¬eltern(karl, peter)}. Weil wir<br />

<strong>die</strong> leere Klausel hergeleitet haben, können wir daher nicht nur schließen, dass Karl e<strong>in</strong><br />

K<strong>in</strong>d hat, son<strong>der</strong>n dass Peter e<strong>in</strong> K<strong>in</strong>d von Karl ist. Es gibt noch zwei weitere K<strong>in</strong><strong>der</strong> von<br />

Karl (nämlich Pia und Paul), <strong>die</strong>se können durch Verwendung an<strong>der</strong>er E<strong>in</strong>gabeklauseln<br />

bei <strong>der</strong> Resolution ebenfalls hergeleitet werden:<br />

{¬eltern(karl, Y )} {eltern(X 1 , Y 1 ), ¬vater(X 1 , Y 1 )}<br />

X 1 ↦→ karl,<br />

Y 1 ↦→ Y<br />

{¬vater(karl, Y 1 )}<br />

Y ↦→ paul<br />

{vater(karl, paul)}<br />

{¬eltern(karl, Y )} {eltern(X 1 , Y 1 ), ¬vater(X 1 , Y 1 )}<br />

X 1 ↦→ karl,<br />

Y 1 ↦→ Y<br />

{¬vater(karl, Y 1 )}<br />

Y ↦→ pia<br />

{vater(karl, pia)}<br />

□<br />

. . .<br />

und<br />

□<br />

. . .<br />

Dies s<strong>in</strong>d gerade alle Möglichkeiten durch l<strong>in</strong>eare Resolution <strong>die</strong> leere Klausel herzuleiten.<br />

Zunächst stellt sich <strong>die</strong> Frage: Funktioniert das Erzeugen e<strong>in</strong>er Antwort mit <strong>die</strong>ser Methode<br />

stets?<br />

Wir erweitern das Beispiel, um <strong>die</strong> Aussage: „Der Vater von Fritz ist Horst o<strong>der</strong> Hans“,<br />

d.h. wir fügen <strong>die</strong> Klausel {vater(horst, fritz), vater(hans, fritz)} h<strong>in</strong>zu. Zusätzlich fügen<br />

wir noch <strong>die</strong> Mutter von Fritz h<strong>in</strong>zu: {mutter(anna, fritz)}. Die Anfrage, ob Fritz<br />

Eltern hat (und welche), entspricht <strong>der</strong> Formel ∃X : eltern(X, fritz), d.h. wir starten <strong>die</strong><br />

Resolution mit <strong>der</strong> Zielklausel {¬eltern(X, fritz)}:<br />

{¬eltern(X, fritz)} {eltern(X 1 , Y 1 ), ¬vater(X 1 , Y 1 )}<br />

X 1 ↦→ X,<br />

Y 1 ↦→ fritz<br />

{¬vater(X, fritz)}<br />

{vater(horst, fritz), vater(hans, fritz)}<br />

X ↦→ horst<br />

{vater(hans, fritz)}<br />

. . .<br />

□<br />

X ↦→ hans<br />

D.h. wir können zwar <strong>die</strong> leere Klausel herleiten, aber <strong>die</strong> Substitution legt ke<strong>in</strong> e<strong>in</strong>deutiges<br />

Ergebnis fest: X wird e<strong>in</strong>mal auf hans und e<strong>in</strong>mal auf horst abgebildet. Die Antwort<br />

Stand: 7. Januar 2013 154 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.1 Von <strong>der</strong> Resolution zum Logischen Programmieren<br />

wäre daher e<strong>in</strong>e O<strong>der</strong>-Verknüpfung. Diese Situation kann immer dann auftreten, wenn<br />

e<strong>in</strong>e Klausel mehr als e<strong>in</strong> positives Literal enthält, was im Beispiel gerade <strong>die</strong> Klausel<br />

{vater(horst, fritz), vater(hans, fritz)} war.<br />

E<strong>in</strong>e an<strong>der</strong>e Möglichkeit ke<strong>in</strong>e e<strong>in</strong>deutige Antwort zu erhalten, besteht dar<strong>in</strong>, wenn <strong>die</strong><br />

Anfrage selbst e<strong>in</strong>e Disjunktion ist, z.B. ∃X 1 , X 2 : eltern(X 1 , maria)∨eltern(X 2 , monika).<br />

Nach Negation zerfällt <strong>die</strong>se Anfrage <strong>in</strong> zwei Klauseln {¬eltern(X 1 , maria)} und<br />

{¬eltern(X 2 , monika)}. Da es dann ke<strong>in</strong>e e<strong>in</strong>deutige Zentralklausel gibt, gibt es unter<br />

Umständen auch ke<strong>in</strong>e e<strong>in</strong>deutige Antwort.<br />

Die Konsequenz aus <strong>die</strong>sen Une<strong>in</strong>deutigkeiten ist es, dass <strong>in</strong> Prolog nur Hornklauseln<br />

erlaubt s<strong>in</strong>d (<strong>die</strong>se enthalten nie mehr als e<strong>in</strong> positives Literal), und nur e<strong>in</strong>e Zielklausel<br />

erlaubt ist. Neben <strong>die</strong>sem Vorteil <strong>in</strong> <strong>der</strong> Verwendung von Hornklauseln, gibt es weitere<br />

Vorteile: Zum E<strong>in</strong>en s<strong>in</strong>d viele logische Zusammenhänge <strong>in</strong> Form von Hornklauseln<br />

modellierbar, und zum an<strong>der</strong>en ist <strong>die</strong> SLD-Resolution wi<strong>der</strong>legungsvollständig und entspricht<br />

gerade dem sequentiellen Ablauf e<strong>in</strong>es Programms.<br />

Obwohl wir Hornklauseln schon im letzten Kapitel def<strong>in</strong>iert haben, werden wir <strong>die</strong>s<br />

nun erneut machen, und gleich <strong>die</strong> entsprechende Syntax <strong>in</strong> Prolog e<strong>in</strong>führen.<br />

Def<strong>in</strong>ition 5.1.1.<br />

• E<strong>in</strong>e Hornklausel ist e<strong>in</strong>e Klausel mit maximal e<strong>in</strong>em positiven Literal.<br />

• E<strong>in</strong>e def<strong>in</strong>ite Klausel ist e<strong>in</strong>e Klausel mit genau e<strong>in</strong>em positiven Literal. D.h. <strong>die</strong> Klausel<br />

ist von <strong>der</strong> Form: A ∨ ¬B 1 ∨ . . . ∨ ¬B m , was gerade <strong>der</strong> Implikation B 1 ∧ . . . ∧ B m =⇒ A<br />

entspricht. In <strong>der</strong> logischen Programmierung verwendet man <strong>die</strong> umgekehrte Notation:<br />

A ⇐ B 1 , . . . , B m .<br />

Beachte: Dabei werden Kommata als Konjunktion <strong>in</strong>terpretiert, <strong>der</strong> Punkt legt das Ende <strong>der</strong><br />

Klausel fest.<br />

In Prolog wird <strong>die</strong>se Schreibweise verwendet, allerd<strong>in</strong>gs wird anstelle von ⇐ das Konstrukt<br />

:- verwendet, d.h. e<strong>in</strong>e def<strong>in</strong>ite Klausel wird <strong>in</strong> Prolog als<br />

geschrieben.<br />

A :- B 1 , . . . , B m .<br />

Man nennt A den Kopf und B 1 , . . . , B m den Rumpf <strong>der</strong> Klausel.<br />

• E<strong>in</strong>e Klausel ohne positive Literale nennt man def<strong>in</strong>ites Ziel (Anfrage,Query,goal). Die<br />

Notation <strong>in</strong> <strong>der</strong> logischen Programmierung ist<br />

⇐ B 1 , . . . , B n .<br />

Die B i werden Unterziele (Subgoals) genannt.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 155 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

Im Prolog-Interpreter gibt man e<strong>in</strong>fach B 1 , . . . , B n . e<strong>in</strong>, <strong>der</strong> Prompt selbst repräsentiert das<br />

⇐ (<strong>der</strong> üblicherweise als ?- dargestellt wird).<br />

• E<strong>in</strong>e Unit-Klausel (o<strong>der</strong> Fakt) ist e<strong>in</strong>e def<strong>in</strong>ite Klausel mit leerem Rumpf. Notation <strong>in</strong> <strong>der</strong><br />

logischen Programmierung ist A ⇐. In Prolog wird <strong>der</strong> ⇐ weggelassen, d.h. man schreibt<br />

e<strong>in</strong>fach A.<br />

• E<strong>in</strong> def<strong>in</strong>ites Programm ist e<strong>in</strong>e Menge von def<strong>in</strong>iten Klauseln.<br />

• Die Menge aller Klauseln, <strong>der</strong>en Kopfliteral das Prädikat Q hat, nennen wir Def<strong>in</strong>ition von<br />

Q.<br />

E<strong>in</strong> def<strong>in</strong>ites Programm entspricht e<strong>in</strong>er Und-Verknüpfung aller def<strong>in</strong>iten Klauseln. Beachte,<br />

dass jede Hornklausel entwe<strong>der</strong> e<strong>in</strong>e def<strong>in</strong>ite Klausel o<strong>der</strong> e<strong>in</strong> def<strong>in</strong>ites Ziel ist.<br />

Wir geben <strong>die</strong> Elternbeziehungen vom Anfang als Prolog-Programm an:<br />

vater(peter,maria).<br />

vater(peter,monika).<br />

vater(karl, peter).<br />

vater(karl, pia).<br />

vater(karl, paul).<br />

mutter(susanne,monika).<br />

mutter(susanne,maria).<br />

mutter(elisabeth, peter).<br />

mutter(elisabeth, pia).<br />

mutter(elisabeth, paul).<br />

eltern(X,Y) :-<br />

eltern(X,Y) :-<br />

vater(X,Y).<br />

mutter(X,Y).<br />

Wenn man <strong>die</strong>ses Prolog-Programm <strong>in</strong> den Interpreter lädt 1 , kann man Anfragen<br />

durchführen. Beachte: Nachdem Ausdrucken <strong>der</strong> ersten möglichen Antwort, kann man<br />

e<strong>in</strong> Semikolon e<strong>in</strong>geben, um nach weiteren Antworten zu suchen. Wir führen <strong>die</strong>s mit<br />

e<strong>in</strong>igen Beispielen vor:<br />

?- eltern(karl,X).<br />

X = peter ;<br />

X = pia ;<br />

X = paul ;<br />

false.<br />

?- eltern(karl,x).<br />

false.<br />

?- eltern(peter,X).<br />

1 Wir verwenden SWI-Prolog (http://www.swi-prolog.org/), das Laden wird über consult(’filename’).<br />

ausgeführt werden, wenn filename.pl das Programm enthält.<br />

Stand: 7. Januar 2013 156 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.2 Semantik von Hornklauselprogrammen<br />

X = maria ;<br />

X = monika ;<br />

false.<br />

?- eltern(X,peter).<br />

X = karl ;<br />

X = elisabeth.<br />

?- eltern(X,Y).<br />

X = peter,<br />

Y = maria ;<br />

X = peter,<br />

Y = monika ;<br />

X = karl,<br />

Y = peter ;<br />

X = karl,<br />

Y = pia ;<br />

X = karl,<br />

Y = paul ;<br />

X = susanne,<br />

Y = monika ;<br />

...<br />

Beachte: Variablen werden <strong>in</strong> Prolog beg<strong>in</strong>nend mit Großbuchstaben o<strong>der</strong> _ geschrieben.<br />

Prädikate und Funktionssymbole beg<strong>in</strong>nen mit e<strong>in</strong>em Kle<strong>in</strong>buchstaben. Daher liefert <strong>die</strong><br />

Anfrage ?- eltern(karl,x). ke<strong>in</strong> Ergebnis (x wird als Konstante <strong>in</strong>terpretiert!).<br />

5.2 Semantik von Hornklauselprogrammen<br />

Wir werden zunächst allgeme<strong>in</strong> <strong>die</strong> Semantik von Hornklauselprogrammen erörtern.<br />

Prolog-Programme und -Interpreter basieren im Grunde auf <strong>die</strong>ser Semantik, nehmen<br />

jedoch praktische Anpassungen vor, <strong>die</strong> auch <strong>die</strong> Semantik verän<strong>der</strong>n. Daher werden wir<br />

erst im Anschluss auf <strong>die</strong> Prolog-Semantik e<strong>in</strong>gehen und <strong>die</strong> Unterschiede herausstellen.<br />

Wir betrachten zunächst <strong>die</strong> SLD-Resolution für Hornklauselprogramme erneut, und<br />

bauen den Antwortmechanismus mit e<strong>in</strong>. Bei <strong>der</strong> Resolution s<strong>in</strong>d <strong>die</strong> Elternklauseln<br />

stets mit unterschiedlichen Variablennamen frisch umzubenennen (da <strong>die</strong> Variablen e<strong>in</strong>er<br />

Klausel impliziert allquantifiziert s<strong>in</strong>d). Verwendet man SLD-Resolution für Hornklauselprogramme<br />

mit e<strong>in</strong>em def<strong>in</strong>iten Ziel als Zentralklausel, so haben wir bereits gesehen,<br />

dass jede Resolution <strong>die</strong> letzte Resolvente (bzw. am Anfang <strong>die</strong> Zentralklausel) und<br />

e<strong>in</strong>e Seitenklausel als Elternklauseln verwendet. Zur richtigen Umbenennung vor je<strong>der</strong><br />

Resolution genügt es, nur <strong>die</strong> Variablen e<strong>in</strong>er <strong>der</strong> beiden Elternklauseln umzubenennen.<br />

Hierfür können wir stets <strong>die</strong> Seitenklausel wählen. Wir bezeichnen <strong>die</strong>ses Vorgehen als<br />

standardisierte SLD-Resolution.<br />

Wir def<strong>in</strong>ieren e<strong>in</strong>en solchen Resolutionsschritt formal:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 157 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

Def<strong>in</strong>ition 5.2.1. Sei G = ⇐ A 1 , . . . , A m , . . . , A k e<strong>in</strong> def<strong>in</strong>ites Ziel und C = A ⇐ B 1 , . . . , B q<br />

e<strong>in</strong>e def<strong>in</strong>ite Klausel, wobei C frisch umbenannt ist. Dann kann man aus G und C e<strong>in</strong> neues Ziel<br />

G ′ wie folgt mit Resolution herleiten:<br />

1. A m ist das durch <strong>die</strong> Selektionsfunktion selektierte Atom des def<strong>in</strong>iten Ziels G.<br />

2. θ ist e<strong>in</strong> allgeme<strong>in</strong>ster Unifikator von A m und A, dem Kopf von C.<br />

3. G ′ ist das neue Ziel: θ(A 1 , . . . , A m−1 , B 1 , . . . , B q , A m+1 , . . . , A k ).<br />

Man sieht: G ′ ist e<strong>in</strong>e Resolvente von G und C. Die Ableitungsrelation sei bezeichnet<br />

durch G → θ,C,m G ′ , wobei man <strong>die</strong> genaue Kennzeichnung C, m auch weglassen kann,<br />

wenn <strong>die</strong>se aus dem Kontext hervorgeht.<br />

Die Semantik e<strong>in</strong>es Hornklauselprogramms besteht dann aus e<strong>in</strong>er Folge <strong>die</strong>ser Schritte,<br />

<strong>die</strong> auch als SLD-Ableitung bezeichnet wird.<br />

Def<strong>in</strong>ition 5.2.2. Sei P e<strong>in</strong> def<strong>in</strong>ites Programm und G e<strong>in</strong> def<strong>in</strong>ites Ziel. E<strong>in</strong>e SLD-Ableitung<br />

von P ∪ {G} ist e<strong>in</strong>e Folge<br />

G → θ1 ,C 1 ,m 1<br />

G 1 → θ2 ,C 2 ,m 2<br />

G 2 . . .<br />

von SLD-Schritten, wobei C i jeweils e<strong>in</strong>e Variante e<strong>in</strong>er Klausel aus P ist mit neuen Variablen.<br />

Die SLD-Ableitung ist e<strong>in</strong>e SLD-Wi<strong>der</strong>legung, wenn sie mit e<strong>in</strong>er leeren Klausel endet.<br />

Im S<strong>in</strong>ne <strong>der</strong> l<strong>in</strong>earen Resolution nennt man <strong>die</strong> Klauseln C i <strong>die</strong> E<strong>in</strong>gabeklauseln.<br />

Weitere Sprechweisen:<br />

erfolgreiche SLD-Ableitung: Wenn es e<strong>in</strong>e SLD-Wi<strong>der</strong>legung ist.<br />

fehlgeschlagene SLD-Ableitung: Wenn <strong>die</strong>se nicht fortsetzbar ist.<br />

unendliche SLD-Ableitung<br />

Def<strong>in</strong>ition 5.2.3. Sei P e<strong>in</strong> def<strong>in</strong>ites Programm und G e<strong>in</strong> def<strong>in</strong>ites Ziel.<br />

• E<strong>in</strong>e korrekte Antwort ist e<strong>in</strong>e Substitution θ, so dass P |= θ(¬G) gilt.<br />

• E<strong>in</strong>e berechnete Antwort θ für P ∪ {G} ist e<strong>in</strong>e Substitution, <strong>die</strong> man durch e<strong>in</strong>e erfolgreiche<br />

SLD-Ableitung G → θ1 ,C 1 ,m 1<br />

G 1 → θ2 ,C 2 ,m 2<br />

G 2 . . . → θn,C n,m n<br />

□ erhält: θ ist <strong>die</strong><br />

Komposition θ n ◦ . . . ◦ θ 1 , wobei man <strong>die</strong>se auf <strong>die</strong> Variablen von G e<strong>in</strong>schränkt.<br />

Theorem 5.2.4 (Soundness <strong>der</strong> SLD-Resolution). Sei P e<strong>in</strong> def<strong>in</strong>ites Programm und G e<strong>in</strong><br />

def<strong>in</strong>ites Ziel. Dann ist jede berechnete Antwort θ auch korrekt. D.h. P |= θ(¬G)<br />

Stand: 7. Januar 2013 158 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.2 Semantik von Hornklauselprogrammen<br />

5.2.1 Vollständigkeit <strong>der</strong> SLD-Resolution<br />

Wir werden verschiedene Vollständigkeitsaussagen für <strong>die</strong> SLD-Resolution formulieren.<br />

Theorem 5.2.5. (Wi<strong>der</strong>legungsvollständigkeit)<br />

Sei P e<strong>in</strong> def<strong>in</strong>ites Programm und G e<strong>in</strong> def<strong>in</strong>ites Ziel. Wenn P ∪ {G} unerfüllbar ist, dann gibt<br />

es e<strong>in</strong>e SLD-Wi<strong>der</strong>legung von P ∪ {G}.<br />

Es gilt <strong>der</strong> folgende stärkere Satz über <strong>die</strong> Vollständigkeit <strong>der</strong> berechneten Antworten,<br />

nämlich, dass es zu je<strong>der</strong> Antwortsubstitution e<strong>in</strong>e berechnete Antwort gibt, <strong>die</strong> allgeme<strong>in</strong>er<br />

ist.<br />

Theorem 5.2.6 (Vollständigkeit <strong>der</strong> SLD-Resolution). Sei P e<strong>in</strong> def<strong>in</strong>ites Programm und G<br />

e<strong>in</strong> def<strong>in</strong>ites Ziel. Zu je<strong>der</strong> korrekten Antwort θ gibt es e<strong>in</strong>e berechnete Antwort σ für P ∪ {G}<br />

und e<strong>in</strong>e Substitution γ, so dass für alle Variablen x ∈ F V (G): γσ(x) = θ(x).<br />

5.2.2 Strategien zur Berechnung von Antworten<br />

Def<strong>in</strong>ition 5.2.7. Der folgende Algorithmus berechnet alle Antworten mit e<strong>in</strong>er Breitensuche:<br />

1. Gegeben e<strong>in</strong> Ziel ⇐ A 1 , . . . , A n :<br />

a) Probiere alle Möglichkeiten aus, e<strong>in</strong> Unterziel A aus A 1 , . . . , A n auszuwählen<br />

b) Probiere alle Möglichkeiten aus, e<strong>in</strong>e Resolution von A mit e<strong>in</strong>em Kopf e<strong>in</strong>er Programmklausel<br />

durchzuführen.<br />

2. Erzeuge neues Ziel B: Löschen von A, Instanziieren des restlichen Ziels, H<strong>in</strong>zufügen des<br />

Rumpfs <strong>der</strong> Klausel.<br />

3. Wenn B = □, dann gebe <strong>die</strong> Antwort aus.<br />

Sonst: mache weiter mit 1 mit dem Ziel B.<br />

Dieser Algorithmus hat zwei Verzweigungspunkte pro Resolutionsschritt:<br />

• Die Auswahl e<strong>in</strong>es Atoms<br />

• Die Auswahl e<strong>in</strong>er Klausel<br />

Es stellt sich heraus, dass bei <strong>der</strong> Auswahl des Atoms <strong>die</strong> restlichen Alternativen nicht<br />

betrachtet werden müssen.<br />

Satz 5.2.8. Vertauscht man <strong>in</strong> e<strong>in</strong>er SLD-Wi<strong>der</strong>legung <strong>die</strong> Abarbeitung zweier Atome <strong>in</strong> e<strong>in</strong>em<br />

Ziel, so s<strong>in</strong>d <strong>die</strong> zugehörigen Substitutionen bis auf Variablenumbenennung gleich und <strong>die</strong> Wi<strong>der</strong>legung<br />

hat <strong>die</strong> gleiche Länge.<br />

Weiterh<strong>in</strong> gilt: Die Suchstrategie, <strong>die</strong> irgende<strong>in</strong> Atom auswählt, dann alle Klauseln durchprobiert,<br />

usw. ist vollständig bzgl. <strong>der</strong> Antworten.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 159 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

Beachte: Dies betrifft nicht <strong>die</strong> Reihenfolge, <strong>in</strong> <strong>der</strong> Seitenklauseln ausgewählt werden, <strong>die</strong>se<br />

ist nach wie vor nichtdeterm<strong>in</strong>istisch.<br />

Aber man kann daher leicht zu lösende Atome zuerst auswählen und schwerer zu lösende<br />

zurückstellen.<br />

Es kann aber se<strong>in</strong>, dass bei günstiger Auswahl nur endlich viele Alternativen ausprobiert<br />

werden müssen, aber bei ungünstiger Auswahl evtl. e<strong>in</strong>e unendliche Ableitung ohne<br />

Lösungen mitbetrachtet werden muss.<br />

Wir werden <strong>die</strong>s zeigen, <strong>in</strong>dem wir zunächst SLD-Bäume def<strong>in</strong>ieren, <strong>die</strong>se repräsentieren<br />

den ganzen Suchraum für e<strong>in</strong> Ziel, gegeben e<strong>in</strong> def<strong>in</strong>ites Programm und e<strong>in</strong>e Selektionsfunktion.<br />

Def<strong>in</strong>ition 5.2.9. Gegeben sei e<strong>in</strong> def<strong>in</strong>ites Programm P und e<strong>in</strong> def<strong>in</strong>ites Ziel G: E<strong>in</strong> SLD-Baum<br />

für P ∪ {G} ist e<strong>in</strong> Baum <strong>der</strong> folgendes erfüllt:<br />

1. Je<strong>der</strong> Knoten ist markiert mit e<strong>in</strong>em def<strong>in</strong>iten Ziel.<br />

2. Die Wurzel ist markiert mit G.<br />

3. In jedem Knoten mit nichtleerem Ziel wird e<strong>in</strong> Atom A des Ziels mit <strong>der</strong> Selektionsfunktion<br />

ausgewählt. Die K<strong>in</strong><strong>der</strong> <strong>die</strong>ses Knotens s<strong>in</strong>d dann <strong>die</strong> möglichen Ziele nach genau e<strong>in</strong>em<br />

SLD-Resolutionsschritt mit e<strong>in</strong>er def<strong>in</strong>iten Klausel <strong>in</strong> P .<br />

4. Knoten, <strong>die</strong> mit <strong>der</strong> leeren Klausel markiert s<strong>in</strong>d, s<strong>in</strong>d Blätter.<br />

5. E<strong>in</strong> Blatt ist entwe<strong>der</strong> mit dem leeren Ziel markiert, o<strong>der</strong> es gibt von dem Blatt aus ke<strong>in</strong>e<br />

SLD-Resolution.<br />

Die Äste (Kanten) entsprechen dabei SLD-Ableitungen. Erfolgreiche Wi<strong>der</strong>legungen<br />

s<strong>in</strong>d Erfolgspfade, unendliche SLD-Ableitungen entsprechen unendlichen Pfaden. Fehlschläge<br />

entsprechen Pfaden zu Blättern, <strong>die</strong> mit e<strong>in</strong>em nichtleeren Ziel markiert s<strong>in</strong>d.<br />

Beispiel 5.2.10. Programm:<br />

(c1) p(X,Z) :- q(X,Y), p(Y,Z).<br />

(c2)<br />

p(X,X).<br />

(c3)<br />

q(a,b).<br />

Anfrage: ?- p(X,b) (Zur Er<strong>in</strong>nerung: Das entspricht <strong>der</strong> Klausel {¬p(X, b)})<br />

Wir schreiben zusätzlich <strong>die</strong> entsprechende Seitenklausel an <strong>die</strong> Kanten. Die Selektionsfunktion<br />

nehme stets Atome mit q vor den Atomen mit p. Wir unterstreichen das selektierte Atom zur<br />

Verdeutlichung. Dann ergibt sich <strong>der</strong> SLD-Baum:<br />

Stand: 7. Januar 2013 160 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

?- p(X,b)<br />

?- q(X1,Y1), p(Y1,b).<br />

(c1)<br />

(c2)<br />

□<br />

(c2)<br />

?- p(b,b).<br />

(c1)<br />

?- q(b,Y2),p(Y2,b).<br />

(c2)<br />

□<br />

Nimmt man <strong>die</strong> Selektionsfunktion: Erst Atome mit p dann Atome mit q, dann kann <strong>der</strong> Baum<br />

unendlich werden:<br />

?- p(X,b)<br />

?- q(X1,Y1), p(Y1,b).<br />

(c1)<br />

(c2)<br />

□<br />

(c1)<br />

?- q(Y1,Y2), q(X1,Y1), p(Y2,b).<br />

(c2)<br />

?- q(X1,b).<br />

∞<br />

(c2)<br />

?- q(Y1,b), q(X1,Y1)<br />

(c2)<br />

?- q(b,b)<br />

□<br />

(c3)<br />

An <strong>die</strong>sen SLD-Bäumen kann man (im Pr<strong>in</strong>zip) den ganzen Suchraum ablesen.<br />

Breitensuche <strong>in</strong> <strong>die</strong>sen Bäumen f<strong>in</strong>det jedoch alle Lösungen (jede Lösung nach endlich<br />

vielen Schritten). Beachte, dass <strong>die</strong>s nicht für <strong>die</strong> Tiefensuche gilt, da sie <strong>in</strong> den unendlichen<br />

Pfad laufen kann.<br />

5.3 Implementierung logischer Programmiersprachen: Prolog<br />

In Implementierungen – <strong>in</strong>sbeson<strong>der</strong>e <strong>in</strong> Prolog – wird i.A. <strong>die</strong> Suche durch verschiedene<br />

Vere<strong>in</strong>fachungen und Festlegungen determ<strong>in</strong>istisch gemacht:<br />

• Die Anfrage wird als Stack von Literalen implementiert. Es wird immer das erste Unterziel<br />

zuerst bearbeitet.<br />

• Die Programmklauseln werden <strong>in</strong> <strong>der</strong> Reihenfolge abgesucht, <strong>in</strong> <strong>der</strong> sie im Programm<br />

stehen.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 161 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

• Bei Ausführung e<strong>in</strong>es SLD-Resolutionsschritts wird <strong>der</strong> Rumpf an <strong>die</strong> Stelle des Unterziels<br />

gesetzt, und zwar <strong>in</strong> <strong>der</strong> Reihenfolge <strong>der</strong> Literale <strong>in</strong> <strong>der</strong> Programmklausel.<br />

D.h. Prolog benutzt <strong>die</strong> Tiefensuche, wobei <strong>die</strong> Rechts-L<strong>in</strong>ks-Ordnung durch <strong>die</strong> Reihenfolge<br />

<strong>der</strong> Klauseln im Programm und <strong>die</strong> Reihenfolge <strong>der</strong> Literale <strong>in</strong> den Rümpfen def<strong>in</strong>iert<br />

wird.<br />

Beachte, dass <strong>der</strong> Stack von Literalen <strong>die</strong> Selektionsfunktion festlegt, und daher nicht <strong>die</strong><br />

Vollständigkeit des Verfahrens än<strong>der</strong>t. Die Reihenfolge <strong>der</strong> Programmklauseln zu verwenden<br />

entspricht jedoch gerade <strong>der</strong> Tiefensuche, <strong>die</strong> – wie wir bereits gesehen haben – unvollständig<br />

ist. Der Grund hierfür ist praktischer Natur: Zum e<strong>in</strong>en kann <strong>die</strong> Tiefensuche <strong>in</strong><br />

vielen Fällen schneller se<strong>in</strong>, als <strong>die</strong> Breitensuche, und zum an<strong>der</strong>en verbraucht sie bekanntlich<br />

viel weniger Platz.<br />

Aus Sicht <strong>der</strong> Prologgeme<strong>in</strong>de ist daher <strong>der</strong> Programmierer dafür verantwortlich <strong>die</strong><br />

Programmklauseln entsprechend <strong>in</strong> e<strong>in</strong>er Reihenfolge anzuordnen, so dass <strong>die</strong> Nichtterm<strong>in</strong>ierung<br />

nicht e<strong>in</strong>tritt. Im Grunde wi<strong>der</strong>spricht <strong>die</strong>s dem großen Ziel <strong>der</strong> deklarativen<br />

Programmierung, welches for<strong>der</strong>t, dass im Programm nur zu spezifizieren ist, was berechnet<br />

werden soll, aber nicht genau wie. Um Nichtterm<strong>in</strong>ierung zu vermeiden, muss <strong>der</strong><br />

Prolog-Programmierer jedoch <strong>die</strong> H<strong>in</strong>tergründe kennen und durch Anordnung <strong>der</strong> Programmklauseln<br />

auch zum Teil das Wie spezifizieren.<br />

5.3.1 Syntaxkonventionen von Prolog<br />

Namen können aus Großbuchstaben, Kle<strong>in</strong>buchstaben, Ziffern und _ (Unterstrich) gebildet<br />

werden, o<strong>der</strong> nur aus Son<strong>der</strong>zeichen.<br />

Konstanten s<strong>in</strong>d Namen, <strong>die</strong> mit Kle<strong>in</strong>buchstaben beg<strong>in</strong>nen;<br />

Variablen s<strong>in</strong>d Namen, <strong>die</strong> mit Großbuchstaben o<strong>der</strong> mit e<strong>in</strong>em Unterstrich _ beg<strong>in</strong>nen.<br />

Der Unterstrich alle<strong>in</strong>e _ ist <strong>der</strong> Name e<strong>in</strong>er anonymen Variablen (wildcard, joker, Leerstelle).<br />

Zusammengesetzte Terme (komplexe Terme) haben <strong>die</strong> Form<br />

F unctor(component 1 , . . . , component n )<br />

Die Stelligkeit des Funktors ist nicht variabel. Verwendet man den gleichen Namen mit<br />

verschiedener Stelligkeit, so werden <strong>die</strong>se Vorkommen als verschiedene Objekte <strong>in</strong>terpretiert.<br />

Funktoren, <strong>die</strong> auf oberster Ebene stehen, nennt man auch Prädikate. Z.B.<br />

besitzt(peter, buch(lloyd, prolog)).<br />

5.3.2 Beispiele zu Prologs Tiefensuche<br />

Wir betrachten zunächst e<strong>in</strong> e<strong>in</strong>faches Beispiel, dass auf dem schon e<strong>in</strong>geführten Programm<br />

basiert.<br />

Stand: 7. Januar 2013 162 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

Beispiel 5.3.1. Nehmen wir an, wir wollen das Prädikat vorfahr(X, Y ) implementieren, das wahr<br />

ist, wenn X e<strong>in</strong> Vorfahre von Y ist (über beliebig viele Generationen h<strong>in</strong>weg). Mit dem bestehenden<br />

Prädikat eltern kann man <strong>die</strong>s <strong>in</strong> Prolog implementieren als:<br />

vorfahr1(X,Z) :- vorfahr1(X,Y),vorfahr1(Y,Z).<br />

vorfahr1(X,Y) :- eltern(X,Y).<br />

Je<strong>der</strong> Aufruf von vorfahr1 (z.B. mit konkreten Werten vorfahr1(karl,maria))<br />

führt direkt zur nicht Term<strong>in</strong>ierung, da mit <strong>der</strong> ersten Klausel<br />

vorfahr1(X,Z) :- vorfahr1(X,Y),vorfahr1(Y,Z). resolviert wird, und im Anschluss<br />

wie<strong>der</strong> usw.<br />

Dreht man <strong>die</strong> Klauseln um, so erhält man:<br />

vorfahr2(X,Y) :- eltern(X,Y).<br />

vorfahr2(X,Z) :- vorfahr2(X,Y),vorfahr2(Y,Z).<br />

Dann erhält man Antworten, aber <strong>die</strong> Suche nach weiteren Antworten führt <strong>in</strong> den nichtterm<strong>in</strong>ierenden<br />

Zweig (nachdem alle Instanziierungen für eltern(X,Y) probiert wurden, wird <strong>die</strong> zweite<br />

Klausel verwendet, <strong>die</strong> dann zur Nichtterm<strong>in</strong>ierung führt).<br />

E<strong>in</strong>e bessere Variante ist:<br />

vorfahr(X,Y) :- eltern(X,Y).<br />

vorfahr(X,Z) :- eltern(X,Y),vorfahr(Y,Z).<br />

Diese term<strong>in</strong>iert stets, da sie stets <strong>die</strong> Relation eltern(X,Y) <strong>in</strong>stanzieren muss: Da es nur endlich<br />

viele solcher Instanziierungen gibt, term<strong>in</strong>iert <strong>die</strong> Suche.<br />

E<strong>in</strong> weiteres Beispiel zeigt, dass man <strong>die</strong> Klauseln nicht immer so anordnen kann, dass<br />

<strong>die</strong> Suche term<strong>in</strong>iert:<br />

Beispiel 5.3.2. Sei p e<strong>in</strong> zweistelliges Prädikat, das symmetrisch und transitiv ist. Wir geben<br />

e<strong>in</strong>ige Fakten an und <strong>die</strong> beiden Eigenschaften:<br />

p(a,b).<br />

p(c,b).<br />

p(X,Y) :- p(Y,X).<br />

p(X,Z) :- p(X,Y),p(Y,Z).<br />

Für <strong>die</strong> Anfrage p(a,c) (<strong>die</strong> offensichtlich true geben sollte) f<strong>in</strong>det Prolog ke<strong>in</strong>e Anwort (son<strong>der</strong>n<br />

term<strong>in</strong>iert nicht), unabhängig davon, wie man <strong>die</strong> 4 Klauseln anordnet, es gibt aber e<strong>in</strong>e erfolgreiche<br />

SLD-Ableitung, <strong>die</strong>se muss jedoch e<strong>in</strong>mal <strong>die</strong> Symmetrie-Klausel und e<strong>in</strong>mal <strong>die</strong> Transitivität-<br />

Klausel anwenden. Die Prolog-Ausführung wendet aber je nach Reihenfolge immer <strong>die</strong> gleiche<br />

Klausel an.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 163 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

E<strong>in</strong>e mögliche Abhilfe ist das E<strong>in</strong>führen e<strong>in</strong>es zusätzlichen Parameters, <strong>der</strong> als Tiefenschranke<br />

verwendet wird (beachte den Abschnitt 5.3.3 zu Zahlen und arithmetischen Operationen).<br />

p(I,a,b).<br />

p(I,c,b).<br />

p(I,X,Y) :- I > 0, J is I-1, p(J,Y,X).<br />

p(I,X,Z) :- I > 0, J is I-1, p(J,X,Y) , p(J,Y,Z).<br />

Ruft man p(2,a,c) auf so erhält man true. I stellt hier gerade <strong>die</strong> Tiefenschranke dar.<br />

E<strong>in</strong>e weitere Verän<strong>der</strong>ung gegenüber <strong>der</strong> Logik ist, dass <strong>in</strong> Prologimplementierungen<br />

<strong>der</strong> Occurs Check während <strong>der</strong> Unifikation aus Effizienzgründen nicht durchgeführt<br />

wird. Da es <strong>in</strong> <strong>die</strong>sem Fall quasi e<strong>in</strong>e Lösung als unendlichen Term gibt (<strong>der</strong> natürlich<br />

ke<strong>in</strong> P L 1 -Term ist), wird e<strong>in</strong>fach weitergerechnet. Das ist aus Sicht <strong>der</strong> Prädikatenlogik<br />

falsch. Aus Prolog-Sicht muss sich <strong>der</strong> Programmierer darüber bewusst se<strong>in</strong>.<br />

Gibt man z.B.<br />

k(X,X)=k(Y,h(Y)).<br />

im Prolog-Interpreter e<strong>in</strong> (beachte = steht für Gleichheit bzgl. <strong>der</strong> Terme), so erhält man<br />

e<strong>in</strong>e Lösung:<br />

X = Y, Y = h(Y).<br />

Die Unifikation mit Occurs Check verbietet <strong>die</strong>se Lösung, da Y = h(Y ) bedeutet, dass Y<br />

e<strong>in</strong> unendlicher Term ist.<br />

Weitere Verän<strong>der</strong>ungen <strong>in</strong> Prolog gegenüber <strong>der</strong> theoretischen Fun<strong>die</strong>rung s<strong>in</strong>d:<br />

• Es gibt extra Operatoren zum Bee<strong>in</strong>flussen des Backtrack<strong>in</strong>g (Cut), <strong>der</strong> u.a. bewirken<br />

kann, dass für e<strong>in</strong> Unterziel statt vielen Lösungen maximal e<strong>in</strong>e berechnet wird.<br />

Dies werden wir unten noch genauer behandeln.<br />

• Assert/Retract: Damit können Programmklauseln zum Programm h<strong>in</strong>zugefügt<br />

bzw. gelöscht werden. I.a, betrifft <strong>die</strong>s nur Fakten.<br />

• Negation: Negation wird def<strong>in</strong>iert als Fehlschlagen <strong>der</strong> Suche.<br />

• Es wird z.T. Typ<strong>in</strong>formation zu Programmen h<strong>in</strong>zugefügt.<br />

• Argumente von Prädikaten kann man mit dem Zusatz I bzw. O versehen. Diese Angaben<br />

bedeuten, dass das jeweilige Argument nur als E<strong>in</strong>gabe bzw. nur als Ausgabe<br />

verwendet wird.<br />

• Zusätzlich kann man e<strong>in</strong> Prädikat als Funktion def<strong>in</strong>ieren, wenn <strong>die</strong> ersten Argumente<br />

<strong>die</strong> E<strong>in</strong>gabe s<strong>in</strong>d, das letzte Argument <strong>die</strong> Ausgabe, wobei <strong>die</strong> Funktion noch<br />

zusätzlich als determ<strong>in</strong>istisch (d.h. als mathematische Funktion) deklariert werden<br />

muss.<br />

Stand: 7. Januar 2013 164 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

Bevor wir e<strong>in</strong>ige <strong>die</strong>ser E<strong>in</strong>schränkungen und Erweiterungen betrachten, führen wir<br />

zunächst e<strong>in</strong>e wichtige Konstrukte und Pr<strong>in</strong>zipien zur Prolog-Programmierung e<strong>in</strong>.<br />

5.3.3 Arithmetische Operationen<br />

Die Zeichen +, −, ∗, / s<strong>in</strong>d erlaubt.<br />

Ausdrücke <strong>der</strong> Form a ∗ b + c s<strong>in</strong>d zunächst lesbare Abkürzungen für den Term<br />

+(∗(a, b), c). Hier kann zur Darstellung abhängig von <strong>der</strong> Prolog-Implementierung Infix,<br />

Postfix, Präfix, Assoziativität, Priorität benutzt werden.<br />

Zahlen s<strong>in</strong>d erlaubt und als Standard <strong>in</strong> Prolog implementiert. Der Zahlbereich ist abhängig<br />

von <strong>der</strong> Implementierung.<br />

Das Spezialprädikat = (Gleichheit) kann def<strong>in</strong>iert werden durch<br />

X = X.<br />

Z.B.<br />

?- besitzt(peter, X) = besitzt(peter,buch(lloyd,prolog))<br />

yes; X = buch(lloyd,prolog)<br />

Diese Operation <strong>der</strong> Berechnung <strong>der</strong> Instanzen von Variablen wird mittels Unifikation<br />

durchgeführt.<br />

Beachte, dass <strong>die</strong>se Gleichheit jedoch nicht wahr wird für 1+1 = 2, da 1+1 als syntaktischer<br />

Term aufgefasst wird, <strong>der</strong> an<strong>der</strong>s aussieht, als <strong>der</strong> Term (<strong>die</strong> Konstante) 2.<br />

Prolog stellt neben <strong>die</strong>sem Gleichheitstest auch weitere Gleichheitstests und arithmetische<br />

Vergleiche zur Verfügung, <strong>die</strong> jedoch an<strong>der</strong>s wirken:<br />

= Syntaktische Gleichheit (Unfikation erlaubt)<br />

=:= Wertgleichheit, <strong>die</strong> Argumente werden zu Zahlen ausgewertet und dürfen<br />

ke<strong>in</strong>e Variablen enthalten<br />

=/= Wertungleichheit<br />

< kle<strong>in</strong>er als Wertgleichheit<br />

> größer als Wertgleichheit<br />

=< kle<strong>in</strong>er gleich als Wertgleichheit<br />

>= größer gleich als Wertgleichheit<br />

Außer bei <strong>der</strong> syntaktischen Gleichheit mit Unifikation =, muss für alle an<strong>der</strong>en Operationen<br />

gelten: Wenn exp1 op exp2 ausgewertet wird, müssen exp1 und exp2 zu e<strong>in</strong>er<br />

Zahl auswertbar se<strong>in</strong>. Beachte:<br />

3 + 4 = 7 ergibt: no<br />

3 + 4 =:= 7 ergibt yes<br />

Wir testen weitere Beispiele im Prolog-Interpreter:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 165 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

?- 3+4 = X.<br />

X = 3+4.<br />

?- 3+4 =:= 7.<br />

true.<br />

?- 3+4 =:= X.<br />

ERROR: =:=/2: Arguments are not sufficiently <strong>in</strong>stantiated<br />

?- X < 6.<br />

ERROR:


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

Beachte, dass alle Prädikate, <strong>die</strong> Werte auswerten, nicht mehr direkt zur P L 1 -Semantik<br />

passen.<br />

5.3.4 Listen und Listenprogrammierung<br />

Listen können <strong>in</strong> logischen Programmiersprachen direkt dargestellt werden, da sie direkt<br />

als Terme mit zwei verschiedenen Funktionsymbolen konstruiert werden können:<br />

• E<strong>in</strong>er Konstante [] (gesprochen „Nil“) für <strong>die</strong> leere Liste<br />

• E<strong>in</strong>em zweistelligen Funktionssymbol, dass das Listenelement und <strong>die</strong> Restliste enthält.<br />

Dieses wird üblicherweise als „Cons“ bezeichnet. In Prolog ist <strong>die</strong>ses Funktionssymbol<br />

als Punkt . dargestellt.<br />

Man kann daher <strong>die</strong> Liste [1,2,3] mit <strong>die</strong>ser Syntax als .(1,.(2,.(3,[]))) darstellen.<br />

Prolog erlaubt aber auch <strong>die</strong> Schreibweise [1,2,3] als syntaktischen Zucker (<strong>die</strong> <strong>in</strong>tern <strong>in</strong><br />

den Term .(1,.(2,.(3,[]))) überführt wird). Das kann man auch im Interpreter testen:<br />

?- [1,2,3] = .(1,.(2,.(3,[]))).<br />

true.<br />

?- [1,2,3] = .(1,.(2,.(3,.(4,[])))).<br />

false.<br />

?- [1,2,3,4] = .(1,.(2,.(3,.(4,[])))).<br />

true.<br />

Als Listenelemente können beliebig Elemente (nicht nur Zahlen) verwendet werden, <strong>die</strong><br />

auch verschieden se<strong>in</strong> dürfen, d.h. <strong>die</strong> Listen <strong>in</strong> Prolog s<strong>in</strong>d (im Unterschied zu Haskell)<br />

heterogen. E<strong>in</strong>ige Beispiele für Listen (gleich mit <strong>der</strong> <strong>in</strong>ternen Darstellung) s<strong>in</strong>d:<br />

?- [[1], [2,3], [4,5]] = .(.(1,[]), .(.(2,.(3,[])),.(.(4,.(5,[])),[]))).<br />

true.<br />

?- [1,[1],[[1]],[[[1]]]] = .(1,.(.(1,[]),.(.(.(1,[]),[]),.( .(.(.(1,[]),[]),[]),[])))).<br />

true.<br />

?- [f(g(a)),h(b,x),f(f(f(f(c))))] = .(X,.(Y,.(Z,[]))).<br />

X = f(g(a)),<br />

Y = h(b, x),<br />

Z = f(f(f(f(c)))).<br />

Prädikate, <strong>die</strong> <strong>der</strong> Berechnung des Kopfelementes (head) und <strong>der</strong> Restliste ohne Kopfelement<br />

(tail) entsprechen, kann man damit schon def<strong>in</strong>ieren als:<br />

head(.(X,_),X).<br />

tail(.(_,XS),XS).<br />

Wir testet das gleich:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 167 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

?- head([1,2,3,4],X).<br />

X = 1.<br />

?- tail([1,2,3,4],X).<br />

X = [2, 3, 4].<br />

Prolog bietet jedoch e<strong>in</strong>e komfortablere Schreibweise, um Pattern für Listen zu def<strong>in</strong>ieren<br />

(und damit Listen zusammenzusetzen und zu zerlegen). .(x,xs) kann als [X|XS]<br />

geschrieben werden. Genauer, kann man | zum Zerlegen e<strong>in</strong>er Liste an e<strong>in</strong>er beliebigen<br />

Position <strong>der</strong> Liste verwenden, d.h. auch [X,Y,Z|YS] ist erlaubt. Wir def<strong>in</strong>ieren zunächst<br />

head und tail erneut mit <strong>die</strong>ser Syntax:<br />

head([X|_],X).<br />

tail([_|XS],XS).<br />

E<strong>in</strong>ige Aufrufe:<br />

?- head([1,2,3],X).<br />

X = 1.<br />

?- tail([1,2,3],X).<br />

X = [2, 3].<br />

?- [X,Y,Z|ZS] = [1,2,3,4,5].<br />

X = 1,<br />

Y = 2,<br />

Z = 3,<br />

ZS = [4, 5].<br />

Man kann <strong>in</strong> Prolog auch für beide Argumente e<strong>in</strong>e Variable e<strong>in</strong>geben, man erhält dann<br />

für den nicht<strong>in</strong>stanziierten Teil (zum<strong>in</strong>dest <strong>in</strong> SWI-Prolog) e<strong>in</strong>e <strong>in</strong>terne Variable:<br />

?- head(X,Y).<br />

X = [Y|_G304].<br />

?- tail(X,Y).<br />

X = [_G303|Y].<br />

Ausgestattet mit <strong>die</strong>sem Handwerkzeugs, können wir nun verschiedene Listenoperationen<br />

<strong>in</strong> Prolog def<strong>in</strong>ieren. Wir beg<strong>in</strong>nen mit dem Prädikat member, welches e<strong>in</strong> Element<br />

und e<strong>in</strong>e Liste erwartet, und genau dann wahr se<strong>in</strong> soll, wenn das Element <strong>in</strong> <strong>der</strong> Liste<br />

vorkommt. Die Idee dabei ist: Man arbeitet <strong>die</strong> Liste rekursiv ab:<br />

member(X,[X|_]).<br />

member(X,[_|Y]) :-<br />

member(X,Y).<br />

Stand: 7. Januar 2013 168 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

E<strong>in</strong>ige Beispielaufrufe:<br />

?- member(2,[1,2,3]).<br />

true ;<br />

false.<br />

?- member(2,[1,2,3,2]).<br />

true ;<br />

true ;<br />

false.<br />

?- member(X,[1,2,3]).<br />

X = 1 ;<br />

X = 2 ;<br />

X = 3 ;<br />

false.<br />

?- member(X,Y).<br />

Y = [X|_G304] ;<br />

Y = [_G303, X|_G307] ;<br />

Y = [_G303, _G306, X|_G310] ;<br />

Y = [_G303, _G306, _G309, X|_G313] ;<br />

Y = [_G303, _G306, _G309, _G312, X|_G316] ;<br />

Y = [_G303, _G306, _G309, _G312, _G315, X|_G319] ;<br />

Y = [_G303, _G306, _G309, _G312, _G315, _G318, X|_G322] ;<br />

Y = [_G303, _G306, _G309, _G312, _G315, _G318, _G321, X|_G325] ;<br />

Y = [_G303, _G306, _G309, _G312, _G315, _G318, _G321, _G324, X|...] ;<br />

Y = [_G303, _G306, _G309, _G312, _G315, _G318, _G321, _G324, _G327|...]<br />

Man kann sich fragen, ob member <strong>in</strong> allen möglichen Situationen term<strong>in</strong>iert.<br />

• member(s,t): wenn t ke<strong>in</strong>e Variablen enthält. dann wird t ′ beim nächsten mal kle<strong>in</strong>er.<br />

• member(Y,Y): Die erste Klausel unifiziert nicht, wenn <strong>der</strong> occurs-check e<strong>in</strong>geschaltet<br />

ist, (aber unifiziert, wenn occurs-check aus ist). Die zweite Klausel ergibt:<br />

member(X_1,[_|Y_1]) :-<br />

X_1 = Y = [_|Y_1]<br />

member(X_1,Y_1).<br />

Die neue Anfrage ist:<br />

member([_|Y_1] ,Y_1)<br />

Die nächste Unifikation ebenfalls mit zweiter Klausel<br />

member(X_2,[_|Y_2]) :- member(X_2,Y_2)<br />

X_2 = [_|Y_1] , Y_1 = [_|Y_2]<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 169 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

usw. Man sieht: das term<strong>in</strong>iert nicht.<br />

Das kann man <strong>in</strong> Prolog auch testen (da e<strong>in</strong>e Tiefensuche verwendet wird). Wir verwenden<br />

zwei Varianten: member wie oben angegeben und member2, für <strong>die</strong> <strong>die</strong> beiden<br />

Programmklauseln vertauscht s<strong>in</strong>d:<br />

?- member2(X,[1,2,3]).<br />

X = 3 ;<br />

X = 2 ;<br />

X = 1.<br />

?- member(X,[1,2,3]).<br />

X = 1 ;<br />

X = 2 ;<br />

X = 3.<br />

?- member(Y,Y).<br />

Y = [**|_G460]<br />

?- member2(Y,Y).<br />

^C... term<strong>in</strong>iert nicht<br />

E<strong>in</strong> weiteres Prädikat ist islist, das versucht <strong>die</strong> Liste komplett auszuwerten. E<strong>in</strong> Möglichkeit<br />

wäre <strong>die</strong> Def<strong>in</strong>ition:<br />

islist([_|X]) :- islist(X).<br />

islist([]).<br />

Diese Def<strong>in</strong>ition term<strong>in</strong>iert es für Listen ohne Variablen, aber nicht für islist(X).<br />

Stellt man <strong>die</strong> Klauseln um, erhält man:<br />

islist([]).<br />

islist([_|X]) :- islist(X).<br />

Dieses Programm term<strong>in</strong>iert für <strong>die</strong> Anfrage islist(X).<br />

Als nächsten Beispiel programmieren wir <strong>die</strong> Berechnung <strong>der</strong> Länge e<strong>in</strong>er Liste, d.h.<br />

<strong>die</strong> Anzahl <strong>der</strong> Elemente <strong>die</strong> <strong>die</strong>se enthält. Beachte: Wir verwenden is, um <strong>die</strong> rekursive<br />

erhaltene Länge auszuwerten (vgl. Abschnitt zu arithmetischen Operationen).<br />

laenge([],0).<br />

laenge([_|X],N) :- laenge(X,N_1), N is N_1 + 1.<br />

Damit kann man folgende Beispiele rechnen:<br />

Stand: 7. Januar 2013 170 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

?- laenge([1,2,3],N).<br />

N = 3.<br />

?- laenge(XS,2).<br />

XS = [_G880, _G883] ;<br />

^C<br />

?- laenge(XS,N).<br />

XS = [],<br />

N = 0 ;<br />

XS = [_G892],<br />

N = 1 ;<br />

XS = [_G892, _G895],<br />

N = 2 ;<br />

XS = [_G892, _G895, _G898],<br />

N = 3 ;<br />

XS = [_G892, _G895, _G898, _G901],<br />

N = 4 ;<br />

XS = [_G892, _G895, _G898, _G901, _G904],<br />

...<br />

Beachte: Die Anfrage<br />

?- laenge(XS,2).<br />

term<strong>in</strong>iert <strong>in</strong> manchen Implementierungen nicht, aber <strong>in</strong> SWI-Prolog. Allerd<strong>in</strong>gs: Wenn<br />

man nach weiteren Antworten fragt, term<strong>in</strong>iert es nicht mehr.<br />

Beispiel 5.3.3. Sortieren von Listen von Zahlen:<br />

% Praedikat, das testet ob e<strong>in</strong>e Liste sortiert ist<br />

sortiert([]).<br />

sortiert([X]).<br />

sortiert([X|[Y|Z]]) :- X =< Y, sortiert([Y|Z]).<br />

% sortiert_e<strong>in</strong>fuegen(A,BS,CS): fuegt A sortiert <strong>in</strong> BS e<strong>in</strong>, Ergebnis: CS<br />

sortiert_e<strong>in</strong>fuegen(X,[],[X]).<br />

sortiert_e<strong>in</strong>fuegen(X,[Y|Z], [X|[Y|Z]]) :- X =< Y.<br />

sortiert_e<strong>in</strong>fuegen(X,[Y|Z], [Y|U]) :- Y < X, sortiert_e<strong>in</strong>fuegen(X,Z,U).<br />

% <strong>in</strong>s_sortiere sortiert <strong>die</strong> Liste<br />

<strong>in</strong>s_sortiere(X,X) :- sortiert(X).<br />

<strong>in</strong>s_sortiere([X|Y], Z) :- <strong>in</strong>s_sortiere(Y,U), sortiert_e<strong>in</strong>fuegen(X,U,Z).<br />

E<strong>in</strong>ige Testaufrufe:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 171 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

?- sortiert([1,2,3]).<br />

true.<br />

?- sortiert([2,3,1]).<br />

false.<br />

?- sortiert([1,2,X]).<br />

ERROR: =


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

merge([],YS,YS).<br />

merge(XS,[],XS).<br />

merge([X|XS], [Y|YS], [X|ZS]) :- merge(XS,[Y|YS],ZS), X =< Y.<br />

merge([X|XS], [Y|YS], [Y|ZS]) :- merge([X|XS],YS,ZS), X > Y.<br />

Beispiele:<br />

?- merge([1,10,100],[0,5,50,500],Z).<br />

Z = [0, 1, 5, 10, 50, 100, 500].<br />

?- merge(X,Y,[1,2,3]).<br />

X = [],<br />

Y = [1, 2, 3] ;<br />

X = [1, 2, 3],<br />

Y = [] ;<br />

X = [1],<br />

Y = [2, 3] ;<br />

X = [1, 2],<br />

Y = [3] ;<br />

X = [1, 3],<br />

Y = [2] ;<br />

X = [2, 3],<br />

Y = [1] ;<br />

X = [2],<br />

Y = [1, 3] ;<br />

X = [3],<br />

Y = [1, 2] ;<br />

false.<br />

Den letzten Aufruf kann man gerade so auffassen: Berechne alle Listen, <strong>die</strong> nach dem Mischen<br />

[1,2,3] ergeben.<br />

Beispiel 5.3.6. E<strong>in</strong>ige weitere Beispiele für Listenfunktionen<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 173 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

listtoset([],[]).<br />

listtoset([X|R],[X|S]) :- remove(X,R,S1),listtoset(S1,S).<br />

remove(E,[],[]).<br />

remove(E,[E|R],S):- remove(E,R,S).<br />

remove(E,[X|R],[X|S]):- not(E == X), remove(E,R,S).<br />

union(X,Y,Z) :- append(X,Y,XY), listtoset(XY,Z).<br />

<strong>in</strong>tersect([],X,[]).<br />

<strong>in</strong>tersect([X|R],S,[X|T]) :- member(X,S),<strong>in</strong>tersect(R,S,T1),listtoset(T1,T).<br />

<strong>in</strong>tersect([X|R],S,T) :- not(member(X,S)),<strong>in</strong>tersect(R,S,T1),listtoset(T1,T).<br />

reverse([],[]).<br />

reverse([X|R],Y) :- reverse(R,RR), append(RR,[X],Y).<br />

reversea(X,Y) :- reverseah(X,[],Y).<br />

reverseah([X|Xs],Acc,Y):- reverseah(Xs,[X|Acc],Y).<br />

reverseah([],Y,Y).<br />

5.3.5 Differenzlisten<br />

Wir führen an <strong>die</strong>ser Stelle e<strong>in</strong>e weitere Darstellung von Listen e<strong>in</strong>, <strong>die</strong> sogenannten Differenzlisten.<br />

Diese werden später im Abschnitt 5.4 zum Parsen und Def<strong>in</strong>ite Clause Grammars<br />

e<strong>in</strong>e Rolle spielen und verwendet. Diese Darstellung besitzt den Vorteil, dass das<br />

append-Prädikat wesentlich effizienter implementiert werden kann.<br />

Betrachten wir zunächst <strong>die</strong> bisherige Implementierung von append erneut:<br />

append([],X,X).<br />

append([X|Y],U,[X|Z]) :- append(Y,U,Z).<br />

Der Nachteil <strong>die</strong>ser Implementierung liegt dar<strong>in</strong>, dass <strong>die</strong> Auswertung <strong>der</strong> Ergebnisliste<br />

<strong>die</strong> gesamte erste Liste abarbeiten muss, d.h. <strong>die</strong> Laufzeit ist l<strong>in</strong>ear <strong>in</strong> <strong>der</strong> Länge <strong>der</strong><br />

ersten Liste. Dies kann man sich klar machen, wenn man <strong>die</strong> Abarbeitung beispielhaft<br />

durchgeht:<br />

append([a 1 ,. . . ,a n ],[b 1 ,. . . ,b m ],L) X 1 = a 1 , Y 1 =[a 2 ,...,a n ], U 1 = [b 1 ,...,b m ], L = [a 1 |Z 1 ]<br />

append([a 2 ,. . . ,a n ],[b 1 ,. . . ,b m ],Z 1 ) X 2 = a 2 , Y 2 =[a 3 ,...,a n ], U 2 = [b 1 ,...,b m ], Z 1 = [a 2 |Z 2 ]<br />

append([a 3 ,. . . ,a n ],[b 1 ,. . . ,b m ],Z 2 ) X 3 = a 3 , Y 3 =[a 4 ,...,a n ], U 3 = [b 1 ,...,b m ], Z 2 = [a 3 |Z 3 ]<br />

......<br />

append([],[b 1 ,. . . ,b m ],Z n ) Z n = [b 1 ,...,b m ]<br />

Da Listen rekursiv dargestellt werden, gibt es zunächst ke<strong>in</strong>e bessere Möglichkeit das<br />

append-Prädikat zu implementieren. E<strong>in</strong> Ausweg stellen <strong>die</strong> sogenannten Differenzlisten<br />

dar: Anstelle <strong>der</strong> Liste selbst, wird dabei e<strong>in</strong>e Liste durch zwei Listen dargestellt. D.h. e<strong>in</strong>e<br />

Liste wird durch e<strong>in</strong> Paar (L 1 , L 2 ) dargestellt (o<strong>der</strong>, da <strong>in</strong> Prolog das M<strong>in</strong>uszeichen<br />

Stand: 7. Januar 2013 174 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

nur e<strong>in</strong>en Term konstruiert auch gleich als Differenz L 1 − L 2 ). Die eigentliche Liste ist<br />

dabei <strong>die</strong> Differenz von L 1 und L 2 , d.h. L 2 muss e<strong>in</strong> Suffix von L 1 se<strong>in</strong>. Z.B. kann <strong>die</strong> Liste<br />

[1,2,3] als Differenzliste ([1,2,3,4,5] - [4,5]) dargestellt werden. Offensichtlich<br />

ist <strong>die</strong>se Darstellung nicht e<strong>in</strong>deutig, vielmehr kann [1, 2, 3] durch jede Differenzliste <strong>der</strong><br />

Form ([1,2,3|Y] - Y) dargestellt werden. Zum Programmieren eignet sich <strong>die</strong> letzte<br />

Darstellung (mit Y als nicht <strong>in</strong>stanziierte Variable), denn <strong>die</strong>se schafft gerade den Platz,<br />

um etwas an <strong>die</strong> Liste <strong>in</strong> konstanter Zeit anzuhängen. Genauer lässt sich dann append mit<br />

konstanter Laufzeit implementieren. Wir beschreiben zunächst <strong>die</strong> Idee und geben dann<br />

<strong>die</strong> Implementierung an.<br />

Seien <strong>die</strong> Listen L und M als Differenzlisten (L 1 − L 2 ) und (M 1 − M 2 ) gegeben. Wenn<br />

M 1 gerade gleich zu L 2 ist, dann entspricht das Anhängen von M an L gerade <strong>der</strong> Differenzliste<br />

(L 1 − M 2 ). Das folgende Bild verdeutlich <strong>die</strong>s<br />

L<br />

L 1<br />

L 2<br />

M<br />

M 1<br />

M 2<br />

L 1<br />

M 2<br />

L<br />

M<br />

Man sieht, L 2 muss gleich zu M 1 se<strong>in</strong>. An<strong>der</strong>enfalls funktioniert das Ane<strong>in</strong>an<strong>der</strong>hängen<br />

nicht. Die Implementierung <strong>in</strong> Prolog ist daher gerade:<br />

appendD(L1 - L2,M1 - M2,L1 - M2) :- L2 = M1.<br />

Diese kann noch vere<strong>in</strong>facht werden, sodass e<strong>in</strong> e<strong>in</strong>zelner Fakt ausreicht:<br />

append(L1 - L2,L2 - M2,L1 - M2).<br />

Die Auswertung e<strong>in</strong>er Anfrage append(Liste1 - Liste1Rest, Liste2 - Liste2, Ergebnis)<br />

ist offensichtlich <strong>in</strong> konstanter Zeit möglich, wenn Liste1Rest e<strong>in</strong>e Variable ist: In <strong>die</strong>sem<br />

Fall muss unifiziert werden: Liste1Rest = Liste2, was <strong>in</strong> konstanter Zeit möglich ist,<br />

wenn Liste1Rest e<strong>in</strong>e Variable ist.<br />

E<strong>in</strong> Beispielaufruf zeigt <strong>die</strong>s:<br />

?- appendD([1,2,3|Y]-Y,[4,5,6|Z]-Z,R).<br />

Y = [4, 5, 6|Z],<br />

R = [1, 2, 3, 4, 5, 6|Z]-Z<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 175 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

5.3.6 Der Cut-Operator: Steuerung <strong>der</strong> Suche<br />

Prolog verfügt über den sogenannten Cut-Operator (<strong>der</strong> durch das Ausrufezeichen ! dargestellt<br />

wird). Die Wirkung des Operators lässt sich grob dadurch beschreiben, dass <strong>die</strong><br />

Suche an <strong>die</strong>sem Operator abgeschnitten wird (daher <strong>der</strong> Name).<br />

Formaler: Betrachte <strong>die</strong> Programmklausel B ⇐ A 1 , . . . , A m , !, A m+1 , . . . , A n . Die Wirkung<br />

von ! ist <strong>die</strong> folgende: Wenn <strong>die</strong> SLD-Resolutionen, <strong>die</strong> A 1 , . . . , A m wegresolviert<br />

haben erfolgreich waren, dann wird bei Fehlschlagen <strong>der</strong> weiteren Suche <strong>in</strong> A m+1 , . . . , A n<br />

ke<strong>in</strong> Backtrack<strong>in</strong>g <strong>in</strong> A 1 , . . . , A m durchgeführt. Im SLD-Baum werden daher gerade <strong>die</strong><br />

an<strong>der</strong>en Möglichkeiten, A 1 , . . . , A m wegzuresolvieren, nicht mehr betrachtet.<br />

Wir betrachten e<strong>in</strong> Beispiel, um <strong>die</strong> Wirkung und <strong>die</strong> Nützlichkeit des Cut-Operators<br />

zu erläutern.<br />

Betrachte das folgende Beispiel: E<strong>in</strong> Mitarbeiter des Wetteramts muss je nach W<strong>in</strong>dstärke<br />

X e<strong>in</strong>e <strong>der</strong> drei Mitteilungen Y = „normal“, „w<strong>in</strong>dig“ o<strong>der</strong> „stürmisch“ weitergeben.<br />

Die genauen Regeln dafür s<strong>in</strong>d:<br />

1. Wenn X < 4, dann Y = normal.<br />

2. Wenn 4 ≤ 8 und X < 40 dann Y = w<strong>in</strong>dig.<br />

3. Wenn 8 ≤ X dann Y = stuermisch.<br />

Da sich <strong>der</strong> Mitarbeiter <strong>die</strong> Regeln nicht merken kann, hat er sich e<strong>in</strong> Prolog-Programm<br />

geschrieben:<br />

mitteilung(X,normal) :- X < 4.<br />

mitteilung(X,w<strong>in</strong>dig) :- 4 =< X, X < 8.<br />

mitteilung(X,stuermisch) :- 8 =< X.<br />

Angenommen <strong>die</strong> aktuelle Messung hat 3 ergeben, und <strong>der</strong> Mitarbeiter nimmt an, er muss<br />

„w<strong>in</strong>dig“ mitteilen, überprüft <strong>die</strong>s aber <strong>in</strong> Prolog:<br />

?- mitteilung(3,Y), Y=w<strong>in</strong>dig.<br />

false.<br />

Wir betrachten den Ablauf <strong>der</strong> SLD-Resolution: Das erste Ziel ergibt zunächst <strong>die</strong> Instanziierung<br />

Y ↦→ normal. Anschließend führt <strong>die</strong> Unifikation von w<strong>in</strong>dig = normal zum<br />

Fail. Prolog wird nun Backtracken und <strong>die</strong> beiden an<strong>der</strong>en Programmklauseln für mitteilung<br />

ausprobieren, obwohl <strong>die</strong>s eigentlich unnötig ist. Der trace <strong>in</strong> SWI-Prolog zeigt<br />

<strong>die</strong>s:<br />

Stand: 7. Januar 2013 176 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

[trace] 3 ?- mitteilung(3,Y), Y=w<strong>in</strong>dig.<br />

Call: (7) mitteilung(3, _G2797) ? creep<br />

Call: (8) 3


5 Logisches Programmieren<br />

mitteilung(X,normal) :- X < 4,!.<br />

mitteilung(X,w<strong>in</strong>dig) :- X < 8,!.<br />

mitteilung(X,stuermisch).<br />

Beachte: Diese Implementierung sollte man nicht mit direkten Werten für <strong>die</strong> Ausgabe<br />

aufrufen. Da z.B ?- mitteilung(3,w<strong>in</strong>dig) wahr wird. Im Gegensatz dazu ergibt<br />

?- mitteilung(3,Y), Y=w<strong>in</strong>dig. falsch.<br />

Es stimmt nun auch nicht mehr: Das Programm verhält sich mit Cuts genauso wie ohne<br />

Cuts. Denn: Wenn wir <strong>die</strong> Cuts weglassen, erhalten wir<br />

mitteilung(X,normal) :- X < 4.<br />

mitteilung(X,w<strong>in</strong>dig) :- X < 8.<br />

mitteilung(X,stuermisch).<br />

Nun ergibt <strong>die</strong> Anfrage ?- mitteilung(3,Y), Y=w<strong>in</strong>dig. als Ergebnis true!.<br />

Das Beispiel demonstriert, dass das Hantieren mit Cuts zu semantischen Problemen<br />

führt, d.h. <strong>die</strong> Bedeutung <strong>der</strong> Programme kann sich än<strong>der</strong>n. E<strong>in</strong>e gute Programmierregel<br />

ist es, Cuts nur dann e<strong>in</strong>zusetzen, wenn das Weglassen <strong>der</strong> Cuts <strong>die</strong> logische Bedeutung<br />

nicht än<strong>der</strong>t, da ansonsten <strong>die</strong> Verständlichkeit und Wartbarkeit <strong>der</strong> Programme schwieriger<br />

wird.<br />

Wir betrachten e<strong>in</strong>ige Beispiele zur Programmierung mit Cut:<br />

Beispiel 5.3.7. Die Berechnung des Maximums zweier Zahlen kann wiefolgt <strong>in</strong> Prolog implementiert<br />

werden:<br />

max(X,Y,X) :- X >= Y.<br />

max(X,Y,Y) :- Y < X.<br />

Mit Cut kann man <strong>die</strong>s umschreiben zu:<br />

max(X,Y,X) :- X >= Y,!.<br />

max(X,Y,Y).<br />

Allerd<strong>in</strong>gs sollte man <strong>die</strong>ses Prädikat nicht direkt mit dem Ergebniswert aufrufen, denn z.B.<br />

?- max(3,1,1). ergibt wahr. Man sollte es daher <strong>in</strong> <strong>der</strong> Form ?- max(3,1,Z), Z=3. verwenden.<br />

Beispiel 5.3.8. Wir haben bereits den Enthaltentest e<strong>in</strong>es Elements <strong>in</strong> e<strong>in</strong>er Liste programmiert:<br />

member(X,[X|_]).<br />

member(X,[_|Y]) :-<br />

member(X,Y).<br />

Mit Cut können wir <strong>die</strong>s effizienter programmieren als:<br />

Stand: 7. Januar 2013 178 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

member(X,[X|_]) :-!.<br />

member(X,[_|Y]) :- member(X,Y).<br />

Wenn <strong>die</strong> erste Klausel erfolgreich war, muss <strong>die</strong> zweite nicht mehr betrachtet werden.<br />

Beachte: Die alte Version liefert bei Anfrage ?- member(X,[1,2,3]). drei verschiedene Lösungen<br />

X = 1 ; X = 2 ; X = 3. Die Version mit Cut liefert nur e<strong>in</strong>e X = 1.<br />

Beispiel 5.3.9. E<strong>in</strong> if-then-else ist eigentlich nicht darstellbar <strong>in</strong> purem Prolog. Mit dem Cut-<br />

Operator kann <strong>die</strong>s jedoch programmiert werden als<br />

ifthenelse(B,P,Q) :- B,!,P.<br />

ifthenelse(B,P,Q) :- Q.<br />

Beispiel 5.3.10. Das folgende Beispiel soll nochmal verdeutlichen, dass <strong>der</strong> Cut-Operator semantikverän<strong>der</strong>nd<br />

ist. Betrachte das Programm<br />

p :- a,b.<br />

p :-c.<br />

Die logische Bedeutung ist (a ∧ b =⇒ p) ∧ (c =⇒ p). Drehen wir <strong>die</strong> Reihenfolge <strong>der</strong><br />

Programmklauseln um, so än<strong>der</strong>t sich an <strong>der</strong> Bedeutung nichts. Betrachten wir nun <strong>die</strong> Variante<br />

mit cut:<br />

p :- a,!,b.<br />

p :-c.<br />

Die logische Bedeutung ist nun (a ∧ b =⇒ p) ∧ (¬a ∧ c =⇒ p), da <strong>die</strong> zweite Klausel nur bei<br />

¬a betrachtet wird.<br />

Umdrehen <strong>der</strong> Klauseln ergibt:<br />

p :-c.<br />

p :- a,!,b.<br />

Die logische Bedeutung ist nun an<strong>der</strong>s: (c =⇒ p) ∧ (a ∧ b =⇒ p).<br />

5.3.7 Negation: Die Closed World-Annahme<br />

In Prolog kann man <strong>in</strong> Programmklauseln ke<strong>in</strong>e Negation verwenden, da <strong>die</strong> Programmklausel<br />

A ⇐ ¬B <strong>der</strong> Klausel {A, B} entspräche, <strong>die</strong> ke<strong>in</strong>e def<strong>in</strong>ite Klausel mehr ist, da<br />

sie zwei positive Literale enthält. Trotzallem gibt es <strong>in</strong> Prolog e<strong>in</strong>en not-Operator. Dessen<br />

Semantik ist jedoch nicht <strong>die</strong> logische Negation, son<strong>der</strong>n wird als Fehlschlagen <strong>der</strong><br />

Suche <strong>in</strong>terpretiert. Wir betrachten als Beispiel <strong>die</strong> Aussage: Maria mag alle Tiere außer<br />

Schlangen. Den ersten Teil <strong>der</strong> Aussage können wir durch<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 179 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

mag(maria,Y) :- tier(Y).<br />

ausdrücken. Wir müssen aber noch <strong>die</strong> Schlangen ausschließen. Es gibt <strong>in</strong> Prolog das<br />

vordef<strong>in</strong>ierte Literal fail, dass zum sofortigen Fehlschlagen <strong>der</strong> Suche führt.<br />

Mit <strong>die</strong>sem fail und dem Cut-Operator können wir obige Aussage ausdrücken:<br />

mag(maria,Y) :- Y=schlange,!,fail.<br />

mag(maria,Y) :- tier(Y).<br />

Zunächst wird geprüft, ob es sich um e<strong>in</strong>e Schlange handelt. Ist <strong>die</strong>s <strong>der</strong> Fall, so wird ke<strong>in</strong><br />

Backtrack<strong>in</strong>g durchgeführt und <strong>die</strong> Suche mit fail beendet. Im Prolog-Interpreter erhält<br />

man das richtige Ergebnis (nach H<strong>in</strong>zufügen e<strong>in</strong>iger Fakten):<br />

?- mag(maria,schlange).<br />

false.<br />

?- mag(maria,hund).<br />

true.<br />

?- mag(maria,katze).<br />

true.<br />

Im Grunde ist das Ergebnis false aber ke<strong>in</strong> logisches Falsch, son<strong>der</strong>n sagt nur aus: Der<br />

Interpreter hat ke<strong>in</strong>e erfolgreiche SLD-Wi<strong>der</strong>legung gefunden. Genau <strong>die</strong>s liegt <strong>der</strong> sogenannten<br />

Closed-World-Assumption (CWA) zu Grunde: Alles was nicht aus dem Programm<br />

folgt, wird als falsch angesehen.<br />

Das not-Prädikat ist entsprechend def<strong>in</strong>iert als:<br />

not(P) :- P,!,fail.<br />

not(P) :- true.<br />

D.h. not(P) liefert true, wenn Prolog ke<strong>in</strong>e erfolgreiche SLD-Wi<strong>der</strong>legung für P f<strong>in</strong>den<br />

kann. Das entspricht natürlich nicht <strong>der</strong> logischen Negation. Der Programmierer muss<br />

sich deshalb darüber bewusst se<strong>in</strong>, was er tut, wenn er not verwendet.<br />

Unser Beispiel kann daher auch programmiert werden als:<br />

mag(maria,Y) :- tier(Y), not(Y = schlange).<br />

Die Closed-World-Assumption wird <strong>in</strong> Prolog verwendet. Dies sieht man z.B. auch an<br />

folgendem Beispiel<br />

rund(ball).<br />

Stand: 7. Januar 2013 180 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.3 Implementierung logischer Programmiersprachen: Prolog<br />

Die Anfrage ?- rund(ball) liefert true. H<strong>in</strong>gegen liefert <strong>die</strong> Anfrage ?- rund(erde) als<br />

Ergebnis false, obwohl wir eigentlich gar nicht wissen, ob <strong>die</strong> Erde rund ist, da ke<strong>in</strong>erlei<br />

Aussage darüber aus dem Programm folgt. Die Closed-World-Assumption erzw<strong>in</strong>gt das<br />

false, da angenommen wird, dass alles falsch ist, was nicht herleitbar ist. Ebenso ergibt<br />

<strong>die</strong> Anfrage ?- not(rund(erde)) das Ergebnis true, obwohl <strong>die</strong>s eigentlich nicht aus dem<br />

Programm folgt, son<strong>der</strong>n nur aufgrund <strong>der</strong> speziellen Semantik von not.<br />

Abschließend betrachten wir e<strong>in</strong>ige Beispiele<br />

Beispiel 5.3.11. Unser Programm zu Verwandtschaftsbeziehungen, etwas erweitert:<br />

frau(maria).<br />

frau(elisabeth).<br />

frau(susanne).<br />

frau(monika).<br />

frau(pia).<br />

mann(peter).<br />

mann(karl).<br />

mann(paul).<br />

vater(peter,maria).<br />

vater(peter,monika).<br />

vater(karl, peter).<br />

vater(karl, pia).<br />

vater(karl, paul).<br />

mutter(susanne,monika).<br />

mutter(susanne,maria).<br />

mutter(elisabeth, peter).<br />

mutter(elisabeth, pia).<br />

mutter(elisabeth, paul).<br />

Mit not können wir e<strong>in</strong>fach Prädikate, für Geschwister-Beziehungen def<strong>in</strong>ieren:<br />

bru<strong>der</strong>(X,Y) :- mann(X),vater(Z,X),vater(Z,Y),not(X == Y), mutter(M,X),mutter(M,Y).<br />

schwester(X,Y) :- frau(X),vater(Z,X),vater(Z,Y),not(X == Y),mutter(M,X),mutter(M,Y).<br />

geschwister(X,Y) :- vater(Z,X),vater(Z,Y),not(X == Y),mutter(M,X),mutter(M,Y).<br />

E<strong>in</strong> an<strong>der</strong>es, aber im Pr<strong>in</strong>zip ähnliches Beispiel ist e<strong>in</strong> ungerichteter Graph:<br />

Beispiel 5.3.12. E<strong>in</strong> ungerichteter Graph kann als Kantenrelation dargestellt werden:<br />

kante(a,b).<br />

kante(a,c).<br />

kante(c,d).<br />

kante(d,b).<br />

kante(b,e).<br />

kante(f,g).<br />

Das Prädikat verbunden ist wahr, wenn zwei Knoten (über mehrere Kanten) verbunden s<strong>in</strong>d:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 181 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

verbunden(X,Y) :- kante(X,Y).<br />

verbunden(X,Y) :- kante(Y,X).<br />

verbunden(X,Z) :- kante(X,Y),verbunden(Y,Z).<br />

verbunden(X,Z) :- kante(Y,X),verbunden(Y,Z).<br />

So term<strong>in</strong>iert es allerd<strong>in</strong>gs nicht immer. E<strong>in</strong>e term<strong>in</strong>ierende Variante ist:<br />

verbunden2(X,Y) :- verb(X,Y,[]).<br />

ungkante(X,Y) :- kante(X,Y).<br />

ungkante(X,Y) :- kante(Y,X).<br />

verb(X,Y,_) :- ungkante(X,Y).<br />

verb(X,Z,L) :- ungkante(X,Y), not(member(Y,L)), verb(Y,Z,[Y|L]).<br />

5.3.8 Vergleich: Theoretische Eigenschaften und reale Implementierungen<br />

Folgende Tabelle vergleicht <strong>die</strong> theoretischen Eigenschaften mit denen implementierter<br />

logischer Programmiersprachen.<br />

Pures Prolog nichtpures Prolog nichtpur, ohne occurs-check<br />

Def<strong>in</strong>ite Programme Cut, Negation,<br />

Klauselreihenfolge fest<br />

SLD: ist korrekt SLD: korrekt SLD: i.a. nicht korrekt<br />

vollständig unvollständig unvollständig<br />

5.4 Sprachverarbeitung und Parsen <strong>in</strong> Prolog<br />

E<strong>in</strong>e häufige Anwendung <strong>der</strong> speziellen Abarbeitungsstrategie von Prolog ist <strong>die</strong> Verwendung<br />

als Implementierungssprache für Parser zu gegebenen Grammatiken, <strong>in</strong>sbeson<strong>der</strong>e<br />

für natürliche Sprachen (Bratko, 1990; Gal et al., 1991; Pereira & Shieber, 1987). Dies ist<br />

auch historisch gesehen <strong>die</strong> erste Anwendung von Prolog gewesen. Prolog verwendet als<br />

Suchstrategie Tiefensuche mit Backtrack<strong>in</strong>g. Dies kann direkt für e<strong>in</strong>en rekursiv absteigenden<br />

Parser verwendet werden. Tatsächlich stehen nicht nur kontextfreie Grammatiken<br />

zur Verfügung, son<strong>der</strong>n auch erweiterte Grammatiken, z.B. für (schriftliche) E<strong>in</strong>gabe <strong>in</strong><br />

natürlicher Sprache.<br />

Wir betrachten zunächst kontextfreie Grammatiken <strong>in</strong> Prolog, und anschließend <strong>die</strong> erweiterten<br />

Grammatiken und <strong>die</strong> Sprachverarbeitung. E<strong>in</strong>e Kontextfreie Grammatik (CFG)<br />

besteht aus Nichtterm<strong>in</strong>alen, Term<strong>in</strong>alen und Produktionen, wobei e<strong>in</strong>e Produktion auf<br />

<strong>der</strong> l<strong>in</strong>ken Seite genau e<strong>in</strong> Nichtterm<strong>in</strong>al hat und auf <strong>der</strong> rechten Seite e<strong>in</strong>e Folge von<br />

Nichtterm<strong>in</strong>alen und Term<strong>in</strong>alen. Z.B. erzeugt <strong>die</strong> folgende CFG mit Startsymbol S alle<br />

Worte <strong>der</strong> Form a n b n :<br />

S → ab<br />

S → aSb<br />

In Prolog kann <strong>die</strong>se Grammatik mehr o<strong>der</strong> weniger direkt e<strong>in</strong>gegeben werden als<br />

Stand: 7. Januar 2013 182 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.4 Sprachverarbeitung und Parsen <strong>in</strong> Prolog<br />

s --> [a,b].<br />

s --> [a], s, [b].<br />

D.h. anstelle von → wird --> benutzt, Term<strong>in</strong>ale werden <strong>in</strong> Listenklammern geschrieben<br />

und Folgen werden durch Kommata getrennt. Tatsächlich wird hier nur syntaktischer Zucker<br />

verwendet, d.h. Prolog übersetzt <strong>die</strong>se sogenannte Def<strong>in</strong>ite Clause Grammar (DCG)<br />

– <strong>die</strong> <strong>in</strong> <strong>die</strong>sem Fall auch e<strong>in</strong>e CFG ist – <strong>in</strong> Hornklauseln. Dabei werden <strong>die</strong> Nichtterm<strong>in</strong>ale<br />

<strong>in</strong> Prädikate übersetzt, <strong>die</strong> jedoch zwei weitere Argumente zur Verarbeitung <strong>der</strong> E<strong>in</strong>gabe<br />

erhalten. D.h. im Beispiel wird durch <strong>die</strong> DCG das zweistellige Prädikat s def<strong>in</strong>iert. Die<br />

Argumente stellen dabei gerade <strong>die</strong> E<strong>in</strong>gabeliste als Differenzliste dar (wobei e<strong>in</strong> Paar<br />

(L 1 , L 2 ) verwendet wird, und nicht <strong>die</strong> Darstellung L 1 − L 2 ). Wir betrachten zunächst<br />

e<strong>in</strong>ige Beispielaufrufe für unser Programm.<br />

?- s([a,a,b,b],[]).<br />

true.<br />

?- s([a,b,b,a],[]).<br />

false.<br />

?- s([a,a,a,b,b,b],[]).<br />

true.<br />

?- s([a,a,a,b,b,b|X],X).<br />

true .<br />

?- s([a,a,a,b,b,b,c,d],[c,d]).<br />

true.<br />

Die genaue Übersetzung ist: Sei <strong>die</strong> Produktion n --> n1,...,nm, wobei alle ni zunächst<br />

Nichtterm<strong>in</strong>ale seien. Dann wird für jede solche Produktion <strong>die</strong> Klausel<br />

n(E<strong>in</strong>gabe,Rest) :- n1(E<strong>in</strong>gabe,Rest1), n2(Rest1,Rest2),..., nm(Restm,Rest)<br />

erzeugt, d.h. <strong>die</strong> Differenzliste wird quasi sequentiell aufgeteilt: Jedes <strong>der</strong> Nichtterm<strong>in</strong>ale<br />

ni nimmt sich zur Verarbeitung gerade soviele Elemente aus <strong>der</strong> Liste wie es zur Verarbeitung<br />

benötigt.<br />

Die Übersetzung <strong>der</strong> Term<strong>in</strong>ale erfolgt dementsprechend: Man kann z.B. annehmen,<br />

dass e<strong>in</strong> Prädikat term<strong>in</strong>al zur Verarbeitung aller Term<strong>in</strong>ale h<strong>in</strong>zugefügt wird, mit <strong>der</strong><br />

Def<strong>in</strong>ition<br />

term<strong>in</strong>al(Term<strong>in</strong>ale,E<strong>in</strong>gabe,Rest) :- append(Term<strong>in</strong>ale,Rest,E<strong>in</strong>gabe).<br />

Wenn ni gerade <strong>die</strong> Liste [t1,...,tk] von Term<strong>in</strong>alen ist, dann wird ni ersetzt durch<br />

term<strong>in</strong>al([t1,....,tk],RestI −1,RestI) Man kann auch auf <strong>die</strong> Verwendung des Prädikats<br />

term<strong>in</strong>al verzichten und <strong>die</strong> Bed<strong>in</strong>gungen direkt ko<strong>die</strong>ren.<br />

Kehren wir zurück zur Beispielgrammatik und übersetzen <strong>die</strong>se nach obiger Anleitung<br />

<strong>in</strong> Prolog-Hornklauseln:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 183 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

s(E<strong>in</strong>,Rest) :- term<strong>in</strong>al([a,b],E<strong>in</strong>,Rest).<br />

s(E<strong>in</strong>,Rest) :- term<strong>in</strong>al([a],E<strong>in</strong>,Rest1), s(Rest1,Rest2), term<strong>in</strong>al([b],Rest2,Rest).<br />

term<strong>in</strong>al(Term<strong>in</strong>ale,E<strong>in</strong>gabe,Rest) :- append(Term<strong>in</strong>ale,Rest,E<strong>in</strong>gabe).<br />

Wenn man auf term<strong>in</strong>al verzichtet, und <strong>die</strong> entsprechenden Bed<strong>in</strong>gungen direkt re<strong>in</strong>ko<strong>die</strong>rt,<br />

erhält man<br />

s([a,b|E<strong>in</strong>],E<strong>in</strong>).<br />

s([a|E<strong>in</strong>],Rest) :-<br />

s(E<strong>in</strong>,[b|Rest]).<br />

DCGs können noch erweitert verwendet werden, <strong>in</strong>dem man zusätzliche Argumente<br />

als Parameter an den Nichtterm<strong>in</strong>alsymbolen e<strong>in</strong>fügt. Diese werden dann mitunifiziert<br />

und es können dadurch weitere Bed<strong>in</strong>gungen <strong>in</strong> <strong>die</strong> Grammatik h<strong>in</strong>e<strong>in</strong>ko<strong>die</strong>rt werden.<br />

Damit gehen DCGs über <strong>die</strong> Klasse <strong>der</strong> kontextfreien Sprachen h<strong>in</strong>aus, denn es kann z.B.<br />

e<strong>in</strong>e DCG für <strong>die</strong> Sprache aller Wörter a n b n c n d n angegeben ist, <strong>die</strong> bekanntlich nicht kontextfrei<br />

ist.<br />

E<strong>in</strong>e DCG-Grammatik für <strong>die</strong> nicht-kontextfreie formale Sprache {a n b n c n d n | n ∈ N}<br />

ist <strong>die</strong> folgende:<br />

s<br />

aa(0)<br />

aa(succ(X))<br />

bb(0)<br />

bb(succ(X))<br />

cc(0)<br />

cc(succ(X))<br />

dd(0)<br />

dd(succ(X))<br />

--> aa(X),bb(X),cc(X),dd(X).<br />

--> [a].<br />

--> [a], aa(X).<br />

--> [b].<br />

--> [b], bb(X).<br />

--> [c].<br />

--> [c], cc(X).<br />

--> [d].<br />

--> [d], dd(X).<br />

Die zusätzlichen Parameter an den Nichtterm<strong>in</strong>alen s<strong>in</strong>d gerade Peanozahlen (<strong>die</strong> aus<br />

succ und 0 aufgebaut s<strong>in</strong>d). Die erste Produktion erw<strong>in</strong>gt gerade, dass <strong>die</strong> Anzahl <strong>der</strong><br />

erzeugten a’s, b’s, c’s und d’s genau gleich se<strong>in</strong> muss.<br />

Wir testen <strong>die</strong>s:<br />

?- s([a,a,b,b,c,c,d,d],[]).<br />

true .<br />

?- s([a,a,a,b,b,c,c,d,d],[]).<br />

false.<br />

?- s(E<strong>in</strong>gabe,[]).<br />

E<strong>in</strong>gabe = [a, b, c, d] ;<br />

E<strong>in</strong>gabe = [a, a, b, b, c, c, d, d] ;<br />

E<strong>in</strong>gabe = [a, a, a, b, b, b, c, c, c|...]<br />

...<br />

Stand: 7. Januar 2013 184 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.4 Sprachverarbeitung und Parsen <strong>in</strong> Prolog<br />

Die Übersetzung <strong>in</strong> re<strong>in</strong>es Prolog ist gerade<br />

s(E<strong>in</strong>,Rest) :- aa(X,E<strong>in</strong>,Rest1),bb(X,Rest1,Rest2),cc(X,Rest2,Rest3),dd(X,Rest3,Rest).<br />

aa(0,E<strong>in</strong>,Rest) :- term<strong>in</strong>al([a],E<strong>in</strong>,Rest).<br />

aa(succ(X),E<strong>in</strong>,Rest) :- term<strong>in</strong>al([a],E<strong>in</strong>,Rest1), aa(X,Rest1,Rest).<br />

bb(0,E<strong>in</strong>,Rest) :- term<strong>in</strong>al([b],E<strong>in</strong>,Rest).<br />

bb(succ(X),E<strong>in</strong>,Rest) :- term<strong>in</strong>al([b],E<strong>in</strong>,Rest1), bb(X,Rest1,Rest).<br />

cc(0,E<strong>in</strong>,Rest) :- term<strong>in</strong>al([c],E<strong>in</strong>,Rest).<br />

cc(succ(X),E<strong>in</strong>,Rest) :- term<strong>in</strong>al([c],E<strong>in</strong>,Rest1), cc(X,Rest1,Rest).<br />

dd(0,E<strong>in</strong>,Rest) :- term<strong>in</strong>al([d],E<strong>in</strong>,Rest).<br />

dd(succ(X),E<strong>in</strong>,Rest) :- term<strong>in</strong>al([d],E<strong>in</strong>,Rest1), dd(X,Rest1,Rest).<br />

o<strong>der</strong> ohne Verwendung von term<strong>in</strong>al:<br />

s(E<strong>in</strong>,Rest) :- aa(X,E<strong>in</strong>,Rest1),bb(X,Rest1,Rest2),cc(X,Rest2,Rest3),dd(X,Rest3,Rest).<br />

aa(0,[a|E<strong>in</strong>],E<strong>in</strong>).<br />

aa(succ(X),[a|E<strong>in</strong>],Rest) :- aa(X,E<strong>in</strong>,Rest).<br />

bb(0,[b|E<strong>in</strong>],E<strong>in</strong>).<br />

bb(succ(X),[b|E<strong>in</strong>],Rest) :- bb(X,E<strong>in</strong>,Rest).<br />

cc(0,[c|E<strong>in</strong>],E<strong>in</strong>).<br />

cc(succ(X),[c|E<strong>in</strong>],Rest) :- cc(X,E<strong>in</strong>,Rest).<br />

dd(0,[d|E<strong>in</strong>],E<strong>in</strong>).<br />

dd(succ(X),[d|E<strong>in</strong>],Rest) :- dd(X,E<strong>in</strong>,Rest).<br />

Die zusätzlich erlaubten Parameter <strong>in</strong>nerhalb <strong>der</strong> DCGs s<strong>in</strong>d <strong>in</strong>sbeson<strong>der</strong>e für <strong>die</strong> Verarbeitung<br />

natürlicher Sprache nützlich, da sie bestimmte Attribute <strong>der</strong> Term<strong>in</strong>ale testen<br />

können, <strong>die</strong> bei bestimmten Satzglie<strong>der</strong>n übere<strong>in</strong>stimmen müssen, z.B. Geschlecht, Fall,<br />

Zeit, usw. und <strong>die</strong> Akzeptanz e<strong>in</strong>er Phrase steuern können.<br />

Deutsch (Late<strong>in</strong> auch) z.B. bauen auf Wortendungen zum Anzeigen <strong>der</strong> Fälle, S<strong>in</strong>gluar/Plural<br />

Geschlecht an und erlauben somit auch e<strong>in</strong>e freiere Wahl <strong>der</strong> Satzstellung. Als<br />

Beispielsprache ist Englisch e<strong>in</strong>facher, da es fast ke<strong>in</strong>e Wortendungen gibt, und <strong>die</strong> Reihenfolge<br />

<strong>der</strong> Worte e<strong>in</strong>es Satzes fast nicht umstellbar ist.<br />

5.4.1 Kontextfreie Grammatiken für Englisch<br />

E<strong>in</strong>e Tabelle <strong>der</strong> syntaktischen Kategorien ist:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 185 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

Det Determ<strong>in</strong>er (Artikel) (the, a, some)<br />

N Noun (Nomen) (table, computer, John)<br />

V verb (writes, eats, hav<strong>in</strong>g)<br />

ADJ adjectives (big, fast)<br />

ADV adverbs (very, slowly, yesterday)<br />

AUX auxiliaries (Hilfsverben) (is, do, has will)<br />

CON conjunctions (and, or)<br />

PREP prepositions (to, on, with)<br />

PRON Pronouns (Pronomen) (he, who, which)<br />

Weitere Bezeichnungen (Subkategorisierung und Komponenten):<br />

S Sentence (Satz)<br />

PN proper noun (“a ....“ ist verboten)<br />

IV <strong>in</strong>transitive verb hat ke<strong>in</strong> Objekt<br />

TV transitives verb hat Objekt.<br />

Komponenten e<strong>in</strong>es Satzes (Phrasen, Sätze):<br />

S (Sentence) Satz<br />

NP Nounphrase Nom<strong>in</strong>alphrase das dicke Buch<br />

VP Verbphrase schreibe e<strong>in</strong> Buch<br />

PP Präpositionalphrase mit e<strong>in</strong>em Fernglas<br />

ADJP adjective phrase größer als man erwartet<br />

ADVP adverbial phrase (yesterday even<strong>in</strong>g, gestern abend)<br />

OptRel relative clause, optional<br />

Die (erste Annäherung an e<strong>in</strong>e) Beschreibung <strong>der</strong> Grammatik e<strong>in</strong>er natürlichen Sprache<br />

erfolgt mit Phrasenstrukturregeln. Diese können mit CFGs zur Konstruktion sowie zur<br />

Analyse von Sätzen bzw. Phrasen verwendet werden. Diese Grammatik ist natürlich abhängig<br />

von <strong>der</strong> beschriebenen Sprache (Deutsch, Englisch, Französisch, Russisch, usw.).<br />

E<strong>in</strong>e kontextfreie Grammatik (CFG) zum Erzeugen e<strong>in</strong>facher englischer Sätze kann man<br />

wie folgt schreiben:<br />

Stand: 7. Januar 2013 186 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.4 Sprachverarbeitung und Parsen <strong>in</strong> Prolog<br />

S → NP VP<br />

NP → Det N<br />

NP → Det N OptRel<br />

NP → PN<br />

Optrel → that VP<br />

VP → TV NP<br />

VP → IV<br />

Lexikone<strong>in</strong>träge:<br />

PN → terry<br />

PN → shrdlu<br />

Det → a<br />

N → program<br />

IV → halts<br />

TV → writes<br />

Beispiel 5.4.1. Herleitungsbäume für <strong>die</strong> Sätze „shrdlu halts“ und „a program halts“ s<strong>in</strong>d:<br />

S<br />

S<br />

NP<br />

VP<br />

NP<br />

VP<br />

PN<br />

shrdlu<br />

IV<br />

halts<br />

DET N IV<br />

a program halts<br />

In Prolog kann man nun <strong>die</strong> Kontextfreie Grammatik als DCG e<strong>in</strong>geben, wobei wir<br />

gleich noch das Prädikat istsatz zur komfortableren E<strong>in</strong>gabe def<strong>in</strong>ieren:<br />

istsatz(E<strong>in</strong>) :-<br />

s(E<strong>in</strong>,[]).<br />

s --> np, vp.<br />

np --> pn.<br />

np --> det, n.<br />

np --> det, n, optrel.<br />

optrel --> [that], vp.<br />

vp --> tv, np.<br />

vp --> iv.<br />

% Lexikon:<br />

pn --> [terry].<br />

pn --> [shrdlu].<br />

det --> [a].<br />

n --> [program].<br />

iv --> [halts].<br />

tv --> [writes].<br />

E<strong>in</strong>ige Beispielaufrufe dazu s<strong>in</strong>d:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 187 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

?- istsatz([a,program,halts]).<br />

true .<br />

?- istsatz([shrdlu,halts]).<br />

true .<br />

?- istsatz([terry,writes,a,program,that,halts]).<br />

true .<br />

?- istsatz([terry,halts,a,program]).<br />

false.<br />

?- istsatz([terry,writes,a,shrdlu]).<br />

false.<br />

?- istsatz([terry,writes,a,program]).<br />

true .<br />

?- istsatz([terry,writes,shrdlu]).<br />

true .<br />

?- istsatz(X).<br />

X = [terry, writes, terry] ;<br />

X = [terry, writes, shrdlu] ;<br />

X = [terry, writes, a, program] ;<br />

X = [terry, writes, a, program, that, writes, terry] ;<br />

X = [terry, writes, a, program, that, writes, shrdlu] ;<br />

X = [terry, writes, a, program, that, writes, a, program] ;<br />

...<br />

Übersetzt man <strong>die</strong> DCG <strong>in</strong> re<strong>in</strong>e Hornklauseln, so erhält man:<br />

istsatz(E<strong>in</strong>) :-<br />

s(E<strong>in</strong>,[]).<br />

s(E<strong>in</strong>,Rest)<br />

:- np(E<strong>in</strong>,Rest1), vp(Rest1,Rest).<br />

np(E<strong>in</strong>,Rest)<br />

:- pn(E<strong>in</strong>,Rest).<br />

np(E<strong>in</strong>,Rest)<br />

:- det(E<strong>in</strong>,Rest1), n(Rest1,Rest).<br />

np(E<strong>in</strong>,Rest)<br />

:- det(E<strong>in</strong>,Rest1),n(Rest1,Rest2), optrel(Rest2,Rest).<br />

optrel([that|E<strong>in</strong>],Rest) :- vp(E<strong>in</strong>,Rest).<br />

vp(E<strong>in</strong>,Rest)<br />

:- tv(E<strong>in</strong>,Rest1), np(Rest1,Rest).<br />

vp(E<strong>in</strong>,Rest)<br />

:- iv(E<strong>in</strong>,Rest).<br />

% Lexikon:<br />

pn([terry|E<strong>in</strong>],E<strong>in</strong>).<br />

pn([shrdlu|E<strong>in</strong>],E<strong>in</strong>).<br />

det([a|E<strong>in</strong>],E<strong>in</strong>).<br />

n([program|E<strong>in</strong>],E<strong>in</strong>).<br />

iv([halts|E<strong>in</strong>],E<strong>in</strong>).<br />

tv([writes|E<strong>in</strong>],E<strong>in</strong>).<br />

Dieser Parser antwortet nur mit ja/ne<strong>in</strong> bzw. term<strong>in</strong>iert nicht, <strong>in</strong>sbeson<strong>der</strong>e erhält man<br />

ke<strong>in</strong>en Parsebaum.<br />

Man teilt <strong>die</strong> Grammatik normalerweise e<strong>in</strong> <strong>in</strong> <strong>die</strong> eigentliche Grammatik und das Lexikon,<br />

das <strong>die</strong> Term<strong>in</strong>ale beschreibt. Teilweise zählt man auch <strong>die</strong> Präterm<strong>in</strong>ale wie z.B. N<br />

(Nomen) zum Lexikon.<br />

Stand: 7. Januar 2013 188 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.4 Sprachverarbeitung und Parsen <strong>in</strong> Prolog<br />

5.4.2 Verwendung von Def<strong>in</strong>ite Clause Grammars<br />

Wir verwenden nun Def<strong>in</strong>ite Clause Grammars (DCG’s), d.h. wir Verwenden <strong>die</strong> Erweiterung<br />

<strong>der</strong> kontextfreien Grammatiken um Argumente (Attribute) von Nichtterm<strong>in</strong>alen.<br />

Z.B. sollte <strong>der</strong> Numerus von NP und VP übere<strong>in</strong>stimmen, d.h. beides sollte entwe<strong>der</strong> im<br />

S<strong>in</strong>gular o<strong>der</strong> Plural se<strong>in</strong>: “sie gehen. er geht“, aber nicht “er gehen“.<br />

Dies ergibt z.B. folgendes Grammatikfragment, <strong>in</strong> dem das Lexikon <strong>der</strong> E<strong>in</strong>fachheit<br />

halber <strong>in</strong> <strong>der</strong> DCG enthalten ist.<br />

In <strong>der</strong> Syntax <strong>der</strong> DCGs sieht das folgen<strong>der</strong>maßen aus, wobei Attribute als Argumente<br />

geschrieben werden. Diese Syntax ist <strong>in</strong> den meisten Prologimplementierungen zulässig.<br />

s --> np(Number), vp(Number).<br />

np(Number) --> pn(Number).<br />

vp(Number) --> tv(Number), np(_).<br />

vp(Number) --> iv(Number).<br />

pn(s<strong>in</strong>gular) --> [shrdlu].<br />

pn(plural) --> [they].<br />

iv(s<strong>in</strong>gular) --> [halts].<br />

iv(plural) --> [halt].<br />

Die Übersetzung <strong>in</strong> Prolog ergibt sich, durch H<strong>in</strong>zufügen <strong>der</strong> Differenzlisten:<br />

s(P0,P)<br />

:- np(Number,P0,P1), vp(Number,P1,P).<br />

np(Number,P0, P) :- pn(Number,P0,P).<br />

vp(Number,P0, P) :- tv(Number, P0, P1), np(_, P1, P).<br />

vp(Number,P0, P) :- iv(Number, P0, P).<br />

pn(s<strong>in</strong>gular,P0,P) :- term<strong>in</strong>al([shrdlu], P0, P).<br />

pn(plural, P0, P) :- term<strong>in</strong>al([they],P0, P).<br />

iv(s<strong>in</strong>gular, P0, P):- term<strong>in</strong>al([halts], P0, P).<br />

iv(plural, P0, P) :- term<strong>in</strong>al([halt], P0, P).<br />

Die Anfrage s([shrdlu, halts],[]) hat folgende Verarbeitung:<br />

s([shrdlu, halts],[])<br />

np(N,[shrdlu, halts],P1), vp(N,P1,[])<br />

pn(N,[shrdlu, halts],P1), iv(N,P1,[])<br />

term<strong>in</strong>al(shrdlu,[shrdlu, halts],P1), iv(s<strong>in</strong>gular,P1,[])<br />

%%% (N = s<strong>in</strong>gular)<br />

term<strong>in</strong>al(shrdlu,[shrdlu, halts],P1), term<strong>in</strong>al([halts],P1,[])<br />

%%% (Unifikation mit term<strong>in</strong>al ergibt P1 = [halts])<br />

term<strong>in</strong>al([halts],[halts],[]).<br />

Ergibt ‘‘yes‘‘.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 189 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

Es gibt noch weitere <strong>die</strong>ser Attribute 2 z.B. Person (erste, zweite, dritte) muss übere<strong>in</strong>stimmen<br />

(ich b<strong>in</strong>; du bist; er, sie, es ist); bei NP und VP muss das Geschlecht übere<strong>in</strong>stimmen:<br />

das Haus (nicht „<strong>die</strong> Haus“), ebenso gibt es e<strong>in</strong>e Übere<strong>in</strong>stimmung bei Det und<br />

N.<br />

Im Deutschen kann man aus <strong>der</strong> Endung den Casus (teilweise) ablesen mittels morphologischer<br />

Verarbeitung. Die sogenannte morphologische Verarbeitung <strong>die</strong>nt dazu, Worte<br />

zu analysieren: auf Endungen, Zerlegung zusammengesetzter Worte, .... In <strong>die</strong>ser Vorlesungen<br />

werden wir darauf nicht weiter e<strong>in</strong>gehen.<br />

Bestimmte Satzkonstruktionen erfor<strong>der</strong>n Dativ, bzw. Akkusativ, ...<strong>die</strong> ebenfalls als erfor<strong>der</strong>liche<br />

Attribute entwe<strong>der</strong> direkt <strong>in</strong> <strong>die</strong> Grammatikregeln e<strong>in</strong>gefügt werden o<strong>der</strong> als<br />

entsprechende Verbmarkierungen im Lexikon.<br />

Auch <strong>die</strong> Zeit o<strong>der</strong> (Aktiv/Passiv) kann man h<strong>in</strong>zufügen.<br />

Um weitere Prolog-Tests <strong>in</strong> e<strong>in</strong>e DCG-Klausel e<strong>in</strong>zufügen, muss man <strong>die</strong> Prolog-<br />

Literale mit geschweiften Klammern e<strong>in</strong>klammern:<br />

E<strong>in</strong> Beispiel für e<strong>in</strong>e kle<strong>in</strong>e Micro-DCG des Deutschen ist, wobei folgende E<strong>in</strong>gabe alle<br />

gültigen Sätze <strong>die</strong>ser Grammatik ausgibt: s(X,[]). Z.B. [ich,fahre, e<strong>in</strong>, auto].<br />

2 Attribute werden <strong>in</strong> <strong>der</strong> Computerl<strong>in</strong>guistik auch features genannt; Die zugehörigen Grammatiken Unifikationsgrammatiken<br />

Stand: 7. Januar 2013 190 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.4 Sprachverarbeitung und Parsen <strong>in</strong> Prolog<br />

s --> np(Number,Sex,Person), vp(Number,Sex,Person).<br />

np(Number,Sex,Person) --> pn(Number,Sex,Person,nom).<br />

vp(Number,Sex,Person) --> tv(Number,Sex,Person,Semtv),<br />

npakk(akk,Semnp),<br />

{<strong>in</strong>tersect(Semtv,Semnp,Semschnitt), not (Semschnitt = [])}.<br />

vp(Number,Sex,Person) --> iv(Number,Sex,Person).<br />

pn(s<strong>in</strong>gular,no,1,nom) --> [ich].<br />

pn(s<strong>in</strong>gular,no,2,nom) --> [du].<br />

pn(s<strong>in</strong>gular,male,3,nom) --> [er].<br />

pn(s<strong>in</strong>gular,female,3,nom) --> [sie].<br />

pn(s<strong>in</strong>gular,neutrum,3,nom) --> [es].<br />

pn(plural,no,1,nom) --> [wir].<br />

pn(plural,no,2,nom) --> [ihr].<br />

pn(plural,mfn,3,nom) --> [sie].<br />

npakk(Fall,Sem) --> det(Number,Sex,3,Fall),nom(Number,Sex,3,Fall,Sem).<br />

iv(s<strong>in</strong>gular,male,3) --> [geht].<br />

iv(s<strong>in</strong>gular,female,3) --> [geht].<br />

iv(s<strong>in</strong>gular,neutrum,3) --> [geht].<br />

iv(s<strong>in</strong>gular,no,1) --> [gehe].<br />

iv(s<strong>in</strong>gular,no,2) --> [gehst].<br />

iv(plural,mfn,3) --> [gehen].<br />

iv(plural,no,1) --> [gehen].<br />

iv(plural,no,2) --> [geht].<br />

tv(s<strong>in</strong>gular,male,3,[transport]) --> [f\"ahrt].<br />

tv(s<strong>in</strong>gular,female,3,[transport]) --> [f\"ahrt].<br />

tv(s<strong>in</strong>gular,neutrum,3,[transport]) --> [f\"ahrt].<br />

tv(s<strong>in</strong>gular,no,1,[transport]) --> [fahre].<br />

tv(s<strong>in</strong>gular,no,2,[transport]) --> [f\"ahrst].<br />

tv(plural,mfn,3,[transport]) --> [fahren].<br />

tv(plural,no,1,[transport]) --> [fahren].<br />

tv(plural,no,2,[transport]) --> [fahrt].<br />

tv(s<strong>in</strong>gular,male,3,[<strong>in</strong>formation]) --> [liest].<br />

tv(s<strong>in</strong>gular,female,3,[<strong>in</strong>formation]) --> [liest].<br />

tv(s<strong>in</strong>gular,neutrum,3,[<strong>in</strong>formation]) --> [liest].<br />

tv(s<strong>in</strong>gular,no,1,[<strong>in</strong>formation]) --> [lese].<br />

tv(s<strong>in</strong>gular,no,2,[<strong>in</strong>formation]) --> [liest].<br />

tv(plural,mfn,3,[<strong>in</strong>formation]) --> [lesen].<br />

tv(plural,no,1,[<strong>in</strong>formation]) --> [lesen].<br />

tv(plural,no,2,[<strong>in</strong>formation]) --> [lest].<br />

det(s<strong>in</strong>gular,neutrum,3,akk) --> [e<strong>in</strong>].<br />

det(s<strong>in</strong>gular,neutrum,3,akk) --> [ke<strong>in</strong>].<br />

det(plural,neutrum,3,akk) --> [zwei].<br />

det(s<strong>in</strong>gular,male,3,akk) --> [e<strong>in</strong>en].<br />

det(s<strong>in</strong>gular,male,3,akk) --> [ke<strong>in</strong>en].<br />

det(plural,male,3,akk) --> [zwei].<br />

det(s<strong>in</strong>gular,female,3,akk) --> [e<strong>in</strong>e].<br />

det(s<strong>in</strong>gular,female,3,akk) --> [ke<strong>in</strong>e].<br />

det(plural,female,3,akk) --> [zwei].<br />

nom(s<strong>in</strong>gular,neutrum,3,akk,[transport]) --> [auto].<br />

nom(plural,neutrum,3,akk,[transport]) --> [autos].<br />

nom(s<strong>in</strong>gular,male,3,akk,[transport]) --> [bus].<br />

nom(plural,male,3,akk,[transport]) --> [busse].<br />

nom(s<strong>in</strong>gular,female,3,akk,[<strong>in</strong>formation]) --> [zeitung].<br />

nom(plural,female,3,akk,[<strong>in</strong>formation]) --> [zeitungen].<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 191 Stand: 7. Januar 2013


5 Logisches Programmieren<br />

5.4.2.1 Lexikon<br />

Aus heutiger Sicht ist das Lexikon nicht nur e<strong>in</strong>e Sammlung von Worten, son<strong>der</strong>n <strong>die</strong><br />

zentrale Struktur <strong>der</strong> l<strong>in</strong>guistischen Verarbeitung. Man kann sehr viel bereits im Lexikon<br />

ko<strong>die</strong>ren und dann mit e<strong>in</strong>fachen weiteren Regeln auskommen. D.h. dass z.B.viele Eigenschaften<br />

e<strong>in</strong>es Wortes im Lexikone<strong>in</strong>trag stecken, auch solche Angaben, <strong>die</strong> besagen<br />

<strong>in</strong> welchen Satzkonstruktionen bestimmte Verben erlaubt s<strong>in</strong>d. Z.B. Passiv-verbot: („ich<br />

werde gelaufen“). z.B. dass e<strong>in</strong> Verb transitiv bzw <strong>in</strong>transitiv ist o<strong>der</strong> <strong>in</strong> beiden Versionen<br />

benutzt werden kann. Die Kontext<strong>in</strong>formation, <strong>die</strong> e<strong>in</strong> bestimmtes Wort benötigt, kann im<br />

Lexikon ko<strong>die</strong>rt se<strong>in</strong>. Auch <strong>in</strong>haltliche Informationen (Semantik) können dort enthalten<br />

se<strong>in</strong>.<br />

Beispiel 5.4.2.<br />

take: verb<br />

verbtype = transitive<br />

subject: role = agent, semfeat= human<br />

object: role = <strong>in</strong>strument, semfeat=vehicle<br />

prep-obj: prep = to, role=goal<br />

prep-obj: prep = from, role=source, ...<br />

5.4.2.2 Berechnung von Parse-Bäumen<br />

Man kann den Nichtterm<strong>in</strong>alen und Term<strong>in</strong>alen e<strong>in</strong> Argument mitgeben, das den Parsebaum<br />

mitberechnet. (Dies geht auch <strong>in</strong> e<strong>in</strong>er attributierten Grammatik.)<br />

s ---> np vp<br />

np ---> pn<br />

optrel ---> that vp<br />

vp ---> iv<br />

Die Implementierung kann dafür z.B. jedes Prädikat um e<strong>in</strong> Argument erweitern, das<br />

den (berechneten) Syntaxbaum aufnimmt.<br />

s(sent(TR_np, TR_vp), E<strong>in</strong>, Rest) :- np(TR_np,...), vp(TR_vp,...).<br />

np(nphrase(TR_pn),...) :- PN(TR_pn,...).<br />

optrel(relativ_satz(TR_iv),...) :- iv(TR_iv,...)<br />

.....<br />

Hier sollte z.B. <strong>der</strong> Satz “Shrdlu halts“ als Ausgabe den Syntaxbaum<br />

sent(nphrase(propernounn(shrdlu)), verbphrase(<strong>in</strong>transverb(halts)))<br />

erzeugen.<br />

Stand: 7. Januar 2013 192 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


5.4 Sprachverarbeitung und Parsen <strong>in</strong> Prolog<br />

5.4.2.3 DCG’s erweitert um Prologaufrufe<br />

Man kann <strong>in</strong> <strong>der</strong> Implementierung von DCGs Prolog-aufrufe e<strong>in</strong>betten, <strong>die</strong> bei <strong>der</strong> Übersetzung<br />

<strong>in</strong> Prolog mitübernommen werden. Syntaktisch macht man das durch Klammerung<br />

mit geschweiften Klammern:<br />

s --> np,vp,{teste(X)}.<br />

s,np,vp werden um <strong>die</strong> E<strong>in</strong>- und Ausgabelisten ergänzt, das Literal <strong>in</strong> <strong>der</strong> Klammer<br />

wird übernommen.<br />

5.4.2.4 DCG’s als formales System<br />

DCG’s (ohne e<strong>in</strong>gebettete Literale) s<strong>in</strong>d als formales System aufzufassen, das analog zu<br />

CFGs e<strong>in</strong>e formale Sprache def<strong>in</strong>iert. Zusätzlich zu CFGs s<strong>in</strong>d an den Nichtterm<strong>in</strong>alen<br />

Argumente erlaubt, <strong>die</strong> Variablen und Konstanten se<strong>in</strong> können und auf Gleichheit getestet<br />

werden dürfen.<br />

Die formale Sprache <strong>die</strong> zu e<strong>in</strong>er DCG gehört, entspricht genau den erfolgreichen Parses<br />

nach <strong>der</strong> Übersetzung <strong>in</strong> def<strong>in</strong>ite Klauseln, wenn man SLD-Resolution als operationale<br />

Semantik nimmt.<br />

Allerd<strong>in</strong>gs ist das nicht dasselbe wie <strong>die</strong> Gleichsetzung mit <strong>der</strong> Prologimplementierung<br />

<strong>der</strong>selben, da nach <strong>der</strong> Übersetzung das Parsen als rekursiv absteigend festgelegt ist.<br />

DCGs kann man zu attributierten Grammatiken dadurch abgrenzen, dass <strong>die</strong> letzteren<br />

kontextfreie Grammatiken s<strong>in</strong>d, <strong>die</strong> <strong>in</strong> den Regeln Berechnungsalgorithmen für e<strong>in</strong>e festgelegte<br />

Menge von Attributen enthalten, aber aufgrund <strong>der</strong> Berechnungen ke<strong>in</strong>e E<strong>in</strong>gabe<br />

ablehnen können.<br />

E<strong>in</strong>e theoretische Klassifizierung zwischen DCGs und CFG bzgl <strong>der</strong> erkannten formalen<br />

Sprachen ist: Offenbar s<strong>in</strong>d DCGs e<strong>in</strong>e echte Erweiterung <strong>der</strong> CFGs.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 193 Stand: 17. Januar 2013


6<br />

Qualitatives zeitliches Schließen<br />

Um Repräsentation von Zeit und zeitlichen Zusammenhängen kommt man nicht herum.<br />

Es gibt viele Logiken hierfür, beispielsweise können Varianten <strong>der</strong> Modallogik Zeitpunkte<br />

als Zustände repräsentieren und erlauben Schlussfolgerungen aus gegebenen Aussagen.<br />

Wir betrachten <strong>in</strong> <strong>die</strong>sem Kapitel <strong>die</strong> Zeitlogik von James F. Allen (Allen, 1983), <strong>die</strong> auch<br />

Allensche Intervall-Logik genannt wird. In <strong>die</strong>ser Logik werden nicht konkrete Zeitpunkte<br />

o<strong>der</strong> Dauern repräsentiert, son<strong>der</strong>n es werden Aussagen über <strong>die</strong> relative Lage von Zeit<strong>in</strong>tervallen<br />

getroffen. Dabei s<strong>in</strong>d <strong>die</strong> Intervalle als Variablen (Namen) gegeben und es<br />

gibt Operatoren, um <strong>die</strong> relative Lage <strong>der</strong> Intervalle auszudrücken. Mithilfe üblicher aussgagenlogischer<br />

Junktoren können solche atomaren Aussagen zu komplexen Formeln zusammengesetzt<br />

werden. Nicht repräsentiert s<strong>in</strong>d <strong>die</strong> genaue Dauer e<strong>in</strong>es Intervalls o<strong>der</strong><br />

dessen absolute zeitliche Lage. S<strong>in</strong>nvoll ist <strong>der</strong> E<strong>in</strong>satz <strong>der</strong> Allenschen Logik, wenn man<br />

nur <strong>die</strong> Information hat, wie verschiedene Aktionen, <strong>die</strong> e<strong>in</strong>e gewisse Zeit dauern, zeitlich<br />

zue<strong>in</strong>an<strong>der</strong> liegen können, und man daraus Schlussfolgerungen herleiten will. S<strong>in</strong>d<br />

<strong>die</strong> Intervalle genau bekannt, dann braucht man <strong>die</strong>se Logik nicht.<br />

6.1 Allens Zeit<strong>in</strong>tervall-Logik<br />

Wir betrachten zunächst e<strong>in</strong> Beispiel, welches <strong>in</strong> Allenscher Intervall-Logik darstellbar ist.<br />

Beispiel 6.1.1. Wir nehmen e<strong>in</strong> Teil e<strong>in</strong>es Rezeptes zum Apfelkuchenbacken.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 Stand: 17. Januar 2013


6.1 Allens Zeit<strong>in</strong>tervall-Logik<br />

A1: Hefeteig zubereiten<br />

A2: Hefeteig gehen lassen<br />

A3: Äpfel schälen und <strong>in</strong> Scheiben schneiden<br />

A4: Blech e<strong>in</strong>fetten<br />

A5: Teig auf das Blech<br />

A6: Äpfel auf den Kuchen setzen.<br />

...<br />

A10: Backofen heizt<br />

A11: Kuchen im Backofen backen<br />

Da wir annehmen, dass nur e<strong>in</strong>e Person <strong>in</strong> <strong>der</strong> Küche ist, können wir folgende Beziehungen angeben:<br />

A2 folgt direkt auf A1<br />

A3 ist später als A1<br />

A3 und A4 s<strong>in</strong>d nicht gleichzeitig<br />

A1 und A4 s<strong>in</strong>d nicht gleichzeitig<br />

A11 ist während A10,<br />

A11 und A10 enden gleichzeitig<br />

A11 ist nach A3<br />

A11 ist nach A4<br />

Hier kann man z.B. mit Transitivität schließen, dass A11 nach A1 stattf<strong>in</strong>det. Man kann auch<br />

ohne Wi<strong>der</strong>spruch h<strong>in</strong>zufügen, dass A3 nach A4 stattf<strong>in</strong>det (d.h. man kann sequentialisieren).<br />

Das hat Ähnlichkeiten zu Job Shop Schedul<strong>in</strong>g Problemen, bei denen aber feste Zeitdauern pro<br />

Aktion und Ausschlusskriterien mittels benutzter Ressourcen festgelegt werden. Auch Abhängigkeiten<br />

von Aktionen kann man <strong>in</strong> JSSPs formulieren.<br />

Der Allensche Intervall-Kalkül baut auf Zeit<strong>in</strong>tervallen und b<strong>in</strong>ären Relationen zwischen<br />

den Intervallen auf, <strong>die</strong> <strong>der</strong>en zeitliche Lage beschreiben.<br />

Die Interpretation <strong>der</strong> Intervalle kann man sich <strong>in</strong> den reellen Zahlen R vorstellen, aber<br />

<strong>in</strong> <strong>der</strong> Repräsentation <strong>der</strong> Allen-Logik kann man ke<strong>in</strong>e exakten Zeiten angeben und auch<br />

ke<strong>in</strong>e Zeitdauern formulieren.<br />

Die Basis des Kalküls ist <strong>die</strong> Untersuchung <strong>der</strong> möglichen relativen Lagen zweier Intervalle<br />

A = [AA, AZ], B = [BA, BZ], wobei AA, AZ, BA, BZ reelle Zahlen s<strong>in</strong>d und <strong>die</strong><br />

Intervalle positive Länge haben (d.h. AA > BZ und BZ > BA). E<strong>in</strong>e vollständige und<br />

disjunkte Liste <strong>der</strong> Möglichkeiten ist <strong>in</strong> folgen<strong>der</strong> Tabelle enthalten, wobei man noch <strong>die</strong><br />

Fälle h<strong>in</strong>zunehmen muss, <strong>in</strong> denen A, B vertauscht s<strong>in</strong>d.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 195 Stand: 17. Januar 2013


6 Qualitatives zeitliches Schließen<br />

Bed<strong>in</strong>gung Abkürzung Bezeichnung<br />

AZ < BA ≺ A before B<br />

AZ = BA m A meets B<br />

AA < BA < AZ < BZ o A overlaps B<br />

AA = BA < AZ < BZ s A starts B<br />

BA < AA < AZ = BZ f A f<strong>in</strong>ishes B<br />

BA < AA < AZ < BZ d A dur<strong>in</strong>g B<br />

BA = AA, AZ = BZ ≡ A equal B<br />

Als Bild kann man <strong>die</strong> Allenschen Relationen folgen<strong>der</strong>maßen illustrieren:<br />

A ≺ B<br />

A before B<br />

A<br />

B<br />

A m B<br />

A meets B<br />

A<br />

B<br />

A o B<br />

A overlaps B<br />

A<br />

B<br />

A<br />

A s B<br />

A starts B<br />

B<br />

A<br />

A f B<br />

A f<strong>in</strong>ishes B<br />

B<br />

A d B<br />

A dur<strong>in</strong>g B<br />

A<br />

B<br />

A ≡ B<br />

A equal B<br />

A<br />

B<br />

Nimmt man <strong>die</strong> (relationalen) Inversen dazu, dann hat man <strong>die</strong> 13 Allenschen Relationen<br />

zwischen Zeit<strong>in</strong>tervallen. Die Inversen bezeichnet man mit ˘m, ŏ, ˘s, ˘f, ˘d, im Fall von ≺<br />

mit ≻ und <strong>die</strong> relationale Inverse von ≡ ist ≡ selbst, da <strong>die</strong>se Relation symmetrisch ist.<br />

Def<strong>in</strong>ition 6.1.2 (Allensche Basisrelationen). Die 13 Allenschen Basis-Relationen s<strong>in</strong>d:<br />

{≡, ≺, m, o, s, d, f, ≻, ˘m, ŏ, ˘s, ˘d, ˘f}.<br />

Wir bezeichnen <strong>die</strong>se Menge mit R.<br />

Wir stellen zur Verdeutlichung nochmal alle 13 Relationen als Bild dar:<br />

Stand: 17. Januar 2013 196 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


6.1 Allens Zeit<strong>in</strong>tervall-Logik<br />

A ≺ B<br />

A<br />

B<br />

A ≻ B<br />

B<br />

A<br />

A m B<br />

A<br />

B<br />

A ˘m B<br />

B<br />

A<br />

A o B<br />

A<br />

B<br />

A ŏ B<br />

B<br />

A<br />

A s B<br />

A<br />

B<br />

A ˘s B<br />

B<br />

A<br />

A f B<br />

B<br />

A<br />

A ˘f B<br />

A<br />

B<br />

A d B<br />

A<br />

B<br />

A ˘d B<br />

A<br />

B<br />

A ≡ B<br />

A<br />

B<br />

Durch Vergleichen aller Paare von Basis-Relationen sieht man leicht, dass <strong>die</strong> Relationen<br />

alle verschieden s<strong>in</strong>d:<br />

Satz 6.1.3. Die Allenschen Basis-Relationen s<strong>in</strong>d paarweise disjunkt, d.h.<br />

A r 1 B ∧ A r 2 B =⇒ r 1 = r 2 .<br />

Formeln <strong>der</strong> Allenschen Zeitlogik werden durch Variablen für <strong>die</strong> Intervalle, verknüpft<br />

durch <strong>die</strong> Basisrelationen und durch aussagenlogische Junktoren gebildet. Wir def<strong>in</strong>ieren<br />

<strong>die</strong> Menge <strong>der</strong> Formeln formal:<br />

Def<strong>in</strong>ition 6.1.4 (Syntax <strong>der</strong> Allen-Formeln). Die Allen-Zeitlogik kann folgende Allen-<br />

Formeln bilden:<br />

• atomare Aussagen A r B, wobei A, B Intervallnamen s<strong>in</strong>d und r e<strong>in</strong>e <strong>der</strong> Allenschen<br />

Basis-Relationen ist (d.h. r ∈ R)<br />

• aussagenlogische Komb<strong>in</strong>ationen von atomaren Aussagen.<br />

Die Semantik dazu bildet Intervallnamen auf nichtleere, reelle Intervalle ab. Formeln<br />

s<strong>in</strong>d wahr, wenn sie unabhängig von <strong>der</strong> exakten Zuordnung immer wahr s<strong>in</strong>d. D.h. wenn<br />

für alle Abbildungen von Intervallnamen auf nichtleere, reelle Intervalle <strong>die</strong> Formel stets<br />

wahr ist.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 197 Stand: 17. Januar 2013


6 Qualitatives zeitliches Schließen<br />

Def<strong>in</strong>ition 6.1.5 (Semantik <strong>der</strong> Allen-Formeln). E<strong>in</strong>e Interpretation I bildet Intervallnamen<br />

auf nicht leere Intervalle [a, b] ab, wobei a, b ∈ R und a < b. Die Erweiterung <strong>der</strong> Interpretation<br />

auf Allensche Formeln berechnet e<strong>in</strong>en Wahrheitswert (0 o<strong>der</strong> 1) und ist wie folgt def<strong>in</strong>iert:<br />

• Wenn A r B e<strong>in</strong> atomare Aussage ist und sei I(A) = [AA, AZ] und I(B) = [BA, BZ].<br />

Dann gilt:<br />

– r =≺: I(A ≺ B) = 1, gdw. AZ < BA<br />

– r = m: I(A m B) = 1, gdw. AZ = BA<br />

– r = o: I(A o B) = 1, gdw. AA < BA, BA < AZ und AZ < BZ<br />

– r = s: I(A s B) = 1, gdw. AA = BA und AZ < BZ<br />

– r = f: I(A f B) = 1, gdw. AA > BA und AZ = BZ<br />

– r = d: I(A d B) = 1, gdw. AA > BA und AZ < BZ<br />

– r =≡: I(A ≡ B) = 1, gdw. AA = BA und AZ = BZ<br />

– r = ˘r 0 : I(A ˘r 0 B) = 1, gdw. I(B r 0 A) = 1<br />

• Für komplexe Formeln gilt wie üblich:<br />

– I(F ∧ G) = 1 gdw. I(F ) = 1 und I(G) = 1<br />

– I(F ∨ G) = 1 gdw. I(F ) = 1 o<strong>der</strong> I(G) = 1.<br />

– I(¬F ) = 1 gdw. I(F ) = 0<br />

– I(F ⇐⇒ G) = 1 gdw. I(F ) = I(G)<br />

– I(F ⇒ G) = 1 gdw. I(F ) = 0 o<strong>der</strong> I(G) = 1<br />

E<strong>in</strong>e Interpretation ist e<strong>in</strong> Modell für e<strong>in</strong>e Allen-Formel F , gdw. I(F ) = 1 gilt. E<strong>in</strong>e Allensche<br />

Formel F ist:<br />

• e<strong>in</strong>e Tautologie, wenn jede Interpretation e<strong>in</strong> Modell für F ist.<br />

• e<strong>in</strong> Wi<strong>der</strong>spruch (<strong>in</strong>konsistent), wenn es ke<strong>in</strong> Modell für F gibt.<br />

• erfüllbar, wenn es m<strong>in</strong>destens e<strong>in</strong> Modell für F gibt.<br />

E<strong>in</strong>e Allensche Formel F folgt semantisch aus <strong>der</strong> Allen-Formel G, geschrieben als G |= F ,<br />

genau denn wenn alle Modelle für G auch Modelle für F s<strong>in</strong>d (d.h. falls I(G) = 1, dann gilt auch<br />

I(F ) = 1). Zwei Allensche Formeln F, G s<strong>in</strong>d äquivalent, gdw. F |= G und G |= F gilt.<br />

6.2 Darstellung Allenscher Formeln als Allensche Constra<strong>in</strong>ts<br />

6.2.1 Abkürzende Schreibweise<br />

Will man mehrere mögliche Lagebeziehungen zwischen 2 Intervallen ausdrücken, so<br />

kann man <strong>die</strong>s disjunktiv machen. z.B.<br />

Stand: 17. Januar 2013 198 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


6.2 Darstellung Allenscher Formeln als Allensche Constra<strong>in</strong>ts<br />

A ≺ B ∨ A s B ∨ A f B<br />

Dies bedeutet: Aktion A ist früher als B, o<strong>der</strong> A, B starten gleichzeitig o<strong>der</strong> enden<br />

gleichzeitig, wobei <strong>in</strong> den letzten beiden Fällen A kürzer als B ist. Diese Disjunktion stellen<br />

wir verkürzt dar als A {≺, s, f} B.<br />

Wir verwenden <strong>die</strong>se Schreibweise ab jetzt <strong>in</strong> <strong>der</strong> folgenden Form:<br />

A S B, wobei S ⊆ R.<br />

Damit kann man alle Disjunktionen von E<strong>in</strong>zel-Relationen zwischen zwei Intervallen A, B<br />

darstellen.<br />

Dies ergibt e<strong>in</strong>e Anzahl von 2 13 verschiedenen (unpräzisen) Relationsbeziehungen<br />

zwischen Zeit<strong>in</strong>tervallen, wobei man <strong>die</strong>se Relationen e<strong>in</strong>fach durch e<strong>in</strong>e höchstens 13-<br />

elementige Disjunktion bzw. <strong>der</strong>en Abkürzung darstellen kann. Hier ist auch A ∅ B dabei,<br />

<strong>die</strong> unmögliche Relation (def<strong>in</strong>iert als I(A ∅ B) = 0 für jede Interpretation I), und A R B,<br />

<strong>die</strong> Relation, <strong>die</strong> alles erlaubt.<br />

6.2.2 Allensche Constra<strong>in</strong>ts<br />

Wir zeigen <strong>in</strong> <strong>die</strong>sem Abschnitt, dass man Allen-Formeln viel e<strong>in</strong>facher darstellen kann:<br />

Jede Allensche Formel kann durch e<strong>in</strong>e Disjunktion sogenannter Allenscher Constra<strong>in</strong>ts<br />

dargestellt werden. E<strong>in</strong> Allensches Constra<strong>in</strong>t ist e<strong>in</strong>e Konjunktion von atomaren Aussagen,<br />

wobei <strong>in</strong>nerhalb <strong>der</strong> atomaren Aussagen obige Abkürzung für Disjunktionen (d.h.<br />

A S B mit S ⊆ R) erlaubt ist.<br />

Hierfür genügt es zu zeigen, dass e<strong>in</strong>ige Vere<strong>in</strong>fachungen möglich s<strong>in</strong>d, <strong>die</strong> <strong>die</strong>se „Normalform“<br />

herstellen können. Im Wesentlichen reichen hierfür aussagenlogische Umformungen<br />

aus, jedoch müssen alle Negationen elim<strong>in</strong>iert werden.<br />

Def<strong>in</strong>ition 6.2.1 (Vere<strong>in</strong>fachungsregeln für Allensche Formeln). Die Vere<strong>in</strong>fachungsregeln<br />

für Allensche Formeln s<strong>in</strong>d:<br />

• E<strong>in</strong> atomare Aussage <strong>der</strong> Form A r A kann man immer vere<strong>in</strong>fachen zu 0, 1:<br />

– A r A → 0, wenn r ≠ ≡ und<br />

– A ≡ A → 1.<br />

• Negationszeichen kann man nach <strong>in</strong>nen schieben.<br />

• E<strong>in</strong>e Formel ¬(A R B) kann man zu A (R \ R) B umformen.<br />

• Unterformeln <strong>der</strong> Form A R 1 B ∧ A R 2 B kann man durch A (R 1 ∩ R 2 ) B ersetzen.<br />

• Unterformeln <strong>der</strong> Form A R 1 B ∨ A R 2 B kann man durch A (R 1 ∪ R 2 ) B ersetzen.<br />

• atomare Formeln <strong>der</strong> Form A ∅ B kann man durch 0 ersetzen.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 199 Stand: 17. Januar 2013


6 Qualitatives zeitliches Schließen<br />

• atomare Formeln <strong>der</strong> Form A RB kann man durch 1 ersetzen.<br />

• Alle aussagenlogischen Umformungen s<strong>in</strong>d erlaubt.<br />

Durch Anwenden <strong>die</strong>ser Vere<strong>in</strong>fachungen kann man jede Allensche Formel solange<br />

transformieren, bis man e<strong>in</strong>e Disjunktion von Konjunktionen von atomaren Constra<strong>in</strong>ts<br />

hat. Z.B. A {≺, s, o} B ∧ A {≻, s, o} B entspricht A {s, o} B. Das Ergebnis ist e<strong>in</strong>e i.A.<br />

kle<strong>in</strong>ere Formel, <strong>die</strong> e<strong>in</strong>e Disjunktion von Konjunktionen von atomaren Allen-Aussagen<br />

ist. E<strong>in</strong>e Konjunktion von atomaren Allen-Aussagen nennt man Allen-Constra<strong>in</strong>t, und <strong>die</strong><br />

Disjunktion von Allen-Constra<strong>in</strong>ts e<strong>in</strong> disjunktives Allen-Constra<strong>in</strong>t.<br />

Es gilt:<br />

Theorem 6.2.2. Jede Vere<strong>in</strong>fachungsregel für Allensche Formeln erhält <strong>die</strong> Äquivalenz, d.h. wenn<br />

F → F ′ , dann s<strong>in</strong>d F und F ′ äquivalente Formeln.<br />

Beweis. Dies lässt sich durch Verwendung <strong>der</strong> Semantik verifizieren. Für Vere<strong>in</strong>fachungen<br />

wie ¬(A R B) → A (R \ R) B muss man im Wesentlichen zeigen, dass R alle möglichen<br />

Lagen von zwei Intervallen auf <strong>der</strong> reellen Achse abdeckt, und dass <strong>die</strong> Allenschen<br />

Basisrelationen alle disjunkt s<strong>in</strong>d.<br />

6.3 Der Allensche Kalkül<br />

Der Allensche Kalkül def<strong>in</strong>iert Regeln, um aus gegebenen Allenschen Constra<strong>in</strong>ts weitere<br />

Beziehungen zwischen Intervallen zu folgern. Die wesentlichen Regeln des Allenschen<br />

Kalküls betreffen dabei Beziehungen zwischen drei Intervallen. Man kann beispielsweise<br />

aus A ≺ B ∧ B ≺ C mittels Transitivität von ≺ <strong>die</strong> neue Beziehung A ≺ C schließen.<br />

Aus A ≺ B ∧ C ≺ B kann man dagegen nichts neues über <strong>die</strong> relative Lage von A zu C<br />

schließen: Alles (im S<strong>in</strong>ne <strong>der</strong> Allenschen Relationen) ist noch möglich.<br />

Da <strong>die</strong> Menge <strong>der</strong> Komb<strong>in</strong>ationen endlich ist, kann man sich alle möglichen neuen Relationen<br />

als Verknüpfungen r 1 ◦ r 2 bereits erstellen und damit weitere Relationen zwischen<br />

Intervallen herleiten. D.h. wir def<strong>in</strong>ieren r 1 ◦ r 2 ⊆ R gerade als m<strong>in</strong>imale Menge<br />

von Basisrelationen mit: A r 1 B∧B r 2 C |= A (r 1 ◦r 2 ) C. Wir verallgeme<strong>in</strong>ern <strong>die</strong>s auch für<br />

disjunktive Mengen von Basirelationen: Seien R 1 , R 2 ⊆ R, dann ist R 1 ◦ R 2 ⊆ R gerade<br />

<strong>die</strong> m<strong>in</strong>imale Menge von Basisrelationen für <strong>die</strong> gilt: A R 1 B ∧ B R 2 C |= A (R 1 ◦ R 2 ) C.<br />

Beachte, dass für Basisrelationen r 1 , r 2 <strong>die</strong> Komposition r 1 ◦ r 2 nicht notwendigerweise<br />

e<strong>in</strong>e Basisrelation ist, z.B. ist ≺ ◦ ≻= R, da man aus A ≺ B ∧ B ≻ C für <strong>die</strong> Beziehung<br />

zwischen A und C alles folgen kann (also A R C).<br />

Die Werte für r 1 ◦ r 2 kann man vor dem Start des Kalküls per Hand ausrechnen und <strong>in</strong><br />

e<strong>in</strong>er 13 × 13-Matrix abspeichern. Wir geben <strong>die</strong> Matrix als 12 × 12 (ohne <strong>die</strong> E<strong>in</strong>träge zu<br />

≡, denn es gilt stets r◦ ≡ = ≡ ◦r = r) <strong>in</strong> Abbildung 6.1 an. Dabei bedeuten <strong>die</strong> E<strong>in</strong>träge,<br />

<strong>die</strong> mit R \ beg<strong>in</strong>nen, das Komplement <strong>der</strong> nachfolgenden Relationen.<br />

Beispiele für E<strong>in</strong>träge <strong>in</strong> <strong>der</strong> 13 × 13-Matrix s<strong>in</strong>d:<br />

Stand: 17. Januar 2013 200 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


6.3 Der Allensche Kalkül<br />

≺ ≻ d ˘d o ŏ m ˘m s ˘s f ˘f<br />

≺ ≺ R ≺ o m ≺ ≺ ≺ o m<br />

d s<br />

d s<br />

≻ R ≻ ≻ ŏ ˘m ≻<br />

≻ ŏ ˘m ≻<br />

d f d f<br />

d ≺ ≻ d R ≺ o m ≻ ŏ ˘m<br />

d s d f<br />

˘d<br />

≺ o m R \<br />

≺ ŏ ˘m<br />

≺ ≻<br />

˘d ˘f ˘d ˘s<br />

m ˘m<br />

o ≺<br />

ŏ<br />

≺ o m<br />

˘d ˘f<br />

≻ŏ ˘m<br />

˘d ˘s<br />

≻<br />

≺<br />

≻ ŏ ˘m<br />

d f<br />

≺ o m ≺ ≺ ≺ o m ≺<br />

d s<br />

d s<br />

≻<br />

≻ ŏ ˘m ≻ ≻ ≻<br />

d f<br />

≻ ŏ ˘m ≺ o m<br />

d<br />

d f d s<br />

≺ ≻ d<br />

˘d o ˘d ˘f ŏ ˘d ˘s o ˘d ˘f ŏ ˘d ˘s o ˘d ˘f ˘d ŏ ˘d ˘s ˘d<br />

o d s ≺o m R \<br />

˘d ˘f ≺ o m ≺ ≻<br />

m ˘m<br />

ŏ d f ≻ ŏ ˘m<br />

˘d ˘s<br />

R \<br />

≺ ≻<br />

m ˘m<br />

≺ ŏ ˘d ˘s o ˘d ˘f o d s o ≺ o m<br />

≻ ŏ ˘m o ˘d ˘f ≻ ŏ d f ≻ ŏ ˘m ŏ ŏ ˘d ˘s<br />

m ≺ ≻ ŏ ˘m<br />

˘d ˘s o d s ≺ ≺ o d s ≺ ≡ f ˘f m m d s o ≺<br />

˘m<br />

≺ o m<br />

˘d ˘f<br />

s ≺ ≻ d<br />

˘s<br />

≺ o m<br />

˘d ˘f<br />

f ≺ ≻ d<br />

≻ ŏ d f ≻ ŏ d f ≻ ≡ s ˘s ≻ d f ŏ ≻ ˘m ˘m<br />

≺ o m<br />

˘d ˘f<br />

≺ o m ŏ d f ≺ ˘m s ≡ s ˘s d ≺ o m<br />

≻ ŏ d f ˘d o ˘d ˘f ŏ o ˘d ˘f ˘m ≡ s ˘s ˘s ŏ ˘d<br />

≻ ŏ ˘m<br />

˘d ˘s o d s ≻ ŏ ˘m m ≻ d ≻ ŏ ˘m f ≡ f ˘f<br />

˘f ≺ ≻ ŏ ˘m<br />

˘d ˘s o d s ˘d o ŏ ˘d ˘s m ŏ ˘d ˘s o ˘d ≡ f ˘f ˘f<br />

Abbildung 6.1: Die Kompositionsmatrix <strong>der</strong> Allenschen Relationen<br />

Beispiel 6.3.1. Wenn A ≺ B ∧ B d C, dann kann man sich alle Möglichkeiten für A (≺ ◦ d) C<br />

an folgendem Bild verdeutlichen, <strong>in</strong>dem man alle möglichen l<strong>in</strong>ken Anfänge von C betrachtet:<br />

A<br />

B<br />

C<br />

Man sieht, dass es genau <strong>die</strong> Möglichkeiten ≺, o, m, s, d zwischen A und C gibt, d.h.<br />

A {≺, o, m, s, d} C.<br />

Hat man mehrere Elementarrelationen, dann kann man <strong>die</strong> Komb<strong>in</strong>ation <strong>der</strong> Elementarrelationen<br />

bilden, das entsprechende Kompositions-Resultat <strong>in</strong> e<strong>in</strong>er Tabelle ablesen,<br />

und dann <strong>die</strong> Vere<strong>in</strong>igung bilden. Z.B. A {m, d} B ∧ B {f, d} C erlaubt auf folgende Relation<br />

zu schließen: A (m ◦ f ∪ m ◦ d ∪ d ◦ f ∪ d ◦ d) C.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 201 Stand: 17. Januar 2013


6 Qualitatives zeitliches Schließen<br />

Hier ergibt sich A {d, s, o} ∪ {d, s, o} ∪ {d} ∪ {d} C. Das bedeutet: A {d, s, o} C.<br />

Allgeme<strong>in</strong> gilt:<br />

Satz 6.3.2. Seien r 1 , . . . , r k , r 1 ′ , . . . , r′ k<br />

Allensche Basisrelationen. Dann gilt<br />

{r 1 , . . . , r k } ◦ {r ′ 1, . . . , r ′ k } = ⋃ {r i ◦ r ′ j | i = 1, . . . , k, j = 1, . . . , k ′ }<br />

D.h. man kann <strong>die</strong> Komposition von Teilmengen von Basisrelationen wie<strong>der</strong> auf <strong>die</strong><br />

„punktweise“ Komposition <strong>der</strong> Basisrelationen zurückführen, <strong>die</strong> man aus obiger Tabelle<br />

ablesen kann.<br />

E<strong>in</strong>e weitere Vere<strong>in</strong>fachung ist für <strong>die</strong> Inversion <strong>der</strong> Relationen möglich. Zunächst def<strong>in</strong>ieren<br />

wir:<br />

Def<strong>in</strong>ition 6.3.3 (Inversion für Mengen von Basisrelationen). Sei S = {r 1 , . . . , r k } ⊆ R.<br />

Dann sei<br />

˘.S = { ˘r 1 , . . . , ˘r k }.<br />

Desweiteren def<strong>in</strong>ieren wir für e<strong>in</strong>e Basisrelation r: ˘r = r<br />

Damit gilt:<br />

Satz 6.3.4. Für S ⊆ R gilt: A S B und B ˘.S A s<strong>in</strong>d äquivalente Allensche Formeln.<br />

Beweis. Für <strong>die</strong> Basisrelationen ist das klar. Sei S = {r 1 , . . . , r k }. Dann ist A S B gerade<br />

A r 1 B ∨ . . . ∨ A r k B, und A r 1 B ∨ . . . ∨A r k B ist äquivalent zu B ˘r 1 A ∨ . . . ∨ B ˘r k A,<br />

was wie<strong>der</strong>um per Def<strong>in</strong>ition gerade B ˘.S A ist.<br />

Ebenso gilt:<br />

Satz 6.3.5. ˘.(r 1 ◦ r 2 ) = ˘r 2 ◦ ˘r 1 .<br />

Man kann sich auf <strong>die</strong> Konjunktion von Relationsbeziehungen beschränken, d.h. auf<br />

(konjunktive) Allen-Constra<strong>in</strong>ts, da man <strong>die</strong> Disjunktionen unabhängig bearbeiten kann.<br />

6.3.1 Berechnung des Allenschen Abschlusses e<strong>in</strong>es Constra<strong>in</strong>ts<br />

Die folgenden Regeln stellen den Allenschen Kalkül dar. Sie <strong>die</strong>nen dazu den sogenannten<br />

Allenschen Abschluss e<strong>in</strong>es Allenschen Constra<strong>in</strong>ts zu berechnen.<br />

Def<strong>in</strong>ition 6.3.6 (Regeln des Allenschen Kalküls). Die folgenden Regeln werden auf (Subformeln)<br />

von Allenschen Constra<strong>in</strong>ts angewendet:<br />

• Aussagenlogische Umformungen dürfen verwendet werden.<br />

• A R 1 B ∧ A R 2 B → A (R 1 ∩ R 2 ) B<br />

• A ∅ B → 0<br />

• A R B → 1<br />

Stand: 17. Januar 2013 202 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


6.3 Der Allensche Kalkül<br />

• A R A → 0, wenn ≡∉ R.<br />

• A R A → 1, wenn ≡∈ R.<br />

• A R B → B ˘.R A<br />

• A R 1 B ∧ B R 2 C → A R 1 B ∧ B R 2 C ∧ A (R 1 ◦ R 2 ) C.<br />

Den Allenschen Abschluss e<strong>in</strong>es (u.U. auch disjunktiven) Allenschen Constra<strong>in</strong>ts berechnet<br />

man, <strong>in</strong>dem man obige Regel solange wie möglich anwendet:<br />

Def<strong>in</strong>ition 6.3.7 (Allenscher Abschluss). Für konjunktive Formeln (d.h. Allensche Constra<strong>in</strong>ts)<br />

werden <strong>die</strong> Regeln des Allenschen Kalküls solange angewendet, bis sich ke<strong>in</strong>e neuen Beziehungen<br />

mehr herleiten lassen.<br />

Hat man e<strong>in</strong>en disjunktiven Allenschen Constra<strong>in</strong>t, so wendet man <strong>die</strong> Fixpunktiteration auf<br />

jede Komponente e<strong>in</strong>zeln an, anschließend kann man u.U. vere<strong>in</strong>fachen: Erhält man für e<strong>in</strong>e Komponente<br />

1, so ist <strong>der</strong> disjunktive Allen-Constra<strong>in</strong>t äquivalent zu 1. 0en kann man wie üblich streichen.<br />

S<strong>in</strong>d alle Disjunktionen falsch, dann hat mann e<strong>in</strong>e Inkonsitenz entdeckt (<strong>die</strong> E<strong>in</strong>gabe ist e<strong>in</strong><br />

wi<strong>der</strong>sprüchliches Allen-Constra<strong>in</strong>t).<br />

Beispiel 6.3.8. Wir betrachten nochmal das Beispiel des Kuchenbackens:<br />

A1: Hefeteig zubereiten<br />

A2: Hefeteig gehen lassen<br />

A3: Äpfel schälen und <strong>in</strong> Scheiben schneiden<br />

A4: Blech e<strong>in</strong>fetten<br />

A5: Teig auf das Blech<br />

A6: Äpfel auf den Kuchen setzen.<br />

Als E<strong>in</strong>gabe kann man <strong>die</strong> folgenden Relationen zwischen A1, . . . , A6 nehmen, wenn mehrere<br />

Personen e<strong>in</strong>e parallelisierte Verarbeitung ermöglichen:<br />

A1 m A2<br />

A2 {m, ≺} A5<br />

A4 {m, ≺} A5<br />

A3 {m, ≺} A6<br />

A5 {m, ≺} A6<br />

Das ergibt das Allensche Constra<strong>in</strong>t<br />

A1 m A2 ∧ A2 {m, ≺} A5 ∧ A4 {m, ≺} A5 ∧ A3 {m, ≺} A6 ∧ A5 {m, ≺} A6.<br />

Berechnet man den Allenschen Abschluss, muss man im Wesentlichen nur prüfen, ob man mit<br />

<strong>der</strong> Transitivitätsregel neue Beziehungen f<strong>in</strong>det.<br />

• Aus A1 m A2 ∧ A2 {m, ≺} A5 erhält man A1 ≺ A5<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 203 Stand: 17. Januar 2013


6 Qualitatives zeitliches Schließen<br />

• Aus A1 ≺ A5 ∧ A5 {m, ≺} A6 erhält man A1 ≺ A6<br />

• Aus A2 {m, ≺} A5 ∧ A5 {m, ≺} A6 erhält man A2 ≺ A6<br />

• Aus A4 {m, ≺} A5 ∧ A5 {m, ≺} A6 erhält man A4 ≺ A6<br />

Mehr kann man nicht herleiten, d.h. <strong>der</strong> Allensche Abschluss ist gerade das Constra<strong>in</strong>t<br />

A1 m A2 ∧ A1 ≺ A5 ∧ A1 ≺ A6 ∧ A2 {m, ≺} A5 ∧ A2 ≺ A6 ∧ A4 {m, ≺} A5 ∧ A4 ≺ A6 ∧<br />

A3 {m, ≺} A6 ∧ A5 {m, ≺} A6.<br />

Beachte: H<strong>in</strong>zufügen von Beziehungen Ai R Aj macht ke<strong>in</strong>en S<strong>in</strong>n, da <strong>die</strong>se direkt wie<strong>der</strong> gelöscht<br />

werden.<br />

E<strong>in</strong> Bild zu den Relationen ist das folgende, wobei Pfeile A1 → A2 bedeuten: A1 f<strong>in</strong>det vor A2<br />

statt (also m o<strong>der</strong> ≺). Die gestrichelten Pfeile, deuten <strong>die</strong> Beziehungen an, <strong>die</strong> <strong>der</strong> Allensche Kalkül<br />

herleitet.<br />

A1 A2<br />

A4<br />

A5<br />

A6<br />

A3<br />

Beispiel 6.3.9. Wir betrachten weiterh<strong>in</strong> <strong>die</strong> sechs Aktionen zum Kuchenbacken und nehmen<br />

an, dass nur e<strong>in</strong>e Person alle<strong>in</strong>e backt, d.h. es gibt ke<strong>in</strong>e parallelen Aktionen. Dann wären <strong>die</strong><br />

entsprechenden Relationen:<br />

A1 m A2<br />

A2 {m, ≺} A5<br />

A4 {m, ≺} A5<br />

A3 {m, ≺} A6<br />

A5 {m, ≺} A6<br />

A1 {≺, m, ˘m, ≻} A3<br />

A1 {≺, m, ˘m, ≻} A4<br />

A1 {≺, m, ˘m, ≻} A5<br />

A3 {≺, m, ˘m, ≻} A4<br />

A3 {≺, m, ˘m, ≻} A4<br />

E<strong>in</strong>e Möglichkeit, <strong>die</strong> man durch H<strong>in</strong>zufügen von Sequentialisierung bekommt, ist im Bild dargestellt:<br />

A1<br />

A2<br />

<br />

A4 A3 A5 A6<br />

Stand: 17. Januar 2013 204 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


6.4 Untersuchungen zum Kalkül<br />

6.4 Untersuchungen zum Kalkül<br />

Wir sagen, <strong>der</strong> Kalkül ist korrekt, wenn bei Transformation von F nach F ′ gilt, dass F und<br />

F ′ äquivalente Formeln s<strong>in</strong>d.<br />

Wir sagen, <strong>der</strong> Kalkül ist herleitungs-vollständig, wenn er für jedes konjunktive Constra<strong>in</strong>t<br />

alle semantisch folgerbaren E<strong>in</strong>zel-Relationen herleiten kann.<br />

Wir sagen, <strong>der</strong> Kalkül ist wi<strong>der</strong>spruchs-vollständig, wenn er für jedes konjunktive Constra<strong>in</strong>t<br />

herausf<strong>in</strong>den kann, ob es wi<strong>der</strong>sprüchlich ist, <strong>in</strong>dem <strong>der</strong> Kalkül irgendwann <strong>die</strong><br />

atomare Formel 0 herleitet.<br />

Es stellen sich <strong>die</strong> folgenden Fragen:<br />

• Wie aufwändig ist <strong>die</strong> Berechnung des Abschlusses <strong>der</strong> Allenschen Relationen?<br />

• Ist <strong>die</strong> Berechnung herleitungs- bzw- wi<strong>der</strong>spruchs-vollständig? D.h. gibt es nicht<br />

doch noch nicht erkannte Relationsbeziehungen, <strong>die</strong> aus <strong>der</strong> Semantik <strong>der</strong> l<strong>in</strong>earen,<br />

reellen Zeitachse aus e<strong>in</strong>er vorgegebenen Formel folgen?<br />

• Was ist <strong>die</strong> Komplexität <strong>der</strong> Logik und <strong>der</strong> Herleitungsbeziehung, evtl. für e<strong>in</strong>geschränkte<br />

E<strong>in</strong>gabeformeln?<br />

• Wie kann man den Allenschen Kalkül für aussagenlogische Komb<strong>in</strong>ationen von Intervallformeln<br />

verwenden?<br />

6.4.1 Komplexität <strong>der</strong> Berechnung des Allenschen Abschlusses<br />

E<strong>in</strong> Vervollständigungsalgorithmus kann analog zur Berechnung des transitiven Abschlusses<br />

e<strong>in</strong>er Relation implementiert werden. <strong>Methoden</strong> des dynamischen Programmierens<br />

kann man dazu verwenden. Das ergibt e<strong>in</strong>en polynomiellen Aufwand zur Vervollständigung.<br />

Wir geben zwei Algorithmen an. Beide Algorithmen nehmen e<strong>in</strong> konjunktives Allensches<br />

Constra<strong>in</strong>t als E<strong>in</strong>gabe, wobei <strong>die</strong>ses bereits <strong>in</strong> Form e<strong>in</strong>es zweidimensionalen Arrays<br />

R <strong>der</strong> Größe n×n vorliegt, dass über <strong>die</strong> n Intervallnamen <strong>in</strong>diziert ist, d.h. <strong>die</strong> Constra<strong>in</strong>ts<br />

s<strong>in</strong>d alle von <strong>der</strong> Form A i R[i, j] A j . Nicht bekannte Relationen werden dementsprechend<br />

auf R gesetzt (für A i R[i, i] A i kann R[i, i] auch <strong>in</strong>itial auf ≡ gesetzt werden). Sobald<br />

<strong>in</strong> e<strong>in</strong>em E<strong>in</strong>trag <strong>die</strong> leere Menge hergeleitet wurde, kann <strong>der</strong> Algorithmus gestoppt<br />

werden, da <strong>der</strong> Constra<strong>in</strong>t unerfüllbar ist. Wir erwähnen <strong>die</strong>sen möglichen Abbruch nicht<br />

explizit <strong>in</strong> den folgenden Algorithmen.<br />

Der erste Algorithmus wendet <strong>die</strong> Transitivitätsregel solange an, bis sich nichts mehr<br />

än<strong>der</strong>t (d.h. e<strong>in</strong> Fixpunkt erreicht ist). Der Algorithmus ist ähnlich zum Floyd-Warshall-<br />

Algorithmus zur Berechnung <strong>der</strong> transitiven Hülle e<strong>in</strong>er Relation, hat jedoch (den notwendigen)<br />

zusätzlichen Fixpunkttest:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 205 Stand: 17. Januar 2013


6 Qualitatives zeitliches Schließen<br />

Algorithmus Allenscher Abschluss, Variante 1<br />

E<strong>in</strong>gabe: (n × n)-Array R, mit E<strong>in</strong>trägen R[i, j] ⊆ R<br />

Algorithmus:<br />

repeat<br />

change := False;<br />

for i := 1 to n do<br />

for j := 1 to n do<br />

for k := 1 to n do<br />

R ′ := R[i, j] ∩ (R[i, k] ◦ R[k, j]);<br />

if R[i, j] ≠ R ′ then<br />

R[i, j] := R;<br />

change := True;<br />

endif<br />

endfor<br />

endfor<br />

endfor<br />

until change=False<br />

Offensichtlich ist <strong>der</strong> Algorithmus korrekt, da er solange rechnet, bis sich nichts mehr<br />

än<strong>der</strong>t (also <strong>der</strong> Fixpunkt erreicht ist). Die Laufzeit des Algorithmus ist im Worst-Case<br />

O(n 5 ): Im schlimmsten Fall wird <strong>in</strong> den drei for-Schleifen nur e<strong>in</strong> e<strong>in</strong>ziger E<strong>in</strong>trag R[i, j]<br />

geän<strong>der</strong>t. Je<strong>der</strong> E<strong>in</strong>trag R[i, j] kann höchstens 13 Mal geän<strong>der</strong>t werden (Verkle<strong>in</strong>erung <strong>der</strong><br />

Relation R i,j für den Constra<strong>in</strong>t A i R i,j A j jedesmal um e<strong>in</strong> Element). Das ergibt O(n 2 )<br />

Durchläufe <strong>der</strong> repeat-Schleife. E<strong>in</strong> Durchlauf <strong>der</strong> repeat-Schleife verbraucht aufgrund<br />

<strong>der</strong> drei for-Schleifen O(n 3 ) Zeit, da alle an<strong>der</strong>en Operationen als konstant angenommen<br />

werden können.<br />

E<strong>in</strong> besserer Algorithmus ist:<br />

Stand: 17. Januar 2013 206 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


6.4 Untersuchungen zum Kalkül<br />

Algorithmus Allenscher Abschluss, Variante 2<br />

E<strong>in</strong>gabe: (n × n)-Array R, mit E<strong>in</strong>trägen R[i, j] ⊆ R<br />

Algorithmus:<br />

queue := {(i, k, j) | 1 ≤ i ≤ n, 1 ≤ k ≤ n, 1 ≤ j ≤ n};<br />

while queue ≠ ∅ do<br />

Wähle und entferne Tripel (i, k, j) aus queue;<br />

R ′ := R[i, j] ∩ (R[i, k] ◦ R[k, j]);<br />

if R[i, j] ≠ R ′ then<br />

R[i, j] := R;<br />

queue := queue ∪{(i, j, m) | 1 ≤ m ≤ n} ∪ {(m, i, j) | 1 ≤ m ≤ n}<br />

endif<br />

endwhile<br />

Die Korrekheit des Algorithmus ergibt sich daraus, dass bei e<strong>in</strong>er Än<strong>der</strong>ung des Werts<br />

R[i, j] wie<strong>der</strong> alle Nachbarn, <strong>der</strong>en Wert evtl. neu berechnet werden muss, <strong>in</strong> <strong>die</strong> Queue<br />

e<strong>in</strong>gefügt werden.<br />

Die Laufzeit des Algorithmus ist im Worst-Case O(n 3 ): Am Anfang enthält <strong>die</strong> Menge<br />

queue O(n 3 ) Tripel. Jedes R[i, j] kann maximal 13 mal verän<strong>der</strong>t werden. Bei e<strong>in</strong>er Än<strong>der</strong>ung<br />

an R[i, j] werden 2 ∗ n Tripel <strong>in</strong> queue e<strong>in</strong>gefügt. Da es nur n 2 viele R[i, j] gibt,<br />

werden <strong>in</strong>sgesamt maximal 13 ∗ 2 ∗ n ∗ n 2 = O(n 3 ) Tripel zu queue h<strong>in</strong>zugefügt. Also gibt<br />

es nicht mehr als O(n 3 ) Durchläufe <strong>der</strong> while-Schleife, von denen maximal O(n 2 ) Durchläufe<br />

O(n) Laufzeit verbrauchen und <strong>die</strong> restlichen O(n) <strong>in</strong> konstanter Laufzeit laufen.<br />

Das ergibt <strong>in</strong> <strong>der</strong> Summe e<strong>in</strong>e Laufzeit von O(n 3 ).<br />

6.4.2 Korrektheit<br />

Es gilt:<br />

Satz 6.4.1. Der Allensche Kalkül ist korrekt.<br />

Beweis. Die Korrekheit muss man mittels <strong>der</strong> Semantik nachweisen. Für <strong>die</strong> aussagenlogischen<br />

Umformungen ist <strong>die</strong>s offensichtlich.<br />

• A R 1 B ∧ A R 2 B ist äquivalent zu A (R 1 ∩ R 2 ) B:<br />

Sei R 1 = {r 1 , . . . , r k }, R 2 = {r ′ 1 , . . . , r′ k ′ }. Dann ist A R 1 B ∧ A R 2 B äquivalent zu<br />

∨ {(A ri B) ∧ (A r ′ i ′ B) | 1 ≤ i ≤ k, 1 ≤ i ′ ≤ k ′ }. Wenn man nun <strong>die</strong> Eigenschaft h<strong>in</strong>zunimmt,<br />

dass alle Basisrelationen echt disjunkt s<strong>in</strong>d, so sieht man, dass <strong>die</strong> Formel<br />

äquivalent zu ∨ {(A r i B) ∧ (A r ′ i ′ B) | 1 ≤ i ≤ k, 1 ≤ i ′ ≤ k ′ , r i = r ′ i ′ } ist, was gerade<br />

genau A (R 1 ∩ R 2 ) B entspricht.<br />

• A ∅ B und 0 s<strong>in</strong>d äquivalent, da für jede Interpretation I per Def<strong>in</strong>ition I(A∅B) = 0<br />

gilt.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 207 Stand: 17. Januar 2013


6 Qualitatives zeitliches Schließen<br />

• A R B ist äquivalent zu 1, da jede Interpretation I, <strong>die</strong> Intervalle I(A) und I(B)<br />

<strong>in</strong>terpretiert, und R alle möglichen Lagen abdeckt.<br />

• A R A ist äquivalent zu 0, wenn ≡∉ R: Jede Interpretation bildet I(A) e<strong>in</strong>deutig auf<br />

e<strong>in</strong> Intervall ab.<br />

• A R A ist äquivalent zu 1, wenn ≡∈ R: Jede Interpretation bildet I(A) e<strong>in</strong>deutig auf<br />

e<strong>in</strong> Intervall ab.<br />

• A R B ist äquivalent zu B ˘R A: Das haben wir bereits gezeigt (Satz 6.3.4).<br />

• Für <strong>die</strong> Transitivitätsregel, <strong>die</strong> A R 1 B ∧B R 2 C durch A R 1 B ∧B R 2 C ∧A R 1 ◦R 2 C<br />

ersetzt, kann man zunächst <strong>die</strong> Fälle untersuchen, <strong>in</strong> denen R 1 und R 2 genau<br />

e<strong>in</strong>e Basisrelation enthalten, d.h. man muss <strong>die</strong> Korrekheit <strong>der</strong> E<strong>in</strong>träge <strong>in</strong><br />

<strong>der</strong> 13 × 13-Matrix überprüfen (anhand <strong>der</strong> durch <strong>die</strong> Interpretation gegebenen<br />

Lagen <strong>der</strong> Intervalle auf <strong>der</strong> reellen Achse). Für mehrelementige Mengen:<br />

Sei A {r 1 , . . . , r k } B ∧ B {r 1 ′ , . . . , r′ k<br />

} C gegeben. Dies ist e<strong>in</strong>e Abkürzung für<br />

′<br />

(A r 1 B ∨ . . . ∨ A r k B) ∧ (B r 1 ′ C ∨ . . . ∨ B r′ k<br />

C). Ausmultiplizieren ergibt gerade<br />

∨ {(A r i B ∧ B r<br />

′ i ′ C) | 1 ≤ i ≤ k, 1 ≤ i ′ ≤ k ′ }. Nun können wir für jede<br />

′<br />

Konjunktion A r i B ∧ B r<br />

i ′ C <strong>die</strong> bereits als korrekt gezeigte Ersetzung durchführen.<br />

Das ergibt ∨ {(A r i B ∧ B r<br />

′ i ′ C ∧ A r ′ i ◦ r<br />

i ′ C) | 1 ≤ i ≤ k, 1 ≤ i ′ ≤ k ′ }. Nach<br />

′<br />

Umklammern und dem Rückgängigmachen des Ausmultiplizierens erhalten wir:<br />

A {r 1 , . . . , r k } B ∧ B {r 1 ′ , . . . , r′ k<br />

} C ∧ ∨ {(A r ′ i ◦ r<br />

i ′ C) | 1 ≤ i ≤ k, 1 ≤ i ′ ≤ k ′ }. Die<br />

′<br />

letzte Vero<strong>der</strong>ung entspricht genau <strong>der</strong> Def<strong>in</strong>ition von ◦ auf Mengen, d.h. wir dürfen<br />

umformen zu A {r 1 , . . . , r k } B ∧ B {r 1 ′ , . . . , r′ k<br />

} C ∧ A {r ′ 1 , . . . , r k } ◦ {r 1 ′ , . . . , r′ k<br />

} C. ′<br />

6.4.3 Partielle Vollständigkeit<br />

Der Allensche Kalkül ist vollständig <strong>in</strong> e<strong>in</strong>geschränktem S<strong>in</strong>n:<br />

Satz 6.4.2. S<strong>in</strong>d zwei Relationen A 1 R 1 B 1 ∧ A 2 R 2 B 2 gegeben, dann ermittelt <strong>der</strong> Allensche<br />

Kalkül alle Relationsbeziehungen, <strong>die</strong> daraus folgen.<br />

Man kann e<strong>in</strong>en Allenschen Constra<strong>in</strong>t als sogenanntes Constra<strong>in</strong>t-Netzwerk darstellen:<br />

Dabei werden <strong>die</strong> Intervallnamen als Knoten verwendet (pro Intervallname gibt es genau<br />

e<strong>in</strong>en Knoten mit dem Intervallnamen als Markierung). Die Beziehungen zwischen<br />

den Intervallen werden als gerichtete Kanten mit Markierung <strong>der</strong> entsprechenden Basisrelationen<br />

dargestellt. Satz 6.4.2 sagt dann gerade aus, dass das Constra<strong>in</strong>t-Netzwerk<br />

zum Allenschen Abschluss e<strong>in</strong>es Constra<strong>in</strong>ts Pfad-konsistent ist, was gerade bedeutet, dass<br />

für je drei Knoten A, B, C mit Kanten A R 1 B, B R 2 C und A R 3 C des Netzwerks<br />

stets gilt: Wenn es e<strong>in</strong>e Interpretation I gibt, <strong>die</strong> A R 3 C erfüllt, dann können wir stets<br />

auch <strong>die</strong> an<strong>der</strong>en Kanten A R 1 B und B R 2 C erfüllen, ohne <strong>die</strong> Interpretation für A<br />

Stand: 17. Januar 2013 208 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


6.5 Unvollständigkeiten des Allenschen Kalküls.<br />

und C zu verän<strong>der</strong>n, o<strong>der</strong> formaler: Wenn I(A) = [AA, AZ], I(C) = [CA, CZ], so dass<br />

I(A R 3 C) = 1, dann gibt es e<strong>in</strong>e Interpretation I ′ mit I ′ (A) = I(A), I ′ (C) = I(C) und<br />

I ′ (A R 1 B) = 1, I ′ (B R 2 C) = 1. Als Teilausschnitt des Constra<strong>in</strong>t-Netzwerks dargestellt:<br />

A<br />

R 3<br />

R 1 R<br />

B 2<br />

C<br />

Das <strong>der</strong> Allensche Abschluss <strong>die</strong> Pfadkonsistenz erfüllt ist klar, denn <strong>die</strong> Berechnung sichert<br />

gerade R 3 ⊆ R 1 ◦ R 2 zu.<br />

6.5 Unvollständigkeiten des Allenschen Kalküls.<br />

Lei<strong>der</strong> gilt:<br />

Theorem 6.5.1. Der Allensche Kalkül ist nicht herleitungs-vollständig.<br />

Beweis. Es genügt e<strong>in</strong> Gegenbeispiel anzugeben. Man benötigt vier Intervallkonstanten<br />

A, B, C, D. Die Beziehungen s<strong>in</strong>d:<br />

D {o} B, D {s, m} C, D {s, m} A, A {d, ˘d} B, C {d, ˘d} B<br />

Mit <strong>der</strong> kompositionellen Vervollständigung (nach Umdrehen) kann man aus<br />

C {˘s, ˘m} D, D {s, m} A <strong>die</strong> Relation C {s, ˘s, ≡, o, ŏ, d, ˘d, f, ˘f} A schließen. Aus<br />

A {d, ˘d} B, B {d, ˘d} C kann man nur schließen, dass alles möglich ist. Der Schnitt ergibt<br />

somit C {s, ˘s, ≡, o, ŏ, d, ˘d, f, ˘f} A. O<strong>der</strong> an<strong>der</strong>s ausgedrückt: Für das Allensche Constra<strong>in</strong>t:<br />

D {o} B ∧ D {s, m} C ∧ D {s, m} A ∧ A {d, ˘d} B ∧ C {d, ˘d} B<br />

ist <strong>der</strong> Allensche Abschluss:<br />

D {o} B ∧ D {s, m} C ∧ D {s, m} A ∧ A {d, ˘d} B ∧ C {d, ˘d} B ∧ C {s, ˘s, ≡, o, ŏ, d, ˘d, f, ˘f} A<br />

Betrachtet man aber genauer <strong>die</strong> Möglichkeiten auf <strong>der</strong> reellen Achse, dann sieht man,<br />

dass <strong>in</strong> <strong>die</strong>sem speziellen Fall <strong>die</strong> Relation C {f, ˘f, o, ŏ} A nicht möglich ist. Die Lage von<br />

B zu D ist e<strong>in</strong>deutig. Wir betrachten daher <strong>die</strong> Möglichkeiten wie A zu D und C zu D<br />

liegen können. Da ergibt vier Fälle: (1) D s C und D s A; (2) D m C und D s A; (3) D s C<br />

und D m A; (4) D m C und D m A. Dabei muss man noch <strong>die</strong> Bed<strong>in</strong>gungen zwischen A zu<br />

B und C zu B beachten (<strong>die</strong>se werden jedesmal e<strong>in</strong>deutig).<br />

Die vier Fälle als Bil<strong>der</strong> dargestellt s<strong>in</strong>d:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 209 Stand: 17. Januar 2013


s, m<br />

6 Qualitatives zeitliches Schließen<br />

D<br />

D<br />

A<br />

B<br />

C<br />

B<br />

A<br />

C<br />

Fall (1): D s C und D s A<br />

D<br />

B<br />

C<br />

A<br />

Fall (2): D m C und D s A<br />

D<br />

B<br />

C<br />

A<br />

Fall (3): D s C und D m A<br />

Fall (4): D m C und D m A<br />

Die Bil<strong>der</strong> zeigen: In Fall (1) ist C {s, ˘s ≡} A möglich, <strong>in</strong> Fall (2) nur C d A, <strong>in</strong> Fall (3) C ˘d A<br />

und <strong>in</strong> Fall 4 ist nur C {s, ˘s, ≡} A möglich. D.h. <strong>die</strong> Relation C {f, ˘f, o, ŏ} A ist niemals<br />

möglich, obwohl <strong>der</strong> Allensche Abschluss <strong>die</strong>se als Möglichkeiten herleitet.<br />

Damit ist <strong>die</strong> Allensche Vervollständigung bezüglich <strong>der</strong> Semantik e<strong>in</strong>er reellen<br />

Zeitachse nicht vollständig. Es können nicht alle Relationen exakt hergeleitet werden.<br />

Der Allensche Kalkül kann damit auch nicht immer erkennen, ob e<strong>in</strong>e e<strong>in</strong>gegebene<br />

Menge von Relationen <strong>in</strong>konsistent ist.<br />

Satz 6.5.2. Der Allensche Kalkül ist nicht wi<strong>der</strong>legungsvollständig.<br />

Beweis. E<strong>in</strong> Gegenbeispiel kann man durch Abwandlung des Gegenbeispiels zur Vollständigkeit<br />

gew<strong>in</strong>nen, man fügt <strong>die</strong> Relation A {f, ˘f} C h<strong>in</strong>zu, d.h. man erhält das Constra<strong>in</strong>tnetzwerk:<br />

D<br />

o<br />

B<br />

s, m<br />

d, ˘d<br />

d, ˘d<br />

A<br />

f, ˘f<br />

C<br />

Man sieht, dass <strong>die</strong> Allensche Vervollständigung hier ke<strong>in</strong>e weiteren Erkenntnisse<br />

br<strong>in</strong>gt: Man muss 12 Möglichkeiten <strong>der</strong> Komposition prüfen. Jede ergibt nur allgeme<strong>in</strong>ere<br />

Bed<strong>in</strong>gungen als <strong>die</strong> schon vorhandenen. Somit kann <strong>der</strong> Kalkül nichts Neues schließen.<br />

Stand: 17. Januar 2013 210 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


6.6 E<strong>in</strong>ge Analysen zur Implementierungen<br />

Insbeson<strong>der</strong>e f<strong>in</strong>det er ke<strong>in</strong>en Wi<strong>der</strong>spruch, obwohl <strong>die</strong> Menge <strong>der</strong> Constra<strong>in</strong>ts wi<strong>der</strong>sprüchlich<br />

ist.<br />

Bemerkung 6.5.3. Man kann sich bei Anfragen an den Allen-Kalkül nur darauf verlassen, dass<br />

<strong>die</strong> Vervollständigung richtig ist, aber evtl. nicht optimal. Wenn man <strong>die</strong> Frage stellt: Ist das Constra<strong>in</strong>t<br />

C wi<strong>der</strong>sprüchlich, so kann man sich nur bei „JA“ (d.h. Herleitung <strong>der</strong> 0) auf <strong>die</strong> Antwort<br />

verlassen, aber micht bei „NEIN“. Umgekehrt heisst das auch, dass man sich bei <strong>der</strong> Frage nach<br />

<strong>der</strong> Erfüllbarkeit dementsprechend nur auf <strong>die</strong> Antwort „NEIN“ verlassen kann.<br />

6.6 E<strong>in</strong>ge Analysen zur Implementierungen<br />

E<strong>in</strong> Allensches Constra<strong>in</strong>t kann man versuchen vollständig auf Erfüllbarkeit bzw Unerfülllbarkeit<br />

zu testen, <strong>in</strong>dem man Fallunterscheidungen macht.<br />

Wir schauen genauer auf Allensche Constra<strong>in</strong>ts, wobei wir annehmen, dass <strong>die</strong>se normalisiert<br />

s<strong>in</strong>d, d.h. zwischen zwei Intervallkonstanten gibt es nur e<strong>in</strong> Constra<strong>in</strong>t.<br />

Def<strong>in</strong>ition 6.6.1. E<strong>in</strong> Allensches Constra<strong>in</strong>t nennt man e<strong>in</strong>deutig, wenn für alle Paare A, B<br />

von Intervallkonstanten gilt: Das Constra<strong>in</strong>t enthält genau e<strong>in</strong>e Beziehung A r B, wobei r e<strong>in</strong>e<br />

<strong>der</strong> dreizehn Basisrelationen ist.<br />

Es gilt:<br />

Satz 6.6.2. Der Allensche Abschluss e<strong>in</strong>es e<strong>in</strong>deutigen Allenschen Constra<strong>in</strong>ts F ist entwe<strong>der</strong> 0,<br />

o<strong>der</strong> wie<strong>der</strong>um F .<br />

Beweis. Es reicht zu zeigen, dass <strong>die</strong> Anwendung <strong>der</strong> Transitivitätsregel nur e<strong>in</strong>deutige<br />

Relationen erzeugen kann (nach Anwendung weiterer Regeln): Seien A r 1 B, B r 2 C<br />

Teilformeln des e<strong>in</strong>deutigen Allenschen Constra<strong>in</strong>t, dann muss es bereits e<strong>in</strong>e Beziehung<br />

A r 3 C geben (sonst wäre das Constra<strong>in</strong>t nicht e<strong>in</strong>deutig). Die Transitivitätsregel ergibt:<br />

A r 1 B ∧ B r 2 C ∧ A r 3 C → A r 1 B ∧ B r 2 C ∧ A (r 1 ◦ r 2 ) C ∧ A r 3 C.<br />

Anschließend können wir e<strong>in</strong>e weitere Regel anwenden:<br />

A r 1 B ∧ B r 2 C ∧ A (r 1 ◦ r 2 ) C ∧ A r 3 C → A r 1 B ∧ B r 2 C ∧ A (r 1 ◦ r 2 ) ∩ {r 3 } C<br />

. Da <strong>der</strong> Schnitt (r 1 ◦ r 2 ) ∩ {r 3 } entwe<strong>der</strong> r 3 o<strong>der</strong> ∅ (Unerfüllbarkeit) ergeben muss, folgt<br />

<strong>die</strong> Aussage.<br />

Def<strong>in</strong>ition 6.6.3. Zu jedem Allenschen Constra<strong>in</strong>t C kann man <strong>die</strong> Menge aller zugehörigen<br />

e<strong>in</strong>deutigen Allenschen Constra<strong>in</strong>ts D def<strong>in</strong>ieren, wobei gelten muss: Wenn A r B <strong>in</strong> D vorkommt<br />

und A R B <strong>in</strong> C, dann gilt r ∈ R.<br />

Lemma 6.6.4. E<strong>in</strong> Allensches Constra<strong>in</strong>t ist erfüllbar, gdw., es e<strong>in</strong> zugehöriges e<strong>in</strong>deutiges Constra<strong>in</strong>t<br />

gibt, das erfüllbar ist.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 211 Stand: 17. Januar 2013


6 Qualitatives zeitliches Schließen<br />

Beweis. Das ist klar, da <strong>die</strong> E<strong>in</strong>zelconstra<strong>in</strong>ts ja Disjunktionen s<strong>in</strong>d, und bei e<strong>in</strong>er erfüllenden<br />

Belegung genau e<strong>in</strong>e <strong>der</strong> Relationen <strong>in</strong> <strong>der</strong> Relationsmenge gilt.<br />

Satz 6.6.5. E<strong>in</strong> e<strong>in</strong>deutiges Allensches Constra<strong>in</strong>t ist erfüllbar, gdw. <strong>der</strong> Allensche Kalkül bei Vervollständigung<br />

das Constra<strong>in</strong>t nicht verän<strong>der</strong>t, d.h. wenn es e<strong>in</strong> Fixpunkt ist.<br />

Beweis. Wenn <strong>der</strong> Kalkül e<strong>in</strong>en Wi<strong>der</strong>spruch entdeckt, dann ist das Constra<strong>in</strong>t natürlich<br />

wi<strong>der</strong>sprüchlich. Für den Fall, dass <strong>der</strong> Kalkül ke<strong>in</strong>en Wi<strong>der</strong>spruch entdeckt, kann man<br />

zeigen, dass e<strong>in</strong>e totale Ordnung <strong>der</strong> Intervallenden möglich ist. E<strong>in</strong>en entsprechenden<br />

Beweis f<strong>in</strong>det man bspw. <strong>in</strong> (Valdés-Pérez, 1987)<br />

Daraus ergibt sich e<strong>in</strong> (im worst-case exponentieller) Algorithmus, <strong>der</strong> <strong>die</strong> Erfüllbarkeit<br />

e<strong>in</strong>es Allenschen Constra<strong>in</strong>ts testet:<br />

• Sei C e<strong>in</strong> Allensches Constra<strong>in</strong>t.<br />

• Sei D <strong>die</strong> Menge aller e<strong>in</strong>deutigen Allenschen Constra<strong>in</strong>ts zu C.<br />

• Berechne den Allenschen Abschluss jedes Constra<strong>in</strong>ts C ′ ∈ D.<br />

• Wenn dabei ke<strong>in</strong> Wi<strong>der</strong>spruch auftritt, ist C erfüllbar, an<strong>der</strong>enfalls C wi<strong>der</strong>sprüchlich.<br />

Die durchschnittliche Verzweigungsrate <strong>die</strong>ses Algorithmus ist 6.5, da man im schlimmsten<br />

Fall pro Beziehung A R B dreizehn Fallunterscheidungen machen muss, und im besten<br />

Fall R e<strong>in</strong>elementig ist.<br />

6.7 Komplexität<br />

Komplexität des Problems und des Algorithmus s<strong>in</strong>d zu unterscheiden:<br />

Die Komplexität des Problems ist schlechter, denn es gilt:<br />

Satz 6.7.1. Die Erfüllbarkeit e<strong>in</strong>er Konjunktion von Allenschen Relationen ist N P-vollständig,<br />

bzw. <strong>die</strong> Erfüllbarkeit e<strong>in</strong>es konjunktiven Allenschen Constra<strong>in</strong>ts ist N P-vollständig.<br />

Beweis. Es ist leicht e<strong>in</strong>zusehen, dass <strong>die</strong> Erfüllbarkeit e<strong>in</strong>es Allenschen Constra<strong>in</strong>ts <strong>in</strong> N P<br />

ist. Man muss nur e<strong>in</strong> l<strong>in</strong>eare Reihenfolge aller Werte X a , X e angeben (bzw. raten), wobei<br />

X e<strong>in</strong>e Intervallkonstante ist und X a <strong>der</strong> Anfang und X e das Ende. Der Test, ob <strong>die</strong>se<br />

l<strong>in</strong>eare Reihenfolge das Constra<strong>in</strong>t erfüllt, ist dann polynomiell.<br />

Zum Beweis <strong>der</strong> N P-härte nehme das N P-vollständige Problem <strong>der</strong> Drei-Färbbarkeit<br />

e<strong>in</strong>es Graphen:<br />

Gegeben e<strong>in</strong> Graph mit Knotenmenge N und Kantenmenge K. Gibt es e<strong>in</strong>e<br />

Färbung <strong>der</strong> Knoten mit drei Farben, so dass benachbarte Knoten verschiedene<br />

Farbe haben?<br />

Stand: 17. Januar 2013 212 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


6.7 Komplexität<br />

Sei e<strong>in</strong>e Instanz gegeben, d.h. e<strong>in</strong> Graph (N, K). Dann erzeuge e<strong>in</strong> Allensches Constra<strong>in</strong>t:<br />

Seien A 1 , A 2 , A 3 Intervallkonstanten. Für jeden Knoten v i ∈ N erzeuge e<strong>in</strong>e Intervallkonstante.<br />

B i . Erzeuge <strong>die</strong> folgenden Allenschen Relationen (d.h. verunde sie zu e<strong>in</strong>em<br />

konjunktiven Allenschen Constra<strong>in</strong>t):<br />

A 1 m A 2<br />

A 2 m A 3<br />

∀v i ∈ N : B i {m, ≡, ˘m} A 2<br />

∀(v i , v j ) ∈ K : B i {m, ˘m, ≺, ≻} B j<br />

Die Idee dabei ist gerade: Die Lage jedes B i zu A 2 bestimmt <strong>die</strong> Farbe des Knotens v i .<br />

Das kann man sich klar machen, <strong>in</strong>dem man <strong>die</strong> Constra<strong>in</strong>ts als Bild veranschaulicht:<br />

Die ersten beiden Constra<strong>in</strong>ts ergeben gerade<br />

A 1 A 2 A 3<br />

Die Constra<strong>in</strong>ts für <strong>die</strong> Knoten ergeben, dass B i entwe<strong>der</strong> mit A 2 übere<strong>in</strong>stimmt<br />

(B i ≡ A 2 ), o<strong>der</strong> direkt l<strong>in</strong>ks davon (B i m A 2 , überschneidend mit A 1 ) o<strong>der</strong> direkt rechts<br />

davon (B i ˘m A 2 , überschneidend mit A 3 ) liegt:<br />

A 1 A 2 A 3<br />

B i<br />

B i<br />

B i<br />

Die Constra<strong>in</strong>ts für <strong>die</strong> Kanten ergeben, dass <strong>die</strong> Intervalle B i , B j ke<strong>in</strong>e Überschneidungen<br />

haben:<br />

B j<br />

B i<br />

B j<br />

Nun ist zu zeigen: Der Graph ist dreifärbbar, gdw. <strong>die</strong> Allenschen Relationen erfüllbar<br />

s<strong>in</strong>d. Hierfür reicht <strong>die</strong> Zuordnung:<br />

• v i hat Farbe 2 gdw. B i ≡ A 2<br />

• v i hat Farbe 1 gdw. B i m A 2<br />

• v i hat Farbe 3 gdw. B i ˘m A 2<br />

Diese Übersetzung kann <strong>in</strong> polynomieller Zeit abhängig von <strong>der</strong> Größe des Graphen<br />

gemacht werden. Diese Übersetzung zeigt <strong>die</strong> N P-Härte <strong>der</strong> Allenschen Constra<strong>in</strong>ts.<br />

Damit ist <strong>die</strong> Erfüllbarkeit von Allenschen Constra<strong>in</strong>ts N P-vollständig.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 213 Stand: 17. Januar 2013


6 Qualitatives zeitliches Schließen<br />

Als Schlussfolgerung kann man sagen, dass e<strong>in</strong> vollständiger Algorithmus nach aktuellem<br />

Wissenstand m<strong>in</strong>destens exponentiell se<strong>in</strong> muss, während <strong>der</strong> polynomiell Allensche<br />

Vervollständigungs-Algorithmus unvollständig se<strong>in</strong> muss.<br />

6.8 E<strong>in</strong>e polynomielle und vollständige Variante<br />

Man kann Varianten und E<strong>in</strong>schränkungen <strong>der</strong> Allenschen Constra<strong>in</strong>ts suchen, <strong>die</strong> e<strong>in</strong>en<br />

sowohl vollständigen als auch polynomiellen Erfüllbarkeitstest erlauben. E<strong>in</strong>e solche Variante<br />

haben wir bereits gesehen: Für e<strong>in</strong>deutige Allensche Constra<strong>in</strong>ts ist <strong>der</strong> Allensche<br />

Kalkül vollständig.<br />

E<strong>in</strong>e Variante ist <strong>die</strong> Menge <strong>der</strong> Relationen, <strong>die</strong> man durch e<strong>in</strong>e Konjunktion von atomaren<br />

Ungleichungen <strong>der</strong> Form x < y o<strong>der</strong> x = y repräsentieren kann, wobei x, y Endpunkte<br />

von Intervallen s<strong>in</strong>d. Hier kommt es darauf an, dass man ke<strong>in</strong>e Disjunktionen hat, <strong>die</strong> e<strong>in</strong>e<br />

Fallunterscheidung erzw<strong>in</strong>gen.<br />

E<strong>in</strong>en passenden Satz von Relationen gibt es:<br />

Alle Basisrelationen, {d, o, s}, und {ŏ, f, d} und <strong>der</strong>en Konverse. d.h. {˘d, ŏ, ˘s}, und<br />

{o, ˘f, ˘d}. Beachte, dass man noch weitere dazu nehmen kann.<br />

Die Relation A{d, o, s}B z.B. kann man als Ungleichung über den Endpunkten ausdrücken:<br />

Wenn A = [AA, AZ], B = [BA, BZ], dann entspricht obige Relation <strong>der</strong> Konjunktion<br />

<strong>der</strong> Ungleichungen: AA < AZ, BA < BZ, AZ < BZ, BA < AZ<br />

E<strong>in</strong>e Konjunktion von solchen Relationsbeziehungen ergibt <strong>in</strong> <strong>der</strong> Summe e<strong>in</strong> Constra<strong>in</strong>t,<br />

das e<strong>in</strong>e Konjunktion von Ungleichungen <strong>der</strong> Endpunkte von Intervallen ist. Diese<br />

Konjunktion kann man mittels transitivem Abschluss über <strong>die</strong> Endpunkte von Intervallen<br />

vervollständigen. Dies geht <strong>in</strong> polynomieller Zeit. Wenn man e<strong>in</strong>e Relation <strong>der</strong> Form<br />

X < X erzeugt hat, dann ist das Constra<strong>in</strong>t unerfüllbar. Ansonsten ist er erfüllbar, denn<br />

<strong>die</strong> Endpunkte kann man mit topologischem Sortieren <strong>in</strong> e<strong>in</strong>e l<strong>in</strong>eare Reihenfolge br<strong>in</strong>gen.<br />

Insgesamt hat man gezeigt, dass <strong>der</strong> so def<strong>in</strong>ierte Kalkül auf den e<strong>in</strong>geschränkten Constra<strong>in</strong>ts<br />

vollständig und polynomiell ist. Es gilt sogar, dass <strong>der</strong> Allensche Kalkül selbst auf<br />

<strong>die</strong>sen Constra<strong>in</strong>ts vollständig ist (siehe z.B. (Nebel & Bürckert, 1995)).<br />

Der H<strong>in</strong>tergrund <strong>der</strong> speziellen Klasse von Allenschen Constra<strong>in</strong>ts ist, dass sich <strong>die</strong>se<br />

Klasse als Grund-Hornklauseln darstellen lassen. Hornklauseln s<strong>in</strong>d Klauseln, <strong>die</strong> maximal<br />

e<strong>in</strong> positives Literal haben. Hierbei ist e<strong>in</strong> Literal positiv, wenn es e<strong>in</strong> unnegiertes<br />

Atom ist.<br />

Für aussagenlogische Hornklauselmengen und auch für Grund-Hornklauselmengen<br />

gilt, dass <strong>der</strong>en Erfüllbarkeit <strong>in</strong> polynomieller Zeit testbar ist.<br />

A<br />

B<br />

Stand: 17. Januar 2013 214 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


6.8 E<strong>in</strong>e polynomielle und vollständige Variante<br />

Die notwendige Menge von Axiomen und Fakten ist <strong>in</strong> dem e<strong>in</strong>geschränkten Fall e<strong>in</strong>e<br />

Hornklauselmenge,:<br />

Man hat Fakten <strong>in</strong> <strong>der</strong> Form a < b und c = d, wobei a, b, c, d unbekannte Konstanten s<strong>in</strong>d.<br />

Es gibt auch Hornklauseln, <strong>die</strong> von <strong>der</strong> Symmetrie und Transitivität stammen:<br />

x < y ∧ y < z ⇒ x < z<br />

x = y ∧ y = z ⇒ x = z<br />

x = y ⇒ y = x<br />

x < y ∧ y = z ⇒ x < z<br />

x = y ∧ y < z ⇒ x < z<br />

Tatsächlich kann man weitere Allensche Constra<strong>in</strong>ts zulassen, und behält <strong>die</strong> Vollständigkeit<br />

des Allen-Kalküls: Dies ist genau <strong>die</strong> Klasse <strong>der</strong> Constra<strong>in</strong>ts <strong>der</strong>en Übersetzung <strong>in</strong><br />

Constra<strong>in</strong>ts über Endpunkten Hornklauseln ausschließlich mit Literalen a ≤ b, a = b und<br />

¬(a = b) erzeugt (siehe (Nebel & Bürckert, 1995)). E<strong>in</strong> <strong>in</strong>teressanter Aspekt dabei ist, dass<br />

von den 2 13 = 8192 möglichen Relationen, 868 Relationen <strong>die</strong>se Eigenschaft aufweisen.<br />

Für den vollständigen (aber exponentiellen) Algorithmus für beliebige Allensche Constra<strong>in</strong>ts,<br />

kann man <strong>die</strong>s ausnutzen, <strong>in</strong>dem man nicht <strong>in</strong> e<strong>in</strong>deutige Relationen, son<strong>der</strong>n<br />

<strong>in</strong> Relationen entsprechend <strong>die</strong>ser Klasse Fallunterscheidungen durchführt, <strong>die</strong> durchschnittliche<br />

Verzweigungsrate kann dadurch von 6,5 auf 2,533 gesenkt werden (Nebel,<br />

1997).<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 215 Stand: 28. Januar 2013


7<br />

Konzeptbeschreibungssprachen<br />

In <strong>die</strong>sem Kapitel behandeln wir Ansätze zur Wissensrepräsentation und Wissensverarbeitung.<br />

Der Schwerpunkt liegt dabei auf sogenannten Beschreibungslogiken (Description<br />

Logics). Diese haben <strong>in</strong>sbeson<strong>der</strong>e den Vorteil, dass sie e<strong>in</strong>e e<strong>in</strong>deutig def<strong>in</strong>ierte Semantik<br />

(<strong>in</strong>nerhalb <strong>der</strong> Prädikatenlogik) besitzen und viele Inferenzmechanismen und -<br />

algorithmen existieren. Zunächst werden wir jedoch kurz auf <strong>die</strong> historische Entwicklung<br />

e<strong>in</strong>gehen, und vorhergehende Ansätze <strong>der</strong> Semantischen Netze und sogenannter Frames<br />

betrachten. Im Anschluss beschäftigen wir uns e<strong>in</strong>gehend mit den Beschreibungslogiken.<br />

7.1 Ursprünge<br />

In <strong>die</strong>sem Abschnitt stellen wir kurz <strong>die</strong> (älteren) Formalismen <strong>der</strong> Semantischen Netze<br />

und Frames vor, aus denen (und <strong>der</strong>en Nachteile) <strong>die</strong> Beschreibungslogiken entwickelt.<br />

Wir geben hier ke<strong>in</strong>en umfassenden Überblick über <strong>die</strong>se Ansätze (dafür sei auf entsprechende<br />

Literatur verwiesen), son<strong>der</strong>n <strong>der</strong> Abschnitt ist eher als kurzer E<strong>in</strong>blick zu sehen.<br />

7.1.1 Semantische Netze<br />

Semantische Netze s<strong>in</strong>d e<strong>in</strong> Formalismus zur Darstellung von Unterbeziehungen und<br />

Enthaltensse<strong>in</strong>sbeziehungen mittels (gerichteten) Graphen. Dabei s<strong>in</strong>d<br />

Knoten markiert mit Konzepten, Eigenschaften, (tlw. auch Individuen)<br />

Gerichtete Kanten (L<strong>in</strong>ks) geben Beziehungen (Relationen) zwischen Konzepten an.<br />

Wesentliche Kanten s<strong>in</strong>d Instanzbeziehungen (IS-A), Unterkonzeptbeziehungen (A-<br />

KIND-OF, AKO), Eigenschaften (Prop), Part-of, connected-to, ...<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 Stand: 28. Januar 2013


7.1 Ursprünge<br />

E<strong>in</strong> Beispiel ist das folgende Netz zu Tieren:<br />

schwarz<br />

IS-A<br />

Farbe<br />

has-prop<br />

Tier<br />

AKO<br />

Hund<br />

AKO<br />

Pferd<br />

AKO<br />

Collie<br />

IS-A<br />

Fury<br />

IS-A<br />

Lassie<br />

IS-A<br />

IS-A<br />

Fernsehstar<br />

Allerd<strong>in</strong>gs gibt es viele verschiedene Möglichkeiten und Notationen, je nach festgelegtem<br />

Formalismen.<br />

Beson<strong>der</strong>heiten <strong>der</strong> Semantischen Netze s<strong>in</strong>d:<br />

• Repräsentieren von Beziehungen und Eigenschaften ist möglich.<br />

• Vererbung von Eigenschaften über AKO-l<strong>in</strong>ks und über IS-A l<strong>in</strong>ks, je nach Eigenschaft.<br />

Man kann mit semantischen Netzen auch logische Formeln darstellen: UND-<br />

Verzweigungen, ODER-Verzweigungen, Quantifizierte Ausdrückebei letzteren entsteht<br />

e<strong>in</strong> Problem <strong>der</strong> E<strong>in</strong>deutigkeit und des B<strong>in</strong>dungsbereichs.<br />

7.1.1.1 Operationen auf semantischen Netzen:<br />

• Anfragen <strong>der</strong> Form „Was kann fliegen?“können mittels Match<strong>in</strong>g von Teilgraphen<br />

und Beschreibungen bzw. Angaben von Teilnetzen beantwortet werden. D.h. <strong>die</strong> Suche<br />

orientiert sich an bestimmten Knoten o<strong>der</strong> Kanten o<strong>der</strong> an ganzen Unterstrukturen.<br />

• Verän<strong>der</strong>ung: E<strong>in</strong>tragung, Entfernen, Än<strong>der</strong>n von Kanten und Knoten.<br />

• Operation: Suche nach Verb<strong>in</strong>dungswegen im Netz.<br />

Bemerkung 7.1.1. Probleme <strong>der</strong> semantischen Netze:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 217 Stand: 28. Januar 2013


7 Konzeptbeschreibungssprachen<br />

• Die Semantik war nur ungenau def<strong>in</strong>iert.<br />

• Jedes Programm arbeitete auf e<strong>in</strong>er an<strong>der</strong>en semantischen Basis. z.B. was bedeuten jeweils<br />

zirkuläre L<strong>in</strong>ks ?<br />

• Darstellung als Graph wird sehr unübersichtlich für große Netze.<br />

7.1.2 Frames<br />

Frames s<strong>in</strong>d e<strong>in</strong> Konzept <strong>in</strong>nerhalb von Repräsentationssprachen, zunächst ohne prozedurale<br />

Komponente. Die Grundlagen dazu stammen aus <strong>der</strong> Kognitionsforschung (M<strong>in</strong>sky,<br />

1975) und den Scripts (Schenk & Abelson, 1975). Die Frame-Sprachen haben e<strong>in</strong>e Analogie<br />

zu Klassen <strong>in</strong> Objektorientierten Programmiersprachen, allerd<strong>in</strong>gs ist <strong>die</strong> Absicht von<br />

Frames nicht e<strong>in</strong> Programm zu strukturieren, son<strong>der</strong>n e<strong>in</strong>en (Wissens-)Bereich strukturiert<br />

darzustellen.<br />

• Frames beschreiben Klassen o<strong>der</strong> Instanzen<br />

– Namen<br />

– Oberklasse(e)<br />

– Eigenschaften (Slots)<br />

• Vererbung von Eigenschaften (Slot-Werten) von Oberklassen auf Unterklassen<br />

• Slot:<br />

– Klasse (Wertebereich)<br />

– Defaultwerte<br />

– generische Werte (gilt für alle Instanzen)<br />

– Bed<strong>in</strong>gungen (z.B. Wertebereichse<strong>in</strong>schränkungen)<br />

– Prozedurale Zusätze (z.B. Dämonen, <strong>die</strong> bei E<strong>in</strong>tragung e<strong>in</strong>es Slotwertes aktiv<br />

werden)<br />

Dies ergibt e<strong>in</strong>e implizite Klassenhierarchie (sog. Prototypen). Zum Beispiel:<br />

Vogel (Oberklasse: Wirbeltiere)<br />

(Farbe: Farbe , Gewicht: Zahl, kann-fliegen: Bool, ...<br />

#Be<strong>in</strong>e: 2)<br />

grüne-Vögel (Oberklasse: Vogel)<br />

(Farbe:grün)<br />

Bemerkung 7.1.2. Diese Darstellung hat e<strong>in</strong>ige <strong>in</strong>härente Probleme zu lösen:<br />

• multiple Vererbung<br />

• semantische Unterscheidung: Prototyp / <strong>in</strong>dividuelles Objekt<br />

Stand: 28. Januar 2013 218 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.2 Attributive Konzeptbeschreibungssprachen (Description Logic)<br />

• logische Operatoren<br />

• Semantik von Defaults und überschriebenen Defaults<br />

7.2 Attributive Konzeptbeschreibungssprachen (Description Logic)<br />

Wir betrachten im folgenden e<strong>in</strong>e Sprachfamilie, <strong>die</strong> man als Nachfolger von KL-ONE<br />

sehen kann. Empfehlenswert als sehr guter Überblick ist das Handbuch (Baa<strong>der</strong> et al.,<br />

2010) und zur Komplexität <strong>der</strong> Artikel (Don<strong>in</strong>i et al., 1997).<br />

Man nennt <strong>die</strong> Konzeptbeschreibungssprachen auch Term<strong>in</strong>ologische Sprachen. Sie haben<br />

sich entwickelt aus e<strong>in</strong>er Sprache KL-ONE (Brachman, ca. 1980), <strong>die</strong> zur Repräsentation<br />

und Verarbeitung <strong>der</strong> Semantik von natürlichsprachlichen Ausdrücken entwickelt<br />

wurde. Es gibt ähnliche Strukturen bei <strong>der</strong> automatischen Verarbeitung <strong>der</strong> Syntax von<br />

natürlichsprachlichen Ausdrücken: Features (Attribute, bzw. Merkmalsstrukturen) (siehe<br />

Shieber: unification grammars).<br />

Man kann <strong>die</strong> Konzeptbeschreibungssprachen als Weiterentwicklung von semantischen<br />

Netzen und Frames sehen, wobei sie den Vorteil e<strong>in</strong>er e<strong>in</strong>deutigen und deklarativ<br />

def<strong>in</strong>ierten Semantik haben und nicht zu mächtige Konstrukte (wie z.B. Prozeduren)<br />

zulassen.<br />

Neuere Entwicklungen s<strong>in</strong>d (relativ schnelle) und vollständige Schlussfolgerungsmechanismen,<br />

Erweiterung <strong>in</strong> viele Richtungen wie Zeitrepräsentation, Komb<strong>in</strong>ation mit an<strong>der</strong>en<br />

Formalismen.<br />

E<strong>in</strong> auf Beschreibungslogik basierendes Wissensverarbeitungssystem muss Möglichkeiten<br />

bieten, <strong>die</strong> Wissensbasis darzustellen und zu verän<strong>der</strong>n, sowie neue Schlüsse mithilfe<br />

von Inferenzmechanismen aufgrund <strong>der</strong> Wissenbasis zu ziehen.<br />

Die Wissensbasis besteht dabei aus den beiden Komponenten T-Box und A-Box. Die<br />

T-Box legt Term<strong>in</strong>ologie des Anwendungsbereichs fest, d.h. das Vokabular, das verwendet<br />

werden soll. Die A-Box legt Annahmen (Assertions) über <strong>die</strong> Individuen (unter Verwendung<br />

<strong>der</strong> <strong>in</strong> <strong>der</strong> T-Box gegebenen Term<strong>in</strong>ologie) fest. Verglichen mit Datenbanksystemen,<br />

legt <strong>die</strong> T-Box das Datenbankschema fest, und <strong>die</strong> A-Box <strong>die</strong> eigentlichen Daten.<br />

Das Vokabular <strong>der</strong> T-Box besteht aus Konzepten und Rollen. Konzepte repräsentieren<br />

dabei Menge von Individuen, Rollen stehen für b<strong>in</strong>äre Relationen zwischen Individuen.<br />

Atomare Konzepte und atomare Rollen s<strong>in</strong>d nur Bezeichner, d.h. sie werden durch ihren<br />

Namen repräsentiert und später semantisch als Mengen bzw. Relationen <strong>in</strong>terpretiert. Neben<br />

atomaren Konzepten und Rollen gibt es <strong>in</strong> allen Beschreibungslogiken Konstrukte,<br />

um komplexe Beschreibungen von Konzepten und Rollen auszudrücken (<strong>die</strong>s s<strong>in</strong>d Formeln,<br />

<strong>die</strong> als Atome dann gerade atomare Konzepte und Rollen verwenden). Innerhalb<br />

<strong>der</strong> T-Box werden <strong>die</strong>se komplexen Konzepte und Rollen def<strong>in</strong>iert und mit neuen Namen<br />

versehen. D.h. im Grunde besteht <strong>die</strong> T-Box aus atomaren Bezeichnern und def<strong>in</strong>ierten<br />

Namen.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 219 Stand: 28. Januar 2013


7 Konzeptbeschreibungssprachen<br />

Je nach verfügbaren Konstrukten zur Konstruktion von komplexen Konzepten und Rollen<br />

werden <strong>die</strong> verschiedenen Beschreibungslogiken unterschieden. Im Wesentlich gibt es<br />

hierbei zwei Abwägungen: Je mehr Konstrukte verfügbar s<strong>in</strong>d, desto e<strong>in</strong>facher (o<strong>der</strong> gar<br />

mehr) lässt sich Wissen ausdrücken, an<strong>der</strong>erseits gilt jedoch auch: Je mehr Konstrukte<br />

vorhanden s<strong>in</strong>d, umso komplexer s<strong>in</strong>d <strong>die</strong> Inferenzmechanismen. Schon <strong>in</strong> relativ ausdrucksschwachen<br />

Beschreibungslogiken können Probleme untentscheidbar o<strong>der</strong> nichtpolynomiell<br />

se<strong>in</strong>.<br />

Typische Fragestellungen, <strong>die</strong> e<strong>in</strong> Wissensverarbeitungssystem beantworten sollte,<br />

s<strong>in</strong>d: S<strong>in</strong>d <strong>die</strong> Beschreibungen <strong>in</strong>nerhalb <strong>der</strong> T-Box erfüllbar (also nicht wi<strong>der</strong>sprüchlich),<br />

gibt es Beschreibungen <strong>die</strong> <strong>in</strong> an<strong>der</strong>en Beschreibungen enthalten s<strong>in</strong>d (üblicherweise als<br />

Subsumption bezeichnet).<br />

Bezüglich <strong>der</strong> A-Box ist e<strong>in</strong>e wichtige Fragestellung, ob <strong>die</strong> Daten konsistent s<strong>in</strong>d, d.h.<br />

gibt es e<strong>in</strong> Modell, dass <strong>die</strong> Annahmen über <strong>die</strong> Individuen e<strong>in</strong>hält.<br />

Bevor wir uns wie<strong>der</strong> mit T-Box und A-Box im speziellen beschäftigen, führen wir<br />

verschiedene Konzeptbeschreibungssprachen e<strong>in</strong>. Hierfür konzentrieren wir uns auf <strong>die</strong><br />

Konstruktion und Semantik von Konzept- und Rollenbeschreibungen.<br />

7.2.1 Die Basis-Sprache AL<br />

Atomare Beschreibungen s<strong>in</strong>d atomare Konzepte und atomare Rollen. Komplexe Beschreibungen<br />

werden durch Konzeptkonstruktoren erstellt. Wir verwenden A, B für atomare<br />

Konzepte, R für atomare Rollen und C, D für komplexe Konzepte. Die Sprache AL<br />

gilt als e<strong>in</strong>e m<strong>in</strong>imale Sprache von praktischem Interesse. Komplexe Konzeptbeschreibungen<br />

werden durch Konzept-Terme gebildet.<br />

Def<strong>in</strong>ition 7.2.1 (Syntax von Konzept-Termen <strong>in</strong> AL). Die Syntax von Konzepttermen von<br />

AL ist durch <strong>die</strong> folgende Grammatik def<strong>in</strong>iert, wobei A atomares Konzept, C, D Konzepte und R<br />

atomare Rolle:<br />

C, D ∈ AL ::= A atomares Konzept<br />

| ⊤ universelles Konzept<br />

| ⊥ leeres Konzept<br />

| ¬A atomares Komplement<br />

| C ⊓ D Schnitt<br />

| ∀R.C Wert-E<strong>in</strong>schränkung<br />

| ∃R.⊤ beschränkte existentielle E<strong>in</strong>schränkung<br />

Beachte das <strong>in</strong> AL <strong>die</strong> Komplementbildung nur für atomare Konzepte erlaubt ist, und<br />

dass für <strong>die</strong> existentielle E<strong>in</strong>schränkung nur das universelle Konzept erlaubt ist (d.h. ∃R.C<br />

für beliebiges Konzept C ist nicht erlaubt).<br />

Beispiel 7.2.2. Nehmen wir an Person und Weiblich se<strong>in</strong>en atomare Konzepte. Dann<br />

drückt das Konzept Person ⊓ Weiblich gerade weibliche Personen aus, während das Konzept<br />

Stand: 28. Januar 2013 220 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.2 Attributive Konzeptbeschreibungssprachen (Description Logic)<br />

Person ⊓ ¬Weiblich alle nicht weiblichen Personen ausdrückt.<br />

Sei hatK<strong>in</strong>d e<strong>in</strong>e atomare Rolle. Dann können wird <strong>die</strong> Konzepte Person ⊓ ∃hatK<strong>in</strong>d.⊤ und<br />

Person ⊓ ∀hatK<strong>in</strong>d.Weiblich konstruieren. Das erste Konzept beschreibt Personen, <strong>die</strong> K<strong>in</strong><strong>der</strong> haben.<br />

Evtl. sollten wir das Konzept verfe<strong>in</strong>ern zu Person ⊓ ∃hatK<strong>in</strong>d.⊤ ⊓ ∀hatK<strong>in</strong>d.Person, um<br />

sicherzustellen, dass alle K<strong>in</strong><strong>der</strong> auch Personen s<strong>in</strong>d.<br />

Das zweite Konzept beschreibt Personen, <strong>der</strong>en K<strong>in</strong><strong>der</strong> alle weiblich s<strong>in</strong>d. Anstelle des ersten<br />

Konzepts sollten wir<br />

K<strong>in</strong><strong>der</strong>lose Personen können durch das Konzept Person ⊓ ∀hatK<strong>in</strong>d.⊥ beschrieben werden.<br />

Eigentlich können wir <strong>die</strong> Beispiele jedoch noch gar nicht <strong>in</strong>terpretieren, da uns noch<br />

<strong>die</strong> Semantik <strong>der</strong> Beschreibungen fehlt. Das holen wir jetzt nach. Wie üblich def<strong>in</strong>ieren wir<br />

e<strong>in</strong>e Interpretation:<br />

Def<strong>in</strong>ition 7.2.3 (Semantik von AL). E<strong>in</strong>e Interpretation I e<strong>in</strong>er AL-Formel legt folgendes<br />

fest:<br />

• E<strong>in</strong>e nichtleere Menge ∆ von Objekten.<br />

• Für jedes atomare Konzept A: I(A) als Teilmenge von ∆, d.h. I(A) ⊆ ∆.<br />

• Für jede atomare Rolle R: I(R) als b<strong>in</strong>äre Relation über ∆, d.h. I(R) ⊆ ∆ × ∆.<br />

Die Erweiterung e<strong>in</strong>er Interpretation I auf komplexe Konzeptbeschreibungen ist <strong>in</strong>duktiv durch<br />

<strong>die</strong> folgenden Fälle def<strong>in</strong>iert.<br />

I(C 1 ⊓ C 2 ) = I(C 1 ) ∩ I(C 2 )<br />

I(⊥) = ∅<br />

I(⊤) = ∆<br />

I(¬A) = ∆ \ I(A)<br />

I(∃R.⊤) = {x ∈ ∆ | ∃y.(x, y) ∈ I(R)}<br />

I(∀R.C) = {x ∈ ∆ | ∀y.(x, y) ∈ I(R) ⇒ y ∈ I(C)}<br />

Zwei Konzepte C, D s<strong>in</strong>d äquivalent, geschrieben als C ≡ D, genau dann wenn I(C) = I(D)<br />

für alle Interpretationen I gilt<br />

Beispiel 7.2.4. Sei I <strong>die</strong> Interpretation mit ∆ = {Marie, Horst, Susi, Fritz, Lassie},<br />

I(Person) = ∆ \ {Lassie}, I(Weiblich) = {Marie, Susi, Lassie} und I(hatK<strong>in</strong>d) =<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 221 Stand: 28. Januar 2013


7 Konzeptbeschreibungssprachen<br />

{(Fritz, Susi), (Marie, Susi), (Fritz, Horst)}. Dann können wir ausrechnen:<br />

I(Person ⊓ Weiblich) = I(Person) ∩ I(Weiblich) = {Marie, Susi}<br />

I(Person ⊓ ∃hatK<strong>in</strong>d.⊤)<br />

= I(Person) ∩ I(∃hatK<strong>in</strong>d.⊤)<br />

= I(Person) ∩ {x ∈ ∆ | ∃y.(x, y) ∈ I(hatK<strong>in</strong>d)}<br />

= I(Person) ∩ {x ∈ ∆ | ∃y.(x, y) ∈ {(Fritz, Susi), (Marie, Susi), (Fritz, Horst)}}<br />

= I(Person) ∩ {Fritz, Marie}<br />

= {Fritz, Marie}<br />

I(Person ⊓ ∀hatK<strong>in</strong>d.Weiblich)<br />

= I(Person) ∩ I(∀hatK<strong>in</strong>d.Weiblich)<br />

= I(Person) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ I(hatK<strong>in</strong>d) ⇒ y ∈ I(Weiblich)}<br />

= I(Person) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ {(Fritz, Susi), (Marie, Susi), (Fritz, Horst)}<br />

⇒ y ∈ {Marie, Susi, Lassie}}<br />

= I(Person) ∩ {Marie, Horst, Susi, Lassie}<br />

= {Marie, Horst, Susi}<br />

I(Person ⊓ ∀hatK<strong>in</strong>d.⊥)<br />

= I(Person) ∩ I(∀hatK<strong>in</strong>d.⊥)<br />

= I(Person) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ I(hatK<strong>in</strong>d) ⇒ y ∈ I(⊥)}<br />

= I(Person) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ {(Fritz, Susi), (Marie, Susi), (Fritz, Horst)} ⇒ y ∈ ∅}<br />

= I(Person) ∩ {Horst, Susi, Lassie}<br />

= {Horst, Susi}<br />

Beispiel 7.2.5. Es gilt (∀hatK<strong>in</strong>d.Weiblich) ⊓ (∀hatK<strong>in</strong>d.Student) und ∀hatK<strong>in</strong>d.(Weiblich ⊓<br />

Student) s<strong>in</strong>d äquivalente Konzepte. Das lässt sich mit <strong>der</strong> Semantik nachweisen:<br />

I(∀hatK<strong>in</strong>d.Weiblich ⊓ ∀hatK<strong>in</strong>d.Student)<br />

= I(∀hatK<strong>in</strong>d.Weiblich) ∩ I(∀hatK<strong>in</strong>d.Student)<br />

= {x ∈ ∆ | ∀y.(x, y) ∈ I(hatK<strong>in</strong>d) ⇒ y ∈ I(Weiblich)}<br />

∩{x ∈ ∆ | ∀y.(x, y) ∈ I(hatK<strong>in</strong>d) ⇒ y ∈ I(Student)}<br />

= {x ∈ ∆ | ∀y.(x, y) ∈ I(hatK<strong>in</strong>d) ⇒ (y ∈ I(Weiblich) ∧ y ∈ I(Student))}<br />

= {x ∈ ∆ | ∀y.(x, y) ∈ I(hatK<strong>in</strong>d) ⇒ y ∈ (I(Weiblich) ∩ I(Student))}<br />

= {x ∈ ∆ | ∀y.(x, y) ∈ I(hatK<strong>in</strong>d) ⇒ y ∈ (I(Weiblich ⊓ Student))}<br />

= I(∀hatK<strong>in</strong>d.(Weiblich ⊓ Student))<br />

Beachte, <strong>der</strong> Beweis ist völlig unabhängig von den atomaren Konzepten und Rollen, d.h. es gilt<br />

allgeme<strong>in</strong>:<br />

(∀R.C) ⊓ (∀R.D) ≡ ∀R.(C ⊓ D)<br />

Stand: 28. Januar 2013 222 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.2 Attributive Konzeptbeschreibungssprachen (Description Logic)<br />

7.2.2 Allgeme<strong>in</strong>ere Konzept-Def<strong>in</strong>itionen<br />

Wir betrachten nun mögliche Erweiterungen <strong>der</strong> Basissprache AL. E<strong>in</strong>e erste Erweiterung<br />

ist das Verwenden von atomaren Funktionen, <strong>die</strong> auch als Attribute, Features, Attributsbezeichner<br />

o<strong>der</strong> funktionale Rollen bezeichnet werden. Ihre Verwendung entspricht <strong>der</strong><br />

Verwendung von Rollen, d.h. sie dürfen überall dort verwendet werden, wo auch Rollen<br />

erlaubt s<strong>in</strong>d. Der Unterschied liegt <strong>in</strong> <strong>der</strong> Semantik: Jede Interpretation darf e<strong>in</strong>e atomare<br />

Funktion nur als (partielle) e<strong>in</strong>stellige Funktion auf ∆, also als Funktion f : ∆ → ∆ def<strong>in</strong>ieren,<br />

was äquivalent dazu ist, dass es f e<strong>in</strong>e rechtse<strong>in</strong>deutige b<strong>in</strong>äre Relation ist 1 . E<strong>in</strong>e<br />

echte Än<strong>der</strong>ung <strong>der</strong> Syntax beim E<strong>in</strong>führen <strong>der</strong> atomaren Funktionen ist nicht notwendig,<br />

lediglich ist e<strong>in</strong>e disjunkte Aufteilung <strong>der</strong> Namen <strong>in</strong>: Namen für Konzepte, Namen<br />

für Rollen und Namen für atomare Funktionen notwendig.<br />

Beispiel 7.2.6. Beispiele für atomare Funktionen s<strong>in</strong>d istMutterVon (was wohl e<strong>in</strong>er totalen Funktion<br />

entsprechen sollte), und istEhepartner (was i.A. e<strong>in</strong>er partiellen Funktion entspricht).<br />

Wir betrachten weitere Konstrukte, <strong>die</strong> <strong>in</strong> Konzeptbeschreibungssprachen (neben den<br />

bereits e<strong>in</strong>geführten) verwendet werden, um komplexe Konzeptbeschreibungen C zu bilden.<br />

Def<strong>in</strong>ition 7.2.7. Die Syntax zur Bildung von komplexen Konzeptbeschreibungen aus Def<strong>in</strong>ition<br />

7.2.1 kann erweitert werden:<br />

C ::= . . .<br />

| ¬C Komplement<br />

| (C 1 ⊔ C 2 ) Vere<strong>in</strong>igung<br />

| (∃R.C) existenzielle E<strong>in</strong>schränkung<br />

| (≤ n R), (≥ n R) Anzahlbeschränkungen (number restrictions)<br />

| (≤ n R.C), (≥ n R.C) qualifizierte Anzahlbeschränkung.<br />

| (R 1 ; R 2 ; . . . ; R n = R 1 ′ ; R′ 2 ; . . . ; R′ m) Pfadgleichungen, Attributsübere<strong>in</strong>stimmung<br />

Es gibt auch Konstrukte, <strong>die</strong> es erlauben komplexe Rollen zu konstruieren, e<strong>in</strong> solches<br />

Konstrukt ist<br />

(RESTRICT R C)<br />

Rollene<strong>in</strong>schränkung<br />

Wir werden später weitere solcher Konstrukte behandeln.<br />

In <strong>der</strong> Literatur werden teilweise an<strong>der</strong>e Symbole verwendet, z.B.:<br />

AND entspricht ⊓<br />

OR entspricht ⊔<br />

NOT entspricht ¬<br />

SOME entspricht ∃<br />

ALL entspricht ∀<br />

. . .<br />

1 D.h. für alle x, y, z ∈ ∆: Wenn (x, y) ∈ f und (x, z) ∈ f muss gelten y = z<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 223 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

Beispiel 7.2.8. Wir geben e<strong>in</strong>ige Beispiele, was man <strong>in</strong> <strong>die</strong>sen Sprachen ausdrücken kann. Wenn<br />

man <strong>die</strong> Konzeptnamen Mensch, Frau, Mann und ke<strong>in</strong>e weiteren Axiome hat, s<strong>in</strong>d <strong>die</strong> Beziehungen<br />

zwischen Mensch, Frau und Mann ziemlich frei. Als Axiome würde man sich wünschen Frau ⊓<br />

Mann = ⊥, d.h. <strong>die</strong> beiden Konzepte sollen disjunkt se<strong>in</strong>; und Mensch ≡ Frau ⊓ Mann, d.h.<br />

Menschen s<strong>in</strong>d entwe<strong>der</strong> Mann o<strong>der</strong> Frau.<br />

Mittels <strong>der</strong> Relationen kann man weitere Konzepte def<strong>in</strong>ieren:<br />

Eltern := Mensch ⊓ (∃hatK<strong>in</strong>d.Mensch)<br />

Da das noch Freiheiten lässt, ist folgende Def<strong>in</strong>ition genauer<br />

Eltern := Mensch ⊓ (∃hatK<strong>in</strong>d.Mensch) ⊓ (∀hatK<strong>in</strong>d.Mensch)<br />

Desweiteren kann man def<strong>in</strong>ieren:<br />

Mutter := Frau ⊓ Eltern<br />

Hier kann das Wissensrepräsentationssystem <strong>in</strong> Pr<strong>in</strong>zip herausf<strong>in</strong>den, dass gilt I(Mutter) ⊆<br />

I(Frau). E<strong>in</strong>e Student<strong>in</strong> könnte man def<strong>in</strong>ieren durch<br />

Student<strong>in</strong> := Frau ⊓ (∃stu<strong>die</strong>rtFach.⊤)<br />

Anzahlbeschränkungen kann man verwenden z.B. <strong>in</strong><br />

Bigamist := Mann ⊓ (≥ 2 verheiratetMit)<br />

⊓ (≤ 2 verheiratetMit) ⊓ (∀verheiratetMit.Frau)<br />

wenn verheiratetMit e<strong>in</strong>e Rolle ist. Ist verheiratetMit sowieso e<strong>in</strong>e atomare Funktion, dann sollte<br />

<strong>die</strong> Semantik (<strong>die</strong> wir gleich def<strong>in</strong>ieren) liefern: I(Bigamist) = ∅ für jede Interpretation I.<br />

Sei isstGerne e<strong>in</strong>e Rolle, dann beschreibt das Konzept<br />

Mensch ⊓ (verheiratetMit; isstGerne = isstGerne)<br />

gerade alle Menschen <strong>der</strong>en Ehepartner das gleiche Essen mögen, wie sie selbst.<br />

Verwendet man atomare Rollen und Pfadgleichungen, so beschreibt das Konzept<br />

Mann ⊓ (hatNachnamen = hatMutter; hatNachnamen)<br />

alle Männer, <strong>die</strong> den selben Nachnamen wie ihre Mutter haben (wobei hatNachnamen und<br />

hatMutter atomare Funktionen s<strong>in</strong>d).<br />

Man erkennt, dass <strong>der</strong> Formalismus <strong>die</strong> Konzeptbildung mittels Vere<strong>in</strong>igung, Schnitt,<br />

Komplement, und über Eigenschaften bzw. Relationen erlaubt.<br />

Stand: 31. Januar 2013 224 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.2 Attributive Konzeptbeschreibungssprachen (Description Logic)<br />

7.2.3 Semantik von Konzepttermen<br />

Für Konzeptterme <strong>in</strong> <strong>der</strong> erweiterten Syntax erweitern wir <strong>die</strong> modulare, deklarative Semantik:<br />

Def<strong>in</strong>ition 7.2.9 (Semantik von Konzepttermen). E<strong>in</strong>e Interpretation ist analog zu Def<strong>in</strong>ition<br />

7.2.3 def<strong>in</strong>iert, wobei I neben atomaren Konzepten und atomaren Rollen, <strong>die</strong> Bedeutung <strong>der</strong><br />

atomaren Funktionen als partielle Funktionen f : ∆ → ∆ festlegt.<br />

Die Interpretation wird auf <strong>die</strong> neuen Konstrukte wie folgt erweitert:<br />

I(C 1 ⊔ C 2 ) = I(C 1 ) ∪ I(C 2 )<br />

I(∃R.C)<br />

= {x ∈ ∆ | ∃y.(x, y) ∈ I(R) und y ∈ I(C)}<br />

I(≤ n R) = {x ∈ ∆ | |{y ∈ ∆ | (x, y) ∈ I(R)}| ≤ n}<br />

I(≥ n R) = {x ∈ ∆ | |{y ∈ ∆ | (x, y) ∈ I(R)}| ≥ n}<br />

I(≤ n R.C) = {x ∈ ∆ | |{y ∈ ∆ | (x, y) ∈ I(R) ∧ y ∈ I(C)}| ≤ n}<br />

I(≥ n R.C) = {x ∈ ∆ | |{y ∈ ∆ | (x, y) ∈ I(R) ∧ y ∈ I(C)}| ≥ n}<br />

I(R 1 ; R 2 ; . . . ; R n = R ′ 1 ; R′ 2 ; . . . ; R′ m) =<br />

I(RESTRICT R C)<br />

{<br />

x ∈ ∆ |<br />

{y ∈ ∆ | (x, y) ∈ (I(R 1 ) ◦ . . . ◦ I(R n ))}<br />

= {y ∈ ∆ | (x, y) ∈ (I(R ′ 1 ) ◦ . . . ◦ I(R′ m))}<br />

wobei ◦ <strong>die</strong> Komposition von Relationen ist 1<br />

= {(x, y) ∈ ∆ × ∆ | (x, y) ∈ I(R) und y ∈ I(C)}<br />

}<br />

Diese Semantik erlaubt es, Gleichheiten bzw. Untermengenbeziehungen von Konzepten<br />

zu zeigen.<br />

Beispiel 7.2.10. Wir zeigen (∃R.C) ≡ (∃(RESTRICT R C).⊤). Sei I e<strong>in</strong>e Interpretation. Dann<br />

gilt für <strong>die</strong> l<strong>in</strong>ke Seite:<br />

Die rechte Seite hat als Interpretation:<br />

I(∃R.C) = {x | ∃y.(x, y) ∈ I(R) ∧ y ∈ I(C)}<br />

{x | ∃y.(x, y) ∈ I(RESTRICT R C)}<br />

= {x | ∃y.(x, y) ∈ {(a, b) | (a, b) ∈ I(R) ∧ b ∈ I(C)}<br />

= {x | ∃y.(x, y) ∈ {(a, b) ∈ I(R) | b ∈ I(C)}<br />

= {x | ∃y.(x, y) ∈ I(R) ∧ y ∈ I(C)}<br />

Das Beispiel zeigt auch, dass man voll existentielle E<strong>in</strong>schränkung nicht braucht, wenn<br />

RESTRICT und <strong>die</strong> beschränkte existentielle E<strong>in</strong>schränkung vorhanden s<strong>in</strong>d.<br />

1 D.h. R 1 ◦ R 2 = {(x, z) | (x, y) ∈ R 1 ∧ (y, z) ∈ R 2}<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 225 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

7.2.4 Namensgebung <strong>der</strong> Familie <strong>der</strong> AL-Sprachen<br />

Die Namensgebung vieler Erweiterung <strong>der</strong> Basissprache AL erfolgt durch Anhängen weiterer<br />

Buchstaben, d.h. man verwendet als mögliche Sprachbezeichner<br />

AL[U][E][N ][C]<br />

wobei <strong>die</strong> Buchstaben für <strong>die</strong> entsprechenden zu AL h<strong>in</strong>zugefügten Konstrukte stehen:<br />

U<br />

E<br />

N<br />

C<br />

Union: Vere<strong>in</strong>igung (⊔)<br />

Volle existenzielle Beschränkung (∃R.C)<br />

number restriction: Anzahlbeschränkung. ((≤ n R), (≥ n R))<br />

Volles Komplement (¬C)<br />

Z.B. ist ALEN <strong>die</strong> Sprache, <strong>die</strong> auf AL aufbaut und noch allgeme<strong>in</strong>e existenzielle Beschränkung<br />

und Anzahlbeschränkung hat.<br />

Nicht alle <strong>die</strong>se Namen bezeichnen verschiedene Sprachen aus semantischer Sicht.<br />

Denn z.B. ist semantisch ALUE = ALC, denn es gilt<br />

C ⊔ D ≡ ¬(¬C ⊓ ¬D)<br />

und<br />

∃R.C ≡ ¬(∀R.¬C).<br />

D.h. alles was <strong>in</strong> ALUE ausgedrückt werden kann, kann auch <strong>in</strong> ALC ausgedrückt werden<br />

und umgekehrt.<br />

Wir beweisen <strong>die</strong> letzte Gleichung:<br />

I(¬(∀R.¬C))<br />

= ∆ \ {a ∈ ∆ | ∀b.(a, b) ∈ I(R) ⇒ y ∈ I(¬C)}<br />

= ∆ \ {a ∈ ∆ | ∀b.(a, b) ∈ I(R) ⇒ b ∈ (∆ \ I(C))}<br />

= {a ∈ ∆ | ¬(∀b.(a, b) ∈ I(R) ⇒ b ∈ (∆ \ I(C)))}<br />

= {a ∈ ∆ | ∃b.¬((a, b) ∈ I(R) ⇒ b ∈ (∆ \ I(C)))}<br />

= {a ∈ ∆ | ∃b.(a, b) ∈ I(R) ∧ ¬(b ∈ (∆ \ I(C)))}<br />

= {a ∈ ∆ | ∃b.(a, b) ∈ I(R) ∧ (b ∈ I(C))}<br />

= I(∃R.C)<br />

Deshalb kann man Vere<strong>in</strong>igung U und volle existenzielle Beschränkung durch AL mit<br />

Komplementen ausdrücken. Umgekehrt kann man volle Negation durch Vere<strong>in</strong>igung U<br />

und volle existenzielle Beschränkung ausdrücken, da man <strong>die</strong> Normalform darstellen<br />

kann.<br />

Insgesamt erhält man 8 Sprachen: AL, ALC, ALCN , ALN , ALU, ALE, ALUN , ALEN<br />

. Wir geben e<strong>in</strong>e Tabelle <strong>der</strong> Konstrukte an, <strong>die</strong> <strong>in</strong> <strong>die</strong>sen Sprachen erlaubt ist:<br />

Stand: 31. Januar 2013 226 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.2 Attributive Konzeptbeschreibungssprachen (Description Logic)<br />

Name Konstrukte implizite Konstrukte<br />

AL ⊓, ⊥, ⊤, ¬A, ∀R.C, ∃R.⊤<br />

ALC AL, ¬C ⊔,∃R.C<br />

ALCN AL, ¬C, (≤ n R) ⊔, ∃R.C, (≥ n R)<br />

ALN AL, (≤ n R) (≥ n R)<br />

ALU AL, ⊔<br />

ALE AL, ∃R.C<br />

ALUN AL, ⊔, (≤ n R), (≥ n R)<br />

ALEN AL, ∃R.C, (≤ n R), (≥ n R)<br />

Die Sprachen ALC und ALCN spielen e<strong>in</strong>e beson<strong>der</strong>e Rolle, da sie sehr allgeme<strong>in</strong> s<strong>in</strong>d.<br />

Man kann z.B. so viel repräsentieren wie Aussagenlogik, denn Schnitte, Vere<strong>in</strong>igungen<br />

und Komplemente s<strong>in</strong>d erlaubt (was gerade zum Ko<strong>die</strong>ren von Konjunktion, Disjunktion<br />

und Negation <strong>in</strong> <strong>der</strong> Aussagenlogik verwendet werden kann).<br />

Es gibt noch weitere Konzeptsprachen, <strong>die</strong> aufgrund <strong>der</strong> Historie an<strong>der</strong>e Namen (ungleich<br />

vom Schema AL+Erweiterung) haben. Diese werden mit FL (für frame-based description<br />

language) abgekürzt. Es gibt drei Varianten:<br />

Name<br />

FL 0<br />

FL −<br />

FL<br />

Konstrukte<br />

⊓, ∀R.C<br />

⊓, ∀R.C, ∃R.⊤<br />

⊓, ∀R.C, ∃R.C<br />

Es gelten folgende Beziehungen zwischen den FL-Sprachen und den AL-Sprachen:<br />

AL ≡ FL − ∪ {¬A, ⊤}<br />

ALC ≡ FL − ∪ {¬C}<br />

ALC ≡ FL ∪ {¬C}<br />

Ebenso gibt es noch e<strong>in</strong>e Erweiterung <strong>der</strong> ALUEN -Sprachen um den Schnitt von Rollen,<br />

d.h. <strong>die</strong> Syntax ist erweitert, so dass man dort, wo sonst nur elementare Rollen verwendet<br />

werden, den Schnitt von mehreren elementaren Rollen verwenden darf.<br />

R : R 1 ⊓ R 2 Schnitt von Rollen<br />

Die Namemsgebung ist dann entsprechend:<br />

AL[U][E][N ][C][R]<br />

Dies ergibt 8 weitere Sprachen <strong>in</strong> Erweiterung <strong>der</strong> ALUEN -Sprachen. Es gelten weitere<br />

Sprach-Äquivalenzen: Da C immer U und E impliziert,<br />

ist z.B. ALUCR = ALCR = ALECR<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 227 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

7.2.5 Inferenzen und Eigenschaften<br />

Wir def<strong>in</strong>ieren <strong>die</strong> <strong>in</strong>teressanten Eigenschaften für Konzepte und zwischen Konzepte etwas<br />

formaler. Diese Eigenschaften möchte man mit Inferenzverfahren nachweisen.<br />

Def<strong>in</strong>ition 7.2.11. Seien C, D (evtl. komplexe) Konzepte<br />

• E<strong>in</strong> Konzept D subsumiert e<strong>in</strong> Konzept C (geschrieben als C ⊑ D), gdw. für alle Interpretationen<br />

I gilt: I(C) ⊆ I(D).<br />

• E<strong>in</strong> Konzept C ist konsistent gdw. es e<strong>in</strong>e Interpretation I gibt, so dass gilt: I(C) ≠ ∅. Gibt<br />

es ke<strong>in</strong>e solche Interpretation, so nennt man C <strong>in</strong>konsistent.<br />

• Zwei Konzepte C und D s<strong>in</strong>d disjunkt, gdw. für alle Interpretationen I gilt: I(C)∩I(D) =<br />

∅.<br />

• Zwei Konzepte C und D s<strong>in</strong>d äquivalent (C ≡ D) gdw. für alle Interpretationen I gilt:<br />

I(C) = I(D).<br />

Beachte, dass C konsistent nicht bedeutet, dass C <strong>in</strong> allen Interpretationen nicht leer<br />

ist, son<strong>der</strong>n dass e<strong>in</strong>e Interpretation I mit I(C) ≠ ∅ ausreichend ist.<br />

Man kann je nach Sprache <strong>die</strong> verschiedenen Fragestellungen <strong>in</strong>e<strong>in</strong>an<strong>der</strong> überführen:<br />

• C ist <strong>in</strong>konsistent, gdw. C ≡ ⊥.<br />

• C ≡ D gdw. C ⊑ D und D ⊑ C.<br />

• C ist disjunkt zu D gdw. C ⊓ D <strong>in</strong>konsistent.<br />

• C <strong>in</strong>konsistent, gdw. C wird von ⊥ subsumiert (C ⊑ ⊥)<br />

• Wenn allgeme<strong>in</strong>e Komplemente erlaubt, dann gilt:<br />

C ⊑ D gdw. C ⊓ ¬D <strong>in</strong>konsistent ist.<br />

• Wenn allgeme<strong>in</strong>e Komplemente erlaubt, dann gilt:<br />

C ⊑ D gdw. C und ¬D disjunkt s<strong>in</strong>d.<br />

Wenn <strong>die</strong> Sprache allgeme<strong>in</strong>e Komplemente erlaubt, dann s<strong>in</strong>d Subsumtion, Disjunktheitstest<br />

und Konsistenztest äquivalent und haben auch gleiche Komplexität. Dies gilt z.B.<br />

<strong>in</strong> <strong>der</strong> Sprache ALC.<br />

In <strong>der</strong> Sprache FL s<strong>in</strong>d das aber verschiedene Fragestellungen.<br />

7.2.6 Anwendungen <strong>der</strong> Beschreibungslogiken<br />

In Ontologien <strong>der</strong> Life-Sciences (Mediz<strong>in</strong>, Biologie) gibt es Anwendungsmöglichkeiten<br />

von Beschreibungslogiken zur Konsistenzprüfung. E<strong>in</strong>ige Beispiele s<strong>in</strong>d:<br />

Stand: 31. Januar 2013 228 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.3 T-Box und A-Box<br />

• SNOMED CT (e<strong>in</strong> Akronym für Systematized Nomenclature of Medic<strong>in</strong>e – Cl<strong>in</strong>ical<br />

Terms) ist e<strong>in</strong>e mediz<strong>in</strong>ische Nomenklatur, <strong>die</strong> ca. 500.000 Konzepte umfasst<br />

• The National Cancer Institute Thesaurus , 45.000 Konzepte<br />

• GO: gene ontology: ca. 20.000 Konzepte<br />

• „ GALEN was concerned with the computerisation of cl<strong>in</strong>ical term<strong>in</strong>ologies.“<br />

Insbeson<strong>der</strong>e gibt es folgende Anwendungen e<strong>in</strong>er ausdrucksschwachen Beschreibungslogik<br />

EL:<br />

• Überprüfung <strong>der</strong> Konsistenz e<strong>in</strong>er Menge von Konzepten<br />

• Überprüfung <strong>der</strong> Erweiterbarkeit e<strong>in</strong>er Menge von Konzepten.<br />

Die Beschreibungslogik EL hat als Syntax <strong>der</strong> Konzepte:<br />

C ::= ⊤ | A | C ⊓ D | ∃R.C<br />

Die Subsumption <strong>in</strong> EL ist polynomiell und ist damit anwendungsgeeignet.<br />

E<strong>in</strong> Beispiel für e<strong>in</strong>e Subsumtionsbeziehung ist:<br />

∃child.Rich ⊓ ∃child.(Woman ⊓ Rich) ≡ ∃child.(Woman ⊓ Rich)<br />

Als weiteres (eigentlich falsches) Beispiel wurde mittels Subsumption erkannt:<br />

„F<strong>in</strong>ger-Amputation ⊑ Arm-Amputation“,<br />

was von den an<strong>der</strong>en Konzepten impliziert wurde, aber so nicht geme<strong>in</strong>t war und zu<br />

Korrekturen führte.<br />

7.3 T-Box und A-Box<br />

7.3.1 Term<strong>in</strong>ologien: Die T-Box<br />

E<strong>in</strong>e Term<strong>in</strong>ologie ist normalerweise e<strong>in</strong>e Vere<strong>in</strong>barung von Namen für Konzepte. In <strong>der</strong><br />

allgeme<strong>in</strong>sten Form <strong>in</strong> AL ist es e<strong>in</strong>e Menge von term<strong>in</strong>ologischen Axiomen <strong>der</strong> Formen<br />

C ⊑ D o<strong>der</strong> C ≡ D<br />

wobei C, D Konzepte s<strong>in</strong>d.<br />

Wenn es Rollenterme gibt, dann können <strong>die</strong> Axiome auch <strong>die</strong> Form<br />

R ⊑ S o<strong>der</strong> R ≡ S<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 229 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

haben, wobei R, S Rollen s<strong>in</strong>d. Es handelt sich um Inklusionen und um Gleichheiten.<br />

Def<strong>in</strong>ition 7.3.1. Gegeben e<strong>in</strong>e Menge T von term<strong>in</strong>ologischen Axiomen. Dann erfüllt e<strong>in</strong>e Interpretation<br />

I <strong>die</strong>se Axiome, wenn für alle Axiome<br />

• C ⊑ D (bzw. R ⊑ S) ∈ T <strong>die</strong> Gleichung I(C) ⊆ I(D) (bzw. I(R) ⊆ I(S)) gilt und<br />

• für alle Axiome C ≡ D (bzw. R ≡ S) <strong>die</strong> Gleichung I(C) = I(D) (bzw. I(R) = I(S) )<br />

gilt.<br />

Wenn I <strong>die</strong> Menge <strong>der</strong> Axiome T erfüllt, dann sagen wir I ist e<strong>in</strong> Modell für T .<br />

Die e<strong>in</strong>fachste Variante e<strong>in</strong>er Menge von term<strong>in</strong>ologischen Axiomen ist e<strong>in</strong>e Menge von<br />

Def<strong>in</strong>itionen. D.h. Gleichungen <strong>der</strong> Form A = C (bzw. (R = S), wobei A (bzw. R) e<strong>in</strong> (symbolischer)<br />

Name ist und C e<strong>in</strong> Konzeptterm (bzw. S e<strong>in</strong> Rollenterm. Wenn zusätzlich je<strong>der</strong><br />

def<strong>in</strong>ierte Name höchstens e<strong>in</strong>mal auf <strong>der</strong> l<strong>in</strong>ken Seite e<strong>in</strong>er Def<strong>in</strong>ition auftaucht, dann<br />

spricht man von e<strong>in</strong>er T-Box. Dies entspricht dem Sprachgebrauch von KL-ONE 2 .<br />

E<strong>in</strong>e T-Box nennt man zyklisch, wenn es e<strong>in</strong>en Namen gibt, <strong>der</strong> (evtl. implizit) durch<br />

sich selbst def<strong>in</strong>iert ist. Ansonsten nennt man <strong>die</strong> T-Box azyklisch.<br />

E<strong>in</strong>e azyklische T-Box ist dadurch gekennzeichnet, dass man alle def<strong>in</strong>ierten Namen<br />

<strong>in</strong> rechten Seiten von Axiomen durch Def<strong>in</strong>itionse<strong>in</strong>setzung elim<strong>in</strong>ieren kann. D.h. man<br />

kann <strong>die</strong> T-Box selbst elim<strong>in</strong>ieren und nur mit Konzepttermen arbeiten. Der Nachteil, den<br />

man sich erkauft, ist <strong>die</strong> mögliche exponentielle Vergrößerung <strong>der</strong> Konzeptterme durch<br />

<strong>die</strong> E<strong>in</strong>setzung.<br />

Wenn ke<strong>in</strong>e zyklischen Def<strong>in</strong>itionen vorliegen, kann man den symbolischen Namen<br />

e<strong>in</strong>e e<strong>in</strong>deutige Interpretation I geben, wenn man bereits e<strong>in</strong>e Interpretation I 0 <strong>der</strong> (nichtdef<strong>in</strong>ierten)<br />

atomaren Symbole gegeben hat.<br />

Wenn zyklische Def<strong>in</strong>itionen vorliegen, geht das nur noch unter e<strong>in</strong>schränkenden Bed<strong>in</strong>gungen.<br />

Beispiel 7.3.2. Beispiel für e<strong>in</strong>e Term<strong>in</strong>ologie (T-Box):<br />

Frau ≡ Person ⊓ Weiblich<br />

Mann ≡ Person ⊓ ¬Frau<br />

Mutter ≡ Frau ⊓ ∃hatK<strong>in</strong>d.Person<br />

Vater ≡ Mann ⊓ ∃hatK<strong>in</strong>d.Person<br />

Eltern ≡ Vater ⊔ Mutter<br />

Grossmutter ≡ Mutter ⊓ ∃hatK<strong>in</strong>d.Eltern<br />

MutterMitVielenK<strong>in</strong><strong>der</strong>n ≡ Mutter ⊓ (≥ 3 hatK<strong>in</strong>d)<br />

MutterMitTochter ≡ Mutter ⊓ (∀hatK<strong>in</strong>d.Frau)<br />

Ehefrau ≡ Frau ⊓ (∃hatEhemann.Mann)<br />

2 E<strong>in</strong> von Brachman beschriebenes Wissensrepräsentationssystem für <strong>die</strong> Verarbeitung natürlichsprachlicher<br />

Ausdrücke<br />

Stand: 31. Januar 2013 230 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.3 T-Box und A-Box<br />

Da <strong>die</strong>se T-Box azyklisch ist und nur aus Def<strong>in</strong>itionen besteht, kann man stets aus e<strong>in</strong>er Interpretation<br />

I 0 , <strong>die</strong> nur <strong>die</strong> Konzeptnamen Person, Weiblich, hatK<strong>in</strong>d und hatEhemann <strong>in</strong>terpretiert,<br />

e<strong>in</strong> Modell I für <strong>die</strong> T-Box erzeugen, <strong>in</strong>dem man setzt I(Person) := I 0 (Person), I(Weiblich) :=<br />

I 0 (Weiblich, I(hatK<strong>in</strong>d) := I 0 (hatK<strong>in</strong>d) und I(hatEhemann) := I 0 (hatEhemann) und für alle<br />

an<strong>der</strong>en Konzeptnamen (d.h. den def<strong>in</strong>ierten Namen), <strong>die</strong> Interpretation e<strong>in</strong>fach „ausrechnet“, z.B.<br />

I(Frau) = I 0 (Person) ∩ I 0 (Weiblich).<br />

Beispiel 7.3.3. E<strong>in</strong> Beispiel für e<strong>in</strong>e s<strong>in</strong>nvolle zyklische T-Box ist:<br />

Mensch’ ≡ Tier ⊓ ∀HatEltern.Mensch’<br />

Menschen s<strong>in</strong>d alle Tiere, <strong>die</strong> <strong>der</strong>en Elteren nur Menschen s<strong>in</strong>d.<br />

Das F<strong>in</strong>den e<strong>in</strong>es Modells ist <strong>in</strong> <strong>die</strong>sem Fall nicht so e<strong>in</strong>fach, denn selbst wenn man e<strong>in</strong>e Interpretation<br />

I 0 hat <strong>die</strong> Tier und HatEltern festlegt, können wir nicht ohne weiteres e<strong>in</strong> Modell f<strong>in</strong>den,<br />

denn I(Mensch’) := I 0 (Tier) ∩ {x | ∀y.(x, y) ∈ I 0 (HatEltern) =⇒ y ∈ I(Mensch’)} ist e<strong>in</strong>e<br />

rekursiv def<strong>in</strong>ierte Menge. Man benötigt e<strong>in</strong>e Interpretation (als Menge) I(Mensch’) ⊆ ∆, <strong>die</strong> e<strong>in</strong><br />

Fixpunkt <strong>der</strong> rekursiven Gleichung ist.<br />

7.3.2 Fixpunktsemantik für zyklische T-Boxen<br />

Zwei weitere Beispiele für s<strong>in</strong>nvolle zyklische T-Box-Def<strong>in</strong>itionen s<strong>in</strong>d:<br />

MnurS ≡ Mann ⊓ ∀hatK<strong>in</strong>d.MnurS<br />

das entspricht dem Konzept: „Mann, <strong>der</strong> nur Söhne hat, und für dessen Söhne das gleiche<br />

gilt“. Zyklen können auch bei Datenstrukturen auftreten, z.B. für b<strong>in</strong>äre Bäume:<br />

B<strong>in</strong>Baum ≡ Baum ⊓ (≤ 2 hatAst) ⊓ ∀hatAst.B<strong>in</strong>Baum<br />

E<strong>in</strong>e Fixpunktsemantik hilft hier weiter. Im letzten Beispiel muss man auf jeden Fall<br />

e<strong>in</strong>en kle<strong>in</strong>sten Fixpunkt nehmen (sonst wären unendlich tiefe Bäume auch enthalten!)<br />

Zunächst ist klar, dass e<strong>in</strong>e Modell I e<strong>in</strong>er T-Box, alle Axiome erfüllen muss. Für jedes<br />

Axiom A ≡ C A muss I(A) = I(C A ) gelten. Wenn A <strong>in</strong> C A als Name vorkommt, dann ist<br />

<strong>die</strong>se Bed<strong>in</strong>gung nichttrivial.<br />

Beispiel 7.3.4. E<strong>in</strong>e solche Interpretation muss nicht immer existieren, wenn <strong>die</strong> T-Box zyklisch<br />

ist:<br />

A ≡ ¬A<br />

kann man zwar h<strong>in</strong>schreiben, aber ke<strong>in</strong>e Interpretation dafür angeben, denn ∆ ≠ ∅ war vorausgesetzt,<br />

und I(A) = ∆ \ I(A) ist daher nie erfüllt.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 231 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

Man kann e<strong>in</strong>e Fixpunktsemantik für e<strong>in</strong>e zyklische T-Box mit Gleichungen als Grenzwert<br />

unter gewissen Bed<strong>in</strong>gungen konstruieren: Zunächst hat man e<strong>in</strong>e Basis<strong>in</strong>terpretation<br />

I B <strong>der</strong> nicht-def<strong>in</strong>ierten Namen.<br />

Man def<strong>in</strong>iert e<strong>in</strong>e Folge von Interpretationen I i , i = 0, 1, 2, . . ., und<br />

1. erweitert I B : sei I 0 (A) = ∅ für alle def<strong>in</strong>ierten Namen A.<br />

2. Danach def<strong>in</strong>iert man I i+1 (A) := I i (C A ) für alle i und jede Def<strong>in</strong>ition A ≡ C A .<br />

3. Wenn <strong>die</strong> Folge monoton steigend ist, d.h. für alle Namen stets I i (A) ⊆ I i+1 (A) gilt,<br />

dann kann man I ∞ (A) = ⋃ I i (A) def<strong>in</strong>ieren.<br />

i<br />

Das ergibt e<strong>in</strong>en kle<strong>in</strong>sten Fixpunkt.<br />

E<strong>in</strong>en größten Fixpunkt erhält man mit folgendem Vorgehen:<br />

1. Man startet mit I B und erweitert <strong>die</strong>se so: I 0 (A) = ∆ für alle def<strong>in</strong>ierten Namen A.<br />

2. Danach def<strong>in</strong>iert man I i+1 (A) := I i (C A ) für jede Def<strong>in</strong>ition A ≡ C A .<br />

3. Wenn <strong>die</strong> Folge monoton fallend ist, d.h. für alle Namen stets I i+1 (A) ⊆ I i (A) gilt,<br />

dann kann man I ∞ (A) = ⋂ I i (A) def<strong>in</strong>ieren.<br />

i<br />

Das ergibt e<strong>in</strong>en größten Fixpunkt.<br />

Beispiel 7.3.5. Betrachte erneut <strong>die</strong> T-Box A ≡ ¬A. Der Versuch e<strong>in</strong>en Fixpunkt zu erzeugen,<br />

scheitert, sei ∆ beliebig als nicht-leere Menge festgelegt. Dann gibt es ke<strong>in</strong>en kle<strong>in</strong>sten Fixpunkt:<br />

I 0 (A)<br />

I 1 (A)<br />

I 2 (A)<br />

= ∅<br />

= I 0 (¬A) = ∆ \ I 0 (A) = ∆<br />

= I 1 (¬A) = ∆ \ I 1 (A) = ∅<br />

Jetzt sieht man schon <strong>die</strong> Nichtmonotonie, da ∆ = I 1 (A) ⊈ I 2 (A) = ∅.<br />

Für den größten Fixpunkt geht es analog:<br />

I 0 (A)<br />

I 1 (A)<br />

I 2 (A)<br />

= ∆<br />

= I 0 (¬A) = ∆ \ I 0 (A) = ∅<br />

= I 0 (¬A) = ∆ \ I 1 (A) = ∆<br />

Da I 2 (A) ⊈ I 1 (A) ist <strong>die</strong> Monotonie verletzt.<br />

Beispiel 7.3.6.<br />

MnurS ≡ Mann ⊓ ∀hatK<strong>in</strong>d.MnurS<br />

Sei I B e<strong>in</strong>e Interpretation, <strong>die</strong> ∆, I(Mann) und I(hatK<strong>in</strong>d) festlegt als<br />

∆ = {Hans i | i ∈ N} ∪ {Horst i | i ∈ N} ∪ {Heike i | i ∈ N} ∪ {Fritz i | i ∈ {1, 2, 3}}<br />

I B (Mann) = {Hans i | i ∈ N} ∪ {Horst i | i ∈ N} ∪ {Fritz i | i ∈ {1, 2, 3}}<br />

I B (hatK<strong>in</strong>d) = {(Hans i , Hans i+1 ) | i ∈ N} ∪ {(Horst i , Horst i+1 ) | i ∈ N}<br />

∪{(Horst i , Heike i+1 ) | i ∈ N} ∪ {(Fritz i , Fritz i+1 ) | i ∈ {1, 2}}<br />

Stand: 31. Januar 2013 232 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.3 T-Box und A-Box<br />

Als Graph wobei e<strong>in</strong>e gerichtete Kante für „hatK<strong>in</strong>d“ steht<br />

Hans 1 Horst 1 Heike 1 Fritz 1<br />

Hans 2 Horst 2 Heike 2 Fritz 2<br />

Hans 3 Horst 3 Heike 3 Fritz 3<br />

Hans 4 Horst 4 Heike 4<br />

... . . . . . .<br />

Hans i Horst i Heike i<br />

Hans i+1 Horst i+1 Heike i+1<br />

... . . . . . .<br />

Intuitiv erwartet man, dass <strong>die</strong> Interpretation von MnurS alle drei Fritz i und alle Hans i enthält.<br />

Wir zeigen, dass man dafür <strong>die</strong> größte Fixpunkt-Semantik nehmen muss, während <strong>die</strong> kle<strong>in</strong>ste<br />

Fixpunkt-Semantik zuwenig liefert.<br />

Wir berechnen den kle<strong>in</strong>sten Fixpunkt:<br />

I 0 (MnurS) = ∅<br />

I 1 (MnurS) = I B (Mann) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ I B (hatK<strong>in</strong>d) ⇒ y ∈ I 0 (MnurS)}<br />

= I B (Mann) ∩ ({Heike i | i ∈ N} ∪ {Fritz 3 }) = {Fritz 3 }<br />

I 2 (MnurS) = I B (Mann) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ I B (hatK<strong>in</strong>d) ⇒ y ∈ I 1 (MnurS)}<br />

= I B (Mann) ∩ ({Heike i | i ∈ N} ∪ {Fritz 2 , Fritz 3 }) = {Fritz 2 , Fritz 3 }<br />

I 3 (MnurS) = I B (Mann) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ I B (hatK<strong>in</strong>d) ⇒ y ∈ I 2 (MnurS)}<br />

= I B (Mann) ∩ ({Heike i | i ∈ N} ∪ {Fritz 1 , Fritz 2 , Fritz 3 }) = {Fritz 1 , Fritz 2 , Fritz 3 }<br />

I 4 (MnurS) = I B (Mann) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ I B (hatK<strong>in</strong>d) ⇒ y ∈ I 3 (MnurS)}<br />

= I B (Mann) ∩ ({Heike i | i ∈ N} ∪ {Fritz 1 , Fritz 2 , Fritz 3 }) = {Fritz 1 , Fritz 2 , Fritz 3 }<br />

I j (MnurS) = {Fritz 1 , Fritz 2 , Fritz 3 } für alle weiteren i<br />

Das ergibt ⋃ i I i(MnurS) = {Fritz 1 , Fritz 2 , Fritz 3 }.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 233 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

Nimmt man den größten Fixpunkt, werden auch <strong>die</strong> „unendlichen Pfade“ beachtet:<br />

I 0 (MnurS) = ∆<br />

I 1 (MnurS) = I B (Mann) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ I B (hatK<strong>in</strong>d) ⇒ y ∈ I 0 (MnurS)}<br />

= I B (Mann) ∩ (∆)<br />

= I B (Mann)<br />

I 2 (MnurS) = I B (Mann) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ I B (hatK<strong>in</strong>d) ⇒ y ∈ I 1 (MnurS)}<br />

= I B (Mann) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ I B (hatK<strong>in</strong>d) ⇒ y ∈ I B (Mann)}<br />

= I B (Mann) ∩ ({Heike i , Hans i | i ∈ N} ∪ {Fritz i | i ∈ {1, 2, 3})<br />

= {Hans i | i ∈ N} ∪ {Fritz i | i ∈ {1, 2, 3}}<br />

I 3 (MnurS) = I B (Mann) ∩ {x ∈ ∆ | ∀y.(x, y) ∈ I B (hatK<strong>in</strong>d) ⇒ y ∈ I 2 (MnurS)}<br />

= I B (Mann) ∩ ({Heike i , Hans i | i ∈ N} ∪ {Fritz i | i ∈ {1, 2, 3})<br />

= {Hans i | i ∈ N} ∪ {Fritz i | i ∈ {1, 2, 3}}<br />

I j (MnurS) = {Hans i | i ∈ N} ∪ {Fritz i | i ∈ {1, 2, 3}} für alle weiteren i<br />

Das ergibt ⋂ i I i(MnurS) = {Hans i | i ∈ N} ∪ {Fritz i | i ∈ {1, 2, 3}}.<br />

Theorem 7.3.7. Ist <strong>die</strong> Term<strong>in</strong>ologie ohne Komplemente def<strong>in</strong>iert, dann kann man sowohl e<strong>in</strong>en<br />

kle<strong>in</strong>sten als auch e<strong>in</strong>en größten Fixpunkt <strong>der</strong> Interpretationen als Erweiterung e<strong>in</strong>er Basis<strong>in</strong>terpretation<br />

def<strong>in</strong>ieren.<br />

Der Grund dafür, dass <strong>die</strong>ses Verfahren funktioniert, ist, dass man folgende Monotonie<br />

<strong>in</strong> <strong>die</strong>sem Fall hat:<br />

I ⊆ I ′ ⇒ I(C) ⊆ I ′ (C)<br />

wobei I ⊆ I ′ def<strong>in</strong>iert ist als: ∀atomare Konzepte A : I(A) ⊆ I ′ (A). Das wie<strong>der</strong>um folgt<br />

daraus, dass ⊓, ⊔, ∀R.C, ∃R.C, (≥ n R) alle monoton im Konzept-Argument s<strong>in</strong>d (falls es<br />

e<strong>in</strong>es gibt). Wenn man über ALCN h<strong>in</strong>ausgeht, ist das Konstrukt (≥ n R.C) monoton,<br />

während (≤ n R.C) nicht monoton ist.<br />

Theorem 7.3.8. Ist <strong>die</strong> Term<strong>in</strong>ologie so def<strong>in</strong>iert, dass je<strong>der</strong> zyklische Pfad durch <strong>die</strong> Terme durch<br />

e<strong>in</strong>e gerade Anzahl Negationen geht, denn kann man sowohl e<strong>in</strong>en kle<strong>in</strong>sten als auch e<strong>in</strong>en größten<br />

Fixpunkt <strong>der</strong> Interpretationen als Erweiterung e<strong>in</strong>er Basis<strong>in</strong>terpretation def<strong>in</strong>ieren.<br />

Der Grund für das Funktionieren ist <strong>in</strong> <strong>die</strong>sem Fall ebenfalls <strong>die</strong> Monotonie bzgl. Interpretationen,<br />

wobei jedes Komplement <strong>die</strong> Monotonie <strong>in</strong> e<strong>in</strong>e Antimonotonie verwandelt<br />

und nach zwei solchen Übergängen das Verhalten wie<strong>der</strong> monoton ist.<br />

Beispiel 7.3.9. Wir betrachten e<strong>in</strong> Beispiel für e<strong>in</strong>e zyklische T-Box, <strong>die</strong> nicht nur aus Def<strong>in</strong>ition<br />

besteht. „Jedes Huhn kommt aus e<strong>in</strong>em Ei. Jedes Ei wurde von e<strong>in</strong>em Huhn gelegt.“ Die graphische<br />

Darstellung kann man so notieren:<br />

Stand: 31. Januar 2013 234 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.3 T-Box und A-Box<br />

kommt aus<br />

Huhn<br />

Ei<br />

gelegt von<br />

Die zugehörigen Axiome <strong>in</strong> <strong>der</strong> T-Box s<strong>in</strong>d:<br />

Huhn ⊑ (∃kommtAus.Ei)<br />

Ei ⊑ (∃gelegtVon.Huhn)<br />

Versuche e<strong>in</strong> Modell zu f<strong>in</strong>den, so dass Clarissa ∈ I(Huhn):<br />

1. Dann muss gelten: Es gibt e<strong>in</strong> Objekt ClarissaEi mit (Clarissa, ClarissaEi) ∈<br />

I(kommtAus). Das reicht jedoch nicht, denn es muss noch sichergestellt werden, dass<br />

ClarissaEi ∈ I(Ei).<br />

2. Also wird e<strong>in</strong>e Mutter von Clarissa benötigt, <strong>die</strong> das Ei gelegt hat, d.h. es gibt ClarissaEi<br />

mit (ClarissaEi, ClarissaMutter) ∈ I(gelegtVon). Jetzt muss aber sichergestellt werden,<br />

dass ClarissaMutter <strong>in</strong> I(Huhn) ist, usw.<br />

D.h. <strong>in</strong> allen endlichen Modellen mit I(Huhn) ≠ ∅ gibt es nur nur Hühner, <strong>die</strong> ihre eigene Vorfahren<br />

s<strong>in</strong>d. Wenn das Modell unendlich se<strong>in</strong> darf, dann kann es auch Hühner geben, <strong>die</strong> nicht ihre<br />

eigenen Vorfahren s<strong>in</strong>d.<br />

7.3.3 Inklusionen <strong>in</strong> T-Boxen<br />

Als term<strong>in</strong>ologische Axiome s<strong>in</strong>d auch Inklusionen A ⊑ C erlaubt (wie wir sie gerade<br />

beim Huhn- / Ei-Beispiel gesehen haben). Dabei ist A e<strong>in</strong> Name. Wenn man <strong>die</strong>se Namen<br />

e<strong>in</strong>führt und nur durch e<strong>in</strong>e Inklusion spezifiziert, dann kann man <strong>die</strong>se Axiome<br />

auf e<strong>in</strong>e normale T-Box (<strong>die</strong> nur Äquivalenzen enthält) zurückführen, wobei man den<br />

Freiheitsgrad <strong>in</strong> e<strong>in</strong>en neuen Namen ko<strong>die</strong>rt:<br />

Enthalten <strong>die</strong> term<strong>in</strong>ologischen Axiome Inklusionen und kommen alle Namen auf l<strong>in</strong>ken<br />

Seite von Def<strong>in</strong>itionen und Inklusionen nur jeweils e<strong>in</strong>mal auf l<strong>in</strong>ken Seiten vor, dann<br />

kann man daraus e<strong>in</strong>e äquivalente T-Box machen durch folgendes Verfahren:<br />

• Zu je<strong>der</strong> Inklusion A ⊑ C A erf<strong>in</strong>de e<strong>in</strong>en neuen Namen Â.<br />

• Ersetze <strong>die</strong> Inklusion A ⊑ C A durch <strong>die</strong> Def<strong>in</strong>ition A ≡ Â ⊓ C A.<br />

Damit hat man aus Inklusionen Gleichungen gemacht. Als Preis muss man neue Namen<br />

e<strong>in</strong>führen. Die Modelle vorher und nachher s<strong>in</strong>d <strong>die</strong> gleichen, wenn man sich beim Vergleich<br />

<strong>der</strong> Interpretationen auf <strong>die</strong> geme<strong>in</strong>samen Namen beschränkt.<br />

D.h. Inklusionen s<strong>in</strong>d nur dann kritisch, wenn man von bereits def<strong>in</strong>ierten Namen noch<br />

e<strong>in</strong>e extra Inklusion verlangt.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 235 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

Beispiel 7.3.10. Hat man <strong>die</strong> T-Box<br />

Mann ⊑ Person<br />

, so kann man mit dem eben beschrieben Verfahren, daraus <strong>die</strong> T-Box<br />

Mann ≡ ̂Mann ⊓ Person<br />

machen (dabei ist ̂Mann <strong>der</strong> neu e<strong>in</strong>geführte Konzeptname).<br />

An<strong>der</strong>s verhält es sich bei <strong>der</strong> T-Box:<br />

Hier genügt es nicht, daraus <strong>die</strong> T-Box<br />

Mann ≡ Person ⊓ ¬Frau<br />

Mann ⊑ Tier<br />

Mann ≡ Person ⊓ ¬Frau<br />

Mann ≡ ̂Mann ⊓ Tier<br />

zu erzeugen, da <strong>die</strong>se nicht e<strong>in</strong>fach <strong>in</strong>terpretiert werden kann, denn es gibt jetzt zwei Def<strong>in</strong>ition<br />

für Mann.<br />

7.3.4 Beschreibung von Modellen: Die A-Box<br />

Von term<strong>in</strong>ologischen Axiomen bzw. im Spezialfall von T-Boxen wird nur e<strong>in</strong>e Struktur<br />

auf den Konzepten erzwungen. Was fehlt, ist e<strong>in</strong>e konkretere Beschreibung von Modellen<br />

(Interpretationen). In <strong>die</strong>sem S<strong>in</strong>n entspricht e<strong>in</strong>e T-Box e<strong>in</strong>em Datenbankschema, während<br />

e<strong>in</strong>e A-Box e<strong>in</strong>er Datenbank dazu entspricht. Der Name A-Box ist von Assertion<br />

hergeleitet.<br />

Def<strong>in</strong>ition 7.3.11. Gegeben e<strong>in</strong>e T-Box T .<br />

E<strong>in</strong>e A-Box A zu T ist def<strong>in</strong>iert als Menge von Annahmen über Individuen (Objekte) <strong>der</strong> Formen<br />

• C(a) wobei C e<strong>in</strong> Konzeptterm ist und a e<strong>in</strong> Individuenname.<br />

• R(a, b) wobei R e<strong>in</strong>e Rolle ist (evtl. e<strong>in</strong> Rollenterm) und a, b s<strong>in</strong>d Individuennamen.<br />

Man kann e<strong>in</strong>e A-Box auch allgeme<strong>in</strong>er auf Basis e<strong>in</strong>er Menge von term<strong>in</strong>ologischen<br />

Axiomen def<strong>in</strong>ieren.<br />

Beispiel 7.3.12. Beispiele für E<strong>in</strong>träge <strong>in</strong> e<strong>in</strong>er A-Box s<strong>in</strong>d<br />

MutterMitTochter(Maria)<br />

Vater(Peter)<br />

hatK<strong>in</strong>d(Maria, Paul)<br />

hatK<strong>in</strong>d(Maria, Peter)<br />

hatK<strong>in</strong>d(Peter, Harry)<br />

Stand: 31. Januar 2013 236 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.3 T-Box und A-Box<br />

Dabei s<strong>in</strong>d Peter, Harry, Maria und Paul Konstanten.<br />

Das hat Ähnlichkeiten mit e<strong>in</strong>er Datenbank <strong>in</strong> Prolog, bzw. mit Datalog und deduktiven<br />

Datenbanken. Allerd<strong>in</strong>gs s<strong>in</strong>d <strong>in</strong> Konzeptbeschreibungssprachen allgeme<strong>in</strong>ere Konzeptterme<br />

möglich. z.B. ist<br />

(∃hatK<strong>in</strong>d.Person)(Michael)<br />

ebenfalls e<strong>in</strong> gültiger E<strong>in</strong>trag.<br />

Def<strong>in</strong>ition 7.3.13 (Semantik <strong>der</strong> A-Box). Die Semantik I e<strong>in</strong>er A-Box A zur T-Box T erweitert<br />

<strong>die</strong> Semantik e<strong>in</strong>er T-Box: Sei I e<strong>in</strong>e Interpretation zur T-Box T . Die Interpretation kann auf <strong>die</strong><br />

A-Box A erweitert werden durch:<br />

• Jedem Individuennamen a wird e<strong>in</strong> Objekt I(a) ∈ ∆ zugeordnet. Hierbei wird <strong>die</strong> sogenannte<br />

unique names assumption beachtet: Verschiedenen Individuennamen werden verschiedenen<br />

Objekte zugeordnet, d.h. I(a) = I(b) gdw. a = b.<br />

• Für C(a) ∈ A, ist I(C(a)) = 1 gdw. I(a) ∈ I(C).<br />

• Für R(a, b) ∈ A ist I(R(a, b)) = 1 gdw. (I(a), I(b)) ∈ I(R) gilt.<br />

7.3.5 T-Box und A-Box: Term<strong>in</strong>ologische Beschreibung<br />

E<strong>in</strong>e term<strong>in</strong>ologische Beschreibung (o<strong>der</strong> auch term<strong>in</strong>ologische Datenbank) besteht aus<br />

• Menge von term<strong>in</strong>ologischen Axiomen.<br />

• Mengen von Annahmen über Existenz und Eigenschaft von Objekten (A-Box)<br />

Das kann als Spezialfall e<strong>in</strong>e Komb<strong>in</strong>ation von T-Box und A-Box se<strong>in</strong>.<br />

Beispiel 7.3.14. E<strong>in</strong> Beispiel für e<strong>in</strong>e T-Box und e<strong>in</strong>e zugehörige A-Box ist:<br />

T-Box:<br />

Motor ⊑ Komponente<br />

Lampe ⊑ Komponente ⊓ (¬Motor)<br />

Stecker ⊑ Komponente ⊓ (¬Lampe) ⊓ (¬Motor)<br />

Gerät ⊑ (∀hatTeil.Komponente) ⊓ (¬Komponente)<br />

ElektroGerät ≡ Gerät ⊓ (∃hatTeil.Stecker)<br />

A-Box:<br />

Motor(Motor1234)<br />

Komponente(Lichtmasch<strong>in</strong>e320)<br />

hatTeil(Motor1234, Lichtmasch<strong>in</strong>e320)<br />

. . .<br />

Def<strong>in</strong>ition 7.3.15. Gegeben e<strong>in</strong>e T-Box T und e<strong>in</strong>e A-Box A.<br />

• Dann ist A konsistent, wenn es Modell I von T gibt, das alle E<strong>in</strong>träge <strong>in</strong> <strong>der</strong> A-Box wahr<br />

macht.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 237 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

• Wir schreiben A |= C(a) gdw. für alle Modelle I von T , <strong>die</strong> alle E<strong>in</strong>träge <strong>der</strong> A-Box wahr<br />

machen, auch I(C(a)) gilt.<br />

Folgende Inferenzen und Anfragen an T-Box und A-Box s<strong>in</strong>d von praktischem Interesse:<br />

• Konsistenztest: Prüfen, ob def<strong>in</strong>ierte Konzepte konsistent s<strong>in</strong>d.<br />

Motor ⊓ (¬Motor) ist <strong>in</strong>konsistent, d.h. es gibt ke<strong>in</strong>e Objekte <strong>in</strong> <strong>die</strong>sem Konzept.<br />

Damit kann man auch erkennen, ob e<strong>in</strong>e A-Box wi<strong>der</strong>sprüchliche Annahmen enthält.<br />

Z.B ist (Motor ⊓ ¬Motor)(Motor123) nicht erfüllbar.<br />

• Subsumtionstest: Prüfen, ob e<strong>in</strong> Konzept e<strong>in</strong>e Untermenge e<strong>in</strong>es an<strong>der</strong>en ist o<strong>der</strong> ob<br />

Konzepte disjunkt s<strong>in</strong>d. Dadurch kann man z.B. <strong>die</strong> Struktur <strong>der</strong> Term<strong>in</strong>ologie angeben.<br />

• Retrieval Problem Berechne alle Instanzen e<strong>in</strong>es Konzepts, wobei nur auf <strong>die</strong> Konstanten<br />

<strong>in</strong> <strong>der</strong> A-Box zugegriffen werden darf. z.B. „Welche Motoren gibt es ?“<br />

Das kann man formal schreiben als <strong>die</strong> Frage: Zu gegebenem Konzept C, f<strong>in</strong>de alle<br />

a mit A |= C(a).<br />

• P<strong>in</strong>po<strong>in</strong>t<strong>in</strong>g (bzw. Realization Problem) Das ist <strong>die</strong> E<strong>in</strong>ordnung von Objekten <strong>in</strong> Konzepte.<br />

Z.B. <strong>die</strong> Frage: „Ist Staubsauger1 e<strong>in</strong> ElektroGerät?“ Genauer kann man <strong>die</strong>se<br />

Anfrage spezifieren als: Gegeben e<strong>in</strong> Individuum a, f<strong>in</strong>de das spezifischste Konzept<br />

C, so dass A |= C(a) gilt. D.h. f<strong>in</strong>de das kle<strong>in</strong>ste Konzept <strong>in</strong> <strong>der</strong> Subsumtionsordnung.<br />

Es gibt folgende Zusammenhänge zwischen den Inferenzproblemen <strong>der</strong> A-Box und T-<br />

Box:<br />

Satz 7.3.16. Es gilt:<br />

• A |= C(a) gdw. A ∪ {¬C(a)} ist <strong>in</strong>konsistent.<br />

• C ist konsistent gdw. C(a) konsistent ist für e<strong>in</strong>en neuen Namen a.<br />

Beweis. Der erste Teil gilt, da e<strong>in</strong> Modell für <strong>die</strong> T-Box, das alle Axiome aus A wahr macht,<br />

auch C(a) wahr machen muss, damit A |= C(a) gilt; jedes solche Modell muss daher<br />

¬C(a) falsch machen, und daher ist A ∪ {¬C(a)} <strong>in</strong>konsistent.<br />

Der zweite Teil gilt, da C(a) nur dann wahr werden kann, wenn I(C) nicht leer ist.<br />

7.3.6 Erweiterung <strong>der</strong> Term<strong>in</strong>ologie um Individuen<br />

Man kann <strong>in</strong> <strong>der</strong> T-Box auch Konzepte erlauben, <strong>die</strong> man als Aufzählungskonzepte ansehen<br />

kann: Die Syntax ist:<br />

A ≡ {a 1 , . . . .a n }<br />

Stand: 31. Januar 2013 238 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.3 T-Box und A-Box<br />

wobei a i Individuennamen s<strong>in</strong>d. Die Semantik ist fixiert so dass I({a 1 , . . . , a n }) =<br />

{I(a 1 ), . . . , I(a n )} gilt.<br />

Damit kann man z.B. das Konzept Grundfarben ≡ {rot, blau, gelb} def<strong>in</strong>ieren.<br />

Man kann den Effekt allerd<strong>in</strong>gs auch ko<strong>die</strong>ren, wenn man ⊓, ⊔, ¬ <strong>in</strong> <strong>der</strong> Beschreibungssprache<br />

hat.<br />

7.3.7 Open-World und Closed-World Semantik<br />

Im Gegensatz zu Datenbanken bei denen <strong>die</strong> Closed-World-Semantik angenommen wird,<br />

<strong>die</strong> e<strong>in</strong>e e<strong>in</strong>deutige Semantik bei Datenbanken garantiert, benutzt man bei A-Boxen <strong>der</strong><br />

Beschreibungssprachen <strong>die</strong> Open-World-Semantik. D.h., man geht davon aus, dass man<br />

unvollständiges Wissen hat. Der Schlussfolgerungsmechanismus wird somit fehlende<br />

E<strong>in</strong>träge nicht als negative E<strong>in</strong>träge werten. Da <strong>die</strong> Logik nicht auf Hornklauseln beruht,<br />

ist das auch <strong>die</strong> bessere Wahl, denn CWA + nicht-Hornklauseln können zu Inkonsistenzen<br />

führen.<br />

In <strong>der</strong> Open-World Semantik kann man neue Fakten h<strong>in</strong>zufüge, ohne dass alte Schlüsse<br />

ungültig werden; d.h. Schlussfolgern ist monoton.<br />

Den Unterschied kann man sich klarmachen am Beispiel: hatK<strong>in</strong>d(Maria, Peter). Wenn<br />

das <strong>der</strong> e<strong>in</strong>zige E<strong>in</strong>trag <strong>in</strong> e<strong>in</strong>er Datenbank ist, dann hat Peter ke<strong>in</strong>e Geschwister. Wenn<br />

es <strong>der</strong> e<strong>in</strong>zige E<strong>in</strong>trag <strong>in</strong> e<strong>in</strong>er A-Box ist, dann ist es durchaus möglich, dass Peter noch<br />

weitere Geschwister hat, nur hat <strong>die</strong> A-Box darüber ke<strong>in</strong>e Information. Man kann aber<br />

mit <strong>der</strong> Angabe (≤ 1 hatK<strong>in</strong>d)(Maria) <strong>in</strong> <strong>der</strong> A-Box <strong>die</strong> Information e<strong>in</strong>tragen, dass es<br />

ke<strong>in</strong>e Geschwister gibt.<br />

Beispiel 7.3.17. Dieses Beispiel <strong>die</strong>nt <strong>der</strong> Illustration des Verhaltens <strong>der</strong> Inferenzen durch <strong>die</strong><br />

Open-World-Annahme.<br />

E<strong>in</strong>e A-Box A oed zum Problem des Ödipus:<br />

hatK<strong>in</strong>d(Iokaste, Ödipus)<br />

hatK<strong>in</strong>d(Ödipus, Polyneikes)<br />

Vatermör<strong>der</strong>(Ödipus)<br />

hatK<strong>in</strong>d(Iokaste, Polyneikes)<br />

hatK<strong>in</strong>d(Polyneikes, Thersandros)<br />

¬Vatermör<strong>der</strong>(Thersandros)<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 239 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

Iokaste<br />

hatK<strong>in</strong>d<br />

hatK<strong>in</strong>d<br />

Ödipus<br />

Vatermör<strong>der</strong><br />

hatK<strong>in</strong>d<br />

Polyneikes<br />

hatK<strong>in</strong>d<br />

Thersandros<br />

¬Vatermör<strong>der</strong><br />

Frage: kann man aus <strong>die</strong>ser A-Box folgendes schließen?<br />

A oed |= (∃hatK<strong>in</strong>d.(Vatermör<strong>der</strong> ⊓ (∃hatK<strong>in</strong>d.¬Vatermör<strong>der</strong>)))(Iokaste)<br />

Schaut man sich das an, dann könnte man folgen<strong>der</strong>maßen schließen:<br />

Iokaste hat zwei K<strong>in</strong><strong>der</strong>, Ödipus und Polyneikes. Bei Ödipus ist <strong>der</strong> erste Teil erfüllt,<br />

aber man kann nichts über den zweiten Teil <strong>der</strong> Konjunktion sagen, da es ke<strong>in</strong> Wissen über<br />

Vatermör<strong>der</strong>(Polyneikes) gibt. Nimmt man Polyneikes als Kandidat, so weiss man nicht, dass<br />

er Vatermör<strong>der</strong> ist, also sche<strong>in</strong>t man nichts schließen zu können.<br />

Korrekt ist aber, dass man e<strong>in</strong>e Fallunterscheidung machen kann: Polyneikes ist entwe<strong>der</strong><br />

Vatermör<strong>der</strong> o<strong>der</strong> nicht. Im ersten Fall ist er <strong>der</strong> Kandidat, <strong>der</strong> <strong>die</strong> Formel als hatK<strong>in</strong>d von Iokaste<br />

erfüllt. Im zweiten Fall ist <strong>der</strong> Kandidat Ödipus. Somit kann man obige Formel aus <strong>der</strong> A-Box<br />

schließen.<br />

Wie <strong>die</strong>ses Beispiel zeigt, kann <strong>die</strong> Open-World-Annahme Fallunterscheidungen erfor<strong>der</strong>lich<br />

machen, um korrekt und vollständig schließen zu können.<br />

7.4 Inferenzen <strong>in</strong> Beschreibungslogiken: Subsumtion<br />

7.4.1 Struktureller Subsumtionstest für <strong>die</strong> e<strong>in</strong>fache Sprache FL 0<br />

Wir wie<strong>der</strong>holen: Die Beschreibungssprache FL 0 hat als Konstrukte nur Konjunktion und<br />

Wertbeschränkungen, d.h. nur atomare Konzepte, C ⊓ D und ∀R.C s<strong>in</strong>d möglich. Diese<br />

Sprache ist e<strong>in</strong>e Untersprache von AL. Wir betrachten sie hier, um e<strong>in</strong>en sogenannten<br />

strukturellen Subsumtionstest zu illustrieren.<br />

Da Komplemente fehlen, gibt es <strong>in</strong> FL 0 ke<strong>in</strong>en direkten Zusammenhang zwischen Inkonsistenz<br />

von Konzepten und Subsumtion.<br />

Es gilt:<br />

Lemma 7.4.1. Alle Konzepte <strong>in</strong> FL 0 s<strong>in</strong>d konsistent.<br />

Stand: 31. Januar 2013 240 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.4 Inferenzen <strong>in</strong> Beschreibungslogiken: Subsumtion<br />

Beweis. Das kann man ganz e<strong>in</strong>fach dadurch zeigen, dass man e<strong>in</strong>e Interpretation I angibt,<br />

<strong>die</strong> folgendes erfüllt:<br />

I(A) = ∆ für alle atomaren Konzepte A<br />

I(R) = ∆ × ∆ für alle Rollen R<br />

Dann werden sogar alle zusammengesetzten Konzepte C immer als I(C) = ∆ <strong>in</strong>terpretiert.<br />

D.h. <strong>der</strong> Konsistenztest <strong>in</strong> FL 0 ist trivial. Das kommt daher, dass man ke<strong>in</strong>e Möglichkeit<br />

hat, Konzepte mittels Negation e<strong>in</strong>zuschränken.<br />

Trotzdem ist <strong>der</strong> Subsumtionstest für FL 0 nichttrivial. Z.B. gilt sicher A ⊓ B ⊑ A, aber<br />

A ⋢ A ⊓ B für atomare Konzepte A, B.<br />

7.4.1.1 Struktureller Subsumtionstest<br />

Allgeme<strong>in</strong> (nicht nur <strong>in</strong> FL 0 ) lässt sich <strong>der</strong> strukturelle Subsumtionstest, <strong>der</strong> C ⊑ D testet,<br />

durch <strong>die</strong> folgenden beiden Schritte beschreiben:<br />

1. Br<strong>in</strong>ge C und D <strong>in</strong> e<strong>in</strong>e Normalform C ′ bzw. D ′ .<br />

2. Vergleiche C ′ und D ′ syntaktisch.<br />

Beide Teile variieren von Sprache zu Sprache.<br />

In FL 0 ist e<strong>in</strong>e Normalform folgen<strong>der</strong>maßen def<strong>in</strong>iert:<br />

A 1 ⊓ . . . ⊓ A m ⊓ ∀R 1 .C 1 ⊓ . . . ⊓ ∀R n .C n<br />

wobei <strong>die</strong> Kommutativität und Assoziativität von ⊓ ausgenutzt wird, um Klammern wegzulassen,<br />

und A i verschiedene atomare Konzepte s<strong>in</strong>d, <strong>die</strong> R i verschiedene Rollensymbole<br />

s<strong>in</strong>d, und C i Konzepte <strong>in</strong> Normalform s<strong>in</strong>d.<br />

D.h. e<strong>in</strong> Normalformalgorithmus für FL 0 wird folgendes tun:<br />

• assoziativ Ausklammern, dann Umsortieren, und dann gleiche A i <strong>in</strong> Konjunktionen<br />

elim<strong>in</strong>ieren.<br />

• Falls es e<strong>in</strong>en Unterausdruck ∀R.C ⊓ ∀R.D gibt, nutzt man aus, dass <strong>die</strong>ser äquivalent<br />

zu ∀R.C ⊓ D ist, da das Rollensymbol das gleiche ist.<br />

Als Begründung folgende Gleichungskette:<br />

{x | ∀y.xI(R)y ⇒ y ∈ I(C 1 ) ∩ I(C 2 )}<br />

= {x|∀y.¬(x I(R) y ∨ y ∈ I(C 1 ) ∩ I(C 2 )}<br />

= {x|∀y.(¬(x I(R) y) ∨ y ∈ I(C 1 ) ∧ (¬(x I(R) y) ∨ y ∈ I(C 2 )}<br />

= {x|∀y.(¬(x I(R) y) ∨ y ∈ I(C 1 )) ∧ ∀y.¬(x I(R) y) ∨ y ∈ I(C 2 )}<br />

= I((∀ R.C 1 ) ⊓ (∀ R.C 2 ))<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 241 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

• Es wird rekursiv <strong>in</strong> den rechten Seiten C aller Ausdrücke ∀R.C dasselbe Verfahren<br />

durchgeführt.<br />

Der Vergleich zweier Normalformen wird folgen<strong>der</strong>maßen durchgeführt: Angenommen,<br />

wir haben zwei Ausdrücke D, D ′ :<br />

und<br />

Dann ist D ⊑ D ′ gdw:<br />

D ≡ A 1 ⊓ . . . ⊓ A m ⊓ ∀R 1 .C 1 ⊓ . . . ⊓ ∀R n .C n<br />

D ′ ≡ A ′ 1 ⊓ . . . ⊓ A ′ m ′ ⊓ ∀R′ 1.C ′ 1 ⊓ . . . ⊓ ∀R ′ n ′.C′ n ′<br />

• Jedes atomare Konzept A ′ i kommt unter den A j vor und<br />

• zu jedem Ausdruck ∀R i ′.C′ i gibt es e<strong>in</strong>en Ausdruck ∀R j.C j , so dass <strong>die</strong> Rollennamen<br />

gleich s<strong>in</strong>d, d.h. R i ′ = R j und C j von C i ′ subsumiert wird. Dieser Test wird rekursiv<br />

durchgeführt.<br />

Dieser Subsumtionstest ist korrekt und vollständig. Dabei bedeutet „korrekt“ , dass bei<br />

Antwort „ja“auch wirklich I(D) ⊆ I(D ′ ) <strong>in</strong> allen Modellen I gilt. „Vollständig“ bedeutet,<br />

dass <strong>die</strong> Antwort „ne<strong>in</strong>“ impliziert, dass es e<strong>in</strong> Modell I gibt, das e<strong>in</strong> Gegenbeispiel ist,<br />

d.h. I(D) ⊈ I(D ′ ) für e<strong>in</strong> Modell I.<br />

Will man e<strong>in</strong>en Beweis führen, so ist es relativ e<strong>in</strong>fach zu begründen, dass er korrekt<br />

ist, da man <strong>die</strong> Mengensemantik verwenden kann:<br />

• Für <strong>die</strong> atomaren Konzepte: Da jedes atomare Konzept A ′ i unter den A j vorkommt,<br />

können wir A 1 ⊓ . . . ⊓ A m auch umschreiben zu A ′ 1 ⊓ . . . ⊓ A′ m<br />

⊓ A ′′ ′ 1 ⊓ A′′ k<br />

wobei A′′ i<br />

irgendwelche <strong>der</strong> A i s<strong>in</strong>d. Nimmt man nun <strong>die</strong> Interpretation so sieht man leicht:<br />

I(A ′ 1) ∩ . . . ∩ I(A ′ m ′) ∩ I(A′′ 1) ∩ I(A ′′<br />

k ) ⊆ I(A′ 1) ∩ . . . ∩ I(A ′ m ′)<br />

da Schnitte <strong>die</strong> Mengen nur verkle<strong>in</strong>ern.<br />

• Für <strong>die</strong> Wertbeschränkungen reicht es zu zeigen, dass I(∀R j .C j ) ⊆ I(∀R i ′.C′ i ) wenn<br />

R j und R i ′ <strong>die</strong> gleichen Rollennamen s<strong>in</strong>d und C j ⊑ C i ′ . Wir schreiben zur vere<strong>in</strong>fachten<br />

Darstellung R anstelle von R j , R i ′: Aus C j ⊑ C i ′ dürfen wir schließen<br />

I(C j ) ⊆ I(C i ′ ) für jedes Modell I. Da<br />

I(∀R.C j ) = {x ∈ ∆ | ∀y.(x, y) ∈ I(R) =⇒ y ∈ I(C j )}<br />

und<br />

I(∀R.C ′ i) = {x ∈ ∆ | ∀y.(x, y) ∈ I(R) =⇒ y ∈ I(C ′ i)}<br />

sieht man, dass <strong>die</strong> erste Menge kle<strong>in</strong>er (o<strong>der</strong> gleich) se<strong>in</strong> muss.<br />

Stand: 31. Januar 2013 242 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.4 Inferenzen <strong>in</strong> Beschreibungslogiken: Subsumtion<br />

• Schließlich muss man sich noch klar machen, dass S 1 ⊆ S 1 ′ und S 2 ⊆ S 2 ′ impliziert<br />

S 1 ∩ S 2 ⊆ S 1 ′ ∩ S′ 2 (damit wir <strong>die</strong> beiden Teile: atomare Konzepte und Wertbeschränkungen<br />

getrennt vone<strong>in</strong>an<strong>der</strong> betrachten durften).<br />

Die Vollständigkeit kann man z.B. zeigen, <strong>in</strong>dem man im Falle, dass <strong>der</strong> Algorithmus<br />

scheitert, e<strong>in</strong> Modell angibt, <strong>in</strong> dem <strong>die</strong> Subsumtionsbeziehung tatsächlich nicht gilt.<br />

Die Komplexität <strong>die</strong>ses Algorithmus kann man wie folgt abschätzen:<br />

Die Normalformherstellung arbeitet auf <strong>der</strong> Termstruktur und sortiert s<strong>in</strong>nvollerweise,<br />

d.h. man hat e<strong>in</strong>en Anteil O(n∗log(n)) für <strong>die</strong> Herstellung <strong>der</strong> Normalform. Das rekursive<br />

Vergleichen ist analog und könnte <strong>in</strong> e<strong>in</strong>er sortierten Darstellung sogar l<strong>in</strong>ear gemacht<br />

werden. Insgesamt hat man O(n ∗ log(n)) als Größenordnung des Zeitbedarfs.<br />

Beispiel 7.4.2. Betrachte <strong>die</strong> FL 0 -Konzeptdef<strong>in</strong>itionen:<br />

C 1 ≡ (∀R 1 .A 1 ) ⊓ A 2 ⊓ (∀R 2 .A 5 ) ⊓ (∀R 2 .∀R 1 .(A 2 ⊓ A 3 ⊓ A 4 ))<br />

C 2 ≡ ((∀R 2 .∀R 1 .A 4 ) ⊓ A 2 ⊓ (∀R 2 .∀R 1 .(A 3 ⊓ A 4 ))<br />

Wir testen, ob C 1 ⊑ C 2 und ob C 2 ⊑ C 1 mithilfe des strukturellen Subsumtionstests. Zunächst<br />

berechnen wir <strong>die</strong> Normalformen NF (C 1 ), NF (C 2 ):<br />

Normalformberechnung für C 1 :<br />

C 1 ≡ (∀R 1 .A 1 ) ⊓ A 2 ⊓ (∀R 2 .A 5 ) ⊓ (∀R 2 .∀R 1 .(A 2 ⊓ A 3 ⊓ A 4 ))<br />

→ A 2 ⊓ (∀R 1 .A 1 ) ⊓ (∀R 2 .A 5 ) ⊓ (∀R 2 .∀R 1 .(A 3 ⊓ A 4 ))<br />

→ A 2 ⊓ (∀R 1 .A 1 ) ⊓ (∀R 2 .A 5 ⊓ (∀R 1 .(A 2 ⊓ A 3 ⊓ A 4 ))) = NF (C 1 )<br />

Normalformberechnung für C 2 :<br />

C 2 ≡ ((∀R 2 .∀R 1 .A 4 ) ⊓ A 2 ⊓ (∀R 2 .∀R 1 .(A 3 ⊓ A 4 ))<br />

→ A 2 ⊓ ((∀R 2 .∀R 1 .A 4 ) ⊓ (∀R 2 .∀R 1 .(A 3 ⊓ A 4 ))<br />

→ A 2 ⊓ (∀R 2 .((∀R 1 .A 4 ) ⊓ ∀R 1 .(A 3 ⊓ A 4 )))<br />

→ A 2 ⊓ (∀R 2 .(∀R 1 .(A 4 ⊓ A 3 ⊓ A 4 ))<br />

→ A 2 ⊓ (∀R 2 .(∀R 1 .(A 3 ⊓ A 4 )) = NF (C 2 )<br />

Nun müssen wir <strong>die</strong> Normalformen vergleichen: Die atomaren Konzepte s<strong>in</strong>d genau gleich, da beide<br />

Normalformen A 2 als atomares Konzept <strong>in</strong> <strong>der</strong> Konjuktion haben. Für <strong>die</strong> Wertbeschränkungen:<br />

Da ∀R 1 . . . . nur <strong>in</strong> <strong>der</strong> NF (C 1 ) vorkommt, können wir sofort schließen C 2 ⋢ C 1 . Für C 1 ⊑ C 2<br />

müssen wir für ∀R 2 . . . . rekursiv zeigen Das erfor<strong>der</strong>t als rekursiven Vergleich: A 5 ⊓ (∀R 1 .(A 2 ⊓<br />

A 3 ⊓ A 4 ))) ⊑ (∀R 1 .(A 3 ⊓ A 4 )) Für <strong>die</strong> atomaren Konzepte ist <strong>der</strong> Vergleich erfolgreich, da A 5<br />

nur l<strong>in</strong>ks vorkommt. Für <strong>die</strong> Wertbeschränkungen müssen wir rekursiv vergleichen: (A 2 ⊓ A 3 ⊓<br />

A 4 ) ⊑ (A 3 ⊓ A 4 ) was offensichtlich erfüllt ist. Daher dürfen wir schließen C 1 ⊑ C 2 .<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 243 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

7.4.2 Struktureller Subsumtionstest für weitere DL-Sprachen<br />

7.4.2.1 Subsumtionstest für <strong>die</strong> Sprache FL −<br />

Die Sprache FL − hat ⊓, ∀R.C, (∃R.⊤) als Konstrukte. Der Subsumtionsalgorithmus für<br />

FL − geht vor wie <strong>der</strong> Subsumtionstest für FL 0 :<br />

1. Br<strong>in</strong>ge <strong>die</strong> Konzeptterme <strong>in</strong> e<strong>in</strong>e FL − -Normalform:<br />

A 1 ⊓ . . . ⊓ A m<br />

⊓ ∀R 1 .C 1 ⊓ . . . ⊓ ∀R n .C n<br />

⊓ ∃R 1 ′ .⊤ ⊓ . . . ⊓ ∃R′ k .⊤<br />

Analog wie <strong>in</strong> FL 0 fasst man ∀R.C-Ausdrücke zusammen, wenn das gleiche Rollensymbol<br />

vorkommt.<br />

2. Jetzt vergleicht man strukturell, wobei man genauso wie bei FL 0 vorgeht, nur dass<br />

man ∃R.⊤-Ausdrücke wie atomare Konzepte behandelt.<br />

Auch <strong>der</strong> FL − -Subsumtions-Algorithmus ist korrekt und vollständig.<br />

Der Zeitaufwand des Algorithmus ist O(n ∗ log(n)).<br />

7.4.2.2 Weitere Sprachen<br />

Erweitert man FL 0 um das konstante Konzept ⊥, dann kann man ebenfalls e<strong>in</strong>en Subsumtionstest<br />

durchführen, nur muss man beachten, dass man Konjunktionen, <strong>die</strong> ⊥ enthalten<br />

zu ⊥ vere<strong>in</strong>facht, und dass ⊥ von allen Konzepten subsumiert wird.<br />

Erweitert man FL 0 um ⊥ und atomare Negation, d.h. zusätzlich ist noch ¬A für atomare<br />

Konzepte A erlaubt, dann kann man ebenfalls e<strong>in</strong>en strukturellen Subsumtionsalgorithmus<br />

angeben.<br />

Zusätzlich muss nur beachtet werden:<br />

• kommt <strong>in</strong> e<strong>in</strong>er Konjunktion A und ¬A vor, dann wird <strong>die</strong> gesamte Konjunktion<br />

durch ⊥ ersetzt.<br />

• ⊥ wird von allen Konzepten subsumiert.<br />

• Beim Vergleich von Normalformen werden negierte Atome wie neue Namen behandelt<br />

(das man ersetzt ¬A durch NOT A vor dem Vergleich.<br />

7.4.2.3 Subsumtions-Algorithmus für AL<br />

Wir können somit auch e<strong>in</strong>en strukturellen Subsumtions-Algorithmus für AL angeben:<br />

Es fehlen an Konstrukten nur: ⊤ und ∃R.⊤.<br />

Zu beachten ist:<br />

Stand: 31. Januar 2013 244 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.4 Inferenzen <strong>in</strong> Beschreibungslogiken: Subsumtion<br />

• In Konjunktionen, <strong>die</strong> ⊤ enthalten, kann man das ⊤ streichen.<br />

• Das Konzept ∀R.⊤ kann man durch ⊤ ersetzen. Ebenso kann man ¬⊤ und ¬⊥ direkt<br />

vere<strong>in</strong>fachen. D.h. bei <strong>der</strong> Normalformherstellung spielt ⊤ ke<strong>in</strong>e Rolle. Es kann nur<br />

als Gesamtergebnis vorkommen (abgesehen von <strong>der</strong> Syntax ∃R.⊤).<br />

• Bei <strong>der</strong> Subsumtion ist nur zu beachten, dass ⊤ alles subsumiert.<br />

7.4.2.4 Konflikte bei Anzahlbeschränkungen<br />

Wenn Anzahlbeschränkungen mit betrachtet werden, dann ergeben sich weitere Möglichkeiten<br />

für Konflikte, <strong>die</strong> <strong>in</strong> strukturellen Subsumtionsalgorithmen zu beachten s<strong>in</strong>d:<br />

Z.B. gibt es e<strong>in</strong>e Interferenz zwischen ∀R.⊥ und (≥ 1 R). Das kann bei Schnitten e<strong>in</strong><br />

Konflikt se<strong>in</strong>: ∀R.⊥ ⊓ (≥ 1 R) ist äquivalent zu ⊥. Es gibt auch neue Subsumtionen zu<br />

beachten: (≥ n R) ⊑ (≥ m R) gdw. n ≥ m.<br />

Es gibt weitere Sprachen, <strong>die</strong> e<strong>in</strong>en strukturellen Subsumtionsalgorithmus haben:<br />

ALE AL erweitert um ∃R.C.<br />

ALU AL erweitert um ⊔.<br />

ALN AL erweitert um Anzahlbeschränkungen (≤ n R).<br />

Die Sprache ALN hat e<strong>in</strong>en polynomiellen und strukturellen Subsumtionsalgorithmus.<br />

Die Sprache FL h<strong>in</strong>gehgen hat e<strong>in</strong> PSPACE-vollständiges Subsumtionsproblem.<br />

Allerd<strong>in</strong>gs s<strong>in</strong>d strukturelle Subsumtionsalgorithmen i.a. ungeeignet, wenn Disjunktion<br />

(d.h. Vere<strong>in</strong>igung) o<strong>der</strong> volle Negation vorkommt, z.B. <strong>in</strong> <strong>der</strong> Sprache ALC.<br />

7.4.3 Subsumtion und Äquivalenzen <strong>in</strong> ALC<br />

ALC ist <strong>die</strong> Konzeptbeschreibungssprache, <strong>die</strong> ⊓, ⊔, ¬, ⊥, ⊤, ∀R.C, ∃R.C erlaubt, aber nur<br />

atomare Rollen und ke<strong>in</strong>e Anzahlbeschränkungen.<br />

In <strong>die</strong>ser Sprache kann man mittels <strong>der</strong> Semantik zeigen, dass folgende Äquivalenzen<br />

gelten:<br />

¬(C 1 ⊓ C 2 ) ≡ (¬ C 1 ) ⊔ (¬ C 2 )<br />

¬(C 1 ⊔ C 2 ) ≡ (¬ C 1 ) ⊓ (¬ C 2 )<br />

¬(¬ C) ≡ C<br />

¬(∀R.C) ≡ (∃R.(¬ C))<br />

¬ (∃R.C) ≡ (∀R.(¬ C))<br />

¬ ⊥ ≡ ⊤<br />

¬ ⊤ ≡ ⊥<br />

Beispiel 7.4.3. Analog zur Prädikatenlogik gilt <strong>die</strong> folgende Gleichung nicht!<br />

(∀R.(C 1 ⊔ C 2 )) = (∀R.C 1 ) ⊔ (∀R.C 2 )<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 245 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

Wir zeigen, dass <strong>die</strong> Gleichung nicht gilt, <strong>in</strong>dem wir e<strong>in</strong> Gegenbeispiel angeben. Sei I <strong>die</strong> Interpretation<br />

mit<br />

∆ = {a, b, c, d}<br />

I(C 1 ) = {a, b}<br />

I(C 2 ) = {b, c}<br />

I(R) = {(d, b), (d, a), (d, c)}<br />

Als Bild:<br />

a<br />

C 1<br />

d<br />

b<br />

c<br />

C 2<br />

Es gilt<br />

I(∀R.(C 1 ⊔ C 2 ))<br />

= {x ∈ {a, b, c, d} | ∀y.(x, y) ∈ {(d, b), (d, a), (d, c)} ⇒ y ∈ {a, b, c}}<br />

= {a, b, c, d}<br />

I((∀R.C 1 ) ⊔ (∀R.C 2 )) = {x ∈ {a, b, c, d} | ∀y.(x, y) ∈ {(d, b), (d, a), (d, c)} ⇒ y ∈ {a, b}}<br />

∪{x ∈ {a, b, c, d} | ∀y.(x, y) ∈ {(d, b), (d, a), (d, c)} ⇒ y ∈ {b, c}}<br />

= {a, b, c}<br />

Da d ∈ I(∀R.(C 1 ⊔ C 2 )) aber d ∉ I((∀R.C 1 ) ⊔ (∀R.C 2 )) s<strong>in</strong>d <strong>die</strong> beiden Konzepte nicht äquivalent.<br />

Lemma 7.4.4. Der Subsumtionstest <strong>in</strong> ALC lässt sich als Konsistenztest formulieren und umgekehrt:<br />

C 1 ⊑ C 2 gilt gdw. (C 1 ⊓ ¬C 2 ) ≡ ⊥<br />

Will man C ≢ ⊥ testen, dann kann man auch C ⊑ ⊥ testen. Da e<strong>in</strong> Entscheidungsverfahren<br />

dann ja o<strong>der</strong> ne<strong>in</strong> sagt, kann man daraus <strong>die</strong> Konsistenz bzw. Inkonsistenz von C<br />

schließen.<br />

7.4.4 E<strong>in</strong> Subsumtionsalgorithmus für ALC<br />

Der Algorithmus zum Subsumtionstest von zwei Konzepten <strong>in</strong> ALC ist e<strong>in</strong> Tableauverfahren.<br />

Es verwendet den Konsistenztest für e<strong>in</strong> Konzept und prüft daher ob e<strong>in</strong>e Interpretation<br />

mit I(C) ≠ ∅ existiert. Die Idee dabei ist: Konstruiere e<strong>in</strong>e solche Interpretation<br />

o<strong>der</strong> zeige, dass jede Konstruktion e<strong>in</strong>er solchen Interpretation scheitern muss. Das Tableauverfahren<br />

arbeitet dabei mit e<strong>in</strong>er neuen Struktur, sogenannten Constra<strong>in</strong>t-Systemen.<br />

Der Algorithmus ist so allgeme<strong>in</strong>, dass er leicht erweiterbar ist, um auch <strong>die</strong> Konsistenz<br />

Stand: 31. Januar 2013 246 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.4 Inferenzen <strong>in</strong> Beschreibungslogiken: Subsumtion<br />

von A-Boxen zu prüfen. Er ist auch leicht erweiterbar auf allgeme<strong>in</strong>ere Konzeptbeschreibungssprachen.<br />

Die Idee des Algorithmus ist es, e<strong>in</strong>e Interpretation aufzubauen, <strong>die</strong> I(C) nicht leer<br />

macht. Dabei geht man vorsichtig vor, so dass <strong>der</strong> Algorithmus entwe<strong>der</strong> bemerkt, dass<br />

e<strong>in</strong> Wi<strong>der</strong>spruch aufgetreten ist, <strong>der</strong> anzeigt, dass das Konzept C leer ist, o<strong>der</strong> es s<strong>in</strong>d<br />

ausreichend viele Objekte und Beziehungen gefunden, <strong>die</strong> e<strong>in</strong> Modell darstellen.<br />

Wir def<strong>in</strong>ieren zunächst <strong>die</strong> Struktur des Constra<strong>in</strong>t-Systems:<br />

Def<strong>in</strong>ition 7.4.5. E<strong>in</strong> Constra<strong>in</strong>t ist e<strong>in</strong>e Folge von Ausdrücken <strong>der</strong> Form:<br />

x : X xRy X ⊑ C X ⊑ Y ⊔ Z X(∀R)Y X(∃R)Y<br />

wobei x, y, z Elemente (von ∆), X, Y, Z Konzeptnamen und C (auch komplexe) Konzepte s<strong>in</strong>d. 3<br />

Wir beschreiben <strong>in</strong>formell, was <strong>die</strong> e<strong>in</strong>zelnen Constra<strong>in</strong>ts bedeuten: Diese entsprechen<br />

Anfor<strong>der</strong>ungen an das Modell I: x : X entspricht <strong>der</strong> Bed<strong>in</strong>gung x ∈ I(X), xRy entspricht<br />

<strong>der</strong> Bed<strong>in</strong>gung (x, y) ∈ I(R), X ⊑ C entpsricht <strong>der</strong> Bed<strong>in</strong>gung I(X) ⊆ I(C), X ⊑ Y ⊔ Z<br />

entspricht <strong>der</strong> Bed<strong>in</strong>gung I(X) ⊆ I(Y ) ∪ I(Z), X(∀R)Y entspricht <strong>der</strong> Bed<strong>in</strong>gung ∀a ∈<br />

I(X) : ∀b : (a, b) ∈ I(R) : b ∈ I(Y ), d.h. für alle Elemente a <strong>in</strong> I(X), <strong>die</strong> l<strong>in</strong>ks <strong>in</strong> I(R)<br />

vorkommen, muss jedes rechte Element b auch <strong>in</strong> I(Y ) se<strong>in</strong>, X(∃R)Y entspricht <strong>der</strong> <strong>der</strong><br />

Bed<strong>in</strong>gung ∀a ∈ I(X) : ∃b.(a, b) ∈ I(R) : b ∈ I(Y ), d.h. für alle Element a <strong>in</strong> I(X) muss<br />

es m<strong>in</strong>destens e<strong>in</strong> Paar (a, b) ∈ I(R) geben, wobei b ∈ I(Y ) ist.<br />

Wie wir gleich sehen werden, wird im ersten Schritt (bevor das Tableau aufgebaut wird)<br />

das Constra<strong>in</strong>t-System aufgefaltet. Hierfür werden <strong>die</strong> folgenden Regeln verwendet:<br />

X ⊑ (∀R.C) → X(∀R)Y, Y ⊑ C, wobei Y e<strong>in</strong> neuer Name<br />

X ⊑ (∃R.C) → X(∃R)Y, Y ⊑ C, wobei Y e<strong>in</strong> neuer Name<br />

X ⊑ C ⊓ D → X ⊑ C, X ⊑ D<br />

X ⊑ C ⊔ D → X ⊑ Y ⊔ Z, Y ⊑ C, Z ⊑ D,<br />

wenn und C o<strong>der</strong> D ke<strong>in</strong> atomares Konzept ist,<br />

und Y, Z s<strong>in</strong>d neue Namen s<strong>in</strong>d.<br />

X ⊑ ⊤ → nichts zu tun<br />

Es ist relativ leicht e<strong>in</strong>zusehen, dass <strong>die</strong>se Regeln term<strong>in</strong>ieren und als Normalform e<strong>in</strong><br />

Constra<strong>in</strong>t-System liefern, dass nur noch Konzeptnamen und negierte Konzeptnamen für<br />

C <strong>in</strong> Constra<strong>in</strong>ts X ⊑ C enthält.<br />

Der zweite Schritt des Verfahrens baut e<strong>in</strong> Tableau auf, <strong>in</strong>dem folgende Regeln benutzt<br />

werden, um Individuen-Variablen korrekt e<strong>in</strong>zufügen und das System zu vervollständigen:<br />

3 Bei Verallgeme<strong>in</strong>erung auf ALCN muss man darauf achten, dass Objektvariablen verschiedene Objekte<br />

bezeichnen<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 247 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

1. Wenn x : X und X(∃R)Y da s<strong>in</strong>d, aber ke<strong>in</strong>e Variable y mit xRy und y : Y , dann<br />

füge e<strong>in</strong>e neue Variable y mit den Constra<strong>in</strong>ts xRy und y : Y e<strong>in</strong>.<br />

2. Wenn x : X, X(∀R)Y, xRy da ist, dann füge y : Y h<strong>in</strong>zu.<br />

3. Wenn x : X, X ⊑ Y ⊔ Z da s<strong>in</strong>d, aber we<strong>der</strong> x : Y noch x : Z, dann füge x : Y o<strong>der</strong><br />

x : Z h<strong>in</strong>zu.<br />

Beachte nur <strong>die</strong> letzte Regel stellt e<strong>in</strong>e Verzweigung im Tableau dar. Beachte auch, dass<br />

Blätter im Tableau mit Constra<strong>in</strong>t-System markiert s<strong>in</strong>d, <strong>die</strong> vervollständigt s<strong>in</strong>d, d.h. ke<strong>in</strong>e<br />

<strong>der</strong> drei Regeln ist mehr anwendbar.<br />

Schließlich kann für jedes solche Blatt (teilweise auch schon früher, dann kann man <strong>die</strong><br />

Vervollständigung auf dem entsprechenden Pfad stoppen) wird geprüft, ob das Constra<strong>in</strong>tsystem<br />

wi<strong>der</strong>sprüchlich ist:<br />

Def<strong>in</strong>ition 7.4.6. E<strong>in</strong> Constra<strong>in</strong>t-System ist wi<strong>der</strong>sprüchlich, wenn <strong>die</strong> Konstellation<br />

x : X, X ⊑ A, x : Y, Y ⊑ ¬A, o<strong>der</strong> x : X, X ⊑ ¬⊤, o<strong>der</strong> x : X, X ⊑ ⊥ vorkommt.<br />

Jetzt haben wir alle Teilschritte beisammen, um den Algorithmus zur Konsistenzprüfung<br />

zu beschreiben:<br />

Def<strong>in</strong>ition 7.4.7. Der Algorithmus zur Konsistenzfeststellung von C arbeitet folgen<strong>der</strong>maßen:<br />

Starte mit dem Constra<strong>in</strong>t x : X, X ⊑ C (das entspricht gerade <strong>der</strong> Bed<strong>in</strong>gung, dass es e<strong>in</strong>e<br />

Interpretation I gibt, <strong>die</strong> C nicht leer <strong>in</strong>terpretiert (denn x ∈ I(X) ⊆ I(C))).<br />

Als erster Schritt wird x : X, X ⊑ C aufgefaltet.<br />

Anschließend wir das Tableau aufgebaut, <strong>in</strong>dem das aufgefaltete Constra<strong>in</strong>tsystem (nichtdeterm<strong>in</strong>istisch)<br />

vervollständigt wird (Verzweigungen ergeben sich aus Regel 3 <strong>der</strong> Vervollständigunsregeln).<br />

Wenn es möglich ist, e<strong>in</strong> Constra<strong>in</strong>t-System zu erzeugen, das nicht wi<strong>der</strong>sprüchlich<br />

ist (d.h. es gibt e<strong>in</strong>en Pfad dessen Blatt nicht wi<strong>der</strong>sprüchlich ist), gebe „konsistent“ aus; ansonsten,<br />

wenn alle erzeugbaren Constra<strong>in</strong>t-Systeme (d.h. alle Blätter des Tableaus) wi<strong>der</strong>sprüchlich<br />

s<strong>in</strong>d, gebe „<strong>in</strong>konsistent“ aus.<br />

Beachte, dass <strong>der</strong> Algorithmus nicht mit e<strong>in</strong>er T-Box als E<strong>in</strong>gabe arbeitet, son<strong>der</strong>n nur<br />

e<strong>in</strong> (evtl. komplexes) Konzept C erhält. D.h. für den Fall e<strong>in</strong>er T-Box muss <strong>die</strong>se zuvor<br />

entfaltet werden.<br />

Beispiel 7.4.8. Seien Mann und hatK<strong>in</strong>d atomare Konzepte. Wir prüfen <strong>die</strong> Konsitenz des Konzepts:<br />

Mann ⊓ ∃hatK<strong>in</strong>d.(Mann ⊔ ¬Mann)<br />

Wir starten daher mit<br />

x : X, X ⊑ Mann ⊓ ∃hatK<strong>in</strong>d.(Mann ⊔ ¬Mann).<br />

Stand: 31. Januar 2013 248 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.4 Inferenzen <strong>in</strong> Beschreibungslogiken: Subsumtion<br />

Entfalten des Constra<strong>in</strong>tsystems:<br />

→<br />

→<br />

→<br />

x : X, X ⊑ Mann ⊓ ∃hatK<strong>in</strong>d.(Mann ⊔ ¬Mann)<br />

x : X, X ⊑ Mann, X ⊑ ∃hatK<strong>in</strong>d.(Mann ⊔ ¬Mann)<br />

x : X, X ⊑ Mann, X(∃hatK<strong>in</strong>d)Y, Y ⊑ (Mann ⊔ ¬Mann)<br />

x : X, X ⊑ Mann, X(∃hatK<strong>in</strong>d)Y, Y ⊑ (X 1 ⊔ X 2 ), X 1 ⊑ Mann, X 2 ⊑ ¬Mann<br />

Vervollständigung ergibt das Tableau:<br />

x : X, X ⊑ Mann, X(∃hatK<strong>in</strong>d)Y,<br />

Y ⊑ (X 1 ⊔ X 2 ), X 1 ⊑ Mann, X 2 ⊑ ¬Mann<br />

x : X, X ⊑ Mann, X(∃hatK<strong>in</strong>d)Y,<br />

xhatK<strong>in</strong>dy, y : Y,<br />

Y ⊑ (X 1 ⊔ X 2 ), X 1 ⊑ Mann, X 2 ⊑ ¬Mann<br />

x : X, X ⊑ Mann, X(∃hatK<strong>in</strong>d)Y,<br />

xhatK<strong>in</strong>dy, y : Y, Y ⊑ (X 1 ⊔ X 2 ), y : X 1 ,<br />

X 1 ⊑ Mann, X 2 ⊑ ¬Mann<br />

x : X, X ⊑ Mann, X(∃hatK<strong>in</strong>d)Y,<br />

xhatK<strong>in</strong>dy, y : Y, Y ⊑ (X 1 ⊔ X 2 ), y : X 2 ,<br />

X 1 ⊑ Mann, X 2 ⊑ ¬Mann<br />

Beide Blätter s<strong>in</strong>d vervollständigt, aber nicht wi<strong>der</strong>sprüchlich. Tatsächlich kann man <strong>die</strong> Modelle<br />

ablesen:<br />

• Für das l<strong>in</strong>ke Blatt kann ablesen: ∆ = {x, y}, I(X) = {x}, I(Y ) = {y}, I(X 1 ) = {x, y},<br />

I(hatK<strong>in</strong>d) = {(x, y)} und I(Mann) = {x, y}, I(X 2 ) = ∅.<br />

• Für das rechte Blatt kann man ablesen: ∆ = {x, y}, I(X) = {x}, I(Y ) = {y}, I(X 2 ) =<br />

{y}, I(hatK<strong>in</strong>d) = {(x, y)}, I(Mann) = {x}, I(X 1 ) = {x} .<br />

Das Konzept ist daher konsistent (e<strong>in</strong>er <strong>der</strong> beiden Pfad hätte dafür gereicht).<br />

Da man zeigen kann, dass <strong>die</strong>ser Algorithmus term<strong>in</strong>iert und im Falle <strong>der</strong> Term<strong>in</strong>ierung<br />

<strong>die</strong> richtige Antwort gibt, hat man e<strong>in</strong> Entscheidungsverfahren zur Feststellung <strong>der</strong><br />

Konsistenz von ALC-Konzepten.<br />

Theorem 7.4.9. Subsumtion und Konsistenz <strong>in</strong> ALC s<strong>in</strong>d entscheidbar. Der Algorithmus kann<br />

<strong>in</strong> polynomiellem Platz durchgeführt werden.<br />

Aber es gilt:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 249 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

Theorem 7.4.10. Konsistenz <strong>in</strong> ALC ist PSPACE-hart. D.h Konsistenz <strong>in</strong> ALC ist PSPACEvollständig.<br />

Der Nachweis kann direkt geführt werden, <strong>in</strong>dem man zeigt, dass <strong>die</strong> Frage nach <strong>der</strong><br />

Gültigkeit von quantifizierten Booleschen Formeln direkt als ALC-Konsistenzproblem ko<strong>die</strong>rt<br />

werden kann.<br />

Dazu nimmt man quantifizierte Booleschen Formeln, <strong>die</strong> e<strong>in</strong>en Quantorprefix haben<br />

und als Formel e<strong>in</strong>e Klauselmenge (Konjunktion von Disjunktionen). Da <strong>die</strong> Ko<strong>die</strong>rung<br />

recht technisch ist, geben wir als Beispiel <strong>die</strong> Ko<strong>die</strong>rung <strong>der</strong> gültigen Formel ∀x.∃y.(x ∨<br />

¬y) ∧ (¬x ∨ y) an:<br />

Man benötigt nur e<strong>in</strong> Konzept A und e<strong>in</strong>e Rolle R: Die Ko<strong>die</strong>rung ist wie folgt:<br />

∃R.A ⊓ ∃R.¬A ∀x<br />

⊓ ∀R.(∃R.A ⊔ ∃R.¬A) ∃y<br />

⊓ (∀R.(¬ A ⊓ (∀R.A))) (¬x ∨ y)<br />

⊓ (∀R.(A ⊓ (∀R.¬ A))) (x ∨ ¬y)<br />

7.4.5 Subsumtion mit Anzahlbeschränkungen<br />

Auch für <strong>die</strong> Konzeptsprache ALCN , <strong>die</strong> ALC um Anzahlbeschränkungen erweitert,<br />

kann man mit Constra<strong>in</strong>tsystemen e<strong>in</strong>en Algorithmus zum Testen <strong>der</strong> Konsistenz angeben.<br />

Die Erweiterung betreffen <strong>die</strong> Konzeptterme <strong>der</strong> Form (≥ n R.C) und (≤ n R.C). In<br />

dem Fall erweitert man zunächst <strong>die</strong> Constra<strong>in</strong>ts um Terme X(≤ n R)Y und X(≥ n R)Y .<br />

Das Auffalten erhält als zusätzliche Regeln<br />

X ⊑ (≥ n R.C) → X(≥ n R)Y, Y ⊑ C<br />

X ⊑ (≤ n R.C) → X(≤ n R)Y, Y ⊑ C<br />

und für <strong>die</strong> Vervollständigung mit Elementen muss man zu x : X, X(≤ n R)Y <strong>die</strong> Variablen<br />

y zählen mit xRy und entwe<strong>der</strong> Variablen y h<strong>in</strong>zufügen, o<strong>der</strong> zwei Variablen gleichsetzen.<br />

Diese Schritte müssen evtl. mehrfach durchgeführt werden.<br />

Auch hier kann man zeigen, dass man das so durchführen kann, dass das Verfahren<br />

term<strong>in</strong>iert, aber es bleibt P SP ACE-hart, so dass je<strong>der</strong> Algorithmus exponentiell ist.<br />

7.4.5.1 Konsistenztest von A-Boxen<br />

Wie schon erwähnt, kann man den Subsumtionstest bzw. den Konsistenztest von Konzepten<br />

auf Konsistenz von A-Boxen ausdehnen. Allerd<strong>in</strong>gs können A-Boxen etwas allgeme<strong>in</strong>er<br />

starten, so dass es tatsächlich passieren kann, dass <strong>der</strong> naive Algorithmus <strong>der</strong><br />

Vervollständigung nicht term<strong>in</strong>iert. Es ist aber möglich, auf bestimmte Vervollständigungen<br />

zu verzichten, so dass er immer term<strong>in</strong>iert, ohne dass <strong>der</strong> Algorithmus unvollständig<br />

wird.<br />

Stand: 31. Januar 2013 250 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.5 Erweiterungen, weitere Fragestellungen und Anwendungen<br />

Es gilt:<br />

Theorem 7.4.11. Konsistenz von ALCN -A-Boxen ist entscheidbar und PSPACE-complete.<br />

7.4.6 Komplexität <strong>der</strong> Subsumtions-Inferenzen <strong>in</strong> <strong>der</strong> T-Box/A-Box<br />

Um <strong>die</strong> Konzeptsprachen zu bewerten, untersucht man <strong>die</strong> Ausdrucksstärke und <strong>die</strong> zugehörige<br />

Komplexität <strong>der</strong> Inferenzprobleme wie <strong>der</strong> Subsumtion. Hier gibt es, je nach<br />

Sprachumfang, e<strong>in</strong>e Hierarchie von Sprachen und Komplexitäten.<br />

• Die Beschreibungssprache FL − , <strong>die</strong> nur ⊓, ∀ und (∃R) erlaubt, hat e<strong>in</strong>en Subsumtionstest,<br />

<strong>der</strong> polynomiell ist.<br />

• Die Beschreibungssprache FL, <strong>die</strong> nur ⊓, ∀R.C, (∃R.C) erlaubt, hat e<strong>in</strong> PSPACEvollständiges<br />

Subsumtionproblem. Beachte, dass analog zur Sprache FL − <strong>in</strong> <strong>der</strong><br />

Konzeptsprache FL alle Konzepte konsistent s<strong>in</strong>d.<br />

• Erlaubt man nur ⊓, ⊔, ¬, dann ist <strong>der</strong> Subsumtionstest co-NP-vollständig, da <strong>die</strong>s<br />

gerade das Komplement von SAT ist.<br />

• Die Sprache ALC erlaubt ⊓, ¬, ⊔, ∀, (∃R.C). Der Konsistenztest ALC ist genauso<br />

schwer wie <strong>der</strong> Subsumtionstest. Beide s<strong>in</strong>d PSPACE-complete.<br />

• erlaubt man zuviel, z.B. ALC und zusätzlich den Vergleich von Verknüpfungen von<br />

Relationen:<br />

Alle, <strong>der</strong>en K<strong>in</strong><strong>der</strong> <strong>die</strong> gleichen Fächer wie sie selbst stu<strong>die</strong>ren ( hatK<strong>in</strong>d;<br />

stu<strong>die</strong>rtFach) = stu<strong>die</strong>rtFach) Dann wird Subsumtion sogar unentscheidbar.<br />

7.5 Erweiterungen, weitere Fragestellungen und Anwendungen<br />

In <strong>die</strong>sem letzten Abschnitt betrachten wir kurz e<strong>in</strong>ige weitere Erweiterungen und an<strong>der</strong>e<br />

Fragestellungen, <strong>die</strong> im Zusammehang mit Beschreibungslogiken auftreten.<br />

7.5.1 Konstrukte auf Rollen: Rollenterme<br />

Es gibt noch weitere Konstrukte auf Rollen: Schnitt, Vere<strong>in</strong>igung, Komplement, transitiver<br />

Abschluss, <strong>die</strong> man verwenden kann um <strong>die</strong> Ausdruckskraft e<strong>in</strong>er Beschreibungssprache<br />

zu erhöhen.<br />

R ⊓ S Schnitt von Rollen I(R ⊓ S) = I(R) ∩ I(S)<br />

R ⊔ S Vere<strong>in</strong>igung von Rollen I(R ⊔ S) = I(R) ∪ I(S)<br />

¬R Komplement e<strong>in</strong>er Rolle I(¬R) = ∆ × ∆ \ I(R)<br />

(R −1 ) Rollen<strong>in</strong>version I(R −1 ) = {(b, a) | (a, b) ∈ I(R)}<br />

(R ◦ S) Rollenkomposition I(R ◦ S) = {(a, c) |<br />

∃b.(a, b) ∈ I(R), (b, c) ∈ I(S)}<br />

(R + ) transitiver Abschluss I(R + ) = transitiver Abschluss von I(R).<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 251 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

Die Ergebnisse, <strong>die</strong> es <strong>in</strong> <strong>der</strong> Literatur gibt, s<strong>in</strong>d Entscheidungsverfahren und Komplexitäten<br />

von Subsumtionsalgorithmen.<br />

z.B.: Die Sprache ALCN mit Rollenschnitt hat e<strong>in</strong> PSPACE-vollständiges Subsumtionsproblem,<br />

wenn man Zahlen <strong>in</strong> Strichcode schreibt.<br />

Die Sprache ALC trans , <strong>die</strong> ALC um transitive Rollen erweitert, hat e<strong>in</strong> entscheidbares<br />

Subsumtionsproblem. Interessanterweise ergeben sich hier Brücken und Übergänge zu<br />

an<strong>der</strong>en Logiken, beispielsweise zur propositional dynamic logic, <strong>die</strong> e<strong>in</strong>e erweiterte Modallogik<br />

ist<br />

7.5.2 Unifikation <strong>in</strong> Konzeptbeschreibungssprachen<br />

Das Unifikationsproblem für Konzeptbeschreibungssprachen lässt sich wiefolgt beschreiben:<br />

Problem: Gegeben zwei Konzeptterme C, D.<br />

Frage: Gibt es e<strong>in</strong>e E<strong>in</strong>setzung σ von Konzepttermen<br />

für <strong>die</strong> atomare Konzepte, so dass<br />

σ(C) ≡ σ(D)?<br />

Match<strong>in</strong>g von Konzepttermen ist das e<strong>in</strong>geschränkte Unifikationsproblem, wenn Ersetzungen<br />

nur <strong>in</strong> e<strong>in</strong>em Term erlaubt ist:<br />

E<strong>in</strong>e mögliche Anwendung des Match<strong>in</strong>g ist das Debugg<strong>in</strong>g e<strong>in</strong>er Wissensbasis, <strong>die</strong><br />

Description Logic verwendet. Dies eröffnet <strong>die</strong> Möglichkeiten zu erkennen ob man verschiedene<br />

Ko<strong>die</strong>rungen des gleichen <strong>in</strong>ten<strong>die</strong>rten Konzepts e<strong>in</strong>gegeben hat.<br />

Zum Beispiel: Alice und Bob defnieren Konzepte für: Frauen, <strong>die</strong> Töchter haben:<br />

Alice:<br />

Bob:<br />

Frau ⊓ ∃hatK<strong>in</strong>d.Frau<br />

Weiblich ⊓ Mensch ⊓ ∃hatK<strong>in</strong>d.(Weiblich ⊓ Mensch)<br />

Die E<strong>in</strong>setzung {Frau ↦→ Weiblich ⊓ Mensch} macht <strong>die</strong> beiden Konzepte gleich, und ist<br />

daher e<strong>in</strong> Unifikator.<br />

7.5.2.1 Unifikation <strong>in</strong> EL<br />

: Unifikation <strong>in</strong> EL ist entscheidbar, genauer: ist NP-vollständig (siehe (Baa<strong>der</strong> & Morawska,<br />

2009)).<br />

E<strong>in</strong> Algorithmus dazu hat Anwendungen <strong>in</strong> <strong>der</strong> Ontologiedatenbank Snomed. E<strong>in</strong>e<br />

unschöne Eigenschaft <strong>die</strong>ses Problems ist, dass es Unifikationsprobleme gibt, <strong>der</strong>en Lösungsmenge<br />

unendliche viele Substitutionen enthalten muss. z.B. X ⊓ ∃R.Y ≡ ? ∃R.Y . In<br />

<strong>der</strong> Anwendung braucht man evtl. nicht <strong>die</strong> volle Lösungsmenge.<br />

Stand: 31. Januar 2013 252 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.5 Erweiterungen, weitere Fragestellungen und Anwendungen<br />

7.5.2.2 Unifikation <strong>in</strong> ALC<br />

Beachte, dass <strong>die</strong> Entscheidbarkeit <strong>der</strong> Unifikation <strong>in</strong> ALC im Moment e<strong>in</strong> offenes Problem<br />

ist. Das Problem ist äquivalent zur Entscheidbarkeit <strong>der</strong> Unifikation <strong>in</strong> <strong>der</strong> Basis-<br />

(Multi-)Modallogik K.<br />

Da Aussagenlogik mit ∧, ∨, ¬ und propositionalen Konstanten e<strong>in</strong>e Untermenge <strong>der</strong><br />

Sprache ist, ist <strong>die</strong> Boolesche Unifikation e<strong>in</strong> Subproblem, d.h. das Problem is NP-hart.<br />

7.5.3 Beziehung zu Entscheidungsbäumen, Entscheidungslisten<br />

Wir vergleichen <strong>die</strong> Ausdrucksmöglichkeiten <strong>der</strong> Beschreibungslogik mit den Möglichkeiten<br />

von attributierten Objekten wie z.B. Entscheidungsbäumen und -listen (siehe dazu<br />

auch das nächste Kapitel <strong>die</strong>ses Skripts).<br />

Um <strong>die</strong> verschiedenen Attribut-Begriffe hier zu unterscheiden, sprechen wir von EB-<br />

Attributen, wenn <strong>die</strong> Darstellung <strong>der</strong> Objekte bei Entscheidungsbäumen geme<strong>in</strong>t ist.<br />

Objekte mit nur diskreten EB-Attributen s<strong>in</strong>d <strong>in</strong> DL direkt darstellbar, wenn man statt<br />

Rollen Attribute nimmt und <strong>die</strong> Attributwerte mittels Aufzählungsmengen darstellt:<br />

Das Konzept Farbe = rot kann man dann als ∃hatFarbe.{rot} wobei man schon def<strong>in</strong>iert<br />

haben muss, dass Farbe e<strong>in</strong> Attribut und ke<strong>in</strong>e Rolle ist.<br />

Damit s<strong>in</strong>d <strong>die</strong> EB-Konzepte alle darstellbar, wenn man Vere<strong>in</strong>igung, Schnitt und Negation<br />

erlaubt. Aber: man hat <strong>in</strong> DL noch etwas mehr, denn es ist auch darstellbar, dass<br />

<strong>die</strong> Farbe unbekannt ist bzw. noch nicht def<strong>in</strong>iert ist. Aus den DL erhält man e<strong>in</strong>en Subsumtionsalgorithmus<br />

auch für <strong>die</strong> etwas allgeme<strong>in</strong>eren Konzepte.<br />

7.5.4 Merkmals-strukturen (feature-structures)<br />

Wenn ke<strong>in</strong>e Rollen, son<strong>der</strong>n nur Attribute erlaubt s<strong>in</strong>d, d.h. statt b<strong>in</strong>ären Relationen hat<br />

man Attribute (partielle Funktionen), dann erhält man sogenannte Merkmalsstrukturen.<br />

Erste Beobachtung ist folgende:<br />

Da es ke<strong>in</strong>e echten Relationen mehr gibt, kann man ∀R.C ersetzen durch e<strong>in</strong>en ∃-<br />

Ausdruck, denn es gilt:<br />

da das Attribut A funktional se<strong>in</strong> muss.<br />

Weiterh<strong>in</strong> gilt jetzt:<br />

(∃A.C) ⊔ ¬(∃A.⊤) = (∀A.C)<br />

denn:<br />

(∃A.(C 1 ⊔ C 2 )) = (∃A.C 1 ) ⊔ (∃A.C 2 )<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 253 Stand: 31. Januar 2013


7 Konzeptbeschreibungssprachen<br />

{x | ∃y.(I(A)(x) = y ∧ (y ∈ I(C 1 )) ∧ y ∈ I(C 2 ))}<br />

= {x | ∃y.(I(A)(x) = y ∧ y ∈ I(C 1 )) ∧ I(A)(x) = y ∧ y ∈ I(C 2 )}<br />

= {x | (∃y.(I(A)(x) = y ∧ y ∈ I(C 1 ))) ∧ ∃y.I(A)(x) = y ∧ y ∈ I(C 2 )}<br />

= I((∃A.K 1 ) ⊔ (∃A.C 2 ))<br />

Entsprechende Aussagen gelten für ⊓. Hierbei ist <strong>der</strong> Def<strong>in</strong>itionsbereich zu beachten.<br />

Es gilt: Die Subsumtion <strong>in</strong> ALC mit funktionalen Rollen, d.h. Attributen, ist entscheidbar,<br />

auch wenn agreements (role value maps) h<strong>in</strong>zugenommen werden.<br />

7.5.5 Verarbeitung natürlicher (geschriebener) Sprache<br />

Man kann Merkmalsstrukturen im Bereich (Unifikations-)Grammatiken zur Verarbeitung<br />

natürlicher Sprache <strong>in</strong> <strong>der</strong> Computerl<strong>in</strong>guistik verwenden. Man schreibt <strong>die</strong> Anwendung<br />

von Funktionen auch <strong>in</strong> <strong>der</strong> Dot-Notation. D.h. statt f(g(x)) schreibt man x.f.g<br />

Beispiel 7.5.1. Beispielsweise kann man das Wort „sie“im Deutschen wie folgt charakterisieren:<br />

sie := (Syn.cat = P P ) ⊓ (Syn.agr.person = 3) ⊓ (Syn.agr.sex = W )<br />

⊓(Syn.agr.num = sg)<br />

o<strong>der</strong><br />

sie := (Syn.cat = P P ) ⊓ (Syn.agr.person = 3) ⊓ (Syn.agr.num = pl)<br />

Grammatikregeln werden um Attributgleichungen (feature agreements, Pfadgleichungen) erweitert:<br />

NP = Det Adj N (Det.person) = (N.person) ⊓ (Det.casus) = (N.casus)<br />

Anwendungen für Merkmalsstrukturen s<strong>in</strong>d:<br />

• Lexikone<strong>in</strong>träge von Wörtern, o<strong>der</strong> Wortklassen:<br />

• Semantische Zuordnung von Wörtern aus dem Lexikon<br />

z.B. Bank: Gebäude o<strong>der</strong> Sitzmöbel<br />

• Kontextfreie Grammatikregeln mit Bed<strong>in</strong>gungen<br />

Der Test, ob e<strong>in</strong>e Regel anwendbar ist, erfor<strong>der</strong>t dann e<strong>in</strong>en Konsistenztest für e<strong>in</strong>e<br />

Merkmalsstruktur<br />

Dieser Test wird auch Unifikation von Merkmalsstrukturen genannt („feature unification“).<br />

Die entsprechenden Grammatiken heißen auch Unifikationsgrammatiken (PATR-II,<br />

STUF, ....)<br />

Die Ausdrucksstärke von Merkmalsstrukturen kann je nach erlaubten Konstrukten<br />

ebenfalls unterschiedlich se<strong>in</strong>.<br />

Stand: 30. Januar 2013 254 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.6 OWL – Die Web Ontology Language<br />

7.6 OWL – Die Web Ontology Language<br />

Die Web Ontology Language (kurz OWL <strong>in</strong> analogie zu owl (Engl. Eule)) ist e<strong>in</strong>e durch das<br />

W3C standardisierte formale Beschreibungssprache zur Erstellung von Ontologien 4 , d.h.<br />

<strong>der</strong> masch<strong>in</strong>ell verarbeitbaren Erstellung von Konzepten und Beziehungen. OWL trägt<br />

dabei e<strong>in</strong>e bedeutsame Rolle zum semantischen Web, <strong>der</strong> Weiterentwicklung des Internet,<br />

<strong>in</strong> <strong>der</strong> sämtliche Information auch semantisch dargestellt, erfasst und entsprechend<br />

verarbeitet werden kann. Als Syntax baut OWL auf <strong>der</strong> RDF-Syntax 5 auf und verwendet<br />

<strong>in</strong>sbeson<strong>der</strong>e XML als masch<strong>in</strong>ell verarbeitbare Syntax.<br />

Es gibt drei Varianten von OWL: OWL Lite, OWL DL, und OWL Full. Jede <strong>der</strong> Sprachen<br />

ist e<strong>in</strong>e Erweiterung <strong>der</strong> vorhergehenden, d.h. OWL Lite lässt am wenigsten zu, OWL DL<br />

erweitert OWL Lite, und OWL Full erweitert OWL DL. Die beiden ersten Varianten OWL<br />

Lite und OWL DL entsprechen Beschreibungslogiken und lassen sich entsprechend durch<br />

Beschreibungslogiken formalisieren, h<strong>in</strong>gegen passt OWL Full nicht mehr <strong>in</strong> den Rahmen<br />

<strong>der</strong> Beschreibungslogiken.<br />

OWL Lite entspricht <strong>der</strong> Beschreibungslogik SHIN (D) und OWL DL <strong>der</strong> Beschreibungslogik<br />

SHOIN (D).<br />

Wir erklären <strong>die</strong>se Namen:<br />

• S steht für ALC erweitert um transitive Rollen, d.h. neben atomaren Konzepten und<br />

Rollen, Werte<strong>in</strong>schränkung, existentieller Werte<strong>in</strong>schränkung, Vere<strong>in</strong>igung, Schnitt<br />

und Negation stehen spezielle Rollen zur Verfügung, <strong>die</strong> stets als transitive Relation<br />

<strong>in</strong>terpretiert werden müssen, d.h. für jede Interpetation I und transitive Rolle R<br />

muss stets gelten (x, y) ∈ I(R), (y, z) ∈ I(R) ⇒ (x, z) ∈ I(R). Der Name S wurde<br />

verwendet, da <strong>die</strong>se Logik <strong>in</strong> enger Beziehung zur Modallogik S 4 steht.<br />

• H steht für Rollenhierarchien, d.h. Axiome <strong>der</strong> Form R ⊑ S für Rollen R, S s<strong>in</strong>d<br />

erlaubt. und werden semantisch als I(R) ⊆ I(S) <strong>in</strong>terpretiert.<br />

• I steht für <strong>in</strong>verse Rollen, d.h. R − ist als Rollenkonstruktor erlaubt (wenn R e<strong>in</strong>e<br />

Rolle ist) und wird als I(R − ) = {(y, x) | (x, y) ∈ I(R)} <strong>in</strong>terpretiert.<br />

• N kennen wir bereits: number restrictions (≤ n R), (≥ n R)<br />

• Q steht für qualifizierte Anzahlbeschränkungen (≤ n R.C) und (≥ n R.C)<br />

• O steht für “nom<strong>in</strong>al”: Dies ist <strong>der</strong> Konstruktor {o}, wobei o e<strong>in</strong> Individuenname ist.<br />

Er konstruiert e<strong>in</strong>elementige Mengen von Individuen, <strong>die</strong> <strong>in</strong> <strong>der</strong> T-Box verwendet<br />

werden dürfen.<br />

• D me<strong>in</strong>t, dass konkrete Datentypen verwendet werden dürfen (<strong>die</strong>s ist e<strong>in</strong>e Variante<br />

sogenannter concrete doma<strong>in</strong>s). In OWL dürfen <strong>die</strong> XML Schema Datentypen (Integer,<br />

Str<strong>in</strong>gs, Float, . . . ) verwendet werden.<br />

4 siehe http://www.w3.org/2004/OWL/<br />

5 RDF = Resource Description Framework<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 255 Stand: 30. Januar 2013


7 Konzeptbeschreibungssprachen<br />

E<strong>in</strong>e OWL Lite- o<strong>der</strong> OWL DL- Ontologie entspricht e<strong>in</strong>er TBox zusammen mit e<strong>in</strong>er<br />

Rollenhierarchie, <strong>die</strong> den Wissenbereich mittels Konzepten und Rollen beschreiben. Allerd<strong>in</strong>gs<br />

wird <strong>in</strong> OWL statt Konzept <strong>der</strong> Begriff Klasse (Class) und statt Rolle <strong>der</strong> Begriff Eigenschaft<br />

(Property) verwendet. E<strong>in</strong>e Ontologie besteht aus e<strong>in</strong>er Menge von Axiomen, <strong>die</strong><br />

beispielsweise Subsumtionsbeziehungen zwischen Konzepten (o<strong>der</strong> Rollen) zusichern.<br />

Genau wie <strong>in</strong> den bereits gesehenen Beschreibungslogiken werden OWL Klassen durch<br />

e<strong>in</strong>fachere Klassen und Konstruktoren gebildet. Die <strong>in</strong> OWL verfügbaren Konstrukte und<br />

ihre Entsprechung <strong>in</strong> Beschreibungslogik zeigt <strong>die</strong> folgende Tabelle:<br />

Konstruktor<br />

Syntax <strong>in</strong> DL<br />

owl:Th<strong>in</strong>g ⊤<br />

owl:Noth<strong>in</strong>g ⊥<br />

<strong>in</strong>tersectionOf C 1 ⊓ . . . ⊓ C n<br />

unionOf C 1 ⊔ . . . ⊔ C n<br />

complementOf ¬C<br />

oneOf {a 1 , . . . , a m }<br />

allValuesFrom ∀R.C<br />

someValuesFrom ∃R.C<br />

hasValue ∃R.{a}<br />

m<strong>in</strong>Card<strong>in</strong>ality ≥ nR<br />

maxCard<strong>in</strong>ality ≤ nR<br />

<strong>in</strong>verseOf R −<br />

Die RDF/XML-Darstellung ist dabei noch nicht gezeigt, da sie ziemlich unübersichtlich<br />

ist. Z.B. kann das Konzept Mensch ⊓ Weiblich <strong>in</strong> XML-Notation als<br />

<br />

<br />

<br />

<br />

<br />

<br />

geschrieben werden, und ≤ 2hatK<strong>in</strong>d⊤ kann als<br />

<br />

<br />

<br />

2<br />

<br />

<br />

geschrieben werden.<br />

Konstrukte zum Formulieren von Axiomen zeigt <strong>die</strong> folgende Tabelle<br />

Stand: 30. Januar 2013 256 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


7.6 OWL – Die Web Ontology Language<br />

Konstruktor<br />

Syntax <strong>in</strong> DL<br />

subClassOf C 1 ⊑ C 2<br />

equivalentClass C 1 ≡ C 2<br />

subPropertyOf R 1 ⊑ R 2<br />

equivalentProperty R 1 ≡ R 2<br />

disjo<strong>in</strong>tWith C 1 ⊓ C 2 ≡ ⊥ bzw. C 1 ⊓ ¬C 2<br />

sameAs {a 1 } ≡ {a 2 }<br />

differentFrom {a 1 } ≡ ¬{a 2 }<br />

TransitiveProperty def<strong>in</strong>iert e<strong>in</strong>e transitive Rolle<br />

FunctionalProperty def<strong>in</strong>iert e<strong>in</strong>e funktionale Rolle<br />

InverseFunctionalProperty def<strong>in</strong>iert e<strong>in</strong>e <strong>in</strong>verse funktionale Rolle<br />

SymmetricProperty<br />

def<strong>in</strong>iert e<strong>in</strong>e symmetrische Rolle<br />

E<strong>in</strong> Grund für <strong>die</strong> beiden Varianten OWL Lite und OWL DL ist, dass OWL DL als zu<br />

umfangreich angesehen wird, so dass sich unerfahrene Benutzer schwer tun beim Verwenden.<br />

Auch aus Komplexitätssicht s<strong>in</strong>d <strong>die</strong> Sprachen verschieden: Subsumption und<br />

Konsistenztest s<strong>in</strong>d <strong>in</strong> beiden Sprachen entscheidbar, aber <strong>in</strong> SHOIN (D) s<strong>in</strong>d <strong>die</strong> Tests<br />

NEXPTIME-vollständig, während <strong>in</strong> sie <strong>in</strong> SHIN (D) „nur“ EXPTIME-vollständig s<strong>in</strong>d.<br />

Es gibt e<strong>in</strong>ige Inferenzwerkzeuge für <strong>die</strong> OWL-Ontologien, e<strong>in</strong>e Auswahl ist: Racer<br />

(http://www.racer-systems.com/), FaCT++ (http://owl.man.ac.uk/factplusplus/), Pellet<br />

(http://pellet.owldl.com/).<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 257 Stand: 30. Januar 2013


8<br />

Masch<strong>in</strong>elles Lernen<br />

8.1 <strong>E<strong>in</strong>führung</strong>: Masch<strong>in</strong>elles Lernen<br />

Da <strong>die</strong> direkte Programmierung e<strong>in</strong>es <strong>in</strong>telligenten Agenten sich als nicht möglich herausgestellt<br />

hat, ist es klar, dass man zum Erreichen des Fernziels <strong>der</strong> <strong>Künstlichen</strong> <strong>Intelligenz</strong><br />

e<strong>in</strong>e Entsprechung e<strong>in</strong>es Lernprozesses benötigt, d.h. man benötigt Masch<strong>in</strong>elles Lernen.<br />

Es gibt viele verschiedene Ansichten darüber, was Masch<strong>in</strong>elles Lernen ist, was mit Lernen<br />

erreicht werden soll usw. Hier s<strong>in</strong>d erst Anfänge <strong>in</strong> <strong>der</strong> Forschung gemacht worden.<br />

Die praktisch erfolgreichsten <strong>Methoden</strong> s<strong>in</strong>d solche, <strong>die</strong> auf statistisch/stochastischen<br />

<strong>Methoden</strong> basieren und mit <strong>der</strong> Adaption von Werten (Gewichten) arbeiten:<br />

• Adaption von Gewichten e<strong>in</strong>er Bewertungsfunktion aufgrund von Rückmeldungen.<br />

Z.B. Verarbeitung natürlicher Sprachen, Strategie-Spiele mit und ohne zufällige Ereignisse:<br />

Dame, Backgammon.<br />

• Künstliche neuronale Netze: Lernen durch gezielte Verän<strong>der</strong>ung von <strong>in</strong>ternen Parametern.<br />

Deren praktischer Nutzen und Anwendbarkeit ist im Wesentlichen auf<br />

praktikable automatische Lernverfahren zurückzuführen.<br />

Das Lernen von neuen Konzepten, Verfahren, logischen Zusammenhängen, usw. hat bisher<br />

nur ansatzweise Erfolg gehabt.<br />

Für den Agenten-basierten Ansatz, soll das Lernen e<strong>in</strong>e Verbesserung <strong>der</strong> Performanz<br />

des Agenten bewirken:<br />

• Verbesserung <strong>der</strong> <strong>in</strong>ternen Repräsentation.<br />

• Optimierung bzw. Beschleunigung <strong>der</strong> Erledigung von Aufgaben.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 Stand: 30. Januar 2013


8.1 <strong>E<strong>in</strong>führung</strong>: Masch<strong>in</strong>elles Lernen<br />

• Erweiterung des Spektrums o<strong>der</strong> <strong>der</strong> Qualität <strong>der</strong> Aufgaben, <strong>die</strong> erledigt werden<br />

können.<br />

Beispiel 8.1.1. Drei beispielhafte Ansätze s<strong>in</strong>d:<br />

• Erweiterung und Anpassung des Lexikons e<strong>in</strong>es computerl<strong>in</strong>guistischen Systems durch automatische<br />

Verarbeitung von geschrieben Sätzen, wobei <strong>der</strong> Inhalt <strong>die</strong>ser Sätze gleichzeitig<br />

automatisch erfasst werden sollte.<br />

• Adaption von Gewichten e<strong>in</strong>er Bewertungsfunktion <strong>in</strong> e<strong>in</strong>em Zweipersonenspiel, wobei man<br />

abhängig von Gew<strong>in</strong>n/Verlust Gewichte verän<strong>der</strong>t. Das wurde für Dame und Backgammon<br />

mit Erfolg durchgeführt.<br />

• Lernen e<strong>in</strong>er Klassifikation durch Vorgabe von Tra<strong>in</strong><strong>in</strong>gsbeispielen, <strong>die</strong> als positiv/negativ<br />

klassifiziert s<strong>in</strong>d.<br />

8.1.1 E<strong>in</strong>ordnung von Lernverfahren<br />

Die Struktur e<strong>in</strong>es lernenden Systems kann man wie folgt beschreiben:<br />

Agent (ausführende E<strong>in</strong>heit, performance element). Dieser soll verbessert werden anhand<br />

von Erfahrung; d.h. etwas lernen.<br />

Lerne<strong>in</strong>heit (learn<strong>in</strong>g element). Hier wird <strong>der</strong> Lernvorgang gesteuert und bewertet. Insbeson<strong>der</strong>e<br />

wird hier vorgegeben, was gut und was schlecht ist. Hier kann man auch<br />

<strong>die</strong> Bewertungse<strong>in</strong>heit (critic) und den Problemgenerator e<strong>in</strong>ordnen.<br />

Umwelt In <strong>der</strong> Umwelt soll agiert werden. Die Rückmeldung über den Ausgang bzw.<br />

den Effekt von Aktionen kommt aus <strong>die</strong>ser Umwelt. Das kann e<strong>in</strong>e künstliche, modellhafte<br />

Umwelt o<strong>der</strong> auch <strong>die</strong> reale Umwelt se<strong>in</strong>.<br />

Zum Teil wird Agent und Lerne<strong>in</strong>heit zusammen <strong>in</strong> e<strong>in</strong>en erweiterten Agent verlagert.<br />

Pr<strong>in</strong>zipiell sollte man <strong>die</strong>se E<strong>in</strong>heiten unterscheiden, denn <strong>die</strong> Bewertung muss außerhalb<br />

des Agenten se<strong>in</strong>, sonst wäre <strong>die</strong> Möglichkeit gegeben, <strong>die</strong> Bewertung an <strong>die</strong> schlechten<br />

Aktionen anzupassen, statt <strong>die</strong> Aktionen zu verbessern.<br />

Folgende Lernmethoden werden unterschieden:<br />

Überwachtes Lernen (supervised learn<strong>in</strong>g). Diese Methode geht von <strong>der</strong> Situation aus <strong>in</strong><br />

<strong>der</strong> es e<strong>in</strong>en allwissenden Lehrer gibt. Die Lerne<strong>in</strong>heit kann dem Agenten bei je<strong>der</strong><br />

Aktion sagen, ob <strong>die</strong>se richtig war und was <strong>die</strong> richtige Aktion gewesen wäre. Das<br />

entspricht e<strong>in</strong>em unmittelbaren Feedback über <strong>die</strong> exakt richtige Aktion. Alternativ<br />

kann man e<strong>in</strong>e feste Menge von richtigen und falschen Beispielen vorgeben und<br />

damit dann e<strong>in</strong> Lernverfahren starten.<br />

Unüberwachtes Lernen (unsupervised learn<strong>in</strong>g). Dies ist <strong>der</strong> Gegensatz zum überwachten<br />

Lernen. Es gibt ke<strong>in</strong>e H<strong>in</strong>weise, was richtig se<strong>in</strong> könnte. Damit Lernen möglich<br />

ist, braucht man <strong>in</strong> <strong>die</strong>sem Fall e<strong>in</strong>e Bewertung <strong>der</strong> Güte <strong>der</strong> Aktion.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 259 Stand: 30. Januar 2013


8 Masch<strong>in</strong>elles Lernen<br />

Lernen durch Belohnung/Bestrafung (re<strong>in</strong>forcment learn<strong>in</strong>g). Dieser Ansatz verfolgt<br />

das Pr<strong>in</strong>zip „mit Zuckerbrot und Peitsche“. Hiermit s<strong>in</strong>d Lernverfahren geme<strong>in</strong>t,<br />

<strong>die</strong> gute Aktionen belohnen, schlechte bestrafen, d.h. Aktionen bewerten, aber <strong>die</strong><br />

richtige Aktion bzw. den richtigen Parameterbereich nicht kennen.<br />

Man kann man <strong>die</strong> Lernverfahren noch unterscheiden nach <strong>der</strong> Vorgehensweise. E<strong>in</strong><br />

<strong>in</strong>krementelles Lernverfahren lernt ständig dazu. E<strong>in</strong> an<strong>der</strong>er Ansatz ist e<strong>in</strong> Lernverfahren<br />

mit Tra<strong>in</strong><strong>in</strong>gsphase: Alle Beispiele werden auf e<strong>in</strong>mal gelernt.<br />

Man kann <strong>die</strong> Lernverfahren auch entsprechend <strong>der</strong> Rahmenbedigungen e<strong>in</strong>ordnen:<br />

• Beispielwerte s<strong>in</strong>d exakt o<strong>der</strong> ungefähr bekannt bzw. mit Fehlern behaftet<br />

• Es gibt nur positive bzw. positive und negative Beispiele<br />

8.1.2 E<strong>in</strong>ige Maßzahlen zur Bewertung von Lern- und Klassifikationsverfahren<br />

Wir beschreiben kurz Vergleichsparameter, <strong>die</strong> man zur Abschätzung <strong>der</strong> Güte von Klassifikatorprogrammen<br />

bzw. Lernverfahren verwendet.<br />

Beispiel 8.1.2. Beispiele, um sich besser zu orientieren:<br />

• Klassifikation von „Vogel“ anhand bekannter Attribute, wie kann-fliegen, hat-Fe<strong>der</strong>n, usw.<br />

• Vorhersage, dass e<strong>in</strong> Auto noch e<strong>in</strong> Jahr ke<strong>in</strong>en Defekt hat aufgrund <strong>der</strong> Parameter wie Alter,<br />

gefahrene Kilometer, Marke, Kosten <strong>der</strong> letzten Reparatur, usw.<br />

• Mediz<strong>in</strong>ischer Test auf HIV: Antikörper<br />

• Vorhersage <strong>der</strong> Interessen bzw. Kaufentscheidung e<strong>in</strong>es Kunden aufgrund <strong>der</strong> bisherigen<br />

Käufe und an<strong>der</strong>er Informationen (onl<strong>in</strong>e-Buchhandel).<br />

• Kreditwürdigkeit e<strong>in</strong>es Kunden e<strong>in</strong>er Bank, aufgrund se<strong>in</strong>es E<strong>in</strong>kommens, Alters, Eigentumsverhältnisse,<br />

usw (Adresse?).<br />

E<strong>in</strong> Klassifikator ist e<strong>in</strong> Programm, das nur b<strong>in</strong>äre Antworten auf Anfragen gibt: ja /<br />

ne<strong>in</strong>. Die Aufgabe ist dabei, Objekte, beschrieben durch ihre Attribute, bzgl. e<strong>in</strong>er an<strong>der</strong>en<br />

Eigenschaft zu klassifizieren, bzw. e<strong>in</strong>e zukünftiges Ereignis vorherzusagen. Typische<br />

Beispiele s<strong>in</strong>d <strong>die</strong> Bestimmung von Tier- Pflanzenarten anhand e<strong>in</strong>es Exemplars, o<strong>der</strong> <strong>die</strong><br />

Diagnose e<strong>in</strong>er Krankheit anhand <strong>der</strong> Symptome.<br />

Wir beschreiben <strong>die</strong> abstrakte Situation genauer. Es gibt:<br />

• e<strong>in</strong>e Menge M von Objekten (mit <strong>in</strong>nerer Strukur)<br />

• das Programm P : M → {0, 1}, welches Objekte klassifiziert<br />

• <strong>die</strong> wahre Klassifikation K : M → {0, 1}<br />

Bei E<strong>in</strong>gabe e<strong>in</strong>es Objekts x ∈ M gilt:<br />

Stand: 30. Januar 2013 260 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


8.1 <strong>E<strong>in</strong>führung</strong>: Masch<strong>in</strong>elles Lernen<br />

• Im Fall K(x) = P (x) liegt das Programm richtig. Man unterscheidet <strong>in</strong><br />

richtig-positiv Wenn P (x) = 1 und K(x) = 1.<br />

richtig-negativ Wenn P (x) = 0 und K(x) = 0.<br />

• Im Fall K(x) ≠ P (x) liegt das Programm falsch. Hier wird noch unterschieden zwischen<br />

falsch-positiv Wenn P (x) = 1, aber K(x) = 0.<br />

falsch-negativ Wenn P (x) = 0, aber K(x) = 1.<br />

Die folgenden Werte entsprechen <strong>der</strong> Wahrsche<strong>in</strong>lichkeit mit <strong>der</strong> das Programm P e<strong>in</strong>e<br />

richtige positive (bzw. negative) Klassifikation macht. Es entspricht <strong>der</strong> Wahrsche<strong>in</strong>lichkeit,<br />

mit <strong>der</strong> e<strong>in</strong>e Diagnose auch zutrifft. Hierbei wird angenommen, dass es e<strong>in</strong>e Gesamtmenge<br />

M aller Objekte gibt, <strong>die</strong> untersucht werden.<br />

Recall (Richtig-Positiv-Rate, Sensitivität, Empf<strong>in</strong>dlichkeit, Trefferquote; sensitivity, true<br />

positive rate, hit rate):<br />

Der Anteil <strong>der</strong> richtig klassifizierten Objekte bezogen auf alle tatsächlich richtigen.<br />

|{x ∈ M | P (x) = 1 ∧ K(x) = 1}|<br />

|{x ∈ M | K(x) = 1}|<br />

Richtig-Negativ-Rate (true negative rate o<strong>der</strong> correct rejection rate, Spezifität)<br />

Der Anteil <strong>der</strong> als falsch erkannten bezogen auf alle tatsächlich falschen:<br />

|{x ∈ M | P (x) = 0 ∧ K(x) = 0}|<br />

|{x ∈ M | K(x) = 0}|<br />

Die folgenden Werte entsprechen <strong>der</strong> Wahrsche<strong>in</strong>lichkeit mit <strong>der</strong> e<strong>in</strong> als positiv klassifiziertes<br />

Objekt auch tatsächlich richtig klassifiziert ist, bzw. <strong>die</strong> Wahrsche<strong>in</strong>lichkeit mit <strong>der</strong><br />

e<strong>in</strong>e positive Diagnose sich als richtig erweist. O<strong>der</strong> an<strong>der</strong>s herum: e<strong>in</strong>e negativ Diagnose<br />

<strong>die</strong> Krankheit ausschließt.<br />

Der Wert <strong>der</strong> Präzision ist e<strong>in</strong> praktisch relevanterer Wert als <strong>der</strong> recall, da <strong>die</strong>se aussagt,<br />

wie weit man den Aussagen e<strong>in</strong>es Programms <strong>in</strong> Bezug auf e<strong>in</strong>e Klassifikation trauen<br />

kann.<br />

Precision (Präzision, positiver Vorhersagewert, Relevanz, Wirksamkeit, Genauigkeit, positiver<br />

prädiktiver Wert, positive predictive value)<br />

Der Anteil <strong>der</strong> richtigen unten den als sche<strong>in</strong>bar richtig erkannten<br />

|{x ∈ M | P (x) = 1 ∧ K(x) = 1}|<br />

|{x ∈ M | P (x) = 1}|<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 261 Stand: 30. Januar 2013


8 Masch<strong>in</strong>elles Lernen<br />

Negative-Vorhersage-Rate Der Anteil richtig als falsch klassifizierten unter allen als<br />

falsch klassifizierten<br />

|{x ∈ M | P (x) = 0 ∧ K(x) = 0}|<br />

|{x ∈ M | P (x) = 0}|<br />

Im mediz<strong>in</strong>ischen Bereich s<strong>in</strong>d alle <strong>die</strong>se Werte wichtig. Bei seltenen Krankheiten<br />

kann e<strong>in</strong> guter Recall, d.h. <strong>der</strong> Anteil <strong>der</strong> Kranken, <strong>die</strong> erkannt wurden, mit e<strong>in</strong>er sehr<br />

schlechten Präzision verbunden se<strong>in</strong>. Zum Beispiel, könnte e<strong>in</strong> Klassifikator für Gelbfieber<br />

wie folgt vorgehen: Wenn Körpertemperatur über 38,5 C, dann liegt Gelbfieber vor. In<br />

Deutschland haben 10.000 Menschen Fieber mit 38,5 C aber nur 1 Mensch hat Gelbfieber,<br />

<strong>der</strong> dann auch Fieber hat. Dann ist <strong>der</strong> Recall 1, aber <strong>die</strong> Precision ist 0.0001, also sehr<br />

schlecht. Hier muss man also möglichst beide Größen ermitteln, und den Test genauer<br />

machen (precision erhöhen).<br />

8.2 Wahrsche<strong>in</strong>lichkeit und Entropie<br />

In <strong>die</strong>sem Abschnitt führen wir den Begriff <strong>der</strong> Entropie e<strong>in</strong>, wobei wir zunächst e<strong>in</strong>e kurze<br />

Wie<strong>der</strong>holung zu diskreten Wahrsche<strong>in</strong>lichkeiten geben.<br />

8.2.1 Wahrsche<strong>in</strong>lichkeit<br />

Sei X e<strong>in</strong> Orakel, das bei je<strong>der</strong> Anfrage e<strong>in</strong>en Wert aus <strong>der</strong> Menge {a 1 , . . . , a n } ausgibt,<br />

d.h. X ist analog zu e<strong>in</strong>er Zufallsvariablen. Man <strong>in</strong>teressiert sich für <strong>die</strong> Wahrsche<strong>in</strong>lichkeit<br />

p i , dass das Orakel den Wert a i ausgibt. Macht man (sehr) viele Versuche, so kommt <strong>in</strong><br />

<strong>der</strong> Folge <strong>der</strong> Ergebnisse b 1 , . . . , b m , für e<strong>in</strong> festes i <strong>der</strong> Anteil <strong>der</strong> a i <strong>in</strong> <strong>der</strong> Folge dem Wert<br />

p i immer näher. Man nennt <strong>die</strong> Zahlen p i , i = 1, . . . , n auch diskrete Wahrsche<strong>in</strong>lichkeitsverteilung<br />

(<strong>der</strong> Menge a i ), bzw. des Orakels X.<br />

Zum Beispiel ist beim Münzwurf mit den Ausgängen Kopf und Zahl <strong>in</strong> e<strong>in</strong>er ausreichend<br />

langen Folge <strong>in</strong> etwa <strong>die</strong> Hälfte Kopf, <strong>die</strong> an<strong>der</strong>e Hälfte Zahl, d.h. man würde hier<br />

Wahrsche<strong>in</strong>lichkeiten 0, 5 und 0, 5 zuordnen.<br />

Es gilt immer 0 ≤ p i ≤ 1 und ∑ i p i = 1. S<strong>in</strong>d <strong>die</strong> a i Zahlen, dann kann man auch den<br />

Erwartungswert ausrechnen: E(X) = ∑ i p ia i . Das ist <strong>der</strong> Wert, dem <strong>die</strong> Mittelwerte <strong>der</strong><br />

(Zahlen-)Folgen <strong>der</strong> Versuche immer näher kommen.<br />

Wenn man <strong>die</strong> Arbeitsweise von X kennt, dann kann man mehr Angaben machen. Z.B.<br />

das sogenannte Urnenmodell:<br />

X benutzt e<strong>in</strong>en Eimer <strong>in</strong> dem sich Kugeln bef<strong>in</strong>den, rote, blaue und grüne.<br />

Bei je<strong>der</strong> Anfrage wird „zufällig“ e<strong>in</strong>e Kugel gezogen, <strong>der</strong>en Farbe ist das Ergebnis,<br />

und danach wird <strong>die</strong> Kugel wie<strong>der</strong> <strong>in</strong> den Eimer gelegt.<br />

In <strong>die</strong>sem Fall s<strong>in</strong>d <strong>die</strong> Wahrsche<strong>in</strong>lichkeiten p rot , p blau , p grün jeweils genau <strong>die</strong> relativen<br />

Häufigkeiten <strong>der</strong> roten, blauen, bzw. grünen Kugeln unter den Kugeln, <strong>die</strong> sich <strong>in</strong> <strong>der</strong> Urne<br />

jeweils vor dem Ziehen bef<strong>in</strong>den.<br />

Stand: 30. Januar 2013 262 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


8.2 Wahrsche<strong>in</strong>lichkeit und Entropie<br />

8.2.2 Entropie<br />

Zunächst führen wir den Begriff des Informationsgehalts e<strong>in</strong>, <strong>der</strong> von e<strong>in</strong>igen Lernverfahren<br />

benötigt wird.<br />

Wenn man e<strong>in</strong>e diskrete Wahrsche<strong>in</strong>lichkeitsverteilung p i , i = 1, . . . , n hat, z.B. von<br />

Symbolen a i , i = 1, . . . , n, dann nennt man<br />

I(a k ) := log 2<br />

( 1 p k<br />

) = − log 2 (p k ) ≥ 0<br />

den Informationsgehalt des Zeichens a k . Das kann man <strong>in</strong>terpretieren als Grad <strong>der</strong> Überraschung<br />

beim Ziehen des Symbols a k aus e<strong>in</strong>er entsprechenden Urne, bzw. bei <strong>der</strong> Übermittlung<br />

von Zeichen durch e<strong>in</strong>en Kommunikationskanal. D.h. das Auftreten e<strong>in</strong>es seltenen<br />

Symbols hat e<strong>in</strong>en hohen Informationsgehalt. Wenn man nur e<strong>in</strong> e<strong>in</strong>ziges Symbol<br />

hat, dann ist p 1 = 1, und <strong>der</strong> Informationsgehalt ist I(a 1 ) = 0. E<strong>in</strong>e <strong>in</strong>tuitive Erklärung<br />

des Informationsgehalts ist <strong>die</strong> mittlere Anzahl <strong>der</strong> Ja/Ne<strong>in</strong>-Fragen, <strong>die</strong> man stellen muss,<br />

um <strong>die</strong> gleiche Information zu bekommen.<br />

Beispiel 8.2.1. Zum Beispiel im Falle von 8 Objekten, <strong>die</strong> gleich oft vorkommen, ergibt sich<br />

log(0.125) = −3 für jedes Objekt, d.h. <strong>der</strong> Informationsgehalt jedes Zeichens ist 3 und auch <strong>der</strong><br />

mittlere Informationsgehalt, ermittelt aus <strong>der</strong> gewichteten Summe ist 3. Kommen zwei davon,<br />

sagen wir mal a 1 , a 2 , sehr häufig vor und <strong>die</strong> an<strong>der</strong>en praktisch nie, dann ergibt sich als mittlerer<br />

Informationsgehalt <strong>in</strong> etwa 0.5 ∗ log 2 (0.5) + 0.5 ∗ log 2 (0.5) + 6 ∗ 0.001 ∗ log 2 (0.001) ≈ 1.<br />

Die Entropie o<strong>der</strong> <strong>der</strong> mittlere Informationsgehalt <strong>der</strong> Symbole <strong>in</strong> <strong>der</strong> Wahrsche<strong>in</strong>lichkeitsverteilung<br />

wie oben kann dann berechnet werden als<br />

I(X) =<br />

n∑<br />

p i ∗ log 2<br />

( 1 n∑<br />

) = − p i ∗ log<br />

p 2<br />

(p i ) ≥ 0.<br />

i<br />

i=1<br />

i=1<br />

Bei Kompressionen e<strong>in</strong>es Files o<strong>der</strong> bei Ko<strong>die</strong>rung von Nachrichten über e<strong>in</strong>em Kanal ist<br />

das e<strong>in</strong>e untere Schranke für <strong>die</strong> mittlere Anzahl von Bits pro Symbol, <strong>die</strong> man bei bester<br />

Kompression bzw b<strong>in</strong>ärer Ko<strong>die</strong>rung erreichen kann.<br />

Beispiel 8.2.2. Nimmt man e<strong>in</strong> Bernoulli-Experiment, d.h. zwei Zeichen, Kopf und Zahl wobei<br />

Kopf mit <strong>der</strong> Wahrsche<strong>in</strong>lichkeit p und Zahl mit Wahrsche<strong>in</strong>lichkeit 1 − p auftritt, dann ergibt<br />

sich <strong>in</strong> etwa <strong>die</strong> Kurve:<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 263 Stand: 30. Januar 2013


8 Masch<strong>in</strong>elles Lernen<br />

1<br />

0.8<br />

Entropie<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

0 0.2 0.4 0.6 0.8 1<br />

p<br />

D.h. <strong>die</strong> Entropie (<strong>der</strong> mittlere Informationsgehalt e<strong>in</strong>es Münzwurfs) ist maximal, wenn man das<br />

Zeichen nicht vorhersagen kann. Bei e<strong>in</strong>er Wahrsche<strong>in</strong>lichkeit von p = 0, 9 kann man vorhersagen,<br />

dass Kopf sehr oft auftritt. Das ist symmetrisch zu p = 0, 1. Die Entropie ist <strong>in</strong> beiden Fällen<br />

0, 469.<br />

8.3 Lernen mit Entscheidungsbäumen<br />

Wir betrachten nun das Lernen mit sogenannten Entscheidungsbäume. Diese Bäume repräsentieren<br />

das Klassifikator-Programm. Hierbei wird zunächst mit e<strong>in</strong>er Menge von Beispielen,<br />

<strong>der</strong> Entscheidungsbaum aufgebaut, <strong>der</strong> im Anschluss als Klassifikator verwendet<br />

werden kann. Unser Ziel wird es se<strong>in</strong>, Algorithmen vorzustellen, <strong>die</strong> e<strong>in</strong>en guten Entscheidungsbaum<br />

erstellen. Güte me<strong>in</strong>t hierbei, dass <strong>der</strong> Baum möglichst flach ist. Man kann<br />

sich <strong>die</strong>s auch an<strong>der</strong>s verdeutlichen: Hat man Objekte mit vielen Attributen, so möchte<br />

man <strong>die</strong> Attribute herausf<strong>in</strong>den, <strong>die</strong> markant s<strong>in</strong>d, für <strong>die</strong> Klassifikation, und <strong>die</strong>se zuerst<br />

testen. Unter guten Umständen, braucht man dann viele Attribute gar nicht zu überprüfen.<br />

Als wesentliches Hilfsmittel <strong>der</strong> vorgestellten Algorithmen wird sich das Maß <strong>der</strong><br />

Entropie erweisen.<br />

8.3.1 Das Szenario und Entscheidungsbäume<br />

Wir fangen allgeme<strong>in</strong> mit dem zu betrachtenden Szenario an. Gegeben ist e<strong>in</strong>e Menge<br />

von Objekten, von denen man e<strong>in</strong>ige Eigenschaften (Attribute) kennt. Diese Eigenschaften<br />

kann man darstellen mit e<strong>in</strong>er fest vorgegebenen Menge von n Attributen. D.h. man kann<br />

jedes Objekt durch e<strong>in</strong> n-Tupel <strong>der</strong> Attributwerte darstellen.<br />

Def<strong>in</strong>ition 8.3.1. Wir def<strong>in</strong>ieren <strong>die</strong> wesentlichen Komponten des Szenarios:<br />

• Es gibt e<strong>in</strong>e endliche Menge A von Attributen.<br />

Stand: 30. Januar 2013 264 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


8.3 Lernen mit Entscheidungsbäumen<br />

• Zu jedem Attribut a ∈ A gibt es e<strong>in</strong>e Menge von möglichen Werten W a . Die Wertemengen<br />

seien entwe<strong>der</strong> endlich, o<strong>der</strong> <strong>die</strong> reellen Zahlen: R.<br />

• E<strong>in</strong> Objekt wird beschrieben durch e<strong>in</strong>e Funktion A →× a∈A W a . E<strong>in</strong>e alternative Darstellung<br />

ist: E<strong>in</strong> Objekt ist e<strong>in</strong> Tupel mit |A| E<strong>in</strong>trägen, bzw. e<strong>in</strong> Record, <strong>in</strong> dem zu jedem<br />

Attribut a ∈ A <strong>der</strong> Wert notiert wird.<br />

• E<strong>in</strong> Konzept K ist repräsentiert durch e<strong>in</strong>e Prädikat P K auf <strong>der</strong> Menge <strong>der</strong> Objekte. D.h.<br />

e<strong>in</strong> Konzept entspricht e<strong>in</strong>er Teilmenge aller Objekte, nämlich <strong>der</strong> Objekte o, für <strong>die</strong> P K (o) =<br />

True ergibt.<br />

Beispiel 8.3.2. Bücher könnte man beschreiben durch <strong>die</strong> Attribute: (Autor, Titel, Seitenzahl,<br />

Preis, Ersche<strong>in</strong>ungsjahr). Das Konzept „billiges Buch“ könnte man durch Preis ≤ 10 beschreiben.<br />

Das Konzept „umfangreiches Buch“ durch Seitenzahl ≥ 500.<br />

Für <strong>die</strong> Lernverfahren nimmt man im Allgeme<strong>in</strong>en an, dass jedes Objekt zu jedem Attribut<br />

e<strong>in</strong>en Wert hat, und daher <strong>der</strong> Wert „unbekannt“ nicht vorkommt. Im Fall unbekannter<br />

Attributwerte muss man <strong>die</strong>se Verfahren adaptieren.<br />

Def<strong>in</strong>ition 8.3.3 (Entscheidungsbaum). E<strong>in</strong> Entscheidungsbaum zu e<strong>in</strong>em Konzept K ist<br />

e<strong>in</strong> endlicher Baum, <strong>der</strong> an <strong>in</strong>neren Knoten zum Wert e<strong>in</strong>es Attributes folgende Abfragen machen<br />

kann:<br />

• bei reellwertigen Attributen gibt es <strong>die</strong> Alternativen a ≤ v o<strong>der</strong> a > v für e<strong>in</strong>en Wert v ∈ R,<br />

Es gibt e<strong>in</strong>en Teilbaum für Ja und e<strong>in</strong>en für Ne<strong>in</strong>.<br />

• bei diskreten Attributen wird <strong>der</strong> exakte Wert abgefragt. Es gibt pro möglichem Attributwert<br />

e<strong>in</strong>en Teilbaum<br />

Die Blätter des Baumes s<strong>in</strong>d mit Ja o<strong>der</strong> Ne<strong>in</strong> markiert. Das entspricht <strong>der</strong> Antwort auf <strong>die</strong> Frage,<br />

ob das e<strong>in</strong>gegebene Objekte zum Konzept gehört o<strong>der</strong> nicht.<br />

Diskrete Attribute sollten pro Pfad im Baum nur e<strong>in</strong>mal vorkommen, stetige Attribute können<br />

im Pfad mehrmals geprüft werden.<br />

D.h. e<strong>in</strong> Entscheidungsbaum B K ist <strong>die</strong> Darstellung e<strong>in</strong>es Algorithmus zum Erkennen, ob e<strong>in</strong><br />

vorgelegtes Objekt O zum Konzept K gehört.<br />

Je<strong>der</strong> Entscheidungsbaum def<strong>in</strong>iert e<strong>in</strong> Konzept auf den Objekten. Die Entscheidungsbäume<br />

s<strong>in</strong>d so def<strong>in</strong>iert, dass für jedes Objekt nach Durchlauf des Entscheidungsbaumes<br />

e<strong>in</strong> Blatt mit Ja o<strong>der</strong> Ne<strong>in</strong> erreicht wird.<br />

Die Mengen <strong>der</strong> Objekte, bei denen <strong>der</strong> Pfad mit e<strong>in</strong>em Ja endet, s<strong>in</strong>d <strong>in</strong> <strong>die</strong>sem Konzept,<br />

<strong>die</strong> an<strong>der</strong>en Objekte nicht.<br />

• Wenn es nur diskrete Attribute gibt, dann entsprechen <strong>die</strong> Konzepte genau den Entscheidungsbäumen:<br />

Zu jedem Konzept kann man offenbar e<strong>in</strong>e (aussagenlogische)<br />

Formel <strong>in</strong> DNF angeben: <strong>die</strong> a 1 = v 1 ∧ . . . a n = v n als Konjunktion enthält, wenn<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 265 Stand: 30. Januar 2013


8 Masch<strong>in</strong>elles Lernen<br />

das Tupel (v 1 , . . . , v n ) im Konzept enthalten ist. Diese kann man leicht <strong>in</strong> e<strong>in</strong>en Entscheidungsbaum<br />

überführen.<br />

• Bei Verwendung von reellwertigen Attributen kann nicht jedes Konzept durch e<strong>in</strong>en<br />

endlichen Entscheidungsbaum beschrieben werden: z.B. alle geraden Zahlen. Auch<br />

<strong>in</strong> e<strong>in</strong>fachen Fällen, <strong>in</strong> denen das Konzept durch ⋃ I i , d.h. als Vere<strong>in</strong>igung von unendlich<br />

vielen reellen Intervallen, dargestellt ist, gilt das.<br />

Beispiel 8.3.4. Als praktische Anwendung kann man reale Konzepte mittels e<strong>in</strong>er endlichen Menge<br />

von Attributwerten bezüglich e<strong>in</strong>er vorher gewählten Menge von Attributen beschreiben. Das<br />

ist i.A. e<strong>in</strong>e Approximation des realen Konzepts.<br />

Tiere könnte man z.B. durch folgende Attribute beschreiben:<br />

Größe<br />

Gewicht<br />

Kann fliegen<br />

Nahrung<br />

Körpertemperatur<br />

reell<br />

reell<br />

Boolesch<br />

pflanzlich / tierisch / Allesfresser<br />

reell<br />

Für <strong>die</strong> Menge <strong>der</strong> Insekten könnte man aufgrund <strong>die</strong>ser Attribute e<strong>in</strong>en Entscheidungsbaum<br />

h<strong>in</strong>schreiben, allerd<strong>in</strong>gs würden dann auch Nicht<strong>in</strong>sekten mit Ja klassifiziert.<br />

Beispiel 8.3.5. Seien <strong>die</strong> Objekte Äpfel mit Attributen: Geschmack (süß/sauer), Farbe (rot/grün),<br />

Umfang (<strong>in</strong> cm).<br />

E<strong>in</strong> Entscheidungsbaum zum Konzept: „guter Apfel“ könnte se<strong>in</strong>:<br />

Geschmack?<br />

Ja<br />

rot<br />

süß<br />

Farbe?<br />

grün<br />

Umfang ≤ 12cm?<br />

sauer<br />

Umfang ≤ 15cm?<br />

ja ne<strong>in</strong><br />

Ja<br />

Ne<strong>in</strong><br />

ja<br />

Ne<strong>in</strong><br />

ne<strong>in</strong><br />

Ne<strong>in</strong><br />

Man sieht schon, dass <strong>die</strong>ser Entscheidungsbaum überflüssige Abfragen enthält: Da <strong>die</strong> Frage nach<br />

„Umfang ≤ 12cm?“ nur <strong>in</strong> „Ne<strong>in</strong>“-Blättern endet, kann <strong>die</strong> Abfrage direkt durch e<strong>in</strong> „Ne<strong>in</strong>“-Blatt<br />

ersetzt werden.<br />

Es gibt verschiedene Algorithmen, <strong>die</strong> <strong>die</strong> Aufgabe lösen sollen, e<strong>in</strong>en Entscheidungsbaum<br />

für e<strong>in</strong> Konzept zu lernen, wobei man beispielsweise e<strong>in</strong>e Menge von positiven<br />

Beispielen und e<strong>in</strong>e Menge von negativen Beispielen vorgibt.<br />

E<strong>in</strong> guter Entscheidungsbaum ist z.B. e<strong>in</strong> möglichst kle<strong>in</strong>er, d.h. mit wenigen Fragen.<br />

Stand: 30. Januar 2013 266 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


8.3 Lernen mit Entscheidungsbäumen<br />

Der im Folgenden verwendetet Entropie-Ansatz bewirkt, dass das Verfahren e<strong>in</strong>en Entscheidungsbaum<br />

erzeugt <strong>der</strong> e<strong>in</strong>e möglichst kle<strong>in</strong>e mittlere Anzahl von Anfragen bis zur<br />

Entscheidung benötigt. E<strong>in</strong>en Beweis dazu lassen wir weg. Das Verfahren ist verwandt<br />

zur Konstruktion von Huffman-Bäumen bei Ko<strong>die</strong>rungen.<br />

8.3.2 Lernverfahren ID3 und C4.5<br />

Es wird angenommen, dass alle Objekte vollständige Attributwerte haben, und dass es<br />

e<strong>in</strong>e Menge von positiven Beispielen und e<strong>in</strong>e Menge von negativen Beispielen für e<strong>in</strong> zu<br />

lernendes Konzept gibt, <strong>die</strong> möglichst gut <strong>die</strong> echte Verteilung abbilden. Für re<strong>in</strong> positive<br />

Beispielmengen funktionieren <strong>die</strong>se Verfahren nicht.<br />

Wichtig für <strong>die</strong> Lernverfahren ist es, herauszuf<strong>in</strong>den, welche Attribute für das Konzept<br />

irrelevant bzw. relevant s<strong>in</strong>d. Nachdem e<strong>in</strong> Teil des Entscheidungsbaumes aufgebaut ist,<br />

prüfen <strong>die</strong> Lernverfahren <strong>die</strong> Relevanz weiterer Attribute bzw. Attribut<strong>in</strong>tervalle.<br />

Das Lernverfahren ID3 (Iterative Dichotomiser 3) iverwendet den Informationsgehalt<br />

<strong>der</strong> Attribute bezogen auf <strong>die</strong> Beispielmenge. Der Informationsgehalt entspricht <strong>der</strong> mittleren<br />

Anzahl <strong>der</strong> Ja/Ne<strong>in</strong>-Fragen, um e<strong>in</strong> e<strong>in</strong>zelnes Objekt e<strong>in</strong>er Klasse zuzuordnen. Das<br />

Lernverfahren versucht herauszuf<strong>in</strong>den, welche Frage den größten Informationsgew<strong>in</strong>n<br />

br<strong>in</strong>gt, wobei man sich genau auf <strong>die</strong> <strong>in</strong> e<strong>in</strong>em Entscheidungsbaum erlaubten Fragen beschränkt.<br />

Das Ziel ist daher <strong>die</strong> mittlere Anzahl <strong>der</strong> Fragen möglichst kle<strong>in</strong> zu halten.<br />

Sei M e<strong>in</strong>e Menge von Objekten mit Attirbuten. Wir berechnen den Informationsgehalt<br />

<strong>der</strong> Frage, ob e<strong>in</strong> Beispiel positiv/negativ ist <strong>in</strong> <strong>der</strong> Menge aller positiven / negativen<br />

Beispiele. Sei p <strong>die</strong> Anzahl <strong>der</strong> positiven und n <strong>die</strong> Anzahl <strong>der</strong> negativen Beispiele für das<br />

Konzept. Wir nehmen e<strong>in</strong>e Gleichverteilung unter den Beispielen an, d.h. wir nehmen<br />

an, dass <strong>die</strong> relative Häufigkeit <strong>die</strong> reale Verteilung <strong>in</strong> den Beispielen wi<strong>der</strong>spiegelt. Die<br />

Entropie bzw. <strong>der</strong> Informationsgehalt ist dann:<br />

I(M) =<br />

p<br />

p + n ∗ log 2 (p + n ) + n<br />

p p + n ∗ log 2 (p + n<br />

n )<br />

Sei a e<strong>in</strong> Attribut. Wir schreiben m(a) für den Wert des Attributs a e<strong>in</strong>es Objekts m ∈ M.<br />

Hat man e<strong>in</strong> mehrwertiges Attribut a mit den Werten w 1 , . . . , w n abgefragt, dann zerlegt<br />

sich <strong>die</strong> Menge M <strong>der</strong> Beispiele <strong>in</strong> <strong>die</strong> Mengen M i := {m ∈ M | m(a) = w i }, wobei w i , i =<br />

1, . . . , k <strong>die</strong> möglichen Werte des Attributes s<strong>in</strong>d. Seien p i , n i für i = 1, . . . , k <strong>die</strong> jeweilige<br />

Anzahl positiver (negativer) Beispiele <strong>in</strong> M i , dann ergibt sich nach Abfragen des Attributs<br />

an Informationsgehalt (bzgl. positiv/negativ), wobei I(M i ) <strong>der</strong> Informationsgehalt (bzgl.<br />

positiv/negativ) <strong>der</strong> jeweiligen Menge M i ist.<br />

I(M|a) =<br />

k∑<br />

P (a = w i ) ∗ I(M i )<br />

i=1<br />

D.h. es wird <strong>der</strong> nach relativer Häufigkeit gewichtete Mittelwert <strong>der</strong> enstandenen Infor-<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 267 Stand: 30. Januar 2013


8 Masch<strong>in</strong>elles Lernen<br />

mationsgehalte <strong>der</strong> K<strong>in</strong><strong>der</strong> berechnet (was analog zu e<strong>in</strong>er bed<strong>in</strong>gten Wahrsche<strong>in</strong>lichkeit<br />

nun e<strong>in</strong> bed<strong>in</strong>gter Informationsgehalt ist). Für jedes solches K<strong>in</strong>d mit Menge M i gilt wie<strong>der</strong>um:<br />

I(M i ) =<br />

p i<br />

p i + n i<br />

∗ log 2<br />

( p i + n i<br />

p i<br />

) + n i<br />

p i + n i<br />

∗ log 2<br />

( p i + n i<br />

n i<br />

)<br />

Insgesamt können wir daher I(M|a) berechnen als:<br />

I(M|a) =<br />

k∑ p i + n<br />

( i<br />

p + n ∗ pi<br />

∗ log<br />

p i + n 2<br />

( p i + n i<br />

) + n i<br />

∗ log<br />

i p i p i + n 2<br />

( p i + n<br />

) i<br />

)<br />

i n i<br />

i=1<br />

Im Falle, dass M i = ∅ ist, nehmen wir an, dass <strong>der</strong> Beitrag zur Summe 0 ist. Um Fallunterscheidungen<br />

zu vermeiden, nehmen wir an, dass Produkte <strong>der</strong> Form 0 a ∗ log 2 (a 0 ) als 0<br />

zählen. Das ist berechtigt, da <strong>der</strong> Grenzwert von lim x→0 x ∗ log 2<br />

(x) = 0 ist.<br />

Def<strong>in</strong>ition 8.3.6 (ID3: Entscheidungsbaum Lernen). ID3 startet mit e<strong>in</strong>em leeren Baum und<br />

als E<strong>in</strong>gabe e<strong>in</strong>er Menge M von positiven und negativen Beispielen. Die Wurzel ist am Anfang<br />

<strong>der</strong> e<strong>in</strong>zige offene Knoten mit Menge M.<br />

Die Abbruchbed<strong>in</strong>gung für e<strong>in</strong>en offenen Knoten ist: Die Menge M besteht nur noch aus positiven<br />

o<strong>der</strong> nur noch aus negativen Beispielen. In <strong>die</strong>sem Fall wird <strong>der</strong> Knoten geschlossen, <strong>in</strong>dem<br />

er mit „Ja“ bzw. „Ne<strong>in</strong>“ markiert wird. E<strong>in</strong> unschöner Fall ist, dass <strong>die</strong> Menge M leer ist: In <strong>die</strong>sem<br />

Fall muss man auch abbrechen, kennt aber <strong>die</strong> Markierung des Blattes nicht, man hat beide<br />

Möglichkeiten Ja bzw. Ne<strong>in</strong>.<br />

Für jeden offenen Knoten mit mit Menge M wird jeweils das Attribut ausgewählt, das den<br />

größten Informationsgew<strong>in</strong>n bietet. D.h. dasjenige a, für das <strong>der</strong><br />

Informationsgew<strong>in</strong>n: I(M) − I(M|a)<br />

maximal ist. Der offene Knoten wird nun geschlossen, <strong>in</strong>dem das entsprechende Attribut am Knoten<br />

notiert wird und für jede Attributsausprägung wird e<strong>in</strong> K<strong>in</strong>d samt <strong>der</strong> entsprechenden Menge<br />

von Objekten berechnet. Die enstandenen Knoten s<strong>in</strong>d offene Knoten und werden nun im Verfahren<br />

rekursiv (mit angepassten Menge M) bearbeitet.<br />

Beachte, wenn <strong>die</strong> Abbruchbed<strong>in</strong>gung erfüllt ist, ist <strong>der</strong> Informationsgehalt an <strong>die</strong>sem<br />

Blatt 0. Normalerweise gibt es e<strong>in</strong>e weitere praktische Verbesserung: Es gibt e<strong>in</strong>e Abbruchschranke:<br />

wenn <strong>der</strong> Informationsgew<strong>in</strong>n zu kle<strong>in</strong> ist für alle Attribute, dann wird <strong>der</strong> weitere<br />

Aufbau des Entscheidungsbaum an <strong>die</strong>sem Knoten abgebrochen, und es wird „Ja“<br />

o<strong>der</strong> „Ne<strong>in</strong>“ für das Blatt gewählt.<br />

Anmerkungen zum Verfahren:<br />

• Durch <strong>die</strong>se Vorgehensweise wird <strong>in</strong> ke<strong>in</strong>em Ast e<strong>in</strong> diskretes Attribut zweimal abgefragt,<br />

da <strong>der</strong> Informationsgew<strong>in</strong>n 0 ist.<br />

Stand: 30. Januar 2013 268 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


8.3 Lernen mit Entscheidungsbäumen<br />

• Der Algorithmus basiert auf <strong>der</strong> Annahme, dass <strong>die</strong> vorgegebenen Beispiele repräsentativ<br />

s<strong>in</strong>d. Wenn <strong>die</strong>s nicht <strong>der</strong> Fall ist, dann weicht das durch den Entscheidungsbaum<br />

def<strong>in</strong>ierte Konzept evtl. vom <strong>in</strong>ten<strong>die</strong>rten Konzept ab.<br />

• Wenn man e<strong>in</strong>e Beispielmenge hat, <strong>die</strong> den ganzen Tupelraum abdeckt, dann wird<br />

genau das Konzept gelernt.<br />

Beispiel 8.3.7. Wir nehmen als e<strong>in</strong>faches überschaubares Beispiel Äpfel und <strong>die</strong> Attribute Geschmack<br />

∈ {süß, sauer} und Farbe ∈ {rot, grün}. Das Konzept sei „guter Apfel“.<br />

Es gibt vier Varianten von Äpfeln, {(süß, rot), (süß, grün), (sauer, rot), (sauer, grün)}. Wir geben<br />

als Beispiel vor, dass <strong>die</strong> guten Äpfel genau {(süß, rot), (süß, grün)} s<strong>in</strong>d. Wir nehmen mal<br />

an, dass pro Apfelvariante genau e<strong>in</strong> Apfel vorhanden ist.<br />

Es ist offensichtlich, dass <strong>die</strong> guten genau <strong>die</strong> süßen Äpfel s<strong>in</strong>d, und <strong>die</strong> Farbe egal ist. Das kann<br />

man auch nachrechnen, <strong>in</strong>dem man den Informationsgew<strong>in</strong>n bei beiden Attributen berechnet:<br />

Der Informationsgehalt I(M) vor dem Testen e<strong>in</strong>es Attributes ist:<br />

0.5log 2<br />

(2) + 0.5log 2<br />

(2) = 1<br />

Nach dem Testen des Attributes „Geschmack“ ergibt sich als Informationsgehalt 0, 5 ∗ (log 2<br />

(1) +<br />

0) + 0, 5 ∗ (0 + log 2<br />

(1)) = 0, d.h. Der Informationsgew<strong>in</strong>n ist maximal.<br />

Nach dem Testen des Attributes „Farbe“ ergibt sich als Informationsgehalt<br />

0, 5 ∗ (0, 5log 2<br />

(2) + 0, 5log 2<br />

(2)) + 0, 5 ∗ (0, 5log 2<br />

(2) + 0, 5log 2<br />

(2)) = 0, 5 ∗ 1 + 0, 5 ∗ 1 = 1, d.h.<br />

man gew<strong>in</strong>nt nichts.<br />

Als Variation des Beispiels nehmen wir irgende<strong>in</strong>e Anzahl <strong>der</strong> Äpfeln <strong>in</strong> je<strong>der</strong> Kategorie an:<br />

süß,rot süß,grün sauer,rot sauer,grün<br />

10 20 4 6<br />

D.h. es gibt 30 gute und 10 schlechte Äpfel.<br />

Der Informationsgehalt ist vor dem Testen:<br />

0.75log 2<br />

(1, 333) + 0.25log 2<br />

(4) ≈ 0, 311 + 0, 5 = 0, 811<br />

Nach dem Testen des Attributs „Geschmack“ ergibt sich:<br />

30<br />

40 ∗ ( 30<br />

30 log 2(1) + 0<br />

30 log 2(0) )<br />

+ 10<br />

40 ∗ ( 10<br />

10 log 2(1) + 0<br />

10 log 2(0) )<br />

= 0<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 269 Stand: 30. Januar 2013


8 Masch<strong>in</strong>elles Lernen<br />

d.h. Der Informationsgew<strong>in</strong>n ist maximal.<br />

Im Falle, dass <strong>die</strong> Farbe getestet wird, ergibt sich:<br />

14<br />

26<br />

∗ 0, 8631 + ∗ 0, 7793) ≈ 0, 80867 . . .<br />

40 40<br />

D.h. e<strong>in</strong> m<strong>in</strong>imaler Informationsgew<strong>in</strong>n ist vorhanden. Der kommt nur aus <strong>der</strong> leicht unterschiedlichen<br />

Verteilung <strong>der</strong> guten Äpfel <strong>in</strong>nerhalb <strong>der</strong> roten und grünen Äpfel und <strong>in</strong>nerhalb aller<br />

Äpfel. Genauer gesagt: <strong>der</strong> Gew<strong>in</strong>n kommt daher, dass <strong>die</strong> Beispielmenge <strong>der</strong> 40 Äpfel nicht genau<br />

<strong>die</strong> Wahrheit abbildet.<br />

Wird <strong>die</strong> Wahrheit richtig abgebildet, d.h. s<strong>in</strong>d <strong>die</strong> Verteilungen gleich, dann:<br />

süß,rot süß,grün sauer,rot sauer,grün<br />

10 20 3 6<br />

Dann ergibt sich 0.7783 als Entropie I(M) und auch für <strong>die</strong> Auswahl <strong>der</strong> Farbe danach, d.h. es<br />

gibt ke<strong>in</strong>en Informationsgew<strong>in</strong>n für das Attribut Farbe.<br />

Beispiel 8.3.8. Wir erweitern das Beispiel <strong>der</strong> e<strong>in</strong>fachen Äpfel um e<strong>in</strong>e Apfelnummer. Der E<strong>in</strong>fachheit<br />

halber gehen <strong>die</strong> Nummern gehen von 1 bis 4. Zu beachten ist, dass <strong>die</strong>ses Attribut e<strong>in</strong>e<br />

Beson<strong>der</strong>heit hat: es kann nicht <strong>der</strong> ganze Tupelraum ausgeschöpft werden, da es ja zu je<strong>der</strong> Nummer<br />

nur e<strong>in</strong>en Apfel geben soll. Das spiegelt sich auch <strong>in</strong> den prototypischen Beispielen:<br />

Es gibt vier Äpfel, {(1, süß, rot), (2, süß, grün), (3, sauer, rot), (4, sauer, grün)}. Wir geben als<br />

Beispiel vor, dass <strong>die</strong> guten Äpfel gerade {(1, süß, rot), (2, süß, grün)} s<strong>in</strong>d. Wir rechnen den Informationsgew<strong>in</strong>n<br />

<strong>der</strong> drei Attribute aus.<br />

Der Informationsgehalt I(M) vor dem Testen e<strong>in</strong>es Attributes ist:<br />

0.5log 2<br />

(2) + 0.5log 2<br />

(2) = 1<br />

Nach dem Testen des Attributes „Geschmack“ ergibt sich als Informationsgehalt 0, 5 ∗ (log 2<br />

(1) +<br />

0) + 0, 5 ∗ (0 + log 2<br />

(1)) = 0, d.h. Der Informationsgew<strong>in</strong>n ist maximal.<br />

Nach dem Testen des Attributes „Farbe“ ergibt sich als Informationsgehalt 0, 5 ∗ (0, 5log 2<br />

(2) +<br />

0, 5log 2<br />

(2)) + 0, 5 ∗ (0, 5log 2<br />

(2) + 0, 5log 2<br />

(2)) = 0, 5 ∗ 1 + 0, 5 ∗ 1 = 1, d.h. man gew<strong>in</strong>nt nichts.<br />

Nach dem Testen des Attributs „Nummer“ ergibt sich ∑ 1 ∗ log(1), somit <strong>in</strong>sgesamt 0. Der<br />

Informationsgew<strong>in</strong>n ist ebenfalls maximal. Weiter unten werden wie sehen, dass <strong>der</strong> Informationsgew<strong>in</strong>n<br />

<strong>in</strong> <strong>die</strong>sen s<strong>in</strong>nlosen Fällen durch Normierung kle<strong>in</strong>er wird.<br />

Beispiel 8.3.9. Wir nehmen als erweitertes Beispiel für Äpfel und <strong>die</strong> Attribute<br />

Geschmack ∈ {süß, sauer} und Farbe ∈ {rot, gelb, grün}. Das Konzept<br />

sei „schmeckt-wie-er-aussieht“. Es gibt sechs Komb<strong>in</strong>ationen <strong>der</strong> Attribute:<br />

{(süß, rot), (süß, grün), (süß, gelb), (sauer, rot), (sauer, grün), (sauer, gelb)}. Wir geben als<br />

Beispiel <strong>die</strong> Menge {(süß, rot), (sauer, grün), (süß, gelb), (sauer, gelb)} vor. Wir berechnen den<br />

Informationsgew<strong>in</strong>n bei beiden Attributen:<br />

Stand: 30. Januar 2013 270 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


8.3 Lernen mit Entscheidungsbäumen<br />

Der Informationsgehalt I(M) vor dem Testen irgende<strong>in</strong>es Attributs ist:<br />

4/6 ∗ log 2<br />

(6/4) + 1/3log 2<br />

(3) = 0.9183<br />

Nach dem Testen des Attributes „Geschmack“ ergibt sich als Informationsgehalt I(süss) =<br />

I(sauer) ≈ 0.9183. Die Gesamt<strong>in</strong>formation nach Abfrage des Attributs „Geschmack“ ist:<br />

0.5 ∗ 0.9183 + 0.5 ∗ 0.9183 = 0.9183 .<br />

d.h. Der Informationsgew<strong>in</strong>n ist null.<br />

Nach dem Testen des Attributes „Farbe“ ergibt sich als I(grün) = I(rot) = 1, I(gelb) = 0. Die<br />

Gesamt<strong>in</strong>formation nach Abfrage <strong>der</strong> Farbe ist: 1/3 ∗ 1 + 1/3 ∗ 1 = 2/3 ≈ 0.667. D.h. man hat<br />

Information gewonnen. Im Endeffekt muss man bei <strong>die</strong>sem Beispiel doch beide Attribute abfragen<br />

Man kann das Verfahren auch für reellwertige Attribute verwenden, wobei man als<br />

Grenzabfrage „> w?“ nur endlich viele Werte ausprobieren muss, <strong>die</strong> sich aus den Werten<br />

<strong>der</strong> entsprechenden Attribute <strong>in</strong> den Beispielen ergeben. Es ist klar, dass e<strong>in</strong> Konzept wie<br />

„Fieber“ aus den aktuell gegebenen Temperaturen und <strong>der</strong> Klassifizierung Fieber j/n nur<br />

annähernd gelernt werden kann.<br />

Die Methode ID3 funktioniert recht gut, aber wenn e<strong>in</strong> Attribut zuviele Ausprägungen<br />

hat, wird <strong>die</strong> Frage nach <strong>die</strong>sem Attribut bevorzugt, da es im Extremfall (Personalnummer.<br />

o.ä.) dazu kommen kann, dass <strong>die</strong> Mengen {m ∈ M | m(a) = v} e<strong>in</strong>elementig<br />

werden, und somit <strong>der</strong> Informationsgew<strong>in</strong>n maximal ist.<br />

8.3.2.1 C4.5 als verbesserte Variante von ID3<br />

Das von Qu<strong>in</strong>lan vorgeschlagene System C4.5 benutzt statt des Informationsgew<strong>in</strong>ns<br />

e<strong>in</strong>en normierten Informationsgew<strong>in</strong>n, wobei <strong>der</strong> obige Wert durch <strong>die</strong> Entropie des Attributs<br />

(d.h. <strong>der</strong> Verteilung bzgl. <strong>der</strong> Attributwerte) divi<strong>die</strong>rt wird. Somit vergleicht man<br />

Attribute anhand<br />

Informationsgew<strong>in</strong>n ∗ Normierungsfaktor<br />

D.h.<br />

(<br />

I(M) − I(M | a)<br />

)<br />

∗ Normierungsfaktor<br />

Das bewirkt, dass Attribute mit mehreren Werten nicht mehr bevorzugt werden, son<strong>der</strong>n<br />

fair mit den zweiwertigen Attributen verglichen werden. Ohne <strong>die</strong>se Normierung<br />

werden mehrwertige Attribute bevorzugt, da <strong>die</strong>se implizit mehrere Ja/Ne<strong>in</strong>-Fragen stellen<br />

dürfen, während e<strong>in</strong> zweiwertiges Attribut nur e<strong>in</strong>er Ja/Ne<strong>in</strong>-Frage entspricht. Dieser<br />

Vorteil wird durch den Normierungsfaktor ausgeglichen, <strong>der</strong> den Informationsgew<strong>in</strong>n<br />

auf b<strong>in</strong>äre Fragestellung normiert, d.h. dass man den Informationsgew<strong>in</strong>n durch e<strong>in</strong> Attribut<br />

mit 4 Werten durch 2 divi<strong>die</strong>rt, da man 2 b<strong>in</strong>äre Fragen dazu braucht.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 271 Stand: 30. Januar 2013


8 Masch<strong>in</strong>elles Lernen<br />

Der Normierungsfaktor für e<strong>in</strong> Attribut a mit den Werten w i , i = 1, . . . , k ist:<br />

1<br />

k∑<br />

1<br />

P (a = w i ) ∗ log 2<br />

(<br />

P (a = w i ) )<br />

i=1<br />

Bei e<strong>in</strong>em Booleschen Attribut, das gleichverteilt ist, ergibt sich als Normierungsfaktor<br />

0, 5 ∗ 1 + 0, 5 ∗ 1 = 1, während sich bei e<strong>in</strong>em Attribut mit n Werten, <strong>die</strong> alle gleichverteilt<br />

s<strong>in</strong>d, <strong>der</strong> Wert<br />

1<br />

n ∗ 1 n ∗ log 2 (n) = 1<br />

log 2<br />

(n)<br />

ergibt.<br />

Durch <strong>die</strong>se Vorgehensweise wird <strong>die</strong> Personalnummer und auch <strong>die</strong> Apfelnummer als<br />

irrelevantes Attribut erkannt. Allerd<strong>in</strong>gs ist es besser, <strong>die</strong>se Attribute von vornehere<strong>in</strong> als<br />

irrelevant zu kennzeichnen, bzw. erst gar nicht <strong>in</strong> <strong>die</strong> Methode e<strong>in</strong>fließen zu lassen.<br />

Beispiel 8.3.10. Im Apfelbeispiel s.o. ergibt sich bei H<strong>in</strong>zufügen e<strong>in</strong>es Attributes Apfelnummer<br />

mit den Ausprägungen 1, 2, 3, 4, als Normierungsfaktor für Apfelnummer:<br />

1<br />

1<br />

4 ∗ 2 + . . . + 1 4 ∗ 2 = 0.5<br />

Damit wird <strong>die</strong> Abfrage nach dem Geschmack vor <strong>der</strong> Apfelnummer bevorzugt.<br />

8.3.2.2 Übergeneralisierung (Overfitt<strong>in</strong>g)<br />

Tritt auf, wenn <strong>die</strong> Beispiele nicht repräsentativ s<strong>in</strong>d, o<strong>der</strong> nicht ausreichend. Der Effekt<br />

ist, dass zwar <strong>die</strong> Beispiele richtig e<strong>in</strong>geordnet werden, aber <strong>der</strong> Entscheidungsbaum zu<br />

fe<strong>in</strong> unterscheidet, nur weil <strong>die</strong> Beispiele (zufällig) bestimmte Regelmäßigkeiten aufweisen.<br />

Beispiel 8.3.11. Angenommen, man will e<strong>in</strong>e Krankheit als Konzept def<strong>in</strong>ieren und beschreibt<br />

dazu <strong>die</strong> Symptome als Attribute:<br />

Fieber: Temperatur, Flecken: j/n, Erbrechen: j/n, Durchfall: j/n, Dauer <strong>der</strong> krankheit: Zeit, Alter des<br />

Patienten, Geschlecht des Patienten, . . ..<br />

Es kann dabei passieren, dass das Lernverfahren e<strong>in</strong> Konzept f<strong>in</strong>det, dass be<strong>in</strong>haltet, dass Frauen<br />

zwischen 25 und 30 Jahren <strong>die</strong>se Krankheit nicht haben, nur weil es ke<strong>in</strong>e Beispiele dafür gibt.<br />

Auch das ist e<strong>in</strong> Fall von overfitt<strong>in</strong>g.<br />

Besser wäre es <strong>in</strong> <strong>die</strong>sem Fall, e<strong>in</strong> Datenbank aller Fälle zu haben. Die Erfahrung zeigt aber, dass<br />

selbst <strong>die</strong>se Datenbank aller Krankheiten für zukünftige Fragen oft nicht ausreicht, da nicht jede<br />

Frage geklärt werden kann: z.B. E<strong>in</strong>fluss des Gendefektes XXXXX auf Fettsucht.<br />

Abschneiden des Entscheidungsbaumes: Prun<strong>in</strong>g<br />

Stand: 30. Januar 2013 272 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13


8.3 Lernen mit Entscheidungsbäumen<br />

Beheben kann man das dadurch, dass man ab e<strong>in</strong>er gewissen Schranke den Entscheidungsbaum<br />

nicht weiter aufbaut, und den weiteren Aufbau an <strong>die</strong>sem Knoten stoppt:<br />

Abschneiden des Entscheidungsbaumes (Prun<strong>in</strong>g).<br />

Wenn ke<strong>in</strong> Attribut mehr e<strong>in</strong>en guten Informationsgew<strong>in</strong>n br<strong>in</strong>gt, dann besteht <strong>der</strong> Verdacht,<br />

dass alle weiteren Attribute eigentlich irrelevant s<strong>in</strong>d, und man das Verfahren an<br />

dem Blatt stoppen sollte. Dies kann man bei bekannter Verteilung mittels e<strong>in</strong>es statistischen<br />

Test abschätzen.<br />

Hierbei ist es i.a. so, dass es an dem Blatt, an dem abgebrochen wird, noch positive und<br />

negative Beispiele gibt. Die Markierung des Knoten wählt man als Ja, wenn es signifikant<br />

mehr positive als negative Beispiel gibt, und als Ne<strong>in</strong>, wenn es signifikant mehr negative<br />

als positive Beispiel gibt. Das ist natürlich nur s<strong>in</strong>nvoll, wenn man weiß, das es falsche<br />

Beispiele geben kann.<br />

Hat man verrauschte Daten, z.B. mit Messfehler behaftete Beispiele, dann ist Lernen<br />

von Entscheidungsbäumen mit Prun<strong>in</strong>g <strong>die</strong> Methode <strong>der</strong> Wahl.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 273 Stand: 30. Januar 2013


Literatur<br />

Allen, J. F. (1983). Ma<strong>in</strong>ta<strong>in</strong><strong>in</strong>g knowledge about temporal <strong>in</strong>tervals. Commun. ACM,<br />

26(11):832–843.<br />

Baa<strong>der</strong>, F., Calvanese, D., McGu<strong>in</strong>ness, D. L., Nardi, D., & Patel-Schnei<strong>der</strong>, P. F.<br />

(2010). The Description Logic Handbook: Theory, Implementation and Applications.<br />

Cambridge University Press, New York, NY, USA, 2nd edition.<br />

Baa<strong>der</strong>, F. & Morawska, B. (2009). Unification <strong>in</strong> the description logic EL. In Proceed<strong>in</strong>gs<br />

of the 20th International Conference on Rewrit<strong>in</strong>g Techniques and Applications,<br />

RTA ’09, pages 350–364. Spr<strong>in</strong>ger-Verlag, Berl<strong>in</strong>, Heidelberg.<br />

Bratko, I. (1990). Prolog – Programm<strong>in</strong>g for Artificial Intelligence. Addison Wesley.<br />

Don<strong>in</strong>i, F. M., Lenzer<strong>in</strong>i, M., Nardi, D., & Nutt, W. (1997). The complexity of concept<br />

languages. Inf. Comput., 134(1):1–58.<br />

Ebb<strong>in</strong>ghaus, H.-D., Flum, J., & Thomas, W. (1986). <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> mathematische<br />

Logik. Wissenschaftliche Buchgesellschaft Darmstadt.<br />

E<strong>der</strong>, E. (1992). Relative Complexities of First or<strong>der</strong> Calculi. Vieweg, Braunschweig.<br />

Gal, A., Lapalme, G., Sa<strong>in</strong>t-Dizier, P., & Somers, H. (1991). Prolog for Natural Language<br />

Process<strong>in</strong>g. John Wiley & sons.<br />

Haken, A. (1985). The <strong>in</strong>tractability of resolution. Theoretical Computer Science, 39:297–<br />

308.<br />

Michalewicz, Z. (1992). Genetic Algorithms + Data Structures = Evolution Programs.<br />

Spr<strong>in</strong>ger, 3 edition.<br />

M<strong>in</strong>sky, M. (1975). A framework for represent<strong>in</strong>g knowledge. In P. H. W<strong>in</strong>ston, editor,<br />

The Psychology of Computer Vision, pages 211–277. McGraw-Hill, London.<br />

Nebel, B. (1997). Solv<strong>in</strong>g hard qualitative temporal reason<strong>in</strong>g problems: Evaluat<strong>in</strong>g<br />

the efficiency of us<strong>in</strong>g the ord-horn class. Constra<strong>in</strong>ts, 1(3):175–190.<br />

Nebel, B. & Bürckert, H.-J. (1995). Reason<strong>in</strong>g about temporal relations: a maximal<br />

tractable subclass of allen’s <strong>in</strong>terval algebra. J. ACM, 42(1):43–66.<br />

Pereira, F. C. & Shieber, S. M. (1987). Prolog and Natural-Language Analysis. CSLI.<br />

Rob<strong>in</strong>son, J. A. (1965). A mach<strong>in</strong>e-oriented logic based on the resolution pr<strong>in</strong>ciple.<br />

Journal of the ACM, 12:23–41.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 Stand: 30. Januar 2013


LITERATUR<br />

Russell, S. J. & Norvig, P. (2010). Artificial Intelligence - A Mo<strong>der</strong>n Approach (3. <strong>in</strong>ternat.<br />

ed.). Pearson Education.<br />

Schenk, R. & Abelson, R. P. (1975). Scripts, Plans and Knowledge. In International<br />

Jo<strong>in</strong>t Conference on Artificial Intelligence, pages 151–157.<br />

Smith, B. (1982). Prologue to Reflection and Semantics <strong>in</strong> a Procedural Language. Read<strong>in</strong>gs<br />

<strong>in</strong> Knowledge Representation. Morgan Kaufmann, California.<br />

Valdés-Pérez, R. E. (1987). The satisfiability of temporal constra<strong>in</strong>t networks. In Proceed<strong>in</strong>gs<br />

of the sixth National conference on Artificial <strong>in</strong>telligence - Volume 1, AAAI’87,<br />

pages 256–260. AAAI Press.<br />

Wegener, I., editor (1996). Highlights aus <strong>der</strong> Informatik. Spr<strong>in</strong>ger, Berl<strong>in</strong>.<br />

M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 275 Stand: 30. Januar 2013

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!