Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Capitolo 1
Introduzione
1
Tabella 1.1:
Farina Acqua Medicinali
TIPO I 10 10 30
TIPO II 30 20 10
TIPO III 20 40 5
Tabella 1.2:
TIPO I 14
TIPO II 5
TIPO III 4
Tabella 1.3:
farina 5100
acqua 8000
medicinali 1805
2
da fare. Potrei realizzare solo pacchi del tipo I. In tal caso ne potrei rea-
lizzare al massimo 60 per il limite di disponibilità sui medicinali. L’utilità
complessiva risulterebbe pari a 60*14=840. Potrei realizzare solo pacchi
del tipo II. In tal caso ne potrei realizzare al massimo 170 per il limite di
disponibilità sui sacchetti di farina. L’utilità complessiva risulterebbe pari
a 170*5=850. Infine, potrei realizzare solo pacchi del tipo III. In tal caso
ne potrei realizzare al massimo 200 per il limite di disponibilità sulle bot-
tiglie d’acqua. L’utilità complessiva risulterebbe pari a 200*4=800. Delle
tre possibili soluzioni la migliore è la seconda. Ma queste tre decisioni non
coprono tutti i casi possibili. Infatti, potrei scegliere di fare un po’ di pacchi
di ciascun tipo. Quindi, a differenza dell’esempio iniziale non è per nulla
immediato scegliere la decisione migliore.
Un modo per risolvere problemi di decisione complessi é quello di rifor-
mularli come problemi di Programmazione Matematica ed utilizzare quindi
delle tecniche di risoluzione apposite per questi problemi. Come vedremo
questo sará proprio l’approccio che potremo utilizzare per il nostro esempio.
Nei problemi di Programmazione Matematica sono date n variabili di deci-
sione x1 , . . . , xn , l’obiettivo é rappresentato da una funzione f (x1 , . . . , xn )
delle n variabili, detta appunto funzione obiettivo, mentre i vincoli sono
rappresentati da disequazioni o equazioni di questo tipo:
gi (x1 , . . . , xn ) ≤ (o ≥ o =) 0.
Quindi la generica forma di un problema di Programmazione Matematica
é la seguente:
max (o min) f (x1 , . . . , xn )
gi (x1 , . . . , xn ) ≤ 0 i ∈ I1
gi (x1 , . . . , xn ) ≥ 0 i ∈ I2
gi (x1 , . . . , xn ) = 0 i ∈ I3
L’insieme dei punti che soddisfano tutti i vincoli viene chiamato regione
ammissibile del problema e nel seguito verrá indicato con Sa . Abbiamo
quindi:
Sa = { (x1 , . . . , xn ) : gi (x1 , . . . , xn ) ≤ 0, ∀ i ∈ I1
gi (x1 , . . . , xn ) ≥ 0, ∀ i ∈ I2
gi (x1 , . . . , xn ) = 0, ∀ i ∈ I3 }
Risolvere il problema di Programmazione Matematica vuol dire determinare
un punto (x∗1 , . . . , x∗n ) ∈ Sa , che verrá detto soluzione ottima del problema,
tale che
f (x∗1 , . . . , x∗n ) ≤ f (x1 , . . . , xn ) ∀ (x1 , . . . , xn ) ∈ Sa ,
3
se il problema é di minimo, oppure
4
Capitolo 2
La Programmazione
Lineare
5
Proporzionalitá Il contributo di ogni variabile xj nell’obiettivo e nei vin-
coli é direttamente proporzionale al valore della variabile. Infatti,
nell’obiettivo il contributo é pari a cj xj mentre nei vincoli é aij xj .
Additivitá I contributi delle diverse variabili si sommano tra loro sia nel-
l’obiettivo che nei vincoli (si vedano le sommatorie che definiscono
obiettivo e vincoli).
Continuitá Le variabili xj possono assumere tutti i valori reali.
I programmi lineari sono molto importanti per almeno due ragioni:
1. molti problemi reali (tra cui, come vedremo fra breve, quello intro-
dotto in precedenza) hanno come modello matematico proprio un
programma lineare;
2. sono più semplici da risolvere rispetto ad altri modelli dove compaiono
termini non lineari. Per i programmi lineari esistono delle procedu-
re molto efficienti di risoluzione (come l’algoritmo del simplesso che
descriveremo in seguito).
Piú avanti vedremo un’altra importante classe di problemi, quelli di Pro-
grammazione Lineare Intera, che si differenziano da quelli di PL solo per
la rimozione della proprietá di continuitá (in essi le variabili potranno
assumere solo valori interi).
6
e delle quali si ha una disponibilità limitata.
Vediamo allora di procedere alla formulazione di un modello matematico
per questo problema. Indichiamo con:
x1 il numero di pacchi di tipo I da realizzare.
x2 il numero di pacchi di tipo II da realizzare.
x3 il numero di pacchi di tipo III da realizzare.
Queste sono le tre variabili del problema. Ora dobbiamo tradurre i vincoli e
l’obiettivo in formule matematiche. Abbiamo un vincolo sulla disponibilità
di sacchetti di farina. Come si può tradurre in linguaggio matematico? Un
pacco di tipo I contiene 10 sacchetti di farina. Quindi x1 pacchi di tipo I
richiedono
10x1
sacchetti di farina. Analogamente, un pacco di tipo II contiene 30 sacchetti
di farina e quindi x2 pacchi richiedono
30x2
20x3
7
Per essere precisi a questi tre vincoli ne dobbiamo aggiungere altri tre che
non abbiamo specificato in precedenza perché banali: le quantità di pacchi
di ciascun tipo non possono essere negative (per esempio, non ha senso
parlare di -5 pacchi di tipo I). Mentre in una descrizione a voce del problema
questo tipo di vincoli è del tutto scontato, da un punto di vista matematico
non lo é e tali vincoli sono essenziali nella definizione del modello. In
linguaggio matematico essi si esprimono semplicemente in questo modo:
x1 ≥ 0 x2 ≥ 0 x3 ≥ 0.
L’insieme dei valori che si possono assegnare a x1 , x2 , x3 senza violare i
vincoli introdotti rappresenta l’insieme ammissibile Sa del problema. Ad
esempio, x1 = 20, x2 = 20, x3 = 30 è una soluzione ammissibile, mentre
x1 = 50, x2 = 60, x3 = 40 non lo è (viola il vincolo sulla disponibilità di
medicinali) e non lo è neppure x1 = −2, x2 = 20, x3 = 40 (viola il vincolo
di non negatività del numero di pacchi di tipo I).
Resta da definire l’obiettivo del problema. Un pacco di tipo I ha utilità
pari a 14, quindi x1 pacchi hanno utilità pari a
14x1 .
In modo del tutto analogo si vede che x2 pacchi di tipo II hanno utilità pari
a
5x2
e x3 pacchi di tipo III hanno utilità pari a
4x3 .
Quindi, sommando le utilità di ciascun tipo di pacco si ottiene l’utilità
complessiva pari a
14x1 + 5x2 + 4x3 .
Il nostro obiettivo è massimizzare tale valore.
Riassumendo, il modello matematico del nostro problema è il seguente:
massimizzare 14x1 + 5x2 + 4x3
tenuto conto che
10x1 + 30x2 + 20x3 ≤ 5100
10x1 + 20x2 + 40x3 ≤ 8000
30x1 + 10x2 + 5x3 ≤ 1805
x1 ≥ 0
x2 ≥ 0
x3 ≥ 0
8
Come si vede, abbiamo a che fare con un problema di PL. Per completezza
notiamo che ulteriori vincoli che si potrebbero introdurre sono quelli di
interezza delle variabili x1 , x2 , x3 : il numero di pacchi realizzati di ciascun
tipo deve essere un valore intero. In tal caso ci troveremmo di fronte ad
un problema di Programmazione Lineare Intera (si veda il capitolo 6). Qui
peró tralasceremo tali vincoli, ammettendo quindi anche la realizzazione di
un numero frazionario di pacchi di ciascun tipo.
x = (x1 x2 · · · xn );
Recuperando alcune cose di algebra lineare, ricordiamo che dati due vettori
della stessa dimensione n, indicati con p = (p1 · · · pn ) e q = (q1 · · · qn ),
9
il prodotto scalare tra questi vettori è definito come somma dei prodotti
delle singole componenti, ovvero:
n
X
pq = pj q j .
j=1
p = (p1 · · · pn )
ed un vettore q di dimensione m
q = (q1 · · · qm )
10
Il prodotto vettore-matrice è un vettore di dimensione n la cui componente
j è il prodotto scalare tra la j-esima colonna di A e il vettore q:
m
X
aij qi
i=1
max cx
a i x ≤ bi i = 1, . . . , m
x≥0
max cx
Ax ≤ b
x≥0
11
3. ogni vincolo di = può essere trasformato in due vincoli di ≤ nel modo
seguente
ai x = bi ⇒ ai x ≤ bi , −ai x ≤ −bi
x′j = −xj ≥ 0
min x1 + x2 + x3
x1 + 2x2 − x3 ≤ 3
x1 + 4x2 + 5x3 = 5
x1 − 2x2 + x3 ≥ 3
x1 ≥ 0
x2 ≤ 0
x3 libera in segno
Sa = {x ∈ Rn : ai x ≤ bi , i = 1, . . . , m, x ≥ 0}.
12
Definizione 2 Un insieme C si dice limitato se esiste un R > 0 tale che
∀x∈C: kxk ≤ R,
max x1 + x2
x1 ≤ −1
x1 + x2 ≤ 1
x1 , x2 ≥ 0
13
max x1 + x2
x1 + x2 ≤ 1
x1 , x2 ≥ 0
max x1 + x2
x1 − x2 ≤ 0
x1 , x2 ≥ 0
a i x1 ≤ b i i = 1, . . . , m x1 ≥ 0,
e
a i x2 ≤ b i i = 1, . . . , m x2 ≥ 0.
Quindi, per ogni λ ∈ (0, 1) e per ogni i ∈ {1, . . . , m} avremo:
e
λ x1 + (1 − λ) x2 ≥ 0,
|{z} |{z} | {z } |{z}
>0 ≥0 >0 ≥0
da cui
λx1 + (1 − λ)x2 ∈ Sa .
Ció equivale a dire che Sa é un insieme convesso.
14
In problemi con 2 variabili i vertici sono facilmente identificabili, coinciden-
do con la usuale definizione di vertice di una figura piana.
max x1 + x2
x1 + x2 ≤ 1
−2x1 − 2x2 ≤ −2
x1 , x2 ≥ 0
∀ x0 ∈ S a ∀ λ ≥ 0 : x0 + λr ∈ Sa ,
tali che
1 1
r= r1 + r2 .
2 2
Ovviamente i politopi non hanno alcun raggio. Infatti l’esistenza di un
raggio implica che Sa contenga almeno una semiretta, che é un insieme
illimitato, mentre i politopi sono, per definizione, insiemi limitati. Anche
in questo caso in problemi con 2 sole variabili é facile riconoscere i raggi
estremi, che coincidono con le semirette che delimitano la figura piana.
15
Esempio 3 Si verifichi che dato il problema
max x1 + x2
x1 − x2 ≤ 0
x1 , x2 ≥ 0
i vettori
(1/2, 1) (0, 1) (1, 1)
sono tutti raggi di Sa ma solo gli ultimi due sono raggi estremi.
Come per i vertici, anche per i raggi estremi si puó dimostrare che il loro
numero é sempre finito.
Siamo ora pronti per enunciare un importante teorema che mostra che la
regione ammissibile Sa di un problema di PL in forma canonica è com-
pletamente caratterizzata dai suoi vertici e raggi estremi , il teorema di
rappresentazione per Sa .
x ∈ Sa
se e solo se
k
X
∃ λ1 , . . . , λk ≥ 0, λi = 1, ∃ µ1 , . . . , µh ≥ 0
i=1
tali che
k
X h
X
x= λ i vi + µj rj .
i=1 j=1
Il teorema ci dice che tutti e soli i punti di Sa sono ottenibili come somma
di una combinazione convessa (combinazione lineare con coefficienti non
negativi e la cui somma è pari a 1) dei vertici di Sa e di una combinazione
lineare con coefficienti non negativi dei raggi estremi di Sa .
16
2.4 L’insieme delle soluzioni ottime Sott
Fino a questo momento ci siamo limitati a considerare la regione ammis-
sibile Sa di un problema di PL. Ricordiamo peró che il nostro scopo é
determinare una soluzione ottima del problema di PL. Quindi dobbiamo
trovare almeno un punto all’interno dell’insieme:
Sott = {x∗ ∈ Sa : cx∗ ≥ cx ∀ x ∈ Sa },
detto insieme delle soluzioni ottime del problema. Notiamo immediata-
mente che Sott ⊆ Sa , il che banalmente implica che se Sa = ∅, allora anche
Sott = ∅. Inoltre, si dimostra la seguente osservazione.
Osservazione 5 Se Sott é un insieme finito e non vuoto, Sott contiene un
solo punto.
Dimostrazione Ragioniamo per assurdo. Supponiamo che Sott sia un
insieme finito e contenga piú di un punto. Siano x1 , x2 ∈ Sott , x1 6= x2 ,
due punti distinti di Sott . Si dovrá avere cx1 = cx2 . Per la convessitá di
Sa si ha che tutti i punti:
λx1 + (1 − λ)x2 λ ∈ (0, 1),
(i punti lungo il segmento che congiunge x1 e x2 ), appartengono a Sa .
Inoltre, la linearitá della funzione obiettivo implica:
c[λx1 +(1−λ)x2 ] = λcx1 +(1−λ)cx2 = λcx1 +(1−λ)cx1 = cx1 ∀ λ ∈ (0, 1).
Ma allora tutto il segmento che congiunge x1 e x2 é contenuto in Sott .
Essendo tale insieme costituito da un numero infinito di punti, questo con-
traddice l’ipotesi di finitezza dell’insieme Sott .
17
Per prima cosa disegniamo la regione ammissibile Sa . Poi prendiamo la
funzione obiettivo e poniamola uguale a 0, cioé consideriamo cx = 0 nel
caso generale e x1 + 2x2 = 0 nell’esempio. Questa é una retta che passa per
l’origine che contiene tutti i punti in R2 con valore della funzione obiettivo
pari a 0. Ora voglio individuare qual é la direzione di crescita del fascio di
rette
cx = k, k ∈ R
parallele alla retta cx = 0 passante per l’origine. Nell’esempio avremo
x1 + 2x2 = k, k ∈ R
fascio di rette parallele a x1 + 2x2 = 0. Possiamo individuare la direzione
di crescita per esempio tracciando la retta cx = 1 (quindi x1 + 2x2 = 1
nel nostro esempio) e la direzione di crescita sará quella che va dalla retta
cx = 0 verso la retta cx = 1. In Figura 2.1 la direzione di crescita per il
nostro esempio é indicata con una freccia sulla retta x1 + 2x2 = 0. A questo
@ B (0,1)
@
@
@
@
@
@
@
HH @
HH @
HH Sa @
HH @
HH @ A (1,0)
HH @
O HH @
HH @
HH
HH
H
x1+2x2=0
Figura 2.1:
18
Caso 1 Muovendomi dalla retta cx = 0 verso la direzione di crescita ho
almeno una retta del fascio con intersezione non vuota con Sa . In tal
caso abbiamo due sottocasi possibili.
Caso 1.1 Esiste un valore k tale che la retta cx = k ha intersezione
non vuota con Sa mentre tutte le retta cx = k per k > k hanno
intersezione vuota con Sa . In tal caso k é il valore ottimo del
problema e l’intersezione della retta cx = k con Sa costituisce
l’insieme Sott .
Caso 1.2 Esiste un K ≥ 0 tale che per ogni k ≥ K la retta cx = k
ha intersezione non vuota con Sa . In tal caso ci troviamo nella
situazione in cui Sott = ∅ in quanto il problema ha obiettivo
illimitato.
Caso 2 Muovendomi dalla retta cx = 0 verso la direzione di crescita non
ho alcuna retta del fascio con intersezione non vuota con Sa . In tal
caso mi muovo nella direzione di decrescita e mi arresto con la prima
retta cx = k (k < 0) che ha intersezione non vuota con Sa (quindi
per ogni k > k si ha che la retta cx = k ha intersezione vuota con
Sa ). Il valore k é il valore ottimo del problema e l’intersezione della
retta cx = k con Sa rappresenta l’insieme Sott .
Nel nostro esempio si puó vedere che ci si trova nel Sottocaso 1.1 con k = 2
e Sott ristretto al solo punto B di coordinate (0, 1).
19
dal fatto che é un sottinsieme di Sa che a sua volta é un politopo e
quindi é limitato.
Caso 3 Sa 6= ∅ e poliedro illimitato. Sono possibili quattro sottocasi.
Caso 3.1 Sott = ∅ in quanto l’obiettivo é illimitato, ovvero esiste
una sequenza infinita di punti {xk } di Sa lungo cui la funzione
obiettivo cresce a +∞. Formalmente:
max x1 + x2
x1 + x2 ≤ 1
x1 , x2 ≥ 0
max x1 + x2
−x1 + x2 ≤ 0
x1 − x2 ≤ 1
x2 ≥ 1
x1 , x2 ≥ 0
max −x1
−x1 + x2 ≤ 0
x1 − x2 ≤ 1
x2 ≥ 1
x1 , x2 ≥ 0
max −x2
−x1 + x2 ≤ 0
x1 − x2 ≤ 1
x2 ≥ 1
x1 , x2 ≥ 0
20
max x1 − x2
−x1 + x2 ≤ 0
x1 − x2 ≤ 1
x2 ≥ 1
x1 , x2 ≥ 0
Si noti che la dimostrazione del lemma ci dice anche che qualora esista
un raggio estremo r di Sa tale che cr > 0, allora il problema ha obietti-
vo illimitato. Si puó dimostrare anche il viceversa, cioé se il problema ha
obiettivo illimitato, allora esiste sicuramente un raggio estremo r di Sa tale
che cr > 0. Siamo ora pronti a dimostrare il Teorema Fondamentale della
PL.
21
Teorema 3 Dato un problema di PL in forma canonica, se Sott 6= ∅, allora
Sott contiene almeno un vertice di Sa .
Dimostrazione Indichiamo con v1 , . . . , vk i vertici di Sa e, nel caso in cui
Sa sia un poliedro illimitato, indichiamo con r1 , . . . , rh i raggi estremi di
Sa . Se Sott 6= ∅, sia x∗ ∈ Sott .
Utilizzeremo una dimostrazione per assurdo. Per assurdo supponiamo che
v1 , . . . , vk 6∈ Sott
cioè supponiamo che nessun vertice di Sa appartenga a Sott . In particolare
avremo
cvi < cx∗ i = 1, . . . , k (2.2)
In base al Teorema 2, poiché x∗ ∈ Sa avremo che
k
X
∃ λ∗1 , . . . , λ∗k ≥ 0, λ∗i = 1, ∃ µ∗1 , . . . , µ∗h ≥ 0 (2.3)
i=1
tali che
k
X h
X
x∗ = λ∗i vi + µ∗j rj .
i=1 j=1
Quindi avremo
k
X h
X
cx∗ = c λ∗i vi + µ∗j rj
i=1 j=1
da cui
k
X
cx∗ ≤ λ∗i (cvi ).
i=1
22
Ma ora possiamo sfruttare (2.2):
k
X k
X
cx∗ ≤ λ∗i (cvi ) < λ∗i (cx∗ ).
| {z }
i=1 i=1
<cx∗
(si noti che lo strettamente minore vale perché almeno uno dei λ∗i è stret-
tamente positivo in quanto, in base a (2.3), la loro somma deve essere pari
a 1). Poiché cx∗ non dipende dall’indice i della sommatoria, lo possiamo
portare fuori dalla stessa e quindi
k
X
cx∗ < (cx∗ ) λ∗i .
i=1
Pk
Ma ora in base a (2.3) abbiamo che i=1 λ∗i = 1, da cui
cx∗ < cx∗
il che è assurdo.
23
a i x = bi i = 1, . . . , m
x≥0
max cx
Ax = b
x≥0
max cx
ai x ≤ bi i = 1, . . . , m
x≥0
a i x + y i = bi , yi ≥ 0.
max cx
a i x + y i = bi i = 1, . . . , m
x≥0
yi ≥ 0 i = 1, . . . , m
24
Riguardo la matrice A ∈ Rm×n con i-esima riga ai , nel seguito faremo
sempre la seguente ipotesi: la matrice A ha rango pari a m, il numero
delle sue righe.
Si noti che deve necessariamente essere m ≤ n (per n < m il rango di A
potrebbe essere al piú n e non potrebbe essere pari a m). Si puó dimostrare
che anche questa non é una condizione restrittiva e che ci si puó sempre
ricondurre ad essa. Inoltre la condizione è equivalente alle seguenti:
• non ci sono righe di A ottenibili come combinazioni lineari di altre
righe di A;
• esistono m colonne della matrice A che formano una matrice quadrata
invertibile.
NB: Si puó dimostrare che anche questa non é una condizione restrittiva e
che ci si puó sempre ricondurre ad essa. La seguente matrice
1 2 1 3
A1 = 2 1 3 4
3 0 5 5
ha rango < m = 3, in quanto la terza riga può essere ottenuta come combi-
nazione lineare della prima e della seconda rispettivamente con coefficienti
pari a −1 e +2. Invece la matrice
· ¸
1 2 2 1 −1
A2 =
3 7 1 3 1
ha rango pari a m = 2 (le prime due colonne, ad esempio, formano una
matrice invertibile).
25
Esempio 4 Sia dato il seguente problema di PL in forma standard:
max 3x1 + 4x2 + 2x3 + 2x4 + x5
x1 + 2x2 + 2x3 + x4 − x5 = 2
x1 + 2x2 + x3 + 4x4 − 2x5 = 2
x1, x2 , x3 , x4 , x5 ≥ 0
In questo caso si hanno due vincoli e quindi m = 2. Se prendiamo B1 =
{x1 , x2 } vediamo che B1 non é una base. Si ha infatti:
· ¸
1 2
AB 1 =
1 2
che non é invertibile. Invece, B2 = {x1 , x3 } é una base in quanto:
· ¸
1 2
AB 2 =
1 1
é invertibile. Allo stesso modo si verifichi che B3 = {x3 , x4 } e B4 =
{x4 , x5 } sono basi.
Introduciamo ora il concetto di soluzione di base. Data una base B, indi-
chiamo con
• xB ∈ Rm il vettore delle variabili in base;
• xN ∈ Rn−m il vettore delle variabili fuori base;
• cB ∈ Rm il vettore dei costi relativi alle variabili in base;
• cN ∈ Rn−m il vettore dei costi relativi alle variabili fuori base;
• AN ∈ Rm×(n−m) la matrice ottenuta da A considerando le sole
colonne relative alle variabili fuori base.
Possiamo ora riscrivere il problema di PL in forma standard nella seguente
forma equivalente:
max c B xB + c N xN
AB x B + A N xN = b
xB , xN ≥ 0
e quindi anche in questo modo:
max c B xB + c N xN
AB x B = b − AN x N
xB , xN ≥ 0
26
Moltiplichiamo ora i vincoli per A−1
B . Si ottiene:
max c B xB + c N xN
xB = A−1 −1
B b − AB AN xN
xB , xN ≥ 0
max cB A−1 −1
B b + (cN − cB AB AN )xN
xB = A−1 −1
B b − AB AN xN (2.5)
xB , xN ≥ 0
xB = A−1
B b xN = 0.
cB2 = (3 2) cN2 = (4 2 1)
b = (2 2)
da cui si ottiene la seguente riformulazione rispetto alla base B2 :
27
Ponendo a 0 le variabili fuori base si ottiene la seguente soluzione di base
associata a B2 :
x1 = 2 x3 = 0 x2 = x4 = x5 = 0.
La soluzione di base é ammissibile (tutte le variabili hanno valore non ne-
gativo) e degenere (la variabile in base x3 ha valore nullo). Il valore dell’o-
biettivo in corrispondenza di tale soluzione di base é 6 (lo si vede ponendo
a 0 le variabili fuori base nell’obiettivo).
In modo analogo si dimostri che la soluzione di base associata a B3 =
{x3 , x4 } é:
x3 = 6/7 x4 = 2/7 x1 = x2 = x5 = 0,
che é ammissiibile e non degenere e che la soluzione di base associata a
B4 = {x4 , x5 } é:
x4 = −1 x5 = −3 x1 = x2 = x3 = 0,
28
Nell’esempio le basi B3 e B4 , che differiscono per una sola variabile, sono
adiacenti. Il concetto di adiacenza si estende anche alle soluzioni di base.
Definizione 11 Due soluzioni di base distinte si definiscono adiacenti se
esistono due basi B ′ e B ′′ che le rappresentano e che sono tra loro adiacenti.
Si noti che due basi adiacenti non corrispondono necessariamente a due
soluzioni di base adiacenti. Esse infatti possono corrispondere alla stessa
soluzione di base come accade, ad esempio, con le basi B2 e B5 .
29
Supponiamo ora di voler passare dalla base B alla base adiacente B ′ otte-
nuta rimuovendo da B la variabile xik , 1 ≤ k ≤ m, e sostituendola con la
variabile fuori base xim+h , 1 ≤ h ≤ n − m, ovvero:
αkh 6= 0.
30
−1
rispetto a una base B per poter ottenere la matrice AB ) é necessario
mantenere un ordine tra le variabili in una base. Quindi se nella base B ′
la variabile xim+h sostituisce la variabile xik a cui corrisponde la k-esima
equazione della riformulazione rispetto a B, nella riformulazione rispetto a
B ′ l’equazione relativa alla variabile xim+h dovrá ancora essere la k-esima,
mentre la posizione delle equazioni relative a tutte le altre variabili deve
rimanere invariata rispetto alla precedente riformulazione.
Supponiamo ora di voler passare alla riformulazione rispetto alla base adia-
cente B6 = {x1 , x5 } ottenuta rimuovendo da B2 la variabile x3 e sostituen-
dola con x5 . Per prima cosa notiamo che il coefficiente di x5 nell’equazione:
x3 = 0 + 3x4 − x5
x5 = 0 − x3 + 3x4 .
e nell’obiettivo:
6 − 2x2 − 13x4 + 8(0 − x3 + 3x4 ).
Svolgendo i calcoli la riformulazione rispetto a B6 sará la seguente:
31
Si noti che la posizione dell’equazione relativa a x5 nelle nuova riformulazio-
ne é la stessa dell’equazione relativa a x3 nella precedente riformulazione,
mentre la posizione delle equazioni relative alle altri variabili (in questo
caso la sola x1 ) rimane invariata.
Una volta chiarita l’operazione di cardine siamo pronti ad addentrarci nel
prossimo capitolo nella descrizione del metodo del simplesso per risolvere
problemi di PL.
32
Capitolo 3
Verifica di ottimalitá
La prima domanda che ci poniamo é la seguente: quando possiamo dire
che la soluzione di base ammissibile associata a B é una soluzione ottima
del nostro problema? A questo proposito una particolare rilevanza han-
no i coefficienti delle variabili fuori base nell’obiettivo della riformulazione
(2.6). Questi vengono detti anche coefficienti di costo ridotto delle variabili
fuori base e sono interpretabili come indicazione della variazione dell’obiet-
33
tivo in corrispondenza dell’incremento di un’unitá della variabile fuori ba-
se corrispondente. Infatti, se consideriamo l’obiettivo della riformulazione
(2.6):
n−m
X
γ0 + γj xim+j ,
j=1
34
x3 = 1 − x2
x4 = −x1
x1 , x2 , x3 , x4 ≥ 0
x3 = 1 x4 = 0 x1 = x2 = 0.
max −x4
x3 = 1 − x2
x1 = −x4
x1 , x2 , x3 , x4 ≥ 0
Si puó comunque dimostrare che data una soluzione di base ottima esiste
sempre almeno una base corrispondente per la quale la condizione (3.1) é
soddisfatta. Nell’esempio abbiamo visto come la stessa soluzione di base sia
rappresentata sia dalla base {x3 , x4 } che dalla base {x1 , x3 }. La prima base
non soddisfa la condizione (3.1), ma questa é soddisfatta dalla seconda base.
Torneremo in seguito su un’altra questione e cioé quando possiamo dire che
il problema ammette un’unica soluzione ottima o piú soluzioni ottime.
Verifica di illimitatezza
Supponiamo ora che la condizione di ottimalitá (3.1) non sia soddisfatta.
Un’altra domanda che possiamo porci é la seguente: quando il problema ha
valore dell’obiettivo illimitato? Una condizione sufficiente perché questo si
verifichi é la seguente:
35
le variabili fuori base tranne la variabile xim+h . Ció che rimane é:
max γ0 + γh xim+h
xi1 = β1 + α1h xim+h
···
xim = βm + αmh xim+h
x1 , . . . , xn ≥ 0
Cosa succede se faccio crescere il valore della variabile xim+h ? Si ha che per
ogni r ∈ {1, . . . , m}:
quindi per ogni possibile valore non negativo di xim+h le variabili in base
continuano ad avere valore non negativo e quindi rimaniamo all’interno di
Sa . Ma vediamo ora cosa succede all’obiettivo:
γ0 + γh xim+h →
|{z} +∞,
|{z}
>0 xim+h →+∞
max 2 + x3 − x4
x1 = 2 + x3 + x4
x2 = 1 + 2x3 + x4
x1 , x2 , x3 , x4 ≥ 0
max 2 + x3
x1 = 2 + x3
x2 = 1 + 2x3
x1 , x2 , x3 , x4 ≥ 0
36
da cui si nota che facendo crescere x3 i valori di x1 e x2 continuano a man-
tenersi positivi (e quindi non si esce da Sa ), mentre il valore dell’obiettivo
cresce a +∞.
tenendo comunque presente che questa non é l’unica regola possibile. Nel
caso il massimo sia raggiunto da piú variabili adottiamo (come pura conven-
zione) la regola di selezionare la variabile con indice piú piccolo. Vediamo
ora un esempio.
37
In questo caso tutte le variabili fuori base hanno coefficiente di costo ridotto
positivo. Tra queste considero quelle il cui coefficiente di costo ridotto é
massimo (la x3 e la x4 ). Tra le due scelgo quella con indice minore e quindi
la x3 . Quindi scegliamo la variabile fuori base x3 come nuova variabile da
far entrare in base.
38
Nel caso il minimo sia raggiunto da piú variabili la scelta ricade, per con-
venzione, su quella con indice piú piccolo. La variabile xik sará quella che
uscirá dalla base. Va ribadito come questa scelta garantisca che la nuova ba-
se B ′ ottenuta scambiando xik con xim+h sia ancora ammissibile. Vediamo
ora quale sará la variabile uscente dalla base nell’esempio precedente.
Esempio 9 Ricordiamo la riformulazione rispetto alla base {x1 , x2 } del
problema di PL dell’esempio:
In precedenza abbiamo visto che la regola di scelta della variabile fuori base
che dovrá entrare in base ci porta a scegliere la x3 . Quale variabile dovrá
uscire dalla base? Sia la x1 che la x2 sono candidate (per entrambe il
coefficiente di x3 nelle rispettive equazioni é negativo). Andiamo ora a
prendere i rapporti, cambiati di segno, tra i termini noti delle equazioni e i
coefficienti della x3 . Abbiamo:
1 2
x1 → − =1 x2 → − = 2.
−1 −1
Il minimo dei rapporti (pari a 1) é raggiunto in corrispondenza della va-
riabile x1 e quindi questa sará la variabile che dovrá uscire dalla base. A
conferma di ció notiamo che fissando a 0 tutte le variabili fuori base tranne
la x3 si ottiene:
max 2 + 2x3
x1 = 1 − x3
x2 = 2 − x3
x1 , x2 , x3 , x4 , x5 ≥ 0
e si puó vedere che per mantenersi in Sa (cioé per mantenere non negative
le variabili in base x1 e x2 ) possiamo far crescere x3 al massimo fino al
valore 1. In corrispondenza di tale valore si annulla la variabile x1 e tale
variabile sará quella che dovrá uscire di base.
A questo punto, una volta selezionata la variabile entrante in base (la xim+h )
e quella uscente di base (la xik ) con le regole viste, non resta che compiere
l’operazione di cardine nel modo giá descritto in precedenza. Vediamo di
illustrare tale operazione per il nostro esempio.
39
Esempio 10 Nell’esempio x3 deve entrare in base e deve uscire x1 . L’o-
perazione di cardine porta alla seguente riformulazione rispetto alla nuova
base {x2 , x3 }:
40
Per prima cosa va puntualizzato che, anche se ampiamente utilizzato, il
metodo del simplesso non é l’unico metodo per risolvere problemi di PL.
Qui ci limitiamo a citare altri metodi di risoluzione per i problemi di PL,
gli algoritmi del punto interno.
Notiamo poi, come giá fatto in precedenza, che abbiamo bisogno di partire
con una base ammissibile B0 . Vedremo in seguito un metodo (il metodo
due fasi) che ci permetterá di stabilire se esiste una base ammissibile per il
problema e, nel caso esista, come ottenerla.
41
Dimostrazione Come abbiamo visto nel caso non degenere ad ogni ite-
razione la nuova soluzione di base ammissibile ha un valore strettamente
migliore rispetto alla precedente e quindi é diversa da tutte quelle che la
hanno preceduta, cioé tutte le soluzioni di base ammissibili associate alle
basi B0 , B1 , B2 , . . . sono distinte tra loro. Essendo il numero di soluzioni
di base ammissibili finito (si ricordi che queste coincidono con i vertici che
sono in numero finito), il metodo dovrá arrestarsi dopo un numero finito
di iterazioni o restituendo una soluzione ottima oppure stabilendo che il
problema ha obiettivo illimitato.
42
possibili che ci apprestiamo a descrivere. Prima peró riscriviamo la riformu-
lazione rispetto alla base B tenendo a 0 tutte le variabili fuori base tranne
la xim+h con γh = 0. Avremo:
max γ0
xi1 = β1 + α1h xim+h
··· (3.7)
xim = βm + αmh xim+h
x1 , . . . , xn ≥ 0
Vediamo ora quali sono i casi possibili.
Caso 1 Se esiste h tale che γh = 0 e
αrh ≥ 0 r = 1, . . . , m,
allora esiste certamente un insieme illimitato di soluzioni ottime. In-
fatti, se in (3.7) facciamo crescere all’infinito xim+h , vediamo che il
valore dell’obiettivo resta quello ottimo γ0 , mentre le variabili xir
continuano a mantenersi non negative e quindi non si esce da Sa .
Caso 2 Se esiste h tale che γh = 0 e
∀ r : αrh < 0 si ha che βr > 0,
allora esiste certamente un insieme limitato di soluzioni ottime. In-
fatti, in (3.7) possiamo far crescere xim+h fino al valore positivo
½ ¾
βk βr
− = min −
αkh r : αrh <0 αrh
mantenendo il valore dell’obiettivo pari a quello ottimo γ0 . Quindi,
un’operazione di cardine che scambi la variabile xik con la variabile
xim+h conduce in questo caso ad una nuova soluzione di base ammis-
sibile ed anch’essa ottima. Risulteranno ottimi anche tutti i punti
lungo il segmento che congiunge le due soluzioni di base ammissibili
(o vertici) ottime.
Caso 3 Se per ogni h tale che γh = 0 si ha che:
∃ r : αrh < 0 e βr = 0,
allora non possiamo dire se esiste un’unica soluzione ottima o se vi
sono soluzioni ottime multiple. In questo caso infatti, per poter re-
stare in Sa in (3.7) possiamo solo mantenere il valore di xim+h pari a
0 e quindi rimanere nella soluzione di base corrente.
43
I diversi casi saranno ora illustrati attraverso alcuni esempi.
Esempio 11 Sia data la riformulazione rispetto alla base {x3 , x4 } di un
problema di PL.
max 4 − x1 − x2
x3 = 2 + x1 − x2
x4 = 1 − 2x2
x1 , x2 , x3 , x4 ≥ 0
max 4 − x2
x3 = 2 + x1 − x2
x4 = 1 − 2x2
x1 , x2 , x3 , x4 ≥ 0
(t, 0, 2 + t, 1) ∀ t ≥ 0,
sono soluzioni ottime del problema (si noti che t = 0 coincide con la solu-
zione di base associata a {x3 , x4 }).
Sia data la riformulazione rispetto alla base {x3 , x4 } di un problema di PL.
max 4 − x2
x3 = 2 + x1 − x2
x4 = 1 − x1 + 2x2
x1 , x2 , x3 , x4 ≥ 0
(t, 0, 2 + t, 1 − t) 0 ≤ t ≤ 1,
sono soluzioni ottime del problema (si noti che t = 0 coincide con la solu-
zione di base associata a {x3 , x4 } e t = 1 con quella adiacente {x1 , x3 }).
44
Sia data la riformulazione rispetto alla base {x3 , x4 } di un problema di PL.
max 4 − x2
x3 = 2 + x1 − x2
x4 = −x1 − x2
x1 , x2 , x3 , x4 ≥ 0
x4 = −x1 − x2
max 2 − x3
x4 = x1 − x2 − x3
x5 = −x1 + x2 + x3
x1 , x2 , x3 , x4 , x5 ≥ 0
x3 = x4 = x5 = 0 x1 = x2 = α ∀ α ≥ 0,
45
base ammissibile se tutti i termini noti delle equazioni sono non negativi).
Vediamo un esempio di ció.
max cB A−1 −1
B b + (cN − cB AB AN )xN
xB = A−1 −1
B b − AB AN xN
xB , xN ≥ 0
Riscriviamo questa portando tutte le variabili fuori base nella parte sinistra
delle equazioni dei vincoli, ovvero:
max cB A−1 −1
B b + (cN − cB AB AN )xN
xB + A−1 −1
B AN x N = AB b (3.8)
xB , xN ≥ 0
A questo punto l’inversa A−1 B si legge in (3.8) nel modo seguente: la prima
colonna di A−1 B é la colonna relativa a xt1 in (3.8), la seconda colonna di
A−1
B é la colonna relativa a xt2 in (3.8), eccetera fino alla m-esima colonna
di A−1
B che é la colonna relativa a xtm in (3.8) (si noti che l’ordine delle
variabili xtr , r = 1, . . . , m é qui essenziale). Ma vediamo di chiarire meglio
la cosa attraverso il nostro esempio.
46
Esempio 13 Possiamo partire proprio dalla base {x4 , x3 , x5 } che risulta
ammissibile. La riformulazione rispetto a questa base é la seguente:
max −44 + 6x1 + 3x2
x4 = 8 − x1 − x2
x3 = 4 − x1 + x2
x5 = 12 − x1 − 2x2
x1 , x2 , x3 , x4 , x5 ≥ 0
Con una prima operazione di cardine scambiamo x1 e x3 nella base. La
riformulazione rispetto alla nuova base {x4 , x1 , x5 } é la seguente:
max −24 − 6x3 + 9x2
x4 = 4 + x3 − 2x2
x1 = 4 − x3 + x2
x5 = 8 + x3 − 3x2
x1 , x2 , x3 , x4 , x5 ≥ 0
Poi, con una seconda operazione di cardine scambiamo x2 e x4 nella base.
La riformulazione rispetto alla nuova base {x2 , x1 , x5 } é la seguente:
max −6 − 3/2x3 − 9/2x4
x2 = 2 + 1/2x3 − 1/2x4
x1 = 6 − 1/2x3 − 1/2x4
x5 = 2 − 1/2x3 + 3/2x4
x1 , x2 , x3 , x4 , x5 ≥ 0
A questo punto ci chiediamo: data la base B = {x2 , x1 , x5 } con la relativa
matrice:
1 1 0
AB = −1 1 0
2 1 1
qual é l’inversa di tale matrice? Come detto, questa si puó ottenere os-
servando la riformulazione rispetto alla base B in cui peró nelle equazioni
spostiamo tutti i termini relativi alle variabili fuori base a sinistra, cioé nel
nostro esempio:
max −6 − 3/2x3 − 9/2x4
x2 − 1/2x3 + 1/2x4 = 2
x1 + 1/2x3 + 1/2x4 = 6
x5 + 1/2x3 − 3/2x4 = 2
x1 , x2 , x3 , x4 , x5 ≥ 0
47
Si avrá che la prima colonna di A−1
B é la colonna della variabile x4 in
quest’ultima formulazione, ovvero
1/2
1/2
−3/2
Avremo quindi:
1/2 −1/2 0
A−1
B = 1/2 1/2 0
−3/2 1/2 1
max cx
a i x = bi i = 1, . . . , m
xj ≥ 0 j = 1, . . . , n
48
Quindi aggiungiamo o sottraiamo (a seconda del segno del termine noto)
una variabile non negativa si in ogni vincolo del problema originario e
l’obiettivo del problema é la somma, cambiata di segno, di tali variabili.
Per prima cosa notiamo che si ≥ 0, i = 1, . . . , m, implica che
m
X
− si ≤ 0
i=1
e quindi l’obiettivo del problema di I fase non puó essere illimitato. Inoltre,
la soluzione di base associata alla base {s1 , . . . , sm } é ammissibile. Infatti,
si ha la seguente riformulazione del problema di I fase rispetto a questa
base:
P P
ξ ∗ = max − i: bi ≥0 (bi − ai x) − i: bi <0 (−bi + ai x)
si = bi − ai x i ∈ {1, . . . , m} : bi ≥ 0
si = −bi + ai x i ∈ {1, . . . , m} : bi < 0
xj ≥ 0 j = 1, . . . , n
si ≥ 0 i = 1, . . . , m
si = bi i : bi ≥ 0, si = −bi i : bi < 0, xj = 0 j = 1, . . . , n,
si = bi − ai x i ∈ {1, . . . , m} : bi ≥ 0
si = −bi + ai x i ∈ {1, . . . , m} : bi < 0
xj ≥ 0 j = 1, . . . , n
si = 0 i = 1, . . . , m
o, equivalentemente:
a i x = bi i = 1, . . . , m x ≥ 0,
49
da cui si ricava che x ∈ Sa .
Supponiamo ora invece che Sa 6= ∅ e dimostriamo che questo implica che
ξ ∗ = 0. Dato x ∈ Sa , si verifica facilmente che la soluzione (s, x) con
si = 0 i = 1, . . . , m,
Poiché, come giá osservato, il valore dell’obiettivo del problema di I fase non
puó essere superiore a 0, questa soluzione ammissibile é anche ottima per
il problema di I fase e il valore ottimo ξ ∗ é pari a 0 come si voleva dimostrare.
50
base alcune variabili si . Questo, come vedremo, accade quando
vi sono vincoli ridondanti, ovvero vincoli ottenibili come combi-
nazioni lineari di altri e che quindi possono essere semplicemente
eliminati. Se ci si ritrova in questa situazione, possiamo elimina-
re le variabili si in base e i relativi vincoli. Una volta proceduto
a tale eliminazione ci si ritrova nella stessa situazione del Caso
1 e si procede come in quel caso (anche qui si vedano gli esempi
successivi per chiarire meglio il procedimento).
Vediamo ora alcuni esempi che serviranno a chiarire quanto visto sopra.
Esempio 14 Si consideri il seguente problema di PL.
max x1 + 2x2
−x1 − x2 + x3 = −1
x1 + x2 + x4 = 2
x1 , x2 , x3 , x4 ≥ 0
max −s1 − s2
−x1 − x2 + x3 − s1 = −1
x1 + x2 + x4 + s2 = 2
x1 , x2 , x3 , x4 ≥ 0 s1 , s2 ≥ 0
Teniamo traccia, per ragioni che chiariremo nel seguito, anche dell’obiettivo
del problema di II fase espresso tramite le variabili fuori base:
x1 + 2x2 .
In base alle regole viste per il metodo del simplesso, dovremo far entrare
in base x1 e farne uscire s1 . La riformulazione rispetto alla nuova base
{x1 , s2 } é la seguente:
max −1 − 2s1 + x3 + x4
51
x1 = 1 − s1 − x2 + x3
s2 = 1 + s1 − x3 − x4
x1 , x2 , x3 , x4 ≥ 0 s1 , s2 ≥ 0.
max −s1 − s2
x1 = 2 − x2 − s2 − x4
x3 = 1 + s1 − s2 − x4 (3.9)
x1 , x2 , x3 , x4 ≥ 0 s1 , s2 ≥ 0.
max 2 + x2 − x4
x1 = 2 − x2 − x4
x3 = 1 − x4
x1 , x2 , x3 , x4 ≥ 0
A questo punto si puó procedere con il metodo del simplesso per risolvere il
problema di II fase.
52
x1 + x2 + x3 = 3
x1 − x2 + x3 = 1
x1 + x3 = 2
x1 , x2 , x3 ≥ 0
max −s1 − s2 − s3
x1 + x2 + x3 + s1 = 3
x1 − x2 + x3 + s2 = 1
x1 + x3 + s3 = 2
x1 , x2 , x3 ≥ 0 s1 , s2 , s3 ≥ 0
53
In base alle regole viste per il metodo del simplesso, dovremo far entrare
in base x2 e farne uscire s1 . La riformulazione rispetto alla nuova base
{s1 , x1 , s3 } é la seguente:
max 5 − 3/2x3
54
x2 = 1
x1 = 2 − x3
x1 , x2 , x3 ≥ 0 (3.14)
max x1 + x2
x1 + x2 = 3
x1 + x3 = 1
x2 + x4 = 1
x1 , x2 , x3 , x4 ≥ 0
max −s1 − s2 − s3
x1 + x2 + s1 = 3
x1 + x3 + s2 = 1
x2 + x4 + s3 = 1
x1 , x2 , x3 , x4 ≥ 0 s1 , s2 , s3 ≥ 0
55
s1 = 2 − 3s2 − x3 − x2
x1 = 1 − s2 − x3
s3 = 1 − x2 − x4
x1 , x2 , x3 ≥ 0 s1 , s2 , s3 ≥ 0.
56
Capitolo 4
Dualitá
max cx
Ax = b (4.1)
x≥0
min ub
uA ≥ c (4.2)
o, in forma scalare:
Pm
min i=1u i bi
Pm
i=1 i ij ≥ cj
u a j = 1, . . . , n (4.3)
Indichiamo con
Da = {u ∈ Rm : uA ≥ c}
la regione ammissibile del problema duale e con
Dott = {u∗ ∈ Da : u∗ b ≤ ub ∀ u ∈ Da }
l’insieme delle sue soluzioni ottime. Si puó notare che esiste una stretta
relazione tra
• variabili del primale e vincoli del duale;
57
• vincoli del primale e variabili del duale.
In particolare notiamo che
1. nel primale ci sono n variabili esattamente come nel duale vi sono n
vincoli. Inoltre, i coefficienti del j-esimo vincolo del duale coincidono
con i coefficienti della variabile xj nei vincoli del primale, mentre il
termine noto del j-esimo vincolo del duale coincide con il coefficiente
di xj nell’obiettivo del primale.
2. Nel primale vi sono m vincoli esattamente come nel duale vi sono
m variabili. Inoltre, i coefficienti dell’i-esima variabile ui del duale
coincidono con i coefficienti dell’i-esimo vincolo del primale, mentre il
coefficiente di ui nell’obiettivo del duale coincide con il termine noto
dell’i-esimo vincolo del primale.
Come esercizio si mostri che il duale del seguente problema di PL in forma
standard:
max x1 + x2
3x1 + 2x2 + x3 = 5
4x1 + 5x2 + x4 = 4
x2 + x5 = 2
x1 , x2 , x3 , x4 , x5 ≥ 0
é il seguente problema:
Le soluzioni dei due problemi primale e duale sono fortemente legate tra
loro come dimostra una serie di risultati.
Osservazione 12 Per ogni x0 ∈ Sa e per ogni u0 ∈ Da si ha che
cx0 ≤ u0 b.
Dimostrazione x0 ∈ Sa implica
Ax0 = b (4.4)
58
Moltiplicando entrambi i membri di (4.4) per u0 si ottiene
Ma u0 ∈ Da implica
u0 A ≥ c
da cui, moltiplicando entrambi i membri per x0 (che é ≥ 0 per l’apparte-
nenza di x0 a Sa ), si ottiene
Osservazione 13 Se x∗ ∈ Sa e u∗ ∈ Da ed inoltre
cx∗ = u∗ b
∀ x ∈ Sa cx ≤ u∗ b.
∀ x ∈ Sa cx ≤ cx∗
il che equivale a dire che x∗ ∈ Sott . In modo del tutto analogo si dimostra
che u∗ ∈ Dott .
∀ x ∈ Sa cx ≤ u0 b
59
Data una base B sappiamo che a questa é associata la soluzione di base del
problema primale:
xB = A−1 B b xN = 0.
uB A ≥ c
o, equivalentemente:
uB AB ≥ cB (4.6)
uB AN ≥ cN (4.7)
Ma:
uB AB = cB A−1
B AB = c B ,
uB AN = cB A−1
B AN ,
cN − cB A−1
B AN ≤ 0
cN − cB A−1
B AN < 0
60
forma standard. Tra questi anche il duale (4.2) del nostro problema primale
(4.1). Quindi ci si puó porre la seguente domanda: una volta ricondotto il
duale (4.2) in forma standard, quale forma avrá il suo duale? La risposta ci
viene data dalla seguente Osservazione di cui omettiamo la dimostrazione.
Osservazione 15 Il duale del problema duale (4.2) coincide con il proble-
ma primale (4.1).
Questa osservazione ci mostra la totale simmetria esistente tra problema
primale e duale. Siamo ora pronti per dimostrare il I teorema della dualitá.
Teorema 4 Uno dei due problemi ha soluzioni ottime se e solo se anche
l’altro ha soluzioni ottime. Formalmente, Sott 6= ∅ se e solo se Dott 6= ∅.
Inoltre, i valori ottimi dei due problemi coincidono.
Dimostrazione Supponiamo di avere Sott 6= ∅ e sia B ∗ una base ottima
per il problema primale. Avremo quindi che la soluzione di base del primale
associata a B ∗ , cioé:
xB ∗ = A−1
B∗ b xN ∗ = 0,
é ammissibile per il primale ed inoltre é soddisfatta la condizione di otti-
malitá:
cN ∗ − cB ∗ A−1
B ∗ AN ∗ ≤ 0.
Ma questo ci dice anche che la soluzione di base del duale associata a B ∗ ,
cioé: ∗
uB = cB ∗ A−1B∗ ,
é ammissibile per il duale. Come giá osservato in precedenza le due solu-
zioni di base del primale e del duale associate a B ∗ hanno lo stesso valore
dell’obiettivo ed essendo ammissibili rispettivamente per il primale e per il
duale, l’Osservazione 13 ci permette di concludere che sono soluzioni ottime
dei rispettivi problemi. Quindi abbiamo dimostrato che Sott 6= ∅ implica
Dott 6= ∅ e i due valori ottimi coincidono. Il viceversa, cioé che Dott 6= ∅
implica Sott 6= ∅, é una conseguenza immediata della proprietá di simmetria
tra primale e duale esppressa dall’Osservazione 15. Infatti, in base a quanto
appena dimostrato, se il duale ha soluzioni ottime anche il suo duale ne ha
e i valori ottimi dei due problemi coincidono. Ma in base all’Osservazione
15, il duale del duale coincide proprio con il problema primale.
61
• Se Sott = ∅ in quanto l’obiettivo primale é illimitato, allora Da =
∅ (per l’Osservazione 14). Ció implica anche per la simmetria tra
primale e duale espressa nell’Osservazione 15, che se Dott = ∅ in
quanto l’obiettivo duale é illimitato, allora Sa = ∅.
• Se Sa = ∅, allora Da = ∅ oppure l’obiettivo duale é illimitato. Ció
implica anche per la simmetria tra primale e duale espressa nell’Os-
servazione 15, che se Da = ∅, allora Sa = ∅ oppure l’obiettivo primale
é illimitato.
Il seguente é un esempio in cui sia Sa che Da sono insiemi vuoti.
Esempio 15 Si consideri il seguente problema primale
max 2x1 − x2
x1 − x2 = 1
−x1 + x2 = −2
x1 , x2 ≥ 0
min u1 − 2u2
u1 − u2 ≥ 2
−u1 + u2 ≥ −1
u∗ Ax∗ = cx∗ .
u∗ b = u∗ Ax∗ = cx∗ .
62
In base all’Osservazione 13, ció implica che le due soluzioni sono ottime per
i rispettivi problemi.
Vediamo ora di dimostrare il viceversa, ovvero che se le due soluzioni sono
ottime soddisfano le condizioni di complementaritá. Per il I teorema della
dualitá sappiamo che
u∗ b = cx∗ .
Ora, sommiamo e sottraiamo u∗ Ax∗ ed otteniamo
(u∗ A − c)x∗ = 0,
(u∗ A − c)x∗ = 0,
e quindi Ãm !
X
u∗i aij − cj x∗j ≥ 0.
i=1
Ne consegue che: Ãm !
n
X X
u∗i aij − cj x∗j = 0.
j=1 i=1
63
se e solo se: Ãm !
X
u∗i aij − cj x∗j = 0 ∀ j = 1, . . . , n.
i=1
(una somma di addendi non negativi può essere nulla se e solo se ciascun
addendo è nullo). Ció equivale alle seguenti condizioni:
m
X
x∗j > 0 ⇒ u∗i aij − cj = 0,
i=1
cioé se una variabile x∗j ha valore positivo in una soluzione ottima del proble-
∗
ma primale, le soluzioni ottime Pmu del duale devono soddisfare come ugua-
glianza il vincolo del duale i=1 u∗i aij ≥ cj corrispondente alla variabile
x∗j ;
X m
u∗i aij − cj > 0 ⇒ x∗j = 0,
i=1
max x1 − x2
x1 + 2x2 + x3 = 6
2x1 + x2 + x4 = 4
x1 , x2 , x3 , x4 ≥ 0.
64
La condizione di complementaritá è la seguente :
(u∗1 + 2u∗2 − 1)x∗1 + (2u∗1 + u∗2 + 1)x∗2 + (u∗1 − 0)x∗3 + (u∗4 − 0)x∗4 = 0
o, equivalentemente:
(u∗1 + 2u∗2 − 1)x∗1 = 0 (2u∗1 + u∗2 + 1)x∗2 = 0 (u∗1 − 0)x∗3 = 0 (u∗4 − 0)x∗4 = 0
In base a tali condizioni si ha che:
x∗1 > 0 ⇒ u∗1 + 2u∗2 = 1
x∗3 > 0 ⇒ u∗1 = 0.
Quindi una soluzione ottima del duale deve soddisfare il sistema
u∗1 + 2u∗2 = 1
u∗1 = 0
da cui si ricava immediatamente la soluzione ottima del duale:
u∗1 = 0 u∗2 = 1/2.
65
Quindi, nel simplesso primale si genera una successione di basi ammissibili
per il primale ma non per il duale fino a raggiungere una base che sia anche
ammissibile per il duale (a patto che una tale base esista , a patto cioé
che il primale ammetta soluzioni ottime e non abbia obiettivo illimitato).
In alcuni casi succede che é semplice avere una base la cui soluzione di
base associata del duale é ammissibile ma non lo é quella del primale. Il
simplesso duale non é altro che il simplesso applicato al problema duale, in
cui seguiremo quindi il seguente schema:
A−1
B ∗ b ≥ 0.
66
Si noti che la condizione di ammissibilitá per la soluzione di base del duale
é equivalente a
γj ≤ 0 j = 1, . . . , n − m. (4.12)
o, equivalentemente:
βi ≥ 0 i = 1, . . . , m
xB = A−1
B b xN = 0
uB = cB A−1
B
βr < 0 αrj ≤ 0 j = 1, . . . , n − m,
n−m
X
xir = βr + αrj xim+j < 0,
|{z} |{z} | {z }
j=1
<0 ≤0 ≥0
si vede come la variabile xir non possa mai essere non negativa se le variabili
xim+j , j = 1, . . . , n − m, sono non negative. Ne consegue anche che il duale
ha obiettivo illimitato. Infatti, abbiamo visto che con Sa = ∅ sono possibili
due casi: Da = ∅ e duale con obiettivo illimitato. Ma il primo dei due casi
(Da = ∅) non si puó verificare qui in quanto la soluzione di base del duale
associata a B é per ipotesi ammissibile e quindi Da non puó essere vuoto.
67
4.1.3 Scelta della variabile uscente dalla base
Rispetto al simplesso primale qui scegliamo prima la variabile uscente dalla
base. La regola di scelta é la seguente: si seleziona la variabile xik tale che
βk = min{βi } < 0
(nel caso il minimo sia raggiunto da piú variabili si sceglie, per conven-
zione, quella con indice piú piccolo). A questo punto possiamo eseguire
l’operazione di cardine facendo uscire di base xik e facendo entrare in base
xim+h .
68
di xik , abbiamo
≤0
z}|{
γh
≤ 0.
αkh
|{z}
>0
Per quanto riguarda i coefficienti di xim+j , j = 1, . . . , n − m, j 6= h
distinguiamo due casi: αkj ≤ 0 e αkj > 0. Se αkj ≤ 0, allora:
≤0
z}|{
αkj
γj − γh ≤ γj ≤ 0.
|{z} αkh
≤0 |{z}
>0
dove
γj γh
− ≤0
αkj αkh
é una conseguenza della regola (4.13) per la scelta della variabile da far
entrare in base.
Per quanto riguarda il nuovo valore dell’obiettivo, esso é pari a:
<0
z}|{
βk
γ0 − γh ≤ γ0 ,
|{z} αkh
≤0 |{z}
>0
69
Prendiamo la riformulazione di tale problema rispetto alla base {x3 , x4 }. Si
ottiene:
max −1 − x1 − 3x2
x3 = −1 + 2x1 − x2
x4 = 2 − x1 − 2x2 (4.14)
x1 , x2 , x3 , x4 ≥ 0
Si nota che la soluzione di base del primale associata alla base {x3 , x4 } é:
x1 = x2 = 0 x3 = −1 x4 = 2,
70
Come previsto, si mantiene l’ammissibilitá duale. Ma ora si ha anche che
la nuova base soddisfa la condizione di ottimalitá (tutti i termini noti non
negativi). Quindi la nuova base é ottima e il problema primale ha soluzione
ottima:
x∗1 = 1/2 x∗4 = 3/2 x∗2 = x∗3 = 0,
con valore ottimo pari a −3/2.
71
Tabella 4.1:
min max
variabile ≥ 0 vincolo ≤
variabile ≤ 0 vincolo ≥
variabile libera vincolo =
vincolo ≥ variabile ≥ 0
vincolo ≤ variabile ≤ 0
vincolo = variabile libera
Rispetto alla forma standard quello che puó cambiare sono i versi delle
disequazioni ed i segni delle variabili. Per stabilire questi ci si puó rifare
allo specchietto nella Tabella 4.1. Lo specchietto ci dice, per esempio, che
se il primale é un problema di massimo ed una variabile é nel primale ≥ 0,
allora il vincolo corrispondente del duale é di ≥, oppure che se il primale é
un problema di minimo ed un vincolo del primale é di =, allora la variabile
corrsipondente del duale é libera in segno (puó assumere sia valori negativi
che positivi). Come esercizio, si usi lo specchietto per verificare che il duale
del seguente problema di PL
min x1 + 2x2 + 3x3
x1 + x2 − x3 ≤ 1
x1 − 2x2 + x3 ≥ 2 (4.15)
x1 − x2 − x3 = 4
x1 ≥ 0, x2 ≤ 0, x3 libera
è il seguente
max u1 + 2u2 + 4u3
u1 + u2 + u3 ≤ 1
u1 − 2u2 − u3 ≥ 2
−u1 + u2 − u3 = 3
u1 ≤ 0, u2 ≥ 0, u3 libera
I risultati delle Osservazioni 12-15 e quelli del I e II teorema della dualitá
possono essere estesi anche a problemi di PL in forma piú generale e ai loro
duali. Ad esempio, a conferma della validitá dell’Osservazione 15 si calcoli
il duale del duale del problema (4.15) e si verifichi che coincide proprio con
(4.15).
72
Capitolo 5
Analisi di sensitivitá
73
Entrambi i problemi hanno valore ottimo:
cB ∗ A−1
B ∗ b.
max cB ∗ A−1 −1
B ∗ b + (cN ∗ − cB ∗ AB ∗ AN ∗ )xN ∗
xB ∗ = A−1 −1
B ∗ b − A B ∗ AN ∗ x N ∗
xB ∗ , xN ∗ ≥ 0
cN ∗ − cB ∗ A−1
B ∗ AN ∗ ≤ 0,
Caso 2 Si ha che:
A−1
B ∗ b ≥ 0.
74
associata a B ∗ resta ammissibile. Poiché entrambe le soluzioni di
base sono ammissibili, si ha che la base B ∗ é ancora ottima. La
nuova soluzione ottima del primale diventa
xB ∗ = A−1
B ∗ b xN ∗ = 0,
Poiché:
bi = bi ∀ i 6= r br = br + ∆br ,
avremo:
∗ ∗
cB ∗ A−1 −1 B B
B ∗ b − cB ∗ AB ∗ = ur (br − br ) = ur ∆br .
max cB ∗ A−1 −1
B ∗ b + (cN ∗ − cB ∗ AB ∗ AN ∗ )xN ∗
xB ∗ = A−1 −1
B ∗ b − A B ∗ AN ∗ x N ∗
xB ∗ , xN ∗ ≥ 0
Si possono avere ancora due casi:
75
Caso 1 Il vettore
cN ∗ − cB ∗ A−1
B ∗ AN ∗ ,
xB ∗ = A−1
B ∗ b, xN ∗ = 0,
Caso 2 Si ha che:
cN ∗ − cB ∗ A−1
B ∗ AN ∗ ≤ 0,
max cB ∗ A−1 −1
B ∗ b + (cN ∗ − cB ∗ AB ∗ AN ∗ )xN ∗
xB ∗ = A−1 −1
B ∗ b − A B ∗ AN ∗ x N ∗
xB ∗ , xN ∗ ≥ 0
76
Caso 1 Il vettore
cN ∗ − cB ∗ A−1
B ∗ AN ∗ ,
ha delle componenti positive. Questo vuol dire che la soluzione di
base del duale associata a B ∗ non é piú ammissibile. Resta invece
ammissibile la soluzione di base del primale associata a B ∗
xB ∗ = A−1
B ∗ b, xN ∗ = 0,
che non é influenzata dalla modifica introdotta. Quindi, al solito,
non é necessario risolvere il nuovo problema da zero, ma, sfruttando
l’ammissibilitá della soluzione di base del primale associata a B ∗ ,
possiamo applicare il simplesso primale con base iniziale proprio B ∗ .
Caso 2 Si ha che:
cN ∗ − cB ∗ A−1
B ∗ AN ∗ ≤ 0,
Quindi la soluzione di base del duale associata a B ∗ continua ad
essere ammissibile. Come nel Caso 1, la soluzione di base del primale
associata a B ∗ resta ammissibile. Poiché entrambe le soluzioni di base
sono ammissibili, si ha che la base B ∗ é ancora ottima. La soluzione
ottima del primale, che non dipende dalla modifica introdotta, resta
invariata, mentre la nuova soluzione ottima del duale é
∗
uB = cB ∗ A−1
B∗ .
Vediamo anche come cambia il valore ottimo comune dei due proble-
mi.
cB ∗ A−1 −1 −1 ∗
B ∗ b−cB ∗ AB ∗ b = (cB ∗ −cB ∗ )AB ∗ b = (cB ∗ −cB ∗ )xB ∗ = ∆cis xis .
77
Si possono avere ancora due casi:
Caso 1 Il vettore
cN ∗ − cB ∗ A−1
B ∗ AN ∗ ,
xB ∗ = A−1
B ∗ b, xN ∗ = 0,
Caso 2 Si ha che:
cN ∗ − cB ∗ A−1
B ∗ AN ∗ ≤ 0,
78
Si puó avere che il vettore:
−1
AB ∗ b
ha componenti negative, mentre il vettore
−1
c N ∗ − c B ∗ A B ∗ AN ∗
5.6 Un esempio
Si consideri il problema di PL
cB ∗ = (2 3) cN ∗ = (−1 − 1) b = (1 1).
La soluzione ottima del primale é:
cB ∗ A−1
B ∗ b = 5/2.
79
Modifica di un termine noto
Introduciamo la perturbazione ∆b2 = −3/4 del termine noto della seconda
equazione. Quindi il valore b2 diventa pari a 1/4 e il nuovo vettore dei
termini noti é:
b = (1 1/4).
Si ha che:
A−1
B ∗ b = (1/2 − 1/4)
Introduciamo ora la perturbazione ∆b2 = 1/4 del termine noto della se-
conda equazione. Quindi il valore b2 diventa pari a 5/4 e il nuovo vettore
dei termini noti é:
b = (1 5/4).
Si ha che:
A−1
B ∗ b = (1/2 3/4).
cN ∗ = (3 − 1).
Si ha che:
cN ∗ − cB ∗ A−1
B ∗ AN ∗ = (3 − 1) − (2 11/2) = (1 − 13/2).
80
e quindi la soluzione di base del duale associata a B ∗ non é piú ammissibile.
Ma la soluzione di base del primale associata a B ∗ resta invariata e continua
ad essere ammissibile. Quindi possiamo applicare il simplesso primale con
base iniziale B ∗ . Possiamo anche dire che la prima variabile ad entrare in
base sará certamente la x1 . Perché?
cN ∗ = (1 − 1).
Si ha che:
cN ∗ − cB ∗ A−1
B ∗ AN ∗ = (1 − 1) − (2 11/2) = (−1 − 13/2).
cB ∗ = (−2 3).
Si ha che:
cN ∗ − cB ∗ A−1
B ∗ AN ∗ = (−1 − 1) − (−2 7/2) = (1 − 9/2).
cB ∗ = (1 3).
81
Si ha che:
cN ∗ − cB ∗ A−1
B ∗ AN ∗ = (−1 − 1) − (1 5) = (−2 − 6).
Si ha che:
cN ∗ − cB ∗ A−1
B ∗ AN ∗ = (−1 − 1) − (−2 11/2) = (1 − 13/2).
Si ha che:
cN ∗ − cB ∗ A−1
B ∗ AN ∗ = (−1 − 1) − (1 11/2) = (−2 − 13/2).
82
La soluzione di base del duale associata a B ∗ é ancora ammissibile. Resta
invariata la soluzione di base del primale associata a B ∗ e quindi continua
ad essere ammissibile. Quindi le due soluzioni sono ottime per i rispet-
tivi problemi. Le due soluzioni ottime ed il valore ottimo non subiscono
modifiche.
Come si vede la nuova matrice non é invertibile e quindi B ∗ non é piú una
base.
83
riformulazione rispetto ad essa:
1 52 9
max 1164 − 23 y2 − 115 y3 − 23 x2
4 11
y1 = 960 + 23 y3 + 23 y2 − 430
23 x2
1 3 10
x3 = 193 + 115 y3 − 115 y2 − 23 x2 (5.3)
4 1 6
x1 = 28 − 115 y3 + 230 y2 − 23 x2
x1 , x2 , x3 , y1 , y2 , y3 ≥ 0
84
sensibile a modifiche del dato ed in tal caso per avere conclusioni corrette
occorre avere una stima molto precisa del dato. Quindi, in presenza di dati
stimati è importante riuscire a capire che cosa succede quando apporto ad
essi delle modifiche.
Ma non è questo l’unico caso in cui voglio sapere cosa succede se modi-
fico un qualche dato. Nel nostro esempio degli aiuti umanitari posso, dopo
aver risolto il problema, chiedermi cosa succede se riesco a procurarmi, ad
esempio, altri 100 sacchi di farina portando quindi la disponibilità di questa
da 5100 a 5200 sacchi. Anche in questo caso vogliamo vedere quale impatto
avrebbe sulla soluzione ottima del nostro problema la modifica di un dato
del problema stesso.
A−1
B ∗ b = (410 223 23)
85
Il valore ottimo dei due problemi è ora 1214.
A−1
B ∗ b = (−140 253 18)
Vediamo anche che cosa succede se apporto la modifica ∆b1 = 100, ov-
vero incremento di 100 unità la disponibilità di sacchi di farina. Si può
verificare che il nuovo vettore di termini noti sarà:
A−1
B ∗ b = (1060 193 28)
86
e quindi resta invariato. Ciò ci dice che avere 100 sacchi di farina in più non
migliora le cose. Questo lo si poteva intuire anche analizzando quello che
succedeva in corrispondenza della soluzione ottima trovata. Mentre in tale
soluzione acqua e medicinali venivano usati in modo completo, restavano
invece inutilizzati 960 sacchi di farina. Ne consegue che, se già con 5100
sacchi di farina si avevano delle eccedenze, non è aumentando il numero di
tali sacchi che possiamo sperare di migliorare il valore ottimo, ma piuttso-
sto dovremo incrementare il numero di bottiglie d’acqua e/o di scatole di
medicinali.
87
essere ammissibile. Quindi possiamo applicare il simplesso primale con base
iniziale B ∗ . Possiamo anche dire che la prima variabile ad entrare in base
sará certamente la x2 (è l’unica con coefficiente di costo ridotto positivo).
88
In tal caso B ∗ non é piú ammissibile per il duale. Ma la soluzione di base
del primale associata a B ∗ resta invariata e continua ad essere ammissibile.
Quindi possiamo applicare il simplesso primale con base iniziale B ∗ .
∆a22 = 10 Si ha
∗ 10
−uB
2 ∆a22 x2 = − x2
23
e 320
30 − 23
−A−1
B ∗
30 = − 80
115
25
10 − 115
Quindi la riformulazione rispetto a B ∗ è la seguente:
1 52 19
max 1164 − 23 y2 − 115 y3 − 23 x2
4 11
y1 = 960 + 23 y3 + 23 y2 − 320
23 x2
1 3 80
x3 = 193 + 115 y3 − 115 y2 − 115 x2
4 1 25
x1 = 28 − 115 y3 + 230 y2 − 115 x2
x1 , x2 , x3 , y1 , y2 , y3 ≥ 0
89
∆a22 = −10 Si ha
∗ 10
−uB
2 ∆a22 x2 = x2
23
e 540
30 − 23
−A−1
B∗
10 = − 20
115
35
10 − 115
Quindi la riformulazione rispetto a B ∗ è la seguente:
1 52 1
max 1164 − 23 y2 − 115 y3 + 23 x2
4
y1 = 960 + 23 y3 + 23 y2 − 540
11
23 x2
1 3 20
x3 = 193 + 115 y3 − 115 y2 − 115 x2
4 1 35
x1 = 28 − 115 y3 + 230 y2 − 115 x2
x1 , x2 , x3 , y1 , y2 , y3 ≥ 0
90
Capitolo 6
Programmazione Lineare
Intera
w∗ = max cx
Ax = b
x ≥ 0, x ∈ I n
Za = {x ∈ I n : Ax = b, x ≥ 0},
91
Chiameremo rilassamento lineare del problema di PLI, il problema di PL
ottenuto dal problema di PLI omettendo la richiesta che le variabili siano
intere, e quindi
z ∗ = max cx
Ax = b
x≥0
max x1 + x2
x1 + 2x2 ≤ 4
2x1 + x2 ≤ 4
x1 , x2 ≥ 0, x1 , x2 ∈ I.
Si determinino per via grafica la soluzione del problema di PLI e del suo
rilassamento lineare.
Come al solito, indicheremo con Sa e Sott rispettivamente la regione ammis-
sibile e l’insieme delle soluzioni ottime del rilassamento lineare del problema
di PLI. Possiamo notare che
Za ⊆ Sa
e che i due problemi hanno la stessa funzione obiettivo cx. Da ció conse-
guono le seguenti relazioni tra il problema di PLI e il problema di PL suo
rilassamento lineare.
1. Se Sa = ∅, allora Za = ∅.
2. Se l’obiettivo del problema di PLI é illimitato, allora lo é anche quello
del suo rilassamento lineare.
3. Se Sott 6= ∅ e Zott 6= ∅, allora il valore ottimo w∗ del problema di
PLI non puó essere superiore al valore ottimo z ∗ del suo rilassamento
lineare, ovvero
w∗ ≤ z ∗
max x2
x1 + 2x2 ≤ 4
2x1 + x2 ≤ 4
x1 , x2 ≥ 0, x1 , x2 ∈ I.
92
Altri casi possibili nelle relazioni tra un problema di PLI e il suo rilassa-
mento lineare sono i seguenti.
1. Za = ∅ ma Sott 6= ∅, come nel seguente esempio:
max x2
1
x1 ≥ 4
3
x1 ≤ 4
x2 ≤ 2
x1 , x2 ≥ 0, x1 , x2 ∈ I.
in tempo polinomiale, mentre quelli di PLI sono verosimilmente solo risolvibili in tempo
esponenziale
93
• risolvo il rilassamento lineare del problema di PLI;
max x2
1
x1 ≤ 2
1
x2 ≤ 2
x1 , x2 ≥ 0, x1 , x2 ∈ I.
94
Se avessimo a che fare con un problema di PL potremmo trasformarlo molto
semplicemente nella forma standard con l’aggiunta di due variabili y1 e y2 :
max x2
1
x1 + y1 = 2
1
x2 + y2 = 2
x1 , x2 , y1 , y2 ≥ 0, x1 , x2 ∈ I.
max x2
2x1 ≤ 1
2x2 ≤ 1
x1 , x2 ≥ 0, x1 , x2 ∈ I.
max x2
2x1 + y1 = 1
2x2 + y2 = 1
x1 , x2 , y1 , y2 ≥ 0, x1 , x2 , y1 , y2 ∈ I.
95
il suo rilassamento lineare. Sia x∗ una soluzione ottima del rilassamento
lineare, che si suppone abbia almeno una coordinata non intera (se tutte le
sue coordinate fossero intere allora x∗ ∈ Zott ).
wx∗ > v, wx ≤ v ∀ x ∈ Za
max cx
a i x = bi i = 1, . . . , m
xj ≥ 0, xj ∈ I j = 1, . . . , n
max cx
a i x = bi i = 1, . . . , m
xj ≥ 0 j = 1, . . . , n
96
Passo 2 Si generi un taglio valido wk x ≤ vk che non sia soddisfatto da
x∗k ma sia soddisfatto da tutti i punti in Za , ovvero
wk x∗k > vk , wk x ≤ vk ∀ x ∈ Za .
max cx
a i x = bi i = 1, . . . , m (6.1)
wr x ≤ vr r = 1, . . . , k
xj ≥ 0 j = 1, . . . , n
max cx
a i x = bi i = 1, . . . , m
wr x + yr = vr r = 1, . . . , k (6.2)
xj ≥ 0 j = 1, . . . , n
yr ≥ 0 r = 1, . . . , k
97
···
Pn−m
xik = βk + j=1 αkj xim+j
···
Pn−m
xim = βm + j=1 αmj xim+j
x1 , . . . , xn ≥ 0
Si suppone che almeno uno dei valori βr , r = 1, . . . , m, sia non intero (se
fossero tutti interi la soluzione di base associata a B ∗ sarebbe non solo
ottima per il rilassamento lineare ma anche per il problema di PLI). Sia βk
un tale valore non intero. Scriviamo l’equazione relativa a xik :
(⌊a⌋ rappresenta la parte intera di a ovvero il piú grande intero ≤ a), mentre
fk é la mantissa di βk , cioé
fk = βk − ⌊βk ⌋ > 0,
y1 ≥ 0.
Vogliamo dimostrare la seguente osservazione.
98
Quindi la soluzione ottima del rilassamento lineare non soddisfa, come de-
siderato, il nostro taglio. Resta da far vedere che il taglio é soddisfatto da
ogni punto in Za . Prendiamo un generico punto
(xi1 , . . . , xin )
La coppia di vincoli
y1 ≥ 0.
99
che esprime il taglio viene aggiunta alla riformulazione rispetto alla base
ottima B ∗ e si ottiene quindi:
Pn−m
max γ0 + j=1 γj xim+j
Pn−m
xi1 = β1 + j=1 α1j xim+j
···
Pn−m
xik = βk + j=1 αkj xim+j (6.8)
···
Pn−m
xim = βm + j=1 αmj xim+j
y1 = −fk + fk1 xim+1 + fk2 xim+2 + · · · + fk,n−m xin
x1 , . . . , xn , y1 ≥ 0
Si noti come (6.8) sia giá la riformulazione del nuovo problema di PL ri-
spetto alla base B ∗ ∪ {y1 }. La soluzione di base del primale associata a
questa base é non ammissibile (la variabile y1 ha valore −fk < 0), come
deve essere visto che il taglio deve rendere non ammissibile la soluzione
del rilassamento lineare. Tuttavia la soluzione di base del duale associata
a B ∗ ∪ {y1 } é ammissibile (i valori γj continuano ad essere non positivi
visto che non sono stati modoficati dall’introduzione del taglio). Questo ci
consente di risolvere il nuovo problema di PL con il simplesso duale e con
base iniziale B ∗ ∪ {y1 }. Si avrá anche che la prima variabile ad uscire di
base sará la y1 . Perché?
Si noti anche come durante la dimostrazione dell’Osservazione 16 abbiamo
anche dimostrato che la nuova variabile che viene introdotta (la y1 ) assu-
me sempre valori interi in corrispondenza di ogni punto di Za . In pratica
il risultato di interezza su y1 ci consente di dire che (6.8) con l’ulteriore
imposizione
x1 , . . . , xn , y1 ∈ I
è una riformulazione equivalente del problema di PLI iniziale (dove per
equivalente si intende che Za e Zott restano invariati). Piú in generale,
iterando quanto visto, si ha che (6.2) con l’ulteriore imposizione
x1 , . . . , xn , y1 , . . . , yk ∈ I
è sempre una riformulazione equivalente del problema di PLI iniziale. Que-
sto consente di iterare la procedura, cioé se dopo l’aggiunta del primo taglio
e la risoluzione del nuovo problema di PL (6.8) non si ha ancora una solu-
zione intera, possiamo generare un nuovo taglio utilizzando la stessa regola
di generazione.
Ma vediamo ora di chiarire meglio il funzionamento di un algoritmo di ta-
glio che utilizza tagli di Gomory applicandolo ad un problema di esempio.
100
Si consideri il seguente problema di PLI:
max x1 + x2
2x1 + x3 = 3
2x2 + x4 = 3
x1 , x2 , x3 , x4 ≥ 0
x1 , x2 , x3 , x4 ∈ I.
Come si vede c’é un termine noto non intero quindi la soluzione del rilas-
samento lineare:
x∗1 = x∗2 = 3/2 x∗3 = x∗4 = 0
non risolve il problema di PLI. A questo punto aggiungo un taglio di
Gomory. Considero l’equazione
x1 = 3/2 − 1/2x3
−1/2 + 1/2x3 ≥ 0.
101
Possiamo notare che questa é giá la riformulazione del nuovo problema ri-
spetto alla base B ∗ ∪ {y1 } = {x1 , x2 , y1 }. La soluzione di base del primale
associata a questa base é non ammissibile (il valore di y1 é −1/2) ma la
soluzione di base del duale associata alla stessa base é ammissibile (i coef-
ficienti delle variabili fuori base nell’obiettivo non sono stati modificati e
continuano ad essere negativi). Quindi possiamo applicare il simplesso dua-
le con base iniziale {x1 , x2 , y1 }. Si verifica immediatamente che non sono
soddisfatte né la condizione di ottimalitá, né la condizione di illimitatezza
dell’obiettivo duale. Chiaramente, la prima variabile che dovrá entrare in
base sará l’unica con un valore negativo e quindi dovrá essere la y1 . In base
alle regole viste, l’unica variabile che potrá entrare in base é la x3 . Pas-
seremo quindi alla base {x1 , x2 , x3 } rispetto alla quale avremo la seguente
riformulazione:
x2 = 3/2 − 1/2x4 .
−1/2 + 1/2x4 ≥ 0.
102
x3 = 1 + 2y1
y2 = −1/2 + 1/2x4
x1 , x2 , x3 , x4 , y1 , y2 ≥ 0
Possiamo notare che questa é giá la riformulazione del nuovo problema ri-
spetto alla base {x1 , x2 , x3 , y2 }. La soluzione di base del primale associata
a questa base é non ammissibile (il valore di y2 é −1/2) ma la soluzione di
base del duale associata alla stessa base é ammissibile (i coefficienti delle
variabili fuori base nell’obiettivo non sono stati modificati e continuano ad
essere negativi). Quindi possiamo applicare il simplesso duale con base ini-
ziale {x1 , x2 , x3 , y2 }. Si verifica immediatamente che non sono soddisfatte
né la condizione di ottimalitá, né la condizione di illimitatezza dell’obietti-
vo duale. Chiaramente, la prima variabile che dovrá entrare in base sará
l’unica con un valore negativo e quindi dovrá essere la y2 . In base alle
regole viste, l’unica variabile che potrá entrare in base é la x4 . Passere-
mo quindi alla base {x1 , x2 , x3 , x4 } rispetto alla quale avremo la seguente
riformulazione:
max 2 − y1 − y2
x1 = 1 − y1
x2 = 1 − y2
x3 = 1 + 2y1
x4 = 1 + 2y2
x1 , x2 , x3 , x4 , y1 , y2 ≥ 0
Ci si puó chiedere se siamo stati solo fortunati oppure con i tagli di Gomory
l’algoritmo di taglio termina sempre in un numero finito di iterazioni. Vale
la seguente osservazione.
103
6.3 Approccio Branch-and-Bound per la Pro-
grammazione Lineare Intera
Fino a questo momento abbiamo considerato la risoluzione dei problemi
di PLI attraverso l’introduzione successiva di piani di taglio. Ora con-
sidereremo un nuovo approccio di risoluzione basato sulla suddivisione del
problema originale in sottoproblemi. L’approccio prende il nome di Branch-
and-Bound. I concetti fondamentali di tale approccio verranno dapprima
illustrati su un particolare problema di PLI ed in seguito generalizzati a
tutti i problemi di PLI.
P0 : max x1 + 3x2
1
(u1 ) x1 ≥
2
7 13
(u2 ) x1 + x2 ≤
5 2
(u3 ) −5x1 + 3x2 ≤ 5
x1 , x2 ≥ 0
x1 , x2 ∈ I
104
u1
4 u2
111111111111111111111111111111
000000000000000000000000000000
000000000000000000000000000000
111111111111111111111111111111
A
000000000000000000000000000000
111111111111111111111111111111
3 000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
B 000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
2
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
1
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
z
C
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
D
1 2 3 4 5 6
u3
+
-
105
soddisfatto da tutte le soluzioni ammissibili di P0 . Qui peró adottiamo un
approccio diverso. Suddividiamo il problema P0 in due sottoproblemi P1 e
P2 ottenuti aggiungendo in ciascuno un vincolo di forma semplice (ovvero
una limitazione sui valori di una singola variabile) che esclude il vertice A.
In P1 si aggiunge il vincolo che una delle variabili a valore frazionario in A
sia non superiore alla parte intera di tale valore, mentre in P2 si aggiunge il
vincolo che la stessa variabile sia non inferiore alla parte intera dello stesso
valore incrementata di uno. Nel nostro esempio in A sono frazionari i va-
lori di entrambe le variabili. Come regola di scelta si adotta qui quella di
prendere la variabile con indice minimo e quindi, nel nostro caso, x1 (si noti
che tale regola non é l’unica possibile ed altre piú sofisticate possono essere
adottate, ad esempio scegliere quella con parte frazionaria ¥ 5 ¦piú elevata). In
base a quanto detto in P1 si aggiungerá
¥ ¦ il vincolo x1 ≤ 4 = 1, mentre in
P2 verrá aggiunto il vincolo x1 ≥ 54 + 1 = 2. I due sottoproblemi saranno
quindi i seguenti:
P1 : max x1 + 3x2
1
(u1 ) x1 ≥
2
7 13
(u2 ) x1 + x2 ≤
5 2
(u3 ) −5x1 + 3x2 ≤ 5
¹ º
5
(u′4 ) x1 ≤ =1
4
x1 , x2 ≥ 0
x1 , x2 ∈ I
P2 : max x1 + 3x2
1
(u1 ) x1 ≥
2
7 13
(u2 ) x1 + x2 ≤
5 2
(u3 ) −5x1 + 3x2 ≤ 5
¹ º
5
(u′′4 ) x1 ≥ +1=2
4
x1 , x2 ≥ 0
x1 , x2 ∈ I
106
rilassamento lineare P2′ di P2 . Le regioni ammissibili di P1′ (il politopo
CBEF ) e P2′ (il politopo GHD) sono parti (disgiunte) della regione am-
missibile di P0′ . La loro unione contiene tutte le soluzioni ammissibili di P0
ma non coincide con la regione ammissibile di P0′ in quanto manca la zona
1 < x1 < 2 nella quale si trova il vertice ottimo A di P0′ .
u1
4 u2
A
111
000
E
3 000
111
000
111
B
000
111
000
111
000
111
000
111
000
111
2
000
111
u3
000
111
000
111
000
111
000
111
1
000
111
000
111
z
000
111
C
000
111
000
111
F D
1 2 3 4 5 6
u′4 +
-
¡ ¢
L’unica soluzione ottima di P1′ é il vertice E 1, 10
3 con valore ottimo pari
a 1 + 3 10
3 = 11. Si noti che E non ha coordinate intere e quindi non é
una soluzione ammissibile per il problema¡originario
¢ P0 . L’unica soluzio-
ne ottima del problema P2′ é il vertice H 2, 45 14 con valore ottimo pari a
45
2 + 3 14 = 163
14 . Anche in questo caso H non é soluzione ammissibile del
problema P0 .
107
u1
4 u2
11111111111111111111111
00000000000000000000000
00000000000000000000000
11111111111111111111111
H
3
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
B
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
2
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
1
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
z 00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
C
00000000000000000000000
11111111111111111111111
2 11111111111111111111111
00000000000000000000000
D
1 G 3 4 5 6 u 3
u′′4
+
-
108
'$
LB = −∞
P0
&%
" Q
" Q
x1 ≤ 1 " Q x1 ≥ 2
" Q
" Q
"
'$
" Q
Q
" Q'$
U (P1 ) = 11 P1
&%
163
P2 U (P2 ) =
&%
14
i valori ottimi dei rilassamenti lineari Pi′ dei Pi . Quindi tutte le soluzioni
ammissibili di Pi′ ed in particolare quelle a coordinate intere (ammissibili
per Pi ) avranno valore della funzione obiettivo che non supera U (Pi ). Per
il momento non é ancora chiaro che cosa faremo con i valori U (Pi ). Questo
verrá specificato nel seguito.
Oltre ai valori di upper bound associati a ciascun nodo, si definisce an-
che un valore unico di lower bound, o limitazione inferiore, LB che indica
il valore della miglior soluzione ammissibile a coordinate intere tra quelle
ottenute come soluzioni ottime dei sottoproblemi. Nel nostro esempio non
abbiamo fino ad ora determinato nessuna soluzione ottima di sottoproblemi
a coordinate intere (il vertice ottimo E di P1′ ed il vertice ottimo H di P2′
non sono a coordinate intere). In questo caso il valore LB viene posto pari
a −∞.
109
¥ 45 ¦ ¥ ¦
rispettivamente il vincolo x2 ≤ 14 = 3 ed il vincolo x2 ≥ 4514 + 1 = 4.
Nella determinazione dei vincoli di forma semplice da aggiungere a quelli
di P2 per ottenere P3 e P4 la scelta ricade sulla variabile x2 in quanto é
l’unica a coordinate non intere nel vertice ottimo H di P2′ . Avremo dunque
P3 : max x1 + 3x2
1
(u1 ) x1 ≥
2
7 13
(u2 ) x1 + x2 ≤
5 2
(u3 ) −5x1 + 3x2 ≤ 5
(u′′4 ) x1 ≥ 2
¹ º
45
(u′5 ) x2 ≤ =3
14
x1 , x2 ≥ 0
x1 , x2 ∈ I
P4 : max x1 + 3x2
1
(u1 ) x1 ≥
2
7 13
(u2 ) x1 + x2 ≤
5 2
(u3 ) −5x1 + 3x2 ≤ 5
(u′′4 ) x1 ≥ 2
¹ º
45
(u′′5 ) x2 ≥ +1=4
14
x1 , x2 ≥ 0
x1 , x2 ∈ I
Le regioni ammissibili di P3′ (il politopo GKJD) e P4′ (l’insieme vuoto)
sono illustrate nelle Figure 6.5 e 6.6. Come in precedenza l’unione delle
regioni ammissibili di P3′ e P4′ contiene tutte le soluzioni ammissibili di P2
ma esclude tutte le soluzioni ammissibili di P2′ nella zona 3 < x2 < 4, dove
si trova il vertice ottimo H di P2′ . ¡ ¢
23
L’ottimo di P3′ si trova nel punto J 10 , 3 con valore ottimo 113
10 . Per quel
che riguarda P4′ si vede subito che la regione ammissibile é vuota ed in tal
caso il nodo viene cancellato e non verrá ulteriormente esplorato. Infat-
ti esso, non contenendo soluzioni ammissibili per P4′ , non puó certamente
contenere soluzioni ammissibili per P4 .
Il nostro albero si presenterá ora nella forma di Figura 6.7. Anche la so-
luzione ottima J di P3′ non é a coordinate intere e quindi il valore LB
110
u1
4 u2
A
H
11111111111111111111111
00000000000000000000000
3 K J
00000000000000000000000
11111111111111111111111
′
u 5
B
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
2
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
1
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
z
C
1
00000000000000000000000
11111111111111111111111
2 G 3 4 5 6
D
u3
u′′4
+
-
111
u1
4 u2 u′′5
H
3
2 u3
z u′′4
C
D
1 2 G 3 4 5 6
+
-
P5 : max x1 + 3x2
1
(u1 ) x1 ≥
2
7 13
(u2 ) x1 + x2 ≤
5 2
(u3 ) −5x1 + 3x2 ≤ 5
(u′′4 ) x1 ≥ 2
(u′5 ) x2 ≤ 3
112
'$
LB = −∞
P0
&%
" Q
" Q
x1 ≤ 1 " Q x1 ≥ 2
" Q
" Q
"
'$
" Q
Q
" Q'$
U (P1 ) = 11 P1
&%
P2
© &%
PP
x2 ≤ 3 ©©© PPx2 ≥ 4
© PP
'$ P'$
© PP
©© ¡
Q ¡
Q
QP4¡
P3 Q
¡
¡ QQ
&% &%
113
U (P3 ) = 10
¡ Q
¡
P6 : max x1 + 3x2
1
(u1 ) x1 ≥
2
7 13
(u2 ) x1 + x2 ≤
5 2
(u3 ) −5x1 + 3x2 ≤ 5
(u′′4 ) x1 ≥ 2
(u′5 ) x2 ≤ 3
¹ º
23
(u′′6 ) x1 ≥ +1=3
10
x1 , x2 ≥ 0
x1 , x2 ∈ I
113
I rilassamenti lineari P5′ (con regione ammissibile il segnento KG) e P6′ (con
regione ammissibile il politopo LM D) di P5 e P6 sono illustrati nelle Figu-
re 6.8 e 6.9. Il problema P5′ ha soluzione ottima nel vertice K (2, 3) con
u1
4 u2
A
H
3 K J
u′5
B
2 u3
z u′6 u′′4
C
D
1 2G 3 4 5 6
+
-
114
u1
4 u2
A
H
3 K J
111111111111111111
000000000000000000
u′5
000000000000000000
111111111111111111
B L
000000000000000000
111111111111111111
000000000000000000
111111111111111111
000000000000000000
111111111111111111
2
000000000000000000
111111111111111111
000000000000000000
111111111111111111
000000000000000000
111111111111111111
000000000000000000
111111111111111111
000000000000000000
111111111111111111
1
z u′′4 000000000000000000
111111111111111111
000000000000000000
111111111111111111
C
000000000000000000
111111111111111111
1 2 G
000000000000000000
111111111111111111
3 M 4 5 6 u
D
3
u′′6
+
-
115
'$
LB = 11
P0
&%
" Q
" Q
x1 ≤ 1 " Q x1 ≥ 2
" Q
" Q
"
'$
" Q
Q
" Q'$
U (P1 ) = 11 P1
&%
P2
© &%
PP x2 ≥ 4
PP x2 ≤ 3 ©©
© PP ©
'$ P'$
© PP
©© ¡
Q ¡
Q
QP4¡
P3 Q
¡
¡ QQ
&% &%
¡ Q
!!! aa
a x1 ≥ 3 ¡
x1 ≤ 2!! aa
'$ '$
! !! aa
a
!
P5 P6
&% &%
U (P5 ) = 11 21
U (P6 ) = 2
116
'$
LB = 11
P0
&%
" Q
" Q
x1 ≤ 1 " Q x1 ≥ 2
" Q
" Q
"
'$
" Q
Q
@ % " Q'$
@% %
U (P1 ) = 11 P@
%
&%
1
% @ P2
&%
% @
@
x2 ≤ 3 ©©© PP x2 ≥ 4
PP
©© PP
'$ P'$
© PP
© © ¡
Q ¡
Q
QP4¡
P3 Q
¡
¡ QQ
!&% aa &%
¡ Q
x1 ≤ 2 !!! aax1 ≥ 3 ¡
!! aa
@ '$ % !!
!
aa'$ ¶
@ %% b ¶
@% b
bP6¶
%P5@ b
¶b
&% &%
U (P5 ) = 11
% @ b U (P6 ) = 2
21
¶ b
% @ ¶
117
originario P0 che sia possibile trovare nel nodo P (vedi il nodo P5
nell’esempio).
3. Si ha che U (P ) ≤ LB. In tal caso l’upper bound U (P ) nel nodo P ,
ovvero il valore ottimo del rilassamento lineare P ′ di P , non supera il
lower bound LB (il valore della miglior soluzione ammissibile trovata
dall’algoritmo) e quindi nessuna soluzione ammissibile del problema
P0 che sia contenuta in P puó superare il valore LB. Se, in particolare,
si ha U (P ) < LB si ha che nessuna soluzione ammissibile del problema
P0 che sia contenuta in P non solo non puó superare il valore LB ma
non lo puó neppure eguagliare. Il caso U (P ) = LB si verifica nel
nostro esempio nel nodo P1 , mentre il caso U (P ) < LB si verifica nel
nodo P6 .
e sia (x∗1 (Q), . . . , x∗n (Q)) una soluzione ottima del rilassamento lineare
Q′ di Q.
118
Passo 2 Si selezioni una variabile x∗i (Q) a valore frazionario. Nel caso
vi siano piú variabili x∗i (Q) con valore frazionario, esistono diverse
regole per effettuare la scelta. Qui, per semplicitá, si adotterá quella
di scegliere la variabile con indice i minimo.
Passo 3 Si rimuova il nodo Q da F (cioé F = F \ {Q}) e lo si suddivida in
due nuovi nodi Q1 e Q2 ottenuti aggiungendo ai vincoli di Q rispetti-
vamente il vincolo xi ≤ ⌊x∗i (Q)⌋ (in Q1 ) ed il vincolo xi ≥ ⌊x∗i (Q)⌋+1
(in Q2 ).
Passo 4 Per ciascuno dei due nuovi nodi Qi , i = 1, 2 si risolva il rilassa-
mento lineare Q′i .
Se Q′i ha regione ammissibile vuota, si cancella il nodo Qi e non lo si
aggiunge a F, altrimenti lo si aggiunge a F.
Altrimenti se la soluzione ottima (x∗1 (Qi ), . . . , x∗n (Qi )) é a coordina-
te intere si cancelli il nodo Qi senza aggiungerlo a F ed inoltre, se
U (Qi ) > LB si ponga
F = F \ {P ∈ F : U (P ) ≤ LB}.
P0 : max 2x1 + x2
11
x2 ≤ 2
x1 ≤ 2
23
x1 + x2 ≤ 4
9
2 x1 + x2 ≤ 11
119
x1 , x2 ≥ 0
x1 , x2 ∈ I
P0 : max z = 2x1 + x2
2x1 + x2 ≤ 7
−2x1 + x2 ≤ 1
x1 , x2 ≥ 0
x1 , x2 ∈ I
P0 : max z = x1 + 3x2
x1 ≥ 12
5
x1 ≤ 2
1
x2 ≥ 2
3
x2 ≤ 4
x1 , x2 ≥ 0
x1 , x2 ∈ I
120
Capitolo 7
Introduzione ai grafi
V = {a, b, c, d, e},
A = {(a, b); (a, c); (b, c); (b, e); (c, d); (d, b)}
121
semplicemente che i nodi a e b sono adiacenti. Abbiamo definito un grafo
G attraverso la coppia di insiemi V e A. É possibile peró rappresentare un
grafo anche nei modi seguenti.
b e
c d
122
Tabella 7.1:
(a, b) (a, c) (b, c) (b, e) (c, d) (d, b)
a 1 1 0 0 0 0
b -1 0 1 1 0 -1
c 0 -1 -1 0 1 0
d 0 0 0 0 -1 1
e 0 0 0 -1 0 0
Tabella 7.2:
(a, b) (a, c) (b, c) (b, e) (c, d) (d, b)
a 1 1 0 0 0 0
b 1 0 1 1 0 1
c 0 1 1 0 1 0
d 0 0 0 0 1 1
e 0 0 0 1 0 0
s0 → s1 → s2 → · · · → sm
(l’alternativa é superflua nel caso non orientato) é detto cammino nel gra-
fo. Il numero m di archi del cammino é detto lunghezza del cammino.
Possiamo vedere anche un cammino di lunghezza m come una sequenza di
archi a due a due adiacenti. Un cammino é detto semplice se nessun arco
é percorso piú di una volta, elementare se nessun nodo viene toccato piú di
una volta.
Nell’esempio, il cammino a → b → d → c é un cammino elementare di
lunghezza 3; il cammino a → b → c → d → b → e é semplice ma non
elementare (il nodo b é toccato piú di una volta); il cammino a → b → c →
d → b → a → c non é né semplice né elementare (l’arco (a, b) é attraversato
due volte).
123
Definizione 17 Un cammino semplice
s0 → s1 → s2 → · · · → sm
s0 → s1 → s2 → · · · → sm
(sm = s0 nel caso di un ciclo) in cui tutti gli archi sono percorsi secondo il
loro orientamento, ovvero si ha che per ogni i = 1, . . . , m:
(si−1 , si ) ∈ A
La relazione tra i nodi ”é accessibile da” é una relazione di equivalenza, ov-
vero soddisfa le tre proprietá riflessiva, simmetrica e transitiva. Come tale,
induce classi di equivalenza nell’insieme dei nodi. Tali classi di equivalenza
vengono dette componenti connesse del grafo. Ogni componente connessa é
formata da nodi tutti accessibili tra loro ma non accessibili da nodi in altre
componenti.
Inizializzazione Si ponga W = V e r = 1.
124
Passo 2 Si selezioni un nodo j ∈ S. Si rimuova j da S e si aggiungano in
S tutti i nodi che non siano giá contenuti in Tr di cui j é predecessore
o successore, cioé
Si ponga Tr = Tr ∪ {j}.
Si noti che la relazione tra nodi ”é fortemente accessibile da” non é una
relazione di equivalenza. In particolare non vale per essa la proprietá di
simmetria (nell’esempio e é fortemente accessibile da b ma il viceversa non
é vero).
Si noti che l’esistenza in un grafo di un ciclo orientato che tocca tutti i nodi
del grafo garantisce che il grafo sia fortemente connesso. Il grafo del nostro
esempio non é fortemente connesso (come giá osservato b e anche tutti gli
altri nodi del grafo non sono fortemente accessibili da e).
Il nostro grafo non é completo. Ad esempio, non c’é alcun arco tra a ed e.
Lo é invece il grafo G = (V, A) con
V = {a, b, c, d}
e
A = {(a, b); (c, a); (a, d); (b, c); (d, b); (c, d)}
125
Definizione 24 Dato un grafo G = (V, A) e un sottinsieme A′ ⊆ A, un
grafo G′ = (V, A′ ) é detto grafo parziale di G. Dati V ′′ ⊆ V e
A′ = {(a, b); (b, c); (b, e); (c, d); (d, b)}
∀ (i, j) ∈ A : i ∈ V1 , j ∈ V2 oppure i ∈ V2 , j ∈ V1 .
Sia C2 = C2 ∪ T2 .
126
Passo 3 Si ponga
Sia C1 = C1 ∪ T1 .
C1 a
C2 b c
C1 a e d c
C2 b c
3. G é connesso e card(A) = n − 1;
127
Ad esempio, il grafo G = (V, A) con
a c
b d
V = {a, b, c, d} A = {(a, b); (b, c); (b, d); (a, d); (c, d)}
w:A→R
che ad ogni arco e ∈ A del grafo associa un peso w(e) (in Figura 7.1 tale
valore é riportato sopra ciascun arco). Nel problema dell’albero di supporto
128
c
a
E ZZ 4 ,,
G E Z ,, 5
3 E Z
,
E
E , ZZ3
E ,, Z
b
2 d
c
c a #£
a , E #£
Z , #
Z 4, E # £
Z , 3 EE 4# £ 5
Z, # £ T2
T1 Z
, E # £
, Z3 #
Z E # £
, b #
b , d d
2
Figura 7.1: Un grafo G e due suoi alberi di supporto T1 e T2 .
a peso minimo vogliamo trovare tra tutti i possibili alberi di supporto del
grafo G, quello con peso totale minimo, dove il peso di un albero di supporto
T = (V, AT ) é definito dalla somma dei pesi dei suoi archi, ovvero:
X
w(e).
e∈AT
Nella Figura 7.1 i due alberi di supporto hanno pesi rispettivamente pari
a 9 e 12. Abbiamo il seguente algoritmo greedy (goloso) per il problema di
albero di supporto a peso minimo.
Passo 1 Si ordinino tutti gli m = card(A) archi del grafo in ordine non
decrescente rispetto al peso, cioé
129
Passo 3 Se ek non forma cicli con gli archi in AT , lo si aggiunga ad AT ,
cioé si ponga AT = AT ∪ {ek }. Altrimenti si lasci AT invariato.
U = {v1 } AT = ∅.
(si noti che nel caso ev 6∈ A il suo peso w(ev ) viene considerato pari a
+∞).
Passo 2 Si ponga:
U = U ∪ {v} AT = AT ∪ {ev }.
130
Passo 3 Per ogni v ∈ V \ U , si lasci invariato ev se
altrimenti si ponga:
½
(v, v) se w(v, v) ≤ w(v, v)
ev =
(v, v) altrimenti
Si ritorni al Passo 1.
Ma vediamo ora di applicare l’algoritmo al nostro esempio. Inizializziamo
U con il nodo a. Quindi avremo inizialmente:
Inoltre avremo:
Al Passo 2 avremo:
131
Al Passo 3 abbiamo w(ec ) > w(b, c) e quindi avremo il seguente aggiorna-
mento:
ec = (b, c).
A questo punto ritorniamo al Passo 1. Non abbiamo U = V , quindi al
Passo 1 scegliamo il nodo c in quanto:
Al Passo 2 avremo:
132
Capitolo 8
Considereremo ora un particolare problema che può essere visto come pro-
blema su un grafo bipartito e può essere modellato come problema di PLI.
cioé nei depositi vi sia più prodotto di quanto effettivamente richiesto dai
negozi. Per soddisfare l’ipotesi (8.1) basta aggiungere un negozio fittizio
133
n + 1 con
m
X n
X
bn+1 = ai − bj ,
i=1 j=1
cioè nei depositi vi sia meno prodotto di quanto effettivamente richiesto dai
negozi. Per soddisfare l’ipotesi (8.1) basta aggiungere un deposito fittizio
m + 1 con
Xn Xm
am+1 = bj − ai ,
j=1 i=1
Variabili
Ad ogni coppia deposito i-negozio j associamo una variabile xij che corri-
sponde alla quantitá di prodotto inviata dal deposito i verso il negozio j.
Tale quantitá dovrá essere ovviamente non negativa e tipicamente anche
intera, ovvero:
xij ≥ 0 intero i = 1, . . . , m j = 1, . . . , n.
Vincoli
Per ogni deposito i la quantità totale di prodotto inviata da esso deve essere
pari alla quantità di prodotto ai in esso immagazzinata. P La quantità totale
n
di prodotto inviata dal deposito i è data dalla formula j=1 xij e quindi
134
per ogni deposito i avremo il seguente vincolo:
n
X
xij = ai i = 1, . . . , m.
j=1
m
X
xij = bj j = 1, . . . , n.
i=1
Obiettivo
Se inviare un’unità di prodotto dal deposito i al negozio j ha costo pa-
ri a cij , inviarne una quantità xij ha costo pari a cij xij . Sommando su
tutte le possibili coppie deposito-negozio, abbiamo la seguente formula per
l’obiettivo:
Xm X n
cij xij .
i=1 j=1
135
XXX
1 XXX
b XXX
J b XXX
b
J b ( ( (( m+1
J((( b((
(
PPJ( b ·
b
2 PP b ·
\ J PP b ·
J PP b
\ PP· b
\ J · P m+2
\ J ·
\ J · %
\ J· %
\ ·J %
\· J%
· \ %J
· \ J
%
· % \ J
· % \ J
· % \ J
· % \ J
· % \ J
· % \
· %
( m+n
% (((((
m (((((
136
Tabella 8.1:
1 2 3
1 c11 = 4 c12 = 7 c13 = 5
2 c21 = 2 c22 = 4 c23 = 3
La matrice dei vincoli è data nella Tabella 8.2 e si può vedere che coinci-
de con la matrice di incidenza nodo-arco del grafo bipartito completo K2,3
associato a questo problema e illustrato in Figura 8.2.
1 XXX
XXX
b
@ XXX
b XXX
b
@ b 3
@
( ((b((( ((
(
((
PP @ b
b
2 PP@ b
Q PP b
Q @PP bb
Q @ PPP
Q
Q @ 4
Q
Q @
Q @
Q @
Q
Q@
Q
5
137
Tabella 8.2:
x11 x12 x13 x21 x22 x23
Deposito 1 1 1 1 0 0 0
Deposito 2 0 0 0 1 1 1
Negozio 1 1 0 0 1 0 0
Negozio 2 0 1 0 0 1 0
Negozio 3 0 0 1 0 0 1
138
Tabella 8.3:
x11 x12 x13 x21 x22 x23
Deposito 1 1 1 1 0 0 0
Deposito 2 0 0 0 1 1 1
Negozio 1 1 0 0 1 0 0
Negozio 2 0 1 0 0 1 0
e alla nuova matrice dei vincoli riportata in Tabella 8.3. Una volta effettuata
questa riduzione, rimangono m + n − 1 vincoli non ulteriormente riducibili.
Una prima definizione, standard, di base per il problema del trasporto è la
seguente.
Definizione 1 Una base per il problema del trasporto è un insieme di m +
n − 1 variabili le cui corrispondenti colonne nella matrice dei vincoli sono
linearmente indipendenti.
Tuttavia vedremo che è possibile dare una rappresentazione grafica più
intuitiva di una base. Consideriamo una tabella con i depositi sulle righe e
i negozi sulle colonne. Dato un insieme di m + n − 1 variabili, associamo
ad esso un grafo nel modo seguente:
• associamo un nodo ad ogni cella relativa ad una delle m + n − 1
variabili;
• colleghiamo tra loro mediante archi nodi successivi che si trovano
lungo la stessa riga o lungo la stessa colonna.
Si noti che non si tracciano archi tra due nodi lungo la stessa riga (o colon-
na) se in mezzo ad essi sulla stessa riga (o colonna) vi è un altro nodo. In
139
Figura 8.3 è rappresentato il grafo corrsipondente alle m+n−1 = 4 variabili
del nostro esempio {x12 , x13 , x22 , x23 }, mentre in Figura 8.4 è rappresenta-
to il grafo corrsipondente alle m + n − 1 = 4 variabili {x11 , x12 , x13 , x23 }.
In entrambi i casi abbiamo m + n − 1 variabili, ma non tutti gli insiemi
1 2 3
Figura 8.3: Il grafo associato alle variabili {x12 , x13 , x22 , x23 }.
1 0 0 1 0
Questo ci dice che le colonne non sono tra loro linearmente indipendenti e
quindi la matrice non è invertibile. Dunque, queste variabili non formano
140
1 2 3
Figura 8.4: Il grafo associato alle variabili {x11 , x12 , x13 , x23 }.
B: è connesso.
Nel nostro esempio notiamo che il grafo associato alle variabili {x11 , x12 , x13 , x23 }
è privo di cicli e soddisfa le condizioni A e B. Quindi tali variabili formano
una base.
141
sole m + n − 1 variabili di base. Nel nostro esempio si ottiene il seguente
sistema:
Nel caso in cui tutte le variabili in base abbiano valore non negativo avremo
a che fare con una base ammissibile (vertice della regione ammissibile). Se
almeno una variabile in base ha valore nullo si parlerà di soluzione di base
degenere, viceversa la soluzione di base verrà detta non degenere.
142
8.3.1 Determinazione di una base ammissibile iniziale
Come già detto, se è soddisfatta la condizione (8.1) il problema del trasporto
ammette sempre una soluzione ammissibile e quindi, in base ad un teorema
della PL, ammette anche almeno una base ammissibile. Tra le possibili
regole per determinare una base ammissibile iniziale descriveremo ora le
cosidetta regola dell’angolo nord-ovest. Inizialmente si pone
âi = ai , i = 1, . . . , m b̂j = bj , j = 1, . . . , n.
ponendo poi
â1 = â1 − x12 b̂2 = b̂2 − x12 .
Se invece â1 < b̂1 ci si sposta nella cella (2, 1) e la variabile successiva posta
nella base è x21 con valore:
ponendo poi
â2 = â2 − x21 b̂1 = b̂1 − x21 .
Se infine â1 = b̂1 (caso degenere) ci si sposta indifferentemente nella cella
(1, 2) facendo entrare in base x12 con valore 0 oppure nella cella (2, 1)
facendo entrare in base x21 sempre con valore 0.
Supponiamo ora di esserci spostati nella cella (1, 2). A questo punto se
â1 > b̂2 ci si sposta nella cella (1, 3) e la variabile successiva posta nella
base è x13 con valore:
x13 = min{â1 , b̂3 },
ponendo poi
â1 = â1 − x13 b̂3 = b̂3 − x13 .
143
Se invece â1 < b̂2 ci si sposta nella cella (2, 2) e la variabile successiva posta
nella base è x22 con valore:
ponendo poi
â2 = â2 − x22 b̂2 = b̂2 − x22 .
Se infine â1 = b̂2 (caso degenere) ci si sposta indifferentemente nella cella
(1, 3) facendo entrare in base x13 con valore 0 oppure nella cella (2, 2) fa-
cendo entrare in base x22 sempre con valore 0.
Partiamo dalla cella (1, 1) inserendo nella base la variabile x11 con valore:
e ponendo:
â1 = 30 − 15 = 15 b̂1 = 15 − 15 = 0.
A questo punto si ha â1 > b̂1 e quindi ci si sposta nella cella (1, 2) e la
variabile successiva posta nella base è x12 con valore:
ponendo poi
â1 = 15 − 10 = 5 b̂2 = 10 − 10 = 0.
A questo punto si ha â1 > b̂2 e quindi ci si sposta nella cella (1, 3) e la
variabile successiva posta nella base è x13 con valore:
ponendo poi
â1 = 5 − 5 = 0 b̂3 = 25 − 5 = 20.
A questo punto si ha â1 < b̂3 e quindi ci si sposta nella cella (2, 3) e la
variabile successiva posta nella base è x23 con valore:
144
ponendo poi
â2 = 20 − 20 = 0 b̂3 = 20 − 20 = 0.
Essendo arrivati nella cella in basso a destra ci arrestiamo. L’insieme di va-
riabili {x11 , x12 , x13 , x23 } forma una base ammissibile con il grafo associato
illustrato in Figura 8.4 e con i seguenti valori della variabili in base:
mentre le variabili fuori base x21 e x22 hanno entrambe valore nullo. Il va-
lore dell’obiettivo si ottiene sostituendo i valori delle variabili nella formula
dell’obiettivo;
Nel grafo relativo alla base ammissibile corrente aggiungiamo un nodo nel-
la cella corrispondente alla variabile fuori base di cui vogliamo calcolare il
coefficiente di costo ridotto e congiungiamo tale nodo con i nodi della base
ad esso adiacenti lungo la riga e la colonna in cui si trova la cella. Nel no-
stro esempio se partiamo dalla base ammissibile individuata con la regola
145
dell’angolo nord-ovest e vogliamo calcolare il coefficiente di costo ridotto di
x21 , il grafo ottenuto aggiungendo il nodo nella cella (2, 1) è quello illustrato
in Figura 8.6. L’aggiunta del nodo e degli archi forma un ciclo dal quale
escludiamo, come già visto in precedenza, ogni nodo che si trovi nel mezzo
di altri due lungo una riga o una colonna, congiungendo direttamente questi
ultimi. Per il nostro esempio questa operazione conduce al grafo in Figura
8.7. A questo punto il coefficiente di costo ridotto della variabile si calcola
partendo dal costo unitario della cella relativa alla variabile fuori base, sot-
traendo il costo unitario della cella successiva nel ciclo, sommando quello
della cella ancora successiva e così via alternando sottrazioni e addizioni
fino a quando non si chiude il ciclo. Nel nostro esempio avremo:
146
del problema, aggiornare il valore delle altre variabili nel ciclo nel modo
seguente: la prima che si incontra nel ciclo viene decrementata di ∆, la
seconda incrementata di ∆ e così via alternando decrementi e incrementi
fino a quando si chiude il ciclo. Nel nostro esempio avremo:
mentre le variabili in base fuori dal ciclo (nell’esempio la sola x11 = 15) e le
altre variabili fuori base (nell’esempio la sola x21 = 0) rimangono invariate.
Il valore dell’obiettivo in corrispondenza di questo aggiornamento sarà pari
a 215 + c22 ∆ = 215 − ∆. Si noti che questo aggiornamento garantisce il fat-
to che i vincoli di uguaglianza del problema rimangano soddisfatti. Infatti,
se analizziamo ad esempio il vincolo relativo al Deposito 2, aumentiamo di
∆ ciò che il Deposito 2 invia al Negozio 2, ma diminuiamo sempre di ∆
ciò che il Deposito 2 invia al Negozio 3, in modo che complessivamente il
Deposito 2 continua a inviare un totale di a2 = 20 unità di prodotto. In
modo analogo si può verificare che continuano a essere soddisfatti i vincoli
relativi agli altri depositi e ai negozi.
Tuttavia, per mantenerci nella regione ammissibile dobbiamo mantenere
la non negatività delle variabili. Per questo, il valore ∆ può essere fatto
crescere fino a quando tutte le variabili in base hanno valore non negativo.
La prima variabile che si annulla al crescere di ∆ è la variabile che dovrà
uscire di base. Se se ne annulla più di una contemporaneamente (caso dege-
nere) la scelta di quale fare uscire di base è arbitraria. Nel nostro esempio
possiamo far crescere ∆ fino a 10. A questo punto la sola x12 si annulla e
viene portata fuori base. La nuova base sarà quindi {x11 , x13 , x22 , x23 } con
il relativo grafo in Figura 8.9, i seguenti valori delle variabili in base:
147
altre soluzioni ottime. Volendo individuare un’altra soluzione ottima pos-
siamo far entrare in base la variabile x21 con coefficiente di costo ridotto
nullo.
Il valore ottimo sarà pari al valore dell’obiettivo nella soluzione ottima,
ovvero, come calcolato precedentemente, 205.
148
1 2 3 4
1 2 3 4
149
Figura 8.6: Il grafo ottenuto aggiungendo il nodo relativo alla variabile x21 .
1 2 3
150
1 2 3
1 2 3
151
152
Capitolo 9
Il problema di flusso a
costo minimo
153
dice che la differenza tra flusso uscente e flusso entrante nel nodo i deve
essere pari a bi . Se bi > 0 il flusso uscente supera quello entrante e quindi
il nodo viene detto nodo sorgente. Se bi < 0 il flusso entrante supera quello
uscente ed il nodo viene detto nodo destinazione. Se bi = 0 i due flussi
entrante ed uscente si equivalgono ed il nodo viene detto di transito. In
pratica ci sono nodi in cui il flusso viene prodotto (i nodi sorgente), altri in
cui transita (i nodi transito) ed altri ancora verso cui viene convogliato (i
nodi destinazione). Inviare un flusso xij lungo il generico arco (i, j) ha un
costo pari a cij xij . Il problema da risolvere consiste nel trasportare attra-
verso
P la rete il flusso realizzato nei nodi sorgente (pari complessivamente a
bi ) facendolo giungere ai nodi destinazione (che, in virtú della
i∈V : bi >0P
condizione ∈V bi = 0, richiedono esattamente la stessa quantitá prodotta
nei nodi sorgente) ed eseguire tale operazione in modo tale da avere un co-
sto complessivo del flusso inviato lungo i diversi archi che sia il piú piccolo
possibile.
b2=5
2c
¡ c
¡ c
¡ c
5 ¡ -4 c 6
c
¡ c
¡ c
¡ c
¡ -2 b3=1 c
b1=2 1 @ 3 0 4 b4=-4
½
@ ½
@ ½
@ 4 ½
½
2@ ½
@ ½ 3
@ ½
@ ½½
5
b5=-4
Figura 9.1: Una rete con i relativi valori bi associati ai nodi ed i costi unitari
di trasporto lungo gli archi.
fianco ai nodi mentre lungo gli archi sono riportati i valori cij . I nodi 1,2
e 3 sono nodi sorgente mentre i nodi 4 e 5 sono nodi destinazione (non vi
154
sono nodi transito). Il problema corrispondente é il seguente
155
P
pari a | V | −1. Il fatto che i∈V bi = 0 (e quindi non solo le righe della
matrice sono linearmente dipendenti ma anche le equazioni stesse dei vincoli
sono tra loro linearmente dipendenti) ci mostra che uno (ed un solo) vincolo
del problema puó essere eliminato in quanto ridondante. Non importa quale
vincolo si elimina. Come convenzione si puó fissare di eliminare l’ultima
equazione. Nel seguito quindi l’ultimo vincolo si intenderá soppresso e
quando si parlerá di matrice dei vincoli si intenderá la matrice di incidenza
nodo-arco privata dell’ultima riga. Nel nostro esempio quindi la matrice
dei vincoli sará
1 1 1 0 0 0 0 0
−1 0 0 1 −1 0 0 0
A= 0 −1 0 −1
0 1 −1 0
0 0 0 0 1 −1 0 1
156
b2=5
2
-4
b3=1
b1=2 1 @ 3 0 4 b4=-4
½
@ ½
@ ½
@ ½
½
2@ ½
@ ½ 3
@ ½
@ ½
5½
b5=-4
Figura 9.2: Un albero di supporto per la rete del nostro esempio.
157
b2=5
, 2
,
,
,
,
,
,
,
, b3=1
b1=2 1 @ 3 4 b4=-4
@
@
@
@
@
@
@
5
b5=-4
Figura 9.3: Un insieme di archi che formano un ciclo non possono dare
origine ad una base.
nel suo verso, per -1 se lo attraversa nel verso opposto. Poi sommiamo i
vettori ottenuti in questo modo. Nel nostro caso moltiplicheremo per +1
le colonne relative agli archi (1, 2) e (2, 3) e per -1 quelle relative agli archi
(5, 3) e (1, 5). Quindi avremo
1 0 0 1 0
−1 1 0 0 0
+1 0 + 1 −1 − 1 −1 − 1 0 = 0
0 0 0 0 0
Ció dimostra che esiste una combinazione lineare non nulla delle colonne
che restituisce il vettore nullo. Quindi tali colonne non formano una ma-
trice invertibile e non rappresentano una base. Come detto, é possibile
generalizzare questo risultato: ogni qualvolta gli archi relativi ad un insie-
me di variabili formano un ciclo, le corrispondenti colonne della matrice dei
vincoli sono linearmente dipendenti e quindi le variabili non formano una
base. L’unica possibilitá per avere una base é che gli archi non formino
alcun ciclo. Ma in base alla definizione di albero, in un grafo con | V |
nodi, | V | −1 archi che non formino alcun ciclo rappresentano un albero
di supporto.
Abbiamo quindi mostrato il seguente importante risultato.
158
Osservazione 22 In un problema di flusso su rete a costo minimo vi é
una corrispondenza uno a uno tra basi ed alberi di supporto, ovvero ad ogni
insieme di | V | −1 variabili che formano una base corrisponde un albero
di supporto e viceversa.
Quindi, per i problemi di flusso su reti a costo minimo sará indifferente
parlare di basi o di alberi di supporto.
A questo punto sostituiamo tali valori nulli nei vincoli del problema. Quello
che si ottiene é un sistema di | V | −1 variabili (quelle relative agli archi
dell’albero di supporto) e | V | −1 equazioni. L’unica soluzione di tale
sistema fornisce i valori delle variabili in base. Nel nostro esempio ponendo
a 0 i valori delle variabili relative ad archi che non appartengono all’albero
di supporto, otteniamo il seguente sistema:
x15 = 2
x23 = 5
x34 − x23 = 1
x45 − x34 = −4
Si noti che tutte le variabili sono non negative e quindi in questo caso si
parla di soluzione di base o albero di supporto ammissibile ( e quindi si
tratta di un vertice della regione ammissibile).
NOTA BENE Nel caso in cui una o piú delle variabili relative all’albero
di supporto fossero uguali a 0 avremmo una soluzione degenere.
159
9.2.4 Calcolo dei coefficienti di costo ridotto
Come avete visto in precedenza, una condizione sufficiente per stabilire se,
data una soluzione di base ammissibile (un vertice), ci troviamo in una so-
luzione ottima in un problema di PL, é controllare se tutti i coefficienti di
costo ridotto sono tutti non positivi in un problema di massimo oppure tutti
non negativi in un problema di minimo. Nella riformulazione di un proble-
ma di PL rispetto ad una base data i coefficienti di costo ridotto appaiono
nell’obiettivo della riformulazione. Nel simplesso su rete non abbiamo alcu-
na riformulazione e dobbiamo quindi vedere come calcolare tali valori. Per
prima cosa ricordiamo che vanno calcolati per le sole variabili fuori base.
Quindi i coefficienti vanno calcolati per le sole variabili associate ad archi
che non fanno parte dell’albero di supporto. La procedura per tale calcolo
verrá illustrata sul nostro esempio. Prendiamo una qualsiasi variabile fuori
base e quindi un qualsiasi arco che non faccia parte dell’albero di supporto,
ad esempio l’arco (1, 3). Per prima cosa aggiungiamo l’arco all’albero. Si
formerá esattamente un ciclo che verrá orientato nel verso dell’arco (1, 3) e
quindi il ciclo sará
1→3→4→5→1
come si vede da Figura 9.4. Si noti che il ciclo attraversa gli archi (1, 3),
b2=5
2
-4
b3=1
b1=2 1 @ 3 0 4 b4=-4
½
@ ½
@ ½
@ ½
½
2@ ½3
@ ½
@ ½
@ ½½
5
b5=-4
Figura 9.4: Il ciclo che si forma aggiungendo l’arco (1, 3).
(3, 4) e (4, 5) nel loro verso, mentre attraversa l’arco (1, 5) nel suo verso
160
opposto. Il coefficiente di costo ridotto relativo all’arco (1, 3), indicato
con c13 verrá calcolato sommando tra loro tutti i costi relativi agli archi
attraversati dal ciclo nel loro stesso verso e sottraendo al risultato i costi
degli archi attraversati dal ciclo in senso opposto al loro verso. Quindi
161
essere soddisfatto. Si puó riassumere quanto visto nel modo seguente. Una
volta aggiunto l’arco (1, 3) si forma un ciclo che viene orientato nel verso
dell’arco (1, 3) stesso. Il flusso viene incrementato di ∆ lungo ogni arco che
il ciclo attraversa nel suo stesso verso e decrementato di ∆ lungo gli archi
che vengono attraversati in verso opposto. Quindi nel nostro esempio:
x13 = ∆ x34 = 6 + ∆ x45 = 2 + ∆ x15 = 2 − ∆.
A questo punto possiamo incrementare il valore di ∆ arrestandoci nel mo-
mento in cui un flusso lungo un arco del ciclo si annulla. Nel nostro caso
possiamo incrementare ∆ fino a 2 ma non oltre in quanto incrementandolo
oltre il flusso relativo all’arco (1, 5) diventerebbe negativo. La prima varia-
bile che diventa nulla incrementando ∆ corrisponderá alla variabile da far
uscire di base. Se piú variabili diventano nulle contemporaneamente incre-
mentando ∆ (caso degenere) se ne seleziona una di esse arbitrariamente.
L’albero di supporto corrispondente alla nuova base sará quello ottenuto
inserendo l’arco relativo alla variabile fatta entrare in base (l’arco (1, 3)
nel nostro esempio) e rimuovendo l’arco della variabile fatta uscire di base
(l’arco (1, 5) nel nostro esempio). Per il nostro esempio la nuova base é
quella riportata in Figura 9.5 ed i nuovi valori delle variabili sono i seguenti
x13 = 2 x23 = 5 x34 = 8 x45 = 4 x12 = x15 = x42 = x53 = 0
NOTA BENE Se il ciclo ottenuto aggiungendo all’albero di supporto
l’arco relativo alla variabile fuori base avesse tutti gli archi orientati nel-
lo stesso verso del ciclo stesso (vedi Figura 9.6) allora potrei far crescere
∆ all’infinito senza che nessun flusso si annulli (tutti i flussi lungo il ciclo
vengono incrementati). Ció corrisponde al caso di problema con obiettivo
illimitato.
162
b2=5
2
b3=1
b1=2 1 3 4 b4=-4
½
½
½
½
½
½
½
½
½
5½
b5=-4
Figura 9.5: La nuova base (albero di supporto) del problema.
é vero e non é neppure detto che una soluzione ammissibile esista. Avremo
quindi bisogno di una procedura che ci dica se ci sono soluzioni ammissibili
e, nel caso esistano, ce ne restituisca una. Utilizzeremo, come giá fatto per i
generici problemi di PL, una tecnica due fasi. Nella prima fase aggiungiamo
alla nostra rete un nuovo nodo q e congiungiamo tale nodo con ogni nodo
i della rete tale che bi < 0 attraverso l’arco (q, i), mentre lo congiungiamo
con ogni nodo i della rete tale che bi ≥ 0 attraverso l’arco (i, q). I valori bi
vengono lasciati invariati, mentre si pone bq = 0. I costi dei flussi unitari
saranno posti uguali a 1 per tutti gli archi incidenti sul nodo q e 0 per tutti
gli archi della rete originaria. Per il nostro esempio la nuova rete sará quella
in Figura 9.7. Per questo problema si ha immediatamente a disposizione un
albero di supporto ammissibile, quello formato da tutti gli archi incidenti
su q, con i seguenti valori delle variabili:
mentre tutte le altre variabili sono nulle. A questo punto risolviamo questo
problema con il simplesso su rete nel modo giá visto in precedenza. Se
la soluzione ottima di tale problema é maggiore di 0, allora il problema
originario ha regione ammissibile vuota. Se invece la soluzione ottima é
pari a 0 e l’albero di supporto ottimo contiene solo uno dei nuovi archi
163
b2=5
2
b3=1
b1=2 1 3 4 b4=-4
l ½
l ½
l ½
l ½
½
l ½
l ½
l ½
l ½
5½
b5=-4
Figura 9.6: Tutti gli archi del ciclo hanno lo stesso orientamento: il
problema ha obiettivo illimitato.
164
bq=0 1
q
1 b2=5
2c
1 ¡ c
¡ c
¡ c
1 0 ¡ 0 c 0
c
¡ c
¡ c
1 ¡ c
¡ 0 b3=1 c
b1=2 1 @ 3 0 4 b4=-4
½
@ ½
@ ½
@ 0 ½
½
0@ ½
@ ½ 0
@ ½
@ ½½
5
b5=-4
Figura 9.7: Il problema di prima fase per determinare una soluzione
ammissibile iniziale.
la procedura per il cambio di base ottengo il nuovo albero di supporto (1, 3),
(2, q) e (q, 3). La nuova soluzione é
tutte le altre variabili nulle. Il calcolo dei coefficienti di costo ridotto resi-
tuisce
c12 = 2 c1q = 2 c23 = −2.
La soluzione non é ottima in quanto abbiamo coefficienti di costo ridotto
negativi. Scelgo una delle variabili fuori base con coefficiente di costo ridotto
piú negativo, in tal caso c’é solo quella associata all’arco (2, 3). Applicando
la procedura per il cambio di base ottengo il nuovo albero di supporto (1, 3),
(2, 3) e (q, 3). La nuova soluzione é
tutte le altre variabili nulle. Il calcolo dei coefficienti di costo ridotto resi-
tuisce
c12 = 0 c1q = 2 c2q = 2.
165
b1=1
1 HH
HH3
HH b3=-4
HH
2 ©
3
©©
© ©©5
©
2
b2=3
Figura 9.8: Una rete.
b1=1 1
1 HH
HH0
HH b3=-4
HH 1 q
0 3
©©©
© ©©0
©
2
1
b2=3
Figura 9.9: La rete ausiliaria per determinare un flusso ammissibile iniziale
per la rete di Figura 9.8.
166
Capitolo 10
Il problema di flusso
massimo
167
attraverso l’introduzione di una sorgente fittizia collegata tramite archi fit-
tizi a capacitá infinita a ciascuna sorgente reale e, analogamente, attraverso
l’introduzione di una destinazione fittizia alla quale si giunge tramite ar-
chi fittizi a capacitá infinita a partire da ciascuna destinazione reale (vedi
Figura 10.1).
n1 b
b D1
´ b "
´ b "
T b "
´ b
´ T b ""
´ T n4
´
´ T ½
S1 b T ½ A
T½ A
b ½T A
b
b ½ A
b ½ T D2
b ½ T A %
»» n2 aa T A%
»»»» aa T %A
Sorgente S2 aa T % A Destinazion
Q % A
Q n5 fittizia
fittizia Q © Z A
Q
Q © ©© Z A
Q © Z
Sorgenti Q
© © Z D3
reali n3
Destinazioni
reali
Figura 10.1: La riduzione al caso di una sola sorgente e una sola
destinazione.
Tali variabili saranno vincolate ad essere non negative (non ha senso parlare
di un flusso negativo). Se indichiamo con cij la capacitá dell’arco (i, j) si
168
dovrá anche avere
xij ≤ cij ∀ (i, j) ∈ A,
cioé il flusso lungo ogni arco non ne puó superare la capacitá. In molti
casi le variabili possono assumere solo valori interi ma, come vedremo in
seguito, non sará necessario imporre esplicitamente il vincolo di interezza
sulle variabili. Il nostro obiettivo é quello di massimizzare la quantitá di
flusso uscente dal nodo sorgente S:
X
xSj
j: (S,j)∈A
Teorema 7 Se le capacitá cij degli archi sono tutti valori interi, allora tutti
i vertici ottimi del problema di flusso massimo (10.1) sono a coordinate
intere.
Esempio 24 Sia data la rete in Figura 10.2. I numeri sugli archi ne indi-
cano le capacitá. Il modello matematico del problema é il seguente proble-
ma di PL (essendo le capacitá valori interi non avremo bisogno di imporre
169
1
n1 n3
J @
¡ J @
¡ @ 1
J @
3 ¡¡ J 1 @
¡ 4J @
¡ J @
¡ J @
J
J
S J D
J ,
J ,
@ J ,
@ J ,
@ ,
J , 7
2 @ J ,
@ ,
@ n4
n2 1
Figura 10.2: Una rete con le capacitá degli archi indicati al loro fianco.
170
10.2 Tagli e problema del taglio minimo
Prima di descrivere un algoritmo per risolvere il problema di flusso massimo
accenniamo ad un altro problema che, come vedremo, é strettamente legato
a quello del flusso massimo. Si consideri U ⊂ V con la proprietá che:
S∈U D 6∈ U.
L’insieme di archi
SU = {(i, j) ∈ A : i ∈ U, j 6∈ U },
Avremo modo di dimostrare che i valori ottimi del problema di flusso mas-
simo (10.1) e quello di taglio a costo minimo (10.2) sono uguali tra loro.
171
Non solo, l’algoritmo con cui risolveremo il problema di flusso massimo ci
dará immediatamente anche una soluzione per il problema di taglio a costo
minimo. Richiamando le nozioni di dualitá nella PL, possiamo dire che il
problema di taglio a costo minimo é un problema duale del problema di
flusso massimo.
S = q0 → q1 → · · · → qr → qr+1 = D,
privo di archi saturi, ovvero nesuno degli archi
(qi , qi+1 ) ∈ A i = 0, . . . , r
é saturo. In tal caso il flusso X non é ottimo. Infatti, posso aumentare
il flusso lungo ciascun arco del cammino di una quantitá ∆ definita nel
seguente modo:
∆ = min [cqi qi+1 − xqi qi+1 ],
i=0,...,r
senza violare i vincoli di capacitá degli archi. Si noti anche che i vincoli di
equilibrio continuano ad essere rispettati in quanto in ogni nodo intermedio
del grafo facente parte del cammino si ha che il flusso in entrata aumenta di
∆ ma contemporaneamente aumenta di ∆ anche quello in uscita. Essendo
gli archi del cammino non saturi si ha che ∆ > 0 e il flusso totale da S a D
viene aumentato proprio di questa quantitá. Per illustrare questa situazione
si consideri l’esempio in Figura 10.3 dove di fianco agli archi sono riportati
due numeri, il primo corrispondente al flusso attuale xij lungo l’arco, l’altro
corrispondente alla capacitá cij dell’arco. Attuamente il flusso in uscita dal
nodo S é pari a 2 (1 unitá lungo l’arco (S, n1 ) e 1 lungo l’arco (S, n2 )).
Questo flusso non é ottimo. Notiamo infatti che esiste almeno un cammino
orientato da S a D con archi non saturi, ad esempio il cammino
S → n1 → n2 → D
172
n1 bb
´ bb 1/2
1/2´´´ bb
´ bb
´
´ b
S 0/1 D
Z ´
Z ´
Z ´
Z ´
Z ´
1/2 Z ´
´
Z ´ 1/2
Z n2 ´
Quindi posso incrementare di 1 unitá il flusso lungo gli archi del cammino,
cioé avró il seguente aggiornamento del flusso:
A(X) = {(i, j) : (i, j) ∈ A, xij < cij } ∪ {(i, j) : (j, i) ∈ A, xji > 0},
| {z } | {z }
Af (X) Ab (X)
ovvero A(X) contiene tutti gli archi di A non saturi (l’insieme Af (X), detto
insieme degli archi forward) e tutti gli archi di A lungo cui é stata inviata
173
n1 bb
´ bb 1/2
2/2´´´ bb
´ bb
´
´ b
S 1/1 D
Z ´
Z ´
Z ´
Z ´
Z ´
1/2 Z ´
´
Z ´ 2/2
Z n2 ´
n1 H
! H
!!! HH
HH
!! HH
!! H
S Z D
Z ´
Z ´
Z ´
Z ´
Z ´
´
Z ´
Z ´
n2
174
risposta é affermativa. Esiste infatti il cammino orientato:
S → n2 → n1 → D.
il minimo di tali valori. Per gli archi forward il valore αij rappresenta quanto
flusso posso ancora inviare lungo l’arco (i, j) ∈ A della rete originaria, per
gli archi backward il valore αij rappresenta quanto flusso posso rispedire
indietro lungo l’arco (j, i) ∈ A della rete originaria. Nel nostro caso si ha:
xn1 D = 1 + 1 = 2 xn2 D = 2.
La nuova situazione é illustrata in Figura 10.6. In pratica sulla rete origi-
naria incrementiamo di ∆ il flusso lungo gli archi corrispondenti ad archi
forward del grafo associato al flusso attuale appartenenti al cammino P ,
rispediamo indietro ∆ unitá di flusso lungo gli archi che, cambiati di verso,
corrispondono ad archi backward del grafo associato appartenenti al cam-
mino P , e quindi decrementiamo il flusso della stessa quantitá lungo tali
archi. Infine, lungo gli archi che non fanno parte del cammino P il flusso
rimane invariato. Si puó verificare che il nuovo flusso é ammissibile. In
particolare, per come é stato scelto il valore ∆ il nuovo flusso lungo ciascun
175
n1 bb
´ bb 2/2
2/2´´´ bb
´ bb
´
´ b
S 0/1 D
Z ´
Z ´
Z ´
Z ´
Z ´
2/2 Z ´
´
Z ´ 2/2
Z n2 ´
Af (X) = {(n1 , n2 )} Ab (X) = {(n1 , S), (n2 , S), (D, n1 ), (D, n2 )}.
n1
!!! b
b
! b
!!! b
b
! b
b
S b
D
Z ½
Z ½
Z ½
Z ½
Z ½
Z ½
Z ½
Z n2 ½
176
é quello ottimo. La risposta la possiamo dare sulla base della seguente
fondamentale osservazione.
Dalla Figura 10.7 si puó notare che per il grafo associato al nostro nuovo
flusso non esiste alcun cammino orientato dal nodo S al nodo D e quindi il
flusso attuale é ottimo. Quanto visto rappresenta la base dell’algoritmo di
Ford-Fulkerson. In pratica, ad ogni iterazione di tale algoritmo si eseguono
i seguenti passi.
ALGORITMO DI FORD-FULKERSON
Passo 1 Si associ alla sorgente S l’etichetta (S, ∞). L’insieme R dei no-
di analizzati é vuoto, ovvero R = ∅, mentre l’insieme E dei nodi
etichettati contiene il solo nodo S, ovvero E = {S}.
177
Quindi si ponga:
S → q1 → · · · → qr−1 → qr → D
Quando l’algoritmo termina abbiamo giá anche una soluzione del problema
di taglio minimo, come dimostra il seguente teormema.
178
Flusso da E versoE
E
E
Flusso da E verso E
Figura 10.8: Il flusso totale dalla sorgente alla destinazione è pari alla
differenza tra il flusso totale da E verso E e il flusso totale da E verso E.
che va in senso opposto, cioé quello dai nodi nel complemento E verso i
nodi in E (si veda la Figura 10.8). In formule il flusso uscente da S ed
entrante in D é quindi pari a:
X X
xij − xji . (10.4)
(i,j) : (i,j)∈A, i∈E, j∈E (j,i) : (j,i)∈A, i∈E, j∈E
179
Tabella 10.1:
E R S n1 n2 n3 n4 D
Passo 1 S ∅ (S, ∞) - - - - -
Passo 2 S, n1 , n2 S (S, ∞) (S, 3) (S, 2) - - -
Passo 2 S, n1 , n2 , n3 , n4 S, n1 (S, ∞) (S, 3) (S, 2) (n1 , 1) (n1 , 3) -
Passo 2 S, n1 , n2 , n3 , n4 S, n1 , n2 (S, ∞) (S, 3) (S, 2) (n1 , 1) (n1 , 3) -
Passo 2 S, n1 , n2 , n3 , n4 , D S, n1 , n2 , n3 (S, ∞) (S, 3) (S, 2) (n1 , 1) (n1 , 3) (n3 , 1)
180
xn2 n3 = 0 xn2 n4 = 0 xn3 D = 1 xn4 D = 0
181
Il grafo G(X) associato al nuovo flusso é illustrato in Figura 10.9. A
n1 n3
J @
¡ J @
¡ @
¡ J @
¡ J @
¡ J @
¡ J @
¡ J @
J
J
S J D
J ,
J ,
@ J ,
@ J ,
@ ,
J ,
@ J ,
@ ,
@ n4
n2
S → n1 → n4 → D.
S → n2 → n4 → D.
182
Tabella 10.2:
E R S n1 n2 n3 n4 D
Passo 1 S ∅ (S, ∞) - - - - -
Passo 2 S, n1 , n2 S (S, ∞) (S, 2) (S, 2) - - -
Passo 2 S, n1 , n2 , n4 S, n1 (S, ∞) (S, 2) (S, 2) - (n1 , 2) -
Passo 2 S, n1 , n2 , n3 , n4 S, n1 , n2 (S, ∞) (S, 2) (S, 2) (n2 , 1) (n1 , 2) -
Passo 2 S, n1 , n2 , n3 , n4 , D S, n1 , n2 , n4 (S, ∞) (S, 2) (S, 2) (n2 , 1) (n1 , 2) (n4 , 2)
Tabella 10.3:
E R S n1 n2 n3 n4 D
Passo 1 S ∅ (S, ∞) - - - - -
Passo 2 S, n2 S (S, ∞) - (S, 2) - - -
Passo 2 S, n2 , n3 , n4 S, n2 (S, ∞) - (S, 2) (n2 , 1) (n2 , 1) -
Passo 2 S, n2 , n3 , n4 , n1 S, n2 , n3 (S, ∞) (n3 , 1) (S, 2) (n2 , 1) (n2 , 1) -
Passo 2 S, n2 , n3 , n4 , n1 , D S, n2 , n3 , n4 (S, ∞) (n3 , 1) (S, 2) (n2 , 1) (n2 , 1) (n4 , 1)
Tabella 10.4:
E R S n1 n2 n3 n4 D
Passo 1 S ∅ (S, ∞) - - - - -
Passo 2 S, n2 S (S, ∞) - (S, 1) - - -
Passo 2 S, n2 , n3 S, n2 (S, ∞) - (S, 1) (n2 , 1) - -
Passo 2 S, n2 , n3 , n1 S, n2 , n3 (S, ∞) (n3 , 1) (S, 1) (n2 , 1) - -
Passo 2 S, n2 , n3 , n1 , n4 S, n2 , n3 , n1 (S, ∞) (n3 , 1) (S, 1) (n2 , 1) (n1 , 1) -
Passo 2 S, n2 , n3 , n1 , n4 , D S, n2 , n3 , n1 , n4 (S, ∞) (n3 , 1) (S, 1) (n2 , 1) (n1 , 1) (n4 , 1)
183
n1 n3
¡ J @
¡ J @
¡ @
J @
¡ J @
¡ J @
¡ J @
¡ J @
J
J
S J D
J ,
J ,
@ J ,
@ J ,
@ ,
J ,
@ J ,
@ ,
@ n4
n2
Figura 10.10:
Tabella 10.5:
E R S n1 n2 n3 n4 D
Passo 1 S ∅ (S, ∞) - - - - -
Passo 2 S S (S, ∞) - - - - -
S → n2 → n3 → n1 → n4 → D.
184
n1 n3
¡ J @
¡ J @
¡ @
J @
¡ J @
¡ J @
¡ J @
¡ J @
J
J
S J D
J ,
J ,
@ J ,
@ J ,
@ ,
J ,
@ J ,
@ ,
@ n4
n2
Figura 10.11:
185
n1 n3
¡ J @
¡ J @
¡ @
J @
¡ J
¡ @
J @
¡ J @
¡ J
@
J
J
S J D
J ,
@ J ,
@ J ,
J ,
@ ,
@ J ,
@ J ,
@ ,
n2 n4
Figura 10.12:
186