Informatik A

Werbung
Teillösungen zur Probeklausur zur Vorlesung
Informatik A
(Autoren: Florian Schmidt, Sascha Meiers)
1. Logisches
(a) Mittels Wahrheitstabelle ergibt sich
DN F (α) = (¬x ∧ y ∧ ¬z) ∨ (¬x ∧ y ∧ z) ∨ (x ∧ ¬y ∧ ¬z) ∨ (x ∧ y ∧ z)
KN F (α) = (x ∨ y ∨ z) ∧ (x ∨ y ∨ ¬z) ∧ (¬x ∨ y ∨ ¬z) ∧ (¬x ∨ ¬y ∨ z)
(b) Es soll Resolutionskalkül benutzt werden, um zu testen, ob β eine Tautologie ist.
Mittels Resolution kann nur getestet werden, ob eine Formel unerfüllbar, also eine
Kontradiktion ist.
β ist jedoch Tautologie genau dann wenn ¬β Kontradiktion ist. Es muss also
getestet werden, ob sich die leere Klausel aus ¬β ableiten lässt. Resolution kann
nur mit KNF Formeln durchgeführt werden. Glücklicher Weise ist ¬β bereits in
KNF!
¬β = (¬x1 ∨ x2 ) ∧ ¬x2 ∧(x1 ∨ x2 ∨ ¬x3 ) ∧ (x1 ∨ x2 ∨ x3 )
Res({{x1 ∨ x2 ∨ ¬x3 }, {x1 ∨ x2 ∨ x3 }}) = {x1 , x2 }
Res({{¬x1 , x2 }, {x1 , x2 }}) = {x2 }
Res({{¬x2 }, {x2 }}) = Natürlich führen auch viele andere Wege zur leeren Klausel.
2. Beweisbares
(a)
reverse [] = []
reverse (x:xs) = reverse xs ++ [x]
Beweis mittels Vollständiger Induktion:
Induktionsanfang:
sum []
= sum (reverse [])
0
= sum []
rev.1
0
= []
sum.1
sum.1
(1)
Induktionsvoraussetzung:
sum xs = sum (reverse xs)
Induktionsschritt:
sum (x:xs)
= sum (reverse (x:xs))
x + sum xs = sum (reverse xs ++ [x])
sum.2
IV
rev.2
(∗)
x + sum (reverse xs) = sum (reverse xs) + sum [x]
sum.2
x + sum (reverse xs) = sum (reverse xs) + x + sum []
sum.1
x + sum (reverse xs) = sum (reverse xs) + x + 0
Komm.+
x + sum (reverse xs) = x + sum (reverse xs)
Wobei
(*)
sum(xs ++ ys) = sum xs + sum ys
(b) Hat ein echter q-närer gewurzelter Baum n Knoten, so gilt für die minimale Höhe
des Baumes:
hmin (T ) = dlogq (n · (q − 1))e − 1
Beweis:
Damit ein Baum die minimale Höhe h hat, muss er bis zur Höhe h − 1 vollständig
sein. Der Baum hat somit echt mehr Knoten als ein vollständiger Baum der Höhe
h − 1 und maximal so viele Knoten wie ein vollständiger Baum der Höhe h.
Das bedeutet:
# Knoten im voll. Baum der H öhe h − 1 <
h−1
X
qe <
n
n
≤ # Knoten im voll. Baum der H öhe h
h
X
≤
qe
e=0
qh − 1
<
q−1
qh − 1 <
h
q <
n
n · (q − 1)
n · (q − 1) + 1
e=0
q h+1
−1
q−1
h+1
≤q
−1
≤
≤ q h+1
h < logq (n · (q − 1) + 1) ≤ h + 1
Daraus folgt: hmin = dlogq (n · (q − 1))e − 1
3. Haskell
(a) isSquare :: String -> Bool
isSquare xs = take n xs == drop n xs
where n = div (length xs) 2
Für xs mit ungerader Länge liefern take n xs und drop n xs jeweils Strings
unterschiedlicher Länge, die in jedem Fall ungleich sind, so dass die Eingabe
nicht akzeptiert wird. Für Strings gerader Länge vergleicht ++ auf elementweise
Gleicheit.
Insbesondere wird auch [] korrekter Weise akzeptiert.
(b) faktors :: Int -> [Int]
faktors n = [i | i <- [1..(n-1)], mod n i == 0]
perfekt :: Int -> [Int]
perfekt n = [i | i <- [1..(n-1)], sum (faktors i) == i]
(c) Beispiel: Die Zahl 1234 kann als 1 · 1000 + 2 · 100 + 3 · 10 + 4 geschrieben werden.
Im Hornerschema ergibt das:
1 · 1000 + 2 · 100 + 3 · 10 + 4
= ((((1) · 10 + 2) · 10) + 3) · 10 + 4
= ((((0 · 10 + 1) · 10 + 2) · 10) + 3) · 10 + 4
Das Hornerschema kann als Faltung ausgedrückt werden. Der linkeste Term ist am
tiefsten geschachtelt. Es handelt sich also um eine Linksfaltung mit der Operation
(+).(*10) wobei (.) der Operator für Hintereinanderausführung in Haskell ist.
dec2Int xs = foldl ((+).(*10)) 0 xs
4. Verständnis
(a) ∀n ∈ N, n > 1 : ∃p ∈ N : n ≤ p ≤ 2n ∧ isprim(p)
(b) Eine DNF ist erfüllbar, sobald mindestens eine Klausel erfüllbar ist. Eine Klausel
ist eine Konjunktion von Variabeln. Kommt darin keine Variable sowohl negiert als
auch nicht negiert, vor, so ist solch eine Kojunktion von Variabeln immer erfüllbar.
Eine DNF ist also nicht erfüllbar genau dann wenn in jeder Klausel mindestens
eine Variable sowohl negiert als auch nicht negiert vorkommt.
(c) Nein. Es lässt sich zum Beispiel keine Kontradiktion ausdrücken. Für alle xi ist xi ∧
T rue ≡ xi . Eine Konjunktion nichtnegierter Variabeln ist nie eine Kontradiktion.
(d) (6,7)
(e) Alle Codierungen, die vom Huffman Verfahren generiert wurden, sind optimal.
Das Huffman Verfahren liefert einen Blockcode, falls alle Blätter die gleiche Tiefe
haben. Dies ist der Fall, wenn alle n Zeichen gleichwahrscheinlich sind und sich n
als n = 2i für ein i ∈ N schreiben lässt.
Herunterladen