Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canale M-Z Anno Accademico 2001/2002 Prof. Stefano Leonardi 22 Luglio 2002 Domanda 1, Punti 5. 1. Si consideri il seguente array: 7 4 1 15 3 6 10 2 Si illustri l’esecuzione dell’algoritmo Quick Sort che sceglie come pivot il primo elemento su tale array. Domanda 2, Punti 5. Dsi descriva l’esecuzione di un algoritmo di ricerca di un elemento in un insieme ordinato attraverso gli alberi di decisione e si dimostri usando tale formalismo un lower bound sulla complessita’ di un algoritmo basato su confronti per la soluzione del problema. Domanda 3, Punti 5. Si implementino i metodi Java per la ricerca, la cancellazione e l’inserimento di elementi rappresentati da chiavi intere positive non nulle in una tabella hash i cui conflitti sono gestiti attraverso il metodo della scansione lineare. Si assuma la funzione hash implementata da un metodo Integer h(int key) e la tabella memorizzata in un array int[] table di dimensione n. La generica posizione h[i] assume il valore della chiave ivi memorizzata, 0 se nessun elemento e’ memorizzato nella locazione i, oppure il valore –1 se un elemento e’ stato memorizzato nella posizione i ed in seguito cancellato. Domanda 4, Punti 5. Quante operazioni di ribilanciamento sono necessarie per l’inserimento di un elemento in un albero AVL? Si motivi formalmente la risposta. Domanda 5, Punti 5. Si descriva l’esecuzione di un algoritmo per la determinazione delle componenti fortemente connesse nel seguente grafo. b a c d i h e g f Domanda 6, Punti 5. Si descriva la costruzione di un heap di n elementi in tempo O(n) a partire dall’array in figura. Gli elementi di valore maggiore hanno piu’ alta priorita’. 7 4 18 15 3 6 10 9 22 2 12 5 20 1 16 14