Antwoorden bij het herkansingstentamen `Structuren van de

advertisement
Antwoorden bij het herkansingstentamen ‘Structuren van de Informatica’
28 augustus 2003
Vraag 1
1. p ⊕ ⊥ ≡ p
2. p ⊕ p ≡ ⊥
3. p ∧ ⊥ ≡ ⊥
4. p ∧ p ≡ p
5. p ∧ > ≡ p
Vraag 2
1. Voor elke verzameling A geldt dat A ∩ {∅} = ∅. Dit is onjuist. Neem A = {∅}. Dan
A ∩ {∅} = {∅} 6= ∅.
2. Voor elke deelverzameling X van A geldt dat X ∩ (A − X) 6= X. Dit is onjuist. Neem X = ∅. Dan
X ∩ (A − X) = ∅ ∩ A = ∅ = X.
3. Als A ⊇ B en f : A → B is injectief, dan is A = B. Dit is onjuist. Neem A = N, B = {2n | n ∈ N}
(de even natuurlijke getallen). en beschouw (λn.2n) : A → B. Deze functie is zeker een injectie,
maar A 6= B.
4. Elke asymmetrische relatie R ⊆ A2 is bevat in een reflexieve, antisymmetrische relatie. Dit is juist.
Neem de reflexieve afsluiting van R. Die is zowel reflexief als antisymmetrisch.
Vraag 3 Elk priemgetal groter dan 2 is oneven, en heeft dus de vorm p = 2q + 1. Dus p 3 + 3 =
(2q + 1)3 + 3 = (8q 3 + 12q 2 + 6q + 1) + 3 = 8q 3 + 12q 2 + 6q + 4 is even, dus niet priem.
Vraag 4 Laat A en B verzamelingen zijn met |A| = m en |B| = n.
1. Als m > n zijn er geen injecties van A naar B.
2. Als m = n zijn er m! injecties van A naar B: laat A = {a1 , . . . , am }, en B = {b1 , . . . , bm }. Dan
zijn er m manieren om het beeld bi van a1 te kiezen uit B , m − 1 manieren om het beeld van a2
te kiezen uit B − {bi }, enzovoorts.
Vraag 5 Gegeven: R is een symmetrische en transitieve relatie is op A, en er is voor elke x ∈ A een
y ∈ A met xRy.
Te bewijzen: R is een equivalentie op A.
Bewijs: dat R symmetrisch en transitief is is gegeven. We hoeven dus alleen nog te laten zien dat R
reflexief is. Neem c ∈ A willekeurig. Dan is er volgens het gegeven een y ∈ A met cRy. Noem dit object
d. We hebben dus cRd. Wegens symmetrie van R volgt hieruit dat dRc. Wegens transitiviteit van R
volgt uit cRd en dRc dat cRc. Dus R is reflexief.
Vraag 6
1. De laatste lijst in de uitvoer van ballgame [1] bevat 1 één. De laatste lijst in de uitvoer
van ballgame [2] bevat 3 enen. De laatste lijst in de uitvoer van ballgame [3] bevat 9 enen. De
laatste lijst in de uitvoer van ballgame [4] bevat 27 enen.
2. De laatste lijst in de uitvoer van ballgame [n] bevat 3n−1 enen. Hier is een bewijs met inductie.
Basisgeval n = 1: De aanroep ballgame [1] geeft uitvoer [[1]], dus een slotlijst met 3 0 = 1 één.
Inductiestap: Stel dat de slotlijst in de uitvoer van ballgame [n] bestaat uit 3 n−1 enen.
Omdat de eerste stap in de reductie van [n+1] de lijst [n, n, n] is, bevat dd slotlijst van ballgame [n+1]
de concatenatie van drie reducties van n. Volgens de inductiehypothese zijn dit dus samen 3·3 n−1 =
3n enen.
1
3. De uitvoer van ballgame [8] produceert 37 lijsten, waarvan de laatste uit 37 enen bestaat. 37 =
6561. Voor een computer is dat niet verschrikkelijk veel. De berekening van ballgame [8] termineert na een aantal seconden of hooguit minuten, afhankelijk van de snelheid van de processor.
Vraag 7
1. De lege lijst voldoet aan de bittest, dus er is 1 lijst van lengte 0 die eraan voldoet. Zowel [1]
als [0] voldoet aan de bittest, dus er zijn 2 lijsten van lengte 1 die eraan voldoen. [1, 1], [1, 0], [0, 1] zijn
de lijsten van lengte 2 die voldoen aan de bittest, dat zijn er 3. [0, 1, 1], [0, 1, 0, [1, 1, 1], [1, 1, 0], [1, 0, 1]
zijn de bitlijsten van lengte 3 die aan de bittest voldoen: dat zijn er 5.
2. Basisgeval: a0 = 1 = F2 , a1 = 2 = F3 .
Inductiestap: Stel dat an = Fn+2 en an+1 = Fn+3 . We moeten laten zien dat an+2 = Fn+4 .
Uit de bittest zien we dat we de bitlijsten van lengte n + 2 die aan de test voldoen kunnen krijgen
door ofwel een 1 te zetten voor een bitlijst van lengte n + 1 die aan de test voldoet, ofwel een
0, 1 te zetten voor een bitlijst van lengte n die aan de test voldoet. Dat eerste kan volgens de
inductiehypothese of an+1 = Fn+3 manieren, het tweede op an = Fn+2 manieren. Samen geeft dit
an+2 = Fn+3 + Fn+2 = Fn+4 manieren.
Vraag 8
data Tr a = Nil | T a (Tr a) (Tr a) deriving (Eq,Show)
split :: [a] -> ([a],a,[a])
split xs = (ys1,y,ys2)
where
ys1
= take n xs
(y:ys2) = drop n xs
n
= length xs ‘div‘ 2
buildTree :: [a] -> Tr a
buildTree [] = Nil
buildTree xs = T m (buildTree left) (buildTree right)
where (left,m,right) = split xs
2
Download