1 Luglio 2010

Transcript

1 Luglio 2010
2o Appello – 01/07/2010
1
RICERCA OPERATIVA (a.a. 2009/10)
Nome:
Cognome:
Matricola:
1) Si individui un albero dei cammini minimi di radice 8 sul grafo in figura
2
8
1
7
4
5
7
4
4
6
1
2
1
5
7
1
4
4
2
3
4
2
3
1
utilizzando l’algoritmo più appropriato dal punto di vista della complessità computazionale e giustificando la scelta
effettuata. Per ogni iterazione si forniscano il nodo selezionato u, i vettori dei predecessori e delle etichette, l’insieme
dei nodi candidati Q; durante l’algoritmo, si visitino gli archi della stella uscente di u in ordine crescente del nodo
testa. Al termine si disegni l’albero dei cammini minimi individuato.
SVOLGIMENTO
Non essendo presenti archi di costo negativo, e non essendo il grafo aciclico, l’algoritmo più conveniente dal punto di
vista della complessità computazionale, tra quelli studiati, è l’algoritmo SPT.S, che ha complessità in tempo O(n2 )
oppure O(n log n) a seconda del modo in cui è implementata Q.
M = (n − 1)cmax + 1 = 7 × 7 + 1 = 50.
it. u
0
1 8
2 7
3 4
4 3
5 2
6 6
7 5
8 5
p[1] p[2] p[3] p[4] p[5] p[6] p[7] p[8] d[1] d[2] d[3] d[4] d[5] d[6] d[7] d[8]
Q
8
8
8
8
8
8
8
nil
50
50
50
50
50
50
50
0
{8}
8
8
8
8
8
8
8
nil
50
50
7
4
50
50
2
0 {3, 4, 7}
8
7
7
7
8
7
8
nil
50
6
6
3
50
7
2
0 {2, 3, 4, 6}
8
7
4
7
8
7
8
nil
50
6
5
3
50
7
2
0 {2, 3, 6}
8
7
4
7
8
3
8
nil
50
6
5
3
50
6
2
0
{2, 6}
2
7
4
7
2
3
8
nil
9
6
5
3
13
6
2
0 {1, 5, 6}
2
7
4
7
6
3
8
nil
9
6
5
3
7
6
2
0
{1, 5}
5
7
4
7
6
3
8
nil
8
6
5
3
7
6
2
0
{1}
5
7
4
7
6
3
8
nil
8
6
5
3
7
6
2
0
∅
L’albero trovato è mostrato in figura.
0
2
6
7
8
7
6
5
4
3
2
1
3
5
6
8
2o Appello – 01/07/2010
2
2) Si consideri il problema di flusso di costo minimo in figura. Si verifichi se il flusso ammissibile riportato sia di
costo minimo, ed in caso negativo si determini un altro flusso ammissibile di costo minore inviando flusso lungo un
opportuno ciclo. Si dica poi se il flusso cosı̀ ottenuto è oppure no ottimo. Giustificare le risposte.
1
2
−3 1 2,4,3
3
0,1,2
bj
x ij ,u ij,c ij
i
j
1
6 −3
2,
5,
−
3
3,
1,
0,3,4
3
bi
0,3,3
2,
5
1
1,
1,
1,1,1
1
3,
1
1,2,3
4
1
SVOLGIMENTO
Un flusso ammissibile è di costo minimo se e solo se non ammette cicli aumentanti di costo negativo, ovvero se e solo
se il corrispondente grafo residuo non contiene cicli negativi. La figura qua sotto fornisce il grafo residuo associato al
flusso dato, che contiene cicli negativi: ad esempio, il ciclo C1 = {1, 4, 3} di costo C(C1 ) = −2 e capacità θ = 1, che
pu essere individuato applicando l’algoritmo SPT.L con tutti i nodi come radici.
3
2
5
−3
−1
−1
3
1
−1
3
1
3
3
−3
−3 4
2
6
1
−1
4
Inviando una unità di flusso lungo il ciclo C1 si ottiene il flusso riportato nella figura qua sotto a sinistra, di costo 13
mentre il flusso dato ha costo 15. Anche questo flusso non è di costo minimo in quanto il grafo residuo, riportato nella
figura a destra, contiene il ciclo C2 = {2, 6, 5} di costo C(C2 ) = −1.
2
0
3
1
4
5
1
1
1
1
3
1
2
1
2
−1
0
6
0
2
3
1
−3
3
5
−3
−1
−1
3
3
4 −4
4
2
6
1
−1
2o Appello – 01/07/2010
3
3) Si consideri il seguente problema di PL:
max
x1
x1
−x1
−x1
2x1
−x1
−
+
+
+
+
x2
x2
x2
3x2
x2
≤
≤
≤
≤
≤
6
4
8
−5
3
Utilizzando il Lemma di Farkas, si verifichi se la soluzione x̄ = [−3, 1] è ottima per tale problema. In caso negativo,
si determini una direzione ammissibile di crescita per x̄ e si rappresenti graficamente il cono di tutte queste direzioni.
SVOLGIMENTO
È immediato verificare che x̄ = [−3, 1] è una soluzione ammissibile. Poiché l’insieme degli indici dei vincoli attivi è
I(x̄) = {2, 4, 5}, i sistemi ridotti
AI(x̄) ξ ≤ 0
yI(x̄) AI(x̄) = c
(P R)
(DR)
cξ
> 0
yI(x̄)
≥ 0
diventano:

−ξ1



2ξ1
(P R)
−ξ

1


ξ1
+
+
ξ2
ξ2
−
ξ2
≤
≤
≤
>
0
0
0
0

 −y2 +
y2 +
(DR)

y2 ,
2y4 −
y4
y4 ,
y5
y5
=
=
≥
1
−1
0
Il sistema (DR) non ammette soluzione: la seconda equazione non è compatibile con i vincoli di non negatività.
Ad ulteriore riprova, la figura (a) permette di verificare anche geometricamente l’impossibilità del sistema, ovvero
c ∈
/ cono ({A2 , A4 , A5 }). Di conseguenza, il Lemma di Farkas garantisce che il sistema (P R) ammette soluzione e
pertanto esistono direzioni ammissibili di crescita per x̄, che quindi non è una soluzione ottima del problema dato. La
direzione ξ = [1, −2] separa c da A2 , A4 e A5 : infatti la retta, ad essa ortogonale, divide il piano in due semipiani in
uno dei quali giace il vettore c e nell’altro i vettori Ai , i = 2, 3, 5, come illustrato in figura (b). Pertanto, ξ risolve
(P R) ed è quindi una direzione ammissibile di crescita per x̄. In figura (c) è evidenziato il cono che individua tutte
le soluzioni di (P R), ovvero tutte le direzioni ammissibili di crescita per x̄, che è individuato dall’intersezione dei
semipiani chiusi { ξ ∈ R2 : Ai ξ ≤ 0 }, i = 2, 3, 5, e del semipiano aperto { ξ ∈ R2 : cξ > 0 }.
A2
A4
A5
c
A4
ξ
A5
A4
A2
A2
A5
c
c
(a)
(b)
(c)
2o Appello – 01/07/2010
4
4) Si risolva graficamente il problema di PL indicato in figura, utilizzando l’algoritmo del Simplesso Duale a partire
dalla base B = {3, 5}. Per ogni iterazione si indichino: la base, la soluzione primale di base (in figura), l’indice entrante
k, i segni delle componenti dei vettori yB e ηB , l’indice uscente h, giustificando le risposte. Si discuta la degenerazione,
sia primale che duale, delle basi visitate dall’algoritmo. Successivamente, si consideri il caso in cui c = A1 : la soluzione
ottima trovata in precedenza resta tale? Qual è, in questo caso, l’insieme di tutte le soluzioni ottime del problema
duale? Giustificare le risposte.
c =A2
c
x1
x4
A3
x3
A2
x2
A5
x5
A4
A6
A1
SVOLGIMENTO
it. 1) B = {3, 5}, x1 viola i vincoli 2, 4 e 6 da cui k = min{2, 4, 6} = 2 (regola anticiclo di Bland), y3 > 0, y5 > 0
in quanto c appartiene all’interno del cono generato da A3 e A5 (c ∈ int cono(A3 , A5 )), come mostrato in figura (a).
La base è duale non degenere (y3 , y5 6= 0) e primale non degenere (I(x1 ) = B). Poiché c = A2 , risultano η3 = y3 > 0
e η5 = y5 > 0, quindi h = min{3, 5} = 3 (regola anticiclo di Bland).
it. 2) B = {2, 5}, x2 viola i vincoli 4 e 6 da cui k = min{4, 6} = 4 (regola anticiclo di Bland), y2 = 1, y5 = 0 in quanto
c = A2 . La base è duale degenere (y5 = 0), ma primale non degenere (I(x2 ) = B). Poiché A4 ∈ int cono(A2 , A5 ),
come mostrato in figura (b), risultano η2 > 0, η5 > 0, da cui y5 /η5 = 0 < y2 /η2 e quindi h = 5.
it. 3) B = {2, 4}, x3 viola il vincolo 6 da cui k = 6, y2 = 1, y4 = 0 in quanto c = A2 . La base è duale degenere
(y4 = 0) e primale degenere (I(x3 ) = {2, 3, 4}). Poiché A6 ∈ int cono(−A2 , A4 ), come mostrato in figura (c), risultano
η2 < 0, η4 > 0 e quindi h = 4.
it. 4) B = {2, 6}, x4 viola il vincolo 3 da cui k = 3, y2 = 1, y6 = 0 in quanto c = A2 . La base è duale degenere (y6 = 0),
ma primale non degenere (I(x4 ) = B). Poiché A3 ∈ int cono(A2 , −A6 ), come mostrato in figura (d), risultano η2 > 0,
η6 < 0 e quindi h = 2.
it. 5) B = {3, 6}, x5 è una soluzione ammissibile per il problema primale e quindi ottima. La base è primale
degenere (I(x5 ) = {1, 3, 6}), ma duale non degenere in quanto c ∈ int cono(A3 , A6 ), come mostrato in figura (e), e
conseguentemente y3 > 0 e y6 > 0.
c =A2
A2
A3
A5
A4
A2
A5
A4
A3
A6
−A6
c
A2
A3
A6
−A2
(a)
(b)
(c)
(d)
(e)
2o Appello – 01/07/2010
5
5) I Borg stanno pianificando l’attacco finale alla Terra, che porterà alla caduta della Federazione e quindi alla
completa assimilazione della Galassia. Per questo si preparano a sfruttare la loro più importante risorsa tattica: la
rete di condotti transwarp che permette loro di spostarsi in modo praticamente istantaneo tra punti estremamente
distanti della Galassia. La rete è costituita da un insieme V di hub transwarp, ciascuno equipaggiato con un insieme di
collettori interspaziali in grado di mantenere aperti condotti transwarp tra quello ed altri hub; l’insieme dei possibili
condotti transwarp è rappresentato dal sottoinsieme E ⊆ V × V di coppie non orientate di hubs. Uno di tali hub,
s ∈ V , è situato nella nebulosa alle Coordinate Spaziali 986 nel Quadrante Delta, dove la Regina Borg ha ammassato
un poderoso contingente di Cubi Borg pronti all’attacco; un altro hub, t ∈ V , è stato segretamente completato nel
Quadrante Alfa, a poca distanza dalla Terra. La Regina Borg vuole determinare il maggior numero possibile di
cammini tra s e t sulla rete di condotti transwarp, ciascuno dei quali rappresenta una sequenza di condotti transwarp
continuamente aperti per permettere l’istantaneo invio di Cubi all’attacco alla Terra, un’altrettanto istantanea ritirata
dei Cubi danneggiati e la loro sostituzione con Cubi freschi; una strategia micidiale ed irresistibile. Per evitare disastrose
collisioni all’interno della rete transwarp durante le concitate fasi del combattimento, che potrebbero facilmente portare
alla distruzione della rete stessa, i cammini devono però essere totalmente disgiunti, ossia nessun hub transwarp (tranne
s e t) può essere attraversato da più di un cammino. Aiutate la Regina Borg a realizzare l’assimilazione finale della
Galassia riconducendo il problema di determinare il maggior numero possibile di cammini disgiunti tra s e t ad un
problema combinatorio per il quale sono noti algoritmi risolutivi polinomiali.
SVOLGIMENTO
Il problema dei Borg può essere ricondotto ad un problema di Flusso Massimo con capacità unitarie sui nodi, che a sua
volta può essere ricondotto ad un normale problema di flusso massimo attraverso la nota tecnica del “node splitting”.
Si consideri infatti il grafo orientato G = (N, A) dove N = {s, t} ∪ N ′ , ed N ′ contiene “due copie” di ciascuno dei nodi
i ∈ V ′ = V \ {s, t}, che denoteremo rispettivamente con i′ ed i′′ . L’insieme degli archi A è poi costruito come segue:
• per ogni coppia {s, i} in E si crea l’arco (s, i′ );
• per ogni coppia {i, t} in E si crea l’arco (i′′ , t);
• per ogni coppia {i, j} in E con {i, j} ∩ {s, t} = ∅ si creano sia l’arco (i′′ , j ′ ) che l’arco (j ′′ , i′ );
• per ogni nodo i ∈ V ′ si crea l’arco (i′ , i′′ ).
s
i
s
t
i
i’
i’’
i’’
j’
i’
j’’
t
j
È immediato verificare che il problema del flusso massimo tra s e t sul grafo G in cui tutte le capacità degli archi
sono poste pari a 1 è equivalente al problema di determinare il massimo numero di cammini disgiunti sulla rete di
condotti transwarp. Infatti, si consideri un flusso ammissibile intero x (è noto che esiste una soluzione ottima intera
per il problema, che viene naturalmente determinata dagli algoritmi); è facile dimostrare che il flusso si distribuisce su
cammini disgiunti, in quanto al più un’unità di flusso può attraversare ciascun arco (i′ , i′′ ). Inoltre, il valore del flusso
è evidentemente pari al numero di cammini; pertanto, determinare il flusso di valore massimo equivale a determinare
il massimo numero di cammini disgiunti.
2o Appello – 01/07/2010
6
6) Si applichi alla seguente istanza del problema dello zaino
max
x1 +3x2 +6x3 +8x4 +10x5
x1 +2x2 +2x3 +2x4
+2x5
x1 ,
x2 ,
x3 ,
x4 ,
x5
≤
∈
5
{0, 1}
l’algoritmo Branch&Bound che utilizza il rilassamento continuo per determinare la valutazione superiore, l’euristica
Greedy CUD per determinare la valutazione inferiore, esegue il branching sulla variabile frazionaria, visita l’albero di
enumerazione in modo breadth-first e, tra i figli di uno stesso nodo, visita per primo quello in cui la variabile frazionaria
è fissata a 1. Per ogni nodo dell’albero si riportino le soluzioni ottenute dal rilassamento e dall’euristica (se vengono
eseguiti) con le corrispondenti valutazioni superiore ed inferiore. Si indichi poi se viene effettuato il branching, e come,
o se il nodo viene chiuso e perché. Si esaminino solamente i primi tre livelli dell’albero di ricerca (compreso il livello
del nodo radice). Al termine si indichi se il problema è stato risolto, oppure quali sono la miglior valutazione superiore
ed inferiore disponibili al momento in cui l’esplorazione viene interrotta, giustificando la risposta.
SVOLGIMENTO
Indichiamo con x∗ la soluzione ottenuta dal rilassamento e con x̄ quella ottenuta dall’euristica. Indichiamo inoltre
con z̄ la valutazione superiore ottenuta ad ogni nodo (ossia z̄ = cx∗ ), con z la valutazione inferiore ottenuta ad ogni
nodo (ossia z = cx̄) e con z la migliore delle valutazioni inferiori determinate. L’ordinamento CUD (Costo Unitario
Decrescente) delle variabili è (x5 , x4 , x3 , x2 , x1 ).
Inizializzazione: La coda Q viene inizializzata inserendovi il solo nodo radice dell’albero delle decisioni, corrispondente a non aver fissato alcuna variabile; inoltre, si pone z = −∞.
Nodo radice x∗ = [0, 0, 1/2, 1, 1], z̄ = 21, x̄ = [1, 0, 0, 1, 1], z = 19. Poiché z > z = −∞, z = 19. Siccome z̄ > z, si
esegue il branching sulla variabile frazionaria x3 .
x3 = 1 x∗ = [0, 0, 1, 1/2, 1], z̄ = 20, x̄ = [1, 0, 1, 0, 1], z = 17. Siccome z̄ > z, si esegue il branching sulla variabile
frazionaria x4 .
x3 = 0 x∗ = [0, 1/2, 0, 1, 1], z̄ = 19 + 1/2, x̄ = [1, 0, 0, 1, 1], z = 19. Siccome z̄ > z, si esegue il branching sulla
variabile frazionaria x2 .
x3 = 1, x4 = 1 x∗ = [0, 0, 1, 1, 1/2], z̄ = 19, x̄ = [1, 0, 1, 1, 0], z = 15. Siccome z̄ = z, il nodo viene chiuso per via
della valutazione superiore.
x3 = 1, x4 = 0 x∗ = [0, 1/2, 1, 0, 1], z̄ = 17 + 1/2, x̄ = [1, 0, 1, 0, 1], z = 17. Siccome z̄ < z, il nodo viene chiuso per
via della valutazione superiore.
x3 = 0, x2 = 1 x∗ = [0, 1, 0, 1/2, 1], z̄ = 17, x̄ = [1, 1, 0, 0, 1], z = 14. Siccome z̄ < z, il nodo chiuso per via della
valutazione superiore.
x3 = 0, x2 = 0 x∗ = [1, 0, 0, 1, 1], z̄ = 19. Poichè la soluzione ottima del rilassamento continuo è a componenti intere,
il nodo viene chiuso per ottimalità (sarebbe stato chiuso anche per via della valutazione superiore).
L’algoritmo termina in quanto Q è vuota. La soluzione ottima determinata è x = [1, 0, 0, 1, 1], di valore z = 19.