Applicazioni del Maimo fluo Progeazione di Algorimi a.a. 0-6 Maricole congrue a Docene: Annalia De Boni
Maching bipario
Problema del max maching. Inpu: grafo non direzionao G = (V, E). M E e` un maching e ogni nodo appare in al piu` un un arco di M. Maching Max maching: rova un maching di cardinalia` maima. PROGETTAZIONE DI ALGORITMI A.A. 0-6
Maching bipario Problema del max maching bipario. Inpu: grafo non direzionao bipario G = (L R, E). M E e` un maching e ogni nodo appare in al piu` un arco di M. Max maching bipario: rova un maching di maima cardinalia`. ' ' ' maching -', -', -' ' L ' R PROGETTAZIONE DI ALGORITMI A.A. 0-6
Maching bipario ' ' ' max maching -', -', - -' ' L ' R PROGETTAZIONE DI ALGORITMI A.A. 0-6
Maching Bipario Formulazione in ermini del max fluo. Crea un grafo direzionao G' = (L R {, }, E' ). Oriena gli archi ra L ad R da L vero R, e aegna capacia` pari ad uno a quei archi. Aggiungi un arco con capacia` uno da a ciacun nodo di L. Aggiungi un arco con capacia` uno da ciacun nodo di R a. G' ' ' ' ' L ' R PROGETTAZIONE DI ALGORITMI A.A. 0-6 6
Teorema. La cardinalia` del max maching in G = Valore del max fluo in G'. Maching Bipario Dim. Dimoriamo prima che max maching max fluo Sia M un max maching e ia k la ua cardinalia. Conideriamo la funzione fluo f che invia unia` lungo ciacuno dei k percori che paano per i k archi di G corripondeni agli archi di G in M. Per ogni arco (i,j ) in M, f aegna agli archi (,i), (i,j ), (j,) di G f oddifa le propriea` del fluo e ha valore k ' ' ' ' ' ' ' ' G ' PROGETTAZIONE DI ALGORITMI A.A. 0-6 ' G' 7
Maching bipario Dimoriamo che valore dimenione max maching max fluo Sia f un maimo fluo di G' e ia k il uo valore. Capacia` degli archi = k e` inero ed eie f di valore k ale che f(e) inero (0 o ) per ogni e. Conideriamo l inieme di archi M = {e=(u,v): u in L, v in R, f(e)=} Conideriamo il aglio (L, R ). Lemma del valore del aglioà M =k Ciacun nodo di L ed R e` conenuo in al piu` un arco. Se u e` in L allora in u arriva fluo 0 o da. Per la conervazione del fluo da u ece quea ea quania` di fluo e quindi c e` al piu` un arco con origine u aravero il quale fluice unia` di fluo. Se u e` in R allora da u fuoriece fluo 0 o vero. Per la conervazione del fluo in v enra quea ea quania` di fluo e quindi c e` al piu` un arco con deinazione v aravero il quale fluice unia` di fluo. ' ' ' ' ' ' ' ' G' ' ' G 8
Maching bipario Poiamo rovare il max maching di un grafo bipario G eeguendo Ford-Fulkeron ul grafo G oenuo a parire da G. Il max maching e` oenuo come illurao nella econda pare della dimorazione del eorema precedene. Tempo di eecuzione: O(nm) in quano la capacia` di ogni arco di G e` al piu` C= e di coneguenza O(nmC)=O(nm) PROGETTAZIONE DI ALGORITMI A.A. 0-6 9
Maching perfei Def. Un maching M E e` perfeo e ciacun nodo appare eaamene in un arco di M. Domanda. Quando un grafo bipario ha un maching perfeo? Sruura dei grafi biparii con maching perfei. Ovviamene deve eere L = R. Quali alre condizioni ono necearie? Quali condizioni ono ufficieni? PROGETTAZIONE DI ALGORITMI A.A. 0-6 0
Maching Perfeo Noazione. Sia S un ooinieme di nodi di L. Indichiamo con N(S) l inieme dei nodi di R adiaceni ai nodi di S. Oervazione. Se un grafo bipario G = (L R, E) ha un maching perfeo allora N(S) S per ui i ooiniemi S L. Dim. Ciacun nodo in S deve eere accoppiao ad un nodo differene in N(S). ' ' ' Neun maching perfeo: S = {,, } N(S) = { ', ' }. ' L ' R
Teorema dei marimoni Il eorema dei marimoni. [Frobeniu 97, Hall 9] Sia G = (L R, E) un grafo bipario con L = R. G ha un maching perfeo e e olo e N(S) S per ui i ooiniemi S L. Dim. L implicazione l abbiamo gia` dimoraa nella lide precedene. ' ' ' No perfec maching: S = {,, } N(S) = { ', ' }. ' L ' R
Dimoriamo l implicazione Supponiamo G non abbia un maching perfeo. Queo vuol dire che il max maching ha dimenione < L Teorema dei marimoni Coruiamo la ree di fluo G nello eo modo di prima. Sia (A, B) un minimo aglio di G. Teorema del Max Fluo-Min Taglio à cap(a,b)< L Definiamo L A = L A, L B = L B, R A = R A. Poiamo raformare (A,B) in un alro aglio minimo (Z,W) in cui N(L Z ) Z. Per far queo aggiungiamo ad A ciacun nodo di N(L A ) che i rova in B. Sia y un ale nodo. Ovviamene in G y ha un arco ucene che finice in e almeno un arco enrane che pare da un nodo x di L A. Porando y in A, la nuova capacia` del aglio e` oenua aggungendo c(y,)= e oraendo almeno c(x,y)=. Di coneguenza la capacia` del aglio non aumena. coninua
Teorema dei marimoni Il nuovo aglio (Z,W) e` ale che non ci ono archi uceni da Z che hanno come origine un nodo di L Z. Ne conegue che ui gli archi uceni hanno come origine e deinazione un nodo in L W oppure hanno come origine un nodo in R Z e come deinazione. Si ha quindi cap(z, W) = L W + R Z. Inolre i ha che N(L Z ) R Z per cui N(L Z ) R Z = cap(z, W) - L W < L - L W = L Z. Abbiamo rovao un inieme L Z che e` piu` grande di N(L Z ). Cio` conraddice l ipoei che ogni per ooinieme S di L i ha N(S) S PROGETTAZIONE DI ALGORITMI A.A. 0-6
Percori digiuni PROGETTAZIONE DI ALGORITMI A.A. 0-6
Percori enza archi in comune Def. Due percori vengono dei digiuni e non hanno archi in comune Il problema dei percori digiuni. Dao un grafo direzionao e due nodi e, rovare il maimo numero di percori da a enza archi in comune. Eempio: rei di comunicazione 6 7 PROGETTAZIONE DI ALGORITMI A.A. 0-6 6
Percori enza archi in comune Eempio: queiono percori digiuni nell eempio precedene 6 7 PROGETTAZIONE DI ALGORITMI A.A. 0-6 7
Formulazione in ermini di max fluo: aegnamo fluo pari ad ad ogni arco. Percori enza archi in comune Teorema. Sia dao un grafo direzionao G e iano e due nodi di G. Il maimo numero di percori digiuni da a in G e` uguale al valore del max fluo nella ree oenua aegnando capacia` agli archi di G. Dim. Dimoriamo Supponiamo che ci iano k percori digiuni P,..., P k. Poniamo f(e) = e e compare u qualche percoro P i ; alrimeni poniamo f(e) = 0. Siccome i percori ono digiuni allora f e` un fluo (conervazione del fluo oddifaa) e ha valore k (k diini archi e uceni da con f(e)=) PROGETTAZIONE DI ALGORITMI A.A. 0-6 8
Percori digiuni Dimoriamo Supponiamo che il max fluo abbia valore k. Siccome capacia` ono ineri uguali ad eie una funzione fluo f che aegna valori ineri (0 o ) ad ogni arco e ha valore k. Conideriamo un arco (, u) con f(, u) =. Per la conervazione del fluo eie un arco (u,v) per cui f(u,v)=. Per lo eo moivo eie un arco (v,z) per cui f(v,z)=. E coi` via. In queo modo poiamo individuare un percoro da a fao di archi con flui uniari. Siccome il valore di f e` k allora da econo k archi con fluo pari ad. Quindi con il procedimeno decrio poiamo produrre k percori da a (non neceariamene emplici) che non hanno archi in comune (e li aveero non arebbe oddifaa la propriea` ulla conervazione del fluo). 6 7 9
Conneivia` di una ree Conneivia` di una ree. Dao un grafo direzionao G = (V, E) e due nodi e, rovare il minimo numero di archi la cui rimozione diconnee da. Def. Un inieme di archi F E diconnee da e ogni percoro da a ua un arco di F. 6 7 PROGETTAZIONE DI ALGORITMI A.A. 0-6 0
Percori digiuni e conneivia` di una ree Teorema. [Menger 97] Sia G un grafo direzionao e iano e due nodi di G. Il max numero di percori digiuni in G da a e` uguale al minimo numero di archi la cui rimozione diconnee da. Dim. Dimoriamo Supponiamo che la rimozione di F E diconnea da e che F = k à ciacun percoro da a ua almeno un arco in F. Sia S un qualiai inieme di percori digiuni da a. Ciacun arco di F e` uao da al piu` un percoro in S à S k 6 6 7 PROGETTAZIONE DI ALGORITMI A.A. 0-6 7
Percori digiuni e conneivia` di una ree Dimoriamo Supponiamo che il max numero di percori digiuni ia k. Abbiamo dimorao che max numero percori digiuni = valore max fluo nella ree oenua aegnando capacia` agli archi di G. Quindi il valore del max fluo in quea ree e` k. Teorema Maimo Fluo & Minimo Taglio eie aglio (A, B) con cap(a,b)= k. Sia F l inieme degli archi che vanno da A vero B. Ogni arco ha capacia` e la omma delle capacia` degli archi direi da A vero B e` k à F = k Ovviamene e rimuoviamo gli archi di F diconneiamo da per cui F e` un inieme che diconnee da e ha cardinalia` k. A 6 6 7 PROGETTAZIONE DI ALGORITMI A.A. 0-6 7