Ottimizzazione Combinatoria
A. A. 2005-2006
Docente
Fabrizio Rossi
Orario di ricevimento
mercoledi 17-19 oppure su appuntamento
Telefono 0862433139 e-mail [email protected]
Sito web
http://www.di.univaq.it/~oil
Orario delle lezioni
martedi ore 17.00 – 19.00 Aula 1.6
mercoledi ore 15.00 – 17.00 Aula 1.6
giovedi ore 11.30 – 13.30 Aula 1.6
Testi di riferimento
Base
A. Sassano, Modelli e Algoritmi della Ricerca Operativa, Franco Angeli
Avanzati
L. A. Wolsey, Integer Programming, John Wiley & Sons, Inc.
W. J. Cook, W. H. Cunningham, W. R. Pulleyblank, A. Schrijver, Combinatorial Optimization, Wiley
Materiale didattico sul sito http://www.di.univaq.it/~oil
Applicazioni
• Progetto di servizi logistici
• Progetto di una rete di trasmissione
radiotelevisiva
• Gestione del servizio di trasporto urbano per
handicappati
• Pianificazione della produzione
• Gestione delle partenze e degli arrivi in un
aeroporto
Progetto di servizi logistici
L’azienda di spedizioni Ex-press, proprietaria di alcuni
treni merci, intende realizzare un servizio di
spedizioni tra L’Aquila e Pescara via ferrovia
Pertanto:
1. Chiede gli orari disponibili alla società che gestisce
la rete ferroviaria (Rete Ferroviaria Italiana) e i costi
relativi
2. Configura il servizio che massimizza il guadagno
Il gestore della rete
1. Studia la fattibilità delle richieste della società
2. Pianifica alcuni orari alternativi
3. Definisce i prezzi di ogni alternativa
Ex-press ha un problema di ottimizzazione
• Ex-press
Dati
Un insieme di orari O, ognuno con il proprio costo
Un insieme di treni T, ognuno con il proprio
“profitto”
Problema
Assegnare un sottoinsieme T’ ⊆ T di treni a un
sottoinsieme di orari O’ ⊆ O in modo da
massimizzare il guadagno (somma dei profitti –
somma dei costi) e rispettando i vincoli “fisici”
RFI ha un problema di ottimizzazione
• RFI
Dati
L’orario di nuovo treno
L’intervallo di tempo necessario a percorrere ogni
tratta della linea
L’intervallo di tempo minimo e massimo di sosta in
ogni stazione
Standard di sicurezza (due treni che viaggiano sulla
stessa linea devono essere separati da almeno k
metri, ecc.)
L’orario esistente
Problema
Trovare (se esiste !) un orario che contenga il nuovo
treno e che rispetti gli standard di sicurezza
Problema di Ottimizzazione
E insieme ambiente (insieme di soluzioni, decisioni o
alternative)
F ⊆ E insieme ammissibile
F è definito tramite un insieme di relazioni dette
vincoli
f : E → ℜ funzione obiettivo
Direzione di ottimizzazione: minimo o massimo
Problema di ottimizzazione (min)
Trovare un elemento x ∈ F tale che f(x) ≤ f(y)
∀ y ∈ F.
v = f(x) valore ottimo
x soluzione ottima
Problema di Ottimizzazione Combinatoria
Dati
N insieme finito N = {1, 2, …, n}
c vettore di pesi cj per ogni j ∈ N
Insieme ambiente
U = {tutti i possibili 2|N| sottoinsiemi di N}
Insieme ammissibile
famiglia ℑ di sottoinsiemi F di U
Si definisce
Problema di Ottimizzazione Combinatoria
min
S ⊆N
{Σj∈S cj : S∈ℑ}
La definizione è analoga se si vuole massimizzare la
f.o.
Il problema dell’assegnamento
3 Artigiani 3 Lavori da realizzare
Tabella dei costi
L
1
2
3
1
10
12
20
2
7
15
18
3
14
10
9
A
Problema
Assegnare esattamente un lavoro ad ogni artigiano in
modo da minimizzare i costi
Il problema dell’assegnamento
Insiemi ammissibili
1. {a1 – l1, a2 – l2, a3 – l3} di costo 34
L
1
2
3
1
10
12
20
3. {a1 – l3, a2 – l1, a3 – l2} di costo 37
2
7
15
18
4. {a1 – l3, a2 – l2, a3 – l1} di costo 49
3
14
10
9
2. {a1 – l2, a2 – l3, a3 – l1} di costo 44
A
5. {a1 – l2, a2 – l1, a3 – l3} di costo 28
6. {a1 – l1, a2 – l3, a3 – l2} di costo 38
La soluzione ottima ha valore 28
I possibili assegnamenti sono n!, pertanto il numero di
insiemi ammissibili è n!
Il problema della bisaccia
Avete a disposizione un budget b per gli investimenti
dell’anno 2002
Ad ogni progetto è associato
- un costo aj (> 0)
- un guadagno atteso cj (>0)
Problema
Scegliere l’insieme di progetti in modo che sia
massimizzato il guadagno atteso senza eccedere il
budget b
Il problema della bisaccia
a
c
1
2
2
10
3
4
3
14
4
12
1
8
Dimensione della bisaccia
b=5
Insiemi ammissibili
∅, {1}, {2}, {3}, {4}, {1, 2}, {1, 4}, {2, 4}, {3,4}
Soluzione ottima
{1, 2} di valore 24
Quanti sono gli insiemi ammissibili?
Il numero di possibili sottoinsiemi di un insieme di n oggetti è 2n.
Se b = Σ j=1,…,n aj / 2 gli insiemi ammissibili sono almeno 2n-1
Il problema del commesso viaggiatore
n punti nel piano
Per ogni coppia di punti (i, j) si definisce un costo cij > 0
Problema
Trovare il “tour” di costo minimo
2
1
4
6
3
8
5
7
Il problema del commesso viaggiatore
Insiemi ammissibili: gli (n-1)!/2 possibili tour
2
1
4
6
3
8
5
7
Differenze e similarità
Proprietà fondamentali dei problemi di OC:
1. tutti i problemi di OC sono definiti su insiemi ammissibili finiti
e numerabili
2. la funzione obiettivo è calcolabile in corrispondenza ad ogni
insieme ammissibile
Quindi
esiste un algoritmo “universale” per i problemi di OC che si
chiama ENUMERAZIONE TOTALE
Conclusione:
È inutile seguire questo corso
È vera questa affermazione?
n
log n
n0.5
n2
2n
n!
10
3.32
3.16
100
1.02×103
3.6×106
100
6.64
10.00
10000
1.27 × 1030
9.33×10157
1000
9.97
31.62
1000000
1.07 × 10301
4.02×102567
Le operazioni eseguite da un moderno calcolatore (1 Ghz) in un
anno sono pari a 3.15 × 1016
Pertanto, per risolvere un problema di TSP con 20 città attraverso
l’enumerazione totale si impiegano circa 2 anni
Obiettivo del corso
Studiare tecniche matematiche che consentono di
progettare algoritmi “efficienti” per i problemi di OC
Che cosa si intende per algoritmo efficiente?
1. Algoritmi ammissibili a complessità polinomiale
[Assegnamento]
2. Algoritmi ammissibili a complessità pseudo polinomiali
[Knapsack]
3. Algoritmi ammissibili a complessità non polinomiale [TSP]
4. Algoritmi approssimati a complessità polinomiale [Knapsack]
5. Algoritmi euristici [Knapsack, TSP]
Obiettivo del corso
Modellare problemi decisionali derivanti da
applicazioni del mondo industriale come
problemi di ottimizzazione
Parte I:
Insiemi indipendenti
e coperture
(I Teoremi di Berge, König e Gallai)
Sommario
• Formulazioni ed esempi
• Insiemi indipendenti in un grafo
ƒ Insieme stabile
ƒ Abbinamento
• Coperture in un grafo
ƒ Insieme trasversale
ƒ Edge-cover
•
•
•
•
Disuguaglianze duali deboli
Il Teorema di König
Il Teorema di Berge
Il Teorema di Gallai
• Algoritmo per il matching
Il ballo
Problema 1. Il ballo (Berge)
• In una festa sono presenti n ragazzi e n ragazze.
• Ogni ragazzo scopre che sono presenti k sue fidanzate,
ogni ragazza scopre che sono presenti k suoi fidanzati
(k < n, k > 1)
Domanda
E’ possibile far ballare ciascun ragazzo con una delle sue
fidanzate e ciascuna ragazza con uno dei suoi fidanzati?
Formulazione
Il ballo. 4 ragazzi/e con 3 fidanzati/e
Alberto
Anna
Bruno
Bice
Claudio
Carla
Davide
Daniela
Le torri
Problema 2. Le torri
• Consideriamo una scacchiera n ×n.
• Due torri si “danno scacco” se giacciono sulla stessa
riga (colonna) della scacchiera.
Domanda
Qual è il massimo numero di torri che è possibile
disporre sulla scacchiera senza esse si diano scacco
reciproco?
Formulazione
Due torri si danno scacco se si trovano sulla medesima
riga o colonna:
A
1
B
2
C
3
D
4
1
2
3
4
A
B
C
D
Grafo intersezione
righe-colonne
La battaglia d’Inghilterra (1941)
Problema 3. La battaglia d’Inghilterra (Berge)
• Nel 1941 le squadriglie inglesi erano composte da
aerei biposto, ma certi piloti non potevano formare
una coppia per problemi di lingua o di abitudini.
Domanda
Dati i vincoli di incompatibilità tra coppie di piloti, qual è
il massimo numero di aerei che è possibile far volare
simultaneamente?
Formulazione
Disegniamo il grafo di compatibilità dei piloti.
Evgenij
Bob
Alì
Charlie
David
Fëdor
Abbinamento
In ognuno dei casi esaminati, la soluzione può
rappresentarsi come un insieme A di spigoli di un
grafo G = (V, E) a due a due non adiacenti
Tale insieme è detto abbinamento (matching)
Alberto
Bruno
Anna
Bice
A
B
1
Bob
Bob
2
Alì
Alì
Claudio
Carla
C
Evgenij
Charlie
3
David
Davide
Daniela
D
4
Fëdor
Tipi di abbinamento
• Se |A| > |B| per ogni abbinamento B di G, allora A si
dice massimo. La sua cardinalità si indica con µ(G)
• Se G è bipartito, anche A si dice bipartito
• Se |A| = |V|/2, allora A si dice perfetto
Alberto
Bruno
Anna
Bice
A
B
1
Bob
Bob
2
Alì
Alì
Claudio
Carla
C
Evgenij
Charlie
3
David
Davide
Daniela
D
4
Fëdor
Insieme indipendente
Definizione:
Dato un grafo simmetrico G = (V, E), si dice indipendente un
qualunque sottoinsieme S di vertici (A di spigoli) costituito da elementi
a due a due non adiacenti.
• L’insieme S è detto stabile (stable set).
• L’insieme A è detto abbinamento (matching).
Definizione:
Un insieme indipendente X si dice massimale se ogni elemento di
V – X (di E – X) risulta adiacente ad almeno un elemento di X.
Un insieme indipendente X* si dice massimo se |X*| > |X| per ogni
insieme indipendente di G.
Esempi
Osservazione: Ø è indipendente
stabile massimale
Esempi
stabile massimale, ma non massimo
abbinamento massimale
Esempi
stabile massimale, ma non massimo
abbinamento massimale, ma non massimo
Copertura
Definizione:
Dato un grafo simmetrico G = (V, E), diremo copertura un qualunque
sottoinsieme T di vertici (F di spigoli) tale che ogni spigolo di E (vertice
di V) incide su almeno un elemento di T (di F).
• L’insieme T è detto trasversale (vertex-cover).
• L’insieme F è detto edge-cover.
Definizione:
Una copertura X si dice minimale se X – {x} non è una copertura,
per ogni x ∈ X.
Una copertura X* si dice minima se |X*| < |X| per ogni copertura di
G.
Esempi
Osservazione:V e E sono rispettivamente trasversale e edge-cover
trasversale minimale
Esempi
trasversale minimale, ma non minimo
edge-cover minimale
Esempi
trasversale minimale, ma non minimo
edge-cover minimale, ma non minimo
Disuguaglianze duali deboli
D’ora in avanti indicheremo la cardinalità di:
• un insieme stabile massimo di G con il simbolo α(G)
• un abbinamento massimo di G con il simbolo µ(G)
• uno edge-cover minimo di G con il simbolo ρ(G)
• un insieme trasversale minimo di G con il simbolo τ(G).
Teorema Per ogni grafo G valgono le seguenti
diseguaglianze:
α(G)
<
ρ(G)
µ(G)
<
τ(G)
(diseguaglianze duali deboli).
Disuguaglianze duali deboli
Dimostrazione
Siano rispettivamente X ⊆ V, Y ⊆ E un insieme indipendente e una
copertura di G.
Poiché Y copre V, ogni elemento x di X incide su almeno un elemento
y di Y.
D’altronde nessun y∈Y copre contemporaneamente due elementi di X,
altrimenti questi sarebbero adiacenti, e dunque X non sarebbe
indipendente.
Quindi esiste un distinto y∈Y per ogni x∈X, e di conseguenza
|X| < |Y|
Riscrivendo questa relazione per X* e Y* si ottiene
α(G) < ρ(G)
Scambiando poi il ruolo di V ed E si ottiene
µ(G) < τ(G)
Disuguaglianze duali deboli
Esempio
trasversale e
abbinamento
Disuguaglianze duali deboli
Esempio
stabile ed
edge-cover
Forse valgono sempre
con il segno “=“ ?
Disuguaglianze duali deboli
Esempio
NO!!!
Forse valgono sempre
con il segno “=“ ?
Teorema di Gallai
Teorema (Gallai 1959).
Per ogni grafo G con n nodi si ha:
α(G) + τ(G) = n
(1)
Se inoltre G non ha nodi isolati
µ(G) + ρ(G) = n
Esempio (1)
(2)
Teorema di Gallai
Teorema (Gallai 1959).
Per ogni grafo G con n nodi si ha:
α(G) + τ(G) = n
(1)
Se inoltre G non ha nodi isolati
µ(G) + ρ(G) = n
Esempio (2)
(2)
Dimostrazione (I)
Dimostrazione:
(1) Sia S stabile in G. Allora V – S è un trasversale di G
S
Se |S*| = α(G), allora
τ(G) < |V – S*| = n – α(G).
Dimostrazione (II)
Viceversa, se
T è un trasversale, V – T è stabile in G
non coperto da T
T
Posto quindi τ(G) = |T*|, si ha
α(G) > |V – T*| = n – τ(G)
che insieme a
τ(G) < |V – S*| = n – α(G)
dimostra
α(G) = n – τ(G)
Dimostrazione (III)
(2) G privo di nodi isolati, A abbinamento di G,
nodi saturi rispetto ad A
VA insieme dei
VA
H insieme minimale di archi di G tale che ogni nodo in V – VA è
estremo di qualche arco in H.
|H| = |V – VA| = n – 2 |A|
Osservazione:
C = A ∪ H è un edge-cover
Dimostrazione (IV)
Quindi
1. Scelgo un abbinamento
2. Costruisco l’insieme
A di cardinalità pari a µ(G)
C=A∪H
Poiché C è un edge-cover, si ha
|C| > ρ(G)
Pertanto
ρ(G) < |C| = |A| + |H| = n – µ(G)
Dimostrazione (V)
Sia C un edge-cover di G, con |C| = ρ(G)
Sia
H = (V, C) il sottografo indotto da C
Valgono le seguenti proprietà:
1) H è un grafo aciclico
Difatti, se H contenesse cicli allora C non sarebbe un edgecover minimo (l’arco rosso di figura può essere rimosso)
Dimostrazione (VI)
2) Ogni cammino in H ha al più 2 spigoli
Difatti, se esiste un cammino con 3 spigoli, posso rimuovere
sempre un arco in modo da avere un edge-cover, contraddicendo
il fatto che C è minimo
Osservazione
Dalle proprietà 1) e 2) deduco che H è un grafo costituito da n
vertici, ρ(G) spigoli, decomponibile in N componenti componenti
connesse aventi la forma di “stella”
Dimostrazione (VII)
Consideriamo la componente i-esima di H
In generale, essa avrà ha si nodi e si – 1 archi
Quindi
Σ1<i<N si = n
Σ1<i<N (si – 1) = Σ1<i<N si – N = ρ(G).
Allora N = n – ρ(G).
Sia A un abbinamento con uno spigolo per ogni componente di
Si ha
µ(G) > |A| = n – ρ(G)
che con ρ(G) < n – µ(G) fornisce la tesi.
H.
Formulazioni di PLI: Massimo Stabile
Dati
G (V, E), |V |=n, |E |=m
1 se il vertice
Variabili decisionali
i ∈ S
xi
0 altrimenti
n
max
∑
i=1
xi
st
Formulazione
xi + x
j
≤ 1
∀ (i, j) ∈ E
x i ∈ { 0 ,1 }, i = 1 ,..., n
Rilassamento Lineare
n
max
∑
i=1
xi
STABRL
st
xi + x
j
≤ 1
∀ (i, j) ∈ E
x i ≥ 0 , i = 1 ,..., n
Osservazione:
La limitazione xi < 1 può essere omessa
Indichiamo con αRL(G) il valore della soluzione
ottima del rilassamento lineare
Formulazioni di PLI: Minimo edge-cover
1 se l' arco
Variabili decisionali
e ∈ C
ye
0 altrimenti
min
∑
e∈ E
Formulazione
ye
st
∑
e∈ ∂ ( i )
ye ≥ 1
∀ i∈V
y e ∈ { 0 ,1 }, e = 1 ,..., m
Rilassamento lineare
min
∑
e∈ E
ye
EDGE-CRL
st
∑
e∈ ∂ ( i )
ye ≥ 1
∀ i∈V
y e ≥ 0 , e = 1 ,..., m
Osservazione:
La limitazione ye < 1 può essere omessa
Indichiamo con ρRL(G) il valore della soluzione ottima
del rilassamento lineare
Dualità
Osservazione:
STABRL e EDGE-CRL costituiscono una coppia primale-duale
Inoltre:
α (G) < αRL(G)
ρRL(G) < ρ(G)
Allora:
α (G) < αRL(G) = ρRL(G) < ρ(G)
Formulazioni di PLI: Massimo Matching
1 se l' arco
Variabili decisionali
e ∈ A
ye
0 altrimenti
max
∑
e∈ E
ye
st
Formulazione
∑
e∈ ∂ ( i )
ye ≤ 1
i = 1 ,..., n
y e ∈ { 0 ,1 }, e = 1 ,..., m
Rilassamento Lineare
max
∑
e∈ E
ye
MATCHINGRL
st
∑
e∈ ∂ ( i )
ye ≤ 1
i = 1 ,..., n
y e ≥ 0 , e = 1 ,..., m
Osservazione:
La limitazione ye < 1 può essere omessa
Indichiamo con µRL(G) il valore della soluzione ottima del
rilassamento lineare
Formulazioni di PLI: minimo trasversale
1 se il vertice
Variabili decisionali
i ∈ T
xi
0 altrimenti
n
min
∑
i=1
xi
st
Formulazione
xi + x
j
≥ 1
∀ (i, j) ∈ E
x i ∈ { 0 ,1 }, i = 1 ,..., n
Rilassamento lineare
n
min
∑
i=1
xi
TRASVRL
st
xi + x
j
≥ 1
∀ (i, j) ∈ E
x i ≥ 0 , i = 1 ,..., n
Osservazione:
La limitazione xi < 1 può essere omessa
Indichiamo con τRL(G) il valore della soluzione
ottima del rilassamento lineare
Dualità
Osservazione:
MATCHINGRL e TRASVRL costituiscono una coppia primale-duale
Inoltre:
µ (G) < µRL(G)
τRL(G) < τ(G)
Allora:
µ (G) < µRL(G) = τRL(G) < τ(G)
Cammino alternante
Sia A un abbinamento di G
Definizioni
• Uno spigolo (i,j) di G si dice accoppiato (libero) se (i, j) ∈ A
((i, j) ∉ A).
• Un vertice i di G si dice accoppiato (esposto) se su di esso
incide (non incide) uno spigolo di A
• Un cammino P di G si dice alternante rispetto ad A se è
costituito alternativamente da spigoli accoppiati e liberi.
Cammini aumentanti
Definizione
Un cammino P alternante rispetto ad A che abbia
entrambi gli estremi esposti si dice aumentante
“Aumentare” un abbinamento
Teorema
Sia A un abbinamento di G e sia P un cammino
aumentante. La differenza simmetrica
A’ = (A – P) ∪ (P – A) = A ⊕ P
è un abbinamento di cardinalità |A| + 1.
A-P
P-A
P-A
Dimostrazione (I)
Sia A un abbinamento di G e sia P un cammino alternante rispetto
ad A che sia anche aumentante. L’insieme
D = (A – P) ∪ (P – A)
gode delle seguenti proprietà
1) è un abbinamento
Difatti, se D non fosse un abbinamento allora esisterebbero almeno
due spigoli di D tra loro adiacenti. Questi due spigoli
1. Non possono appartenere entrambi ad A perché A è un
abbinamento.
2. Non possono appartenere entrambi a P perché P è
alternante.
Ma se uno di essi è in A e l’altro è in P, allora devono
necessariamente appartenere a P, contro la definizione di D.
Dimostrazione (II)
2) ha un elemento più di A
Difatti:
A–P
P–A
Teorema di Berge
Teorema (Berge, 1957) Un abbinamento A
di G è massimo se e solo se G non ammette
cammini alternanti rispetto ad A che siano
anche aumentanti.
Dimostrazione
(⇐). vedi Teorema precedente
Teorema di Berge
Dimostrazione (⇒).
Supponiamo che G ammetta un abbinamento B con un
elemento più di A.
Consideriamo il sottografo G’ di G individuato dall’insieme di
archi
F = (A ∪ B) / (A ∩ B)
e da tutti i loro estremi.
Poiché A e B sono abbinamenti, i vertici di G’ hanno grado <
2.
Quindi le componenti connesse di G’ sono percorsi o cicli.
Teorema di Berge
Nessun ciclo può essere dispari
altrimenti A o B non sarebbero abbinamenti
Non tutti i percorsi sono pari
altrimenti |A| = |B|
Quindi, senza perdere di generalità, esiste un percorso con un
numero dispari di archi che inizia e termina con archi di B
Tale percorso è evidentemente aumentante rispetto ad A
Un possibile algoritmo
A = ∅; //Inizializzazione
trovato = TRUE;
while (trovato) {
search (A, &trovato);
if (trovato)
aumenta (G, &A);
}
Come è fatta search (G, A, &trovato)?
Teorema del cammino aumentante
Teorema
Sia v un vertice esposto in un abbinamento
A. Se non esiste un cammino aumentante
per A che parte da v, allora esiste un
abbinamento massimo avente v esposto
Dimostrazione
Sia A* un abbinamento massimo in cui v è
accoppiato.
Consideriamo A ⊕ A*.
Dimostrazione
Poiché A e A* sono due abbinamenti e v è accoppiato in A*, si ha
che A ⊕ A* non può contenere un cammino
v
perché aumentante per A.
Però, contiene un cammino
v
Pertanto, scambiando gli spigoli verdi con quelli rossi, posso ottenere
da A* un altro abbinamento massimo, ma con v esposto.
Un possibile algoritmo (II)
A = ∅; trovato = FALSE;//Inizializzazione
for (v ∈ V) {
if (v è esposto) {
search (v, A, &trovato, &q);
if (trovato)
aumenta (q, v, &A);
else
//cancella v e tutti gli
//spigoli incidenti in v
cancella (v, &G);
}
Ricerca di cammini aumentanti
Scopo della funzione search
trovare un cammino aumentante rispetto A, oppure dire che
non esiste
Parametri
v nodo esposto,
A abbinamento,
trovato, variabile booleana
q, vertice estremo del cammino aumentante
Introduciamo un’etichetta per i vertici di V
label (w)
= PARI
= DISPARI
= NULL
Ricerca di cammini aumentanti (II)
search (v, A, *q, *trovato) {
for (i ∈ V)
label (i) = NULL;
LIST = {v};
label {v} = PARI;
while (LIST != ∅) {
pop (&i, LIST);
if (label (i) == PARI)
esplora_pari (i, A, q, trovato,
&LIST);
else
esplora_dispari (i, A, &LIST);
if (trovato)
return;
}
}
Ricerca di cammini aumentanti (III)
esplora_pari (i, A, *q, *trovato, *LIST) {
for (j ∈ δ(i)) {
if (j ∉ A) {
*q = j;
*trovato = TRUE;
pred (q) = i;
return;
}
if (j ∈ A && label (j) == NULL) {
pred (j) = i;
label (j) = DISPARI;
push (j, LIST);
}
}
}
Ricerca di cammini aumentanti (IV)
esplora_dispari (i, A, *LIST)
{
j = vertice accoppiato ad i in A;
if (label (j) == NULL){
pred (j) = i;
label (j) = PARI;
push (j, LIST);
}
}
Esempio
Sia A il matching rosso
v, PARI
DISPARI
PARI
q, ESPOSTO
DISPARI
PARI
PARI
DISPARI
Esempio
Sia A il matching rosso
v, PARI
DISPARI
DISPARI
PARI
PARI
PARI
DISPARI
Esempio
v
q
Un problema
D oppure P ?
D
v, P
D
P
D
P
Correttezza
Teorema
Se i vertici di G sono etichettati in modo “unico” dalla
procedura search rispetto ad un abbinamento A,
allora search termina con un cammino aumentante,
se esso esiste.
Domanda
Esistono grafi che ammettono sempre la proprietà di
unicità delle etichette?
Grafi bipartiti
G (X, Y, E) grafo bipartito
Teorema di König
Teorema (König 1931).
Se G = (X, Y, E) è un grafo bipartito allora µ(G) = τ(G)
Dimostrazione
Sia A un abbinamento massimo, e siano
X 1: insieme dei nodi x di X saturi rispetto ad A
X2: insieme dei nodi x di X esposti rispetto ad A
Teorema di König
X1
Nodi raggiungibili
X2
Definizione: Un nodo y ∈ Y1 è raggiungibile se esiste P alternante
rispetto ad A da x in X2 tale che l’ultimo arco non appartiene ad A
Y1: insiemi dei nodi y di Y raggiungibili da x in X2
Teorema di König
X1
Y2
Y1
X2
Osservazione
Per definizione i nodi in Y1 sono saturi, altrimenti A non sarebbe
massimo
Infine: Y2: Y – Y1
Teorema di König
X1
Y2
Y1
X2
Consideriamo il seguente insieme di nodi
Z = {z1, z2, …, zµ(G)}
con
z i = yi
z i = xi
e dimostriamo che è un trasversale
se yi è raggiungibile
altrimenti
Dimostrazione (I)
Dimostriamo che non esistono archi da nodi in X2 verso nodi in Y non
coperti da Z. Difatti,
1) Non può esistere un arco non coperto da Z tra un nodo in X2
e un nodo in Y2, altrimenti il matching non sarebbe massimo
2) Non può esistere un arco non coperto da Z tra un nodo in X2
e un nodo in Y1 perché i nodi in Y1 sono raggiungibili e quindi
l’arco sarebbe coperto
Y1
X1
2
X2
1
Y2
Dimostrazione (II)
Dimostriamo che non esistono archi da nodi in Y verso nodi in X1 non
coperti da Z.
Difatti, consideriamo l’arco 1, da X1 a Y2. Se non fosse coperto
significa che il nodo y1, estremo dell’arco del matching è raggiungibile.
Ma allora esisterebbe un cammino aumentante e il matching
non sarebbe massimo.
y1
Y1
X1
1
X2
Y2
Dimostrazione (III)
Consideriamo un arco da X1 a Y1, ad esempio l’arco 2.
Se non fosse coperto significa che il nodo y2 non è raggiungibile,
ovvero non appartiene ad Y1 (contraddizione).
x1
y1
2
y2
X1
Y1
X2
Y2
Pertanto Z è un trasversale di cardinalità pari a µ(G).
Parte II:
Ottimalità, rilassamenti e bound
Sommario
• Definizioni di bound “primali” e “duali”
• Rilassamento di un problema di OC
• Esempi di rilassamenti per il problema del TSP
•
•
•
•
•
ƒ Il rilassamento 1-albero
ƒ Il rilassamento 2-abbinamento
Bound primali per il TSP
ƒ Nearest Neighbor e Insertion
ƒ Algoritmi approssimati (Double Tree, Christofides)
Bound dal rilassamento lineare
ƒ Il rilassamento lineare del knapsack
ƒ Bound primali: algoritmo greedy
Bound per dualita
Formulazioni di PL
Formulazioni ideali e matrici TU
Ottimalità, rilassamenti e bound
Consideriamo il seguente problema
z* = max {cTx : x ∈ X, X ⊆ {0,1}n }
z* è il valore della soluzione ottima x*.
Domanda
In che modo è possibile certificare che la soluzione x* è ottima?
In generale, se disponessimo di un algoritmo che genera le due
sequenze di soluzioni:
zUB 1 > zUB 2 > …> zUB h > z*
zLB 1 < zLB 2 < …< zLB k < z*
Potremmo fornire come criterio di arresto
zUB h - zLB k < ε (> 0)
Lower (upper) bound
Bound “primali”
Ogni soluzione x ∈ X ammissibile è un lower (upper) bound per
un problema di massimizzazione (minimizzazione)
zUB 1
zUB 2
z*
zLB 2
zLB 1
z*
Upper (lower) bound
Bound “duali”
Al contrario dei bound “primali”, trovare upper (lower)
bound di buona qualità per problemi di massimo
(minimo) è tipicamente difficile
Buoni bound “duali” si ottengono attraverso lo studio
delle proprietà strutturali del problema di OC
Le proprietà di un problema di OC si caratterizzano
tramite
1. Rilassamenti del problema
2. Definizione e studio di problemi “duali”
Rilassamento
Definizione
Il problema
(RP) zR = max {f(x) : x ∈ T, T ⊆ Rn } (zR = min {f(x) : x ∈ T, T ⊆ Rn })
si definisce rilassamento del problema
(P) z = max {cTx : x ∈ X, X ⊆ {0,1}n } (z = min {cTx : x ∈ X, X ⊆ {0,1}n })
se e solo se:
i)
X⊆T
ii)
f(x) > cTx per ogni x ∈ X
(f(x) < cTx per ogni x ∈ X)
Proprietà 1. Se RP è un rilassamento di P, allora zR > z* (zR < z*)
Proprietà 2. Se xR sol. ottima di RP è ammissibile per P allora xR = x*
Esempi di rilassamenti
Problema del commesso viaggiatore (simmetrico)
Dati: grafo G=(V,E), pesi sugli archi ce per ogni arco e ∈E
Domanda: trovare il ciclo hamiltoniano di peso minimo
Definizione: Un 1-albero è un sottografo di G consistente di due archi
adiacenti al nodo 1 più gli archi di un albero ricoprente i nodi {2, …, n}
Esempio
1
2
5
3
4
Rilassamenti per il TSP
Osservazione
Un ciclo hamiltoniano è un particolare 1-albero
1
2
5
3
Pertanto, il problema
4
Dati: grafo G = (V,E), pesi sugli archi ce per ogni arco e ∈E
Domanda: trovare l’1-albero di peso minimo
è un rilassamento del problema del TSP, perché l’insieme X di tutti i cicli
hamiltoniani è ⊆ nell’insieme T di tutti gli 1-alberi
Rilassamenti per il TSP
Definizione
Un 2-abbinamento è un insieme di archi tali che …
1
2
6
5
3
4
Rilassamenti per il TSP
Osservazione
Un ciclo hamiltoniano è un particolare 2-abbinamento, difatti è un 2abbinamento privo di sottocicli (subtour)
1
2
6
5
3
4
Pertanto, il problema
Dati: grafo G = (V,E), pesi sugli archi ce per ogni arco e ∈E
Domanda: trovare il 2-abbinamento di peso minimo
è un rilassamento del problema del TSP, perché l’insieme X di tutti i cicli
hamiltoniani è ⊆ nell’insieme T di tutti i 2-abbinamenti
Un esempio
Consideriamo la seguente istanza del
problema del Commesso Viaggiatore:
1
2
3
4
5
6
1
-
1
99
99
99
1
2
1
-
10
99
99
1
3
99
10
-
1
1
99
4
99
99
1
-
1
99
5
99
99
1
1
-
10
6
1
1
99
99
-
Un esempio
1
2
6
3
5
4
1
2
3
4
5
6
1
-
1
99
99
99
1
2
1
-
10
99
99
1
3
99
10
-
1
1
99
4
99
99
1
-
1
99
5
99
99
1
1
-
10
6
1
1
99
99
-
Un esempio
Il 2 abbinamento di peso minimo
ha valore 6
1
2
6
3
5
4
1
2
3
4
5
6
1
-
1
99
99
99
1
2
1
-
10
99
99
1
3
99
10
-
1
1
99
4
99
99
1
-
1
99
5
99
99
1
1
-
10
6
1
1
99
99
10
-
Un esempio
L’1-albero di peso minimo ha
valore 15
1
2
6
3
5
4
1
2
3
4
5
6
1
-
1
99
99
99
1
2
1
-
10
99
99
1
3
99
10
-
1
1
99
4
99
99
1
-
1
99
5
99
99
1
1
-
10
6
1
1
99
99
10
-
Un esempio
Il ciclo hamiltoniano di peso
minimo ha valore 24
1
2
6
3
5
4
1
2
3
4
5
6
1
-
1
99
99
99
1
2
1
-
10
99
99
1
3
99
10
-
1
1
99
4
99
99
1
-
1
99
5
99
99
1
1
-
10
6
1
1
99
99
10
-
Un esempio (2)
Il 2 abbinamento di peso minimo
ha valore 24
1
2
6
3
5
4
1
2
3
4
5
6
1
-
1
99
99
99
1
2
1
-
5
99
99
1
3
99
5
-
10
1
99
4
99
99
10
-
10
99
5
99
99
1
10
-
5
6
1
1
99
99
5
-
Un esempio (2)
L’1-albero di peso minimo
ha valore 19
1
2
6
3
5
4
1
2
3
4
5
6
1
-
1
99
99
99
1
2
1
-
5
99
99
1
3
99
5
-
10
1
99
4
99
99
10
-
10
99
5
99
99
1
10
-
5
6
1
1
99
99
5
-
Un esempio (2)
Il ciclo hamiltoniano di peso
minimo ha valore 32
1
2
6
3
5
4
1
2
3
4
5
6
1
-
1
99
99
99
1
2
1
-
5
99
99
1
3
99
5
-
10
1
99
4
99
99
10
-
10
99
5
99
99
1
10
-
5
6
1
1
99
99
5
-
Ricapitolando…
Abbiamo definito per il TSP due lower bound con le seguenti proprietà:
1. Sono lower bound “combinatori”, ovvero si ottengono tramite la
soluzione di un problema di OC
2. Tutti e due i problemi la cui soluzione genera i lower bound sono
“facili”, ovvero hanno complessità polinomiale
La proprietà 2. è una proprietà chiave per ogni bound duale
Difatti, se il calcolo del bound fosse un problema NP-completo sappiamo
che calcolare il bound diventa almeno tanto difficile quanto risolvere il
problema stesso.
Domanda
Come si possono calcolare bound primali (ovvero soluzioni ammissibili di
buona qualità) per il problema del TSP?
Algoritmi euristici
Un algoritmo A si dice euristico per un problema P se
restituisce una soluzione ammissibile zA che non è
garantito essere la soluzione ottima.
Sia P problema di minimizzazione. Un algoritmo
euristico si dice δ-approssimato se
1. Ha complessità polinomiale
2. Per ogni istanza I di P con soluzione ottima z*(I), si
ha
zA(I) / z*(I) < δ
(1)
Osservazione: se P è problema di massimo δ < 1 e (1)
vale con il segno di >
Euristiche per il TSP
G = (V, E) grafo completo
cuv costo dell’arco uv ∈ E
Euristiche costruttive: tentano di costruire un “buon”
ciclo hamiltoniano a partire da un sottociclo
eventualmente vuoto.
Euristiche migliorative: a partire da una soluzione
ammissibile, si tenta di migliorarla attraverso
miglioramenti “locali”.
Euristica Nearest Neighbor
Input: G=(V,E) Output: ciclo hamiltoniano T
procedure nearest_neighbor ()
Scegli un vertice u ∈ V qualsiasi;
W = V \ {u}, aggiungi u alla lista T
while |W| > 0 {
scegli v ∈ W tale che cuv = min {cuj : j ∈ W}
Aggiungi {v} alla lista T
W = W \ {v}
u = v
}
Esempio Nearest Neighbor
1000
2
4
5
1
2
Soluzione di valore 1005, è ottima?
Esempio Nearest Neighbor
1000
2
4
5
1
2
La soluzione ottima vale 12
Osservazione: il rapporto zA(I)/z*(I) può essere reso
grande a piacere.
Euristiche di inserimento
Euristiche di inserimento
Euristiche di inserimento
Euristiche di inserimento
Input: G=(V,E) Output: ciclo hamiltoniano T
procedure insertion_heuristic ()
Inizializza T con un sottociclo
W = V /T;
while (|W| > 0) {
scegli un vertice u ∈ W;
scegli la posizione in cui inserire u
in T;
inserisci u in T;
elimina u da W;
}
Selezione del vertice da inserire
Definizione
Si definisce distanza di un vertice u da un ciclo T, il peso
del più piccolo spigolo che collega il vertice ad un altro
qualsiasi vertice del ciclo
T = (1, 2, .., k)
dist (u, T) = min { cuv: v ∈ C}
Nearest Insertion
Inserisci il vertice u che minimizza dist (u, T), u ∉T
Farthest Insertion
Inserisci il vertice u che massimizza dist (u, T), u ∉T
Selezione della posizione di inserimento
Osservazione
Scegliere la posizione equivale a scegliere lo spigolo da
eliminare nel ciclo T. Un vertice può essere inserito in
ogni posizione di T.
Sia T = (v1, v2, …, vn) , c(T) il suo costo e sia u lo
spigolo da aggiungere al ciclo
Se c(T (i)) è il costo del ciclo ottenuto da T inserendo
nella posizione i il nodo u, il costo di inserimento è
pari a c(T (i)) - c(T).
Si seleziona la posizione che minimizza c(T (i)) - c(T)
Esempio
7
9
9
2
d=7
14
5
12
1
3
d=1
6
Esempio
T = {1, 2, 3}
7
2
9
9
3
2
d=7
1
5
12
1
3
d = 12
14
6
Esempio
7
2
9
9
3
2
1
5
12
1
3
14
6
C = 21
Esempio
7
2
9
9
3
2
1
5
12
1
3
14
6
C = 16
Esempio
7
2
9
9
4
2
1
5
12
1
3
3
14
6
C=7
Altre regole di selezione del vertice
Random Insertion: si sceglie un vertice a caso fra quelli
non ancora inseriti nel ciclo
Cheapest Insertion: si sceglie il vertice che può essere
aggiunto al ciclo con il minimo aumento di costo
Una proprietà strutturale
Si dice che la matrice delle distanze di un grafo G
soddisfa la disuguaglianza triangolare se
comunque prendo un triangolo e1, e2, e3 in G si ha
cei + cej > cek per i ≠ j ≠ k, i, j, k ∈ {1, 2, 3}
5
6
4
5
7
4
Richiamo
G = (V, E) è un grafo euleriano se e solo se il
grado di ogni nodo è pari
Se G = (V, E) è un grafo euleriano e v è un vertice di G
allora è possibile costruire un percorso che inizia e finisce
in v e che attraversa ogni spigolo esattamente una volta
Teorema
Sia H = (V, F) un grafo completo con la matrice dei costi
che soddisfa la disuguaglianza triangolare. Sia G = (V, E)
un sottografo euleriano connesso di H. H contiene un
ciclo hamiltoniano di lunghezza al più Σe∈E ce
Dimostrazione (idea)
2
5
3
1
4
Euristica Double Tree
1. Calcola un minimo albero ricoprente K
2. Raddoppia gli spigoli di K, formando un percorso
euleriano
3. Ricava un ciclo hamiltoniano dal percorso euleriano
Indichiamo con zHDT il valore della soluzione che si
ottiene applicando l’euristica Double Tree
Da un percorso euleriano ad un ciclo
hamiltoniano
Consideriamo un percorso euleriano (v1, …, vk)
procedure obtain_hamiltonian ()
T = {v1}, i=2, v = v1
while |T| < n {
if vi ∉ T
T = T ∪ {vi}
collega v a vi
v = vi
i ++
}
collega v a v1
T è un ciclo hamiltoniano
Esempio
9
4
10
2
5
1
8
3
11
6
7
Tour (5,4,5,3,2,3,1,3,5,6,5,8,9,8,10,8,7,11,7,8,5)
Proprietà
Double tree è un algoritmo 2-approssimato per il TSP
Dimostrazione
1. z* > zTREE (1-albero è un rilassamento per TSP)
2. Per costruzione, la lunghezza del “doppio albero” è 2 * zTREE
3. zHDT < 2 * zTREE
Pertanto:
zHDT / z* < 2 * zTREE / zTREE = 2
Euristica di Christofides
1. Calcola un minimo albero ricoprente K
2. Sia V ’ ⊆ V l’insieme dei vertici che hanno grado
dispari in K
3. Trova il matching perfetto M di peso minimo sui nodi
V’
4. M ∪ K è un percorso euleriano
5. Ricava un ciclo hamiltoniano dal percorso euleriano
Indichiamo con zHCH il valore della soluzione che si
ottiene applicando l’euristica di Christofides
Esempio
9
4
10
2
5
1
3
8
11
6
7
Tour (1,2,3,6,5,4,9,8,10,11,7,8,5,3,1)
Nodi di grado dispari
Proprietà
Christofides è un algoritmo 3/2-approssimato per il TSP
Dimostrazione
1. z* > zTREE (1-albero è un rilassamento per TSP)
Siano {t1, t2, ..., t2k} i vertici di grado dispari del minimo albero
ricoprente etichettati nell’ordine in cui si incontrano nel ciclo
hamiltoniano ottimo.
2
Esempio:
T* = {1, 2, 3, 4, 5, 6}
3
1
4
Min albero ricoprente in rosso
{t1, t2, ..., t2k} = {1, 3, 5, 6}
6
5
Dimostrazione
Sia C il ciclo formato dai vertici {t1, t2, ..., t2k} e z(C) il suo costo.
Si ha che:
1.
C è l’unione di 2 matching perfetti:
{t1t2, t3t4, ... t2k-1t2k} ∪ {t2t3, t4t5, ... t2kt1}
quindi z(C) > 2 zM, con zM valore del matching perfetto di
costo minimo
2.
z(C) < z* per la disuguaglianza triangolare. Difatti ognuno
degli spigoli di C ha un costo minore o uguale al
corrispondente sottocammino in T
Pertanto, z* > z(C) > 2 zM, ovvero zM < z*/2
Quindi:
zHCH < zTREE + zM < z* + z*/2 < 3/2 z*
Il problema della bisaccia
Avete a disposizione un budget b per gli investimenti dell’anno
2002
Ad ogni progetto è associato
- un costo aj (> 0)
- un guadagno atteso cj (>0)
Problema
Scegliere l’insieme di progetti in modo che sia massimizzato il
guadagno atteso senza eccedere il budget b
Se ogni progetto può essere attivato non solo per intero ma anche
in parte si parla di knapsack continuo
Il knapsack continuo
Il problema
max ∑ j =1 c j x j
n
st
∑
n
j =1
ajxj ≤ b
(KRL)
0 ≤ x j ≤ 1 per j = 1, ..., n
è un rilassamento del problema di knapsack 0-1.
Infatti, la collezione degli insiemi ammissibili del problema di
knapsack 0-1 è contenuta nella regione ammissibile del problema
di knapsack continuo
Il knapsack continuo
Come si risolve knapsack continuo?
Essendo formulato come problema di Programmazione Lineare, si
può risolvere utilizzando il metodo del simplesso [ricordate che
la complessità del metodo del simplesso non è provato essere
polinomiale!]
In alternativa
Supponiamo di riordinare gli elementi della bisaccia in modo che:
c1 c2
cn
≥
≥ ... ≥
a1 a2
an
La soluzione
con
h
e sia h l’indice minimo per cui
∑a
j =1
j
>b
x1 = 1, x2 = 1,..., xh −1 = 1, xh = f , xh +1 = 0,..., xn = 0
h −1
⎛
⎞
⎜b − ∑aj ⎟
⎜
⎟
j
=
1
⎠
f =⎝
ah
è ottima per (KLR)
Dimostrazione
Supponiamo, senza perdita di generalità, che gli elementi del
problema soddisfino
cn
c1 c2
>
> ... >
a1 a2
an
e sia xLP = (x1, …, xn) la soluzione ottenuta con la formula
precedente. Consideriamo una soluzione x’ ottima, diversa da xLP.
Ora, x’ differisce da xLP per almeno un elemento x’k con k > h.
Difatti, se x’ fosse diversa da xLP soltanto perché x’h= 0, allora x’
non sarebbe ottima. Ciò significa che esiste un indice i < h tale che
xi < 1 e un indice k > h tale che x’k > 0.
Sia
d = min{ak x'k , ai (1 − xi )}
Per costruzione, d > 0. Consideriamo la soluzione:
Dimostrazione
x = ( x'1 , x'2 ,..., xi ,.., xk ,..., x'n )
che si ottiene da x’ sostituendo x’i e x’k con:
d
xk = x ' k −
ak
d
xi = x'i +
ai
x è ammissibile. Infatti:
∑ j =1 a j x j =∑ j =1 a j x' j +
n
n
ai d ak d
−
=b
ai
ak
Inoltre, cx > cx' . Infatti:
⎛ ci ck ⎞
n
n
⎜
⎟
c
x
c
x
d
=
'
+
−
>
∑ j =1 j j ∑ j =1 j j ⎜ a a ⎟ ∑ j =1 c j x' j
k ⎠
⎝ i
n
Ma, allora, la soluzione x’ non è ottima (contraddizione).
■
Bound primale per il knapsack
Il seguente algoritmo, applicato agli elementi della bisaccia riordinati
secondo il criterio
c1 c2
c
≥
≥ ... ≥ n
a1 a2
an
restituisce, invece una soluzione ammissibile per il problema di
knapsack:
Algorithm Greedy_knapsack ()
d = 0; z = 0;
for (j = 1; j < n; j ++) {
if (d + aj < b) then
xj = 1;
d = d + aj;
z = z + cj;
else xj = 0;
}
return z;
Osservazione
L’algoritmo greedy NON è un algoritmo approssimato
per il knapsack.
Difatti, consideriamo la seguente istanza:
a = {1, M} c = {2, M} e b = M.
L’algoritmo greedy restituisce la soluzione di valore 2,
scegliendo soltanto il primo oggetto dell’ordinamento,
mentre la soluzione ottima vale M.
Ricapitolando
Abbiamo definito per il knapsack 0-1 un upper bound con le
seguenti proprietà:
1. L’upper bound è “continuo”, nel senso che si ottiene dalla
soluzione di un problema di Programmazione Lineare e non da
un problema di OC
2. L’upper bound può essere calcolato con un algoritmo più
efficiente rispetto al metodo del simplesso, ma in ogni caso è
polinomiale
Domanda
Può essere generalizzata questa tecnica di rilassamento?
Sostituendo la “stipula” x ∈ {0, 1} con il vincolo 0 < x < 1 di una
formulazione di un problema di PL-{0,1}, si ottiene sempre un
rilassamento denominato Rilassamento Lineare.
Dualità
Definizione
Due problemi di ottimizzazione
z = max {f(x) : x ∈X}
w = min {g(y) : y ∈Y }
formano una coppia duale “debole” se f(x) < g(y) per ogni x ∈X e
y ∈Y.
Se z=w si dice che formano una coppia duale “forte”.
Vantaggio fondamentale rispetto al rilassamento
Per ottenere un bound attraverso il rilassamento, il problema
rilassato va risolto all’ottimo. Invece, per una coppia duale
ogni soluzione ammissibile y ∈Y (x ∈X) è un upper (lower)
bound per z (w)
Esempi
1. Il problema di trovare un matching di massima
cardinalità e quello di trovare un node cover di
minima cardinalità formano una coppia duale debole
per ogni grafo G
2. Il problema di trovare un insieme stabile di massima
cardinalità e quello di trovare un edge cover di
minima cardinalità formano una coppia duale debole
per ogni grafo G
Entrambe queste coppie di problemi godono della
dualità forte se G è bipartito (Teorema di Konig e
Teorema di Gallai)
Formulazioni
Consideriamo il seguente problema di Knapsack 0-1
max 5x1 + 2x2
st
3x1 + 4x2 < 6
x ∈ {0,1}2
Insiemi ammissibili
F = {(0, 0), (0, 1), (1, 0)}
Rappresentazione sul piano degli insiemi ammissibili
Insiemi ammissibili
x2
(0, 1)
(0, 0)
(1, 1)
(1, 0)
x1
Formulazione
Un poliedro P è una formulazione di un problema di OC
se e solo se
x2
P ∩ {0,1}n = F
x1
Il rilassamento lineare …
Il problema di knapsack 0-1
max 5x1 + 2x2
3x1 + 4x2 < 6
x ∈ {0,1}2
ha come rilassamento lineare
max 5x1 + 2x2
3x1 + 4x2 < 6
x1 > 0
x2 > 0
x1 < 1
x2 < 1
… è un poliedro …
x2
3x1 + 4x2 < 6
x2 < 1
x1 < 1
x1 > 0
x2 > 0
x1
… ovvero, è una formulazione
x2
x1
Gerarchia di formulazioni
Quando una formulazione è “migliore” di un’altra?
Definizione
Se un poliedro P1, formulazione di F, è contenuto in P2,
formulazione di F, diciamo che P1 è migliore di P2.
In generale
P1 ⊆ P2 ⊆ P3 …
Esiste una formulazione “ideale”?
Formulazione ideale
“Geometricamente” è il più piccolo poliedro contenente F
x2
x1
Come si ottiene la formulazione ideale?
Proprietà
Osservazione
Ogni vertice del poliedro “formulazione ideale” è in
corrispondenza biunivoca di un insieme ammissibile.
Definizione
Dati due vettori x1 e x2 di Rn si definisce combinazione
convessa il vettore
y = λ x1 + (1 – λ) x2 con λ ∈ [0, 1]
Esempio:
x1
y
x2
Involucro convesso
Definizione
L’insieme di tutti le possibili combinazioni convesse di
un insieme di vettori X di Rn prende il nome di
involucro convesso e si indica con conv (X)
Osservazione
conv (X) è un poliedro
Pertanto,
la formulazione ideale di F è conv (F)
Calcolo di conv (F)
In linea di principio …
Dati gli insiemi ammissibili
F = {(0, 0), (0, 1), (1, 0)}
y ∈ conv (F) se e solo se si può esprimere come:
⎛ y1 ⎞
⎛0⎞
⎛0⎞
⎛1 ⎞
⎜⎜ ⎟⎟ = λ1 ⎜⎜ ⎟⎟ + λ2 ⎜⎜ ⎟⎟ + λ3 ⎜⎜ ⎟⎟
⎝0⎠
⎝1 ⎠
⎝0⎠
⎝ y2 ⎠
λ1 + λ2 + λ3 = 1
λ1, λ2 , λ3 ≥ 0
… a questo punto
Attenzione
questo sistema è nello spazio Rn+m, se m sono gli
insiemi ammissibili.
Quindi
per ottenere la formulazione ideale devo “proiettare” il
sistema nello spazio Rn
A questo scopo utilizzo l’algoritmo di Fourier-Motzkin
(…) che mi consente di “eliminare” le variabili λ
Punto della situazione
Dato un problema di OC
1. Elenco tutti gli insiemi ammissibili
2. Rappresento gli insiemi ammissibili come vettori a
componenti in {0,1}
3. Scrivo l’involucro convesso applicando la definizione
4. Con l’algoritmo di Fourier-Motzkin elimino i
coefficienti della combinazione convessa e ottengo
una formulazione ideale nello spazio Rn
5. Applico il metodo del simplesso e trovo la soluzione
ottima
È efficiente questo algoritmo?
Efficienza del calcolo di conv(F)
Problemi
1. Gli insiemi ammissibili sono tipicamente in numero esponenziale
2. L’algoritmo di Fourier-Motzkin non ha complessità polinomiale
Però
Sappiamo che una formulazione ideale esiste sempre
Quindi
1. Caso MOLTO fortunato: ho una formulazione che è
proprio la formulazione ideale
2. Tento di approssimare la formulazione ideale
costruendo una gerarchia di formulazioni a partire
da una formulazione iniziale
Gerarchia di formulazioni
Quando una formulazione è “migliore” di un’altra?
Definizione
Se un poliedro P1, formulazione di F, è contenuto in P2,
formulazione di F, diciamo che P1 è migliore di P2.
In generale, una gerarchia di formulazioni è costituita
da un insieme di poliedri
P1 ⊆ P2 ⊆ P3 …
Esempio
Consideriamo un problema di knapsack con il vincolo
che l’oggetto k può essere scelto se e solo se nella
bisaccia sono stati scelti gli oggetti i e j.
Formulazione 1.
max
cTx
st
ax ≤ b
xk ≤ xi
xk ≤ x
j
x ∈ { 0 ,1 } n
Formulazione 2.
max
st
ax
cTx
≤ b
2 xk ≤ xi + x
x ∈ { 0 ,1 } n
j
Esempio (II)
Il rilassamento lineare della formulazione 1 è migliore
della formulazione 2.
Difatti, il vincolo
2 xk ≤ xi + x
j
è implicato dai vincoli
xk ≤ xi
xk ≤ x
j
Quindi, P1 ⊆ P2
Formulazione ideale
La formulazione del problema di knapsack NON è una
formulazione ideale
Domanda
Esistono casi “fortunati” in cui la formulazione coincide
con la formulazione ideale?
Sono in grado di “caratterizzare” le formulazioni ideali in
modo da riconoscerle in tempo polinomiale?
Il caso “fortunato”
Consideriamo il seguente problema di PL in forma
standard, in cui A è una matrice intera e b è un
vettore intero:
min cTx
Ax = b
x>0
con rg (A) = m < n
Se il problema ammette soluzione ottima finita, allora il
metodo del simplesso restituisce la soluzione ottima
in corrispondenza di una SBA del tipo:
-1
x
⎛
⎛
⎞
B
b⎞
B
*
⎟
x = ⎜⎜ ⎟⎟ = ⎜⎜
⎟
⎝ xN ⎠ ⎝ 0 ⎠
Il caso “fortunato” (II)
Osservazione
Se la base ottima B ha determinante det (B )=+ 1,
allora RL ha una soluzione intera.
Difatti:
⎛ α11 L α1m ⎞
⎟ è una matrice a
1 ⎜
−1
B =
⎜ M O M ⎟
componenti intere con
det( B) ⎜
⎟
⎝ α m1 L α mm ⎠
T
α ij = −1(i + j ) ⋅ det( Aij )
elementi della matrice aggiunta
Matrici unimodulari
Definizione
Una matrice A intera m × n (m < n) si dice
unimodulare se ogni sua sottomatrice B di
dimensioni m × m ha det (B) = {-1, 0, +1}.
Dall’osservazione precedente si ha che:
Teorema
Se A è una matrice unimodulare e b è un vettore intero,
il poliedro P = {Ax = b, x > 0} è intero.
■
Consideriamo ora il rilassamento lineare di una
formulazione di PL-{0,1}. In generale, sarà del tipo:
Matrici totalmente unimodulari
min cTx
Ax ≥ b
x>0
(P )
min cTx
Ax –Iy= b
x, y > 0
(P’ )
[la matrice A contiene i vincoli x ≥ 1]
Per portare questo problema in forma standard bisogna inserire le
variabili di slack y:
Sia B una matrice di base di (P ’). Essa può essere sempre scritta
(attraverso opportune permutazioni di righe e colonne) nella
forma:
⎛− I
⎜⎜
⎝ 0
D⎞
⎟⎟
E⎠
Matrici totalmente unimodulari
In generale, la matrice I sarà di ordine h (0 ≤ h ≤ m), e la matrice
E sarà di ordine (m -h).
Ora, det (B) = (+/-) det (E). Pertanto, [A –I] è unimodulare solo se
det (E ) = {-1, 0, +1} per ogni sottomatrice E di A di ordine
qualunque.
Definizione
Una matrice A si dice TOTALMENTE UNIMODULARE (TU) se ogni
sottomatrice quadrata di A ha determinante {0, +1, -1}.
Proprietà delle matrici TU
Una matrice A è TU se e solo se
i) la matrice trasposta AT è TU
ii) la matrice (A, I) è TU
Teorema
Hoffman-Kruskal [1956]
Sia A una matrice intera. Il poliedro P definito da Ax ≥
b, x ≥ 0 è intero per ogni vettore intero b se e solo
se A è TU.
Attenzione
Il teorema non vale se P = {x ∈ Rn; Ax =b}. Difatti P
può essere intero ma A non è TU. Esempio:
1
-1
1
1
1
0
1
0
0
Condizioni per la TU
Osservazione
Se A è TU, allora aij ∈{-1, 0, 1}
Teorema
A è TU se
i) aij ∈{-1, 0, 1}
ii) Ogni colonna ha al più due coefficienti non nulli
iii) Esiste una partizione (M1, M2) dell’insieme delle
righe M tale che ogni colonna j contenente due
coefficienti non nulli soddisfa
∑
i∈M 1
aij = ∑i∈M aij
2
Dimostrazione
Supponiamo che A non sia TU e sia B la più piccola
sottomatrice quadrata per cui det (B) ∉ {-1, 0, 1}.
Ora, B ha almeno 2 elementi non nulli per colonna
(altrimenti non sarebbe minimale).
Quindi, data la partizione (M1, M2), posso sommare le
righe in M1 e sottrarre le righe in M2, ottenendo il
vettore nullo.
Ciò implica che B è singolare, i.e. det (B)=0,
contraddizione.
Esempi di matrici TU
G (N, A) grafo diretto
2
3
e
a
d
c
1
b
h
g
A Matrice di incidenza
nodi-archi
M1= M, M2 = ∅
6
l
f
4
i
5
a
b c
d e f
g h i
l
1
0
0
0
0
0
0
0
2 -1 0
-1 1
1
0
0
0
0
0
3 0
0
0
0
-1 -1
0
1
1
0
4 0
-1 1
0
0
1
1
0
0
0
5 0
0
0
-1
0
0
-1 -1 0
1
6 0
0
0
0
0
0
0
-1
1 1
0
0
-1
Formulazione del problema di cammino minimo
Dati
G (N, A) grafo diretto, due nodi (s, t), vettore c ∈R+|A|
z =min ∑( i , j )∈A cij xij
st
∑
∑
∑
k∈∂ + ( i )
xik − ∑k∈∂ − ( i ) xki = 1 per i = s
k∈∂ + ( i )
xik − ∑k∈∂ − ( i ) xki = 0 per ogni i ∈V \ {s, t}
k∈∂ + ( i )
xik − ∑k∈∂ − ( i ) xki = −1 per i = t
x ∈ {0,1}|A|
Cammino minimo
z =min ∑( i , j )∈A cij xij
st
⎡1⎤
Ax = ⎢ 0 ⎥
⎢ ⎥
⎢⎣ − 1⎥⎦
x≥0
x ≤1
x ∈ {0,1}|A|
La stipula di interezza può essere
rimossa in quanto A è TU
Matrice di incidenza di grafi bipartiti
1
a
4
b
2
d
3
5
c
e
M2
1
2
3
4
5
a
1
0
0
1
0
b
0
1
0
1
0
c
0
1
0
0
1
d
0
0
1
1
0
e
0
0
1
0
1
M1
Esercizio
Quali problemi di OC noti ammettono una formulazione avente come
matrice dei coefficienti la matrice di incidenza di un grafo bipartito?
Matrici di incidenza
Domanda
Tutte le matrici di incidenza sono TU ?
NO!!!
a
3
1
b
c
2
a
b
c
1
1
1
0
2
0
1
1
3
1
0
1