6.14 Esercizio. Si risolva il seguente problema (sfruttando il problema duale) max
n j=1c
jx
j i j=1x
j≤ b
ii := 1, . . . , n
x
j≥ 0 j := 1, . . . , n
nell’ipotesi 0 ≤ b
1≤ b
2≤ . . . ≤ b
ne 0 ≤ c
n≤ c
n−1≤ . . . ≤ c
1. Si risolva nuovamente rimuovendo l’ipotesi.
Soluzione. Nell’ipotesi 0 ≤ b
1≤ b
2≤ . . . ≤ b
ne 0 ≤ c
n≤ c
n−1≤ . . . ≤ c
1il problema si pu` o risolvere agevolmente con un ragionamento diretto. Dato l’ordine dei coefficienti della funzione obiettivo ` e pi` u conveniente assegnare il massimo valore possibile a x
1. Dato l’ordine dei coefficienti b
itale valore `e b
1. Ora si procede ricorsivamente assegnando x
i:= b
i− b
i−1per i := 2, . . . , n. L’ottimalit` a di questa soluzione pu` o essere provata costruendo il duale
min
n i=1b
iu
i n i=ju
i≥ c
jj := 1, . . . , n
u
i≥ 0 i := 1, . . . , n
e notando che la soluzione u
i:= c
i− c
i+1, per i := 1, . . . , n e ponendo per convenzione c
n+1:= 0, `e ammissibile nel duale e che i valori dei due obiettivi sono uguali (si ponga per convenzione b
0:= 0).
n i=1c
ix
i=
n i=1c
i(b
i− b
i−1) =
n i=1c
ib
i−
n+1
i=2
c
ib
i−1=
n i=1c
ib
i−
n i=1c
i+1b
i=
n i=1(c
i− c
i+1) b
i=
n i=1u
ib
iSe si rimuove l’ipotesi sull’ordinamento dei coefficienti, si pu` o notare come la relazione b
i+1< b
iimplichi la ridondanza del vincolo i-mo. Infatti
i j=1x
j≤
i+1 j=1x
j≤ b
i+1< b
iQuindi si pu` o eliminare tale vincolo e la variabile duale corrispondente. Analogamente nel problema duale la relazione c
j< c
j+1implica la ridondanza del vincolo j-mo del duale.
Infatti
n i=ju
i≥
n i=j+1u
i≥ c
j+1> c
je quindi si pu` o eliminare tale vincolo insieme alla corrispondente variabile primale. L’eli- minazione della variabile i-ma nel duale comporta la presenza di due vincoli uno dei quali diventa ridondante. Infatti, una volta posto ad esempio u
i:= 0 si ha
n i=j+1u
i≥ c
j;
n i=j+1u
i≥ c
j+11
Eliminato il vincolo duale corrispondente al minore dei due valori c
je c
j+1si elimina la corrispondente variabile primale. Si procede allora ricorsivamente eliminando a turno nel problema duale e in quello duale variabili e vincoli fino a creare un ciclo di variabili eliminate.
Esempio:
max 3 x
1+ 2 x
2+ 5 x
3+ 3 x
4x
1≤ 3
x
1+ x
2≤ 4
x
1+ x
2+ x
3≤ 5 x
1+ x
2+ x
3+ x
4≤ 4 x
i≥ 0
min 3 u
1+ 4 u
2+ 5 u
3+ 4 u
4u
1+ u
2+ u
3+ u
4≥ 3
u
2+ u
3+ u
4≥ 2 u
3+ u
4≥ 5 u
4≥ 3 u
i≥ 0
Scandendo i coefficienti b
isi vede che il terzo vincolo primale `e ridondante. Allora u
3:= 0.
Con questo assegnamento il quarto vincolo duale diventa ridondante e quindi x
4:= 0.
Questo assegnamento non provoca un ulteriore eliminazione perch´ e il terzo vincolo `e gi` a stato eliminato. Il problema `e quindi diventato
max 3 x
1+ 2 x
2+ 5 x
3x
1≤ 3
x
1+ x
2≤ 4 x
1+ x
2+ x
3≤ 4 x
i≥ 0
min 3 u
1+ 4 u
2+ 4 u
4u
1+ u
2+ u
4≥ 3 u
2+ u
4≥ 2 u
4≥ 5 u
i≥ 0
Notiamo ora che il primo e secondo vincolo duale sono ridondanti, quindi x
1:= 0 e x
2:= 0.
Con questo assegnamento diventano ridondanti il primo e il secondo vincolo primale, da cui u
1:= 0 e u
2:= 0. la soluzione `e allora x
3:= 4 e ui
4:= 5.
Il problema pu` o allora essere risolto con una scansione dei coefficienti ed eliminazione di vincoli e variabili nei due problemi. Alla fine di questa operazione il nuovo problema rispetta l’ipotesi.
Basandosi su questa struttura `e facile ricavare un metodo diretto che con complessit` a O(n) trova la soluzione:
begin ˆ c := c
nfor j := n − 1 to 1 do if c
j< ˆ c
then x
j:= 0 else ˆ c := c
jˆb := b
nfor j := n − 1 to 1 do if b
j> ˆ c
then b
j:= ˆb else ˆb := b
jfor j := 1 to n do if x
j= 0
then x
j:= b
j−
i<j