Table Of ContentStudienreihe Informatik
Herausgegeben von W. Brauer und G. Goos
Herbert Stoyan
PTogr~ernnethoden
der
Künstlichen Intelligenz
Band2
Mit 25 Abbildungen
Springer-Verlag
Berlin Heidelberg GmbH
Herbert Stoyan
Institut für. Mathematische Maschinen
und Datenverarbeitung (IMMD) Vlll
Universität Erlangen-Nürnberg
Martensstraße 3, W-8520 Erlangen, FRG
ISBN 978-3-540-52469-4 ISBN 978-3-642-87955-5 (eBook)
DOI 10.1007/978-3-642-87955-5
CIP-Titelaufnahme der Deutschen Bibliothek
Stoyan, Herbert:
Programmiermethoden der künstlichen Intelligenz I Herbert Stoyan. -
Berlin; Heidelberg; NewYork; London; Paris; Tokyo; Hong Kong; Barcelona: Springer
(Studienreihe Informatik)
Bd. 2 (1991)
Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbeson
dere die der Übersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen
und Tabellen, der Funksendung, der Mikroverfilmung oder der Vervielfältigung auf ande
ren Wegen und der Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nur
auszugsweiser Verwertung, vorbehalten. Eine Vervielfältigung dieses Werkes oder von
Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestim
mungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland vom 9. September
1965 in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich vergütungspflichtig.
Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechtsgesetzes.
© Springer-Verlag Berlin Heidelberg 1991
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in
diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daß
solche Namen im Sinne der Warenzeichen-und Markenschutz-Gesetzgebung als frei zu
betrachten wären und daher von jedermann benutzt werden dürften.
4513140 - 54 3 21 0 Gedruckt auf säurefreiem Papier
Vorwort
Hiermit liegt nun der zweite Band der "Programmiermethoden der Künstlichen
Intelligenz" vor. Er enthält Relationenmodelle, Regelmodelle, objektorientierte
Modelle und zwei Netz-Modelle (Klassifikation und ATNs).
Wiederum liegt die Hauptbetonung auf Denkmodellen. Formale Ausarbei
tung ist nicht in allen Fällen vollständig durchgeführt worden. Hier bleibt dem
Leser noch einige Arbeit. Auch der Programm-Code konnte nicht vollständig
wiedergegeben werden- die Implementationen von FRL oder OPS sind nun
einmal sehr umfangreich. Wieder können interessierte Leser vom Autor eine
Diskette mit allen Programmen erhalten.
Die Kapitel haben unterschiedlichen Charakter. So bringt besonders das
1. Kapitel (das 11. des gesamten Werkes) eine Einführung in einen ganz ak
tuellen Forschungsbereich. Demgegenüber mag das 3. Kapitel weniger aktuell
erscheinen, da eine alte KI-Sprache vorgestellt wird. Sie dient aber zu Stu
dienzwecken. Der Leser sollte die lmplementation radikal modernisieren! Etwas
zwiespältig wirkt die objekt-basierte Sprache des Kapitels 5. Sie war zunächst
als echte Nachrichtenversendungssprache gedacht, d.h. ohne implizite Antwor
ten. Doch erwies es sich, daß mit ihr nur unverständliche atomisierte Pro
gramme geschrieben werden können. Den aktuellen Programmen sieht man dies
an manchen Stellen noch an. Die beabsichtigte strenge Typisierung der Spra
che ist in den Programmen allenfalls angedeutet. Das spekulativste Kapitel ist
das vorletzte, in dem verschiedene Varianten von im Netzverbund rechnenden
Programmen diskutiert werden. Implementiert wird dann ein Klassifikator. Der
Leser sei ermuntert, in der Netzrichtung weiterzudenken.
Auch diesmal habe ich einer Reihe von Freunden und Kollegen zu danken,
die durch Hinweise und Verbesserungsvorschläge die Unvollkommenheit dieses
Bandes mit verringern halfen. Unter ihnen möchte ich Frank Spade hervor
heben, dessen unermüdliche und sorgfältige Arbeit auch für den ersten Band
besonders wichtig war, aber noch nicht genug gewürdigt worden ist.
Des weiteren haben C. Beckstein, T. Christaller, G. Görz, R. Kuhlen,
F. diPrimio, U. Reimer, U. Schreier, M. Tielemann und H. Wedekind Kapitel
versionen gelesen und verbessert. Ihnen gebührt mein Dank. Wenn sie nicht so
erfolgreich waren, wie sie es hätten sein können, dann liegt die Schuld bei mir.
Erlangen, im Oktober 1990 Herbert Stoyan
Inhaltsverzeichnis Band 2
1 Constraints - Relationen-orientierte Programmierung (1) ... . 1
1.1 Ausbreitung von Einschränkungen ........................... . 1
1.1.1 Ein Datenflußmodell für PROLOG .......................... . 1
1.1.2 Das Constraint-Datenfiuß-Modell ............................ . 3
1.1.2.1 Eine einfache numerische Constraint-Programmiersprache .... . 7
1.1.2.2 Steeles Constraint-Programmiersprache ...................... . 8
1.1.3 Restriktionsausbreitungssysteme als Spezialfälle
für Relationen verarbeitende Systeme ........................ . 11
1.1.3.1 Rekursive Constraints und nichtnumerische Datentypen ...... . 12
1.1.4 Vorgänger und zentrale Ideen ................................ . 14
1.2 Constraints: Verarbeitungsmodell, Programmierstil
und Programmiersprache .................................... . 16
1.2.1 Verarbeitungsmodelle von Waltz, Montanari, Freuder,
Sussman und Steele ......................................... . 16
1.2.1.1 Waltzsches Verarbeitungsmodell ............................. . 16
1.2.1.2 Waltz' Algorithmus als Ausbreitung von symbolischen
Wertbeschreibungen ......................................... . 19
1.2.1.3 Waltz' Algorithmus als Ausbreitung von Wertemengen ....... . 21
1.2.1.4 Waltz' Algorithmus als Ausbreitung von symbolischen
Wertverboten ............................................... . 22
1.2.1.5 Waltz' Algorithmus als Ausbreitung von Mengen
verbotener Werte ............................................ . 23
1.2.1.6 Waltz' Algorithmus als Ausbreitung von Werten ............. . 23
1.2.1. 7 Vergleich der fünf Sichtweisen ............................... . 24
1.2.1.8 Montanaris Verarbeitungsmodell ............................. . 28
1.2.1.9 Freuders Verarbeitungsmodell ............................... . 29
1.2.1.10 Das Verarbeitungsmodell von Gosling ........................ . 32
1.2.1.11 Das Verarbeitungsmodell von Steele ......................... . 33
1.2.2 Der einfache relationen-orientierte Programmierstil .......... . 36
1.2.3 Eine Constraint-Sprache ..................................... . 36
1.3 Programmieren mit einfachen Relationen .................... . 38
1.3.1 Einfache Beispiele ........................................... . 38
1.3.2 Ein Constraint-Programm für das krypto-arithmetische
Problem .................................................... . 41
VIII Inhaltsverzeichnis Band 2
1.4 lmplementation einer Constraint-Sprache . . . . . . . . . . . . . . . . . . . . . 48
1.5 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1.6 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2 Relationale Datenbanken - Relationen-orientierte
Programmierung ( 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.1 Funktionen und Relationen - Einführung . . . . . . . . . . . . . . . . . . . . . 69
2.1.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.1.2 Rechnen mit Relationen - die Grundaufgaben . . . . . . . . . . . . . . . . 71
2.2 Relationenkalküle: Verarbeitungsmodelle, Programmierstil,
Programmiersprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.2.1 Relationenverarbeitungsmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.2.1.1 Relationenverarbeitung durch Verarbeitung von Tupelmengen . 73
2.2.1.2 Verarbeitung von Relationsausdrücken durch
Reduktionsmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.2.1.3 Verarbeitung von Relationen durch anweisungs-basierte
Programmstücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.2.2 Der relationen-orientierte Programmierstil . . . . . . . . . . . . . . . . . . . . 75
2.2.3 Beschreibungsformalismen für Relationen - relationen-basierte
Programmiersprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.2.3.1 Die primitive Mengenbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2.2.3.2 Der Gleichungsformalismus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
2.2.3.3 Der allgemeine Mengenformalismus - der Relationenkalkül . . . . 78
2.2.3.4 Relationenalgebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
2.2.4 Eine relationale Programmiersprache . . . . . . . . . . . . . . . . . . . . . . . . . 85
2.3 Programmieren mit Relationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
2.3.1 Einfache Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
2.3.2 Ein Programm für das krypta-arithmetische Problem . . . . . . . . . 88
2.4 Implementierung der relationen-basierten Programmiersprache 93
2.5 Historische Anmerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
2.6 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.7 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3 METEOR- Regel-orientierte Programmierung (1) . . . . . . . . . . . 113
3.1 METEOR .................................................... 113
3.2 Regel-orientierte Programmierung: Verarbeitungsmodell,
Programmierstil und Programmiersprache . . . . . . . . . . . . . . . . . . . . 117
3.2.1 Verarbeitungsmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.2.1.1 Postsehe Produktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.2.1.2 Markow-Algorithmen ......................................... 117
3.2.1.3 CO MIT-Verarbeitungsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.2.1.4 METEOR-Verarbeitungsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
3.2.2 Der frühe regel-orientierte Programmierstil . . . . . . . . . . . . . . . . . . . 119
3.2.3 Die METEOR-Sprache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
3.2.3.1 Die Bedingungsmuster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Inhaltsverzeichnis Band 2 IX
3.2.3.2 Die Transformationsmuster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.2.3.3 Seiteneffekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3.3 Programmieren in METEOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3.3.1 Kleinere Beispiele ............................ , . . . . . . . . . . . . . . . 121
3.3.2 Ein METEOR-Programm für krypta-arithmetische Probleme . 122
3.4 Implementation von METEOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.5 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
3.6 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4 Produktionensysteme - Regel-orientierte
Programmierung (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.1 Von METEOR zu OPS5 ...................................... 137
4.2 Produktionensysteme: Verarbeitungsmodell, Programmierstil
und Programmiersprache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.2.1 Produktionensysteme - Langzeitgedächtnis, Kurzzeitgedächtnis,
Konfliktbeseitigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.2.2 Der regel-orientierte Programmierstil . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.2.3 OPS5 als regel-basierte Programmiersprache . . . . . . . . . . . . . . . . . . 142
4.3 Programmieren in OPS5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
4.3.1 Einfache Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
4.3.2 Ein OPS5-Programm für das krypta-arithmetische Problem . . . 147
4.4 Implementation von OPS5 - Das RETE-Verfahren . . . . . . . . . . . . 156
4.5 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
4.6 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5 Nachrichtenverarbeitung - 0 bjekt-orientierte
Programmierung (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.1 Die Welt der Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.2 Na chrichtenverarbeitung: Verarbeitungsmodell,
Programmierstil und Programmiersprachen . . . . . . . . . . . . . . . . . . . 184
5.2.1 Das Modell der kommunizierenden Objekte . . . . . . . . . . . . . . . . . . . 184
5.2.1.1 Das Modell in globaler Sicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.2.1.2 Das Modell in lokaler Sicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.2.1.3 Nachrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.2.1.4 Klassen und Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
5.2.2 Der objekt-orientierte Programmierstil . . . . . . . . . . . . . . . . . . . . . . . . 190
5.2.3 Objekt-basierte Sprachen ................. :. . . . . . . . . . . . . . . . . . . 191
5.2.3.1 Dimensionen des Entwurfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
5.2.3.2 Smalltalk als objekt-basierte Programmiersprache . . . . . . . . . . . . . 196
5.2.3.3 Die objekt-basierte Sprache OBPL . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
5.3 Objekt-orientiertes Programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
5.3.1 Einfache Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
5.3.2 Ein objekt-orientiertes Programm für das
krypta-arithmetische Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
X Inhaltsverzeichnis Band 2
5.4 lmplementation der objekt-basierten
Programmiersprache OBPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
5.5 Historische Anmerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
5.5.1 SIMULA- ein Vorläufer objekt-basierter Sprachen ............ 215
5.5.2 Smalltalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
5.5.3 Actor-Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
5.5.4 Objekt-orientierte Programmierung und LISP . . . . . . . . . . . . . . . . 226
5.5.5 Objekt-orientierte Komponenten in hybriden
Expertensystemsprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
5.5.6 Objekt-orientierte Systementwicklung . . . . . . . . . . . . . . . . . . . . . . . . . 228
5.6 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
5.7 Literatur ..................................................... 231
6 Frames- Objekt-orientierte Programmierung (2) . . . . . . . . . . . . . 245
•
6.1 Einleitung - Gedächtnismodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
6.2 Frames: Verarbeitungsmodell, Programmierstil und
Programmiersprache . . . . . . . . . . . .. . . . . . . . .. .. . . . .. . . . . . . . . . . . . 252
6.2.1 Frame-Verarbeitungsmodell "Vererbung" . . . . . . . . . . . . . . . . . . . . . 252
6.2.2 Perlins Frame-Verarbeitungsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
6.2.3 Unterschied zum klassischen Nachrichtenverarbeitungsmodell . 253
6.2.4 Frame-Programmierstil . . . . .. . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . 253
6.2.5 FRL - eine Frame-"Programmiersprache" . . . . . . . . . . . . . . . . . . . . . 253
6.2.5.1 Identitätsdimension von FRL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
6.2.5.2 Veränderlichkeit in FRL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
6.2.5.3 Nebenläufigkeit in FRL ....................................... 260
6.2.5.4 Dauerhaftigkeit in FRL ....................................... 260
6.2.5.5 Typ1s1erung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
6.2.5.6 Abstraktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
6.2.5.7 Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
6.3 Programmieren in FRL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
6.3.1 Ein einfaches Programm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
6.3.2 Ein FRL-Programm für das krypto-arithmetische Problem . . . . 265
6.4 lmplementation von FRL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
6.5 Historische Anmerkungen: Gedächtnismodelle,
Begriffshierarchien und Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
6.6 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
6.7 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
7 Frames - Plan-orientierte Programmierung
(Klassifikation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
7.1 Minskys Frames als Erkennungsprogramme . . . . . . . . . . . . . . . . . . . 325
7.1.1 Mögliche Plannetz-Modelle am Beispiel der krypto-
arithmetischen Rätsel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
7.1.1.1 Variante 1: Konkurrierende Gesamtpläne . . . . . . . . . . . . . . . . . . . . . 330
7.1.1.2 Variante 2: Einzelne Pläne entsprechend den Gleichungen. . . . . . 333
Inhaltsverzeichnis Band 2 XI
7.1.1.3 Variante 3: Plan-Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
7.1.1.4 Variante 4: Koordination von Plänen durch einen Meta-Plan . . 337
7.1.1.5 Variante 5: Klassifikation durch Zielkonglomerate . . . . . . . . . . . . . 339
7.1.2 Klassifikation in Frame-Netzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
7.2 Frames: Dynamische Verarbeitungsmodelle,
Programmierstil und Programmiersprache . . . . . . . . . . . . . . . . . . . . 343
7.2.1 Verarbeitungsmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
7.2.1.1 Das Plan-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
7.2.1.2 Das Klassifizierungsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
7.2.2 Plan-orientierte Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
7.2.3 Die Programmiersprache XFRAME . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
7.3 Programmieren in XFRAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
7.3.1 Ein XFRAME-Programm für das krypta-arithmetische Problem 351
7.4 Implementation von XF RAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
7.5 Historische Anmerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
7.6 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
7.7 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
8 Programmieren von ATNs- eine Art der anweisungs-
orientierten Progranunierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
8.1 Automaten und ATNs- Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . 371
8.2 ATNs - Verarbeitungsmodell, Programmierstil und
Programmiersprache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
8.2.1 Das ATN-Verarbeitungsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
8.2.2 Der anweisungs-orientierte ATN-Programmierstil . . . . . . . . . . . . . 379
8.2.3 Eine ATN-Programmiersprache ............................... 380
8.3 Programmieren mit ATNs .................................... 381
8.3.1 Ein ATN-Programm für das krypta-arithmetische Problem .... 385
8.4 Implementation eines ATN-Interpreters . . . . . . . . . . . . . . . . . . . . . . . 397
8.5 Historische Anmerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
8.6 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
8. 7 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Sachverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Personenverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Funktionsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Inhaltsverzeichnis Band 1
1 Einleitung
1.1 Was sind Methoden der Künstlichen Intelligenz?
1.2 Eine Arbeitsmethode für die KI
1.3 Literatur
2 Programmierstile-Verarbeitungsmodelle-Programmiersprachen
2.1 Programmiermethoden
2.2 Programmierstile
2.3 Verarbeitungsmodelle
2.4 Programmiersprachen
2.5 Übersicht
2.6 Literatur
3 Ein Beispielproblem: Krypta-arithmetische Rätsel
3.1 Einfache Grundtatsachen und methodisches Expertenwissen
3.2 Grundwissen über Additionsgleichungen
3.3 Expertenwissen über Additionsgleichungen
3.3.1 Kombinationen gleicher oder ungleicher Ziffernsymbole
3.3.2 Ungleichungen
3.3.3 Einbeziehung konkreter Werte
3.4 Grundwissen über Multiplikationsgleichungen
3.5 Expertenwissen über Multiplikationsgleichungen
3.5.1 Kombinationen gleicher oder ungleicher Ziffern
3.5.2 Ungleichungen
3.5.3 Ausnutzen spezieller Werte
3.6 Ein Beispiel
3.7 Übungsaufgaben
3.8 Literatur
4 Funktionale Programmierung - Der funktions-orientierte
Programmierstil
4.1 Programmieren mit Funktionen
4.2 Verarbeitungsmodelle, Programmierstile, Programmiersprachen
4.2.1 FUnktionale Verarbeitungsmodelle
4.2.1.1 Das konventionelle Verarbeitungsmodell