Algoritmi di visita di un grafo
|
|
|
- Anna Maria Damiano
- 10 anni fa
- Visualizzazioni
Transcript
1 Algoritmi di isita di n grafo Ilaria Castelli [email protected] Uniersità degli Stdi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Visita di n grafo, A.A. 2009/2010 1/44
2 Grafi Visita in ampiezza Visita in profondità Ordinamento topologico I. Castelli Visita di n grafo, A.A. 2009/2010 2/44
3 Scopo e tipi di isita di n grafo Visita Una isita (o attraersamento) di n grafo G permette di esaminare i nodi e gli archi di G in modo sistematico. Esistono arie tipologie di isita, con dierse proprietà. In particolare: 1 Visita in ampiezza (BFS = Breadth First Search) 2 Visita in profondità (DFS = Depth First Search) I. Castelli Visita di n grafo, A.A. 2009/2010 3/44
4 Breadth First Search Visita in ampiezza Dato n grafo G = (V, E) e n nodo s chiamato sorgente, la isita in ampiezza esplora gli archi di G per scoprire ttti i nodi raggingibili a partire da s La isita BFS calcola la distanza (nmero minimo di archi) tra s e ogni ertice da esso raggingibile La isita consente di definire n albero BFS, con radice s, contenente ttti i nodi raggingibili Nell albero BFS il cammino da s a n nodo corrisponde a n cammino minimo (contenente il nmero minimo di archi) La isita BFS si pò applicare sia ai grafi diretti che a qelli non diretti I. Castelli Visita di n grafo, A.A. 2009/2010 4/44
5 Breadth First Search La isita in ampiezza esplora i nodi del grafo partendo da qelli a distanza 1 da s. Poi isita qelli a distanza 2, e così ia. L algoritmo isita ttti i ertici ad n liello k prima di isitare qelli a liello k + 1. distanza = 3 distanza = 2 r distanza = 1 h s i t Si genera n albero Si isitano nodi ia ia più distanti dalla sorgente x y I. Castelli Visita di n grafo, A.A. 2009/2010 5/44
6 Breadth First Search Per tenere traccia del progresso della isita, l algoritmo BFS associa delle flag ai nodi. Spponiamo di poter colorare i nodi di bianco, grigio o nero. All inizio ttti i nodi sono bianchi e, sccessiamente, possono dientare grigi e, infine, neri. Un nodo iene scoperto la prima olta che iene incontrato drante la isita e, in tale istante, cessa di essere bianco. La distinzione tra nodi grigi e neri esiste affinché la isita proceda in ampiezza. In sostanza, la distinzione è la segente: Bianchi: non ancora scoperti Grigi: appena scoperti; sono la frontiera tra nodi scoperti e non. I nodi adiacenti ad n nodo grigio possono essere bianchi. Neri: scoperti. Ttti i nodi adiacenti ad n nodo nero sono stati scoperti. I. Castelli Visita di n grafo, A.A. 2009/2010 6/44
7 Algoritmo BFS - Strttre dati Le strttre dati sate dall algoritmo sono le segenti: Liste di adiacenza Adj Adj[] è la lista dei nodi adiacenti a. Array color color[] contiene il colore del nodo Array d d[] contiene la distanza di dal nodo sorgente s. Viene inizializzata a infinito. Array p p[] contiene il predecessore del nodo nell albero BFS Coda Q contiene i nodi grigi I. Castelli Visita di n grafo, A.A. 2009/2010 7/44
8 Algoritmo BFS 1 BFS(G, s ) 2 f o r o g n i nodo i n V[G] { s } / i n i z i a l i z z a z i o n e / 3 c o l o r [ ] = WHITE 4 d [ ] = i n f i n i t y 5 p [ ] = NIL 6 7 c o l o r [ s ] = GRAY / i s i t o l a s o r g e n t e / 8 d [ s ] = 0 9 p [ s ] = NIL 0 Q = { s } 1 h i l e Q!= empty 2 = head [Q] / nodo da e s p a n d e r e / 3 f o r o g n i nodo i n Adj [ ] / i s i t o i n o d i a d i a c e n t i / 4 i f c o l o r [ ] = WHITE / s e e b i a n c o i e n e s c o p e r t o / 5 then c o l o r [ ] = GRAY 6 d [ ] = d [ ] p [ ] = 8 ENQUEUE(Q, ) / i n s e r i t o n e l l a coda Q / 9 DEQUEUE(Q) / t o l t o d a l l a coda : e g i a s t a t o e spanso / 0 c o l o r [ ] = BLACK I. Castelli Visita di n grafo, A.A. 2009/2010 8/44
9 Algoritmo BFS - Esempio r s x y t y s t t x r t x y x r s r s x y t r s x y t Adj p d r s t x y NIL 0 0 s 1 1 s r 2 t x Q = {} 2 I. Castelli Visita di n grafo, A.A. 2009/2010 9/44
10 Algoritmo BFS - Albero BFS La isita BFS consente di definire n albero BFS. all inizio contiene solo s qando n nodo bianco iene scoperto, scorrendo la lista di adiacenza di n nodo, allora l arco (, ) e stesso engono agginti all albero p(r) = s p(s) = NIL p(t) = p() = t r s t r s x y p() = r p() = s p(x) = p(y) = x 2 x 2 t 2 y 3 3 I. Castelli Visita di n grafo, A.A. 2009/ /44
11 Breadth First Search - Analisi Analisi del tempo di eseczione s n grafo G = (V, E) Il tempo necessario per l inizializzazione è O( V ) Ogni nodo raggingibile iene isitato na olta Le operazioni di inserimento e rimozione dalla coda costano O(1), qindi il tempo totale necessario per le operazioni slla coda è O( V ) La lista di adiacenza di n nodo iene scorsa na sola olta, qindi in totale il tempo è O( E ) Il tempo totale richiesto dall algoritmo BFS si ottiene sommando il tempo per l inizializzazione e qello necessario per isitare i nodi: O( V + E ) I. Castelli Visita di n grafo, A.A. 2009/ /44
12 Breadth First Search - Cammini minimi Distanza minima Si definisce distanza minima δ(s, ) da s a, il nmero minimo di archi di n cammino dal nodo s al nodo δ(s, ) 0 δ(s, ) = se non è raggingibile partendo da s Cammino minimo Un cammino di lnghezza δ(s, ) da s a si dice cammino minimo. Nota: possono esistere più cammini minimi tra de nodi BFS La isita BFS calcola la distanza minima δ(s, ) di ogni nodo raggingibile da s Nell albero BFS il cammino da s ad n nodo è n cammino minimo I. Castelli Visita di n grafo, A.A. 2009/ /44
13 Breadth First Search - Proprietà Lemma Dato n grafo G = (V, E) diretto o non diretto e n nodo s V qalsiasi, allora per ogni arco (, ) E si ha δ(s, ) δ(s, ) + 1 Dimostrazione Se non è raggingibile da s, allora δ(s, ) = Se è raggingibile da s, allora anche è raggingibile. Il cammino minimo da s a non pò essere più lngo del cammino minimo da s a, più l arco (, ) I. Castelli Visita di n grafo, A.A. 2009/ /44
14 Breadth First Search - Proprietà Lemma Sia G = (V, E) n grafo diretto o non diretto e s V n nodo sorgente qalsiasi, a partire dal qale è stato esegito l algoritmo BFS. Allora per ogni nodo V si ha d[] δ(s, ) Dimostrazione Per indzione: d[s] = 0 = δ(s, s) e, per qalsiasi nodo V {s}, ale d[] = δ(s, ) Dato n nodo scoperto drante l esplorazione di n nodo, per ipotesi indttia ale d[] δ(s, ). d[] }{{} = d[] + 1 }{{} algoritmo ipotesi indttia δ(s, ) + 1 δ(s, ) }{{} lemma precedente I. Castelli Visita di n grafo, A.A. 2009/ /44
15 Breadth First Search - Proprietà Lemma Spponendo che drante l eseczione della ricerca BFS s n grafo G = (V, E), la coda Q contenga i nodi < 1,..., r >, doe 1 = head[q] e r = tail[q], allora d[ r ] d[ 1 ] + 1 e d[ i ] d[ i+1 ], i = 1,..., r 1 La differenza tra le distanze da s dei nodi presenti nella coda in n certo momento è al più 1 Un nodo iene inserito nella coda (dientando r+1 ) qando il nodo in testa, 1, iene esplorato d[ r+1 ] = d[] = d[ 1 ] + 1 d[ r ] d[ 1 ] + 1 = d[] = d[ r+1 ] I. Castelli Visita di n grafo, A.A. 2009/ /44
16 Breadth First Search - Proprietà Proposizione I nodi che entrano nella coda Q sono ttti e soli i nodi tali che δ(s, ) <, cioè ttti i nodi raggingibili da s Dimostrazione 1 entra in Q = δ(s, ) < Si procede per indzione sll i-esima iterazione dell operazione ENQUEUE se i = 0, solo s è nella coda: δ(s, s) = 0 < se i > 0, spponiamo che l ipotesi indttia sia era per ogni iterazione k < i. Al passo i si isita Adj[], con = head[q], e i nodi bianchi engono inseriti in Q. Per ipotesi indttia δ(s, ) <. Poiché esiste l arco (, ): δ(s, ) δ(s, ) + 1 < I. Castelli Visita di n grafo, A.A. 2009/ /44
17 Breadth First Search - Proprietà 2 entra in Q = δ(s, ) < Si procede per indzione s δ(s, ) = k se δ(s, ) = 0 è ero: = s se δ(s, ) = k > 0, per ipotesi indttia si ha che per ogni tale che δ(s, ) < k, è già entrato in coda. Poiché δ(s, ) <, esiste n cammino < 0,..., i 1, i > da s a, con 0 = s e i =. s 0 (i 1) δ(s, i 1 ) = k 1 e i 1 è nella coda per ipotesi indttia. Qando errà isitata Adj[ i 1 ] errà scoperto e: se è bianco entra in coda non pò essere grigio o nero, altrimenti sarebbe già entrato in coda, perché arrebbe δ(s, ) < k! I. Castelli Visita di n grafo, A.A. 2009/ /44
18 Breadth First Search - Albero BFS Albero BFS L array p definisce n sottografo dei predecessori di G. In particolare, si tratta di n albero, T p : T p = (V p, E p ) V p = { V : p[] NIL} {s} E p = {(p[], ) E : V p {s}} Una olta esegita la ricerca BFS, la segente procedra stampa il cammino minimo da s a 1 PRINT PATH(G, s, ) 2 i f = s 3 then p r i n t s 4 e l s e i f p [ ] = NIL 5 then p r i n t "non esiste n cammino da s a " 6 e l s e PRINT PATH(G, s, p [ ] ) 7 p r i n t I. Castelli Visita di n grafo, A.A. 2009/ /44
19 Depth First search Visita in profondità Dato n grafo G = (V, E) ed n nodo s, detto nodo sorgente, la isita depth first esplora il grafo andando il più possibile in profondità. Dato n nodo appena scoperto, la isita prosege a partire da si soi archi che ancora non sono stati esplorati Qando si sono esplorati ttti gli archi del nodo, si torna al nodo dal qale è stato scoperto, e si esplorano i soi lteriori archi non ancora esplorati (se ce ne sono) Si prosege finchè non engono scoperti ttti i nodi raggingibili da s Se i sono ancora dei nodi non scoperti, no di qesti iene adottato come na noa sorgente, e la isita riprende a partire da esso L algoritmo termina qando ttti i nodi sono stati scoperti I. Castelli Visita di n grafo, A.A. 2009/ /44
20 Depth First Search Per tenere traccia del progresso della isita, anche l algoritmo DFS associa delle flag ai nodi. Di noo, si sppone di colorare i nodi di bianco, grigio o nero. All inizio ttti i nodi sono bianchi e, sccessiamente, possono dientare grigi e, infine, neri. Un nodo iene scoperto la prima olta che iene incontrato drante la isita e, in tale istante, cessa di essere bianco. La distinzione tra nodi grigi e neri è necessaria affinché la isita proceda in profondità. La distinzione è la segente: Bianchi: non ancora scoperti Grigi: sono stati scoperti, ma l esplorazione della loro lista di adiacenza non è ancora terminata. Neri: l esplorazione della loro lista di adiacenza è completata. I. Castelli Visita di n grafo, A.A. 2009/ /44
21 Algoritmo DFS - Strttre dati Le strttre dati sate dall algoritmo sono le segenti: Liste di adiacenza Adj Adj[] è la lista dei nodi adiacenti a. Array color color[] contiene il colore del nodo Array p p[] contiene il predecessore del nodo nella foresta DFS Array d d[] è n timestamp che contiene il momento in ci è stato scoperto. Array f f[] è n timestamp che contiene il momento in ci si è conclsa la isita di, cioè si è finito di esaminare al sa lista di adiacenza Adj[]. I. Castelli Visita di n grafo, A.A. 2009/ /44
22 Algoritmo DFS - Strttre dati Nota: Il nodo è bianco prima di d[] grigio tra d[] e f[] nero dopo f[] Oiamente si ha d[] < f[], V I timestamp sono nmeri interi compresi tra 1 e 2 V, poiché ogni nodo iene scoperto esattamente na olta, e si finisce di esplorarlo esattamente na olta. I. Castelli Visita di n grafo, A.A. 2009/ /44
23 Algoritmo DFS 1 DFS(G, s ) 2 f o r o g n i e r t i c e i n V[G] / i n i z i a l i z z a z i o n e / 3 c o l o r [ ] = WHITE 4 p [ ] = NIL 5 time = 0 6 f o r o g n i e r t i c e i n V[G] 7 i f c o l o r [ ] = WHITE 8 then DFS VISIT ( ) / i s i t a o g n i nodo non s c o p e r t o / 1 DFS VISIT ( ) 2 c o l o r [ ] = GRAY 3 d [ ] = time / tempo d i i n i z i o i s i t a l i s t a d i a d i a c e n z a / 4 time = time f o r o g n i e r t i c e i n Adj [ ] 6 i f c o l o r [ ] = WHITE 7 then p [ ] = 8 DFS VISIT ( ) / i s i t a s b i t o n o d i non s c o p e r t i / 9 c o l o r [ ] = BLACK / f i n i t o d i i s i t a r e i n o d i a d i a c e n t i / 0 f [ ] = time 1 time = time + 1 I. Castelli Visita di n grafo, A.A. 2009/ /44
24 Algoritmo DFS - Esempio Adj x y y z x x y z y x z z I. Castelli Visita di n grafo, A.A. 2009/ /44
25 Algoritmo DFS - Esempio 1/ 1/ 2/ 1/ 2/ 3/ x y z x y z x y z 1/ 2/ 1/ 2/ 1/ 2/ B B 4/ 3/ x y z 4/ 3/ x y z 4/5 3/ x y z 1/ 2/ 1/ 2/7 1/ 2/7 B B F B 4/5 3/6 4/5 3/6 4/5 3/6 x y z x y z x y z I. Castelli Visita di n grafo, A.A. 2009/ /44
26 Algoritmo DFS - Esempio 1/8 2/7 1/8 2/7 9/ 1/8 2/7 9/ F B F B F B C 4/5 3/6 4/5 3/6 4/5 3/6 x y z x y z x y z 1/8 2/7 9/ 1/8 2/7 9/ 1/8 2/7 9/ F B C F B C F B C 4/5 3/6 10/ x y z 4/5 3/6 10/ x y z B 4/5 3/6 10/11 x y z B 1/8 2/7 9/12 F B C 4/5 3/6 10/11 x y z B I. Castelli Visita di n grafo, A.A. 2009/ /44
27 Foresta DFS Allo stesso modo della ricerca BFS, nella ricerca DFS, n nodo iene scoperto esplorando la lista di adiacenza di n nodo già scoperto. L array p tiene traccia del predecessore di ogni nodo scoperto: p[] = Foresta DFS L array p definisce n sottografo dei predecessori di G. In particolare, si tratta di na foresta, F p : F p = (V, E p ) E p = {(p[], ) : V e p[] NIL} Il sottografo dei predecessori è na foresta depth first, costitita da più alberi depth first. I. Castelli Visita di n grafo, A.A. 2009/ /44
28 Foresta DFS - Classificazione degli archi Gli archi del grafo originario engono classificati in: Tree-edge. Archi della foresta DFS. Forard-edge. Archi in aanti. Archi non appartenenti alla foresta DFS, che anno da n ertice ad n so sccessore nella foresta DFS. Qando engono percorsi drante l algoritmo DFS, collegano de nodi già scoperti. Backard-edge. Archi all indietro. Archi non appartenenti alla foresta DFS, che anno da n ertice ad n so antenato nella foresta DFS. Archi del grafo che, qando engono percorsi drante l algoritmo DFS, collegano de nodi già scoperti. Cross-edge Archi di attraersamento. Ttti gli altri archi. Collegano de nodi che non hanno na relazione di discendenza l no dall altro. I. Castelli Visita di n grafo, A.A. 2009/ /44
29 Foresta DFS p 1/8 9/12 1/8 2/7 9/12 F B C 4/5 3/6 10/11 x y z B x y z NIL NIL y F B 2/7 3/6 4/5 y x C 10/11 z B La strttra degli alberi DFS rispecchia esattamente la strttra delle chiamate ricorsie alla procedra DF S V ISIT : = p[] se e solo se DF S V ISIT () è stata chiamata drante lo scorrimento della lista di adiacenza di. Nota: gli archi scenti ed entranti sllo stesso nodo (self-loop), engono considerati backard-edge. I. Castelli Visita di n grafo, A.A. 2009/ /44
30 Algoritmo DFS - Analisi 1 Nella procedra DF S ci sono de cicli, che engono esegiti Θ( V ) 2 La procedra DF S V ISIT iene richiamata esattamente na olta per ogni nodo V 3 Drante l eseczione di DF S V ISIT (), il ciclo nelle linee 5-8 iene esegito Adj[] olte 4 Poiché Adj[] = Θ( E ) V il costo totale per l eseczione del ciclo è Θ( E ) Il tempo totale di eseczione è Θ( V + E ) I. Castelli Visita di n grafo, A.A. 2009/ /44
31 Algoritmo DFS - Proprietà Teorema delle parentesi In na isita in profondità di n grafo (diretto o non diretto) G = (V, E), per ogni coppia di nodi e, definiamo gli interalli A = [d[], f[]] B = [d[], f[]] Allora, na e na sola delle segenti condizioni è era: 1 A B = 2 L interallo A è interamente inclso nell interallo B, e è n discendente di in n albero DFS 3 L interallo B è interamente inclso nell interallo A, e è n discendente di in n albero DFS I. Castelli Visita di n grafo, A.A. 2009/ /44
32 Algoritmo DFS - Proprietà Dimostrazione 1 Caso 1. d[] < d[]. Ci sono de sottocasi: 1 d[] < f[] iene scoperto prima di Qando si scopre la isita di non è stata completata ( è grigio) Ciò ol dire che è discendente di Poiché è stato scoperto più recentemente di, la isita di dee completarsi prima di tornare a : f[] < f[] QUindi l interallo A = [d[], f[]] è completamente contento in B = [d[], f[]] d[] d[] f[] f[] I. Castelli Visita di n grafo, A.A. 2009/ /44
33 Algoritmo DFS - Proprietà 1 2 d[] > f[] dienta nero prima che enga scoperto Qindi, qando iene scoperto la isita di è già stata completata d[] < f[] e d[] < f[] Qindi gli interalli A = [d[], f[]] e B = [d[], f[]] sono disginti d[] f[] d[] f[] 2 Caso 2. d[] > d[]: è simmetrico, basta scambiare il rolo di e Corollario (consege dal teorema delle parentesi) Un nodo è n discendente di n nodo in n albero della foresta DFS per n grafo (diretto o non diretto) G se e solo se d[] < d[] < f[] < f[] I. Castelli Visita di n grafo, A.A. 2009/ /44
34 Algoritmo DFS - Proprietà 1/8 9/12 F B 2/7 3/6 y C 10/11 z B y x z 4/5 x I. Castelli Visita di n grafo, A.A. 2009/ /44
35 Algoritmo DFS - Un altro esempio y z s t 3/6 2/9 1/10 11/16 B F C B 4/5 C 7/8 C 12/13 C 14/15 x B s 1/10 C z F 2/9 C y 3/6 7/8 C t 11/16 B 12/13 14/15 C y x s z t x 4/ I. Castelli Visita di n grafo, A.A. 2009/ /44
36 Algoritmo DFS - Proprietà Teorema del cammino bianco In na foresta DFS, n nodo è discendente di se e solo se al tempo d[] (in ci la isita scopre ), il ertice è raggingibile da con n cammino contenente esclsiamente nodi bianchi. d[]/ I. Castelli Visita di n grafo, A.A. 2009/ /44
37 Algoritmo DFS - Classificazione degli archi L algoritmo DFS pò essere modificato in modo da effettare na classificazione degli archi. Ogni arco pò essere classificato in fnzione del colore del ertice che ragginge, qando iene percorso per la prima olta: Archi bianchi. Qelli appartenenti a n albero DFS. Archi grigi. Archi backard. Uniscono de nodi grigi drante la isita DFS. Archi neri. Archi forard (se d[] < d[]) oppre crossard (se d[] > d[]). Nota: in n grafo non diretto ci possono essere ambigità perché (, ) e (, ) sono lo stesso arco. In tal caso l arco iene classificato come l arco orientata (, ) oppre (, ), a seconda della direzione in ci iene percorso per la prima olta. I. Castelli Visita di n grafo, A.A. 2009/ /44
38 Algoritmo DFS - Classificazione degli archi Teorema Se G è n grafo non orientato, allora ogni arco è n tree-edge oppre n backard-edge. Dimostrazione. Sia (, ) n arco arbitrario Spponiamo d[] < d[] (senza perdita di generalità) Allora si erifica no di qesti de casi: 1 (, ) iene isitato a partire da, con grigio e bianco. In tal caso è n tree-edge. 2 (, ) iene isitato a partire da, con e entrambi grigi. In tal caso è n backard-edge. I. Castelli Visita di n grafo, A.A. 2009/ /44
39 Algoritmo DFS - Classificazione degli archi Lemma Un grafo diretto è aciclico se e solo se l algoritmo DFS non determina l esistenza di backard-edge B x y z Dimostrazione. 1 =. Se (, ) è n arco all indietro, allora è n antenato di nella foresta DFS. Qindi, esiste n cammino da a in G, e l arco backard (, ) completa il ciclo. 2 =. Si sppone che G abbia n ciclo c. Sia il primo ertice del ciclo ad essere scoperto, e sia (, ) l arco che lo precede nel ciclo. Al tempo d[] ttti i nodi da a sono bianchi ( grigio). Per il teorema dei cammini bianchi sarà n discendente di. Qindi, (, ) è necessariamente n backard-edge. I. Castelli Visita di n grafo, A.A. 2009/ /44
40 Ordinamento topologico L algoritmo DFS pò essere sato per effettare n ordinamento topologoco dei nodi di n grafo diretto aciclico (DAG - Direct Acyclic Graph). Ordinamento topologico Un ordinamento topologico di n DAG G = (V, E) è n ordinamento lineare dei soi ertici tale che, se G contiene n arco (, ), allora compare prima di nell ordinamento. Se il grafo contenesse dei cicli, n ordinamento di qesto tipo non sarebbe possibile. I. Castelli Visita di n grafo, A.A. 2009/ /44
41 Ordinamento topologico I. Castelli Visita di n grafo, A.A. 2009/ /44
42 Ordinamento topologico 1 TOPOLOGICAL SORT(G) 2 Chiama DFS(G) p e r c a l c o l a r e i tempi d i f i n e i s i t a f [ ] 3 p e r o g n i e r t i c e 4 Appena l a i s i t a d i n nodo e finita, inseriscilo 5 in testa a na lista concatenata 6 Restitisci la lista concatenata dei nodi Spponendo che s = 2 e Adj[s] = f[2] > f[1] > f[3] > f[4] Nota: l ordinamento topologico ottento aria a seconda della sorgente scelta, e dall ordine dei nodi nelle liste Adj I. Castelli Visita di n grafo, A.A. 2009/ /44
43 Ordinamento topologico Teorema T OP OLOGICAL SORT (G) prodce n ordinamento topologico di n grafo orientato aciclico G Dimostrazione. È sfficiente dimostrare che per ogni coppia di ertici, V, se esiste n arco (, ), allora f[] < f[] Poiché il grafo è aciclico, non esistono backard-edge (archi grigi). Qindi (, ) pò essere: 1 n arco bianco (tree-edge). In tal caso è bianco e dienta discendente di e, per il teorema delle parentesi, f[] < f[] 2 n arco nero (forard-edge oppre cross-edge). In tal caso è nero e f[] < f[] perché è già dientato nero prima di aer conclso la isita di. I. Castelli Visita di n grafo, A.A. 2009/ /44
44 Ordinamento topologico - Analisi DF S(G) richiede tempo Θ( V + E ) L inserimento di ognno dei V nodi nella lista richiede tempo costante. L ordinamento topologico richiede tempo Θ( V + E ) I. Castelli Visita di n grafo, A.A. 2009/ /44
Depth-first search. Visita in profondità di un grafo Algoritmo Esempio Complessità dell algoritmo Proprietà Ordinamento topologico
Depth-first search Visita in profondità di n grafo Algoritmo Esempio Complessità dell algoritmo Proprietà Ordinamento topologico Depth-first search Dato n grafo G=(V,E) e n specifico ertice s chiamato
Appunti di Algoritmi e Strutture Dati. Grafi. Gianfranco Gallizia
Appunti di Algoritmi e Strutture Dati Grafi Gianfranco Gallizia 12 Dicembre 2004 2 Indice 1 Grafi 5 1.1 Definizione.............................. 5 1.2 Implementazione........................... 5 1.2.1
Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona
e e Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario e ed implementazione in Java Visita di un grafo e e Concetti di base Struttura
MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010
elementi di teoria dei grafi anno acc. 2009/2010 Grafi semplici Un grafo semplice G è una coppia ordinata (V(G), L(G)), ove V(G) è un insieme finito e non vuoto di elementi detti vertici o nodi di G, mentre
Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza
Il problema di flusso di costo minimo (MCF) Dati : grafo orientato G = ( N, A ) i N, deficit del nodo i : b i (i, j) A u ij, capacità superiore (max quantità di flusso che può transitare) c ij, costo di
Alberi binari. Ilaria Castelli [email protected] A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione
Alberi binari Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Alberi binari, A.A. 2009/2010 1/20 Alberi binari
Grafi. Moreno Marzolla Dip. di Informatica Scienza e Ingegneria Università di Bologna. [email protected] http://www.moreno.marzolla.
Grafi Moreno Marzolla ip. di Informatica Scienza e Ingegneria Università di ologna [email protected] http://www.moreno.marzolla.name/ opyright lberto Montresor, Università di Trento, Italy (http://www.dit.unitn.it/~montreso/asd/index.shtml)
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 è
Esercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
Algoritmi e strutture dati. Codici di Huffman
Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per
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
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
Ricerca non informata in uno spazio di stati
Università di Bergamo Facoltà di Ingegneria Intelligenza Artificiale Paolo Salvaneschi A5_2 V2.4 Ricerca non informata in uno spazio di stati Il contenuto del documento è liberamente utilizzabile dagli
Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione
Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione presentato in questo file trova la seq. a costo minimo per
STRUTTURE NON LINEARI
PR1 Lezione 13: STRUTTURE NON LINEARI Michele Nappi [email protected] www.dmi.unisa.it/people/nappi Per la realizzazione della presentazione è stato utilizzato in parte materiale didattico prodotto da Oronzo
40 Algoritmi sui Grafi
Università degli Studi di Napoli Parthenope Corso di Laurea in Informatica A.A 2014/15 PROGETTO PROGRAMMAZIONE III 40 Algoritmi sui Grafi Relatore: Prof. Raffaele Montella Studente: Diego Parlato Matricola:
Alcuni Preliminari. Prodotto Cartesiano
Alcuni Preliminari Prodotto Cartesiano Dati due insiemi A e B, si definisce il loro prodotto cartesiano A x B come l insieme di tutte le coppie ordinate (a,b) con a! A e b! B. Es: dati A= {a,b,c} e B={,2,3}
IL PROBLEMA DELLO SHORTEST SPANNING TREE
IL PROBLEMA DELLO SHORTEST SPANNING TREE n. 1 - Formulazione del problema Consideriamo il seguente problema: Abbiamo un certo numero di città a cui deve essere fornito un servizio, quale può essere l energia
Algoritmi e Strutture Dati
Alberi Binari di Ricerca (BST) Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Alberi Binari di Ricerca (Binary Search Trees BST)
I NUMERI NATURALI. Per cominciare impariamo a leggere alcuni numeri naturali e dopo prova a scriverli nella tua lingua:
I NUMERI NATURALI Per cominciare impariamo a leggere alcni nmeri natrali e dopo prova a scriverli nella ta linga: NUMERI ITALIANO LA TUA LINGUA 1 UNO 2 DUE 3 TRE 4 QUATTRO 5 CINQUE 6 SEI 7 SETTE 8 OTTO
Alberi binari di ricerca
Alberi binari di ricerca Definizione Visita dell albero inorder Ricerca Ricerca minimo, massimo e successore. Inserimento ed eliminazione di un nodo Problema del bilanciamento dell albero Albero binario
Esercizi di Matematica Finanziaria
Università degli Stdi di Siena Facoltà di Economia Esercizi di Matematica Finanziaria relativi ai capitoli XI-XIII del testo Cladio Pacati a.a. 998 99 c Cladio Pacati ttti i diritti riservati. Il presente
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 di Visita di Grafi. Damiano Macedonio [email protected]
lgoritmi di Visita di rafi amiano Macedonio [email protected] Original work opyright lberto Montresor, Università di Trento, Italy Modifications opyright 00 0, Moreno Marzolla, Università di ologna, Italy
A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.
Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio
Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.
Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale
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
Quanti centesimi mancano per avere 1 unità se ho 30 centesimi?... E se ne ho 35?... E se ne ho 73?... 0,5 1,4 3,2 7,4 0,7 0,78 1,12 1,06
I NUMERI DECIMALI Calcolo rapido Rispondi alle segenti domande. Qanti decimi occorrono per fare 1 nità?... E mezza nità?... Qanti decimi mancano per avere 1 nità intera se ho 7 decimi?... E se ne ho 6?...
Sistemi Interconnessi
Corso di Fondamenti di Atomatica Università di Roma La Sapienza Sistemi Interconnessi L. Lanari Dipartimento di Informatica e Sistemistica Università di Roma La Sapienza Roma, Ital Ultima modifica Ma 29,
TSP con eliminazione di sottocicli
TSP con eliminazione di sottocicli Un commesso viaggiatore deve visitare 7 clienti in modo da minimizzare la distanza percorsa. Le distanze (in Km) tra ognuno dei clienti sono come segue: 3 5 7-8 9 57
Introduzione. Algoritmi Link-State. Principi. Adiacenze OSPF (2) Adiacenze OSPF (1) Open Shortest Path First Protocol (OSPF)
Introdzione Open Shortest Path First Protocol (OSPF) Svilppo inizia nel 987 OSPF Working Grop (parte di IETF) OSPFv2 emanato nel 99 OSPFv2 aggiornato nel RFC 278 Principi OSPF è n protocollo di roting
Alberi auto-aggiustanti
Alberi auto-aggiustanti Dispensa didattica per il corso di Algoritmi e Strutture Dati a.a. 2007/2008 ver. 1.3 Ing. Claudio Mazzariello, Prof. Carlo Sansone 27 Maggio 2008 A differenza di altre possibili
LEZIONE 23. Esempio 23.1.3. Si consideri la matrice (si veda l Esempio 22.2.5) A = 1 2 2 3 3 0
LEZIONE 23 231 Diagonalizzazione di matrici Abbiamo visto nella precedente lezione che, in generale, non è immediato che, data una matrice A k n,n con k = R, C, esista sempre una base costituita da suoi
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,
1. Considerazioni generali
1. Considerazioni generali Modelli di shop scheduling In molti ambienti produttivi l esecuzione di un job richiede l esecuzione non simultanea di un certo numero di operazioni su macchine dedicate. Ogni
3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Scopo: Stimare l onere computazionale per risolvere problemi di ottimizzazione e di altra natura
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Esercizi II parte Esercizio 1 Discutere la correttezza di ciascuna delle seguenti affermazioni. Dimostrare formalmente la validità
Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo
Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo L. De Giovanni G. Zambelli 1 Problema del flusso a costo minimo Il problema del flusso a costo minimo é definito
Ricerca Operativa. Claudio Arbib Universitàdi L Aquila. Problemi combinatorici (Gennaio 2006)
Claudio Arbib Universitàdi L Aquila Ricerca Operativa Problemi combinatorici (Gennaio 2006) Sommario Problemi combinatorici Ottimizzazione combinatoria L algoritmo universale Il metodo greedy Problemi
Plate Locator Riconoscimento Automatico di Targhe
Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa
Dimensione di uno Spazio vettoriale
Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione
Struttura elettronica delle molecole. Teoria quantistica del legame chimico
Strttra elettronica delle molecole. Teoria qantistica del legame chimico Lo ione idrogeno molecolare H 2 + Eq. Schroedinger singolo elettrone La fnzione d onda φ b soddisfa na eqazione analoga. Gli atovalori
La struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
Parte 2. Determinante e matrice inversa
Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice
TSP con eliminazione di sottocicli
TSP con eliminazione di sottocicli Un commesso viaggiatore deve visitare 7 clienti in modo da minimizzare la distanza percorsa. Le distanze (in Km) tra ognuno dei clienti sono come segue: 7-8 9 7 9-8 79
Minimo Albero Ricoprente
Minimo lbero Ricoprente Pag. 1/20 Minimo lbero Ricoprente Il problema della definizione di un Minimo lbero Ricoprente trova applicazione pratica in diverse aree di studio, quali ad esempio la progettazione
Il Metodo Branch and Bound
Il Laura Galli Dipartimento di Informatica Largo B. Pontecorvo 3, 56127 Pisa [email protected] http://www.di.unipi.it/~galli 4 Novembre 2014 Ricerca Operativa 2 Laurea Magistrale in Ingegneria Gestionale
1. PRIME PROPRIETÀ 2
RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,
b i 1,1,1 1,1,1 0,1,2 0,3,4
V o Appello // RICERCA OPERATIVA - Corso A (a.a. 9/) Nome Cognome: Corso di Laurea: L C6 LS LM Matricola: ) Si consideri il problema di flusso di costo minimo in figura. Si verifichi se il flusso ammissibile
Intelligenza Artificiale. Metodi di ricerca
Intelligenza Artificiale Metodi di ricerca Marco Piastra Metodi di ricerca - 1 Ricerca nello spazio degli stati (disegno di J.C. Latombe) I nodi rappresentano uno stato Gli archi (orientati) una transizione
Ricerca Operativa A.A. 2007/2008
Ricerca Operativa A.A. 2007/2008 9. Cenni su euristiche e metaeuristiche per ottimizzazione combinatoria Motivazioni L applicazione di metodi esatti non è sempre possibile a causa della complessità del
Esercizi Capitolo 5 - Alberi
Esercizi Capitolo 5 - Alberi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle
Analisi di una Rete Sociale
2012 Analisi di una Rete Sociale Alessandro Lovati Matricola 626053 Comunicazione Digitale ord. F47 26/01/2012 Indice : 1. Obiettivo del progetto 2. Realizzazione 3. Analisi dei risultati 3.1. Numero di
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
2.3.4 Pianificazione di progetti
.. Pianificazione di progetti Un progetto è costituito da un insieme di attività i, con i =,..., m, ciascuna di durata d i. stima Tra alcune coppie di attività esistono relazioni di precedenza del tipo
Programmazione dinamica
Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)
Parte 3: Gestione dei progetti, Shop scheduling
Parte : Gestione dei progetti, Shop scheduling Rappresentazione reticolare di un progetto Insieme di attività {,...,n} p i durata (nota e deterministica dell attività i) relazione di precedenza fra attività:
Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare Problemi di flusso
Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare Problemi di flusso Flusso di costo minimo È dato un grafo direzionato G = (N, A). Ad ogni arco (i, j) A è associato il costo c ij
Macchine sequenziali
Corso di Calcolatori Elettronici I A.A. 2010-2011 Macchine sequenziali Lezione 14 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Automa a Stati Finiti (ASF) E una prima astrazione di
4. Operazioni elementari per righe e colonne
4. Operazioni elementari per righe e colonne Sia K un campo, e sia A una matrice m n a elementi in K. Una operazione elementare per righe sulla matrice A è una operazione di uno dei seguenti tre tipi:
Introduzione Ordini parziali e Reticoli Punti fissi
Introduzione Ordini parziali e Reticoli Punti fissi By Giulia Costantini (819048) & Giuseppe Maggiore (819050) Table of Contents ORDINE PARZIALE... 3 Insieme parzialmente ordinato... 3 Diagramma di Hasse...
Funzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
Controlli automatici
Controlli atomatici Sistemi a tempo discreto Prof. Paolo Rocco ([email protected]) Politecnico di Milano Dipartimento di Elettronica, Informaione e Bioingegneria Introdione Un sistema dinamico a tempo
Tecniche Reticolari. Problema: determinare l istante di inizio di ogni attività in modo che la durata complessiva del progetto sia minima
Project Management Tecniche Reticolari Metodologie per risolvere problemi di pianificazione di progetti Progetto insieme di attività A i di durata d i, (=,...,n) insieme di relazioni di precedenza tra
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
Il principio di induzione e i numeri naturali.
Il principio di induzione e i numeri naturali. Il principio di induzione è un potente strumento di dimostrazione, al quale si ricorre ogni volta che si debba dimostrare una proprietà in un numero infinito
GESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy [email protected] Rudimenti di programmazione Programming
Sommario della lezione
Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/33 Sommario della lezione Ancora sui cammini minimi: Cammini minimi in grafi con archi di costo negativo Algoritmi
Soluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
IL SISTEMA INFORMATIVO
LEZIONE 15 DAL MODELLO DELLE CONDIZIONI DI EQUILIBRIO AL MODELLO CONTABILE RIPRESA DEL CONCETTO DI SISTEMA AZIENDALE = COMPLESSO DI ELEMENTI MATERIALI E NO CHE DIPENDONO RECIPROCAMENTE GLI UNI DAGLI ALTRI
risulta (x) = 1 se x < 0.
Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente
execute reject delay
Scheduler Lo scheduler stabilisce l ordine di esecuzione delle operazioni. Le azioni che svolge sono: execute: l operazione può essere eseguita immediatamente, per cui viene passata al data manager reject:
Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007
Sommario Macchine a stati finiti M. Favalli 5th June 27 4 Sommario () 5th June 27 / 35 () 5th June 27 2 / 35 4 Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:
A i è un aperto in E. i=1
Proposizione 1. A è aperto se e solo se A c è chiuso. Dimostrazione. = : se x o A c, allora x o A = A o e quindi esiste r > 0 tale che B(x o, r) A; allora x o non può essere di accumulazione per A c. Dunque
24 - Strutture simmetriche ed antisimmetriche
24 - Strutture simmetriche ed antisimmetriche ü [.a. 2011-2012 : ultima revisione 1 maggio 2012] In questo capitolo si studiano strutture piane che presentano proprieta' di simmetria ed antisimmetria sia
CPM - PERT CPM - PERT. Rappresentazione di un progetto. Gestione di un progetto. Critical Path Method Project Evaluation and Review Technique
CPM - PERT CPM - PERT CPM e PERT sono metodologie per la gestione di progetti composti da più attività in cui esistano relazioni di precedenza. Critical Path Method Project Evaluation and Review Technique
Calcolatori Elettronici
Calcolatori Elettronici CPU a singolo ciclo assimiliano Giacomin Schema del processore (e memoria) Unità di controllo Condizioni SEGNALI DI CONTROLLO PC emoria indirizzo IR dato letto UNITA DI ELABORAZIONE
Ricorsione. Rosario Culmone. - p. 1/13
Ricorsione Rosario Culmone - p. 1/13 Induzione e Ricorsione Spesso utilizzeremo le definizioni induttive. Sono forme di definizione compatte che descrivono un numero infinito di elementi. I contesti di
Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:
Sommario Macchine a stati finiti M. Favalli Engineering Department in Ferrara 4 Sommario (ENDIF) Analisiesintesideicircuitidigitali / 35 (ENDIF) Analisiesintesideicircuitidigitali 2 / 35 4 Le macchine
Ricorsione in SQL-99. Introduzione. Idea di base
Ricorsione in SQL-99 Introduzione In SQL2 non è possibile definire interrogazioni che facciano uso della ricorsione Esempio Voli(lineaAerea, da, a, parte, arriva) non è possibile esprimere l interrogazione
Algoritmi e Strutture Dati
Elementi di Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Il problema La CMC produce automobili in uno stabilimento
