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