Algoritmi e Strutture Dati
|
|
|
- Ivo Bonelli
- 8 anni fa
- Visualizzazioni
Transcript
1 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
2 Introduzione ai grafi Definition (Grafi orientati) Un grafo orientato G è una coppia (V, E) dove V è un insieme finito (non vuoto) di nodi (detti anche vertici) ed E V V è un insieme di coppie ordinate di nodi, detti archi Rappresentazione di un grafo orientato G = (V, E) con insieme di vertici V = {1, 2, 3, 4, 5, 6} ed E = {(1, 2), (2, 2), (2, 5), (4, 1), (4, 5), (5, 4), (6, 3)} Sono ammessi cappi, ossia archi che escono ed entrano nello stesso nodo
3 Introduzione ai grafi Definition (Grafi non orientati) In un grafo non orientato G = (V, E) l insieme di archi E è composto da coppie non ordinate, anzichè da coppie ordinate Rappresentazione di un grafo non orientato G = (V, E) con insieme di vertici V = {1, 2, 3, 4, 5, 6} ed E = {(1, 2), (2, 2), (2, 5), (4, 1), (6, 3)} Per convenzione, utiliziamo la notazione (u, v) per un arco; le notazioni (u, v) ed (v, u) denotano lo stesso arco. Inoltre in un grafo non orientato non sono ammessi cappi.
4 Introduzione ai grafi Definition (Incidenza e adiacenza) Se (u, v) è un arco di un grafo orientato G = (V, E), diciamo che (u, v) esce dal nodo u ed entra nel nodo v. Se (u, v) è un arco di un grafo non orientato G = (V, E), diciamo che (u, v) è incidente nei nodi u e v. Se (u, v) è un arco di un grafo (orientato e non) G = (V, E), diciamo che il nodo u è adiacente al nodo v. Nota: Per grafi non orientati la relazione di adicenza è simmetrica (ossia se u è adiacente a v, allora anche v è adiacente ad u). Viceversa, per grafi orientati, la relazione di adiacenza non è necessariamente simmetrica (ossia, u adiacente a v non implica necessariamente v adiacente ad u)
5 Introduzione ai grafi Definition (Grado) Sia G = (V, E) un grafo non orientato ed u V un nodo di G. Il grado di u è il numero di archi che incidono nel nodo Sia G = (V, E) un grafo orientato ed u V un nodo di G. Il grado uscente di u è il numero di archi che escano dal nodo, mentre il grado entrante di u è il numero di archi che entrano nel nodo. Il grado di u è la somma del suo grado uscente e del suo grado entrante Un nodo u si dice isolato se il suo grado è zero
6 Introduzione ai grafi Definition (Cammini e cicli) Un cammino di lunghezza k da un nodo u ad un nodo v in un grafo G = (V, E) è una sequenza v 0, v 1,..., v k di vertici tali che u = v 0, v = v k e (v i 1, v i ) E per i = 1, 2,..., k. La lunghezza del cammino è data dal numero di archi nel cammino Se esiste un cammino p da u a v, diciamo che v è raggiungibile da u attraverso p. Questo fatto viene indicato con u p v Un cammino è semplice se tutti i nodi nel cammino sono distinti Un cammino v 0, v 1,..., v k forma un ciclo se v 0 = v k ed il cammino contiene almeno un arco (se la lunghezza del ciclo è 1 allora il ciclo è un cappio). Il ciclo è semplice se i vertici v 1,..., v k (tutti tranne v 0 ) sono distinti. Un grafo senza cicli è detto aciclico
7 Introduzione ai grafi Definition (Grafi connessi) Un grafo non orientato G = (V, E) è connesso se ogni coppia di nodi é collegata attraverso un cammino Le componenti connesse di un grafo non orientato sono le classi di equivalenza dei vertici secondo la relazione è raggiungibile da Example (Grafi connessi) Le componenti connesse del seguente grafo sono {1, 2, 5}, {4}, {3, 6}
8 Introduzione ai grafi Definition (Grafi fortemente connessi) Un grafo orientato G = (V, E) è fortemente connesso se due vertici qualsiasi sono raggiungibili l uno dall altro Le componenti fortemente connesse di un grafo orientato sono le classi di equivalenza dei vertici secondo la relazione sono mutuamente raggiungibili Example (Grafi fortemente connessi) Le componenti connesse del seguente grafo sono {1, 2, 4, 5}, {3}, {6}
9 Introduzione ai grafi Rappresentazione di grafi Nella memoria di una macchina un grafo G = (V, E) può essere rappresentato mediante: Liste di adiacenza: per ogni nodo u V viene costruita la lista dei vertici v 1,..., v k adiacenti ad u, ossia tali che u, v i E per ogni i = 1,..., k Matrice di adiacenza: il grafo viene rappresentato mediante una matrice quadrata M di dimensione n n (con n = V, il numero di nodi del grafo) in cui M i,j = 1 se (v i, v j ) E, M i,j = 0 altrimenti
10 Introduzione ai grafi Rappresentazione di grafi Consideriamo il grafo La sua rappresentazione mediante matrice di adiacenza è la seguente
11 Introduzione ai grafi Rappresentazione di grafi Consideriamo il grafo La sua rappresentazione mediante liste di adiacenza è la seguente
12 Introduzione ai grafi Rappresentazione di grafi: liste di adiancenza Le liste di adiacenza consentono di rappresentare in modo compatto grafi sparsi, ossia grafi per cui E (il numero di archi) è molto più piccolo di V V Se il grafo è orientato, la somma delle lunghezze di tutte le liste di adiacenza è E, perchè un arco (u, v) viene rappresentato inserendo v in Adj[u] (lista di adiacenza di u) Se il grafo è non orientato, la somma delle lunghezze di tutte le liste di adiacenza è 2 E, perchè se un arco (u, v) è non orientato, allora v compare nella lista di adiacenza di u e viceversa Le liste di adiacenza possono essere adattate per rappresentare grafi pesati, cioè grafi per i quali ogni arco ha associato un peso. I pesi associati agli archi vengono tipicamente rappresentati mediante una funzione peso w : E R Se G è pesato con funzione peso w, il peso w(u, v) dell arco (u, v) viene memorizzato insieme a v nella lista di adiacenza di u
13 Introduzione ai grafi Rappresentazione di grafi: liste di adiancenza L unico svantaggio è che non esiste un modo veloce per stabile se un certo arco (u, v) E; possiamo solo cercare v nella lista di adiacenza di u (il che richiede un tempo non necessariamente costante) Gli algorimi di visita (in ampiezza ed in profondità) di un grafo assumono una rappresentazione del grafo in input mediante liste di adiacenza
14 Introduzione ai grafi Rappresentazione di grafi: matrici di adiancenza La matrice di adiacenza di un grafo richiede una memoria pari a Θ( V 2 ), indipendentemente dal numero di archi del grafo stesso. Possiamo però stabilire se un certo (u, v) E in un tempo costante È particolarmente adatta per rappresentare grafi densi, ossia grafi in cui E è prossimo a V V Se G è pesato con funzione peso w, il peso w(u, v) dell arco (u, v) viene memorizzato nella posizione M u,v della matrice di adiacenza
15 Parte I Visite di grafi
16 Visita in ampiezza (breadth-first search, BFS) Dato un grafo G = (V, E) ed un vertice s, detto sorgente, ispeziona in maniera sistematica tutti gli archi del grafo per determinare tutti i nodi raggiungibili da s. Vengono visitati prima i nodi la cui distanza (intesa come numero minimo di archi) dalla sorgente è 1, poi quelli a distanza 2, 3 e così via. L algoritmo di visita in ampiezza: calcola la distanza da s di ciascun nodo raggiungibile costruisce quello che viene chiamato breadth-first tree (BF tree): un albero la cui radice è s e che contiene tutti i nodi raggiungibili da s. per ogni nodo v raggiungibile da s, il cammino nel BF tree corrisponde al cammino minimo (quello con minor numero di archi) da s a v.
17 Visita in ampiezza (breadth-first search, BFS) Per tener traccia del lavoro svolto (di quali nodi sono stati visitati e quali no), l algoritmo colora i nodi di bianco, grigio e nero. inizialmente tutti i nodi sono bianchi, poi diventano grigi ed infine neri un nodo viene scoperto quando viene incontrato per la prima volta durante una visita. Da quel momento in poi cessa di essere un nodo bianco e diventa grigio un generico nodo v diventa nero solo quando tutti i nodi adiacenti a v sono stati scoperti (e quindi sono diventati grigi)
18 Visita in ampiezza (breadth-first search, BFS) Quando un nodo v viene scoperto durante l ispezione della lista di adiacenza di un dato nodo u, il vertice v e l arco (u, v) sono aggiunti nel BF tree Il nodo u è detto predecessore o padre di v nel BF tree. Poichè un nodo viene scoperto una sola volta, esso ha al più un padre. L insieme dei nodi scoperti durante una visita viene gestito mediante una coda.
19 Visita in ampiezza - l algoritmo BFS(G, s) 1 for each nodo u V (G) {s} 2 color[u] white 3 d[u] la distanza di u da s 4 π[u] il padre di u nel BF tree 5 color[s] gray 6 d[u] 0 7 π[u] nil s è la radice del BF tree 8 Q 9 Enqueue(Q, s) Q è la coda dei nodi scoperti 10 while Q 11 do u Dequeue(Q) 12 for each v Adj[u] 13 do if color[v] = white 14 then color[v] gray 15 d[v] d[u] π[v] u 17 Enqueue(Q, v) 18 color[u] black
20 Visita in Ampiezza un esempio r s t u 0 Q s v w x y (a) r s t u v w x y Q w r (b)
21 Visita in Ampiezza un esempio r s t u Q r t x 1 2 v w x y (c) r s t u Q t x v v w x y (d)
22 Visita in Ampiezza un esempio r s t u Q x v u v w x y (e) r s t u Q v u y v w x y (f)
23 Visita in Ampiezza un esempio r s t u v w x y (g) r s t u v w x y Q u Q y y (h)
24 Visita in Ampiezza un esempio r s t u v w x y Q (i)
25 Visita in Ampiezza analisi Sia G = (V, E) con V = n nodi e E = m archi. Determiniamo il costo di BFS(G, s) il metodo di aggregazione. Il costo è determinato da: costo della fase di inizializzazione (righe 1-9) ossia O(n) dal costo del ciclo while di riga 10. Durante questo ciclo eseguiamo delle operazioni sulla coda (enqueue, dequeue) + una scansione della lista di adiacenza di ogni nodo u estratto dalla coda le operazioni di inserimento e cancellazione dalla coda richiedono un tempo O(1). Ogni nodo viene inserito ed estratto dalla coda solo una volta. Il costo complessivo della gestione della coda è O(n) La lista di adiacenza di generico un nodo viene ispezionata al più una volta (quando il nodo viene estratto dalla coda). Poichè la somma delle lunghezze di tutte le liste di adiacenza è Θ(m) il tempo necessario per ispezionare tutte le liste di adiacenza è O(m) Il costo dell algoritmo è O(n) + O(n) + O(m) = O(n + m)
26 (depth-first search, DFS) La strategia adottata da questo schema di visita consiste nel visitare il grafo sempre più in profondità (fin quando è possibile) Si comincia con il visitare un nodo qualsiasi v che viene marcato come scoperto La visita prosegue ispezionando tutti gli archi uscenti dal nodo corrente v alla ricerca di un nodo w collegato ad v e non ancora visitato Se tale nodo esiste, diventa il prossimo nodo corrente (viene marcato come scoperto e si ripente il passo precedente) Prima o poi, si arriva ad un punto in cui tutti gli archi incidenti il nodo corrente v portano a nodi visitati
27 (depth-first search, DFS) In questo caso siamo costretti a fare un passo indietro ( backtrack ), tornando al nodo u visitato prima di v; u diventa il nodo corrente e si ripetono i passi precedenti Lo schema di visita in profondità (a partire dal nodo 1) visita, nell ordine 1, 2, 3, 6, 5, 4
28 (depth-first search, DFS) Proprio come la visita in ampiezza, colora i nodi per distinguere i nodi non ancora scoperti (WHITE), da quelli scoperti ma non espansi (GRAY) e da quelli espansi (BLACK) Di nuovo ad ogni nodo v viene associato un precedessore denotato con π[v], è il nodo che ci consente di raggiungere v durante la visita Inoltre, ogni nodo v ha associate due informazioni temporali: il tempo di scoperta d[v] registra il momento in cui il nodo viene scoperto (e diventa grigio) il tempo di completamento f [v] registra il momento in cui la visita completa l ispezione della lista di adiacenza di v (ed il nodo diventa nero) Per ogni nodo v abbiamo che d[v] < f [v]; inoltre: v è WHITE prima di d[u], è GRAY tra d[u] e f [u], e BLACK successivamente
29 (depth-first search, DFS) DFS(G) 1. foreach nodo u V [G] 2. do color[u] WHITE 3. π[u] NIL 4. time 0 time è una variabile globale usata per calcolare i tempi d[u] e f [u] 5. foreach nodo u V [G] 6. do if color[u] = WHITE 7. then DFS-visit(u) N.B: Il risultato della visita potrebbe dipendere dall ordine con cui i nodi vengono ispezionati nella riga 5 In realtà, queste differenze nell ordine non causano problemi, perchè tutti i possibili risultati della visita sono sostanzialmente equivalenti
30 (depth-first search, DFS) DFS-visit(u) 1. color[u] GRAY 2. time time d[u] time 4. foreach nodo v Adj[u] 5. do if color[v] = WHITE ispezioniamo l arco (u, v) 6. then π[v] u 7. DFS-visit(v) 8. color[u] BLACK 9. time time f [u] time
31 (depth-first search, DFS) Nella fase di inizializzazione, tutti i nodi vengono colorati di bianco ed il loro predecessore viene settato a NIL; la variabile globale time viene settato a zero DFS-visit(u) visita (in profondità) tutti i nodi raggiungibili da u Quando DFS finisce, ogni vertice u ha associato un tempo di scoperta d[u] e un tempo di completamento f [u]
32 un esempio u v w u v w 1/ 1/ 2/ x y z x y z u v w u v w 1/ 2/ 1/ 2/ 3/ 4/ 3/ x y z x y z
33 un esempio u v w u v w 1/ 2/ 1/ 2/ 4/5 3/ 4/5 3/6 x y z x y z u v w u v w 1/ 2/7 1/8 2/7 4/5 3/6 4/5 3/6 x y z x y z
34 un esempio u v w u v w 1/8 2/7 9/ 1/8 2/7 9/ 4/5 3/6 4/5 3/6 10/ x y z x y z u v w u v w 1/8 2/7 9/ 1/8 2/7 9/12 4/5 3/6 10/11 4/5 3/6 10/11 x y z x y z
35 complessità Quale è il tempo di esecuzione di DFS? Il ciclo di righe 1-3 impiegano un tempo O(n). Quanto ci costa eseguire ciascun chiamata di DFS-Visit? La procedura DFS-Visit viene eseguita esattamente una volta per ogni vertice v V (viene invoca solo se il colore è WHITE e la prima cosa che fa è cambiare il colore degli archi in GRAY) Durante un esecuzione di DFS-Visit, il ciclo delle righe 4-7 viene eseguito Adj[u] volte. Poichè Adj[u] = O(m) v V dove m = E, il costo totale per le chiamate di DFS-Visit è O(m). Quindi il costo totale dell algoritmo è O(n + m)
36 Sottografo dei predecessori Il sottografo dei predecessori è definito in modo leggermente diverso da BFS G π = (V, E π ) E π = {(π[v], v) : v V and π[v] NIL} G π forma una foresta depth-first perchè, in generale, è composta da vari alberi depth-first u 1/8 v 2/7 w 9/12 4/5 3/6 10/11 x y z
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 è
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
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
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])
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
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
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
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
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 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
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]
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
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
Minimo albero di copertura
apitolo 0 Minimo albero di copertura efinizione 0.. ato un grafo G = (V, E) non orientato e connesso, un albero di copertura di G è un sottoinsieme T E tale che il sottografo (V, T ) è un albero libero.
Gestione della produzione e della supply chain Logistica distributiva
Gestione della produzione e della supply chain Logistica distributiva Paolo Detti Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena Convergenza dell algoritmo Se non
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
Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte III
Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte III Applicazioni di DFS Due prolemi: calcolare l ordinamento topologico indotto da un grafo aciclico.
GRAFI. fig.1 - GRAFI (1) Si avvisa il lettore che certe definizioni che verranno date differiscono da quelle presenti in letteratura.
GRAFI 1. Definizioni, terminologia, esempi e applicazioni (1) Un grafo orientato (o diretto o di-grafo) G è una coppia (V,E) dove V è un insieme non vuoto ed E una relazione binaria su V, E V V, ossia
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
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
Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi
Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore
Problemi, istanze, soluzioni
lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un
Introduzione ai grafi
TFA A048 Anno Accademico 2012-13 Outline Cenni storici sui grafi Nozioni introduttive: cammini, connessione, alberi, cicli Cammini di costo minimo Origini storiche La nascita della teoria dei grafi risale
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
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,
Progettazione di Algoritmi
Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai
Algoritmo basato su cancellazione di cicli
Algoritmo basato su cancellazione di cicli Dato un flusso ammissibile iniziale, si costruisce una sequenza di flussi ammissibili di costo decrescente. Ciascun flusso è ottenuto dal precedente flusso ammissibile
Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi
Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 (Esercizio C-14.34 del testo [GTG14]) Sia G = (V, E) un grafo non diretto con n =
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
Fondamenti di informatica
Fondamenti di informatica 30 novembre 2017 This book is the result of a collaborative effort of a community of people like you, who believe that knowledge only grows if shared. We are waiting for you!
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
Progettazione di algoritmi
Progettazione di algoritmi Discussione dell'esercizio [vincoli] Prima di tutto rappresentiamo il problema con un grafo G: i nodi sono le n lavorazioni L 1, L 2,, L n, e tra due nodi L h, L k c'è un arco
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
11.4 Chiusura transitiva
6 11.4 Chiusura transitiva Il problema che consideriamo in questa sezione riguarda il calcolo della chiusura transitiva di un grafo. Dato un grafo orientato G = hv,ei, si vuole determinare il grafo orientato)
Problema dell albero di cammini minimi (SPT, Shortest Path Tree) o problema dei cammini minimi :
Per almeno una delle soluzioni ottime { P i, i r } del problema generalizzato, l unione dei cammini P i forma un albero di copertura per G radicato in r e orientato, ossia un albero la cui radice è r i
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
Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari.
Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari. Algoritmi e Strutture Dati + Lab A.A. / Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro ALBERO
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
2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
. Cammini ottimi E. Amaldi Fondamenti di R.O. Politecnico di Milano .. Cammini minimi e algoritmo di Dijkstra Dato un grafo orientato G = (N, A) con una funzione di costo c : A c ij R e due nodi s e t,
Cammini minimi fra tutte le coppie
Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)
Alberi binari di ricerca
Alberi binari di ricerca Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010
Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei
Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare
Algoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta
UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013
A UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa Seconda prova intermedia 7 giugno 0 Nome: Cognome: Matricola: Orale /06/0 ore aula N Orale 0/07/0 ore aula N
Grafi e reti di flusso
Grafi e reti di flusso Molti problemi di ottimizzazione sono caratterizzati da una struttura di grafo: in molti casi questa struttura emerge in modo naturale, in altri nasce dal particolare modo in cui
UNIVERSITA DEGLI STUDI DI PERUGIA
UNIVERSITA DEGLI STUDI DI PERUGIA REGISTRO DELLE LEZIONI E DELLE ALTRE ATTIVITÀ DIDATTICHE Anno accademico 2006-2007 Dott./Prof. Pinotti Maria Cristina Settore scientifico-disciplinare INF01 Facoltà Scienze
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
Corso di elettrotecnica Materiale didattico: i grafi
Corso di elettrotecnica Materiale didattico: i grafi A. Laudani 12 ottobre 2005 I grafi costituiscono uno strumento matematico che permette di descrivere e schematizzare una grande varietà di problemi
Algoritmi distribuiti su reti sincrone. Introduzione alle reti sincrone
Lucia Pallottino. Sistemi Robotici Distribuiti - Versione del 18 Aprile 2012 194 Algoritmi distribuiti su reti sincrone Per questo capitolo si può fare riferimento al libro Distributed Algorithms di Nancy
Grafi e Funzioni di Costo ESERCIZI
Grafi e Funzioni di Costo ESERCIZI Esercizio1 Si determini la matrice di incidenza archi-percorsi ed i costi di percorso per la rete di trasporto rappresentata in figura. 1 4 2 3 5 Ramo Costo Ramo Costo
2.2 Alberi di supporto di costo ottimo
. Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) protocolli reti IP memorizzazione compatta di
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro
2.2 Alberi di supporto di costo ottimo
. Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) memorizzazione compatta di sequenze (DNA) diffusione
Algoritmi e Strutture di Dati (3 a Ed.) Algoritmo dei tre indiani. Alan Bertossi, Alberto Montresor
Algoritmi e Strutture di Dati ( a Ed.) Algoritmo dei tre indiani Alan Bertossi, Alberto Montresor Vediamo a grandi linee un algoritmo proposto da Kumar, Malhotra e Maheswari (978) come raffinamento di
Note per la Lezione 4 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che
Progettazione di algoritmi
Progettazione di algoritmi Discussione dell'esercizio [labirinto] Nel testo dell'esercizio abbiamo considerato come lunghezza del percorso il numero di bivi ma possiamo stimare meglio la lunghezza reale
Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa
Alberi di copertura Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo, Pisa [email protected] M. Passacantando TFA 0/ - Corso di Ricerca Operativa Università di Pisa / 9 Definizioni
Strutture dati per insiemi disgiunti
Strutture dati per insiemi disgiunti Servono a mantenere una collezione S = {S 1, S 2,..., S k } di insiemi disgiunti. Ogni insieme S i è individuato da un rappresentante che è un particolare elemento
Graf. Progettazione di Algoritmi a.a Matricole congrue a 1. Docente: Annalisa De Bonis
Graf Progettazione di Algoritmi a.a. 2016-17 Matricole congrue a 1 Docente: Annalisa De Bonis 1 Grafi non direzionati Grafi non direzionati. G = (V, E) V = insieme nodi. E = insieme archi. Esprime le relazioni
Alberi ed Alberi Binari
Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,
«Sciente e Tecnologie dei Beni Culturali»
5 Informatica CdS in «Sciente e Tecnologie dei Beni Culturali» AA 2014-2015 Mini-sito dell insegnamento: http://www.unife.it/scienze/beni.culturali/insegnamenti/informatica Prof. Giorgio Poletti [email protected]
Alberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
Alberto Montresor Università di Trento
!! Algoritmi e Strutture Dati! Capitolo 5 - Alberi!!! Alberto Montresor Università di Trento!! This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy
Il problema del commesso viaggiatore
Il problema del commesso viaggiatore Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa [email protected] M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università
Makespan con set-up dipendenti dalla sequenza. 1/s jk /C max
Makespan con set-up dipendenti dalla sequenza 1/s jk /C max 1/s jk /C max Un tempo di riattrezzaggio (set-up) s jk è richiesto fra il processamento di j e quello di k. In questo caso, C max dipende dalla
Progettazione di Algoritmi
Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 06/07/2016 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via
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
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 di visita di un grafo
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
Esercizi su strutture dati
Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate
AMPL Problemi su Reti
Dipartimento di Matematica Università di Padova Corso di Laurea Informatica Outline Problemi su Reti Cammino Minimo Molti problemi di ottimizzazione combinatoria possono essere modellati ricorrendo ai
1) Codici convoluzionali. 2) Circuito codificatore. 3) Diagramma a stati e a traliccio. 4) Distanza libera. 5) Algoritmo di Viterbi
Argomenti della Lezione 1) Codici convoluzionali 2) Circuito codificatore 3) Diagramma a stati e a traliccio 4) Distanza libera 5) Algoritmo di Viterbi 1 Codici convoluzionali I codici convoluzionali sono
Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
Il problema dello zaino
Il problema dello zaino Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 25 gennaio 2010 Il problema dello zaino 0-1
Heap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
AUTOMA A STATI FINITI
Gli Automi Un Automa è un dispositivo, o un suo modello in forma di macchina sequenziale, creato per eseguire un particolare compito, che può trovarsi in diverse configurazioni più o meno complesse caratterizzate
