Algoritmi e Strutture Dati. Capitolo 11 Visite di grafi
|
|
|
- Leonzia Bertoni
- 8 anni fa
- Visualizzazioni
Transcript
1 lgoritmi e Strutture ati apitolo Visite di grafi
2 Strutture dati per rappresentare grafi
3 rafi non diretti Quanto spazio? a b c d a b c d a 0 a b d c b 0 0 b c a c 0 c a d b d 0 0 d c a Matrice di adiacenza liste di adiacenza O(n 2 ) O(m + n)
4 rafi diretti Quanto spazio? a b c d a b c d a b c d Matrice di adiacenza O(n 2 ) a b c d b d c d a liste di adiacenza O(m + n)
5 a b c d rafi non diretti a b a b a b b c d a c c d c d c d a c d a b Matrice di adiacenza liste di adiacenza Operazione: matrice di a. liste di a. elenco archi incidenti di v O(n) O( (v)) c è arco (u,v)? O() O(min{ (u), (v)})
6 a b c d rafi diretti a b a b a b b c d c 0 0 c d c d a d d Matrice di adiacenza liste di adiacenza Operazione: matrice di a. liste di a. elenco archi uscenti da v O(n) O( (v)) c è arco (u,v)? O() O( (u))
7 quali parti del grafo sono raggiungibili da un certo nodo? eseguo una visita del grafo
8 Scopo e tipi di visita una visita di un grafo permette di esaminare i nodi e gli archi di in modo sistematico (se è connesso) genera un albero di visita problema di base in molte applicazioni esistono vari tipi di visite con diverse proprietà: visita in ampiezza (S=breadth first search) visita in profondità (S=depth first search)
9 Visita in ampiezza dato un grafo (non pesato) e un nodo s, trova tutte le distanze/cammini minimi da s verso ogni altro nodo v
10 applicazioni web crawling come google trova nuove pagine da indicizzare social networking trovare gli amici che potresti conoscere network broadcast un nodo manda un messaggio a tutti gli altri nodi della rete garbage collection come scoprire memoria non più raggiungibile che si può liberare model checking verificare una proprietà di un sistema risolvere puzzle risolvere il ubo di Rubik con un numero minimo di mosse
11
12 cubo di Rubik: 2x2x2 grafo delle configurazioni un vertice per ogni possibile stato del cubo un arco fra due configurazioni se l una è ottenibile dall altra tramite una mossa grafo non diretto cubetto #verciti 8! x 3 8 =
13 cubo di Rubik: 2x2x2 stato goal eccentricità di s (od s number) od s number 2x2x2: 3x3x3: 20 s 4x4x4:??? nxnxn: (n 2 /log n) possibili mosse stati raggiungibili in 2 mosse
14 Visita in ampiezza
15 Un esempio s 0
16 Un esempio s 0
17 Un esempio s 0
18 Un esempio s 0
19 Un esempio s 0
20 Un esempio s 0
21 Un esempio s 0 2
22 Un esempio s 0 2
23 Un esempio s 0 2
24 Un esempio s 0 2 2
25 Un esempio s 0 2 2
26 Un esempio s 0 2 2
27 Un esempio s
28 Un esempio s
29 Un esempio s
30 Un esempio s
31 Un esempio s
32 Un esempio s
33 Un esempio s s albero S albero dei cammini di radicato in s
34 sempio: grafo orientato
35 osto della visita in ampiezza grafo rappresentato con matrice di adiacenza O(n 2 ) O(n)
36 osto della visita in ampiezza grafo rappresentato con liste di adiacenza O(m+n) u O( (u)) = O(m) O( (u))
37 osto 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(n 2 ) Osservazioni:. Si noti che se il grafo è connesso allora m n- e quindi O(m+n)=O(m) 2. Ricordando che m n(n-)/2, si ha O(m+n)=O(n 2 ) per m=o(n 2 ) la rappresentazione mediante liste di adiacenza è temporalmente più efficiente!
38 Proprietà dell albero S radicato in s Se il grafo è non orientato, per ogni arco (u,v) del grafo gli estremi u e v appartengono allo stesso livello o a livelli consecutivi dell albero S Se il grafo è orientato, allora gli archi orientati verso il basso uniscono nodi sullo stesso livello o su livelli adiacenti, mentre gli archi orientati verso l alto possono unire nodi su livelli non adiacenti
39 Teorema Per ogni nodo v, il livello di v nell albero S è pari alla distanza di v dalla sorgente s (sia per grafi orientati che non orientati) dimostrazione informale - all inizio inserisco s in (che è a distanza 0 da se stesso) e gli assegno livello 0; chiaramente s è l unico nodo a distanza 0. - estraggo s e guardo tutti suoi vicini (archi uscenti); questi sono tutti i nodi a distanza da s; li inserisco in e assegno loro livello. Ora in ho tutti i nodi a distanza. - estraggo uno a uno tutti i nodi di livello/distanza e per ognuno guardo tutti suoi vicini (archi uscenti); i vicini non marcati sono a distanza 2 da s; li inserisco in e assegno loro livello 2; quando ho estratto e visitato tutti i nodi di livello, in ho tutti i nodi a distanza 2 da s. - estraggo uno a uno tutti i nodi di livello/distanza 2 e per ognuno guardo tutti suoi vicini (archi uscenti); i vicini non marcati sono a distanza 3 da s
40 Visita in profondità
41 un analogia: esplorare un labirinto osa mi serve? gesso: per segnare le strade prese corda: per tornare indietro se necessario 4 variabile booleana: dice se un nodo è stato già visitato pila: push vuol dire srotolare pop vuol dire arrotolare opyright The Mcraw - Hill ompanies, srl
42 Visita in profondità
43 s Un esempio: visita S
44 s Un esempio: visita S
45 s Un esempio: visita S
46 s Un esempio: visita S
47 s Un esempio: visita S
48 s Un esempio: visita S
49 s Un esempio: visita S
50 s Un esempio: visita S
51 s Un esempio: visita S
52 s Un esempio: visita S
53 s Un esempio: visita S
54 s Un esempio: visita S
55 s Un esempio: visita S
56 s Un esempio: visita S
57 s Un esempio: visita S
58 s Un esempio: visita S
59 s Un esempio: visita S
60 s Un esempio: visita S albero S
61 sempio: grafo orientato (/2)
62 sempio: grafo orientato (2/2)
63 tornando al labirinto albero S 63 opyright The Mcraw - Hill ompanies, srl
64 osto 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(n 2 )
65 Proprietà dell albero S radicato in s Se il grafo è non orientato, per ogni arco (u,v) si ha: (u,v) è un arco dell albero S, oppure i nodi u e v sono l uno discendente/antenato dell altro Se il grafo è orientato, per ogni arco (u,v) si ha: (u,v) è un arco dell albero S, 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
Strutture dati per rappresentare grafi
lgoritmi e strutture dati amil emetrescu, Irene inocchi, iuseppe. Italiano Strutture dati per rappresentare grafi opyright 2004 - The Mcraw - Hill ompanies, srl lgoritmi e strutture dati amil emetrescu,
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 12 Grafi e visite di grafi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione Un grafo G=(V,E) consiste in: - un insieme V di vertici (o nodi) - un insieme
Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)
Grafi: visite Una breve presentazione Visite di grafi 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 Problema di base
Grafi: definizioni e visite
Grafi: definizioni e visite Grafi (non orientati) Grafo (non orientato): G = (V, E) V = nodi (o vertici) E = archi fra coppie di nodi distinti. Modella relazioni fra coppie di oggetti. Parametri della
Algoritmi e Strutture Dati
Introduzione ai grafi Grafi: Definizione e Algoritmi di visita Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2007/08 Introduzione ai
Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione
Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica (IN0 Fondamenti) Grafi e alberi: introduzione Marco Liverani ([email protected])
Algoritmi e Strutture Dati Grafi. Daniele Loiacono
lgoritmi e Strutture ati Grafi Riferimenti 2 Questo materiale è tratto dalle trasparenze del corso lgoritmi e Strutture ati del prof. lberto Montresor dell Università di Trento. (http://www.dit.unitn.it/~montreso/asd/index.shtml)
Algoritmi e Strutture Dati. Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford
Algoritmi e Strutture Dati Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford Cammini minimi in grafi: una trilogia Cammini minimi in grafi: Episodio II: cammini minimi a singola sorgente (per grafi
GRAFI. Cosa sono Grafi non orientati Grafi orientati Grafi pesati Alberi Automi!
G R A F I 1 GRAFI Cosa sono Grafi non orientati Grafi orientati Grafi pesati Alberi Automi! 2 cip: cip: Pallogrammi Pallogrammi GRAFI: cosa sono I grafi sono una struttura matematica fondamentale: servono
Esempi. non. orientato. orientato
Definizione! Un grafo G = (V,E) è costituito da un insieme di vertici V ed un insieme di archi E ciascuno dei quali connette due vertici in V detti estremi dell arco.! Un grafo è orientato quando vi è
Algoritmi e Strutture Dati
Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e Strutture Dati Capitolo 2 Minimo albero ricoprente: Algoritmo di Prim Il problema del calcolo di un Minimum
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 13 Cammini minimi: Algoritmo di Dijkstra (*) (ACM in grafi diretti e non diretti senza archi di peso negativo) Punto della situazione Algoritmo basato sull ordinamento
Grafi (orientati): cammini minimi
Grafi (orientati): cammini minimi Una breve presentazione Definizioni Sia G=(V,E) un grafo orientato con costi w sugli archi. Il costo di un cammino π= è dato da: Un cammino minimo tra
Visite in Grafi BFS e DFS
Visite in Grafi BFS e DFS Visita di un Grafo Obiettivo: Visitare una sola volta tutti i nodi del grafo. Es.: visitare un porzione del grafo del Web Difficoltà: Presenza di cicli: Marcare i nodi visitati
Note per la Lezione 22 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 0 09 Note per la Lezione Ugo Vaccaro Nella lezione scorsa abbiamo introdotto la vista in ampiezza di grafi. Essenzialmente, esso è un metodo per esplorare in
Algoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
Sommario. Rappresentazione dei grafi. Ordinamento topologico. Visita in ampiezza Visita in profondità
Visite Grafi Sommario Rappresentazione dei grafi Visita in ampiezza Visita in profondità Ordinamento topologico Visita in ampiezza La visita in ampiezza breadth-first-search (BFS) di un grafo dato un vertice
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 3 Cammini minimi: algoritmo di Dijkstra Cammini minimi in grafi: cammini minimi a singola sorgente (senza pesi negativi) Cammini minimi in grafi pesati Sia G=(V,E,w)
Algoritmi e strutture dati
Algoritmi e Strutture Dati Cammini minimi Definizioni Sia G = (V,E) un grafo orientato pesato sugli archi. Il costo di un cammino π = è dato da: Un cammino minimo tra una coppia di
Cammini minimi in grafi:
Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Cammini minimi in grafi: una trilogia Cammini minimi in grafi: Episodio III: la fine della trilogia Input: nelle puntate
Grafi diretti. Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove. V è u n i n s i e m e d i nodi (o vertici);
Algoritmi e Strutture di Dati II 2 Grafi diretti Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove V è u n i n s i e m e d i nodi (o vertici); E µ V V è u n i n s i e m e d i archi. Denotiamo
Grafi pesati Minimo albero ricoprente
Algoritmi e Strutture Dati Definizioni Grafi pesati Minimo albero ricoprente Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è un albero; T contiene
Introduzione ai grafi. Introduzione ai grafi p. 1/2
Introduzione ai grafi Introduzione ai grafi p. 1/2 Grafi Un grafo G é costituito da una coppia di insiemi (V,A) dove V é detto insieme dei nodi e A é detto insieme di archi ed é un sottinsieme di tutte
Problema del cammino minimo
Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento
Grafi. V = {a, b, c, d} E = {(a, b), (a, c), (c, a), (d, d), (b, d)}
Grafi Grafo orientato (o diretto) = (V,E) V = nodi o vertici - E = archi (edges) V = {a, b, c, d} E = {(a, b), (a, c), (c, a), (d, d), (b, d)} archi uscenti da un nodo x: (x, y) archi incidenti su un nodo
Esercizi proposti 10
Esercizi proposti 10 In questo gruppo di esercizi assumiamo, dove non sia specificato diversamente, di rappresentare i grafi mediante liste di archi, con il tipo di dati così dichiarato: type a graph =
Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla
Camil Demetrescu Irene Finocchi Giuseppe F. Italiano Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Indice 1 Un introduzione informale agli algoritmi 1 2 Modelli di calcolo e metodologie di
Terzo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale
Terzo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini [email protected] - [email protected] 22 marzo 2016 Programma 1. Lettura di un problema tratto dalle
Grafi: visita generica
.. Grafi: visita generica Una presentazione alternativa (con ulteriori dettagli) Algoritmi di visita Scopo: visitare tutti i vertici di un grafo (si osservi che per poter visitare un vertice occorre prima
Alberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra
Dati e Algoritmi 1: A. Pietracaprina. Grafi (II parte)
Dati e Algoritmi 1: A. Pietracaprina Grafi (II parte) 1 Breath-First Search (algoritmo iterativo) Si assume una rappresentazione tramite liste di adiacenza. L ordine con cui si visitano i vicini di un
Introduzione. Il routing permette la comunicazione tra due nodi differenti anche se non sono collegati direttamente
Routing Introduzione Il livello 3 della pila ethernet ha il compito di muovere i pacchetti dalla sorgente attraversando più sistemi Il livello di network deve quindi: Scegliere di volta in volta il cammino
Cammini minimi. Definizioni. Distanza fra vertici. Proprietà dei cammini minimi. Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Definizioni Sia G=(V,E) un grafo orientato con costi w sugli archi. Il costo di un cammino π= è dato da: Cammini minimi Un cammino minimo tra una coppia di
Grafi: ordinamento topologico
.. Grafi: ordinamento topologico Che cosa e e come si calcola Che cosa e un ordinamento topologico F. Damiani - Alg. & Lab. 04/05 Una definizione di ordinamento topologico Definizione. Funzione σ: V {1,
Grafi Tutte le strade portano a Roma
Grafi Tutte le strade portano a Roma Un vertice v in un grafo orientato G si dice di tipo Roma se ogni altro vertice w in G può raggiungere v con un cammino orientato che parte da w e arriva a v. 1 Descrivere
