Progettazione di Algoritmi - Dipartimento di Informatica

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