Document

Werbung
Übungen – KI
Prof. Dr. Jürgen Cleve
Inhaltsverzeichnis
1 Übung Prolog I
1
2 Übung Prolog II
2
3 Übung Prolog III
3
4 Übung Prolog IV
4
5 Übung Prolog V
4
6 Übung WR/WV I und II – Logik
5
7 Übung WR/WV III und IV – Logik
5
8 Übung WR/WV V – Regelsysteme
6
9 Übung Vages Wissen
7
10 Übung Suche I und II
8
11 Übung Suche III und IV
9
12 Übung Data Mining
9
1
Übung Prolog I
1. Entwickeln Sie in Prolog eine Wissensbasis über Ihre Familie! Verwenden Sie dabei die
in der Vorlesung vorgeschlagene Variante mittels vater von und frau von. Definieren
Sie die Prädikate:
• mutter von
• eltern von
• bruder von
• grosseltern von
• tante von
• vorfahre von
Hinweise
• Starten Sie SWI-Prolog!
1
• Legen Sie eine neue Datei (Dateityp .pl) an und speichern Sie diese in Ihrem lokalen
Verzeichnis.
• In diese Datei schreiben Sie Ihre Fakten und Regeln.
• Laden Sie diese Datei (consult) und stellen Sie dann Anfragen!
• Man kann die Abarbeitung verfolgen (trace).
• Beachten Sie: Variablen beginnen in Prolog mit einem Großbuchstaben, Konstante mit
einem Kleinbuchstaben.
2
Übung Prolog II
1. Sechs Mann – nennen wir sie A, B, C, D, E, F – wurden in die engere Wahl für die
Funktion des Vorsitzenden, des Stellvertreters und des Sekretärs der Gesellschaft der
Freunde von logischen Aufgaben gezogen. Aber die Bestimmung dieser drei erwies sich
als nicht so leicht, weil jeder der sechs gewisse Ansprüche stellte:
(a) A will nicht zur Leitung gehören, wenn E nicht Vorsitzender wird.
(b) B will nicht zur Leitung gehören, wenn er über C stehen soll.
(c) B will unter gar keinen Umständen zusammen mit F arbeiten.
(d) C will nicht mitarbeiten, wenn der Leitung E und F zusammen angehören.
(e) C wird nicht mitarbeiten, wenn F Vorsitzender oder B Sekretär ist.
(f) D wird nicht mit C oder E arbeiten, wenn er dem einen oder anderen unterstellt
ist.
(g) E will nicht Stellvertreter sein.
(h) E will nicht Sekretär sein, wenn D Mitglied der Leitung ist.
(i) E will nicht zusammen mit A arbeiten, wenn F nicht der Leitung angehört.
(j) F will nur mitarbeiten, wenn er oder C Vorsitzender wird.
Wie wurden die Posten verteilt ? Entwickeln Sie eine Lösung mittels PROLOG!
Hinweis: “Zusammen arbeiten” bezieht sich nur auf die Leitungspositionen, ebenso die
Hierarchie.
2. Definieren Sie den folgenden Graphen mittels Fakten kante/2 und entwicklen Sie ein
Prädikat weg/2, welches entscheidet (true/false), ob ein Weg vom ersten zum zweiten
Parameter existiert.
a
c
b
e
d
f
g
i
j
h
l
k
Die Anfrage ?-weg(a,k). liefert true, ?-weg(c,b). liefert false.
Was passiert, wenn man eine Kante von e nach a hinzufügt.
3. Wie sieht eine Regel dafür aus, dass sich 2 Kreise (in der Ebene) nicht berühren? Wählen
Sie dazu eine passende Darstellung für einen Kreis!
Hinweise
• Starten Sie SWI-Prolog!
• Legen Sie eine neue Datei (Dateityp .pl) an und speichern Sie diese in Ihrem lokalen
Verzeichnis.
• In diese Datei schreiben Sie Ihre Fakten und Regeln.
• Laden Sie diese Datei (consult) und stellen Sie dann Anfragen!
• Man kann die Abarbeitung verfolgen (trace).
• Beachten Sie: Variablen beginnen in Prolog mit einem Großbuchstaben, Konstante mit
einem Kleinbuchstaben.
3
Übung Prolog III
1. Programmieren Sie in Prolog folgende Listen-Prädikate:
• Typ-Prüfung: Aus einer Liste sollen nur alle Zahlen übernommen werden.
(?-pruefe([2,a,[1,2],3,1,4],X) → X=[2,3,1,4])
• Löschen aller Zahlen aus einer Liste (?-loesche([2,[4,3],3,b,1,X,4],Y) →
Y=[[4,3],b,X])
• Ist eine Liste eine sortierte Liste von Zahlen? (?-ist sortiert([1,2,3,7,8]) →
true, ?-ist sortiert([1,6,3,2,8]) → false)
• Teilmengenbeziehung (?- teilmenge([1,2],[3,1,4,2]) → true)
• Umdrehen einer Liste (?- rev([1,a,2],X) → X=[2,a,1])
• Nichtenthalten von Elementen in Listen (?- nichtin(b,[1,a,2]) → true)
• Ist eine Liste in einer anderen Liste als Sequenz enthalten?
(?- sequenz([3,5,6],[a,d,3,5,6,7,6]) → true)
2. Ergänzen Sie folgende Tabelle:
Term1
kind(X,peter)
geboren(kai,datum(X,Y,Z))
[a, b, c, d]
X
[ ]
[3]
a(2, b(3))
[a, b, 4, X]
Term2
kind(otto,Y)
geboren(U,V)
[X|Y ]
f (Y, X)
[A|B]
[A|B]
a(2, b(4 − 1))
[A, C|Rest]
Unifikation
Ergebnis
3. Ich habe mir eine sechsstellige Zahl ausgedacht. Wenn ich die letzten beiden Ziffern
wegnehme und vorn dranschreibe (in dieser Reihenfolge), erhalte ich eine sechsstellige
Zahl, die exakt ein Neuntel der Ursprungszahl ist.
Finden Sie diese Zahl mit einem Prolog-Programm.
Hinweise
• Starten Sie SWI-Prolog!
• Legen Sie eine neue Datei (Dateityp .pl) an und speichern Sie diese in Ihrem lokalen
Verzeichnis.
• In diese Datei schreiben Sie Ihre Fakten und Regeln.
• Laden Sie diese Datei (consult) und stellen Sie dann Anfragen!
• Man kann die Abarbeitung verfolgen (trace).
• Beachten Sie: Variablen beginnen in Prolog mit einem Großbuchstaben, Konstante mit
einem Kleinbuchstaben.
4
Übung Prolog IV
1. Entwickeln Sie in Prolog Regeln für die Zusammensetzung eines Menüs, also z.B. aus:
Suppe, Vorspeise, Hauptgang, Dessert, Getränk! Entwickeln Sie dazu geeignete Datenstrukturen zur Darstellung! Gehen Sie zunächst davon aus, dass alles mit allem – z.B.
jede Vorspeise mit jedem Hauptgang – kombinierbar ist.
2. Entwickeln Sie das Programm für Menüs weiter, um folgende Menüs finden zu können:
• Billige Menüs
• Vegetarische Menüs
• Kalorienarme Menüs
Erweitern Sie dazu Ihre Darstellung der Speisen um die Zahlen für Kalorien und Preis
sowie ein Attribut für vegetarisch. Ziel ist, Menüs auszugeben, die einen bestimmten
Preis oder eine Kalorienanzahl nicht überschreiten bzw. die vegetarisch sind.
5
Übung Prolog V
1. Entwickeln Sie einen Sortieralgorithmus für Listen! Gehen Sie dabei von Listen mit
Zahlen aus! Vorausgesetzt sei ein Prädikat gt, welches true liefert, falls der 1. Parameter
größer als der 2. Parameter ist, also z.B. gt(3,1).
Für Zahlen ist das Prädikat also z.B. durch gt(X,Y) :- X > Y. definiert.
Eine mögliche Anfrage ist zB: ?-sortiere([3,1,4,2],X).
→
X=[1,2,3,4].
2. Entwickeln Sie Prädikate für die Klötzchen-Welt.
• Gehen Sie zunächst davon aus, dass es nur Würfel einer Einheitsgröße gibt. Entwickeln Sie eine geeignete Darstellung dafür, welche Würfel sich auf unserem Tisch
befinden, z.B. könnte man durch [[a,b,c],[d,e]] darstellen, dass sich auf unserem
Tisch 5 Objekte befinden, wobei a auf b, b auf c und d auf e steht. Programmieren
Sie folgende Prädikate:
– stelle objekt(X,Y) Das Objekt X soll auf Y draufgestellt werden.
– stelle objekt auf tisch(X) Das Objekt X soll auf den Tisch gestellt werden. Dies kann ein neues Objekt, aber auch ein bereits auf dem Tisch befindliches sein.
• Untersuchen Sie, was man ändern muss, wenn man auch andere Objekte wie Kegel,
Zylinder o.ä. auf dem Tisch zulassen will.
6
Übung WR/WV I und II – Logik
1. Übersetzen Sie folgende umgangssprachlichen Sätze in eine prädikatenlogische Formel:
• Jeder weiß etwas.
• Keiner weiß alles.
• Manche wissen gar nichts.
• Keiner kennt jemanden, der alles weiß.
• Jeder duzt sich mit irgendjemandem.
• Es gibt eine Mannschaft, gegen die der FC Hansa Rostock noch nie verloren hat.
• In Wismar scheint im Sommer immer die Sonne.
• Nachts sind alle Katzen grau.
• Die Mecklenburger lieben ihre Nachbarn.
• Die Wismarer essen nur Fleisch.
• Ich kenne jemanden, der jemanden kennt, der schon mal in Australien war.
• Eine Aktie ist attraktiv, wenn ihr Kurs steigt.
• Eine Aktie habe ich.
2. Übersetzen Sie folgende Sätze in die Prädikatenlogik:
• Kein Metzger ist Vegetarier.
• Alle Männer außer Metzgern lieben Vegetarier.
• Die einzigen vegetarischen Metzger sind Frauen.
• Kein Mann liebt eine Frau, die Vegetarier ist.
• Keine Frau liebt einen Mann, der nicht alle Vegetarier liebt.
3. Stellen Sie in Prädikatenlogik dar:
(a) All politicians are elected by residents.
(b) No one sane will vote for a crook.
(c) Some politicians are crooks.
Beweisen Sie mittels Resolution : “There is a resident who is insane”.
7
Übung WR/WV III und IV – Logik
1. Seien folgende Aussagen gegeben:
• Politiker mögen niemanden, der knausrig ist.
• Jeder Politiker mag eine Firma.
• Es gibt Politiker.
Beweisen Sie, dass es eine Firma gibt, die nicht knausrig ist.
2. Seien folgende Aussagen gegeben:
• Pferde sind schneller als Hunde.
• Es gibt einen Windhund, der schneller als jeder Hase ist.
• Fury ist ein Pferd.
• Bunny ist ein Hase.
Beweisen Sie mittels Resolution, dass Fury schneller als Bunny ist. Welche Probleme
sehen Sie, wenn man den Beweis automatisch finden will?
Vorgehen
• Kopieren Sie die Dateien unter Beweiser, in Ihr lokales Verzeichnis!
• Starten Sie SWI-Prolog!
• Laden Sie die Datei swipl1.pl.
• Öffnen und editieren Sie die Datei pl1bsp.txt!
• Folgen Sie den Hinweisen im unteren Fenster.
Hinweise
• Prädikatenlogische Formeln werden in unseren Beispielen wie folgt dargestellt:
– Negation: ˜
– Und: &, Oder: v
– Implikation: − >, Äquivalenz: < − >
– Für alle: all(x,p(x))
– Es existiert ein: ex(x,p(x))
• Verwenden Sie als prädikatenlogische Variablen keine Prolog-Variablen. Z.B. steht die
Formel
ex(y,(a(y) & all(x,ex(z,(p(x,z) -> q(z,x)))))) <-> t
für ∃y (a(y) ∧ ∀x ( ∃z (p(x, z) → q(z, x)))) ↔ t
• Der Beweiser verwendet in den Formeln eigene Variablenbezeichnungen (x..).
• Das zu beweisende Ziel benötigt als Schlüsselwort goal.
8
Übung WR/WV V – Regelsysteme
1. Eine Aufgabe aus der englischen Zeitschrift Observer: In einem Tierpark sind sämtliche
Tiere in die falschen Käfige geraten. Der Wärter soll die Tiere schleunigst in die richtigen
Käfige bringen. Da 4 von den Tieren Raubtiere sind, ist es ausgeschlossen, dass zwei von
ihnen gleichzeitig in denselben Käfig oder in den gemeinsamen Außenkäfig getrieben
werden. Welches ist die geringste Zahl von Umsetzungen, die der Wärter durchführen
muss?
(a) Helfen Sie dem Wärter, eine Lösung zu finden.
+---Loewe--+---Esel---+---Wolf---+-Krokodil-+-Panther-+
|
|
|
|
|
|
| Panther | Krokodil | Esel
| Loewe
| Wolf
|
|
#
#
#
#
|
+----#-----+----#-----+----#-----+----#-----+----#----+
|
|
+----Aussenkaefig-------------------------------------+
(b) Lösen Sie das Problem mittels Vorwärtsverkettung.
Hinweise
• Kopieren Sie diese Dateien Regel-Verarbeitung, Beispiel in Ihr lokales Verzeichnis!
• Starten Sie Prolog!
• Öffnen und editieren Sie die Datei bsp-forw.pl! Ergänzen Sie die Regeln!
• Beachten Sie die Hinweise in der Datei fwreason.pl.
• Laden Sie die Datei (consult) und rufen Sie loesung. auf.
Beachten Sie, dass es um Aktionsregeln geht. Schwerpunkt ist hier also nicht Prolog,
sondern die korrekte Formulierung von Aktionsregeln.
2. Entwickeln Sie ein Regelsystem, welches eine Diagnose für ein nicht erfolgreich startendes Auto durchführt. Bauen Sie zumindest Zündkerzen, den Füllstand des Tanks, die
Batterie, den Anlasser ein. Den Zustand dieser Komponenten können Sie in Faktenform
vorgeben.
9
Übung Vages Wissen
1. Wir wollen uns ein Auto kaufen. Wichtige Kriterien sind für uns:
• Das Auto sollte aus Versicherungsgründen nicht zu stark, aber auch nicht zu
schwach sein. Optimal sind 80-90 PS.
• Das Auto sollte nicht fehleranfällig sein.
• Das Auto soll preiswert sein oder im Spritverbrauch niedrig sein.
Uns liegen 3 Angebote vor:
Angebot
PS
BMW
Trabant
Opel
120 PS
27 PS
75 PS
Pannen auf
100 Tkm
3
7
6
Preis
Spritverbrauch
40000
5000
20000
9
7.5
8
Wählen Sie mit Hilfe der Fuzzy-Logik das günstigste Auto aus. Entwickeln Sie dazu
Fuzzy-Mengen für die unscharfen Begriffe.
2. Seien folgende Regeln gegeben:
• WENN leichtes Fieber UND normaler Puls DANN kleine Dosis
• WENN leichtes Fieber UND leicht erhöhter Puls DANN mittlere Dosis
• WENN leichtes Fieber UND stark erhöhter Puls DANN hohe Dosis
• WENN hohes Fieber UND normaler Puls DANN mittlere Dosis
• WENN hohes Fieber UND leicht erhöhter Puls DANN hohe Dosis
• WENN hohes Fieber UND stark erhöhter Puls DANN hohe Dosis
Entwickeln Sie ein Fuzzy-Konzept für das Schließen mit diesen Regeln. Betrachten Sie
den Fall, dass jemand 38◦ Fieber und einen Puls von 105 hat.
10
Übung Suche I und II
1. Sei ein 4- und ein 3-Liter-Gefäß (leer und ohne Skalen) sowie eine Pumpe vorhanden.
Wie bekommt man exakt 2 Liter in einem der Gefäße? Beschreiben Sie den Zustandsraum, wie kann man das Problem lösen?
Lösen Sie diese Aufgabe mittels eines Suchverfahrens.
2. Sei ein Straßen-Netz zB mit folgenden Verbindungen gegeben:
• Wismar-Rostock
• Wismar-Schwerin
• Wismar-Lübeck
• Lübeck-Hamburg
• Schwerin-Berlin
• Schwerin-Hamburg
• Rostock-Berlin
• Berlin-Halle
• Halle-Nürnberg
• Halle-Leipzig
• Leipzig-Dresden
• Nürnberg-München
• ...
Suchen Sie mit Hilfe der verschiedenen Suchstrategien mögliche Verbindungen zwischen
Wismar und Hamburg!
Entwickeln Sie dazu geeignete heuristische Funktionen für
• g: Kosten für einen Zustandsübergang (costs/3)
• h: geschätzter Abstand zum Ziel (dist goal/2)
Vergleichen Sie das Verhalten der Strategien!
Hinweise
• Kopieren Sie sich alle Dateien aus diesem Verzeichnis in Ihr lokales Verzeichnis!
• Starten Sie Prolog, am besten durch Doppelklick auf die Datei kisuche.pl!
• Sie werden gefragt, ob Sie die grafische Oberfläche verwenden wollen. Beantworten Sie
dies mit y. Dann müsste ein Fenster aufgehen, in welchem Sie arbeiten können.
• Sie können eine eigene Datei anlegen. Diese sollte die Endung bsp haben und sich an
bspsuche.bsp orientieren.
• Beachten Sie: Variablen beginnen in Prolog mit einem Großbuchstaben, Konstante mit
einem Kleinbuchstaben.
• Schauen Sie wegen möglicher Fehlermeldungen auf das Console-Fenster.
11
Übung Suche III und IV
1. Modifizieren Sie das Wasser-Problem, um den A∗ -Algorithmus anwenden zu können.
Ergänzen Sie dazu dist goal und costs.
Hinweis: Kopieren Sie sich dazu die Dateien swiast.pl, astern.pl in Ihr lokales Verzeichnis!
Ein kleines AStern-Beispiel finden Sie hier. Diese Date müssen Sie laden.
2. Lösen Sie das Rundreiseproblem mit verschiedenen Städteanzahlen!
Hinweise
• Kopieren Sie folgende Dateien in Ihr Verzeichnis: astern.pl, swiast.pl, asttrav.pl.
• Starten Sie Prolog, am besten durch Doppelklick auf die Datei asttrav.pl!
• Compilieren Sie und rufen Sie den Suchalgorithmus mit astern(X). auf!
• Beachten Sie: Variablen beginnen in Prolog mit einem Großbuchstaben, Konstante
mit einem Kleinbuchstaben.
12
Übung Data Mining
Als Hausaufgabe !!
1. Machen Sie sich mit den Grundlagen des Data Mining vertraut.
2. Betrachten Sie dabei insbesondere das Entscheidungsbaumlernens (hier den ID3-Algorithums).
Herunterladen