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?