Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Esempio
Definizioni
m
A =
=
⎪⎢⎥ ⎥
1
⎣ ⎦
1
−1
0
1
−1
0
0
−1
0
Simplesso su rete
Caso non capacitivo
P F CM 0 ⎨
−1
Teorema
0
−1
⎧
⎦
min f : z = c
Af = d
f ≥ 0
= (V , E T )
I
=
= [A
⎣
−1
1
0
T
em ]
f
che ha il numero di righe uguale al numero di nodi, ed è composto da una colonna di 0 tranne che
−1
0
0
−1
0
0
−1
0
−1
1
⎤
T ≤ E .
Esempio 1
Nota
La prima soluzione :
¯
¯
B =
fB = B
fN = 0
−1
⎢⎥
Una matrice B è una matrice di base per il P F CM se e solo se B è la matrice di incidenza di un rooted spanning tree.
d
1
−1
0
0
−1
0
0
−1
0
1
⎤
La seconda soluzione :
B
Simplesso
24 < 0
Prima cosa da controllare, è che la somma delle divergenze sia nulla, cioè ∑
inammissibile.
⇒
Esempio 2
La sua matrice d'incidenza costituisce
una matrice di base per il problema
Creato lo spanning tree, la sua matrice d'incidenza, che rappresenta gli archi fra i nodi, è la nostra matrice di base, e che quindi ci indica quali archi
¯
fB =
i∈V
Dobbiamo risolvere con il simplesso questo problema, partendo da questo rooted spanning tree :
¯
f 23
¯
f 34
⎣ ¯ ⎦
f 4,⋅
= d
d ij = 0
,
¯
fN = [
¯
f 12 = 0
¯
f 24 = 0
]
Tip
Prendiamo il nostro rooted spanning tree e ricopiamo i costi di trasporto originali, impostando al root arc 0 come costo, e come π 5 = 0 :
Fatto questo, calcoliamo tutti i π con la seguente formula : π j − π i = c ji |π j = c ji + π i .
Quindi volendo calcolare π dobbiamo fare :
1
π1 − π5 = 2 ⇒ π1 − 0 = 2 ⇒ π1 = 2
c
^ij = c ij − π i + π j (i, j) ∈ ω
Dove c è semplicemente il costo di trasporto dell'arco fuori base dal nodo i al nodo j , arco che non è presente nel rooted spanning tree e quindi
ij
Quindi :
∙ c
^12 = c 12 − π 1 + π 2 = 5 − 2 + (−1) = 2
∙ ^13 = c 13 − π 1 + π 3 = −2 − 2 + 3 = −1
c
Potremmo anche calcolare gli altri, ma abbiamo già trovato un valore negativo in corrispondenza di c^ 13 = −1 < 0
Questo sta a significare che dobbiamo fare entrare in base l'arco (1, 3).
A sinistra il nostro grafo con soluzione, ( non ottima ) , a destra l'entrata in base del nuovo arco.
Aumento di Δ tutti gli archi che sono concordi al verso del ciclo.
Decremento di Δ tutti gli archi che sono discordi al verso del ciclo.
Δ = min
i,j∈E c
−
¯
{f ij } , che in spicci significa che Δ è uguale al flusso più piccolo tra i flussi degli archi discordi.
Aggiorno i flussi ed il grafo
In questo caso il più piccolo flusso degli archi discordi, nonché unico, è quello dell'arco (1, 5) , che quindi verrà eliminato :
Nota
Nel caso non ci fosse stato un arco discorde al verso del ciclo, per esempio al posto di (1, 5) ci stava (5, 1), in questa situazione Δ sarebbe
+∞ e quindi avremmo avuto un problema I llimitato .
Arrivati a questo punto reiteriamo il processo, quindi avendo già il flusso f¯ , andiamo a calcolarci i nostri π e poi controllare i costi ridotti fuori base
per l'ottimalità della soluzione.
π5 = 0
π4 = 3 + 0 = 3
π3 = 0 + 3 = 3
π 2 = −4 + 3 = −1
π 1 = −2 + 3 = 1
^12 = 5 − 1 − 1 = 3
c
c
^15 = 2 − 1 + 0 = 1
c
^42 = 6 − 3 − 1 = 2
c
^53 = 4 − 0 + 3 = 7
In questo caso tutte le componenti sono ≥ 0 e quindi ci fermiamo , poiché la soluzione, è una soluzione ottima.
Questo è il grafo con flusso ottimo :
Con f ∗
B
= [2 5 8 4] ez=c T
f
∗
= −2(2) + (−4)5 + 0(8) + 3(4) = −12
Caso capacitivo
T
⎧ min f : z = c f
m = |V |
⎨
Af = d n = |E|
⎩
l ≤ f ≤ u
In questo problema non è detto che le variabili fuori base siano nulle, poiché il lower bound non è detto che sia 0.
Nota
se
T
c
^
Nl
≥ 0 e c
^
T
Nu
≤ 0 ⇒ x̄ è soluzione ottima
Nota
Nel caso esteso, una soluzione x̄ di base è degenere se almeno una componente in base è uguale al valore di lower bound o upper bound
Esempio 1
In questo caso, gli archi fuori base , non è detto che siano nulli, quindi non possiamo semplicemente non contarli, dobbiamo aggiungerli al disegno.
Questi due archi fuori base, fanno parte dell'insieme ω , e questo significa che hanno come flusso lo stesso valore del proprio upper bound ,
u
quindi l'arco (1, 3) , per esempio, avrà valore di flusso uguale a 3 , cioè il suo upper bound .
Stesso ragionamento per (2, 4) , che avrà flusso uguale a 4 .
Calcolate anche le variabili duali, controlliamo se la soluzione trovata è ottima, verificando i costi ridotti fuori base .
Come cambiano qua le cose?
Una soluzione per essere ottima deve avere i costi ridotti degli archi appartenenti all'insieme ω tutti ≤ 0 , i costi ridotti degli archi appartenenti
u
all'insieme ω tutti ≥ 0 .
l
c
^13 = c 13 − π 1 + π 3 = 4 − 8 + 6 = 2
Abbiamo un valore positivo, l'arco fa parte di ω , quindi non ci si ferma e l'arco (1, 3) entra in base .
u
Disegniamo il grafo :
Attento
⎪
Quando fai il calcolo del ciclo devi contare solo gli archi in base e quello che sta entranto in base. Per esempio ora nel ciclo non è da contare
l'arco (2, 4).
Il ciclo in questo caso è formato dagli archi (1, 3), (3, 2), (1, 2)
Come nel caso non capacitivo, abbiamo bisogno di dare un senso al ciclo.
Qui la regola diventa che :
Se l'arco che deve entrare in base fa parte di ω , allora il senso del ciclo si assegna concorde all'arco entrante.
l
Se l'arco che deve entrare in base fa parte di ω , allora il senso del ciclo si assegna discorde all'arco entrante.
Quindi avremo :
Se sottraiamo Δ faremo ≥
Se sommiamo Δ faremo ≤
Cosi da avere :
lowerBound
upperBound
u
⎧3 − Δ ≥ 0
⎨2 + Δ ≤ 6
⎩
2 − Δ ≥ 1
Perfetto esce dalla base questo arco, ma in quale dei due insiemi ω ω va?
⎨Δ ≤ 4
⎩
Δ ≤ 1
Di questi tre si prende il valore più alto possibile, cioè Δ = 1 che corrisponde all'arco che aveva 2 − Δ, il (3, 2), che quindi uscirà dalla base.
Dato che Δ = 1 → 2 − Δ = 2 − 1 = 1 che è proprio il valore di lower bound di quell'arco. Essendo che l'arco ora ha preso come flusso il valore del
suo lower bound, lo inseriamo nell'insieme ω .
Se fosse stato uguale al valore del suo upper bound , lo avremmo inserito in ω .