Slide 1 - Università degli Studi di Roma "Tor Vergata"

Università degli Studi di Roma Tor Vergata
Facoltà di Ingegneria
Corso di Laurea in Ingegneria dei Modelli e dei Sistemi
A.A. 2008/2009
Tesi di Laurea Specialistica
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
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
Perché tale obiettivo ?
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( n7 ).
 Oriolo, Pietropaoli e Stauffer riportano O( n6 )
Sommario


Il problema del massimo insieme stabile.
Risultati e contributi:



Complessità caso non pesato.
Complessità caso pesato (con
modifiche minori).
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(si), per si  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
“Su un grafo claw-free il problema del massimo insieme stabile può essere
risolto in tempo polinomiale.”
Minty, 1980
Un grafo è claw-free se non ammette come sottografo indotto il claw.
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.
M
Un nodo su cui non insiste alcun arco di M si dice
esposto.
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.
b
L(G)
c
G
c
a
b
a
d
d
f
f
e
g
e
h
g
h
Line graph
Un matching su un grafo G equivale ad uno stabile nel corrispondente line graph
L(G).
b
L(G)
c
G
c
a
b
a
d
f
d
f
e
g
h
e
g
h
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.
P
M
Def: Un cammino M-alternante P è detto M-aumentante se entrambi i suoi vertici
estremi sono esposti rispetto al matching 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(n4):
1. M = 
2. While ( un cammino M-aumentante P)
do
3.
Poni M = M ∆ P
4. End while
5. M è il massimo matching
O(n2)
L’algoritmo di Minty
L’idea dell’algoritmo di Minty è di generalizzare l’algoritmo di Edmonds per la
ricera del massimo matching.
Def: Dato un grafo G ed uno stabile S su di esso un cammino P = (v0, v1, ....., vk) è
detto S-aumentante, se:
 precisamente uno tra vi-1 e vi appartiene ad S, per ogni i=1, ......, k;
 v0 e vk non appartengono allo stabile S;
(S\{v1, v3, ....., vk-1})  {v0, v2, ....., vk} è stabile.
k=6
v0
v6
v0
v6
L’algoritmo di Minty
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.
5.
aumenta S e vai a 2
end if
6. End for
7. S è il massimo insieme stabile cercato
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
 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 sa  S, mentre b ha un unico vicino sb 
S.
a
II ogni v  V \ S, v  a, b, ha esattamente due vicini nello
stabile.
v
III ogni s  S, s  sa, sb, ha almeno due vertici in S a distanza
due
s
sa
sb
b
Un’ idea dell’algoritmo
Dividiamo l’insieme S in due sottoinsiemi:
 S’ l’insieme dei vertici splittable
 S’’ = S \ S’
Consideriamo il sottografo di G indotto da (V \ S’, δ(S’’) ).
Chiamiamo ogni sua componente bone.
Un’ idea dell’algoritmo
s
a
sa
sb
t
z
b
Un’ idea dell’algoritmo
s
a
sa
sb
t
z
b
Un’ idea dell’algoritmo
Introduciamo il grafo di Edmonds H
a
sa
s
s
s
sa
sb
t
t
t
z
z
z
sb b
Un’ idea dell’algoritmo
Introduciamo il grafo di Edmonds H
s
s
sa
P
t
sb
t
z
z
Un’ idea dell’algoritmo
s
a
Abbiamo trovato un cammino a-b
S-aumentante!
sa
sb
t
z
b
Complessità caso non pesato
1. Inizializzazione1
// O(n2)
2. While ( S non è di cardinalità massima ) do // O(n)
3.
Inizializzazione2 // O(n3)
4.
For a, b  V \ S do // O(n2)
5.
Pre-processamento //O(n3)
6.
Creazione di S’ e di S’’ // O(n2)
7.
Creazione dei bone e di H // O(n3)
8.
Ricerca di un cammino M-aumentante su H // O(n3)
9.
Aggiornamento di S // O(n2)
10.
End for
11. End while
O(n6) ?
Complessità caso non pesato
Abbiamo:
 Implementato in modo più efficiente i passi Preprocessamento e Creazione dei bone e di H, ottenendo O(n2).
 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(n2)
Complessità caso non pesato
1. Inizializzazione1
// O(n2)
2. While ( S non è di cardinalità massima ) do // O(n)
3.
Inizializzazione2 // O(n3)
4.
For a, b  V \ S do // O(n2)
5.
Pre-processamento //O(n2)
6.
Creazione di S’ e di S’’ //
7.
Creazione dei bone e di H // O(n2)
8.
Ricerca di un cammino M-aumentante su H // O(n2)
9.
Aggiornamento di S // O(n2)
10.
End for
11. End while
O(n2)
O(n5)
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(si), dove si  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.
Il caso pesato
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
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.
(s, X)
(s, Y)
Potrebbe non corrispondere ad un circuito Salternante senza corde
(t, X)
(t, Y)
Revisione di Schrijver
La revisione di Schrijver
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’’
1
v3
2
(s,X)
u2
s
(s,Y)
2
1
1
1
z
v2
t
3
1
u1
3
3
1
2
2
3
v1
(t,X)
(t,Y)
La revisione di Schrijver
(s,X)
(s,Y)
2
1
u2
s
2
1
2
1
z
v2
(z,X)
t
1
1
u1
2
2
(z,Y)
v1
2
2
2
1
(t,X)
(t,Y)
Al termine della revisione H non presenta cicli M-aumentanti
Complessità caso pesato
1. Inizializzazione1
// O(n2)
2. While ( S non è di cardinalità massima ) do // O(n)
3.
Inizializzazione2 // O(n3)
4.
For a, b  V \ S do // O(n2)
5.
Pre-processamento //O(n2)
6.
Creazione di S’ e di S’’ // O(n2)
7.
Creazione dei bone e di H // O(n2)
8.
Ricerca di un massimo cammino M-aumentante su H // O(n(m+nlogn))
9.
Aggiornamento di S // O(n2)
10.
End for
11. End while
O(n5 + n4(m + nlogn)) , m=O(n2)
Il collo di bottiglia



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(n5)
 Complessità per il caso pesato O(n5 + n4(m +
nlogn)) → leggero miglioramento rispetto ad O(n6)
 Migliorare l’efficienza nel caso pesato ottenendo
O(n5)
 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
Claudio
pallavolo, salto in lungo
Gino
pallamano, pallavolo, baseball
Giulia
basket, salto in lungo, baseball
Luca
pallavolo, corsa
Maria
rugby, corsa
Mario
calcio, rugby
Silvia
basket, pallamano, salto in lungo
Paolo
hockey su prato, pallamano, calcio
pallavolo
salto in lungo
baseball
hockey su prato
basket
pallamano
corsa
rugby
calcio
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 Saumentante 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, sa e sb , con sa  sb ;
a
 ogni v  V \ S, con v  a,b , ha esattamente due vicini in S;
sa
sb
 ogni s  S, con s  sa , sb , ha almeno due vertici in S ha distanza due;
 G è connesso.
Consideriamo il cammino S-alternante:
P = (v0 , s1 , v1 , ........, sk , vk) , con v0 = a , vk = b. Allora:
LEMMA : P è S-aumentante sse vi-1 e vi sono non adiacenti  i = 1, ......, k-1.
a
sa
sb
b
b
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,
Y
 u, v  N(s), con u  v
• u v ;
z
u
X
s
w
•zw;
v
•zu;
• w  v.
L’algoritmo di Minty
Definiamo:
• S’ = {s  S tale che s è splittable};
• S’’ = S\S’.
OSS : sa, sb 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 s1, ..........., sk in S’’ e da insiemi di
vertici non vuoti e disgiunti V0 , V1, ..........., Vk tali che si è adiacente ad ogni
vertice di Vi-1  Vi 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.
Y
X
X
s
Y
t
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} \ { (sa, {a}), (sb, {b}) }
F = (i) { (s, X), (s, Y) } per s  S’ \ {sa , sb} 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.
(s, Y)
(s, X)
(sa , N(sa) \ {a})
(z, Y)
(t, X)
(t, Y)
(z, X)
(sb , N(sb) \ {b})
L’algoritmo di Minty
Sia M il matching sugli archi di H del tipo (ii). Quindi M copre tutti i vertici di H
eccetto (sa , N(sa) \ {a}) e (sb , N(sb) \ {b}).
(s, Y)
(s, X)
M
(sa , N(sa) \ {a})
(z, Y)
(t, X)
(t, Y)
(z, X)
(sb , N(sb) \ {b})
L’algoritmo di Minty
LEMMA : G ha un cammino S-aumentante  H ha un cammino M-aumentante
(s, Y)
(sa , N(sa) \ {a})
M
(s, X)
(z, Y)
(t, X)
(t, Y)
(z, X)
(sb , N(sb) \ {b})
a
b
sa
t
s
z
IL MASSIMO INSIEME STABILE IN UN GRAFO CLAW-FREE PUO’
ESSERE TROVATO IN TEMPO POLINOMIALE.
sb
L’implementazione: il pre-proc
II proprietà:
• per ogni v  V \ S, v  a, b, definiamo un intero Kv 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 Kv = 2 definiamo un vettore
bidimensionale Fv in cui memorizziamo i vicini di v.
z
v
w
z
v
Kv = 1
Kv = 2
Fv =
w
z
Affinchè un nodo v  V \ S, v  a, b verifichi la II proprietà deve valere Kv =
2.
L’implementazione: il pre-proc
III proprietà:
• per ogni t  S, s  S, con t  N(s) un vettore n-dimensionale At tale
che At [s] è pari a z se z  S è l’unico nodo dello stabile che appartiene a
N2(s)  N(t), a -1 altrimenti.
• per ogni s,z  S, un vettore n-dimensionale Bz tale che Bz [s] indica il
numero di nodi t  S tali che At [s] = z, ovvero il numero di vertici non
appartenenti allo stabile che appartengono a N(s)  N(z).
• per ogni s  S, un intero Rs pari al numero di nodi dello stabile nel
secondo intorno di s.
t
s
w
z
 At [s] = z , Bz [s] =2
 Au [s] = w , Bw [s] =1
u
 Rs = 2
Affinchè un nodo s  S, s  sa, sb verifichi la III proprietà deve valere Rs ≥ 2.
L’algoritmo di Minty nel caso pesato
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
L’algoritmo di Minty nel caso pesato
 S=
 Trova un cammino S-aumentante P tale che S ∆ VP è estremale
 Aumenta S
 Itera