Algoritmi e Strutture Dati Capitolo 11 Grafi e visite di grafi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione Un grafo G=(V,E) consiste in: - un insieme V di vertici (o nodi) - un insieme E di coppie di vertici, detti archi o spigoli: ogni arco connette due vertici Esempio 1: V={persone che vivono in Italia}, E={coppie {x,y} tali che x e y si sono stretta la mano} Esempio 2: V={persone che vivono in Italia}, E={coppie (x,y) tale che x ha inviato una mail a y} 3 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Terminologia (1/2) Esempio 1: relazione simmetrica grafo non orientato Esempio 2: relazione non simmetrica grafo orientato n = numero di vertici m = numero di spigoli ∑ d(v)=2m L ed I sono adiacenti vV (L,I) è incidente ad L e ad I I ha grado 4: d(I)=4 4 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Terminologia (2/2) < L , I , E, C, B, A > è un cammino nel grafo (non orientato) di lunghezza 5 Se il grafo è orientato, il cammino deve rispettare il verso di orientamento degli archi La lunghezza del più corto cammino tra due vertici si dice distanza tra i due vertici: L ed A hanno distanza 4 Se esiste un cammino per ogni coppia di vertici, allora il grafo si dice connesso 5 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati 6 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Strutture dati per rappresentare grafi 7 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Grafi non orientati 8 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Grafi orientati 9 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Prestazioni della lista di archi 10 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Prestazioni delle liste di adiacenza 11 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Prestazioni della matrice di adiacenza 12 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Visite di grafi 13 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Scopo e tipi di visita • Una visita (o attraversamento) di un grafo G permette di esaminare i nodi e gli archi di G in modo sistematico (supporremo G connesso) • Problema di base in molte applicazioni • Esistono vari tipi di visite con diverse proprietà: in particolare, visita in ampiezza (BFS=breadth first search) e visita in profondità (DFS=depth first search) 14 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmo di visita generica • La visita parte da un vertice s prescelto ed esplora seguendo una qualche regola i suoi adiacenti • Un vertice v raggiunto da u viene marcato come visitato se è stato incontrato per la prima volta, e viene quindi aggiunto alla frangia F di visita; inoltre, il nodo u diventa padre di v, e l’arco (u,v) viene etichettato come arco di visita • Un vertice rimane nella frangia di visita fintantoché non sono stati esplorati tutti i suoi adiacenti • La visita genera un albero di copertura T del grafo \ 15 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Visite particolari • Se la frangia F è implementata come coda si ha la visita in ampiezza (BFS) • Se la frangia F è implementata come pila si ha la visita in profondità (DFS) 16 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Visita in ampiezza 17 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Visita in ampiezza 18 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Costo della visita in ampiezza Il tempo di esecuzione dipende dalla struttura dati usata per rappresentare il grafo: • Lista di archi: O(mn) • Liste di adiacenza: O(m+n) • Matrice di adiacenza: O(n2) 19 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: grafo non orientato (1/2) 20 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: grafo non orientato (2/2) 21 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: grafo orientato 22 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Proprietà • Per ogni nodo v, il livello di v nell’albero BFS è pari alla distanza di v dalla sorgente s • Per ogni arco (u,v) di un grafo non orientato, gli estremi u e v appartengono allo stesso livello o a livelli consecutivi dell’albero BFS • Se il grafo è orientato, possono esistere archi (u,v) che attraversano all’indietro più di un livello 23 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Visita in profondità 24 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Visita in profondità 25 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Costo della visita in profondità Il tempo di esecuzione dipende dalla struttura dati usata per rappresentare il grafo: • Lista di archi: O(mn) • Liste di adiacenza: O(m+n) • Matrice di adiacenza: O(n2) 26 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: grafo non orientato (1/2) 27 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: grafo non orientato (2/2) 28 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: grafo orientato (1/2) 29 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: grafo orientato (2/2) 30 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Proprietà • Sia (u,v) un arco di un grafo non orientato. Allora: – (u,v) è un arco dell’albero DFS, oppure – i nodi u e v sono l’uno discendente/antenato dell’altro • Sia (u,v) un arco di un grafo orientato. Allora: – (u,v) è un arco dell’albero DFS, oppure – i nodi u e v sono l’uno discendente/antenato dell’altro, oppure – (u,v) è un arco trasversale a sinistra, ovvero il vertice v è in un sottoalbero visitato precedentemente ad u 31 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Riepilogo • Concetto di grafo e terminologia • Diverse strutture dati per rappresentare grafi nella memoria di un calcolatore • L’utilizzo di una particolare rappresentazione può avere un impatto notevole sui tempi di esecuzione di un algoritmo su grafi (ad esempio, nella visita di un grafo) • Algoritmo di visita generica e due casi particolari: visita in ampiezza e visita in profondità 32 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati 33 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati 34 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Copyright © 2004 - The McGraw - Hill Companies, srl