GRAFI e PLANARITA Lezione n 17 Prof ssa
















- Slides: 16
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 modo che nessuna coppia dei suoi spigoli si intersechi.
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 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 5 e K 3, 3
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) è 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) • 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 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 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 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 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) 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 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 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. 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
















