18 gennaio 2011 Algoritmi e Strutture Dati vecchio ordinamento Name

Algoritmi e Strutture Dati vecchio ordinamento
Name:
18 gennaio 2011
Part I. (60 points) Il tempo a disposizione è 2:30 h. Giustificare tutte le risposte e
consegnare solo la ‘bella’.
(12pts )
1.
Supponendo che il caso base sia O(1) si calcoli l’andamento asintotico delle
seguenti equazioni di ricorrenza.
(a) (4 pts) A(n) = 4 A(n/2) + n2 log n.
12 pts
(b) (4 pts) B(n) = 4 B(n/2) + n2 .
(c) (4 pts) C(n) = n C(n − 1).
(18pts )
2.
Si consideri il seguente algoritmo.
18 pts
Algorithm 1: Stooge(array L[1 . . . n], int i, int j)
1 if L[j] < L[i] then
2
scambia L[j] con L[i];
7
if (j − i) > 1 then
t ← (j − i + 1)/3;
Stooge(L, i, j − t);
Stooge(L, i + t, j);
Stooge(L, i, j − t);
8
return L
3
4
5
6
(a) (6 pts) Si descriva come funziona.
(b) (6 pts) Si descrivano le proprietà dell’output prodotto.
(c) (6 pts) Si studi la complessità temporale.
(9pts )
3.
Si consideri il seguente albero AVL:
9 pts
/Algoritmi e Strutture Dati vecchio ordinamento– Page 2 of 4 –Name:
8
3
2
13
4
11
17
15
18
Svolgete ognuno dei seguenti punti a partire da questo albero e non a partire dalla
soluzione del punto precedente.
(a) (4 pts)Cancellare l’elemento 8 e disegnate l’albero AVL risultante dalla cancellazione.
(b) (4 pts)Inserite l’elemento 14 e disegnate l’albero AVL risultante dall’inserimento.
(c) (1 pt)Nel caso peggiore, quante rotazioni bisogna eseguire per bilanciare un albero
AVL sbilanciato da una cancellazione?
(13pts )
4.
Si consideri T come un albero binario. Definiamo un PSD := Percorso Senza
Diramazioni come un insieme di vertici v1 , v2 , . . . , vm dove ogni nodo è collegato al
precedente e non ha più di un figlio, formalmente:
• Per 2 ≤ i ≤ m il nodo vi è figlio del nodo vi−1
13 pts
/Algoritmi e Strutture Dati vecchio ordinamento– Page 3 of 4 –Name:
• Per 1 ≤ i ≤ (m − 1) il nodo vi ha un solo figlio
• vn non ha figli (quindi è una foglia)
(a) (9 pts) Scrivere in pseudocodice (o anche in codice C, a scelta) una funzione
ricorsiva int MaxPSD(T, ...) che restituisca la lunghezza massima fra i PSD
dell’albero.
(b) (2 pts) Se T fosse un albero bilanciato (non necessariamente completo), quale
sarebbe la sua (eventuale) lunghezza massima del PSD?
(c) (2 pts) Un albero binario viene rappresentato con un array, preallocato per la
dimensione massima dell’albero se fosse completo. Quanto spazio vuoto ‘spreca’
un PSD con m nodi?
(8pts )
5.
Dato il seguente albero binario in forma vettoriale A = [0, 2, 6, 7, 3, 9, 5, 4, 1, 8]:
(a) (6 pts) Costruire un MaxHeap di A usando la funzione build-heap (la versione
con i massimi) e scrivere i vettori restituiti, senza contare le chiamate ricorsive
8 pts
/Algoritmi e Strutture Dati vecchio ordinamento– Page 4 of 4 –Name:
della heapify.
(b) (2 pts) Quanti confronti sono stati fatti e in generale qual è l’ordine massimo di
grandezza del numero di confronti per la costruzione di uno heap?