Progettazione di Algoritmi - Dipartimento di Informatica

Progettazione
di Algoritmi
Corso di laurea in Informatica
Prof. De Prisco
Prova scritta del: 29/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
29/01/2016
Prof. DE PRISCO
1.  ☐☐☐☐ Un algoritmo è efficiente?
A. 
B. 
C. 
D. 
Se riesce ad esaminare l’input in tempo polinomiale
Se risolve il problema indipendentemente dalla grandezza dell’input
Se risolve il problema in tempo polinomiale
Se riesce a verificare una soluzione in tempo polinomiale
2.  ☐☐☐☐
Un algoritmo risolve un problema in 3×10n millisecondi, dove n è la grandezza dell’input.
Usando l’algoritmo su un’istanza di grandezza 12, l’algoritmo termina in
A. 
B. 
C. 
D. 
circa 1 giorno e mezzo
quasi 3 anni
quasii 1 millennio
Un tempo incalcolabile
3.  ☐☐☐☐
Sia T un albero DFS di un grafo G=(V,E) e siano x e y nodi di T tali che esiste l’arco
(x,y)∈E.
A. 
B. 
C. 
D. 
x e y possono essere due nodi qualsiasi nell’albero T
x e y devono essere due foglie dell’albero T
x e y uno dei due deve essere un antenato dell’altro nell’albero T
x e y uno dei due deve essere la radice dell’albero T
4.  ☐☐☐☐
Stiamo costruendo un MST di un grafo G=(V,E). Abbiamo già selezionato un sottoinsieme
proprio S⊂E degli archi. Il prossimo arco che selezioniamo per la costruzione del MST è
A. 
B. 
C. 
D. 
l’arco di peso minimo (v,w) con v ∈V e w∈V-S
l’arco di peso minimo fra quelli rimanenti
l’arco di peso minimo (v,w) con v ∈V e w∈V
l’arco di peso minimo (v,w) con v ∈S e w∈V-S
5.  ☐☐☐☐
Esiste una implementazione della struttura dati Union-Find per un insieme di n elementi e k
operazioni di Union con i seguenti tempi di esecuzione?
A. 
B. 
C. 
D. 
Make: O(log n), Union: O(k) in media, e Find: O(log n)
Make: O(n), Union: O(1) e Find: O(log log n)
Make: O(n), Union: O(1) e Find: O(1) in media
Make: O(log n), Union: O(log n), Find: O(log n)
6.  ☐☐☐☐ In uno schema di codifica a lunghezza variabile conviene (se si può)
A. 
B. 
C. 
D. 
Assegnare parole brevi a tutti i simboli
Assegnare parole lunghe a simboli meno frequenti e parole brevi per simboli più frequenti
Assegnare parole lunghe a tutti i simboli
Assegnare parole lunghe a simboli più frequenti e parole brevi per simboli meno frequenti
7.  ☐☐☐☐ Sia f un flusso f:E→ℜ+. Quali delle seguenti affermazioni è vera
A. 
B. 
C. 
D. 
Il valore di f è la somma di f(u,v) su tutti gli archi uscenti da un qualsiasi nodo u
Il valore di f è la somma di f(s, v) su tutti gli archi uscenti da dalla sorgente s
Il valore di f è la somma di f(v, s) su tutti gli archi entranti nella sorgente s
Il valore di f è la somma di f(u,v) su tutti gli archi in un cammino dalla sorgete s al pozzo t.
8.  ☐☐☐☐ La programmazione dinamica sfrutta:
A. 
B. 
C. 
D. 
L‘impossibilità di usare un algoritmo greedy
La possibilità di suddividere il problema originale in tanti sottoproblemi
La possibilità di risolvere un numero polinomiale di sottoproblemi per risolvere tutto il problema originale
L’impossibilità di risolvere in modo efficiente un problema usando la forza bruta
pagina
1
Progettazione
di algoritmi
Prova scritta
Quesito 2
29/01/2016
Prof. DE PRISCO
Applicazione algoritmo
Usa l’algoritmo di Huffman per calcolare il codice ottimale per una sorgente di simboli le cui frequenze sono
(0.3, 0.20, 0.15, 0.07, 0.05, 0.04, 0.03, 0.02, 0.02, 0.01, 0.01)
Mostra la costruzione dell’albero ad ogni passo.
pagina
2
Progettazione
di algoritmi
Prova scritta
Quesito 3
29/01/2016
Prof. DE PRISCO
Problema 1
Un gruppo di amici astrofili pianifica nottate di osservazioni di eventi interessanti (passaggi di comete, allineamento di pianeti, etc). Durante
ogni nottata sono previsti molti eventi e per semplicità assumeremo che ci siano n eventi ognuno separato da esattamente un minuto: quindi
l’evento j ha luogo al minuto j; se non l’osservano al minuto j lo perdono. Per osservare un evento devono girare il telescopio e di nuovo per
semplicità assumeremo che la posizione del telescopio sia misurato in gradi da 0 a 360: per posizionare correttamente il telescopio per
l’osservazione dell’evento j occorre “spostarlo” nella posizione dj. Purtroppo non potranno vedere tutti gli eventi in quanto il telescopio, che
è abbastanza grande e complesso, può spostarsi solo alla velocità di un grado per minuto. Ad esempio, se si osserva un evento alla
posizione d=355, per osservare un evento alla posizione d=7 occorreranno 12 minuti per spostare il telescopio. Quindi se si decide di
vedere un particolare evento si dovranno saltare altri eventi. L’ultimo evento n è quello più importante quindi questo evento non deve essere
perso.
Aiuta gli amici astrofili a ideare un algoritmo che permetta loro di pianificare in modo ottimale, cioè selezionando il massimo numero di eventi
da vedere con il vincolo che l’evento n sia sempre incluso, le nottati di osservazioni astronomiche.
pagina
3
Progettazione
di algoritmi
Prova scritta
Quesito 4
29/01/2016
Prof. DE PRISCO
Problema 2
Ti hanno assunto come consulente presso un azienda che produce parti meccaniche per aerei. L’azienda ha molti dipendenti ognuno capace di
svolgere un determinato sottoinsieme di compiti fra i tanti di cui l’azienda ha bisogno. Per semplicità assumeremo che l’azienda ha n dipendenti e
che ci sono n compiti diversi da svolgere e che un dipendente è sufficiente a svolgere un compito. Il tuo obiettivo è quello di trovare un modo per
rappresentare le competenze dei singoli dipendenti e poi un algoritmo efficiente per assegnare a ciascuno dei dipendenti uno specifico compito da
svolgere in modo tale da minimizzare il numero di dipendenti che rimangono senza un compito.
pagina
4