Ottimizzazione Combinatoria Sistemi di Indipendenza Prof. Antonio Sassano Dipartimento di Informatica e Sistemistica Università di Roma “La Sapienza” A.A. 2010 Sistemi di Indipendenza • Insieme base Γ = {1,2,…,n} (elementi) • Insieme delle soluzioni ammissibili ( Fi ⊆ Γ ) S = { F1 , F2 , … , Fm } • S Sistema di Indipendenza (Independence System) ⇔ T ⊆ Fi ⇒ T∈ S • B è una Base di S ⇔ B∈S ∧ T⊃ B ⇒ T ∉ S • C è un Circuito di S ⇔ C∉S ∧ T⊂ C ⇒ T∈S 7 6 1 2 7 6 1 2 4 5 3 6 1 4 3 5 7 2 4 5 3 S Basi Circuiti Sistemi di Indipendenza T∈S ⇒ T è un indipendente di S T∉S ⇒ T è un dipendente di S Le basi definiscono il sistema di indipendenza T∈S ⇔ { T ⊆ B : B Base di S } Indipendenti = sottoinsiemi di Γ contenuti in qualche base .. anche i circuiti definiscono il sistema di indipendenza T∈S ⇔ { C ⊄ T : C Circuito di S } Indipendenti = sottoinsiemi di Γ che non contengono un circuito (ogni dipendente contiene un circuito) Sistemi di Indipendenza (esempio 1) S = {insiemi stabili di un grafo G(V,E)} Insiemi di nodi a coppie non adiacenti v1 v3 v2 v6 v4 v7 v9 v5 G(N,A) Elementi = nodi S = {∅ , { v1 }, {v1 , v2 }, … } v8 Circuiti = vi vh∈E T non stabile ⇔ contiene gli estremi di un arco Basi = stabili massimali T massimale ⇔ non contenuto propriamente in uno stabile Sistemi di Indipendenza (esempio 2) S = {“matching” di un grafo G(V,E)} Insiemi di archi a coppie non incidenti nello stesso nodo v1 v6 v3 v2 v4 v7 v9 v5 Elementi = archi S = {∅ , { v1v2 }, {v3v8}, { v1v2 ,v3v8}, … } v8 Circuiti = {ei ,eh} con ei , eh incidenti nello stesso nodo T non è un “matching” ⇔ (almeno) due archi incidenti Basi = “matching” massimali ( che non sono contenuti propriamente in un “matching” ) Sistemi di Indipendenza (esempio 3) S = {insiemi di foreste di un grafo G(V,E)} Elementi = archi w b a G(V,E) foresta ∧ F ⊆ E ⇒ H(V,F) foresta g d y e Notazione: G(V,F) foresta ⇔ F foresta Circuito = ciclo F non è una foresta ⇔ F contiene un ciclo Base = albero ricoprente Sistemi di Indipendenza (esempio 4) S = {insiemi di vettori linearmente indipendenti } Γ = { v 1 , v 2 ,..., v t } ⊆ R n Q∈S ⇔ ∑λ v j j Elementi = vettori = 0n ⇒ λ j = 0 j∈Q ∀j linearmente indipendenti Circuito = insieme minimale di vettori linearmente dipendenti Base = insieme massimale di vettori linearmente indipendenti v1 v2 v3 v4 1 -1 -1 0 B = {v 1 ,v 3 ,v 4 } Base 0 2 1 0 -1 -1 3 0 1 1 0 4 0 0 0 1 v1 v2 v3 v4 v5 0 0 -1 1 1 -1 -1 0 C = {v 1 ,v 2 ,v 3 } Circuito 2 1 0 -1 3 0 1 1 4 0 0 0 0 -1 0 1 v5 0 0 -1 1 Sistemi di Indipendenza (esempio 5) S = { insiemi di progetti “compatibili” con un “budget”} 3x1+2x2+x3+2x4 ≤ 5 “risorse” per il progetto Elementi = progetti “budget” S = {∅ , { 1 }, { 2 }, {1 , 2 }, {2, 3, 4 } … } Indipendenti = soluzioni di “knapsack” a coefficienti positivi Circuito = un insieme di progetti non “compatibile” {1 , 2 , 3} ma tale che ogni sottoinsieme è “compatibile” Base = insieme di progetti “compatibile” massimale {1 , 4 } Sistemi di Indipendenza (esempio 5) S = { sotto-sistemi di disequazioni ammissibili } (a) (b) (c) (d) (e) (f) x1-x2 x2-x3 x3-x1 x1-x4 x4-x5 x5-x1 ≤ ≤ ≤ ≤ ≤ ≤ 1 -3 1 -2 1 0 Elementi = disequazioni non ammissibile Circuito = un insieme di disequazioni non ammissibile {a,b,c} ma tale che ogni sottoinsieme è ammissibile Base = insieme di disequazioni ammissibile massimale {a,b,e,f} Sistemi di Indipendenza (esempio 6) Grafo connesso G(N,A) S = { insiemi di archi la cui rimozione non disconnette il grafo G(N,A) } v3 v8 v2 v6 v9 v1 v5 Elementi = archi v4 G(N,A) S = {∅ , {v1v8 }, {v1v8 ,v2v3},… } v7 T∈S ⇔ H ( N ,T ) connesso Circuiti = Tagli minimali ( non contengono propriamente un taglio) Base = Complemento di un albero ricoprente Sistemi di Indipendenza - Rango r(X) rango di un sottoinsieme X ⊆ Γ = max { | T |: T ⊆ X , T è un indipendente di S } • r(∅ ) = 0 e per X,Y ⊆ Γ • r(X ) ≤ r(Y) se X ⊆ Y [non-decrescente] • r(X) = IXI se e solo se X∈S • r(X )= IXI -1 ∧ r(X -{e} ) = IXI -1 ∀ e∈X se e solo se X è un circuito S r(A)=2 B A r(B)=0 Sistemi di Indipendenza – Rango (esempi) v3 v1 v2 Insiemi stabili v6 • r(X) = α(X) v4 v7 v9 v5 G(N,A) H v8 K v3 v1 v6 v4 v2 v7 v9 H v5 v8 K numero di stabilità • r(H) = 2 (ciclo) • r(K) = 1 (“clique”) “matching” • r(X) = ν(X) “matching number” • r(H) = 2 • r(K) = 1 Sistemi di Indipendenza – Rango (esempi) w Foreste b a T’ g T° d y e • r(T’) = 4 • r(T°) = 6 (“spanning tree”) Pianificazione degli Investimenti o “knapsack” 3x1+2x2+x3+2x4 ≤ 5 H = { 1, 2 , 3 } K = { 1, 2 } • r(H) = 2 • r(K) = 2 Sistemi di Indipendenza – Rango (esempi) Sotto-sistemi di disequazioni ammissibili x1-x2 ≤ 1 non ammissibile x2-x3 ≤ -3 x3-x1 ≤ 1 ammissibile x1-x4 ≤ -2 (a) x1-x2 ≤ 1 x4-x5 ≤ 1 (b) x2-x3 ≤ -3 x5-x1 ≤ 0 (d) x1-x4 ≤ -2 r({a,b,c}) = 2 (circuito) (e) x4-x5 ≤ 1 r({d,e,f}) = 2 (circuito) r({a,b,d,e}) = 4 (base) r({a,b,c,d,e}) = 4 (a) (b) (c) (d) (e) (f) Massimo Sottoinsieme Indipendente max { c(F): F è un indipendente di S } Problema di Ottimizzazione Combinatoria con funzione obiettivo lineare F* ottimo ⇒ c(F*) ≥ c(F) F∈S h∈F* ⇒ Ch ≥ 0 [ se Ch < 0 ⇒ c(F*- {h})> c(F*) CONT. ] ⇒ possiamo eliminare gli elementi con peso negativo Esempi: • Insieme stabile (o “matching”) di massimo peso • Albero ricoprente di massimo peso • Insieme di archi di costo massimo che non sconnette il grafo • Insieme di archi di costo minimo di un sottografo connesso (complemento del precedente) • Soluzioni di “knapsack” a coefficienti positivi insieme di progetti a vantaggio massimo Il Rango caratterizza S TEOREMA I1: F∈S ⇔ | F∩ X | ≤ r(X) ∀ X ⊆ Γ DIMOSTRAZIONE: Se F∈S ⇒ (F∩ X )∈ S ∀ X ⊆ Γ ⇒ ⇒ | F∩ X | = r(F∩ X ) ≤ r(X) ∀ X ⊆ Γ rango non decrescente Per il viceversa dobbiamo dimostrare che: F∉S ⇒ ∃ X ⊆ Γ : | F∩ X | > r(X) e infatti, se F∉S ⇒ |F| > r(F) ⇒ ⇒ per X = F abbiamo | F∩ X |=|F| >r(F)= r(X) ∃ X ⊆ Γ : | F∩ X | > r(X) Formulazione Rango (MIS) max { c(F): F è un indipendente di S } Problema di Ottimizzazione Combinatoria con funzione obiettivo lineare S = { x: vettore di incidenza di F∈S } Abbiamo dimostrato che: F∈S ⇔ | F∩ A | ≤ r(A) ∀ A ⊆ Γ | F∩ A |= prodotto interno dei vettori di incidenza di F ed A 1 0 xF = 1 1 1 1 xA = 0 1 x∈S ⇔ | F∩ A | = (xF)T(xA) F A F x x x = = ∑ e e ∑ e e∈Γ ∑x e∈A e ≤ r( A) ∀ A⊆Γ e∈A Formulazione Rango (MIS) max { c(F): F è un indipendente di S } Problema di Ottimizzazione Combinatoria con funzione obiettivo lineare S = { x: vettore di incidenza di F∈S } FORMULAZIONE: ∑ x e ≤ r ( A ), ∀A ⊆ Γ e∈A PR = x e ≥ 0 , e ∈ Γ (MIS) max cT x x ∈ PR ∩ {0 ,1} |Γ | PR rilassamento formulazione ottima Formulazione Circuiti F∈S ⇔ { C ⊄ F : C Circuito di S } C Circuito di S ⇒ r(C)=|C|-1 ∑ xe ≤ | C | −1, C circuito e∈C PC = ∑ xe ≤ r ( A ), ∀A ⊆ Γ e∈A P ⊃ P = xe ≥ 0 , e ∈ Γ C R x ≥ 0, e ∈ Γ TEOREMA I2: F∈S ⇔ xF∈PC DIMOSTRAZIONE: (PC e ≥ ∈Γ è una FORMULAZIONE) F∈S ⇒ xF∈PR ⇒ xF∈PC Se viceversa F∉S ⇒ esiste un circuito C⊆ F ⇒ F F ⇒ xe = 1 ∀e ∈ C ⇒ ∑ xe =| C | ⇒ xF∉ PC e∈C PC rilassamento formulazione ottima Formulazione Circuiti (Insieme stabile) S = {insiemi stabili di un grafo G(V,E)} Insiemi di nodi a coppie non adiacenti v1 v3 v2 v6 v4 v7 v9 v5 G(N,A) v8 Elementi = nodi S = {∅ , { v1 }, {v1 , v2 }, … } Circuiti = vi vh∈E x u + x v ≤ 1 , uv ∈ E PC = u ∈V xu ≥ 0 , Formulazione circuiti (“matching”) S = {“matching” di un grafo G(V,E)} Insiemi di archi a coppie non incidenti nello stesso nodo v1 v6 v3 v2 v4 v7 v9 v5 v8 Elementi = archi S = {∅ , { v1v2 }, {v3v8}, { v1v2 ,v3v8}, … } Circuiti = {e ,f} con e, f incidenti nello stesso nodo x e + x f ≤ 1, e , f ∈ δ ( v ) v ∈ V PC = x f ≥ 0, f ∈ E Formulazione ottima se e solo se il grafo è bipartito Formulazione Circuiti (Foreste) S = {insiemi di foreste di un grafo G(V,E)} Elementi = archi Circuito = ciclo w b a S g d y e ∑ x e ≤ | C | −1, C ciclo e∈C PC = x e ≥ 0 , e ∈ E Formulazione ottima! Formulazione “Cover” (“Knapsack”) S = { insiemi di progetti “compatibili” con un “budget”} 3x1+2x2+x3+2x4 ≤ 5 “risorse” per il progetto Elementi = progetti “budget” S = {∅ , { 1 }, { 2 }, {1 , 2 }, {2, 3, 4 } … } Indipendenti = soluzioni di “knapsack” a coefficienti positivi Circuito (“Cover”) = un insieme di progetti non “compatibile” ma tale che ogni sottoinsieme è “compatibile” ∑ x e ≤ | C | −1, C " cover" e∈C PC = x e ≥ 0 , e ∈ Γ Formulazione tagli (“grafo co-connesso”) Grafo connesso G(N,A) S = { insiemi di archi la cui rimozione non disconnette il grafo G(N,A) } v3 v8 v2 v6 v4 v9 v1 v5 G(N,A) v7 Elementi = archi S = {∅ , { sv1 }, {sv1 ,v2v3}, … } T∈S ⇔ H ( N ,T ) connesso Circuiti = Tagli minimali ∑ x e ≤ | K | −1, K taglio e∈K PC = x e ≥ 0 , e ∈ E Formulazione Circuiti: “grafo senza cicli negativi” Grafo connesso G(N,A) ce costo di un arco e∈A S = { insiemi di archi che non contengono cicli a costo totale negativo A B (324,2500) (-186,7600) x AB + x BA ≤ 1 x BA + x AC + xCB ≤ 2 ..... e <0 Elementi = archi (424,3600) (-326,5600) ∑c e∈C (-126,3600) (44,1600) } C Circuito = ciclo (orientato) a costo totale negativo ∑ xe ≤ | C | −1, C ciclo negativo e∈C PC = xe ≥ 0 , e ∈ E Formulazione circuiti Nel grafo dell’esempio Formulazione circuiti - complessità Quanti vincoli nelle formulazioni circuiti? x u + x v ≤ 1 , uv ∈ E PC = u ∈V xu ≥ 0 , Insieme stabile: | V |2 x e + x f ≤ 1, e , f ∈ δ ( v ) v ∈ V PC = x f ≥ 0, f ∈ E “matching”: | E |2 ∑ x e ≤ | C | −1, C ciclo PC = e∈C x e ≥ 0 , e ∈ E Cicli, “Cover” e Tagli possono essere in numero esponenziale! ∑ x e ≤ | C | −1, C " cover" PC = e∈C x e ≥ 0 , e ∈ Γ ∑ x e ≤ | K | −1, K taglio PC = e∈K x e ≥ 0 , e ∈ E Non possiamo neanche “scrivere” il rilassamento lineare! Un grafo planare con n nodi può contenere 2.27n cicli n=100 ⇒ 1034 cicli!! Abbiamo bisogno di potenziare il Metodo del Simplesso (per la PL) Metodo del Simplesso Dinamico