Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria dei Modelli e dei Sistemi A.A. 2008/2009 Analisi della complessità di algoritmi risolutivi per il problema del massimo insieme stabile in grafi claw-free. Laureando: Marco Senatore Relatore: Prof. Gianpaolo Oriolo Co-Relatore: Dr. Yuri Faenza Tesi di Laurea Specialistica
Obiettivo della Tesi L’ obiettivo di questa Tesi consiste nell’analizzare la complessità: dell’algortimo di Minty per la soluzione del problema del massimo insieme stabile su grafi claw-free dell’estensione di tale algoritmo al caso pesato, revisionata sia da Schrijver che da Nakamura e Tamura.
Una questione aperta E’ noto che gli algoritmi menzionati hanno complessità polinomiale, ma non se ne conosce l’ordine. In letteratura le affermazioni al riguardo risultano contrastanti: Sia Minty che Nakamura e Tamura non forniscono dettagli. Lozin e Milanic danno una stima approssimativa pari ad O( n 7 ). Oriolo, Pietropaoli e Stauffer riportano O( n 6 ) Perché tale obiettivo ?
Sommario Il problema del massimo insieme stabile. Il problema del massimo insieme stabile. Risultati e contributi: Risultati e contributi: Complessità caso non pesato. Complessità caso pesato (con modifiche minori). Conclusioni e sviluppi futuri. Conclusioni e sviluppi futuri.
Il problema del massimo insieme stabile Def: Sia G = G(V,E) un grafo non orientato. Un sottoinsieme S di V è detto insieme stabile se per ogni coppia di vertici in S non esiste un arco di G che li collega. S PROBLEMA: Dato un grafo G il problema del massimo insieme stabile consiste nel trovare, tra tutti gli insiemi stabili di G, quello di cardinalità massima. PROBLEMA: Dato un grafo G ed una funzione di costo w: V → R + il problema del massimo insieme stabile pesato consiste nel trovare l’insieme stabile S di G che massimizza il valore Σw(s i ), per s i S.
Analisi della complessità È possibile descrivere la complessità di un algoritmo mediante una funzione che esprima l’ordine di grandezza del numero di operazioni elementari compiute, in funzione della dimensione dell’input (n). Un algoritmo si dice polinomiale se termina in un numero di passi limitato da un polinomio nella dimensione dell’input. Il problema del massimo stabile è NP-Completo, ovvero si congettura fortemente non possa essere risolto in tempo polinomiale.
I grafi claw-free Un grafo è claw-free se non ammette come sottografo indotto il claw. “Su un grafo claw-free il problema del massimo insieme stabile può essere risolto in tempo polinomiale.” Minty, 1980 I grafi claw-free furono inizialmente introdotti come generalizzazione dei line graph, evidenziando un profondo legame tra il problema del massimo stabile e quello del massimo matching su un grafo.
Il Matching Il problema del massimo insieme stabile su un grafo claw-free può essere considerato una generalizzazione del problema del matching, che, dato un grafo non orientato G, consiste nel trovare un matching massimo su di esso. Def: Sia G = G(V,E) un grafo non orientato. Un sottoinsieme M di E è detto matching se non ci sono in M due archi incidenti sullo stesso nodo. Un nodo su cui non insiste alcun arco di M si dice esposto. M Dato un grafo G(V,E) ed una funzione di costo w: E → R + il problema del massimo matching pesato consiste nel trovare il matching M di G che massimizza il valore Σw(e), con e M.
Line graph Dato un grafo G, il suo line graph L(G) si costruisce nel seguente modo: ogni vertice di L(G) corrisponde ad un arco di G; due vertici di L(G) sono adiacenti se e solo se i loro archi corrispondenti sono adiacenti in G. a b c f e d g h G g a b c d e f h L(G)
Line graph Un matching su un grafo G equivale ad uno stabile nel corrispondente line graph L(G). b a b c f e d g h G a c d e f h L(G) g
Problema del matching Def: Un cammino P su un grafo G(V,E) è detto alternante rispetto a un matching M su G, o M-alternante, se gli archi di P appartengono alternativamente a M e al suo complementare, E\M. Def: Un cammino M-alternante P è detto M-aumentante se entrambi i suoi vertici estremi sono esposti rispetto al matching M. P M TEOREMA (Berge, 1957; Norman e Rabin, 1959) Un matching M in un grafo G(V,E) è massimo se e solo se non ci sono cammini M-aumentanti in G.
L’algoritmo di Edmonds Edmonds per primo fornì un algoritmo che risolvesse il problema del matching in O(n 4 ): 1. M = 2.While ( un cammino M-aumentante P) do 3. Poni M = M ∆ P 4.End while 5.M è il massimo matching O(n 2 )
L’algoritmo di Minty Def: Dato un grafo G ed uno stabile S su di esso un cammino P = (v 0, v 1,....., v k ) è detto S-aumentante, se: precisamente uno tra v i-1 e v i appartiene ad S, per ogni i=1,......, k; v 0 e v k non appartengono allo stabile S; (S\{v 1, v 3,....., v k-1 }) {v 0, v 2,....., v k } è stabile. L’idea dell’algoritmo di Minty è di generalizzare l’algoritmo di Edmonds per la ricera del massimo matching. v0v0 v6v6 k=6 v0v0 v6v6
L’algoritmo di Minty Dato uno stabile S su G costruiremo un nuovo grafo H con un matching M su di esso e noteremo che: un cammino S-aumentante a-b su G TEOREMA Dato un grafo claw-free G ed uno stabile S su di esso, esiste uno stabile di cardinalità |S|+1 se e solo se esiste un cammino S-aumentante. 1. S = 2.For (a, b V \ S) do 3. if esiste un cammino S-aumentante tra a e b then 4. aumenta S e vai a 2 5. end if 6.End for 7.S è il massimo insieme stabile cercato un cammino M-aumentante su H
Il Pre-processamento Oss: Non tutte le coppie a e b ammettono un cammino S-aumentante P. I a ha un unico vicino s a S, mentre b ha un unico vicino s b S. asasa b sbsb II ogni v V \ S, v a, b, ha esattamente due vicini nello stabile. v III ogni s S, s s a, s b, ha almeno due vertici in S a distanza due s
Un’ idea dell’algoritmo Dividiamo l’insieme S in due sottoinsiemi: splittable S’ l’insieme dei vertici splittable S’’ = S \ S’ Consideriamo il sottografo di G indotto da (V \ S’, δ(S’’) ). Chiamiamo ogni sua componente bone.
a t sasa sbsb b s z Un’ idea dell’algoritmo
a t sasa sbsb b s z
z t s sasa a sbsb b sasa zz sbsb ss tt Introduciamo il grafo di Edmonds H Un’ idea dell’algoritmo
sasa zz sbsb ss tt P Introduciamo il grafo di Edmonds H
a t sasa sbsb b s z Un’ idea dell’algoritmo Abbiamo trovato un cammino a-b S-aumentante!
Complessità caso non pesato 1.Inizializzazione 1 // O(n 2 ) 2.While ( S non è di cardinalità massima ) do // O(n) 3. Inizializzazione 2 // O(n 3 ) 4. For a, b V \ S do // O(n 2 ) 5. Pre-processamento //O(n 3 ) 6. Creazione di S’ e di S’’ // O(n 2 ) 7. Creazione dei bone e di H // O(n 3 ) 8. Ricerca di un cammino M-aumentante su H // O(n 3 ) 9. Aggiornamento di S // O(n 2 ) 10. End for 11. End while O(n 6 ) ?
Complessità caso non pesato Abbiamo: Implementato in modo più efficiente i passi Pre- processamento e Creazione dei bone e di H, ottenendo O(n 2 ). Considerato la particolare istanza del problema del matching su H: Il matching su H è “quasi” perfetto E’ sufficiente una sola iterazione che ha costo O(n 2 )
Complessità caso non pesato 1. 1.Inizializzazione 1 // O(n 2 ) 2. 2.While ( S non è di cardinalità massima ) do // O(n) Inizializzazione 2 // O(n 3 ) For a, b V \ S do // O(n 2 ) Pre-processamento //O(n 2 ) Creazione di S’ e di S’’ // O(n 2 ) Creazione dei bone e di H // O(n 2 ) Ricerca di un cammino M-aumentante su H // O(n 2 ) Aggiornamento di S // O(n 2 ) End for End while O(n 5 )
Il caso pesato La costruzione mostrata fino ad ora si può estendere al caso pesato. Abbiamo: un grafo G = (V, E); una funzione w : V → R +. Problema: trovare un insieme stabile S che massimizza Σw(s i ), dove s i S Def : un insieme stabile S è detto estremo se ha il peso massimo tra tutti gli insiemi stabili di cardinalità |S|. Basterà trovare un algoritmo che ci permetta di passare da un qualsiasi stabile estremo S ad uno stabile estremo di cardinalità |S|+1.
LEMMA : Sia G = (V, E) un grafo claw-free, data w : V → R +, e sia S un insieme stabile estremo su G. Allora: (i) ogni circuito S-alternante senza corde C soddisfa w(VC \ S) w(VC S); (ii) se P è un cammino S-aumentante che massimizza w(VP \ S) - w(VP S), allora S ∆ VP è un insieme stabile estremo di cardinalità |S| + 1. Quindi per trovare un insieme stabile estremo di cardinalità |S| +1 è sufficiente trovare un cammino P S-aumentante che massimizza w(VP \ S) - w(VP S). Il caso pesato
(s, X) (s, Y) (t, X) (t, Y) L’algoritmo per il massimo matching pesato restituisce: cammini M-aumentanti che aumentano il peso del matching; cicli M-alternanti che aumentano il peso del matching. Potrebbe non corrispondere ad un circuito S- alternante senza corde Revisione di Schrijver Il caso pesato
La revisione di Schrijver (s,X) (t,Y) (s,Y) (t,X) s t z u1u1 v3v3 v2v2 v1v1 u2u2 Schrijver ovviò al problema, introducendo due ulteriori condizioni: 1.Una da incorporare nella fase di pre-processamento 2.Una da verificare in seguito alla creazione di S’ ed S’’
(s,X)(s,Y) (t,X) (t,Y) (z,X) (z,Y) s t z u1u1 v2v2 v1v1 u2u2 La revisione di Schrijver Al termine della revisione H non presenta cicli M-aumentanti
Complessità caso pesato 1.Inizializzazione 1 // O(n 2 ) 2.While ( S non è di cardinalità massima ) do // O(n) 3. Inizializzazione 2 // O(n 3 ) 4. For a, b V \ S do // O(n 2 ) 5. Pre-processamento //O(n 2 ) 6. Creazione di S’ e di S’’ // O(n 2 ) 7. Creazione dei bone e di H // O(n 2 ) 8. Ricerca di un massimo cammino M-aumentante su H // O(n(m+nlogn)) 9. Aggiornamento di S // O(n 2 ) 10. End for 11. End while O(n 5 + n 4 (m + nlogn)), m=O(n 2 )
Il collo di bottiglia Il collo di bottiglia corrisponde alla fase Il collo di bottiglia corrisponde alla fase Ricerca di un massimo cammino M-aumentante su H Necessità di risolvere un intero problema di massimo matching pesato L’algortimo di Gabow è il più efficiente: O(n(m+nlogn)) Possiamo migliorare? Probabilmente si Grazie alla revisione effettuata dobbiamo risolvere un’istanza particolare del problema del massimo matching pesato
Conclusioni e sviluppi futuri Complessità per il caso non pesato O(n 5 ) Complessità per il caso pesato O(n 5 + n 4 (m + nlogn)) → leggero miglioramento rispetto ad O(n 6 ) Migliorare l’efficienza nel caso pesato ottenendo O(n 5 ) Individuare ulteriori margini di miglioramento a partire dal numero di iterazioni
Applicazioni del problema del massimo insieme stabile Un’universita’ organizza una giornata sportiva per le matricole. Per dare massima rilevanza all’evento vuole massimizzare il numero di partite il Sabato alle 14, quando una troupe televisiva verra’ a filmare l’evento.
Applicazioni del problema del massimo insieme stabile Claudiopallavolo, salto in lungo Ginopallamano, pallavolo, baseball Giuliabasket, salto in lungo, baseball Lucapallavolo, corsa Mariarugby, corsa Mariocalcio, rugby Silviabasket, pallamano, salto in lungo Paolohockey su prato, pallamano, calcio pallavolo baseball salto in lungo corsa hockey su prato rugbycalcio basket pallamano
Analisi della complessità COMPLESSITA’ DI UN ALGORITMO: Misura del numero di passi che si devono eseguire per risolvere il problema. COMPLESSITA’ DI UN PROBLEMA: Complessità del migliore algoritmo che risolve il problema in questione EFFICIENZA ASINTOTICA: Come aumenta il tempo di esecuzione di un algoritmo al crescere della dimensione dell’input al limite LIMITE SUPERIORE ASINTOTICO: Se f(n) = O(g(n)) è il tempo di calcolo richiesto da un algoritmo Alg, diciamo che O(g(n)) è un limite superiore asintotico per la complessità di Alg.
P=NP ? P:= problemi di decisione che possono essere risolti in tempo polinomiale NP:= problemi di decisione le cui soluzioni positive sono verificabili in tempo polinomiale P=NP? Problemi NP-completi
Cammini S-aumentanti TEOREMA Dato un grafo claw-free G ed uno stabile S su di esso, condizione necessaria e sufficiente per l’esistenza di uno stabile con cardinalità maggiore è l’esistenza di un cammino S-aumentante. Dim: poiché la sufficienza segue ovviamente dalla definizione di cammino S- aumentante concentriamoci sulla necessarietà. Sia S’ uno stabile su G tale che |S’| > |S|. Si consideri il sottografo indotto da S’∆S: i nodi delle sue componenti hanno grado al più due perché altrimenti avrei il claw. S S’
Cammini S-aumentanti Le componenti di S’∆S possono essere solo cammini o cicli pari in cui si alternano elementi di S ed S’: Poichè |S’| > |S| esiste almeno una componente K che ha più nodi appartenenti ad S’ che ad S e, poiché soddisfa la definizione, K è un cammino S-aumentante.
L’algoritmo di Minty: preprocessamento Fissiamo a, b V \ S e assumiamo: a b, con deg(a) = deg(b) = 1; a e b hanno un vicino in S, s a e s b, con s a s b ; ogni v V \ S, con v a,b, ha esattamente due vicini in S; ogni s S, con s s a, s b, ha almeno due vertici in S ha distanza due; G è connesso. asasa b sbsb asasa b sbsb Consideriamo il cammino S-alternante: P = (v 0, s 1, v 1, , s k, v k ), con v 0 = a, v k = b. Allora: LEMMA : P è S-aumentante sse v i-1 e v i sono non adiacenti i = 1,......, k-1.
L’algoritmo di Minty Def : Dati u,v V\S: u v (ovvero u è simile a v) N(u) S = N(v) S u v Def : s S è splittable se N(s) può essere partizionato in due classi X,Y tali che: uv E u, v X oppure u,v Y, u, v N(s), con u v Y s w v z u u v ; z w ; z u ; w v. X
L’algoritmo di Minty Definiamo: S’ = {s S tale che s è splittable}; S’’ = S\S’. OSS : s a, s b appartengono ad S’, quindi sono splittable. Vale inoltre il seguente: LEMMA : Ogni vertice s S’ che ha almeno tre vertici in S a distanza due, appartiene ad S’. Ogni s S’’ ha al più due vertici in S a distanza due.
L’algoritmo di Minty Ora consideriamo il sottografo di G indotto da (V \ S’, δ(S’’) ). E’ un grafo bipartito; chiameremo ogni sua componente BONE. Ogni bone è costituito da una serie di vertici s 1, , s k in S’’ e da insiemi di vertici non vuoti e disgiunti V 0, V 1, , V k tali che s i è adiacente ad ogni vertice di V i-1 V i per ogni i = 1,...., k. Inoltre un bone ha due vicini in S’.
L’algoritmo di Minty Se togliamo da un cammino S-aumentante i vertici che appartengono ad S’, rimaniamo con un certo numero di sottocammini, ognuno dei quali è un cammino S’’-aumentante contenuto in qualche bone. Quindi i cammini S-aumentanti possono essere decomposti in cammini S’’- aumentanti che si congiungono tra loro tramite vertici splittable. Qui le classi X ed Y dei vertici splittable entrano in gioco, poiché le estremità dei due sottocammini che si congiungono in s S’ devono appartenere a classi diverse di s. X X YY st IL CAMMINO VERDE E’ S-AUMENTANTE
L’algoritmo di Minty Introduciamo il Grafo di Edmonds H = (W, F). W = {(s, X) | s S’, X classe di s} \ { (s a, {a}), (s b, {b}) } F = (i) { (s, X), (s, Y) } per s S’ \ {s a, s b } e X,Y le classi di s; (ii) { (s, X), (t, Y) } per i vertici di H (s, X), (t, Y) tali che esiste un cammino P S’’-aumentante che va da X ad Y. (t, X) (t, Y) (s, Y) (s, X) (z, X) (z, Y) (s a, N(s a ) \ {a}) (s b, N(s b ) \ {b})
L’algoritmo di Minty (t, X) (t, Y) (s, Y) (s, X) (z, X) (z, Y) (s a, N(s a ) \ {a}) (s b, N(s b ) \ {b}) Sia M il matching sugli archi di H del tipo (ii). Quindi M copre tutti i vertici di H eccetto (s a, N(s a ) \ {a}) e (s b, N(s b ) \ {b}). M
L’algoritmo di Minty LEMMA : G ha un cammino S-aumentante H ha un cammino M-aumentante (t, X) (t, Y) (s, Y) (s, X) (z, X) (z, Y) (s a, N(s a ) \ {a}) (s b, N(s b ) \ {b}) M t s z sasa a sbsb b IL MASSIMO INSIEME STABILE IN UN GRAFO CLAW-FREE PUO’ ESSERE TROVATO IN TEMPO POLINOMIALE.
L’implementazione: il pre-proc II proprietà: per ogni v V \ S, v a, b, definiamo un intero K v pari al numero di elementi appartenenti allo stabile che sono nell’intorno di v. per ogni v V \ S, v a, b per i quali K v = 2 definiamo un vettore bidimensionale F v in cui memorizziamo i vicini di v. v z K v = 1 v z w K v = 2 wzwz F v = Affinchè un nodo v V \ S, v a, b verifichi la II proprietà deve valere K v = 2.
L’implementazione: il pre-proc III proprietà: per ogni t S, s S, con t N(s) un vettore n-dimensionale A t tale che A t [s] è pari a z se z S è l’unico nodo dello stabile che appartiene a N 2 (s) N(t), a -1 altrimenti. per ogni s,z S, un vettore n-dimensionale B z tale che B z [s] indica il numero di nodi t S tali che A t [s] = z, ovvero il numero di vertici non appartenenti allo stabile che appartengono a N(s) N(z). per ogni s S, un intero R s pari al numero di nodi dello stabile nel secondo intorno di s. s z t w u A t [s] = z, B z [s] =2 A u [s] = w, B w [s] =1 R s = 2 Affinchè un nodo s S, s s a, s b verifichi la III proprietà deve valere R s ≥ 2.
LEMMA : Sia G = (V, E) un grafo claw-free, data w : V → R +, e sia S un insieme stabile estremo su G. Allora: (i) ogni circuito S-alternante senza corde C soddisfa w(VC \ S) w(VC S); (ii) se P è un cammino S-aumentante che massimizza w(VP \ S) - w(VP S), allora S ∆ VP è un insieme stabile estremo di cardinalità |S| + 1. Dim. : (i)Notiamo che S ∆ VC è uno stabile di cardinalità |S| e quindi poiché S e estremo vale w(S) ≥ w(S ∆ VC) = w(S) – w(VC S) + w(VC \ S) w(VC \ S) w(VC S) L’algoritmo di Minty nel caso pesato
(ii)Sia Z uno stabile estremo di cardinalità |S| + 1. Il sottografo indotto da S ∆ Z ha almeno una componente K tale che |K Z| = |K S| + 1. Poiché G è claw-free, K ha grado al più due, quindi K è un cammino S-aumentante. Definisco L : = (S ∆ Z) \ K. Allora S ∆ L e Z ∆ L sono insiemi stabili di cardinalità |S| e |S| + 1 rispettivamente. Poiché S è estremo vale w(S ∆ L) w(S). Ma w(S ∆ L) = w(S) – w(L S) + w(L \ S) w(L \ S) w(S L) w(L Z) w(S L). Analogamente dall’estremalità di Z segue w(L Z) ≥ w(S L). w(L Z) = w(S L) Z’: = Z ∆ L è ancora estremo con cardinalità |S|+1. Si nota che S ∆ Z’ ≡ K L = . Ricordiamo che K è un cammino S-aumentante: w(VP \ S) - w(VP S) ≥ w(K\ S) - w(K S) w (VP ∆ S) ≥ w(K ∆ S) = w(Z’) VP ∆ S è estremo. L’algoritmo di Minty nel caso pesato
Quindi per trovare un insieme stabile di cardinalità |S| +1 è sufficiente trovare un cammino P S-aumentante che massimizza w(VP \ S) - w(VP S). Rispetto al caso pesato dobbiamo solo aggiungere una funzione peso f per gli archi di H nel seguente modo: f ({ (s, X), (s, Y) } ) : = w(s); f ({ (s, X), (t, Y) } ) : = il massimo di w(VP \ S’’) - w(VP S’’) su tutti i cammini P da X ad Y S’’-aumentanti. PROBLEMA: Non sempre un matching di massimo peso su H conduce ad uno stabile di massimo peso in G
S= Trova un cammino S-aumentante P tale che S ∆ VP è estremale Aumenta S Itera L’algoritmo di Minty nel caso pesato