camil demetrescu, irene finocchi, giuseppe f. italianoalgoritmi e strutture dati copyright © 2004 -...
TRANSCRIPT
![Page 1: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/1.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl1
Un albero è un grafo bipartito?SÌ!
Ma un grafo bipartito è sempre un albero??
![Page 2: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/2.jpg)
Capitolo 11Visite di grafi
Algoritmi e Strutture Dati
![Page 3: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/3.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl3
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 (se 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)
![Page 4: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/4.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl4
Algoritmo di visita generica • La visita parte da un vertice s prescelto ed esplora seguendo
una qualche regola uno dei 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\
![Page 5: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/5.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl5
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)
![Page 6: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/6.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl6
Visita in ampiezza
![Page 7: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/7.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl7
Visita in ampiezza
![Page 8: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/8.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl8
Costo della visita in ampiezza
Il tempo di esecuzione dipende dalla struttura dati usata per rappresentare il grafo (e dalla connettività o meno del grafo rispetto ad s):
• Liste di adiacenza: O(m+n)
• Matrice di adiacenza: O(n2)
![Page 9: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/9.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl9
Esempio: grafo non orientato (1/2)
![Page 10: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/10.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl10
Esempio: grafo non orientato (2/2)
![Page 11: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/11.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl11
Esempio: grafo orientato
![Page 12: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/12.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl12
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
![Page 13: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/13.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl13
Visita in profondità
![Page 14: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/14.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl14
Visita in profondità
![Page 15: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/15.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl15
Costo della visita in profondità
Il tempo di esecuzione dipende dalla struttura dati usata per rappresentare il grafo (e dalla connettività o meno del grafo rispetto ad s):
• Liste di adiacenza: O(m+n)
• Matrice di adiacenza: O(n2)
![Page 16: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/16.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl16
Esempio: grafo non orientato (1/2)
![Page 17: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/17.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl17
Esempio: grafo non orientato (2/2)
![Page 18: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/18.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl18
Esempio: grafo orientato (1/2)
![Page 19: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/19.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl19
Esempio: grafo orientato (2/2)
![Page 20: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/20.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl20
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
![Page 21: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/21.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl21
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à
![Page 22: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/22.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl22
Approfondimento
Dato un grafo G=(V,E) rappresentato tramite una matrice di adiacenza A, scrivere un algoritmo che scorrendo una sola volta A:
1.Verifica se G è completo;2.Trova il grado di G;3.Costruisce la rappresentazione di G
tramite liste di adiacenza.
![Page 23: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Un albero è un grafo](https://reader036.vdocuments.pub/reader036/viewer/2022081511/5542eb50497959361e8bfbbb/html5/thumbnails/23.jpg)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl23