Siegel der CAU

Institut für Informatik der CAU Kiel

Dr. Friedemann Simon

WS 2007/08

Programmiertechniken
für die künstliche Intelligenz

WICHTIG!!! Das Turnier (die Endabnahme) findet aus organisatorischen Gründen NICHT wie verabredet im Raum 709 statt, sondern im Grundausbildungspool (Keller des Rechenzentrums, HRS3 - R.105).

Inhalt

Unabhänging von der prinzipiellen Diskussion, ob informationsverarbeitende Systeme der Informatik als Basis für die Beschreibung und Erklärung kognitiver Phänomene geeignet sind, gibt es Teilgebiete der "künstlichen Intelligenz", in denen kognitive Systeme durch symbolische Informationsverarbeitung instantiiert werden können. Hier sind in erster Linie "Expertensysteme" zu nennen, die inzwischen die industrielle Einsatzfähigkeit erlangt haben. Ein grundsätzlich anderer Weg wird bei dem Versuch der Rekonstruktion von kognitiven Leistungen über künstliche Neuronen eingeschlagen. Künstliche neuronale Netze orientieren sich in ihren Verarbeitungsschritten an den Prinzipien der Informationsverarbeitung in neuronalen Geweben, soweit diese überhaupt schon bekannt sind. Trotz aller Unzulänglichkeiten heutiger Netze gibt es eine Fülle interessanter Anwendungen künstlicher neuronaler Netze, speziell zur Mustererkennung in einem sehr weiten Sinne. Im ersten Teil der Vorlesung soll der symbolische Ansatz für die KI-Programmierung vorgestellt werden. Ausgehend von einer Diskussion philosophischer Positionen werden typische Probleme und Verfahren zu ihrer Lösung im Rahmen der KI vorgestellt. Es folgen gebräuchliche Verfahren zur Wissensrepräsentation und zur Inferenz von ableitbarem Wissen als Kern wissensbasierter Systeme. Im zweiten Teil der Vorlesung sollen Möglichkeiten und Grenzen einiger typischer Modelle für künstliche neuronale Netze dargelegt werden. In der Übung soll ein umfangreicheres KI-Programm erstellt werden. Programmiert wird mit LISP, einer Sprache, die für die symbolische Informationsverarbeitung geeignet ist.

Es sei darauf hingewiesen, dass diese Vorlesung zusammen mit "Ausgewählte Kapitel der Künstlichen Intelligenz" von Herrn Dr. Salski einen Block im Rahmen des Prüfungsfaches Praktische Informatik bildet.

Termine

Vorlesung:Montag, 16-18h ctCAP 2, Raum E [Audimax]
Übung: Dienstag, 16-18h ctCAP 2, Raum B [Audimax]

Wie immer werden außerhalb der Vorlesung und der Übung wieder betreute Rechnerzeiten für die Studierenden angeboten, in denen auch die Abnahmen für die Übungsserien durchgeführt werden.

Rechnerzeiten
Montag, 14-16h stCAP 4, Raum 709
Donnerstag, 12-14h stCAP 4, Raum 709

Semesterprojekt

Das Semesterprojekt hat eine eigene Seite mit Informationen

Abgabe der Aufgaben

Die Aufgaben bitte pünktlich zum Abgabetermin per Mail an proki@informatik.uni-kiel.de. Diese Mailadresse dient nur für die Abgabe der Aufgaben eurerseits und Informationen an euch unsererseits. Bei Fragen wendet euch bitte direkt an die Hilfskräfte (Mail-Adressen weiter unten).

WICHTIG: Ihr bekommt erst Punkte für eine Aufgabe, wenn ihr sie uns an den Rechnern im Computerlabor vorstellt. Es müssen nicht bei jeder Abnahme beide Gruppenmitglieder anwesend sein. Wenn ein Student zu beiden angebotenen Rechnerzeiten überhaupt keine Zeit hat, sollte er sich mit den Hilfskräften in Verbindung setzen um eine Lösung zu finden. Wer die Aufgaben schon vor dem Abgabetermin vorstellt, braucht sie nicht mehr zu schicken.

Zur Erinnerung: Bitte bringt zu jeder Übungsstunde einen Ausdruck eurer Lösung der jeweils zur Besprechung anstehenden Aufgaben mit, so daß ihr diese an der Tafel vorstellen könnt.


Die Betreffzeile eurer Abgabe muß folgendes Aussehen haben:

Nr. der Aufgabenserie Leerzeichen Name1/Name2

Serie 1 von Meier und Schulze sähe also so aus: 01 Meier/Schulze

Tutorials

Hier gibt es ein paar hilfreiche Hinweise zum benutzen von Lisp.

Starten von gcl

Arbeiten mit gcl

Nachdem der Gnu Common Lisp Interpreter durch Eingabe von gcl gestartet wurde, erscheint ein Prompt wie folgt:

>

Hier hat man nun die Möglichkeit Lisp-Ausdrücke direkt einzugeben. Eingegebene Funktions- oder Variablendefinitionen sind jedoch nur bis zum Beenden des Interpreters gültig. Also ist es besser, diese in einer Datei (Exentension .lsp oder .lisp) zu speichern. Das Laden von Definitionen aus einer Datei in das Gnu Common Lisp System geschieht mit folgenden Befehl:

>(load "name.lsp")

Sind fehlerhafte Definitionen in der Datei (oder wurde ein fehlerhafter Lisp-Ausdruck direkt eingegeben), so befindet der Interpreter sich im Anschluß im Debug-Modus, gekennzeichnet durch folgendes Prompt:

>>

Den Debug-Modus verläßt man durch folgenden Befehl:

>>:q

Zum Beenden des Gnu Common Lisp Systems dient folgender Befehl:

>(bye)

Leitfäden

Ein kleiner Programmierleitfaden zum Erstellen von strukturierten Programmen

Und ein ebensolcher Leitfaden zum sinnvollen Dokumentieren von Quellcode

Literatur und Links

Common Lisp Interpreter

Warum car und cdr?

Damit man diese merkwürdigen kryptischen Funktionsnamen car und cdr (sprich: Kudder) versteht, hier eine "historisch" bedingte Erklärung:

In der ersten Implementierung von LISP auf einer IBM 7090 wurden die implementierten cons in Registerteile gespeichert, und zwar der erste im "Content of Adress part of Register" und der zweite im "Content of Decrement part of Register" und weil die Leute dazu neigen allem Ihre eigenen Namen zu geben evtl. auch weil first und rest einen Buchstaben mehr haben ...

Letzte Änderung war sicherlich irgendwann (nachts) durch irgendwen aus irgendeinem Grund.

Das Team
Dr. Simon Sven Boike Marcel Hamann