Analisi e implementazione dell algoritmo di Dijkstra (Parte 1)
|
|
- Eleonora Molinari
- 5 anni fa
- Visualizzazioni
Transcript
1 Analisi e implementazione dell algoritmo di Dijkstra (Parte 1) Algoritmicamente August 1, Concetti fondamentali Definizione 1 Un grafo è un insieme di vertici più un insieme di archi che connettono coppie di vertici distinti. Una definzione più formale è comunque necessaria in quanto all interno di tale articolo essa sarà spesso utilizzata: Definizione 1.1 Si dice grafo G una coppia ordina G=(V,E) di insiemi, dove V è l insieme dei vertici ed E l insieme degli archi. Definizione 1.2 Un vertice è un punto terminale oppure un punto di intersezione di un grafo. Definizione 1.3 Un arco è una connessione tra due vertici. Esso viene indicato con la coppia (i,j), dove i indica il vertice da cui parte l arco (testa) e j indica il vertice in cui arriva (coda). Per dare un idea più concreta di un grafo, viene mostrato un esempio di esso: 1
2 Come si può notare l insieme dei vertici V = {v 1, v 2, v 3, v 4, v 5, v 6 } mentre l insieme degli archi è dato da tutte le coppie di vertici che vengono connessi tra loro, in questo caso: G = {{v 1, v 2 }, {v 1, v 4 },{v 1, v 6 },{v 3, v 6 },{v 5, v 2 },{v 5, v 6 }, {v 2, v 4 },{v 4, v 6 },{v 5, v 6 }}. Spesso (come nel caso trattato) ad ogni vertice o ad ogni arco viene associato un peso ossia un valore numerico che indica la distanza che intercorre da due vertici. Tale tipo di grafo prende il nome di grafo pesato del quale viene data una definizione più formale. Definizione 1.4 Un grafo pesato G è definito come una terna G = (V,E,P). Dove V ed E indicano il grafo G = (V,E) e P indica una generica funzione che ad ogni vertice o ad ogni arco associa un valore numerico n ǫ [, + ]. Definizione 1.5 Un cammino (p) in un grafo è una sequenza di vertici nei quali ogni vertice successivo è adiacente al precedente nel cammino. Definizione Un cammino semplice, è un cammino dove tutti i vertici sono distinti. Definizione Un ciclo è un cammino semplice, eccetto che il vertice iniziale e finale rimangono invariati. fig. 2 Grafo pesato fig. 3 Possibile cammino di un grafo Nella figura 3 è possibile vedere il cammino p = {v 1, v 2, v 5, v 3, v 6 } 2 Cammini minimi L analisi dei cammini minimi è il cuore di tale articolo, infatti l algorito di Dijkstra ha come scopo quello di trovare il cammino minimo all interno di un grafo. Prima di tutto bisogna far chiarimento su cosa sia un cammino minimo Definizione 2 Dato un grafo G=(V,E,P) ed un cammino p = {v 1, v 2,..., v n } il peso di un cammino ω(p) è la somma dei pesi degli archi che compongono tale cammino. 2
3 Dalla figura risulta che il peso del cammino in rosso è dato da: ω(p) = ( ) = 30. Detto ciò è possibile ora definire il cammino minimo di un generico grafo G. Definizione 2.1 Dato un grafo G = (V,E,P) il cammino minimo di tale grafo è il più piccolo dei ω(p n ), dove p i 1 i n è un generico cammino del grafo G. Grazie a tale definizione appare più chiaro lo scopo dell algoritmo di Dijkstra, infatti mediante esso possiamo trovare IL cammino minimo all interno di un grafo pesato G. Seguono dunque alcuni esempi per mostrare il cammino minimo all interno di un grafo: fig. 4 Cammino minimo corretto fig. 5 Cammino minimo scorretto Come si può dunque notare dalle due figure, il cammino minimo (per arrivare dal vertice 1 al vertice 3) non è quello più breve cioè quello che percorre meno archi, ma, come detto nella definizione, è quello la cui somma dei pesi degli archi è minima. Tale problema non è banale in quanto vi è un importante osservazione da fare: Come si può notare in entrambe le figure (fig.4, fig5) il cammino minimo non inizia affatto con l arco di peso minore, anzi, in questo caso il cammino minimo è quello che ha come arco di partenza, quello con il peso maggiore (gli altri sono E 1 = {v 1, v 6 } il quale ha peso 2, e E 2 = {v 1, v 4 } il quale ha peso 1). Ciò ci da la dimostrazione che il cammino minimo è dato da una somma, e in quanto somma si deve tener conto degli addendi che la compongono (in questo caso i pesi). Inoltre, dalla definizione 1.4 si evince che i pesi possono anche essere negativi, dunque per quanto possa essere grande il peso del primo arco di un percorso, il peso di un cammino potrà essere diminuito a causa di un cammino di valore negativo. 3
4 3 Algoritmo di Dijkstra L algoritmo di Dijkstra permette di poter calcolare i cammini minimi all interno di un grafo, la forza di tale algoritmo è la semplicità del codice e soprattutto la sua efficienza, infatti la complessità nel caso peggiore di tale algoritmo è : O( E + V log V ). Esso possiede inoltre delle proprietà particolari : Proprietà 3 L algoritmo di Dijkstra risolve i problemi di cammino minimo,da un vertice di partenza ad un vertice di arrivo, nei grafi che non hanno pesi negativi. Proprietà 3.1 Con L algoritmo di Dijkstra possiano trovare ogni SPT in una grafo denso in un tempo lineare. La proprietà 3.1 viene data solo a scopo informativo, non è interesse di tale articolo trattare argomenti non inerenti con l analisi di tale algoritmo, mentre la proprietà 3 può essere dimostrata, tale dimostrazione verrà trattata in seguito. Il funzionamento è molto semplice, dato un grafo e un vertice di partenza, l algoritmo mostra tutti i cammini minimi per raggiungere gli altri nodi, per poter meglio comprendere tale algoritmo viene mostrato inizialmente il suo pseudocodice completo. function Dijkstra(Graph, source): for each vertex v in Graph: dist[v] := infinity previous[v] := undefined dist[source] := 0 Q := the set of all nodes in Graph while Q is not empty: u := vertex in Q with smallest dist[] 8 if dist[u] = infinity:9 break 10 remove u from Q 11 for each neighbor v of u: 12 alt := dist[u] + dist between(u, v) 13 if alt < dist[v]: 14 dist[v] := alt 15 previous[v] := u 16 return previous La I riga non è altro che il prototipo della funzione, la quale (come già detto) accetta in input un grafo e un vertice sorgente. Possiamo dividere tale algoritmo in due parti, l inizializzazione del grafo dato in input, e l algoritmo vero e proprio. 4
5 Per quanto riguarda l inizializzazione, essa è effettuata dalle righe 2,3,4,5,6 nelle quali vengono effettuate le inizializzazioni per tutti i nodi, più nello specifico, le righe 3,4 settano le distanze dal vertice sorgente agli altri nodi a, la riga 5 setta la distanza del vertice sorgente a 0, e infine la riga 6 crea l insieme Q il quale contiene tutti i nodi del grafo dato in input. Per chiarire meglio quanto mostriamo un esempio. fig. 6 Grafo dato in input fig. 7 Grafo inzializzato L esempio mostrato accetta in input il grafo di fig. 6 e si prende come vertice sorgente v1. Le righe 3,4, come già detto, settano le distanze di tutti i vertici al vertice sorgente ad, tale distanza viene indicata ponendo vicino al vertice interessato il suo valore, mentre la riga 5 setta la distanza del vertice sorgente a 0. Infine vi è la riga 6, la quale crea l insieme di tutti i vertici del grafo Q, nel caso dai noi analizzato, al momento dell inizializzazione, l insieme Q = {v 1, v 2, v 3, v 4, v 5, v 6 }. La seconda parte dell algoritmo analizza il grafo per estrarne i cammini minimi, essa va dalla riga 7 alla riga 16. Possiamo subito notare che essa è composta da un ciclo principale (while Q is not empty:) dal quale poi si diramano gli altri cicli, tale ciclo termina ovviamente quanto l insieme Q è vuoto. La riga 8 prende dall insieme Q il vertice che ha distanza minore, poiche tutti i vertici eccetto v 1 hanno distanza infinita, verrà selezionato v 1 dall insieme Q. La riga 9 consiste in un if, il quale in tal caso non verrà preso in considerazione in quanto dist[v 1 ] = 0. La riga 11 eliminerà in vertice v 1 dall insieme Q il quale ora diventerà Q = {v 2, v 3, v 4, v 5, v 6 }. La riga 12 da origine ad un altro ciclo, il quale analizza i pesi degli archi che connettono i vertici, tale ciclo prende in analisi tutti i vertici che sono collegati direttamente a v 1 e ne analizza il peso degli archi che li uniscono, viene quindi preso in considerazione v 2 il quale ha una distanza (peso dell arco) 3 con v 1, a tal proposito nella riga 13 viene creata una variabile temporale alt la quale sommerà il peso dell arco che unisce i vertici con la distanza del vertice preso in considerazione poichè la distanza {v 1 v, 2 } = 3, e poichè v 1 ha in origine distanza = 0, alt = = 3. Una volta calcolata tale distanza, se tale distanza è minore di quella presente nel vertice vicino a 5
6 v 1 (riga 14) cioè la distanza di v 2 allora il vertice v 2 assume distanza uguale ad alt (riga 15), dunque poiche alt < v 2 =, allora v 2 = alt = 3, nella riga 16 viene creato un array nel quale viene aggiunto il vertice v 2 e così via per gli altri vertici vicino ad v. Per chiarire le idee viene dato un esempio pratico di quanto detto. fig. 8 v1 viene preso dall insieme Q fig. 9 uno dei vicini di v 1 viene selezionato Viene selezionato v 1 perchè dell insieme Q esso è quello che ha come distanza minore (8) e viene tolto dall insieme Q (11), viene poi selezionato un vicino di v 1 (12), in questo caso v 2, e poichè 0+3 = 3 < (13,14), la sua distanza viene posta uguale a 3 (15), viene aggiunto v 2 all array previous. Poiche v 1 ha ancora altri vicini, vengono selezionati anch essi nel for dunque avremo: fig. 10 Completamente del ciclo for Anche gli altri vertici vicini a v 1 vengono selezionati e viene calcolata la distanza mediante l analisi dei pesi degli archi che li uniscono. Una volta effettuata tale operazione, il processo inizia nuovamente, il ciclo while 6
7 esegue un altra iterazione e si passa alla linea 8, la quale scegliera il vertice con la distanza più piccolo all interno dell insieme Q, è da ricordare che la linea 11 aveva modificato il contenuto di Q, dunque ora verrà selezionato come vertice da analizzare, v 4, poichè esso ha la distanza minore tra tutti i vertici di Q. Le linee 9,10 anche in questo caso non vengono prese in cosiderazione poichè v 4 = 1, dunque la linea 11 eliminera l elemento v 4 dall insieme Q, il quale ora risulta essere composto da Q = {v 2, v 3, v 5, v 6 }. Una volta effettuata tale operazione si entra nel ciclo for, il quale andra ad analizzare (come già visto per v 1 ) tutti i vertici ad esso collegati, nell esempio mostrato l unico ad essere vicino a v 4 è v 6, la riga 13 crea la variabile alt = = 14, la riga 14 indica che se la distanza di v 6 > alt allora tale distanza deve essere sovrascritta con il valore di alt, dunque poichè 30 > 14 ne segue che il valore delle distanza di v 6, viene settato a 14 (riga 15), infine la riga 16 aggiunge all array il vertice v 4, il quale conterà ora previous[] = {v 1, v 4 }, viene mostrato graficamente quanto descritto. fig. 11 v 4 è il vertice con distanza minore fig. 12 viene calcolata la distanza di v 6 Come si può notare dalla fig. 11 tra tutti i vertici, v 4 è quello con distanza minore, e poichè esso ha come unico vicino v 6, verrà calcolata la sua distanza basandosi sul peso dell arco che li unisce, poiche tale distanza è uguale a 14, mentre la distanza precedente è uguale a 30, tale distanza viene aggiornata mettendo il valore minore dei due. Tale processo continua per tutti i vertici rimanenti fino a quando essi non verranno esaminati tutti, cioè quando l insieme Q che contiene tutti i vertici è vuolo Q = {φ}. Alla fine di tale processo il grafo apparirà come in figura. 7
8 fig. 13 fine dell algoritmo con le distanza minime 8
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
DettagliPROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Il costo di cammino minimo da un vertice u ad un vertice v è definito nel seguente modo:
PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Sia G = (V,E) un grafo orientato ai cui archi è associato un costo W(u,v). Il costo di un cammino p = (v 1,v 2,...,v k ) è la somma dei costi degli archi
DettagliCOMPLEMENTI DI SHORTEST-PATH. ASD Fabrizio d'amore
COMPLEMENTI DI SHORTEST-PATH ASD 2016-17 Fabrizio d'amore problemi di shortest-path (SP) grafo di riferimento G=(V,E) semplice/orientato pesato pesi non negativi pesi arbitrari, ma no cicli a peso negativo
DettagliCammini Minimi. Algoritmo di Dijkstra. Cammino in un grafo
Cammini Minimi Algoritmo di Dijkstra Cammino in un grafo Dato un grafo G=(V,E), un Cammino (Percorso) in G è un insieme di vertici v 1, v 2,.., v k tali che (v i, v i+1 ) E v 1 v 2 v 3 v k In un grafo
DettagliCammini Minimi. Algoritmo di Dijkstra
Cammini Minimi Algoritmo di Dijkstra Cammino in un grafo Dato un grafo G=(V,E), un Cammino (Percorso) in G è un insieme di vertici v 1, v 2,.., v k tali che (v i, v i+1 ) E v 1 v 2 v 3 v k In un grafo
DettagliAlgoritmi e strutture dati 16 Dicembre 2004 Canali A L e M Z Cognome Nome Matricola
Algoritmi e strutture dati 16 Dicembre 04 Canali A L e M Z Cognome Nome Matricola Problema 1 (6 punti) Determinare la funzione calcolata dal metodo mistero e la sua complessità computazionale in funzione
DettagliGrafi (non orientati e connessi): minimo albero ricoprente
.. Grafi (non orientati e connessi): minimo albero ricoprente Una presentazione alternativa (con ulteriori dettagli) Problema: calcolo del minimo albero di copertura (M.S.T.) Dato un grafo pesato non orientato
Dettagli12.1 IL PROBLEMA DEL CAMMINO MINIMO: L ALGORITMO DI DIJKSTRA
Problemi strutturati. IL PROBLEMA DEL CAMMINO MINIMO: L ALGORITMO DI DIJKSTRA Esercizio.. Dato il grafo di Figura.., trovare il peso dei cammini minimi dal nodo a tutti gli altri nodi del grafo (il peso
DettagliLABORATORIO DI ALGORITMI E STRUTTURE DATI A-L. Ingegneria e scienze informatiche Cesena A.A: 2016/2017 Docente: Greta Sasso
LABORATORIO DI ALGORITMI E STRUTTURE DATI A-L Ingegneria e scienze informatiche Cesena A.A: 2016/2017 Docente: Greta Sasso Minimum Spanning Tree Albero di copertura (Spanning Tree): un albero di copertura
DettagliEsercitazione 2. Progettare un algoritmo che risolva tale problema in tempo O( E + V log V ).
Esercitazione 2 Problema 4: Dato un grafo G = (V, E) con pesi positivi sugli archi ed un insieme di k centri C = {c 1, c 2, c k } V, si richiede di partizionare l insieme V in k insiemi V 1, V 2, V k in
DettagliMinimo 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.
DettagliAlgoritmi 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
DettagliProblema 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
DettagliEsercizi Union-Find e su Grafi. Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 0 07 Esercizi Union-Find e su Grafi. Ugo Vaccaro. Esercizio: Scrivere pseudocodice per Make-Set, Union, e Find-Set usando la rappresentazione attraverso liste
DettagliAlgoritmi 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
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Minimo albero ricoprente Domenico Fabio Savo 1 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
DettagliGrafi (orientati): cammini minimi
.. Grafi (orientati): cammini minimi Una presentazione alternativa (con ulteriori dettagli) Un algoritmo greedy per calcolare i cammini minimi da un vertice sorgente in un grafo orientato e pesato, senza
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Minimo albero ricoprente Fabio Patrizi 1 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;
DettagliAlgoritmi 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)
DettagliCammini 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
DettagliBioinformatica. Grafi. a.a Francesca Cordero. Grafi Bioinformatica
fcordero@di.unito.it Introduzione cknowledgement Lucidi da. Horváth,. emetrescu et al, lgoritmi e strutture dati, McGraw-Hill 3 efinizione: che cosa sono i grafi? definizione astratta: un grafo G = (V,)
DettagliInformatica 3. LEZIONE 25: Algoritmi sui grafi. Modulo 1: Problema del percorso più breve Modulo 2: Spanning tree a costo minimo
Informatica LEZIONE 2: Algoritmi sui grafi Modulo 1: Problema del percorso più breve Modulo 2: Spanning tree a costo minimo Informatica Lezione 2 - Modulo 1 Problema del percorso più breve Problema Problema:
DettagliGrafi (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
DettagliCammini minimi con sorgente singola
Cammini minimi con sorgente singola Vittorio Maniezzo - Università di Bologna Cammini minimi con sorgente singola Dato: un grafo(orientatoo non orientato) G= (V,E,W) con funzionedi peso w:e R un particolarevertices
Dettagli1 TEORIA DELLE RETI 1. 1 Teoria delle reti. 1.1 Grafi
1 TEORIA DELLE RETI 1 1 Teoria delle reti 1.1 Grafi Intuitivamente un grafo è un insieme finito di punti (nodi o vertici) ed un insieme di frecce (archi) che uniscono coppie di punti Il verso della freccia
Dettagli11.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)
DettagliCammini 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)
DettagliEsercizi svolti a lezione
Esercizi svolti a lezione Problema 1 In un corso di laurea sono previsti un certo numero di esami obbligatori. Esistono inoltre dei vincoli di propedeuticità: se un esame A è propedeutico ad un esame B
DettagliAppunti lezione Capitolo 13 Programmazione dinamica
Appunti lezione Capitolo 13 Programmazione dinamica Alberto Montresor 12 Novembre, 2015 1 Domanda: Fattore di crescita dei numeri catalani Vogliamo dimostrare che cresce almeno come 2 n. La nostra ipotesi
DettagliG è 2-colorabile se ogni nodo può essere colorato di bianco o di nero in modo che nodi connessi da archi siano colorati con colori distinti.
Grafi Grafi bipartiti Un grafo non orientato G è bipartito se l insieme dei nodi può essere partizionato in due sottoinsiemi disgiunti tali che nessun arco del grafo connette due nodi appartenenti allo
DettagliProgettazione di algoritmi
Progettazione di algoritmi Discussione dell'esercizio [acqua 2] Vogliamo trovare una sequenza di versamenti che sia buona e parsimoniosa. Consideriamo quindi il grafo i cui nodi sono le possibili configurazioni
DettagliIntroduzione 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
DettagliSoluzione Progetto 1 ASD a.a. 2017/2018. : Pioggia di laser. Alessio Guerrieri e Cristian Consonni 14 dicembre 2017
Soluzione Progetto 1 ASD a.a. 2017/2018 : Pioggia di laser Alessio Guerrieri e Cristian Consonni 14 dicembre 2017 Statistiche Statistiche Numero sottoposizioni: 873 220 90 200 80 Sottomissioni 180 160
DettagliAutomi e Linguaggi Formali
Automi e Linguaggi Formali Problemi intrattabili, classi P e NP A.A. 2014-2015 Alessandro Sperduti sperduti@math.unipd.it Problemi intrattabili Ci occuperemo solo di problemi decidibili, cioè ricorsivi.
Dettagli2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
2 OTTIMIZZAZIONE SU GRAFI E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Molti problemi decisionali possono essere formulati utilizzando il linguaggio della teoria dei grafi. Esempi: - problemi di
DettagliAlgoritmi 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
DettagliAlgoritmi & Laboratorio
Acknowledgement Lucidi da F. Damiani, a.a. 2004-2005 C. Demetrescu et al, Algoritmi e strutture dati, McGraw-Hill M. Zacchi, a.a. 2003-2004 I lucidi non sono un sostituto per il libro di testo non contengono
DettagliGrafi 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
DettagliCammini minimi. Damiano Macedonio
Cammini minimi Damiano Macedonio mace@unive.it Copyright 2010 2012, Moreno Marzolla, Università di Bologna, Italy (http://www.moreno.marzolla.name/teaching/asd2011b/) Modifications Copyright c 2015, Damiano
DettagliProblemi intrattabili
Tempo polinomiale ed esponenziale Una Tm M ha complessita in tempo T(n) se, dato un input w di lunghezza n, M si ferma dopo al massimo T (n) passi. Problemi intrattabili Ci occuperemo solo di problemi
DettagliProgrammazione Dinamica (PD)
Programmazione Dinamica (PD) Altra tecnica per risolvere problemi di ottimizzazione, piu generale degli algoritmi greedy La programmazione dinamica risolve un problema di ottimizzazione componendo le soluzioni
DettagliGrafi Stessa distanza
Grafi Stessa distanza In un grafo orientato G, dati due nodi s e v, si dice che: v è raggiungibile da s se esiste un cammino da s a v; la distanza di v da s è la lunghezza del più breve cammino da s a
DettagliCammini minimi con sorgente singola
Capitolo 11 Cammini minimi con sorgente singola efinizione 11.1. Sia G = (V,, w) un grafo orientato e pesato; dato il cammino p = v 0, v 1,..., v k in G, il valore w(p) = k i=1 w(v i 1, v i ) rappresenta
DettagliProgettazione di Algoritmi - lezione 11
Progettazione di Algoritmi - lezione 11 Discussione dell'esercizio [rifornimenti] Un algoritmo greedy per questo problema è quello che si presenta naturalmente: facciamo rifornimento solo quando è necessario,
DettagliGrafi: 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
DettagliEsercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016
Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu April 14, 2016 Elementi Fondamentali Rappresentazione n = V numero di vertici (nodi) m = E numero di archi Matrice di adiacenza:
DettagliCammini 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
DettagliEsercitazione 3. Osserviamo che, dato un grafo con pesi distinti, questo ammette un unico MST.
Esercitazione 3 Problema 6: Sia G = (V, E) un grafo con pesi distinti sugli archi ed e E un arco di G. Progettare un algoritmo lineare in grado di determinare se esiste un MST di G che contiene l arco
DettagliAlgoritmi 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
DettagliGrafi non orientati. Grafi (non orientati) Rappresentazione di Grafi: matrice delle adiacenze. Tipiche applicazioni di modelli basati su grafi
Grafi non orientati Grafi (non orientati) Notazione. G = (V, E) V = nodi (o vertici). E = archi (o lati) tra coppie di nodi. Modella relazioni definite tra coppie di oggetti. aglia di un grafo: numero
Dettagli7.1 Progettare un algoritmo per costruire ciclo euleriano di un grafo non orientato.
Capitolo 7 Grafi 7.1 Progettare un algoritmo per costruire ciclo euleriano di un grafo non orientato. 7.3 Un grafo a torneo è un grafo orientato G in cui per ogni coppia di vertici x e y esiste un solo
DettagliStrutture 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
Dettagli2.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,
Dettaglialgoritmi e strutture di dati
algoritmi e strutture di dati grafi m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente, immagini,
DettagliEsercizio 1. Variabili decisionali:
Esercizio 1 Si noti che i costi sono dati per tonnellata, mentre molti vincoli riguardano il numero di navi. Si introducono pertanto DUE tipi di variabili, uno relativo al numero di tonnellate per tipo
DettagliGestione 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
DettagliSoluzioni della settima esercitazione di Algoritmi 1
Soluzioni della settima esercitazione di Algoritmi 1 Beniamino Accattoli 19 dicembre 2007 1 Grafi Un grafo è non orientato se descrivendo un arco come una coppia di vertici (i,j) l ordine è ininfluente
DettagliProblemi, 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
DettagliIntroduzione. 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
DettagliAlgoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio
Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi
DettagliNell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:
Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi
DettagliUniversità Roma Tre - PAS Classe A048 "Matematica Applicata" - Corso di Informatica a.a. 2013/2014
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A08 Matematica Applicata Corso di Informatica Algoritmi su Grafi Marco Liverani (liverani@mat.uniroma.it) Sommario
DettagliGrafi. Sommario. Definizioni Rappresentazione dei grafi Algoritmi di visita Esempi in C
Grafi Sommario Definizioni Rappresentazione dei grafi Algoritmi di visita Esempi in C 1 Esempi Relazioni di parentela Alberi genealogici Relazioni tra classi nei linguaggi OO Grafo del Web Assetti societari
DettagliGestione della produzione e della supply chain Logistica distributiva. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena
Gestione della produzione e della supply chain Logistica distributiva Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena Un algoritmo per il flusso a costo minimo: il simplesso
DettagliAlgoritmi e Strutture dati Mod B. Grafi: Percorsi Minimi (parte I)
Algoritmi e Strutture dati Mod B Grafi: Percorsi Minimi (parte I) Grafi: Percorsi minimi Un percorso minimo in un grafo G= grafo pesato orientato, con funzione di peso w: E fi che mappa archi in pesi
DettagliIl Problema dell Albero Ricoprente Minimo (Shortest Spanning Tree - SST)
Il Problema dell Albero Ricoprente Minimo (Shortest Spanning Tree - SST) È dato un grafo non orientato G=(V,E). Ad ogni arco e i E, i=1,,m, è associato un costo c i 0 7 14 4 10 9 11 8 12 6 13 5 17 3 2
DettagliGrafi (non orientati e connessi): minimo albero ricoprente
Grafi (non orientati e connessi): minimo albero ricoprente Una breve presentazione Definizioni Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è
DettagliProblemi intrattabili, classi P e NP. Problemi intrattabili, classi P e NP
roblemi intrattabili Ci occuperemo solo di problemi decidibili, cioe ricorsivi. Tra loro, alcuni sono detti trattabili, se si puo provare che sono risolvibili in tempo polinomiale in modo deterministico.
DettagliNote per la Lezione 21 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 20 20 Note per la Lezione 2 Ugo Vaccaro In questa lezione introdurremo il concetto di grafo, esamineremo le loro più comuni rappresentazioni ed introdurremo i
Dettagli2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
2 OTTIMIZZAZIONE SU GRAFI E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Molti problemi decisionali possono essere formulati utilizzando il linguaggio della teoria dei grafi. Esempi: - problemi di
DettagliIntroduzione 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
DettagliEsercizi per il corso di Algoritmi, anno accademico 2011/12
Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli
DettagliAlgoritmi 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
DettagliProgettazione di Algoritmi - lezione 8
Progettazione di Algoritmi - lezione 8 Discussione dell'esercizio [labirinto] Nel testo dell'esercizio abbiamo considerato come lunghezza del percorso il numero di bivi ma possiamo stimare meglio la lunghezza
DettagliAlgoritmi e Strutture dati Mod B. Grafi Percorsi Minimi: algoritmi esatti e algoritmi euristici (A*)
Algoritmi e Strutture dati Mod B Grafi Percorsi Minimi: algoritmi esatti e algoritmi euristici (A*) Grafi: Percorsi minimi Un percorso minimo in un grafo G= grafo pesato orientato, con funzione di
DettagliPossibile applicazione
p. 1/4 Assegnamento Siano dati due insiemi A e B entrambi di cardinalità n. Ad ogni coppia (a i,b j ) A B è associato un valore d ij 0 che misura la "incompatibilità" tra a i e b j, anche interpretabile
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Prof. Aniello Murano Grafi: Implementazione ed operazioni di base Corso di Laurea Codice insegnamento Email docente Anno accademico Laboratorio di Algoritmi e
DettagliEsercitazione 5 Network Flow
Esercitazione 5 Network Flow Diamo innanzitutto una definizione informale del concetto di riduzione polinomiale tra problemi: Si dice che un problema A è riducibile polinomialmente ad un problema B, se
DettagliEsercitazione 7. Grafi. Rappresentazione e algoritmi di visita
Esercitazione 7 Grafi Rappresentazione e algoritmi di visita Grafo G = (V,E) non orientato 1 1 G = (V,E) orientato 6 Rappresentazione Grafo G = (V,E) metodi standard per la rappresentazione Liste di adiacenza
Dettagli2.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
DettagliAlgoritmi & Laboratorio
lbero ricoprente sia dato un grafo connesso e non orientato un albero ricoprente è un sottografo che contiene tutti nodi è aciclico è connesso cknowledgement Lucidi da. Damiani, a.a. 00-00. Demetrescu
DettagliUNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014
A Ricerca Operativa 1 Seconda prova intermedia Un tifoso di calcio in partenza da Roma vuole raggiungere Rio De Janeiro per la finale del mondiale spendendo il meno possibile. Sono date le seguenti disponibilità
DettagliIntroduzione 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
DettagliOrdinamenti. Grafo : definizione. Un grafo G = (V,E)è composto da: V: insieme di vertici E V V: insieme di archi (edge) che connettono i vertici
Ordinamenti 1 Vittorio Maniezzo Università di Bologna Grafo : definizione Un grafo G = (V,E)è composto da: V: insieme di vertici E V V: insieme di archi (edge) che connettono i vertici Un arco a= {u,v}
Dettagli2.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
DettagliTeoria dei Grafi Parte I. Alberto Caprara DEIS - Università di Bologna
Teoria dei Grafi Parte I Alberto Caprara DEIS - Università di Bologna acaprara@deis.unibo.it Teoria dei Grafi Paradigma di rappresentazione di problemi Grafo G : coppia (V,E) V = insieme di vertici E =
DettagliProgettazione 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
DettagliProgettazione 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
DettagliALFABETIZZAZIONE INFORMATICA
Laurea in ilosofia a.a. 2008-2009 LTIZZZION INORMTI Ogni problema che ho risolto è diventato una regola che in seguito è servita a risolvere altri problemi. (René escartes, artesio iscorso sul metodo )
Dettagli3 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
DettagliL algoritmo di Dijkstra
L algoritmo di Dijkstra Sebastiano Vigna March 2, 200 Introduzione Supponiamo di assegnare a ciascuno degli archi a di un grafo orientato G un certo peso intero e positivo p a. Ai cammini (orientati) nel
DettagliDati 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 =
DettagliGrafi 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
DettagliEsercizio 1. Esercizio 2
A-2 a PI Ricerca Operativa 1 Seconda prova intermedia La Pharmatix è un azienda di Anagni che produce due principi attivi, A e B, che consentono un profitto per grammo venduto di 20 e 30 euro rispettivamente.
DettagliTeoria dei Grafi Parte I
Teoria dei Grafi Parte I Daniele Vigo D.E.I.S. - Università di Bologna dvigo@deis.unibo.it Teoria dei Grafi Paradigma di rappresentazione di problemi Grafo G : coppia (V,E) V = insieme di vertici E = insieme
Dettagli