Artificial Intelligence, Wintersemester 2014/2015

Werbung
Math. - Naturwiss. Fakultät
Fachbereich Informatik
Kognitive Systeme . Prof. A. Zell
Artificial Intelligence, Wintersemester 2014/2015
Übungsblatt 1
Abgabe: 30.10.14, Besprechung: 06.11.14
Wichtig: Melden Sie sich (falls noch nicht geschehen) als ÜbungsteilnehmerIn bis spätestens zum
30.10.2014 unter (http://www.cogsys.cs.uni-tuebingen.de/lehre/ws14/ki.html) für die Übungen an.
Hinweise: Begründen Sie Ihre Antworten immer, selbst bei ja/nein-Fragen, außer die Aufgabenbeschreibung sagt explizit etwas anderes, ansonsten kann dies zu Punktabzügen führen. Programme, die sich
nicht übersetzen lassen oder nicht lauffähig sind, werden automatisch mit 0 Punkten bewertet. Geben
Sie bitte Programme und Funktionen als Textdatei ab.
Aufgabe 1 Programmierung in Lisp [20 Punkte]
Installieren Sie als Vorbereitung für das Übungsblatt einen Interpreter für Common-LISP, z. B. GNU
CLISP http://www.clisp.org/, und machen Sie sich mit diesem vertraut.
(a) Implementieren Sie eine rekursive Funktion countlist(a, l), welche das Vorkommen von a in der
Liste l zählt. Achten Sie darauf, dass der Algorithmus auch für die leere Liste sinnvoll terminiert
(2 Punkte).
(b) Erweitern Sie obige Funktion nun zu einer rekursiven Funktion counttree(a, t), welche das Vorkommen von a in einem Baum t zählt. Hierbei sei jeder Knoten des Baums gegeben durch eine
Liste seiner Kinder (2 Punkte).
(c) Implementieren Sie eine Funktion inserttree(a, t), welche das Element a in den binären Suchbaum t an der richtigen Stelle einfügt. Wenn a schon in t vorkommt, soll t unverändert zurückgegeben werden (2 Punkte).
(d) Implementieren Sie die kgV-Funktion (kleinstes gemeinsames Vielfaches), die zwei beliebige natürliche Zahlen (inklusive 0) als Eingaben annimmt, ohne die eingebaute Funktion lcm zu nutzen (2
Punkte).
(e) Implementieren Sie die ggT-Funktion (größter gemeinsamer Teiler) unter Verwendung der zuvor
implementierten kgV-Funktion (1 Punkte).
(f) Implementieren Sie die eulersche Phi-Funktion, die für eine natürliche Zahl n > 0 wie folgt
definiert ist:
ϕ(n) = |{m | 1 ≤ m ≤ n ∧ ggT(m, n) = 1}|
(3 Punkte).
(g) Implementieren Sie die Funktion take(l, n), die die ersten n Elemente einer Liste l zurückgibt (2
Punkte).
(h) Implementieren Sie die Funktion drop(l, n), die die Liste l ohne die ersten n Elemente zurückgibt
(1 Punkte).
(i) Implementieren Sie die Funktion listmerge(a, b, c), die zwei sortierte Listen a und b zu einer
einzigen sortierten Liste c zusammenfügt. Dabei sollen mehrfach vorkommende Zahlen in der
vereinigten Liste nur einmal vorkommen (3 Punkte).
Beispiel: Aus den Listen (1 5 9) und (2 5 8 8) soll (1 2 5 8 9) werden.
(j) Implementieren Sie eine Funktion f ib(n), die die Fibonacci-Zahlen für n ∈ N ∪ {0} ausgibt,
mit f (0) = 0 und f (1) = 1, und schreiben Sie ein Programm, welches die Fibonacci-Zahlen
für n von 1 bis 15 (einschließlich) mittels dieser Funktion in aufsteigender Reihenfolge ausgibt (2
Punkte).
Laden Sie Ihre kommentierten Implementierungen bzw. Ihre Lösungen bei ILIAS hoch. Dabei genügt
pro Übungsgruppe eine Abgabe. Nutzen Sie dazu die Funktion der Gruppenabgabe. Bitte tragen Sie
außerdem Ihre Matrikelnummer unter Persönliche Daten und Profil“ in Ihrem ILIAS-Accounts nach,
”
ohne diese dabei unter Profil“ öffentlich zugänglich zu machen.
”
Herunterladen