Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Logikorientierte ProgrammierungEine Vorschau
Die Logikorientierte Programmierung ist eines der grund-legenden Programmierparadigmen. Als konkrete Program-miersprache verwenden wir Prolog (programmation en logi-que), den bekanntesten Vertreter, gemeinsam mit den neue-sten Erweiterungen — Constraints.
Die folgenden Bilder sind dem an unserem Institut entwickel-ten System GUPU entnommen, das in der Lehrveranstaltung185.179 VL Logikorientierte Programmierung zum Einsatzkommt.
1
Mit Prolog durch Europa
Die Knoten des europaischen Eisenbahnnetzes dienen uns als Einstieg in Prolog. Mit einemeinzeiligen Programm werden die einzelnen Eisenbahnknoten aufgezeigt.So erfahrt man auch, dass Dax —entgegen landlaufiger Meinung— nicht in der Nahe vonFrankfurt liegt.
2
Noch ein Bruderzwist im Hause Habsburg
Hier ist einiges durcheinander geraten. Wer ist nun der Vater von Franz II, dem Grunderunserer Universitat? Ist es Joseph II, der Furst der Vernunft, oder sein Bruder Leopold II?Und wie kommt die große Maria Theresia dazu, ihr eigenes Enkelkind zu sein?GUPU zeigt die unterlaufenen Inkonsistenzen auf und reduziert mittels automatisierterProgrammdiagnose das Problem auf die wenigen dafur verantwortlichen Fakten. Die genaueUrsache kann GUPU jedoch nicht ergrunden. Dazu ist zu wenig Wissen vorhanden.
3
Gleich und gleich gesellt sich gern
Der umfassende Begriff der Unifikation ersetzt und vereinheitlicht, was in herkommlichenProgrammiersprachen durch viele verschiedene Konzepte wie Zuweisung, Zugriff, Vergleichausgedruckt wird.Im Bild wird die Gleichung [U|Us] = [[a]] veranschaulicht.Dabei werden die freien Teile (Variable, dargestellt durch Rechtecke) mit passenden be-kannten Teilen gebunden.
4
Komplexe Datenstrukturen
Komplexe Datenstrukturen wie Arrays in herkommlichen Sprachen werden in Prolog mitTermen dargestellt.Das Rautenmuster im Bild —beliebt bei Einlegearbeiten seit antiken Zeiten— wird mitTermen beschrieben.
5
Alle Wege fuhren nach...
Alle Wege fuhren nach Rom? Eulen nach Athen tragen? Fur Prolog heißt diese StadtMarseille. Dort erblickte Anfang der 1970er-Jahre Prolog und damit die LogikorientierteProgrammierung durch Alain Colmerauer das Licht der Welt.Ein Jahrzehnt spater nahm die nachste Neuerung (Constraintlogische Programmierung)wieder diese Stadt zu ihrem Ausgangspunkt.In dieser Lehrveranstaltung befassen wir uns mit beiden Richtungen.
6
Barocke Kunstliche Intelligenz
Mit diesem”Denkring“ erzeugte der Dichterfurst Georg Philipp Harsdorffer deutsche Worter
bzw. solche, die deutsch klingen. So gesehen handelt es sich um einen der ersten Versuche,unsere Sprache rein mechanisch zu beschreiben. 350 Jahre nach seinem Erscheinen hilft unsHarsdorffers Denkring, Prologs Ausfuhrungsmechanismus zu veranschaulichen. In GUPUwurde die Anweisung an den Buchbinder leicht modernisiert umgesetzt:An den Buchbinder. Dieses Blatlein muß heraus geschnidten/ in funff Ringe zertheilet/ und auf funff gleich-grosse Scheibenvon Papyr/ also aufeinander gehefftet werden/ daß man jeden Ring absonderlich umbdrehen kan/ wann solchs geschehen/ mußman dies funfffache Blat wider hinein pappen.
7
Baume wachsen nicht in den Himmel
In der Informatik konnen Baume beliebig groß sein! Aber sie wachsen nicht hinauf in denHimmel, sondern von oben nach unten!Im Bild ist der Abstrakte Syntaxbaum des Ausdrucks (1+((1+1)+(1+1))) zu sehen. DerAbstrakte Syntaxbaum ist das konzeptuelle Ruckgrat eines jeden Compilers. Er ist dasBindeglied zwischen syntaktischer Analyse und den semantischen Komponenten.
8
Sekundarfaltung der Transfer-RNA
C CAC
GG
CC
G A T AT
CC
TTA
G C T TGGG
TGCTG
GA
TG A C T
A A TG
TTC
AGTCA
ACGAG
ATG
GAC
GA
CTCGA
TTTG
GC
CG
Ein Teil der Bedeutung des genetischen Codes lasst sich aus der Struktur ersehen, wieein RNA-Strang sich in sich selbst falten kann. Kann er sich wie ein Kleeblatt (Bild)falten, so konnte sich hier eine Transfer-RNA befinden, die fur die Erzeugung eines Proteinsverantwortlich ist.Innerhalb der Molekularbiologie wurden in den 1980-er Jahren linguistische Strukturen wiediese mit Grammatiken untersucht.
9
Planung eines Bruckenbausot
her
conc
rete
_ex
cava
torc
ater
pilla
rpile
_driv
eca
rpen
try
bric
klay
incr
ane
t0 10 20 30 40 50 60 70 80 90 100
stop
k2
rth
ct6
ct4
k1
ct3
ct2
ct1
ct5
eth
start
cf6
cf4
cf3
cf2
cf1
cf5
ex6
ex4
ex2
ex3
ex1
ex5
fg2
fg1
fp2
fp1
fw6
fw4
fw3
fw2
fw1
fw5
mw6
mw4
mw3
mw2
mw1
mw5
pg4
pg5
pg3
pg2
pg1
dfb
Um eine Brucke zu bauen, mussen viele voneinander abhangige Arbeiten durchgefuhrtwerden. Ziel der Planung ist ein moglichst kostengunstiger Plan. Mit Constraints werdendiese Abhangigkeiten beschrieben, damit Prolog eine Losung findet.Bauhutte: Errichtung (eth), Abriss (rth)Widerlager/Pfeiler: Aushub (ex), Fundament (fp), Schalung (fw), Betonfundament (cf)und Absetzzeit (ct) Maurerarbeiten (mw)Trager: Lieferung (dfb), Aufsetzen (pg)
10
Planung periodischer Echtzeitaufgaben
Periodic Plan: Db=big
ihih igig ifif ieie
idid icic ibib iaiahhhh hghg hfhf hehe
hdhd hchc hbhb haha
gb
gafbfaebeb
eaea dddd dcdcdcdcdbdb dada
cccc cccbcaca
bbbaag
af
ae
adacabaa
ihih igig ifif ieie
idid icic ibib iaiahhhh hghg hfhf hehe
hdhd hchc hbhb haha
gb
gafbfaebeb
eaea dddd dcdcdcdcdbdb dada
cccccccbcaca
bbba
ihih igig ifif ieie
idid icic ibib iaiahhhh hghg hfhf hehe
hdhd hchc hbhb haha
gb
gafbfaebeb
eaea dddd dcdcdcdcdbdb dada
cccccccbcaca
bbbaag
af
ae
adacabaa
ihih igig ifif ieie
idid icic ibib iaiahhhh hghg hfhf hehe
hdhd hchc hbhb haha
gb
gafbfaebeb
eaea dddd dcdcdcdcdbdb dada
cccccccbcaca
bbba
bus
cpu0cpu1cpu2cpu3cpu4cpu5cpu6cpu7
0 31
bus
cpu0cpu1cpu2cpu3cpu4cpu5cpu6cpu7
32 63
bus
cpu0cpu1cpu2cpu3cpu4cpu5cpu6cpu7
64 95
bus
cpu0cpu1cpu2cpu3cpu4cpu5cpu6cpu7
96 127
Transactions: a b c d e f g h i
In vielen Echtzeitsystemen laufen standig sich wiederholende Aufgaben ab, wobei zeitlicheGarantien zur Reaktionszeit des Gesamtsystems im Vordergrund stehen. Die Aufgabenwerden hier von acht Prozessoren ubernommen (cpu0-cpu7), die uber einen Bus miteinanderkommunizieren.
11
In der Hohle des Wumpus
-6Musste sich einst Odysseus in der Hohle des Zyklopen und Theseus in der des Minotaurusbewahren, werden heutzutage Softwareagenten (Pfeil) in die Hohle des Wumpus geschickt— mit nur einem Schuss in der Flinte. Dabei helfen ihnen weder List noch Ariadnefaden.Die Hohle ist so dunkel, dass nicht einmal die angrenzenden Felder zu sehen sind. Manspurt nur die kalte Brise einer nahen Grube (blau). Neben dem Wumpus (braun) riechtman seinen Gestank. Trifft man ihn mit der Flinte, hort man noch seinen Schrei. DenGlanz des Goldes (gelb) sieht man einzig auf dem Feld selbst.Der Agent ist auf seine Fahigkeit angewiesen, mit diesen wenigen Wahrnehmungen zumGold und zuruck zu gelangen. GUPU zeigt das Wissen des Agenten als kleine Quadrate inden Feldern. Rechts oben halt der Agent falschlicherweise eine Grube fur ein freies Feld.
12
Ein Agentenfilm mit einem Intelligenten Agenten
0 -1 -2 -3 -4
-5 -6 -7 -8 -9
-10 -11 -12 -13 -14
-15 -16 -17 -18 -19
-20 -21 -22 977Wagemutig lotst sich der Agent am Wumpus vorbei zum Gold. Mit jedem Schritt erfahrt ermehr uber die Beschaffenheit der Hohle und seine Vermutungen (kleine Quadrate) werdenzur Gewissheit (Felder in kraftigen Farben). Dabei kostet ihm jeder Schritt einen Punkt.Allerdings hat sich unser Agent nicht fur das kostengunstigste Verhalten entschieden. DerSchuss auf den Wumpus ist nicht nur unbarmherzig, sondern verursacht auch unnotigeKosten, da der Agent ohnehin wusste, wo sich das Ungeheuer befindet.
13