Progettazione di Algoritmi Corso di laurea in Informatica Prof. De Prisco Prova scritta del: 14/01/2016 Inserire i propri dati nell’apposito spazio. Non voltare la pagina finché non sarà dato il via. Dal via avrai 3 ore di tempo per rispondere alle domande. La prova consta di 8 domande a risposta multipla e 3 domande aperte. Per le domande a risposta multipla occorre rispondere inserendo la lettera scelta nell’apposito quadratino accanto al numero della domanda. In caso di ripensamento, cancellare la risposta data e scrivere la nuova risposta nel successivo quadratino. Ogni risposta esatta vale 4 punti; ogni risposta errata vale ︎-1 punto; ogni domanda lasciata in bianco vale 0 punti. Le domande a risposta multipla valgono in tutto 32 punti, quelle aperte 68 punti per un totale di 100 punti. NOME: _________________________________ COGNOME:_____________________________ MATRICOLA: _____________________________ Quesito Punti risposta multipla /32 uso di un algoritmo /18 problema 1 /25 problema 2 /25 Totale /100 Progettazione di algoritmi Prova scritta Quesito 1 14/01/2016 Prof. DE PRISCO 1. ☐☐☐☐ Quali delle seguenti affermazioni è vera? A. B. C. D. log n = O(log log n) n = O (log n) log log n = O (log log n) nessuna delle precedenti è vera 2. ☐☐☐☐ In quali casi la visita in profondità e la visita in ampiezza su un grafo non orientato producono esattamente lo stesso albero? A. B. C. D. Se il grafo ha n vertici ed n archi Se il grafo è un ciclo semplice Se il grafo è un cammino (catena) Mai 3. ☐☐☐☐ Qual è il tempo di esecuzione del seguente frammento di codice? A. B. C. D. O(log n) O(n) Θ(n2) Ω(n2) for i=1 to n/2 if x>y then x=x-y endfor return x 4. ☐☐☐☐ L’algoritmo di Huffman calcola una codifica prefissa binaria γ per un alfabeto S con frequenze f(s), per s ∈ S, associando ad ogni s ∈ S, la parola codice γ(s), di lunghezza |γ(s)|, in modo tale da minimizzare A. B. C. D. Σs∈S γ(s) Σs∈S |γ(s)| Σs∈S f(s)γ(s) Σs∈S f(s)|γ(s)| 5. ☐☐☐☐ Un minimo albero di copertura (MST) per un grafo pesato G=(V,E) è? A. B. C. D. Un sottografo di peso totale minimo Un insieme aciclico di archi di peso totale minimo Un albero col minimo numero di archi il cui insieme di vertici è V Nessuna delle risposte precedenti 6. ☐☐☐☐ Gli algoritmi di Dijkstra e di Bellman-Ford risolvono il problema dei cammini minimi in un grafo orientato e pesato. Inoltre A. B. C. D. Entrambi funzionano correttamente per qualsiasi tipo di grafo (orientato e pesato, con costi positivi e negativi) L’algoritmo di Dijkstra funziona correttamente per tutti i grafi (orientati e pesati) in cui non vi siano cicli di costo negativo L’algoritmo di Bellman-Ford funziona correttamente per tutti i grafi (orientati e pesati) in cui non vi siano archi di costo negativo Nessuna delle risposte precedenti è vera 7. ☐☐☐☐ Il valore di un flusso in una rete G=(V,E) è: A. B. C. D. La somma dei flussi uscenti dalla sorgente La capacità minima di un cammino dalla sorgente al pozzo Una funzione f:E→ℜ+ che rispetta le proprietà di capacità e di conservazione Nessuna delle risposte precedenti 8. ☐☐☐☐ Un ordinamento topologico per il grafo diretto G=(V,E) con V={u, v, x, y, z}, E={(u,x), (v,x), (v,y), (v,u), (x,y), (y,z)} è: A. B. C. D. z, y, x, u, v v, u, x, y, z G non ammette un ordinamento topologico Nessuna delle risposte precedenti è vera pagina 1 Progettazione di algoritmi Prova scritta 14/01/2016 Quesito 2 Prof. DE PRISCO Applicazione algoritmo Usa l’algoritmo di Ford-Fulkerson per trovare il flusso massimo dalla sorgente s al pozzo t nella rete riportata nella seguente figura. Mostra l’augmenting path utilizzato in ogni iterazione. b 6 12 2 s 4 2 3 5 a d 3 t 5 4 10 c pagina 2 Progettazione di algoritmi Prova scritta Quesito 3 14/01/2016 Prof. DE PRISCO Problema 1 Stai facendo il consulente per un’azienda di trasporti che consegna pacchi fra Palermo e Milano. Il numero di pacchi è così elevato che c’è la necessità di spedire molti furgoni ogni giorno fra le due città. Ogni furgone ha un limite di W Kg sul peso massimo che può trasportare. Non ci sono limiti sul numero di furgoni che si può utilizzare, ma le sedi sono piccole e hanno spazio solo per un autoveicolo alla volta. I pacchi devono essere spediti nell’ordine in cui arrivano (altrimenti i clienti potrebbero protestare). L’azienda al momento utilizza un approccio greedy: riempie un furgone fino a che c’è la possibilità di inserire un nuovo pacco senza superare il massimo del peso (non ci sono problemi di spazio) e lo fa partire e passa ad un nuovo furgone. Ti hanno chiamato per stabilire se c’è un modo per fare meglio e ridurre il numero di furgoni utilizzati. Fornisci una prova del fatto che l’approccio attualmente utilizzato è ottimale. (Suggerimento: si fornisca una prova simile a quella vista per il problema della schedulazione di intervalli.) pagina 3 Progettazione di algoritmi Prova scritta Quesito 4 14/01/2016 Prof. DE PRISCO Problema 2 Sei l’amministratore delegato di un’azienda che produce hardware per PC e la tua azienda è il fornitore di molti punti vendita su tutto il territorio nazionale. Nelle prossime n settimane c’è la previsione di spedire lotti di si componenti hardware, misurati in Kg, per i=1,2,…n. L’azienda si avvale di 2 trasportatori, Bertollini e STA. Bertollini fa pagare una quota fissa di r per Kg (quindi per spedire un lotto di peso si si paga r ×si) STA invece offre un contratto per una spesa fissa c per settimana e permette di spedire senza limiti. Tuttavia il contratto deve essere fatto per almeno 4 settimane consecutive. Un piano di spedizione è una scelta della compagnia di trasporto per le prossime n settimane con il vincolo che se per una settimana si sceglie STA allora per almeno altre 3 settimane successive si deve usare STA. Il costo di un piano di spedizione è il costo totale da pagare alle 2 compagnie. Come amministratore delegato sei responsabile della scelta del piano di spedizione. Fornisci un algoritmo efficiente per trovare il piano di spedizione con costo minimo. pagina 4