Programmazione Lineare INTERA III Matrici (totalmente) Unimodulari Def: A Zmxn si dice Unimodulare ogni sua sottomatrice quadrata di rango massimo ha determinante +1 o -1 Def: A Zmxn si dice Totalmente Unimodulare (TUM) ogni sua sottomatrice quadrata ha determinante +1 o -1 TH: se A e b sono interi e A è unimodulare allora il sistema Ax=b x0 ha soluzioni intere TH: se A e b sono interi e A è totalmente unimodulare allora i sistemi Ax b x0 e Ax b x0 hanno soluzioni intere Molti problemi su reti di flusso godono di questa proprietà Una matrice A con elementi 0, ±1 è TUM se valgono le seguenti condizioni: (cond suff) a) ogni colonna contiene al più due elementi non nulli; b) gli indici {1,…,m} delle righe di A possono essere partizionati in due insiemi tali che ogni colonna con i due elementi non nulli di segno: - uguale, allora gli indici delle righe corrispondenti appartengono a insiemi diversi; - opposto, allora gli indici delle righe corrispondenti appartengono allo stesso insieme. Ricordiamo la rappresentazione di un grafo tramite la matrice di incidenza nodi-archi: sia G=(N,A) un grafo orientato di n nodi N = {1..n} e m archi A = { (i,j) arco da i a j } allora la matrice E ha una riga iN e una colonna (ij)A. La colonna (i,j) ha valori: 0 in ogni componente i,j -1 nella componente i, +1 nella componente j. • Verificare se la matrice E di incidenza nodi-archi di un grafo orientato è TUM. Cosa ne consegue? I vincoli dei principali problem di flusso (cammino di costo minimo, flusso Massimo, flusso di costo minimo, accoppiamento) si descrivono attraverso la matrice di incidenza e il vettore dei termini noti • Cosa accade per grafi Non Orientati G=(V,E)? Nei grafi non orientati E ha solo componenti +1 e 0. esempio sia G=(N,A) il grafo orientato in figura, con n=6, m=8. Costruiamo la matrice E, di 6 righe e 8 colonne La colonna (i,j) ha valori: 0 in ogni componente i,j -1 nella componente i, +1 nella componente j. (12) (13) (24) (35) (43) (46) (52) (56) 2 1 2 3 4 5 6 -1 +1 4 -1 -1 +1 +1 -1 +1 +1 -1 -1 +1 +1 6 1 -1 -1 +1 3 5 esempio Ma se G=(N,A) non fosse orientato ? Costruiamo la matrice E, di 6 righe e 8 colonne La colonna (i,j) ha valori: 0 in ogni componente i,j +1 nella componente i, +1 nella componente j. 2 4 (12) (13) (24) (35) (43) (46) (52) (56) 1 2 3 4 5 6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 6 1 3 5 La matrice E è ancora totalmente unimodulare. E’ vero per tutti i grafi non orientati o esistono casi specifici in cui E non è TUM? Di che proprietà gode il grafo G? Proviamo a fare una visita in ampiezza da 1 colorando in modo alterno i nodi visitiati a livello pari e a livello dispari esempio visita in ampiezza da 1 colorando in modo alterno i nodi visitiati a livello pari e a livello dispari La procedura da lo stesso risultato a partire da ogni nodo!! 2 4 (12) (13) (24) (35) (43) (46) (52) (56) 1 2 3 4 5 6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 6 1 3 5 Grafi con questa propietà si dicono BIPARTITI Una definizione analoga è che contengono solo cicli con numero pari di archi Accoppiamento di massima cardinalità su grafo bipartito G=(N,A) è bipartito N=N1 N2 A N1N2 Gli archi descrivono le possibili coppie (matching) Quante coppie al più? Max ijA xij: jN2 xij1 iN1 iN1 xij1 jN2, xij{0,1} esercizio • Scrivere la matrice di incidenza del grafo in figura, numerando da 1 a n1 i nodi in N1 e da (n1+1) a (n1+ n2) i nodi in N2. 1 2 6 7 8 3 9 4 10 5 11 12 La matrice E dei vincoli è TUM • Dimostrazione: le colonne soddisfano alla condizione (a) (due soli elementi 0) e alla condizione (b) se partizioniamo gli indici delle righe secondo la partizione dei nodi corrispondenti nei due sottoinisiemi di nodi N1 e N2. • Posso risolvere il problema con la programmazione lineare l’accoppiamento di massima cardinalita’ su grafi bipartiti e’ un problema FACILE • Esistono algoritmi polinomiali appositi (+ efficienti del simplesso) • ? Quanto incide il fatto che il grafo sia bipartito? .... Th Konig Se G è bipartito allora Il matching di massima cardinalità ha lo stesso valore del vertex cover minimo (total dual integrality) Vertex Cover: Dato il grafo non orientato G=(V,E) determinare il numero MINIMO di vertici tali per cui ogni arco in E ha almeno uno dei due estremi selezionato Dim: sapendo che la matrice dei vincoli è TUM, scrivere il duale del problema di matching, verificare se la nuova matrice èTUM, e applicare il teorema forte di dualità Accoppiamento di massima cardinalità su grafo qualunque G=(V,E), E = insieme delle coppie possibili Max ijE xij: ijS(i) xij 1 iN xij{0,1} b e d a S(i) è l’insieme degli archi incidenti nel nodo i Ad esempio, la stella del nodo a è S(a) = {(a,b), (a,d), (a,c)} g f c Accoppiamenti e cicli dispari • La soluzione intera ha al + k/2 archi ciclo di k archi, con k dispari • La soluzione continua può avere valore ½ su ogni arco del ciclo Il vincolo ijCk xij k/2 per Ck ciclo dispari è una disuguaglianza valida Complessità del problema di matching di massima cardinalità su grafi qualsiasi Ck è un ciclo dispari di k archi Il politopo P={xij: ijS(i) xij 1 iN, ijCk xij k/2 Ck, 0xij1} è l’inviluppo convesso dei vettori di matching risolvo il problema con la PL se so descrivere tutti i vincoli..ma.. un numero esponenziale di cicli?? Se esiste una descrizione implicita polinomiale del politopo allora il problema è in P anche se il politopo ha un numero esponenziale di facce: Si può dimostrare che esiste un algoritmo polinomiale per la generazione dei tagli violati del tipo ijCk xij k/2 (separazione) la separazione per i vincoli ijCk xij k/2 è polinomiale il problema dell’accoppiamento di masssima cardinalità su grafi qualsiasi è polinomiale Infatti esistono algoritmi esatti ad hoc polinomiali Un altro esempio: il Minimum Spanning Tree Dato un grafo G=(V,E) non orientato un vettore dei costi c:E→R+, determinare il sottografo connesso di costo minimo Oss. Un albero di copertura T è un sottografo minimale per la connessione (rimuovendo un arco (i,j) qualsiasi da T l’insieme degli archi rimanenti non forma + un grafo connesso, e si crea un TAGLIO, cioè una partizione dei nodi V in due sottoinsiemi Q e V\Q con iQ, jV\Q non connessi fra loro), massimale per l’assenza di cicli (aggiungendo a T un qualsiasi arco (i,j), il nuovo grafo contiene un CICLO che include l’arco (i,j) ) Ciascuna delle due definizioni offre lo spunto per un modello valido di PLI. I due modelli (per tagli e per cicli) sono entrambi corretti (definiscono lo stesso insieme di punti interi) e con un numero esponenziale di vincoli, ma il loro rilassamento continuo (e il bound associato) è molto diverso. Un modello di PLI per il MST: modello basato sui tagli Min ijE cij xij tale che: ijE xij = n-1 cardinalità iQ,jQ xij 1 QV, Q connessione O(2n) xij{0,1} interezza Data una soluzione intera x* (sottografo di n-1 archi) del rilassamento dato dalla cancellazione di (alcuni dei) vincoli di connessione, esiste un algoritmo polinomiale per verificare la connessione del sottografo: visita sul grafo indotto dalla soluzione corrente x* . Utilizzando i soli archi (i,j) con xij*=1, a partire dal nodo 1 visito tutti i nodi raggiungibili. Se posso visitare tutti i nodi in V allora la soluzione e’ un albero di copertura. Se al contrario x* viola il vincolo di connessione per un certo insieme di nodi Q, tale vincolo viene introdotto esplicitamente nel modello, e si riottimizza il nuovo problema (procedimento iterativo) fino alla soluzione del problema. NB ad ogni iterazione risolvo un problema di PLI (potenzialmente richiede un B&B)… Possiamo fare meglio? Rilassamento continuo del modello basato sui tagli per il MST Min ijE cij xij tale che: ijE xij = n-1 cardinalità iQ,jQ xij 1 QV connessione O(2n) xij[0,1] rilassamento continuo dei vincoli di interezza Supponiamo di risolvere il rilassamento continuo di un modello rilassato ottenuto esplicitando solo un sottoinsieme dei vincoli di taglio. E’ possibile generare eventuali vincoli violati per mezzo di una procedura di complessità polinomiale? (….o equivalentemente…) …data una soluzione del rilassamento continuo x* esiste una procedura polinomiale per verificare il soddisfacimento di tutti i vincoli di connessione non presenti? Premesso che il problema di determinare la quantità massima di flusso che può attraversare una rete capacitata da un nodo s a un nodo t è un problema polinomiale (problema di flusso massimo) • Utilizzo x* come capacità degli archi, • Oriento la rete facendo corrispondere ad ogni [i,j]E una coppia di archi (i,j) e (j,i) A, • Risolvo un problema di flusso massimo per ogni scelta della coppia di nodi s e t fra i nodi della rete, se ogni flusso massimo ha valore 1 allora TUTTI I vincoli di taglio sono rispettati, inclusi quelli non esplicitati, altrimenti si genera il nuovo vincolo (è relativo al taglio di capacità minima associato al flusso massimo <1) e si riottimizza MST: modello basato sui tagli vs modello basato sui sottocicli Min ijE cij xij tale che: ijE xij = n-1 cardinalità iQ,jQ xij 1 QV connessione O(2n) xij{0,1} vincoli di interezza Abbiamo appena visto che è possibile risolvere il rilassamento continuo di questa formulazione in tempo polinomiale (poichè il problema di separazione lo è). Ho risolto il problema di MST senza dover fare branching? La soluzione ottenuta è intera? Questo modello è una formulazione ideale dell’MST? (l’ottimo del rilassamento continuo ha coordinate intere per ogni istanza?) NO!! (Può essere necessaria una fase di Branch & Bound..) Ma lo è una seconda formulazione di PLI. Si tratta della formulazione basata sui cicli in cui la struttura ad albero è imposta attraverso i vincoli di subtour breaking Min ijE cij xij tale che: ijE xij = n-1 cardinalità i,jQ xij |Q|-1 QV subtour breaking O(2n) xij{0,1} vincoli di interezza MST: modello per tagli vs modello per sottocicli Min ijE cij xij tale che: ijE xij = n-1 iQ,jQ xij 1 QV xij{0,1} FORMULAZIONI DI PLI EQUIVALENTI Min ijE cij xij tale che: ijE xij = n-1 i,jQ xij |Q|-1 QV xij{0,1} Pcut Zn Pcycle Zn Pcycle Pcut Min ijE cij xij tale che: ijE xij = n-1 iQ,jQ xij 1 QV xij[0,1] Pcut CONTIENE Pcycle Min ijE cij xij tale che: ijE xij = n-1 i,jQ xij |Q|-1 QV xij[0,1] Il politopo del rilassamento continuo della versione per tagli (detto Pcut) CONTIENE (è una formulazione meno aderente) il politopo del rilassamento continuo della versione per sottocicli (detto Pcycle). Teorema: Il politopo del rilassamento continuo della versione per tagli Pcut CONTIENE il politopo del rilassamento continuo della versione per sottocicli Pcycle. Min ijE cij xij t.c.: ijE xij = n-1 iQ,jQ xij 1 QV xij[0,1] Pcut CONTIENE Pcycle Min ijE cij xij t.c.: ijE xij = n-1 i,jQ xij |Q|-1 Q V xij[0,1] 1) dimostriamo che una generica soluzione di Pcycle appartiene anche a Pcut Consideriamo il vincolo di cardinalita’ ijE xij = n-1 Dato un qualunque sottoinsieme Q V, gli archi in E si possono suddividere tra quelli interni a Q, quelli interni a V\Q e quelli appartenenti al taglio d(Q) Quindi ijE xij = i,jQ xij + i,jV/Q xij + i,jd(Q) xij = n-1 Sia x una soluzione in Pcycle, allora x rispetta sia il vincolo di cardinalità che i vincoli di subtour breaking, per cui vale i,jQ xij |Q| - 1 i,jV/Q xij |V\Q| -1 da cui i,jd(Q) xij n-1 – (|Q|-1 + |V\Q|-1) = n -1 -n +2 =1 quindi x è anche una soluzione di Pcut Teorema: Il politopo del rilassamento continuo della versione per tagli Pcut CONTIENE il politopo del rilassamento continuo della versione per sottocicli Pcycle. 2) dimostriamo che esiste una istanza per cui una soluzione di Pcut non appartiene a Pcycle Consideriamo il grafo a sx in figura, in cui i costi degli archi sono rappresentati in blu. L’albero ottimo ha costo 2 (es l’albero formato dagli archi {(ab), (bc), (bd), (ae)}) Nella figura a dx è rappresentata in rosso la soluzione ottima di Pcut, di costo 3/2. Questo dimostra che Pcut non ha ottimo intero, quindi non è una formulazione ideale. Inoltre la soluzione ottima di Pcut non è ammissibile per Pcycle, infatti la somma delle variabili associate al set di nodi C=(b, c, d) ha valore 5/2=2.5 > 2. Non e’ possibile riallocare parte di tale valore sugli altri archi C senza aumentare il costo della soluzione (gli archi del ciclo C sono gli unici a costo 0) ne’ ridurne il valore senza violare il vincolo di cardinalita’ (S xijE = 4) a b a b 1 1 0 c 1/2 d 1 c 1/2 0 1 e 1/2 0 1 1/2 e d Teorema: Pcycle è una formulazione ideale per MST: Il politopo del rilassamento continuo della versione per sottocicli Pcycle ha opttimo intero per ogni istanza di MST Min ijE cij xij t.c.: ijE xij = n-1 i,jQ xij |Q|-1 Q V xij[0,1] Pcycle Domandiamoci se sia facile risolvere Pcycle. La polimialità dell’algoritmo dell’elissoide permette di dimostrare che la complessità dell’algoritmo di separazione è la stessa del problema. Quindi risolvere Pcycle è facile se, data x* soluzione ottima di un modello in cui solo un sottoinsieme dei vincoli di subtour breaking è stato esplicitato, è facile determinare, se esiste, un vincolo violato da x*. Si tratta di determinare se esiste un insieme di nodi Q: jiQ x*ij >|Q|-1 oppure verificare che non esiste. Si può ricondurre alla soluzione di un problema di Flusso Massimo utilizzando x* per la definizione delle capacità degli archi. Vedi slides in 08.PLI1b