Informatik A – WS 2009/10 Nachklausur 12.04.2010

Werbung
Informatik A
–
Nachklausur
WS 2009/10
12.04.2010
Name: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Matrikelnummer: . . . . . . . . . . . . . . . . . .
Tutor: . . . . . . . . . . . . . . . . . .
Bitte Zutreffendes ankreuzen:
Hauptfach Bioinformatik
Teilnahme an Informatik A im Campus–Management–System erfasst
Hauptfach Physik
Ich bin einverstanden, dass mein Klausurergebnis zusammen mit meiner Matrikelnummer auf einer universitätsinternen Webseite bekannt
gegeben wird:
Punkte
Ja
Nein
Aufgabe 1
Aufgabe 2
Aufgabe 3
Aufgabe 4
Aufgabe 5
/6
/6
/6+3
/5
/9
Gesamt
/32+3
Hinweise:
1) Falls die Lösung einer Aufgaben nicht auf den Aufgabenzettel und die benachbarte Rückseite passt, kann auch ein Zusatzblatt verwendet werden - in diesem
Fall bitte unbedingt einen entsprechenden Vermerk auf dem Aufgabenblatt
machen.
Verwenden Sie Tinte oder Kugelschreiber (keinen Bleistift!) in den Farben Blau
oder Schwarz - Rot ist für die Korrektur reserviert.
3) Achten Sie auf eine ausreichende Kommentierung Ihrer Lösungswege. Zur
Begründung können alle in der Vorlesung vorgestellten Sätze und Fakten verwendet
werden.
4) Einzig erlaubtes Hilfsmittel ist eine (einseitig) hangeschriebene A4Seite, mit selbst ausgewählten Formeln, Definitionen und Fakten
5) Da drei Punkte (von 35 erreichbaren Punkten) auf Zusatzfragen vergeben werden, reichen zum Bestehen 16 Punkte.
Aufgabe 1:
Logik
3 + 3 Punkte
a) Bestimmen Sie die kanonische KNF für den Term s = (x ∨ y) → (x ⊕ z) und
vereinfachen Sie diese KNF so weit wie möglich.
b) Formen Sie den folgenden Booleschen Term t mit den Gesetzen der Booleschen
Algebra äquivalent um und vereinfachen Sie ihn dabei soweit wie möglich. Begründen Sie die Umformungen durch Benennung der verwendeten Gesetze.
t = (x ∧ (y ∨ z)) ∧ ((x ∨ ¬y) ∧ ¬y ∨ z)
.
Aufgabe 2:
Induktion auf Listen
6 Punkte
Der Listen-Operator ++ ist wie folgt definiert:
(++)
:: [a] -> [a] -> [a]
[ ] ++ ys = ys
-- (1)
(x:xs) ++ ys
= x:(xs++ys)
-- (2)
Geben Sie Definition für die Listenfunktion map :: (a -> b) -> [a] -> [b] an
und nummerieren Sie die Zeilen mit -- (3) und -- (4).
Beweisen Sie mit struktureller Induktion, dass für beliebige Funktionen
f :: a -> b und Listen xs, ys :: [a] die folgende Identität gilt:
map f (xs ++ ys) = map f xs ++ map f ys
.
Aufgabe 3:
Bäume mit Haskell
3 + 3 Punkte + 3 Zusatzpunkte
a) Definieren Sie einen algebraischen Datentyp Tree zur Darstellung von echten
Binärbäumen, in denen alle Knoten (innere Knoten und Blätter) mit Int-Werten
markiert sind.
Implementieren Sie den Datentyp Tree als Exemplar der Klasse Eq, wobei t1 und
t2 als gleich anzusehen sind, wenn die zu Grunde liegenden Binärbäume gleich sind
und die Summe aller Markierungen in t1 bzw. in t2 gleich sind. Überlegen Sie
selbst, welche Hilfsfunktionen benötigt werden.
b) Implementieren Sie eine Funktion labelList :: Tree -> [Int] welche die
Liste der Markierungen bei der Inorder-Traversierung eines Baums erzeugt und
eine Funktion sumOfLabelProducts :: Tree -> Int mit der die Produkte der
Markierungen auf allen Pfaden von der Wurzel zu Blättern des Baums gebildet und
die Summe dieser Produkte berechnet werden sollen. Auch die zweite Funktion ist
sehr einfach, wenn man vorher etwas darüber nachdenkt!
c) Zusatzaufgabe:
Implementieren Sie eine Funktion numberOfLabels :: Tree -> Int mit der die
Anzahl der verschiedenen Markierungen in einem Baum gezählt wird (gleiche
Markierungen werden nur einfach gezählt).
.
Aufgabe 4:
Codierungen
5 Punkte
{0, 1}∗ ,
Berechnen Sie eine optimale Codierung ϕ : {a, b, c, d, e, f } −→
um die Darstellungslänge des folgenden Strings s zu minimieren und notieren Sie das Ergebnis
in Form einer Codetabelle:
s = abacebeddafabadebae
Welche Länge hat die Darstellung von s unter dieser Codierung? (die Darstellung
selbst muss dazu nicht aufgeschrieben werden)
.
Aufgabe 5:
Vermischtes
2 + 1 + 2 + 4 Punkte
a) Welche Werte nehmen die folgenden Haskell-Ausdrücke an?
length [(x,y)| x<-[0..20], y<-[0..8], mod (x+y)3 == 0]
foldr max 0 [x+y | x<-[0..20], y<-[0..30-x]]
Wert:
Wert:
b) Für welche Eingabestrings s ∈ {0, 1}∗ gibt der unten abgebildete Mealy-Automat
am Ende eine 1 aus?
0|0
0|0
q0
1|0
q
1
1|1
q2
0|1
1|1
Der Automat gibt nach einer Eingabefolge s genau dann eine 1 aus, wenn
s ......
c) Entwerfen Sie einen Mealy-Automaten mit Ein- und Ausgabemenge {0, 1}, der
nach einer Eingabefolge s ∈ {0, 1}∗ genau dann eine 1 ausgibt, wenn s mindestens
die Länge 3 hat und mit 010 endet.
d) Welche der folgenden logischen Signaturen sind funktional vollständig? Begründen Sie Ihre Antworten!
Σ1 = { → , ↔ }
Σ2 = { → , ⊕ }
Herunterladen