Sei sulla pagina 1di 1

Algoritmi e strutture dati

Allievi del Corso di Laurea Specialistica in Ingegneria Informatica


Tema d’esame - 2 Settembre 2011 – ore 9.00-10.30

NOME: ……………………… COGNOME: ……………………….


MATRICOLA: ……….. FIRMA: ………………………………………………..
Il valore degli Esercizio 1 2 3 4 5a 5b 5c 6a 6b
esercizi è riportato Valore 2 2 4 2 5 3 3 6 3
nel prospetto a lato. Valutazione

Esercizi

1) Presentare il concetto di algoritmo randomizzato.

2) Discutere il caso peggiore dell’algoritmo HEAPSORT.

3) Valutare la complessità di un algoritmo incrementale che, a ogni passo iterativo, impiega un


tempo O(n) per incrementare la dimensione della soluzione parziale di due unità, dove n è la
dimensione della soluzione parziale dopo l’incremento. Se, all’ultimo passo, è possibile
incrementare la dimensione della soluzione solo di una unità, il tempo di calcolo del passo è
O(1). Si assuma inoltre T(0) = O(1).

4) Si consideri una tabella hash di lunghezza m = 11 gestita mediante hashing doppio con
h1(k) = k mod m
h2(k) = 1 + k mod (m – 1)
Simulare l’inserimento delle chiavi 18, 44, 37, 11, 22, 30, 4 nell’ordine dato.

5) Si consideri il seguente problema.


Input: due vettori A e B non vuoti, contenenti elementi appartenenti al medesimo dominio.
Output: il valore booleano true se A e B hanno almeno un elemento comune, false altrimenti.
a) Scrivere lo pseudocodice di un algoritmo divide et impera che risolva il problema.
b) Analizzarne la complessità asintotica temporale.
c) Analizzarne la complessità asintotica spaziale.

6) Sia dato un albero non vuoto dove ogni nodo può avere un numero arbitrario di figli. La
rappresentazione di ciascun nodo contiene i campi puntatori al padre, al figlio sinistro e al
fratello destro.
a) Scrivere lo pseudocodice di un algoritmo, eventualmente articolato in più moduli, che,
acquisita in ingresso la radice dell’albero, restituisca il nodo avente il massimo numero di
figli.
b) Analizzarne la complessità asintotica temporale.