Benutzer-Werkzeuge

Webseiten-Werkzeuge


kuenstliche_intelligenz_und_logische_programmierung

====== Unterschiede ====== Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Both sides previous revision Previous revision
kuenstliche_intelligenz_und_logische_programmierung [2014/09/01 14:47]
admin
kuenstliche_intelligenz_und_logische_programmierung [2014/09/01 14:48]
Zeile 1: Zeile 1:
-===Aufgabentext=== 
-GK Informatik - Mecklenburg-Vorpommern 2003 
- 
-**1. Fakten und Regeln** 
- 
-Peter isst gerne Äpfel, Sandra Hamburger und Ines Bananen. Bananen und Äpfel sind 
-Früchte. Wer Früchte isst, lebt gesund!\\ 
-[[Formulieren]] Sie diese Aussagen als Fakten mit dem zweistelligen Prädikat //isst//, dem 
-einstelligen Prädikat //frucht// und einer einstelligen Regel //gesund//. 
- 
-**2. Unifikation** 
- 
-2.1 [[Nennen]] Sie Bedingungen für die Unifizierbarkeit von Termen. \\ 
-2.2 Sind folgende Terme unifizierbar?​ [[Begründen]] Sie Ihre Entscheidung.\\ 
-a) tee = cola.\\ 
-b) trinken(tee) = X.\\ 
-c) trinken(tee,​X) = trinken(Y,​cola).\\ 
-d) [frank|Rest] = [frank,​trinkt,​cola].\\ 
-e) [frank,​Rest] = [frank,​trinkt,​cola].\\ 
- 
-**3. Kryptogramme** 
-Diese Aufgabe ist am PC zu lösen. Bewertet werden die Lauffähigkeit und die geforderten Details des 
-Quelltextes. Falls aus irgendwelchen Gründen (z. B. Arbeitszeitprobleme) das Testen von Programmteilen 
-nicht gelingt, sollten in geeigneter Form der vorgesehene Programmablauf und gegebenenfalls auch die 
-erkannten Ursachen für die „Nichtlauffähigkeit“ aufgeschrieben werden. 
- 
-3.1 Es soll das folgende Kryptogramm mit dem Computer gelöst werden. Dabei werden die 
-Buchstaben durch Ziffern ersetzt. Verschiedene Buchstaben sollen verschiedenen Ziffern 
-entsprechen und somit zu einer korrekten Lösung führen. (Kein Operator angegeben, [[Erstellen]]) 
-<​code>​ 
-    H A U S 
- ​+ ​ H A U S 
- ​---------- 
-  S T A D T 
-</​code>​ 
- 
-3.2 [[Erläutern]] Sie, wodurch sich effiziente Lösungen der Kryptogramme von weniger 
-effizienten unterscheiden. 
- 
-**4. Rekursion** 
- 
-Gegeben ist das folgende PROLOG-Programm:​ 
- 
-<​code>​ 
- ​loesung(A,​B,​C) :- A == B, C is A. 
- ​loesung(A,​B,​C) :- A > B, D is A-B, loesung(D,​B,​C). 
- ​loesung(A,​B,​C) :- A < B, D is B-A, loesung(A,​D,​C). 
-</​code>​ 
- 
-4.1 [[Begründen]] Sie, dass das gegebene PROLOG-Programm rekursiv ist. \\ 
-4.2 [[Erläutern]] Sie schrittweise den Programmablauf bis zur Ausgabe des Ergebnisses bei der 
-Anfrage loesung(8,​4,​C). \\ 
-4.3 [[Vereinfachen]] Sie die erste Regel. 
- 
-=== Lösungen === 
- 
-**1. Fakten und Regeln** 
-<​code>​ 
- ​isst(peter,​aepfel). 
- ​isst(sandra,​hamburger). 
- ​isst(ines,​bananen). 
- ​frucht(aepfel). 
- ​frucht(bananen). 
- ​gesund(Person):​-isst(Person,​Essen),​frucht(Essen). 
-</​code>​ 
- 
- 
- 
-**2. Unifikation** 
-2.1 Terme sind unifizierbar,​ wenn sie 
-  -   ​identisch sind oder 
-  -   bis auf verschiedennamige Variablen identisch sind und diese Variablen innerhalb einer Klausel 
-  *  so gebunden werden können, dass die Terme nach der Bindung identisch sind oder 
-  *  bereits so gebunden sind, dass kein Unterschied zwischen den Termen besteht. (Das heißt: Zwei Terme sind unfizierbar,​ wenn sie aufgrund einer möglichen (gefundenen) Variablensubstitution identisch sind.) 
- 
-2.2 
-a) nein, da nicht identische Terme\\ 
-b) ja, {X/​trinken(tee)}\\ 
-c) ja, {X/cola, Y/tee}\\ 
-d) ja, {Rest/​[trinkt,​cola]}\\ 
-e) nein, da die Unifikation fehlschlägt,​ weil links zwei und rechts drei Elemente stehen und diese Listen eine fixe Länge haben. 
- 
-**3. Kryptogramme** 
-<​code>​ 
- ​ziffer(0). ziffer(1). ziffer(2). ziffer(3). 
- ​ziffer(4). ziffer(5). ziffer(6). ziffer(7). 
- ​ziffer(8). ziffer(9). 
- ​loesung:​- 
-   ​ziffer(S),​T is (S+S) mod 10, U1 is (S+S)//​10,​T\=S,​ 
-   ​ziffer(U),​D is (U+U+U1) mod 10,U2 is (U+U+U1)//​10,​ 
-   ​S\=D,​T\=D,​ 
-   ​ziffer(A),​ A is (A+A+U2) mod 10, U3 is (A+A+U2)//​10,​ 
-   ​U\=A,​D\=A,​S\=A,​T\=A,​ 
-   ​ziffer(H),​T is (H+H+U3) mod 10, U4 is (H+H+U3)//​10,​ 
-   ​H\=A,​H\=D,​U\=H,​U\=T,​S\=H,​T\=H,​ 
-   S is U4, 
-   ​write('​Die Loesung lautet:'​),​nl,​ 
-   ​write('​ '​),​write(H),​write(A),​write(U),​write(S),​nl,​ 
-   ​write('​+ '​),​write(H),​write(A),​write(U),​write(S),​nl,​ 
-   ​write('​------'​),​nl,​ 
-   ​write('​ '), 
-   ​write(S),​write(T),​write(A),​write(D),​write(T). 
-</​code>​ 
- 
-Bildschirmausgabe:​ 
- 
-<​code>​ 
- Die Loesung lautet: 
-   6041 
- + 6041 
- ​------ 
-  12082 
-</​code>​ 
- 
-3.2 Eine effiziente Lösung beginnt keinesfalls damit, zunächst die Variablen der 
-Reihe nach mit allen verschiedenen Ziffern zu belegen. Es sollten besser für 
-die Belegung einer weiteren Variablen die “vorgegebenen“ Verknüpfungen 
-von bereits gebundenen Variablen genutzt werden. Zum Beispiel wird T 
-eindeutig durch S bestimmt. Somit ist es überflüssig,​ alle möglichen 
-Belegungen von S unabhängig von der jeweils aktuellen Bindung von T zu 
-prüfen. 
- 
-**4. Rekursion** 
- 
-4.1 Definition einer Funktion oder eines Verfahrens durch sich selbst 
- 
-4.2 loesung(8, 4, C).\\ 
-Überprüfung der 1. Bedingung 8 == 4, nicht erfüllt\\ 
-Überprüfung der 2. Bedingung 8 > 4, erfüllt\\ 
-Berechnung D is 8-4\\ 
-D = 4\\ 
-Aufruf: loesung(4, 4, C).\\ 
-Überprüfung der 1. Bedingung 4 == 4, erfüllt\\ 
-Ausgabe: C = 4 
- 
-4.3 loesung(A, A, A). 
  
kuenstliche_intelligenz_und_logische_programmierung.txt · Zuletzt geändert: 2014/09/01 14:48 (Externe Bearbeitung)