Der intelligente Hamster + Bericht an den Präsidenten über mein Forschungssemester im SS 2010 und im WS 2010/2011 (jeweils hälftig) Prof. Dr. Johannes Arz Fachbereich Informatik Hochschule Darmstadt Johannes Arz, Der intelligente Hamster 1/17 1. Zusammenfassung Der Hamster-Simulator (Hamster-Java-Modell) ist eine Programmierumgebung (von Daniel Jasper und Dietrich Boles entwickelt), die eingesetzt wird, um Programmieranfängern das algorithmische Denken und das Erlernen grundlegender Programmierkonzepte zu erleichtern. In meinem Forschungssemester habe ich das Hamster-Modell benutzt, um Algorithmen und Verfahren der Künstlichen Intelligenz (KI), die als Adaption kognitiver Prozesse entstanden sind, die sich im menschlichen Gehirn abspielen und somit nicht direkt beobachtbar sind, in einer einfachen und anschaulichen Weise zu visualisieren. 2. Modellbildung In der Informationstechnologie geht es in den meisten Fällen um die Automatisierung monotoner, klar strukturierter und wohl definierter Informationsverarbeitungsprozesse. Zu automatisierende Verarbeitungsabläufe sind aus nicht-automatisierten Informationsverarbeitungsprozessen bekannt. Als Beispiele seien Sortieralgorithmen oder Datenbanken genannt. Sortieren verstehen und lehren wir durch den Umgang mit unterschiedlich großen Holzklötzchen oder ähnlichen Objekten, die wir vergleichen können, Datenbanken durch einen (oder mehren) Karteikasten. Wir bilden Modelle, um Algorithmen und Verfahren zu verinnerlichen. In betriebswirtschaftlichen Anwendungen werden manchmal bis zu 100.000 Objekte sortiert. Wer mag in einer Lehrveranstaltung 100.000 Holzklötze sortieren? Ein wichtiger Aspekt von Modellen in der Lehre ist also die Simplifikation. In der Künstlichen Intelligenz beschäftigt man sich im Gegensatz zur konventionellen Informationstechnik mit der Adaption kognitiver Prozesse, die sich im menschlichen Gehirn abspielen und somit nicht direkt beobachtbar sind. Selbst die Medizin ist bis heute nicht in der Lage, die Struktur des menschlichen Gehirns noch menschliche Denkprozesse ausreichend zu erklären. Auch hier ist die Modellbildung von großer Bedeutung. Allerdings ist hier das Modell nicht die Vereinfachung beobachtbarer Prozesse, sondern bewegt sich in einer Phantasiewelt. Offensichtlich müssen wir unterscheiden zwischen Modellen, die aus der realen Welt beobachtbar sind und solchen, die sich nur in unserer Vorstellung bewegen. In der KI behilft man sich in der Regel mit Modellen der zweiten Art. Mitunter werden auch in der Nicht-KI-Wissenschaft solche Modelle entwickelt 1 2 . Mein Doktorvater Günther Hotz, einer der Begründer der Informatik in Deutschland, wurde einmal gefragt, was die bedeutendste Erfindung des vergangenen Jahrtausends sei. Er plädierte für die reellen Zahlen. Niemand habe je eine gesehen, aber wir bräuchten sie, um unsere Welt zu verstehen. 2 In meiner Jugendzeit habe ich mich ich mich intensiv mit Psychologie beschäftigt und die Werke von Sigmund Freud und Alfred Adler verschlungen. Die Psychoanalyse liefert ja auch wie die KI ein Modell des menschlichen Gehirns. In einer privaten Diskussion mit einem Psychologen antwortete dieser auf meine Frage nach der Korrektheit des psychoanalytischen Modells, dass es nicht um richtig oder falsch ginge, sondern nur darum, ob 1 Johannes Arz, Der intelligente Hamster 2/17 Wir bilden in der KI nicht beobachtbare Modelle des menschlichen Gehirns und der erkenntnistheoretischen Prozesse und können sie dann in Algorithmen und Verfahren implementieren. In der KI-Ausbildung bildet sich in diesem Zusammenhang eine besondere Schwierigkeit aus. Wie kann man menschliche Denkprozesse visualisieren, um sie Studierenden zu erläutern und verständlich zu machen? 3. Das Hamster-Modell Programmieranfänger haben häufig Schwierigkeiten damit, dass sie beim Programmieren ihre normale Gedankenwelt verlassen und in eher technischorientierten Kategorien denken müssen, die ihnen von den Programmiersprachen vorgegeben werden. Gerade am Anfang strömen oft so viele inhaltliche und methodische Neuigkeiten auf sie ein, dass sie das Wesentliche der Programmierung, nämlich das Lösen von Problemen, aus den Augen verlieren. [Zitat aus (3)] Das Hamster-Modell ist mit dem Ziel entwickelt worden, dieses Problem zu lösen. Mit dem Hamster-Modell wird Programmieranfängern ein einfaches, aber mächtiges Modell zur Verfügung gestellt, mit dessen Hilfe Grundkonzepte der imperativen und objektorientierten Programmierung auf spielerische Art und Weise erlernt werden können. Programmierer entwickeln Programme, mit denen sie virtuelle Hamster durch eine virtuelle Landschaft steuern und bestimmte Aufgaben lösen lassen. Die Anzahl der gleichzeitig zu berücksichtigenden Konzepte wird im Hamster-Modell stark eingeschränkt und nach und nach erweitert. [Zitat aus (3)] Abbildung 1: Ein Hamster-Territorium die Modelle seelische Defekte erklären könnten. Überhaupt gibt es eine merkwürdige Affinität zwischen Psychologie und KI. Während die Psychologen in der KI nach Modellen des menschlichen Gehirns suchen, lehnen die Hardliner in der KI die Psychologie als Pseudowissenschaft ab. Der Mensch sei eine Maschine. „There is no soul.“ (Marvin Minsky) Johannes Arz, Der intelligente Hamster 3/17 Der Hamster bewegt sich in einer Matrix, deren Elemente Mauern, Körner und er selbst sind. Er kann Körner in seinem Maul sammeln und wieder ausspucken. Er versteht lediglich die Befehle: • • • • • • • vor() linksUm() nimm() gib() und als Boole’sche Funktionen vorneFrei() maulLeer() kornDa() Die Hamster-Sprache umfasst die üblichen Programmieranweisungen wie bedingte Anweisungen, Schleifen und Funktionen sowie die elementarsten Datentypen 3 in der Syntax der zugrundeliegenden Programmiersprache Java. Der Hamster-Simulator wird von mehreren KollegInnen in der Programmierausbildung in den ersten Wochen der Veranstaltung „Programmieren / Algorithmen und Datenstrukturen“ eingesetzt, um Programmierlaien einen Einstieg in das algorithmische Denken zu erleichtern mit dem Ziel der Nivellierung der extrem heterogenen Anfangskenntnisse der Studierenden im FB Informatik. Andererseits kommt das Programmsystem auch in den Exportveranstaltungen des FB Informatik zum Einsatz, z.B. aktuell in der Veranstaltung „Informatik“ für den FB CuB. Seit einiger Zeit hat der Hamster-Simulator auch eine Prolog-Schnittstelle. Die KIProgrammiersprache Prolog wird seit vielen Jahren von mir in der KI-Ausbildung am FB Informatik eingesetzt. So ist die Idee aufgekommen, meine alten PrologProgramme, insbesondere die zu Suchverfahren, mit dem Hamster zu verbinden. 4. Grundlagen der Künstlichen Intelligenz Ein Grundaxiom der KI ist die Annahme, alle Probleme lösen zu können, in dem man eine Beschreibung des Problems formalisiert und dann durch spezielle Suchverfahren löst 4 . Ein jegliches Problem ist definiert durch vier Punkte: 1. Definition eines Zustandsraums, der alle möglichen Konfigurationen der relevanten Objekte enthält 3 Ich beziehe mich hier auf den „imperativen“ Hamster. Es gibt außerdem den „objekt-orientierten“ Hamster. Diese Ansicht wird teilweise heftig kritisiert. Hier hat sich Joseph Weizenbaum in den letzten Jahren besonders exponiert. Er war ehemals Kollege von Marvin Minsky am MIT und Erfinder des Eliza-Programms, das einen menschlichen Psychiater simuliert und in natürlicher Sprache eine Kommunikation mit einem Menschen führen kann. 4 Johannes Arz, Der intelligente Hamster 4/17 2. Festlegung von einem Zustand oder mehreren Zuständen innerhalb des Raums, von denen aus der Problemlösungsprozess beginnen kann (Anfangszustände). 3. Festlegung von einem Zustand oder mehreren Zuständen, die als Problemlösung akzeptabel wären (Zielzustände). 4. Angabe einer Menge von Regeln, die die verfügbaren Tätigkeiten (Operatoren) beschreiben. Die Regeln sollen einen Zustand des Raums in einen anderen überführen. Viele einfache Spielprobleme (z.B. „Bauer, Wolf, Ziege und Kohlkopf“, „Die Wasserkrüge“ (s.u.), „Missionare und Kannibalen“. „Das Acht-Damen-Problem“) eignen sich gut zur Formalisierung nach obigem Muster. Probleme in der realen Welt wie die Verhinderung einer Kernschmelze in einem Atomkraftwerk können prinzipiell genauso gelöst werden. Nur fehle zurzeit die Rechenpower, um solche Probleme formal in allen Details darzustellen und lösen zu können, sagen die Hardliner in der KI. Allgemeinheuristiken Die Beschreibung eines Problems nach obigem Muster führt sofort zu einem Suchgraphen. Ziel ist ein Weg von einem Anfangszustand zu einem Endzustand zu finden. Die konventionellen Verfahren, wie sie in der Graphentheorie gelehrt werden, eignen sich bei komplexen Problemen nicht, da die Anzahl der Knoten extrem groß ist (z.B. gibt es beim Schachspiel 20100 Zustände. Der Verzweigungsgrad ist durchschnittlich 20, d.h. es sind im Durchschnitt 20 Züge möglich. Ein Spiel kann aus bis zu 50 Zügen (=100 Halbzügen) bestehen.). Die KI versucht zu verstehen, wie Menschen solche Probleme mit riesigen Datenmengen bewältigen. Immerhin soll es ja Menschen geben, die Schach spielen können. Einige der Verfahren, die aus der Beobachtung menschlicher Entscheidungsprozesse entstanden sind, sind die folgenden: 1. Tiefensuche (aus der Graphentheorie bekannt; kein KI-Verfahren; hier nur wegen der Vollständigkeit erwähnt) 2. Erzeugen und Prüfen (Erzeuge irgendeinen Weg/Zustand, prüfe dann, ob ein Zielzustand erreicht ist. Wiederhole dies bis Lösung gefunden wurde. 3. Blinde Suche, Bergsteigen (Setzt eine Bewertungsfunktion für Zustände voraus. In jedem Zustand wähle den erfolgversprechendsten Weg von diesem Zustand ausgehend, also den Weg mit der höchsten Bewertung) 4. Bestensuche (Ebenfall mit Bewertung. Von allen bekannten Endknoten während der Suche im Suchbaum wähle den erfolgversprechendsten Zustand, den mit der höchsten Bewertung als Fortsetzung) Diese Verfahren werden im Folgenden an einigen Problemen aus der KI-Ausbildung angewandt und mit Hilfe des Hamster-Simulators visualisiert. Johannes Arz, Der intelligente Hamster 5/17 Implementierungen in Prolog /*prolog program*/ /* % dfs: generische Suche gemäß Tiefensuche % aus alten Prolog-Programmen für den Hamster überarbeitet % der Kern stammt aus: % Sterling, L., Shapiro E. (2002). The Art of Prolog. % Advanced Programming Techniques. 2nd Edition. Cambridge, MA: The MIT Press % Johannes Arz % Forschungssemester SS10/WS10 */ /* % Das folgende Programmfragment ist eine generische Loesung fuer % Suchverfahren gemaess der Tiefensuche (depth first). % solve_dfs(+State, +History, -Moves) % Moves ist die Folge der Zuege, um vom aktuellen Zustand State zu % einem Endzustand zu kommen. History enthaelt die bisher gemachten % Zuege als Folge der Zustaende. % Die Praedikate move, update und legal sowie initial und final sind problemspezifisch. */ solve_dfs(State, History, [ ] ) :final_state(State). solve_dfs(State, History, [Move | Moves]) :move(State, Move), update(State, Move, State1), legal(State1), not(member(State1, History)), solve_dfs(State1, [State1 | History], Moves). % dfs(+Problem, -Moves) % Problem ist die Beschreibung des Spiels, Moves die Zuege zur Loesung. % initial_state ist wie final_state problemspezifisch dfs(Problem, Moves) :initial_state(Problem, State), solve_dfs(State, [State], Moves). Johannes Arz, Der intelligente Hamster 6/17 5. Das Problem der Wasserkrüge Es gibt zwei Krüge mit Fassungsvermögen 5 und 8 Liter. Beide Krüge haben keine Messmarkierungen. Es gibt einen Brunnen, aus dem beliebig Wasser entnommen werden kann. Es sind die Operationen Füllen, Leeren und Umfüllen erlaubt. Wie kann man einen Krug mit genau 4 Liter füllen? 5 Auch dieses Problem eignet sich mehr zur Veranschaulichung von KI-Verfahren und ist kein wirkliches Problem, dass mit KIMethoden gelöst werden sollte. Es sind auch für andere drei Zahlen – falls es überhaupt eine Lösung gibt - deterministische Verfahren bekannt (siehe (4)). Abbildung 2: Startzustand beim Problem der Wasserkrüge Das Modell in der Hamster-Welt zeigen Abbildung 2 (Startzustand) und Abbildung 3 (Zielzustand). Die Entwicklungsumgebung besteht aus der Java-Konsole, in dem die Entwicklungsumgebung gestartet wird, dem Editor mit dem Hauptprogramm, in dem im Wesentlichen lediglich die nötigen Module geladen werden, dem Simulationsfenster mit der Hamster-Welt sowie die PrologKonsole mit der Programmsteuerung. Abbildung 3: Zielzustand beim Problem der Wasserkrüge Eine Lösung dieses Problems wird in dem Film „Stirb langsam 3“ von Bruce Willis und Samuel Jackson gespielt. 5 Johannes Arz, Der intelligente Hamster 7/17 /*prolog program*/ /* % jugs: Das Problem der Wasserbehaelter/wasserkrüge, % aus alten Prolog-Programmen für den Hamster überarbeitet % der Kern stammt aus: % Sterling, L., Shapiro E. (2002). The Art of Prolog. % Advanced Programming Techniques. 2nd Edition. Cambridge, MA: The MIT Press % Johannes Arz % Forschungssemester SS10/WS10 Es gibt zwei Wasserkrüge, die 8 bzw. 5 Liter Wasser fassen, aber keine Markierungen haben. Das Problem besteht darin, exakt vier Liter aus einem großen Faß, das 1000 (oder mehr) Liter enthält, abzufüllen. Die möglichen Tätigkeiten sind - das Füllen eines Krugs aus dem Faß, - das Leeren eines Krugs in das Faß und - das Umfüllen des Inhalts eines Krugs in den anderen Krug, bis der eine Krug leer bzw. der andere voll ist. Es sollen je nach Wunsch des Kunden wahlweise von 1 bis 8 Liter abgemessen werden; in diesem Beispiel vier Liter. */ initial_state(jugs,jugs(0,0)). final_state(jugs(4,V2)). final_state(jugs(V1,4)). move(jugs(V1,V2), fill(1)). move(jugs(V1,V2), fill(2)). move(jugs(V1,V2), empty(1)) :- V1 > 0. move(jugs(V1,V2), empty(2)) :- V2 > 0. move(jugs(V1,V2), transfer(2,1)). move(jugs(V1,V2), transfer(1,2)). update(jugs(V1,V2), empty(1), jugs(0,V2)). update(jugs(V1,V2), empty(2), jugs(V1,0)). update(jugs(V1,V2), fill(1), jugs(C1,V2)) :- capacity(1,C1). update(jugs(V1,V2), fill(2), jugs(V1,C2)) :- capacity(2,C2). Johannes Arz, Der intelligente Hamster 8/17 update(jugs(V1,V2), transfer(2,1), jugs(W1, W2)) :capacity(1, C1), Liquid is V1 + V2, Excess is Liquid - C1, adjust(Liquid, Excess, W1, W2). update(jugs(V1,V2), transfer(1,2), jugs(W1, W2)) :capacity(2, C2), Liquid is V1 + V2, Excess is Liquid - C2, adjust(Liquid, Excess, W2, W1). adjust(Liquid, Excess, Liquid, 0) :- Excess =< 0. adjust(Liquid, Excess, V, Excess) :- Excess > 0, V is Liquid - Excess. legal(jugs(V1,V2)). value(jugs(V1,V2), Value) :- Value is V1 + V2. capacity(1,8). capacity(2,5). Johannes Arz, Der intelligente Hamster 9/17 6. Das Labyrinth und der “faule” Hamster Am anschaulichsten können die Verfahren im Labyrinth präsentiert werden. In natürlicher Weise sind die Bewertung der Zustände (=Felder) durch die Anzahl der Körner wiedergegeben. Abbildung 4 zeigt ein einfaches Beispiel eines Labyrinths. Der Hamster soll zu dem Feld mit den vielen Körnern (Zielzustand) laufen. Beim Hill Climbing „denkt der Hamster kurz nach“ und stellt fest, dass er nicht ans Ziel kommt (Ausgabe: false). In der Tat sucht der Hamster gemäß Verfahren einen Weg zum Ziel – ohne sich zu bewegen. An der ersten (und einzigen) Abzweigung hat der Hamster die Wahl zwischen einem Feld mit einem Korn oder dem Feld mit drei Körnern. Er wählt den Weg geradeaus und gerät in eine Sackgasse. Das ist zwar nachvollziehbar, aber nicht anschaulich. 6 Abbildung 4: Ein einfaches Labyrinth und Hill Climbing Was ist die Antwort auf die Fragen aller Fragen? Die Antwort 42 ist das kürzeste und bekannteste Zitat aus der Roman- und Hörspielreihe „Per Anhalter durch die Galaxis“ von Douglas Adams. Oder in SWI-Prolog: 1 ?- FrageAllerFragen. % ... 1,000,000 ............ 10,000,000 years later % % >> 42 << (last release gives the question) 1 ?6 Johannes Arz, Der intelligente Hamster 10/17 7. Das Labyrinth und der „bewegte“ Hamster In dieser Variante „denkt der Hamster laut nach“. Abbildung 5 zeigt die Startposition. Als Verfahren ist hier die Bestensuche gewählt. In Abbildung 6 gerät der Hamster in eine Sackgasse, erinnert sich aber an die letzte Abzweigung und nimmt den richtigen Weg zum Ziel. Diese Variante ist wesentlich anschaulicher, aber in der Programmierung recht aufwendig. Abbildung 5: Der Hamster im Labyrinth, Startzustand Abbildung 6: Der Hamster im Labyrinth, Sackgasse Johannes Arz, Der intelligente Hamster 11/17 8. Die Wumpus-Welt Das Zusammenspiel aller beim Menschen bekannten intellektuellen Fähigkeiten, die auf Rechnern abgebildet werden können, wird in den neueren Lehrbüchern am Beispiel des intelligenten Agenten demonstriert und gelehrt. Wir definieren die KI als die Betrachtung von Agenten, die Wahrnehmungen aus der Umwelt erhalten und Aktionen ausführen. Jeder dieser Agenten implementiert eine Funktion, die Wahrnehmungsfolgen auf Aktionen abbildet, und wir beschreiben unterschiedliche Möglichkeiten, diese Funktionen darzustellen, wie z.B. Produktionssysteme, reaktive Agenten, Echtzeitplaner, neuronale Netzwerke und entscheidungstheoretische Systeme. Wir erklären die Rolle des Lernens als Erweiterung der Reichweite des Entwicklers in unbekannte Umgebungen und zeigen, wie diese Rolle den Agentenentwurf einschränkt, wobei wir uns besonders auf die explizite Wissensrepräsentation und das Schließen konzentrieren. Wir beschreiben Robotik und Vision nicht als unabhängig definierte Probleme, sondern als Hilfsmittel, ein Ziel zu erreichen. Wir betonen dabei, wie wichtig die Umgebung für den verwendeten Agentenentwurf ist. [Zitat aus (11)] Die Wumpus-Welt ist ein Käfig, der aus Räumen besteht, die durch Durchgänge miteinander verbunden sind. Irgendwo in dem Käfig lauert das Wumpus, eine Bestie, die jeden frisst, der ihren Raum betritt. Das Wumpus kann von einem Agenten erschossen werden, aber der Agent besitzt nur einen einzigen Pfeil. Einige Räume enthalten Falltüren, durch die jeder fällt, der diese Räume betritt (außer dem Wumpus, das zu groß ist, um durchzufallen). Die einzige Verlockung, sich in dieser Umgebung zu bewegen, ist die Aussicht, einen Berg Gold zu finden. Obwohl die Wumpus-Welt angesichts der modernen Computerspiele recht archaisch anmuten mag, ist sie eine ausgezeichnete Testumgebung für intelligente Agenten. […][Zitat aus (11)] Abbildung 7 zeigt ein Beispiel für die Wumpus-Welt. Die genaue Definition der Aufgabenumgebung ist […] durch die folgende Beschreibung […] gegeben: • Leistungsmaß (Performance): +1000 für das Auffinden des Golds, -1000, wenn man durch eine Falltür fällt oder von dem Wumpus gefressen wird. -1 für jede unternommene Aktion und -10 für die Verwendung des Pfeils. • Umgebung (Environment): Ein 4 x 4-Raster von Räumen. Der Agent beginnt seinen Weg in dem Quadrat mit der Aufschrift [1,1] und sieht nach rechts. Die Positionen des Goldes und des Wumpus werden mit einheitlicher Verteilung zufällig gewählt, befinden sich jedoch nicht auf dem Ausgangsquadrat des Agenten. Darüber hinaus kann jedes Quadrat außer dem Anfangsquadrat mit einer Wahrscheinlichkeit von 0,2 eine Falltür haben. • Aktuatoren (Actuators): Der Agent kann sich nach vorne bewegen, sich um 90 Grad nach links oder um 90 Grad nach rechts drehen. Der Agent stirbt einen Johannes Arz, Der intelligente Hamster 12/17 • schrecklichen Tod, wenn er auf ein Quadrat tritt, das eine Falltür hat, oder wenn er ein lebendiges Wumpus entdeckt. (Es ist sicher, wenn auch nicht ganz geruchsneutral, auf ein Quadrat mit einem toten Wumpus zu steigen.) Eine Vorwärtsbewegung hat keine Wirkung, wenn der Agent vor einer Mauer steht. Die Aktion Grab (greifen) kann verwendet werden, um ein Objekt aufzunehmen, das sich auf demselben Quadrat wie der Agent befindet. Die Aktion Shoot (schießen) kann verwendet werden, um einen Pfeil geradlinig in die Richtung zu schießen, in die der Agent sieht. Der Pfeil fliegt, bis er das Wumpus trifft (und damit tötet) oder an eine Mauer prallt. Der Agent hat nur einen einzigen Pfeil, deshalb hat auch nur die erste Shoot-Aktion eine Wirkung. Sensoren (Sensors): Der Agent hat fünf Sensoren, die ihm jeweils unterschiedliche Informationen bereitstellen: - In dem Quadrat, das den Wumpus enthält, sowie in allen direkt (nicht diagonal) benachbarten Quadraten nimmt der Agent einen üblen Gestank (Stench) wahr. - In Quadraten, die direkt mit einer Falltür benachbart sind, nimmt der Agent einen Luftzug (Breeze) wahr. - In dem Quadrat, auf dem sich das Gold befindet, nimmt der Agent ein Glitzern (Glitter) wahr. - Läuft ein Agent gegen eine Wand, nimmt er einen Stoß (Dump) wahr. - Wenn das Wumpus getötet wird, stößt es einen schrecklichen Schrei (Scream) aus, den jeder im Käfig hören kann. Die Wahrnehmungen werden dem Agenten in Form einer Liste mit fünf Symbolen übergeben; befinden sich dort beispielsweise Gestank und Luftzug, aber kein Glitzern, Stoßen oder Schreien, erhält der Agent die Wahrnehmung [Stench, Breeze, None, None, None]. [Zitat aus (11)] Abbildung 7: Eine Wumpus-Welt aus (11) Johannes Arz, Der intelligente Hamster 13/17 Eine Hamster-Implementierung muss die Zustände eines Feldes durch Körner repräsentieren. Hier bietet sich eine binäre Kodierung der Zustände an z.B. Zustand Leeres Feld, keine Beobachtung Luftzug (Breeze) Gestank (Stench) Gold Falltür Wumpus 0 1 2 4 8 16 (12) Abbildung 8: Repräsentation der Wumpus-Welt durch die Hamster-Welt Eine solche Repräsentation ist nicht adäquat, da die Darstellung der einzelnen Zustände gekünstelt wirkt und dem Problem/dem Spiel nicht angemessen ist, da sie intuitiv nicht verstanden werden kann. Auch eine andere Kodierung der Zustände, in denen die Bewertung für die Knoten zum Ausdruck kommt, wäre nicht adäquat. In jedem Fall kann man dieses Problem auf einen Spezialfall des Labyrinth-Problems reduzieren. Ein dreidimensionales Wumpus-Spiel findet man unter http://mostplays.com/play/Wumpus_World_1585 Johannes Arz, Der intelligente Hamster 14/17 Literatur (alphabetisch) (1) Beierle, C., Kern-Isberner, G.(2008). Methoden wissenbasierter Systeme. 4.Auflage, Wiesbaden: Vieweg+Teubner Verlag (2) Boles, D. (2010). Willkommen beim Java-Hamster! WWW:http://www.javahamster-modell.de (24.10.2010) (3) Boles, D., Jasper, D. (2009). Hamster-Simulator. Version 2.6.1. Benutzerhandbuch. WWW:http://www.java-hamster-modell.de (27.01.2010) (4) Börgens, M. (2010). Mathematische Probleme. WWW: http://homepages.fhfriedberg.de/boergens/problem/problem064.htm (24.10.2010) (5) Cawsey, A. (2002). Künstliche Intelligenz im Klartext. München: Pearson Studium (6) Clocksin, W.F., Mellish, C.S (1981). Programming in Prolog. Berlin, Heidelberg, New York: Springer Verlag (7) Ertel, W. (2008). Grundkurs Künstliche Intelligenz. Eine praxisorientierte Einführung. Wiesbaden: Vieweg Verlag (8) Jan Wielemaker (2009). SWI-Prolog. Version 5.8.3. University of Amsterdam. WWW: http://www.swi-prolog.org/ (15.11.2010) (9) Lämmel, U., Cleve, J. (2004). Lehr- und Übungsbuch Künstliche Intelligenz. 2.Auflage, München: Hanser Verlag (10) Poole, D., Mackworth, A., Goebel, R. (1998). Computational Intelligence. A Logical Approach. New York, Oxford: Oxford University Press (11) Russel, S., Norvig, P. (2004). Künstliche Intelligenz. Ein moderner Ansatz. 2.Auflage, München: Pearson Verlag (12) Sterling, L., Shapiro E. (2002). The Art of Prolog. Advanced Programming Techniques. 2nd Edition. Cambridge, MA: The MIT Press Johannes Arz, Der intelligente Hamster 15/17 Literatur (nach Themen) Hamster-Simulation Boles, D. (2010). Willkommen beim Java-Hamster! WWW:http://www.java-hamstermodell.de (24.10.2010) Boles, D., Jasper, D. (2009). Hamster-Simulator. Version 2.6.1. Benutzerhandbuch. WWW:http://www.java-hamster-modell.de (27.01.2010) KI-Lehrbücher Lämmel, U., Cleve, J. (2004). Lehr- und Übungsbuch Künstliche Intelligenz. 2.Auflage, München: Hanser Verlag Beierle, C., Kern-Isberner, G.(2008). Methoden wissenbasierter System. 4.Auflage, Wiesbaden: Vieweg+Teubner Verlag Russel, S., Norvig, P. (2004). Künstliche Intelligenz. Ein moderner Ansatz. 2.Auflage, München: Pearson Verlag Cawsey, A. (2002). Künstliche Intelligenz im Klartext. München: Pearson Studium Poole, D., Mackworth, A., Goebel, R. (1998). Computational Intelligence. A Logical Approach. New York, Oxford: Oxford Universty Press Ertel, W. (2008). Grundkurs Künstliche Intelligenz. Eine praxisorientierte Einführung. Wiesbaden: Vieweg Verlag Prolog Clocksin, W.F., Mellish, C.S (1981). Programming in Prolog. Berlin, Heidelberg, New York: Springer Verlag Jan Wielemaker (2009). SWI-Prolog. Version 5.8.3. University of Amsterdam. WWW: http://www.swi-prolog.org/ (15.11.2010) Das Problem der Wasserkrüge Börgens, M. (2010). Mathematische Probleme. WWW: http://homepages.fhfriedberg.de/boergens/problem/problem064.htm (24.10.2010) Suchen Sterling, L., Shapiro E. (2002). The Art of Prolog. Advanced Programming Techniques. 2nd Edition. Cambridge, MA: The MIT Press Johannes Arz, Der intelligente Hamster 16/17 Bildnachweis Seite 1 (Hamster) http://www-is.informatik.uni-oldenburg.de/~dibo/hamster/index.html Seite 1 (Gehirn) http://fudder.de/fileadmin/media/images/brain.jpg Seite 13 (Wumpus-Welt) (11), Seite 253 Software (Alle Programme sollten auch mit neueren Versionen laufen.) JavaTM 2 SDK, Standard Edition, Version 1.4.0 Hamstersimulator, Version 2.7.1 SWI-Prolog, Version 5.8.3 Prolog- Quellen Bei Interesse versende ich die Prolog-Programme als Quelldateien. Email an [email protected] genügt. Johannes Arz, Der intelligente Hamster 17/17