5 - Grundlagen der Logik und Logikprogrammierung [ID:2198]
50 von 612 angezeigt

Dieser Audiobeitrag wird von der Universität Erlangen-Nürnberg präsentiert.

Ja, herzlich willkommen.

Ja, wir haben im Anschluss an das, was wir letzte Woche zum Thema Prolog gesehen haben,

jetzt ein etwas formaleres, aber rein syntaktisches Thema,

das uns also etwas dazu sagt, wie so ein Prolog-Engine denn nun tatsächlich funktioniert.

Und zwar befasst sich die, andersrum gesagt, die Frage, die sich stellt, ist,

wie schafft es der Prolog-Engine Formeln, also Regeln, die mit Variablen formuliert sind,

korrekt zu instantiieren auf Anfragen, die ich ebenfalls mit Variablen, womöglich mit komplexen Termen formuliere.

Und das große Schlagwort dafür lautet Unifikation.

Wir fangen an mit einem Beispiel, was uns zurückführt in diese Welt von Prolog.

Wir erinnern uns an die Append-Funktion, die nicht wirklich eine Funktion,

sondern nur ein Prädikat war, die wir letztes Mal definiert haben,

und stellen uns vor, wir würden folgende Anfrage stellen.

Wir haben ja letztes Mal gesehen, dass diese Anfragen keineswegs nur von der Form sein müssen,

welche Liste kommt raus, wenn ich Liste A und Liste B zusammenhänge,

was also die Art Anfrage wäre, die mir eine typische funktionale Programmiersprache beantworten könnte,

sondern wir können auch ganz andere Dinge als Variablen offen lassen

und also sehr komplexe Anfragen an dieses Append-Prädikat stellen,

zum Beispiel, welche Listen kann ich zusammenfügen, um eine gegebenen Liste zu erhalten.

Das kann auch noch komplizierter aussehen, zum Beispiel könnten wir folgende Anfrage stellen.

Das Append-Prädikat hat ja drei Argumente und wir könnten also,

einfach weil es uns gerade einfällt, so eine Anfrage stellen.

Das wäre also die Anfrage, die fragt, welche Listen,

also welche zwei Listen kann ich zusammenhängen, wobei die zweite Liste mit einer Null beginnt,

sodass ich eine Liste heraus bekomme, die mit der Sequenz 1.0.1 beginnt.

So eine Anfrage, die hat natürlich unendlich viele Antworten,

das heißt, ich kann letztlich im Prolog dann immer wieder Semikolon drücken

und bekomme mehr und mehr Lösungen dafür.

Die Frage ist, was kann man da tun?

Der Prolog-Engine wird jetzt hingehen und versuchen, diese Anfrage auf sein Wissen zu matchen.

Sein Wissen besteht aus zwei Dingen, einmal ein Faktum, das betrifft den Fall,

wobei Append die ersten beiden Listen leer ist.

Und das zweite ist eine Regel, die betrifft nun gerade den Fall, wo das nicht so ist.

Sagen wir mal, wir versuchen also auf diese Regel zu matchen.

Also matchen mit...

Ja, wie sieht die Regel aus?

Die sagt uns, dass eine zusammengesetzte Liste,

ich nehme jetzt mal Indizes an die Variablen mit dran, um hier Namensclashes zu vermeiden.

So etwas komponiert mit einer Liste Z1 ergibt die zusammengesetzte Liste X1W1,

also die Liste mit Kopf H1 und Rest W1.

Wenn das Append Prädikat gilt für X, Y und Z mit anderen Worten,

nein, Entschuldigung, nicht Z, X, Falsch, falsch, falsch, falsch, falsch,

für Y1, Z1 und W1.

Das spricht, wenn also hier die Restliste zusammengesetzt mit Z1 gerade W1 ergibt.

Gut, das soll uns jetzt semantisch alles gar nicht interessieren.

Wir denken rein syntaktisch, wir stellen uns vor, wir werden der Prolog Engine

und müssen jetzt diese Konklusion hier matchen auf dieses Ziel.

Ja, das heißt, was heißt das letztlich?

Wir können ja das Ziel spezialisieren bzw. wollen das sogar.

Die Spezialisierung des Ziels sind letztlich Lösungen des Problems.

Zugänglich über

Offener Zugang

Dauer

01:28:14 Min

Aufnahmedatum

2012-05-16

Hochgeladen am

2012-05-18 15:37:45

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen