Sei sulla pagina 1di 1

Esercitazione di Algoritmi e Strutture Dati

1. Calcolare un upper-bound per il costo computazionale del seguente algoritmo


Algorithm 1 Metodo
1: function metodo(int n)
2: if n  2 then
3: return n
4: return 2*metodo(n-1) + 3*metodo(n-2)

2. Determinare la distanza tra le stringhe PRIMULA e PRIMA

3. Progettare un algoritmo che, dati in input due alberi binari, restituisca vero se i due alberi
hanno la stessa struttura (sono entrambi vuoti oppure sono entrambi non vuoti e i
sottoalberi di sinistra e di destra hanno la stessa struttura) e falso altrimenti. Discutere il
costo computazionale dell’algoritmo progettato.

4. Dato il seguente pseudo-codice che riceve in input un albero binario con n nodi ed un
numero intero positivo:
Algorithm 1 Metodo
a. descrivere il problema che l’algoritmo vuole risolvere e scegliete un opportuno
1: function metodo(int n)
nome per l’algoritmo
2: if n  2 then
b. analizzare il caso 3:migliorereturn
ed il caso
n peggiore per questo algoritmo determinando il
4: return 2*metodo(n-1) + 3*metodo(n-2)
costo computazionale in funzione di k

Algorithm 2 Metodo
1: function metodo(nodo T, int k)
2: if T = null then
3: return 0
4: if k = 0 then
5: return 1
6: returnCammini minimi:
metodo(T.left, algoritmi di Bellman-Ford
k-1) +metodo(T.right, k-1) e di Dijkstra

5. SiSifaconsideri un grafo
notare come, ad orientato G(V,E).sia
ogni iterazione, Si definisce grafo trasposto
inutile verificare G’ il grafo
le condizioni chearchi
per gli si ottiene
uscenti
dadanodi
G invertendo le direzioni
le cui etichette di tutti iaggiornate.
non vengono suoi archi. Supponendo che G sia migliorare
Pertanto, è possibile rappresentatol’e±cienza
attraverso una matrice di adiacenza, fornire lo pseudo-codice di
computazionale media (ma NON quella del caso peggiore) andando a memorizzare, un algoritmo che calcoli laad
matrice
ogni di adiacenza
iterazione, deldei
la lista grafo
nodiG’ le
concuiuno spazio ulteriore
etichette vengonoparia O(1). Analizzare
aggiornate l’algoritmo
(Lista Aggiornati).
proposto determinandone
All’iterazione esplicitamente
successiva basterà controllare un gli
upper-bound
archi (i, j)ed
2A un:lower-bound
i 2 Aggiornati. per il costo
computazionale.
Esempio 2 Si risolva il problema dei cammini minimi con origine nel nodo 1 per il grafo
6. inDeterminare
Figura 3. l’albero dei cammini minimi per il grafo orientato pesato in figura scegliendo
il nodo 1 come nodo sorgente
1

Figure 3: Grafo per l’Esempio 2.

iterazione nodo 1 nodo 2 nodo 3 nodo 4 nodo 5 nodo 6 Aggiornati