Prova di Algoritmi e Strutture Dati II Non si possono consultare né appunti né testi I appello 13 Giugno 2006 Esercizio 1. (punti 12) Si consideri il problema dello Zaino intero senza ripetizioni, con uno zaino di capacità K, n oggetti con profitti {p1 , p2 , . . . , pn } e con volumi {v1 , v2 , . . . , vn }, ove pi , vi ∈ R+ for 1 ≤ i ≤ n. Si progettino per risolvere questo problema: 1. una procedura polinomiale non deterministica, 2. una procedura deterministica enumerativa. Esercizio 2. (punti 12) Sia G = (V, E) un grafo orientato pesato con funzione peso w : E → {0, . . . , W }, ove W è un intero non negativo. Modificare l’algoritmo di Dijkstra per calcolare in tempo O(W V + E) i cammini minimi da una data sorgente s. Precisamente: 1. Descrivere a parole la struttura dell’algoritmo di risoluzione e spiegare le strutture dati utilizzate 2. Dare una realizzazione dell’algoritmo in pseudocodice 3. Valutare la complessità in tempo dell’algoritmo motivando il risultato indicato. Esercizio 3. (punti 8) Data la rete di flusso G = (V, E), con V = {s, 1, 2, 3, t}, E = {(s, 1; 1), (1, t; 2), (s, 2; 2), (s, 3; 1), (2, 3; 3), (3, t; 2)} ove la terna (u, v; i) rappresenta l’arco da u a v con capacità i, si calcoli il flusso massimo. Spiegare come si è giunti al risultato e quale osservazione garantisce di aver trovato un flusso massimo.