La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Ausilio didattico in Excel-Visual Basic per il ricavo dei cammini di costo minimo con l'algoritmo di Ford-Moore-Bellman Laureando: Enrico Sperindio Relatore:

Presentazioni simili


Presentazione sul tema: "Ausilio didattico in Excel-Visual Basic per il ricavo dei cammini di costo minimo con l'algoritmo di Ford-Moore-Bellman Laureando: Enrico Sperindio Relatore:"— Transcript della presentazione:

1 Ausilio didattico in Excel-Visual Basic per il ricavo dei cammini di costo minimo con l'algoritmo di Ford-Moore-Bellman Laureando: Enrico Sperindio Relatore: Prof. GIORGIO ROMANIN JACUR Università degli studi di Padova Tesi di laurea di primo livello

2 Grafi Rappresentazione semplice e astratta della realtà in molti contesti applicativi Coppia di insiemi (N,A) dove N é detto insieme dei nodi e A é detto insieme degli archi. Se le gli archi sono orientati, il grafo è detto orientato, se non sono ordinate é detto non orientato. Una sequenza di archi (l 0, l 1 ), (l 1, l 2 ), …, (l k-1, l k ) tali che ciascun arco sia adiacente a quello successivo, si definisce cammino che unisce i nodi l 0 ed l k. Se il nodo iniziale della sequenza coincide con l’ultimo nodo della sequenza, il cammino si dice ciclo.

3 Il problema dei cammini minimi su grafi Tipici problemi di interesse 1.Trovare il cammino minimo tra un nodo s detto sorgente ed un nodo t detto destinazione 2.Per un assegnato nodo s, trovare il percorso più breve da s a tutti gli altri nodi 3.Trovare il cammino più breve tra tutte le coppie di nodi Applicazioni Pianificazione urbana del traffico Rotta ottima per i trasporti su strada in presenza anche di congestioni Protocolli di routing (OSPF, BGP, RIP) Pipelining nei circuiti elettronici a larga scala di integrazione Navigazione dei robot Schedulazione degli operatori per il telemarketing Gestione delle subroutine negli algoritmi di alto livello Smistamento messaggi nelle telecomunicazioni

4 Una possibile soluzione Una soluzione ammissibile al problema dei cammini minimi consiste nel determinare n-1 cammini, uno per ogni coppia di nodi, ognuno dei quali ha origine nel nodo r e giunge ad uno dei rimanenti nodi del grafo. Sotto opportune ipotesi una soluzione ammissibile è una arborescenza di radice r, e la soluzione cercata è una arborescenza di radice r di costo minimo.

5 Teorema di Bellman Una soluzione ammissibile T è ottima se e solo se valgono le seguenti condizioni per ogni arco (u,v): s u v l(v) = l(u) + c(u,v)se (u,v) appartiene a T l(v) ≤ l(u) + c(u,v)se (u,v) non appartiene a T l(v) = l(u) + c(u,v)se (u,v) appartiene a T l(v) ≤ l(u) + c(u,v)se (u,v) non appartiene a T Ciò permette di definire algoritmi basati sulla sostituzione degli archi che violano tale principio Principio di ottimalità: l*(v) = MIN { l*(u) + c(u,v) }

6 L’algoritmo di Ford-Bellman-Moore R. Bellman, On a routing problem, L. R. Ford, Jr. Network flow theory, E. F. Moore, The shortest path through a maze, Q := {0} l[v] := ∞ p[v] := 0 l[s] := 0p[s] := s EnQueue (s,Q) while do u := DeQueue (Q) for each edge (u,v) do if l[v] > l[u] + c(u,v) then l[v] := l[u] + c(u,v) l[v] := u if v not in Q then EnQueue (v,Q) endif endfor endwhile Q := {0} l[v] := ∞ p[v] := 0 l[s] := 0p[s] := s EnQueue (s,Q) while do u := DeQueue (Q) for each edge (u,v) do if l[v] > l[u] + c(u,v) then l[v] := l[u] + c(u,v) l[v] := u if v not in Q then EnQueue (v,Q) endif endfor endwhile 1) Si estrae un nodo u da Q e si controlla se le condizioni di ottimalità valgono per ciascun arco della sua stella uscente. 2) Per ogni arco (u,v) che non soddisfa le condizioni, si pone p[v]=u e l’etichetta di v viene aggiornata. 3) Non si effettua però l’aggiornamento delle etichette in tutti i nodi del sottoalbero di radice v, ma si inserisce v in Q Si appoggia ad una struttura Q che contiene tutti i nodi i cui archi uscenti potrebbero violare le condizioni di Bellman Per ogni nodo si ha un predecessore p(u) e la miglior distanza attualmente trovata l(u)

7 La versione di Pape Insieme Q implementato come deque L’inserimento di in avviene secondo questa regola di natura euristica:  se è la prima volta che viene inserito, esso deve essere posto in coda alla lista;  se invece era già stato inserito in precedenza, allora si pone all’inizio della lista stessa. Idea di sfruttare subito il miglioramento dell’etichetta Prestazioni migliori solo su grafi sparsi [inizializzazione] EnQueue (s,Q) while do u := DeQueue(Q) for each edge (u,v) do if l[v] > l[u] + c(u,v) then if v not in Q then if D[v] = ∞ then EnQueueB(v; Q) else EnQueueF(v; Q) endif l[v] := l[u] + c(u,v) p[v] := u endif endfor endwhile [inizializzazione] EnQueue (s,Q) while do u := DeQueue(Q) for each edge (u,v) do if l[v] > l[u] + c(u,v) then if v not in Q then if D[v] = ∞ then EnQueueB(v; Q) else EnQueueF(v; Q) endif l[v] := l[u] + c(u,v) p[v] := u endif endfor endwhile

8 L’implementazione in Excel

9 n  numero nodi e  numero archi s  nodo sorgente Edges  vettore archi dist  lista delle lunghezze del miglior cammino da s a v correntemente trovato pred  lista dei predecessori inList  flag che indica se un nodo è attualmente nella lista nEstr  vettore che indica per ogni nodo quante volte è stato estratto Q  lista dei nodi da esaminare n  numero nodi e  numero archi s  nodo sorgente Edges  vettore archi dist  lista delle lunghezze del miglior cammino da s a v correntemente trovato pred  lista dei predecessori inList  flag che indica se un nodo è attualmente nella lista nEstr  vettore che indica per ogni nodo quante volte è stato estratto Q  lista dei nodi da esaminare L’implementazione in Excel Algoritmo Strutture dati

10 Esempio

11 Esempio Q = {s} Si esaminano gli archi uscenti da s Si aggiornano le etichette di a e c Q = {a,c}

12 Esempio Si esaminano gli archi uscenti da a Si aggiornano le etichette di b e d Q = {c,b,d}

13 Esempio Si esaminano gli archi uscenti da c Non si aggiornano etichette Q = {b,d}

14 Esempio Si esaminano gli archi uscenti da b Si aggiorna l’etichetta di c Inserisco c in testa in quanto già inserito in precedenza Q = {c,d}

15 Esempio Si esaminano gli archi uscenti da c Non si aggiornano etichette Q = {d}

16 Esempio Si esaminano gli archi uscenti da d Non si aggiornano etichette Q = { }  Termine algoritmo

17 Esempio Arborescenza di radice s dei cammini minimi

18 Esempio In caso di ciclo negativo Soluzione infinitamente migliorabile Algoritmo deve terminare Presenza di tale ciclo indicata con un messaggio di errore


Scaricare ppt "Ausilio didattico in Excel-Visual Basic per il ricavo dei cammini di costo minimo con l'algoritmo di Ford-Moore-Bellman Laureando: Enrico Sperindio Relatore:"

Presentazioni simili


Annunci Google