Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 06/07/2016 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la 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 risposta multipla uso di un algoritmo problema 1 problema 2 Totale Punti /32 /18 /25 /25 /100
Quesito 1 1. Quali delle seguenti funzioni cresce più rapidamente delle altre? A. 2 log n B. log n C. log log n D. 2 log log n 2. Un algoritmo è efficiente se A. Risolve sempre il problema B. Risolve il problema velocemente anche su computer vecchi C. Risolve il problema in tempo polinomiale D. E facile da implementare 3. In un grafo aciclico orientato (DAG) e connesso, quale delle seguenti affermazioni è falsa? A. Il numero di archi è sempre maggiore del numero di nodi meno 1 B. Ogni nodo ha sia archi entranti che archi uscenti C. Esiste un nodo che non ha archi entranti D. Esiste un nodo che non ha archi uscenti 4. Si consideri un alfabeto in cui la distribuzione dei simboli è {0.25,0.25,0.2,0.2,0.1}. Quali dei seguenti codici è un codice di Huffman? Le parole codice sono associate nell ordine, cioè la prima codifica il simbolo con frequenza 0.25 e l ultima il simbolo con frequenza 0.1 A. {100,101,01,10,11,} B. {0,1,01,10,001} C. {0,01,001,0001,00001} D. {00,11,01,100,101} 5. Si consideri un albero di copertura minimo (MST) per un grafo pesato G=(V,E). Quali delle seguenti affermazioni è vera? A. Ci sono dei casi in cui l albero non contiene l arco di peso minimo B. Ci sono dei casi in cui l albero non contiene l arco di peso massimo C. L albero deve necessariamente escludere l arco di peso minimo D. L albero deve necessariamente escludere l arco di peso massimo 6. Si consideri la ricerca esaustiva. Quali delle seguenti affermazioni è falsa? A. La ricerca esaustiva prova tutte le possibili soluzioni fino a che ne trova una B. La ricerca esaustiva ci permette di risolvere quei problemi per i quali non conosciamo altri algoritmi C. La ricerca esaustiva trova una soluzione in tempo polinomiale D. La ricerca esaustiva può essere applicata a problemi di minimizzazione 7. Il valore di un flusso in una rete G=(V,E) è: A. La somma dei flussi entranti nella destinazione B. La capacità massima di un cammino dalla sorgente al pozzo C. Una funzione f:e R + che associa un valore reale ad ogni arco del grafo D. La somma dei flussi spediti su tutti gli archi 8. In quali dei seguenti casi una visita BFS di un grafo connesso può, indipendentemente dalla scelta della radice, produrre un albero in cui la distanza fra la radice dell albero ed il nodo più lontano è pari a 1? A. il grafo ha esattamente n-1 archi B. ogni nodo è connesso a tutti gli altri nodi C. ogni nodo è connesso ad almeno 2 altri nodi D. il grafo non contiene cicli 1
Quesito 2 Algoritmo Si utilizzi un algoritmo greedy che restituisca una soluzione ottimale per la seguente istanza del problema dello scheduling di intervalli su una macchina: b d c f g h a e i 2
Quesito 3 Problema 1 (algoritmo greedy) Il popolare motore di ricerca Goggol ha bisogno di ricostruire spesso l indice utilizzato per i risultati delle ricerche. Per ricostruire l indice il lavoro è stato diviso in n diversi job J 1,J 2,,J n che possono essere eseguiti indipendentemente l uno dall altro. Tuttavia per ogni job si deve prima eseguire un preprocessing su un supercomputer e poi si deve terminare il job su un computer normali: il job J i ha bisogno di p i secondo sul supercomputer e poi di f i secondi sul computer normale. Poiché di computer normali ce ne sono a sufficienza la parte terminale di ogni job potrà essere fatta completamente in parallelo. Tuttavia il supercomputer può lavorare solo su un job alla volta. Quindi serve trovare un ordine da utilizzare per eseguire i job sul supercomputer. Uno assegnamento è un tale ordine mentre il tempo di completamento è il tempo necessario per completare tutti i job. Aiuta Goggol a trovare un algoritmo efficiente per trovare un assegnamento che minimizzi il tempo di completamento. 3
Quesito 4 Problema 2 (Programmazione dinamica) Sei stato ingaggiato come consulente da una ditta che istalla cartelloni pubblicitari sulle autostrade. La ditta ha ricevuto una commessa per un autostrada lunga M km e ci sono n possibili punti sull autostrada dove piazzare i cartelli; tali punti sono specificati da x 1,x 2,,x n (dove x i è il km della possibile posizione del cartello). Per ognuna di queste posizioni il committente ha preventivato un possibile guadagno indotto di r i. La legge impone che non ci siano due cartelli a distanza minore di 5 km. La ditta ti chiede di trovare un algoritmo che scelga un sottoinsieme dei punti nei quali istallare i cartelli in modo da massimizzare il guadagno indotto totale. Esempio: x 1,x 2, x 3,x 4 ={6,7,12,14} r 1,r 2, r 3,r 4, ={5,6,5,1} Soluzione ottima: cartelli in x 1 e x 3, guadagno totale =10 4