Scienze di Internet, Universit`a di Bologna Algoritmi e Strutture Dati

Prof. G. Zavattaro
17 Luglio 2009
Scienze di Internet, Università di Bologna
Algoritmi e Strutture Dati
Esercizio 1. [11 punti]
Valutare la complessità computazionale della seguente procedura ricorsiva
utilizzando sia il metodo iterativo che il Master Theorem (se possibile). La
costante a è un intero maggiore di 1. Il costo computazionale della procedura
dipende da a?
Fa (n)
begin
if n ≤ a then return a
else return a∗Fa (n/a)
endif
end
Esercizio facoltativo [4 punti]. Cosa calcola Fa (n)?
Esercizio 2. [11 punti]
Data una sequenza di numeri interi (x1 , ..., xn ) diciamo che (xi , xi+1 ) sono una
coppia di numeri consecutivi se xi = xi+1 + 1. Ad esempio nella sequenza
(12, 13, 24, 25, 26, 35, 67) ci sono 3 coppie di numeri consecutivi: (12, 13),
(24, 25) e (25, 26). Scrivere un algoritmo ricorsivo che utilizzi la tecnica
divide-et-impera e che calcoli quante coppie di numeri consecutivi sono contenute in una sequenza di n numeri interi x1 , ..., xn ricevuta in input. Valutare
in ordine di grandezza il costo computazionale dellalgoritmo proposto.
Esercizio 3. [11 punti]
Descrivere in pseudo-codice una procedura ricorsiva che, preso in input il
puntatore T alla radice di un albero binario, restituisca il numero di nodi a
distanza pari dalla radice. Discutere il costo computazionale della soluzione
proposta. Vietato usare variabili globali.