La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Lezione n°14 Prof.ssa Rossella Petreschi

Presentazioni simili


Presentazione sul tema: "Lezione n°14 Prof.ssa Rossella Petreschi"— Transcript della presentazione:

1 Lezione n°14 Prof.ssa Rossella Petreschi
Lezione del 21/11/2014 del Corso di Algoritmica

2 Algoritmo di Edmonds e Karp(1972)
Algoritmo EK (R(V,E,s,p)) for ogni arco (u,v)  E do f(u,v)=0, f(v,u)=0; While  un cammino minimo  da s a p in Rf do (minimo rispetto alla distanza) cf () = min cf(u,v), (u,v)  in Rf; for ogni arco (u,v)  do f(u,v) = f(u,v) + cf () , f(v,u)=- f(u,v) Se si considera la rete residua con archi a distanza unitaria e si calcola il cammino minimo con una visita in ampiezza, l’algoritmo EK richiede tempo O (VE2) 2

3 Lemma delle distanze Lemma Prova
Si esegua l’algoritmo EK su una rete di flusso di R (V,E,s,p,C). Per ogni v in V-s,p, la distanza f(s,v) in Rf cresce monotonomamente con ogni aumento di flusso.f(u,v)= lunghezza del cammino minimo da u a v in Rf ) Prova Per assurdo si supponga che esistano dei vertice r tali che f’(s,r) < f(s,r). Sia v quello più vicino alla sorgente in Rf , ovvero f’(s,v) < f’(s,r) < f(s,r). Per gli altri vertici w vale f(s,w) ≤ f’(s,w). Sia u il vertice che precede v sul cammino minimo da s a v, si ha f’(s,u) = f’(s,v)-1. Sia f il flusso in R prima dell’aumento del flusso in Rf ,si ha: se (f(u,v) < c(u,v)), f(s,v) ≤ f(s,u)+1 < f’(s,u)+1 = f’(s,v). se (f(u,v) = c(u,v)), f(s,v) = f(s,u)-1 ≤ f’(s,u)-1 = (f’(s,v)-1)-1< f’(s,v). 3

4 Complessità dell’algoritmo di EK
O(VE2) deriva dalle seguenti due affermazioni: ogni iterazione dell’algoritmo EK può essere realizzata in tempo O(E) se effettuata con visita in ampiezza; l’algoritmo esegue al più O(VE) iterazioni. L’affermazione b) deriva dal fatto che su ogni cammino aumentante c’è un arco critico che sparisce dalla rete residua dopo che è stato aumentato il flusso nella rete. Un arco (u,v) può ritornare critico solo quando l’arco (v,u) appare su un cammino aumentante e quindi quando il flusso su (u,v) decresce. La prima volta si ha df(s,v) = df(s,u) +1 e la seconda si ha df’(s,u) = df’(s,v) +1 Per il Lemma delle distanze vale df(s,v) ≤ df’(s,v), da cui df’(s,u) = df’(s,v) +1 ≥ df(s,v) + 1 = df(s,u) + 2 Fra i due momenti di criticità di (u,v), la distanza di u dalla sorgente aumenta almeno di 2 unità. Quindi tale distanza può variare da 0 a V- 2. L’affermazione b) segue quindi dal fatto che (u,v) può diventare critico al piùVvolte e che ci sono al più Earchi. 4

5 Abbinamento massimo in un grafo bipartito e reti di flusso
A partire dal grafo bipartito B(LR,E), si costruisca la rete di flusso G (V, E’, s, p, C) così definita: V = LRs p, con s e p due vertici da aggiungere a quelli di B e che costituiscono la sorgente e il pozzo della costruenda rete; E’ = E  (s,u), u  L  (v,p), v  R; C funzione che associa ad ogni arco (u,v)  E’ una capacità c(u,v) = 1. Lemma: Siano dati B e G come sopra definiti. Per ogni M, abbinamento in B, esiste un flusso f a valori interi in G con valore f = M . In modo analogo vale che per ogni flusso a valori interi in G esiste un abbinamento M in B con cardinalità M = f  5

6 Prova del Lemma Un abbinamento M in B corrisponde ad un flusso a valori interi in G
Dato M abbinamento in B, se (u,v)  M, si ponga f(u,v)=0 se (u,v)  M, allora f(s,u)=f(u,v)=f(v,p) =1 e f(u,s)=f(v,u)=f(p,v)= -1, ovvero ogni arco (u,v) in M corrisponde ad una unità di flusso in G che attraversa il cammino s-u-v-p. Inoltre, i cammini indotti dagli archi in M hanno vertici disgiunti, a meno di s e p e il valore del flusso attraverso il taglio(Ls, Rp)è uguale ad M . Infine per vedere che f gode delle tre proprietà (capacità, conservazione del flusso, antisimmetria) basta osservare che f può essere ottenuto come aumento del flusso lungo ognuno di questi cammini.  6

7 Prova del Lemma Un flusso a valori interi in G corrisponde ad un abbinamento M in B
Dato f flusso a valori interi in G, si consideri M = (u,v): u  L e v  R e f(u,v)>0, vale che: M è un abbinamento perché ogni vertice di L ha un solo arco entrante (s,u) di capacità 1 e un’unità di flusso netto positivo entra in u iff vi è un solo vertice v in R tale che f(u,v)=1. M = f  infatti  u  L, f(s,u)=1e  (u,v)  E-M, f(u,v)=0, da cui: M = f(L,R)= f  7

8 Algoritmi di abbinamento massimo
Grafo bipartito: O(n3/2(m/logn)1/2) Alt, Blum, Mehlhorn, Paul 1991 O(n1/2(m+n) (log(1 + n2/m))/logn) Feder, Motwani 1991 Grafo qualunque O(mn1/2) Micali, Vazirani 1980 8

9 GRAFI PLANARI Un grafo si dice planare se è possibile disegnarlo sul piano in modo che nessuna coppia dei suoi spigoli si intersechi. 9

10 Formula di Eulero In un grafo planare connesso con n vertici, m spigoli e f facce, vale: n - m + f =2 Prova (per induzione su m): Passo base: vero sia se m=0 e n=1, f=1; sia se m=1 e n=2, f=1; Ipotesi induttiva: vero per tutti i valori fino ad m -1; Tesi: vale per G con m archi, n vertici e f facce G albero e v foglia, allora G-v ha m-1 archi, n-1 vertici e f facce per cui (n-1)-(m-1)+f=2 e conseguentemente n-m+f=2; G ha almeno un ciclo ed s è uno spigolo del ciclo, allora G-s ha m-1 archi, n vertici e f-1 facce per cui n-(m-1)+(f-1)=2 e conseguentemente n-m+f=2 10

11 Dalla formula di Eulero
Se G è un grafo planare con n ≥ 3 vertici ed m spigoli, vale che m ≤ 3n – 6 Prova. Si consideri un embedding di G planare massimale (si possono sempre aggiungere spigoli senza incrementare il numero dei vertici). Poiché ogni faccia è limitata da 3 spigoli ed ogni spigolo è sul bordo di due facce, vale: 2m = 3f (ovvero f = 2/3m) Per la formula di Eulero si ha: n- m +2/3m = 2, da cui l’asserto Se G anche bipartito, vale m ≤ 2n – 4 Prova. Analoga alla precedente. L’unica differenza sta nel fatto che i un grafo bipartito non ci sono cicli dispari, per cui 2m=4f (ovvero f = 1/2m) 11

12 TEOREMA DI KURATOWSKI(1930)
Un grafo è planare sess non contiene sottografi omeomorfi a K5 e K3,3 12

13 UN PO’ DI STORIA 1961(Auslander e Parter) primo algoritmo a complessità polinomiale (quadratico) 1974(Hopcroft e Tarjan ) primo algoritmo a complessità lineare (per aggiunta di cammini) 1967(Lempel, Even e Cederbaum ) primo algoritmo per aggiunta di vertici (quadratico) 1976(Even e Tarjan ) algoritmo lineare per st-numerazione 1976(Booth e Lueker ) si introducono i PQ trees 1985(Chiba, Nishizeki,Abe,Ozawa) "A linear algorithm for embedding planar graphs using PQ–trees”" 19??(De Fraisseix e Rosenstiehl) costruttivo, visita in profondità, mai pubblicato 1993(Shih e Hsu ) costruttivo, visita in profondità, lineare …………………………… 13


Scaricare ppt "Lezione n°14 Prof.ssa Rossella Petreschi"

Presentazioni simili


Annunci Google