Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 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 - punto; ogni domanda lasciata in bianco vale 0 punti. Le domande a risposta multipla valgono in tutto 3 punti, quelle aperte 68 punti per un totale di 00 punti. NOME: COGNOME: MATRICOLA: Quesito risposta multipla uso di un algoritmo problema problema Totale Punti /3 /8 /5 /5 /00
Prova scritta 0/06/06 Quesito. Quali delle seguenti funzioni cresce più rapidamente delle altre? A. (log n) 0 B. (log n)/n C. log log n D. n /(log n) 3. Qual è il tempo di esecuzione del seguente frammento di codice? A. O(log log n) B. O(log n) C. Θ(n log n) D. Ω(n ) 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 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.4,0.3,0.,0.}. Quali dei seguenti codici è un codice di Huffman? Le parole codice sono associate nell ordine, cioè la prima codifica il simbolo con frequenza 0.4 e l ultima il simbolo con frequenza 0. A. {00,0,0,} B. {0,,0,0} C. {0,0,00,0} D. {,0,00,000} 5. Si consideri un albero di copertura minimo (MST) per un grafo pesato G=(V,E). Quali delle seguenti affermazioni è vera? A. L albero contiene gli n archi di peso minore dove n è il numero di nodi B. L albero contiene l arco di peso minimo C. L albero contiene l arco di peso massimo D. L albero deve necessariamente escludere l arco di peso massimo 6. Si consideri la classe di problemi NP-completi. Quali delle seguenti affermazioni è falsa? A. L insieme dei problemi NP-completi è il sottoinsieme dei problemi NP che non sappiamo risolvere B. Se troviamo una soluzione efficiente per un problema NP-completo allora possiamo risolverli tutti in modo efficiente C. Un problema può appartenere sia alla classe NP che alla classe NP-completi D. Un problema non appartenente alla classe NP-completi può essere difficile da risolvere 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 DFS 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 n-, dove n è il numero di nodi? A. il grafo ha esattamente n- archi B. ogni nodo è connesso a tutti gli altri nodi C. ogni nodo è connesso ad almeno altri nodi D. il grafo non contiene cicli i= while (i<n/) i=i* endfor
Prova scritta 0/06/06 Quesito Algoritmo Si utilizzi l algoritmo di Kruskal per individuare un albero ricoprente minimo nel seguente grafo: b 3 4 a e 5 d 7 6 La risposta deve specificare, per ogni iterazione, quale arco viene considerato dall algoritmo e il perché l arco viene inserito o meno nell albero: c RISPOSTA ITERAZIONE n. :
Prova scritta 0/06/06 Quesito 3 Problema Sia G =(V,E) un grafo connesso con n nodi e m archi. Ad ogni arco è associato un costo e i costi sono tutti diversi. Sia e V uno specifico arco fornito in input insieme a G. Fornire un algoritmo per stabilire se l arco e è contenuto in un minimo albero ricoprente; l algoritmo deve avere complessità di tempo O(n+m). 3
Prova scritta 0/06/06 Quesito 4 Problema Si consideri il seguente problema: abbiamo t diversi tipi di monete, con valori c,c,,c t, tutti multipli di una unità di base (es. centesimi). Ci viene dato in input un valore intero espresso nell unità di base (es. 738, pari a 7 e 38 centesimi). Fornire un algoritmo che scelga il minor numero di monete il cui valore totale è pari a n (è possibile utilizzare un numero illimitato di ogni tipo di moneta). (Suggerimento: per alcuni insieme di monete, ad esempio, c =, c =5, c 3 =0, c 4 =5 l algoritmo greedy trova la soluzione. L algoritmo richiesto deve funzionare per qualunque insieme c,c,,c t ad esempio anche per c =, c =5, c 3 =0, c 4 =5, c 5 =8). 4