Ottimizzazione Combinatoria A. A. 2008-2009
Docente: Mara Servilio
Orario delle lezioni: Mercoledì 11:30-13:30; Giovedì 11:30-13:30 Orario di ricevimento: Mercoledì 15:00-17:00
E-mail: servilio@di.univaq.it
Sito web: http://www.di.univaq.it/~oil Testi di riferimento
1. A. Sassano, Modelli e Algoritmi della Ricerca Operativa 2. L. A. Wolsey, Integer Programming
3. W. J. Cook, W. H. Cunningham, W. R. Pulleyblank, A. Schrijver, Combinatorial Optimization
Un problema di logistica…
Un’azienda di spedizioni, proprietaria di alcuni treni merci, intende realizzare un servizio di spedizioni tra L’Aquila e Pescara via ferrovia.
L’azienda
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.
Dati:
– O = insieme dei possibili orari, ognuno con il proprio costo
– T =insieme dei treni disponibili, ognuno con il proprio “profitto”
Problema: Assegnare un sottoinsieme T’ ⊆ T di treni a un sottoinsieme O’ ⊆ O di orari in modo da
• massimizzare il guadagno (somma dei profitti – somma dei costi)
• rispettare i vincoli “fisici”.
Un problema di logistica…
L’azienda deve risolvere un problema di ottimizzazione.
Dati:
– L’intervallo di tempo necessario a percorrere ogni tratta della linea
– L’intervallo di tempo minimo e massimo di sosta in ogni stazione – Gli standard di sicurezza (due treni che viaggiano sulla stessa
linea devono essere separati da almeno k metri, ecc.) – L’orario esistente
Il gestore della rete deve risolvere un problema di ottimizzazione
Problema: Trovare (se esiste!) un orario che contenga il nuovo treno e che rispetti gli standard di sicurezza.
Un problema di logistica…
Problema di Ottimizzazione
Siano
• U = insieme universo, ossia un insieme di soluzioni, decisioni e alternative.
• F ⊆ U = insieme ammissibile definito tramite una serie di relazioni dette vincoli.
• f: U → ℜ = funzione obiettivo.
• Direzione di ottimizzazione: minimo o massimo.
Problema di ottimizzazione (in forma di minimo)
Trovare un elemento x*∈F tale che f(x*) < f(x) per ogni x∈F.
f(x*) = valore ottimo x* = soluzione ottima
Problema di Ottimizzazione Combinatoria
Siano
• N = {1,2,…,n} insieme finito.
• c vettore di pesi con coordinate cj definite per ogni j ∈N
• Insieme universo: U = {tutti i possibili 2|N| sottoinsiemi di N}
• Famiglia ammissibile: ℑ = {sottoinsiemi F di U che soddisfano una certa proprietà ℘}.
Problema di ottimizzazione combinatoria (in forma di minimo) min {
Σ
cj : S∈ℑ}S⊆N j∈S
Alcune 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.
Problema dell’assegnamento
Consideriamo 3 artigiani e 3 lavori da realizzare.
I costi richiesti da ogni artigiano per ogni lavoro sono riportati nella seguente tabella
10 15 12 2
14 7 10
1
3 2 1
A L
9 18 20 3
Problema: Assegnare esattamente un artigiano ad un lavoro in modo da minimizzare i costi totali.
Insiemi ammissibili
1. {(a1,l1); (a2,l2); (a3,l3)} di costo 34
3. {(a1,l3); (a2,l1); (a3,l2)} di costo 37 4. {(a1,l3); (a2,l2); (a3,l1)} di costo 49 5. {(a1,l2); (a2,l1); (a3,l3)} di costo 28 6. {(a1,l1); (a2,l3); (a3,l2)} di costo 38 2. {(a1,l2); (a2,l3); (a3,l1)} di costo 44
10 15 12 2
14 7 10
1
3 2 1
A L
9 18 20 3
La soluzione ottima ha valore 28.
I possibili assegnamenti, e quindi i possibili insiemi ammissibili, sono 3!
In generale, su un insieme di n elementi esistono n! insiemi ammissibili.
Problema dell’assegnamento
Problema dello zaino
Supponiamo di avere a disposizione un budget b per gli investimenti del 2009.
Associamo ad ogni possibile investimento j
• un costo cj > 0,
• un guadagno gj > 0.
Problema: Scegliere l’insieme di investimenti da effettuare in modo da massimizzare il guadagno e senza eccedere il budget a disposizione.
4 1 8 12 4
14 3
10 2
g c
1 2 3 Dimensione dello zaino: b = 5
Insiemi ammissibili
∅, {1}, {2}, {3}, {4}, {1,2}, {1,4}, {2,4}, {3,4}
Soluzione ottima {1,2} di valore 24
Il numero di insiemi ammissibili è pari al numero di possibili sottoinsiemi di un insieme di n oggetti, ossia 2n.
Se b =
Σ
cj / 2 gli insiemi ammissibili sono almeno 2n-1.j =1 n
Problema dello zaino
Problema del commesso viaggiatore (TSP)
Consideriamo n punti nel piano.
Per ogni coppia di punti (i, j) definiamo un costo cij > 0.
Problema: Determinare il tour di costo minimo.
5 3
8 7
4 6
1 2
Insiemi ammissibili: tutti i possibili tour del grafo.
In un grafo con n nodi esistono (n-1)!/2 tour.
2
5 4 6 1
3
8 7
Problema del commesso viaggiatore
(TSP)
Proprietà dei problemi di OC
1. Tutti i problemi di OC sono definiti su insiemi ammissibili finiti e numerabili.
2. Il valore della funzione obiettivo può essere calcolato in corrispondenza di ogni insieme ammissibile.
Esiste un algoritmo “universale” per i problemi di OC che si chiama enumerazione totale.
E’ possibile utilizzare l’enumerazione totale nella pratica?
Proprietà dei problemi di OC
Le operazioni eseguite da un moderno calcolatore in un anno sono pari a 3.15 ×1016.
4.02×102567 1.07 × 10301
1000000 31.62
9.97 1000
9.33×10157 1.27 × 1030
10000 10.00
6.64 100
3.6×106 1.02×103
100 3.16
3.32 10
2n n!
n2 n0.5
log n n
L’algoritmo di enumerazione totale impiegherebbe circa 2 anni per risolvere un problema di commesso viaggiatore con 20 punti nel piano.
Obiettivi di questo corso
1. Studiare tecniche matematiche che consentano di progettare algoritmi “efficienti” per i problemi di OC:
• Algoritmi ammissibili a complessità polinomiale (Assegnamento).
• Algoritmi ammissibili a complessità pseudo-polinomiale (Zaino).
• Algoritmi ammissibili a complessità non polinomiale (TSP).
• Algoritmi approssimati a complessità polinomiale (Zaino).
• Algoritmi euristici (Zaino, TSP).
2. Modellare problemi decisionali che derivano da applicazioni del mondo industriale come problemi di ottimizzazione.
Parte I:
Insiemi indipendenti e coperture
Problema 1: Il ballo (Berge)
• Ad un ballo sono presenti n ragazzi e n ragazze.
• Ciascun ragazzo riconosce k fidanzate tra le ragazze presenti.
Domanda: è possibile far ballare ciascun ragazzo con una delle sue fidanzate e ciascuna ragazza con uno dei suoi fidanzati?
• Ciascuna ragazza riconosce k fidanzati tra i ragazzi presenti.
Problema 1: Il ballo (Berge)
Formulazione: 4 ragazzi/ragazze con 3 fidanzate/fidanzati.
Asia
Bianca
Chiara
Daria
Alessio
Bruno
Cristian
Davide
U = insieme degli archi del grafo
ℑ = famiglia degli insiemi di archi che toccano ogni vertice esattamente una volta.
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 che esse si diano scacco reciproco?
Problema 2: Le torri
Formulazione: Due torri si danno scacco se si trovano sulla stessa riga o colonna.
U = insieme degli archi del grafo
ℑ = famiglia degli insiemi di archi che
toccano ogni vertice non più di una volta.
A B C D 1
2 3 4
A
B
C
D
1
2
3
4
Grafo intersezione righe-colonne
Problema 3: La battaglia di Inghilterra (Berge)
Nel 1941 le squadriglie inglesi erano composte di aerei biposto, ma alcuni 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: Grafo di compatibilità dei piloti U = insieme degli archi del grafo
ℑ = famiglia degli insiemi di archi che toccano ogni vertice al più
una volta.
Problema 3: La battaglia di Inghilterra (Berge)
Alì
Bob
Charlie
David
Evgenij
Fëdor Alì
Charlie Bob
Evgenij
Abbinamento (Matching)
Definizione: Dato un grafo G = (V, E), un abbinamento (matching) è un sottoinsieme A ⊆ E di archi a due a due non adiacenti.
In ciascuno dei problemi precedenti la soluzione corrisponde a un abbinamento su un grafo.
Asia
Bianca
Chiara
Daria
Alessio
Bruno
Cristian
Davide
A
B
C
D
1
2
3
4
Alì
Bob
David
Fëdor Alì
Charlie Bob
Evgenij
Tipologie di abbinamento
Definizione: Se |A*| > |A| per ogni abbinamento A di G, allora A* si dice massimo.
Definizione: Se G è bipartito, allora anche A si dice bipartito.
Definizione: Se |A| = |V|/2, allora A si dice perfetto.
Asia
Bianca
Chiara
Daria
Alessio
Bruno
Cristian
Davide
A
B
C
D
1
2
3
4
Alì
Bob
David
Fëdor Alì
Charlie Bob
Evgenij
Tipologie di abbinamento
Definizione: Se |A*| > |A| per ogni abbinamento A di G, allora A* si dice massimo.
Definizione: Se G è bipartito, allora anche A si dice bipartito.
Definizione: Se |A| = |V|/2, allora A si dice perfetto.
Definizione: Un abbinamento A si dice massimale se ogni elemento di E – A è adiacente ad almeno un elemento di A.
Insieme indipendente
Definizione: Dato un grafo simmetrico G = (V,E), un qualunque sottoinsieme S di vertici si dice indipendente se esso è costituito da elementi a due a due non adiacenti.
• S è detto insieme stabile (stable set)
Definizione: Un insieme stabile S si dice massimale se ogni elemento di V–S è adiacente ad almeno un elemento di S.
Definizione: Un insieme stabile S* si dice massimo se |S*| > |S|, per ogni insieme stabile S di G.
Esempi
Osservazione: L’insieme vuoto è un insieme indipendente.
Insieme indipendente massimale
Abbinamento massimale
Esempi
Insieme indipendente massimo
Abbinamento massimo
Copertura
Definizione: Dato un grafo simmetrico G = (V, E), un qualunque sottoinsieme T di vertici (F di archi) tale che ogni arco di E (vertice di V) incide su almeno un elemento di T (di F) si dice copertura.
• T è detto insieme trasversale (vertex cover).
• F è detto edge-cover.
Definizione: Una copertura X si dice minimale se X – {x} non è una copertura per ogni x∈X.
Definizione: Una copertura X* si dice minima se |X*| < |X|, per ogni insieme copertura X di G.
Esempi
Osservazione: L’insieme dei nodi V e l’insieme degli archi E di un grafo sono rispettivamente trasversale e edge-cover.
Trasversale minimale
Edge-cover minimale
Esempi
Trasversale minimo
Edge-cover minimo
Disuguaglianze duali deboli
Indichiamo con
• α(G) insieme stabile massimo di G.
• µ(G) abbinamento massimo di G.
• ρ(G) edge cover minimo di G.
• τ(G) trasversale minimo di G.
Teorema: Per un grafo G valgono le seguenti disuguaglianze 1. α(G) < ρ(G)
2. µ(G) < τ(G)
Disuguaglianze duali deboli
Dimostrazione: Siano
• X insieme indipendente di G, e
• Y edge-cover di G.
Poiché Y copre V, ogni elemento di X incide su almeno un elemento di Y.
D’altra parte, nessun elemento di Y copre contemporaneamente due elementi di X altrimenti i due elementi sarebbero adiacenti e quindi non potrebbero appartenere all’insieme indipendente X.
Pertanto, per ogni x∈X esiste un distinto y∈Y che lo copre, e quindi
|X| < |Y|.
Riscrivendo la precedente relazione per gli insiemi massimi X* e Y*, si ottiene
α(G) < ρ(G) Scambiando il ruolo di V ed E, si ottiene
µ(G) < τ (G)
Disuguaglianze duali deboli
Esempio
indipendente e edge-cover
α(G) = 3 ρ(G) = 3
α(G) = 3 ρ(G) = 3
Disuguaglianze duali deboli
Esempio
trasversale e abbinamento
µ(G) = 3 τ (G) = 3
µ(G) = 3 τ (G) = 3 Forse valgono sempre
con il segno “=“ ?
Disuguaglianze duali deboli
NO!!!
Forse valgono sempre con il segno “=“ ?
α(G) = 2 ρ(G) = 3
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 (2)
Teorema di Gallai
Esempio (1)
Teorema di Gallai
Esempio (2)
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 (2)
Dimostrazione (1): Sia S un insieme indipendente di G. Allora V–S è un insieme trasversale.
τ(G) < |V–S*| = n – α(G)
Dimostrazione
S
In particolare, |V–S|> τ (G).
Se consideriamo l’insieme indipendente massimo S*, otteniamo da cui ricaviamo
α(G) + τ(G) < n.
Dimostrazione (1): Viceversa, sia T un insieme trasversale di G.
Allora V–T è un insieme indipendente.
α(G) > |V–T *| = n – τ(G) In particolare, |V–T|< α (G).
Se consideriamo l’insieme trasversale minimo T *, otteniamo
da cui ricaviamo
α(G) + τ(G) > n.
T
non coperto da T
α(G) + τ(G) = n.
Considerando la condizione ottenuta precedentemente, possiamo concludere che
Dimostrazione
Dimostrazione (2): Sia G un grafo privo di nodi isolati e sia A*
l’abbinamento massimo di G. Indichiamo con VA* i nodi saturi rispetto ad A*.
Sia H un insieme minimale di archi tale che ogni nodo in V–VA* è estremo di qualche arco in H.
Segue che
Dimostrazione
VA*
|H| = |V–VA*| = n – 2|A*|
Osserviamo che l’insieme C = H ∪ A* è un edge-cover di G.
Dimostrazione (2):
Sicuramente, |C| > ρ (G).
Quindi
Dimostrazione
ρ(G) < |C| = |A*| + |H| = |A*| + n – 2|A*| = n – |A*| = n – µ(G) da cui ricaviamo ρ (G) + µ(G) < n.
Dimostrazione (2): Sia C il minimo edge-cover su G (|C| = ρ(G)).
Sia H = (V, C) il sottografo indotto da C.
Valgono le seguenti proprietà:
1) H è un grafo aciclico.
Dimostrazione
Infatti, se H contenesse cicli allora C non sarebbe un edge-cover minimo.
Dimostrazione (2):
2) Ogni cammino in H è composto di al più due archi.
Dimostrazione
Infatti, se H contenesse un cammino con 3 archi sarebbe sempre possibile rimuovere un arco e ottenere ancora un edge-cover.
L’esistenza di un tale cammino contraddirebbe il fatto che C è minimo.
Dimostrazione (2):
Dalle proprietà precedenti concludiamo che il grafo H = (V, C)
Dimostrazione
• ha |V| = n vertici;
• ha |C| = ρ(G) archi;
• può essere decomposto in N componenti connesse aventi la forma di “stella”
Dimostrazione (2):
Consideriamo l’i-esima componente connessa di H. Essa avrà:
• si nodi, e
• si – 1 archi.
Dimostrazione
Pertanto
n =
Σ
si ei =1 N
ρ(G) =
Σ
(si –1) = n – N ⇒ N = n – ρ(G)i =1 N
Sia A un abbinamento con un arco per ogni componente di H. Si ottiene µ(G) > |A| = n – ρ(G) ⇒ ρ (G) + µ(G) > n
Considerando la condizione ottenuta precedentemente, possiamo concludere che
ρ (G) + µ(G) = n.
Massimo insieme stabile
Formulazioni di PLI
Dati: G = (V,E), |V| = n, |E| = m.
Variabili decisionali:
xi =
1 se il vertice i appartiene allo stabile S 0 altrimenti
Formulazione:
max
Σ
xii∈V
xi + xj < 1 ∀ (i, j) ∈ E xi ∈ {0,1} ∀ i ∈ V
Rilassamento lineare del massimo insieme stabile
Rilassamento lineare
max
Σ
xii∈V
xi + xj < 1 ∀ (i, j) ∈ E xi > 0 ∀ i ∈ V
STABRL
Osservazione: La limitazione xi < 1 può essere omessa.
Indichiamo con αRL(G) il valore della soluzione ottima di STABRL.
Minimo edge cover
Formulazioni di PLI
Dati: G = (V,E), |V| = n, |E| = m.
Variabili decisionali:
yij =
1 se l’arco ij appartiene all’edge cover C 0 altrimenti
Formulazione:
min
Σ
yijij∈E
yij ∈ {0,1} ∀ (i, j) ∈ E
Σ
yij > 1 ∀ i ∈ Vij∈∂(i)
Rilassamento lineare del minimo edge cover
Rilassamento lineare
yij > 0 ∀ (i, j) ∈ E
EDGE-CRL
Osservazione: La limitazione yij < 1 può essere omessa.
Indichiamo con ρRL(G) il valore della soluzione ottima di EDGE-CRL.
min
Σ
yijij∈E
Σ
yij > 1 ∀ i ∈ Vij∈∂(i)
Dualità
Osservazione: I problemi STABRL e EDGE-CRL costituiscono una coppia primale-duale.
Inoltre
α(G) < αRL(G) e ρRL(G) < ρ(G) Pertanto
α(G) < αRL(G) = ρRL(G) < ρ(G)
Massimo matching
Formulazioni di PLI
Dati: G = (V,E), |V| = n, |E| = m.
Variabili decisionali:
yij =
1 se l’arco ij appartiene al matching M 0 altrimenti
Formulazione:
max
Σ
yijij∈E
yij ∈ {0,1} ∀ (i, j) ∈ E
Σ
yij < 1 ∀ i ∈ Vij∈∂(i)
Rilassamento lineare del massimo matching
Rilassamento lineare
yij > 0 ∀ (i, j) ∈ E
MATCHINGRL
Osservazione: La limitazione yij < 1 può essere omessa.
Indichiamo con µRL(G) il valore della soluzione ottima di MATCHINGRL.
max
Σ
yijij∈E
Σ
yij < 1 ∀ i ∈ Vij∈∂(i)
Minimo trasversale
Formulazioni di PLI
Dati: G = (V,E), |V| = n, |E| = m.
Variabili decisionali:
xi =
1 se il vertice i appartiene al trasversale T 0 altrimenti
Formulazione:
min
Σ
xii∈V
xi + xj > 1 ∀ (i, j) ∈ E xi ∈ {0,1} ∀ i ∈ V
Rilassamento lineare del minimo trasversale
Rilassamento lineare
min
Σ
xii∈V
xi + xj > 1 ∀ (i, j) ∈ E xi > 0 ∀ i ∈ V
TRASVRL
Osservazione: La limitazione xi < 1 può essere omessa.
Indichiamo con τRL(G) il valore della soluzione ottima di TRASVRL.
Dualità
Osservazione: I problemi MATCHINGRL e TRASVRL costituiscono una coppia primale-duale.
Inoltre
µ(G) < µRL(G) e τRL(G) < τ (G) Pertanto
µ(G) < µRL(G) = τRL(G) < τ (G)
Cammino alternante
Sia M un matching di G = (V, E).
Definizione: Un arco (i, j)∈E si dice accoppiato (libero) se (i, j)∈M ((i, j) ∉ M).
Definizione: Un vertice i∈V si dice accoppiato (esposto) se su di esso incide (non incide) un arco di M.
Definizione: Un cammino P sul grafo G si dice alternante rispetto a M se esso è costituito alternativamente da spigoli accopiati e liberi.
Definizione: Un cammino P alternante rispetto ad M che abbia entrambi gli estremi esposti si dice aumentante.
Cammino aumentante
Aumentare un matching
Teorema: Sia M un matching di G e sia P un cammino aumentante rispetto a M. La differenza simmetrica
M’ = (M – P) ∪ (P – M) = M ⊕ P è un matching di cardinalità |M| + 1.
M-P
P-M P-M
Dimostrazione
Dimostrazione: Sia M un matching di G e sia P un cammino aumentante rispetto a M. L’insieme
M’ = (M – P) ∪ (P – M) gode delle seguenti proprietà
1) M’ è un abbinamento. Infatti, se così non fosse allora esisterebbero almeno due archi adiacenti tra loro in M’. Questi archi
1) Non possono appartenere entrambi ad M–P altrimenti M non sarebbe un matching.
2) Non possono appartenere entrambi a P–M perché P è alternante.
Dimostrazione
Dimostrazione: Pertanto, l’unica possibilità è che un arco appartenga a M – P e l’altro a P – M. Ma, poiché i due archi devono essere adiacenti, essi devono necessariamente appartenere entrambi a P. In questo modo M’ conterrebbe un arco del matching appartenente anche al cammino e questo non è possibile per definizione di M’.
Dimostrazione
Dimostrazione: 2) M’ ha un elemento in più di M.
M – P
P – M
Sia |M| = m1 + m2 con m1 = |M – P| e m2 = numero di archi del matching appartenenti al cammino.
Poiché |P – M|= m2 + 1, si ottiene
|M’| = |M – P| + |P – M| = m1 + m2 + 1 = |M| + 1.
Teorema di Berge
Teorema (Berge,1957): Un matching M di G è massimo se e solo se G non ammette cammini alternanti rispetto a M che siano anche aumentanti.
Dimostrazione (⇒⇒⇒⇒): Segue direttamente dal teorema precedente.
Dimostrazione (⇐⇐⇐): Facciamo vedere che, se non esistono ⇐ cammini aumentanti rispetto a un certo matching M, allora quel matching M è massimo.
Supponiamo che G ammetta un matching M’ con un elemento in più di M.
Vogliamo dimostrare che allora esiste un cammino aumentante per M.
Teorema di Berge
Dimostrazione (⇒⇒⇒⇒): Consideriamo il sottografo G’ di G individuato dall’insieme di archi
F = (M ∪M’)\ (M∩M’) e da tutti i loro estremi.
Poiché M e M’ sono matching, ogni vertice di G’ ha grado < 2.
Quindi le componenti connesse di G’ o sono percorsi o sono cicli.
Teorema di Berge
Dimostrazione (⇒⇒⇒⇒): Nessun ciclo può essere dispari altrimenti M e M’ non sarebbero due abbinamenti.
Non tutti i percorsi possono essere pari altrimenti |M| = |M’|.
Quindi, senza perdità di generalità, possiamo assumere che esista un percorso dispari che inizia e termina con un arco di M’.
Questo percorso è aumentante per M.
Non possono essere tutti cicli pari altrimenti |M| = |M’|. Deve esistere una componente connessa che è un percorso.
Un possibile algoritmo
M = ∅∅∅; // Inizializzazione∅ trovato = TRUE;
while (trovato) {
search (M, &trovato);
if (trovato)
aumenta (G, &M);
}
Come è fatta search (G, M, &trovato)?
Teorema del cammino aumentante
Consideriamo M ⊕ M*.
Teorema: Sia v un vertice esposto in un matching M. Se non esiste un cammino aumentante per M che parte da v, allora esiste un matching massimo avente v esposto.
Dimostrazione: Sia M* un matching massimo in cui v è accoppiato.
Dimostrazione
Dimostrazione:
Poiché M e M* sono due abbinamenti e v è accoppiato in M*, si ha che M ⊕ M* non può contenere un cammino
v
perché aumentante per M.
v
Però, contiene un cammino
Pertanto, scambiando gli archi blu con quelli rossi è possibile ottenere da M* un altro abbinamento massimo con esposto.
Un possibile algoritmo (ΙΙ)
M = ∅∅∅; trovato = FALSE;//Inizializzazione∅ for (v ∈∈ V) {∈∈
if (v è esposto) {
search (v, M, &trovato, &q);
if (trovato)
aumenta (q, v, &M);
else
//cancella v e tutti gli //archi incidenti in v
cancella (v, &G);
}
Scopo della funzione search:
trovare un cammino aumentante rispetto a M, oppure dire che non esiste.
Parametri
v nodo esposto;
M matching;
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
Ricerca di cammini aumentanti
search (v, M, *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, M, q, trovato, &LIST);
else
esplora_dispari (i, M, &LIST);
if (trovato) return;
} }
Ricerca di cammini aumentanti (ΙΙ)
esplora_pari (i, M, *q, *trovato, *LIST) { for (j ∈∈ δ∈∈ δδδ(i)) {
if (j ∉∉ M) {∉∉
*q = j;
*trovato = TRUE;
pred (q) = i;
return;
}
if (j ∈∈ M && label (j) == NULL) {∈∈ pred (j) = i;
label (j) = DISPARI;
push (j, LIST);
} }
}
esplora_dispari (i, M, *LIST) {
j = vertice accoppiato ad i in M;
if (label (j) == NULL){
pred (j) = i;
label (j) = PARI;
push (j, LIST);
} }
Ricerca di cammini aumentanti (ΙΙΙ)
Esempio
v, PARI
DISPARI DISPARI DISPARI
PARI PARI PARI
q, ESPOSTO
Sia M il matching rosso
Esempio
v, PARI
DISPARI DISPARI DISPARI
PARI
PARI PARI
Sia M il matching rosso
Esempio
v
q
Un problema
v, P D
D
D P
P
D oppure P ?
Correttezza
Teorema: Se i vertici di G sono etichettati in modo
“unico” dalla procedura search rispetto ad un matching M, 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 M* un matching massimo, e siano
• X1: insieme dei nodi x di X accoppiati rispetto ad M*.
• X2: insieme dei nodi x di X esposti rispetto ad M*.
Dimostrazione
X1
X2
Nodi raggiungibili
Definizione: Un nodo y ∈ Y1 è raggiungibile se esiste P alternante rispetto ad M* da x in X2 tale che l’ultimo arco non appartiene ad M*.
Y1: insiemi dei nodi y di Y raggiungibili da x in X2.
Osservazione: Per definizione i nodi in Y1 sono accoppiati, altrimenti M* non sarebbe massimo.
Infine: Y2: Y – Y1
X1
X2
Dimostrazione
Y1
Y2
Y2
X1
X2
Dimostrazione
Consideriamo il seguente insieme di nodi
Z = {z1, z2, …, zµ(G)} con zi = yi se yi è raggiungibile zi = xi altrimenti
e dimostriamo che è un trasversale.
Y1
Y2
Y2
Dimostrazione
X1
Y1
Y2
X2
Dimostriamo che non esistono archi da nodi in X2 verso nodi in Y non coperti da Z. Infatti,
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 necessariamente deve essere coperto.
Y2
Dimostrazione
X1
Y1
Y2
X2
Dimostriamo che non esistono archi da nodi in X1 verso nodi in Y non coperti da Z.
Consideriamo l’arco 1, da X1 a Y2. Se non fosse coperto allora il nodo y1, estremo dell’arco del matching, sarebbe raggiungibile.
Ma allora esisterebbe un cammino aumentante e il matching non sarebbe massimo.
1
y1
Y2
Dimostrazione
X1 Y
1
Y2
X2
Consideriamo un arco da X1 a Y1, ad esempio l’arco 2.
Se non fosse coperto allora il nodo y2 non sarebbe raggiungibile, ovvero non apparterrebbe ad Y1 (contraddizione).
y2 x1
2
Pertanto Z è un trasversale di cardinalità pari a µ(G).
Y2