GRAFI e PLANARITA Lezione n 17 Prof ssa

  • Slides: 16
Download presentation
GRAFI e PLANARITA’ Lezione n° 17 Prof. ssa Rossella Petreschi Lezione del 3 /12/

GRAFI e PLANARITA’ Lezione n° 17 Prof. ssa Rossella Petreschi Lezione del 3 /12/ 2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 3 del testo Nishizeki, Chiba “Planar graphs: theory and algorithms” Edizioni: North-Holland Per approfondimenti: Di Battista, Eades, Tamassia, Tollis “ Graph drawing” Edizioni: Prentice Hall

GRAFI PLANARI Un grafo si dice planare se è possibile disegnarlo sul piano in

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

Formula di Eulero In un grafo planare connesso con n vertici, m spigoli e

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

Dalla formula di Eulero Se G è un grafo planare con n ≥ 3

Dalla formula di Eulero Se G è un grafo planare con n ≥ 3 vertici ed m spigoli, vale che m ≤ 3 n – 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: 2 m = 3 f (ovvero f = 2/3 m) Per la formula di Eulero si ha: n- m +2/3 m = 2, da cui l’asserto Se G anche bipartito, vale m ≤ 2 n – 4 Prova. Analoga alla precedente. L’unica differenza sta nel fatto che i un grafo bipartito non ci sono cicli dispari, per cui 2 m=4 f (ovvero f = 1/2 m)

TEOREMA DI KURATOWSKI(1930) Un grafo è planare sess non contiene sottografi omeomorfi a K

TEOREMA DI KURATOWSKI(1930) Un grafo è planare sess non contiene sottografi omeomorfi a K 5 e K 3, 3

EMBEDDING Dato un disegno planare di un grafo G, si ordini la lista di

EMBEDDING Dato un disegno planare di un grafo G, si ordini la lista di adiacenza di G in modo che tutti i vicini di ogni vertice v seguano il verso dell’orologio sul disegno dato. L’insieme delle liste così ordinato è chiamato incastonamento (embedding) di G. 1 2 3 4 5 6 2365 54 31 2461 2563 4216 4513

ST-NUMERAZIONE Una numerazione 1, 2, …, n degli n vertici di G (V, E)

ST-NUMERAZIONE Una numerazione 1, 2, …, n degli n vertici di G (V, E) è detta st-numerazione se: • il vertice 1 è detto sorgente (s) e il vertice n è detto pozzo(t) ed s e t sono adiacenti; • fra tutti i vertici adiacenti ad un qualunque j in V, j≠s, t, esistono sempre due vertici i ed k tali che i<j<k Vale: • esiste una st-numerazione per ogni grafo 2 -connesso; • non è possibile trovare una st-numerazione valida per un grafo non 2 -connesso. Un grafo è 2 -connesso se è privo di punti di articolazione. Un vertice in G è punto di articolazione se la sua eliminazione aumenta il numero di componenti connesse in G.

UN PO’ DI STORIA • 1961(Auslander e Parter) primo algoritmo a complessità polinomiale (quadratico)

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 • ………………

EVEN e TARJAN 1976 TEOREMA Sia G(V, E) un grafo 2 -connesso, siano s

EVEN e TARJAN 1976 TEOREMA Sia G(V, E) un grafo 2 -connesso, siano s e t due nodi di V tali che (s, t) sia un arco di E. Allora esiste una st-numerazione tale che s sia il primo nodo e t sia l’ultimo. Dimostrazione La dimostrazione è data in forma costruttiva e consiste nel fornire un algoritmo di st-numerazione (basato sulla visita in profondità) Complessità Lineare in m

DFN, FATH e LOW Definiamo: DFN(v) : identifica l’ordine di visita di v nella

DFN, FATH e LOW Definiamo: DFN(v) : identifica l’ordine di visita di v nella visita in profondità del grafo. Tutti i vertici del grafo saranno poi identificati con il loro DFN. FATH(v) : riporta il numero di identificazione nella visita in profondità del padre di v LOW(v) : min (v, w), per ogni w estremo dello spigolo di riporto (u, w) (back edge) con u discendente e w ascendente di v nell’albero generato dalla visita in profondità. In modo equivalente: LOW(v) : min (v, LOW(x), w), per ogni x figlio di v e w estremo dello spigolo di riporto (v, w) (back edge). Queste tre funzioni si calcolano con una semplice modifica della visita in profondità

CALCOLO DELLE FUNZIONI Procedura DFS (G) T=Ø; Cont=1; for i=1 to n do marca

CALCOLO DELLE FUNZIONI Procedura DFS (G) T=Ø; Cont=1; for i=1 to n do marca vi come nuovo; for i=1 to n do RICERCA( vi). Procedura RICERCA (v) marca v come vecchio; DFN(v) = Cont; Cont=Cont+1; LOW(v)= DFN(v); for ogni vertice w nella lista di adiacenza di v do if w è marcato nuovo then aggiungi (v, w) a T; FATH (w)=v; RICERCA(w); LOW(v)=min(LOW(v), LOW(w)) else if FATH (v) ≠ w then LOW(v)=min(LOW(v), DFN(w))

LA FUNZIONE PATH Inizialmente s, t e (s, t) sono identificati vecchi, tutti gli

LA FUNZIONE PATH Inizialmente s, t e (s, t) sono identificati vecchi, tutti gli altri vertici e spigoli di G sono identificati nuovi. Si conoscono poi DFS(t)=1, DFS(s)=2. La funzione PATH(v) prende come valore un cammino da v ad un vertice vecchio. Si considerano 4 casi: 1. vi è un nuovo back edge (v, w) PATH = vw; marca (v, w) vecchio. 2. vi è un nuovo tree edge (v, w) PATH = vw 0 w 1 wk-1 wk, con w = w 0 e LOW(w)=wk ovvero ci si arrampica sull’albero finchè un backedge non ci porta in un vertice u tale che DFN(u)=LOW(w); marca vecchio tutti i vertici e gli spigoli sul PATH. 3. vi è un nuovo back edge (w, v) PATH = vw 0 w 1 wk-1 wk, con w = w 0 e wk vecchio; ovvero il cammino va all’indietro fino al primo vecchio vertice; marca vecchio tutti i vertici e gli spigoli sul PATH. 4. Tutti gli spigoli incidenti in v sono vecchi PATH = Ø.

PROCEDURA DI ST-NUMERAZIONE Procedura ST-NUMERAZIONE (G) Inizializzazione: si marcano s, t e (s, t)

PROCEDURA DI ST-NUMERAZIONE Procedura ST-NUMERAZIONE (G) Inizializzazione: si marcano s, t e (s, t) come vecchi e tutti gli altri vertici e spigoli come nuovi; si inseriscono t ed s nello stack S, nell’ordine, cont =1; pop v da S; while v ≠ t do if PATH =Ø then STN(v)=cont; cont=cont +1; else push tutti i vertici di PATH in ordine inverso a v(v deve rimanere al top) pop v da S STN(t)=cont

RAPPRESENTAZIONE A CESPUGLIO Si consideri G(V, E) sui cui vertici è imposta una st-numerazione

RAPPRESENTAZIONE A CESPUGLIO Si consideri G(V, E) sui cui vertici è imposta una st-numerazione v 1, …, vn e Gk (Vk, Ek) sottografo di G indotto dai vertici Vk= (v 1, …, vk). Se k<n, deve esistere almeno uno spigolo con un estremo in Vke un estremo in V-Vk. Si costruisca Gk’ aggiungendo a Gktutti gli spigoli di questo tipo con la caratteristica che un vertice in V- Vk connesso a d vertici in Vk sarà rappresentato con d copie virtuali di grado 1. Una rappresentazione a cespuglio di Gk’ è un ebedding di Gk’ con tutti i vertici virtuali posizionati sulla faccia esterna(usualmente sulla stessa orizzontale).

ANCORA SUI CESPUGLI (Even 1979) Sia (s, t) disegnato sul bordo della faccia esterna

ANCORA SUI CESPUGLI (Even 1979) Sia (s, t) disegnato sul bordo della faccia esterna di un embedding di G. Si consideri Gk sottografo piano di G. Per 1≤ k ≤n vale: • tutti i vertici e gli spigoli di G-Gk sono disegnati sulla faccia esterna del sottografo piano Gk di G; • per una qualunque forma a cespuglio di Gk , esiste una sequenza di permutazioni e di scambi che porta tutte le copie del vertice “k+1” ad occupare posizioni consecutive sulla linea orizzontale

PQ-TREE Una forma a cespuglio Bk è normalmente rappresentata tramite una struttura dati chiamata

PQ-TREE Una forma a cespuglio Bk è normalmente rappresentata tramite una struttura dati chiamata PQ-tree. I nodi di un PQ-tree sono divisi in tre classi: P-nodi, Q-nodi e foglie, dove: • i P-nodi rappresentano punti di articolazione di Gk e i figli di un P-nodo possono essere permutati arbitrariamente • i Q-nodi rappresentano le componenti biconnesse di Gke i figli di un Q-nodo possono essere solo scambiati • le foglie sono i nodi virtuali in Bk le foglie si muovono in accordo ai movimenti dei P-nodi (o dei Q-nodi) Booth e Lueker hanno provato che le permutazioni e gli scambi nominati sopra possono essere trovati applicando ripetutamente 9 trasformazioni base