caso base n = 1
P2 1(1+1)(2+1)
i=1 (i − 1)2 = 1 6 = 1 ok
passo induttivo, affermiamo che la proprietà è vera per n e dimostriamo che per n + 1 vale
Pn+2 (n+1)(n+2)(2(n+1)+1) (n+1)(n+2)(2n+3)
i=1 (i − 1)2 = 6 = 6
Affinchè l’uguaglianza sia vera per ogni k dovrebbe risultare k + 1 = 2, il che è assurdo essendo k una
variabile.
NB: Se si fosse richiesto di dimostrare la seguente disuguaglianza k! ≥ 2k−1 . Allora ... La dimostrazione
per induzione sarebbe stata la seguente:
caso base, k = 1 → 1! = 21−1 = 1 la relazione è vera
passo induttivo, assumiamo vera la relazione per k dimostriamo essere vera per k + 1, cioè dimostriamo che
(k + 1)! ≥ 2k .
1
(k + 1)! = k!(k + 1) = 2k−1 (k + 1) per ipotesi induttiva
(k + 1)! = k!(k + 1) = 2k−1 (k + 1) ≥ 2k−1 (1 + 1) per riduzione del termine a destra
(k + 1)! = k!(k + 1) = 2k−1 (k + 1) ≥ 2k−1 (1 + 1) = 2k−1 2 = 2k per k ≥ 0
Soluzione:
4. (3 points) Che cosa è una invariante di ciclo e come si utilizza per capire se un algoritmo è corretto,
commentare in termini di invariante di ciclo l’esempio dell’ordinamento.
5. (3 points) Data f (n) = n log n + n e g(n) = (n2 )/2 dimostrare se f (n) = O(g(n)) oppure g(n) = O(f (n))?
Soluzione 1:
Quindi, posta
n2
n log n + n ≤ c
2
n
log n + 1 ≤ c
2
2 log n + 2 ≤ cn
2(log n + 1) ≤ cn
poniamo c = 2 e valutiamo la seguente disuguaglianza
(log n + 1) ≤ n
che risulta essere vera per ogni n ≥ 1. Pertanto possiamo affermare che esistono c = 2 e n0 = 1 per cui
n2
n log n + n ≤ c
2
da cui f (n) = O(g(n))
NB: si potevano proporre altre dimostrazioni.
Page 2
6. (3 points) Indicare quali delle seguenti approssimazioni è vera o falsa
k3 O(k 2 )
p p
= f alsa k3 = O(k + k (k) + (k) f alsa
1
log k = O(k − 2 ) f alsa k 2p = O(k 3 ) vera
2k 2 = O((k 2 (1 + k 2 )) vera 2
3k + (k) = O(k 2 ) vera
log k = O(1/k) f alsa 1/k = O(log k) vera
7. (4 points) Applicare il metodo iterativo alla seguente equazione di ricorrenza
3
n + 3T ( n3 ) n > 1
T (n) =
1 n=1
Soluzione:
T (n) = n3 + 3T ( n3 ) =
= n3 + 3(( n3 )3 + 3T ( 3n2 )) =
3
= n3 + n32 + 32 T ( 3n2 ) =
3
= n3 + n32 + 32 (( 3n2 )3 + 3T ( 3n3 )) =
3 3
= n3 + n32 + n92 + 33 T ( 3n3 ) =
3 3
= n3 + n32 + n92 + 33 (( 3n3 )3 + 3T ( 3n4 ) =
3 3
n3
= n3 + n32 + n92 + 27 4 n
2 + 3 T ( 34 ) =
n3 n3 n3
= n + 32 + 92 + 272 + 3 (( 34 ) + 3T ( 3n4 )) =
3 4 n 3
= ...
Pk−1 3
= i=0 ( n9i ) + 3k T ( 3nk ) =
Pk−1
= n3 i=0 ( 19 )i + 3k T ( 3nk ) =
n
L’iterazione termina quando 3k
= 1 → n = 3k → k = log3 n.
Plog3 n−1
T (n) = n3 i=0 ( 19 )i + n =
1−( 19 )log3 n
n3 1− 19
+n=
1−( 91 )log3 n
n3 8 +n=
9
8 3 1
9 n (1 − 9log3 n
) + n = 89 n3 − 89 n + n = 89 n3 + 19 n = Θ(n3 )
8. (5 points) Trovare la soluzione delle seguenti relazioni di ricorrenza, applicando se possibile, il Teorema
Master:
(i) T (n) = n + 4T ( n2 ). (ii) T (n) = n2 + 4T ( n2 ) (iii) T (n) = n3 + 4T ( n2 ).
Soluzione:
(i) T (n) = n + 4T ( n2 )
per il Teorema Master abbiamo a = 4, b = 2, log2 4 = 2 e nlog2 4 = n2 .
1. se nlogb a cresce più velocemente di f (n), allora T (n) = Θ(nlogb a )
2. se nlogb a cresce esattamemente come f (n), allora T (n) = Θ(nlogb a log2 n)
3. se nlogb a cresce più lentamemente di f (n), allora T (n) = Θ(f (n))
Per il caso 1 abbiamo che
f (n) = n = O(n2− ) per = 1 si ha
T (n) = Θ(n2 )
(ii) T (n) = n2 + 4T ( n2 )
per il Teorema Master abbiamo a = 4, b = 2, log2 4 = 2 e nlog2 4 = n2 .
Per caso 2 si ha che
f (n) = n2 = Θ(n2 ) si ha quindi
T (n) = Θ(n2 log2 n)
Page 3
(iii) T (n) = n3 + 4T ( n2 )
per il Teorema Master abbiamo a = 4, b = 2, log2 4 = 2 e nlog2 4 = n2 .
Per caso 3 si ha che
f (n) = n3 = Ω(n2+ ) per = 1 si ha
T (n) = Ω(n3 )
9. (3 points) Si descriva come calcolare la profondità di un albero di decisione, binario che ha nella radice un
problema di dimensione n.
Soluzione:
La soluzione a questo problema si trova ben descritta nella Lezione 4: Ricorrenze, nella parte dedicata al
metodo dell’Albero di Decisione.
Question: 1 2 3 4 5 6 7 8 9 Total
Points: 3 3 5 3 3 3 4 5 3 32
Score:
Page 4