Suntem la final! Acum avem de a identifica ruta. Nodul anterioară a E este D, iar nodul anterior de D este B, iar nodul anterior lui B este A. Deci, cel mai bun traseu este ABDE. În acest caz, totalul cântărește este de 4 (1 + 2 + 1).
Deși acest algoritm functioneaza bine, este atât de complicat încât să poată lua o lungă perioadă de timp pentru routere pentru a procesa, și eficiența rețea eșuează. De asemenea, în cazul în care un router oferă informații greșite la alte routere, toate deciziile de rutare va fi ineficient. Pentru a înțelege mai bine acest algoritm, aici este sursa de program scris de C:
#define MAX_NODES 1024 /* numărul maxim de noduri * /# defini INFINITY 1000000000 /* un număr mai mare decât fiecare maxim cale * /int n, dist [MAX_NODES] [MAX_NODES]; /* dist [I] [j] este distanța de la i la j * /void shortest_path (int s, Int T, calea Int []) {struct stat {/* calea fiind lucrat la predecesorul * /int; /* precedent lungime nod * /int /* lungime de la sursă la acest nod * /enum {tentativă permanent,} etichetă /* stare eticheta * /} de stat [MAX_NODES], int i, k, min; stare struct * p; pentru (p = & stat [0]; p < & stat [n]; p ++) {/* initializeaza stat * /p > predecesorul = -1p- > lungime = INFINITYp- > label = tentativă; } stat [t] .length = 0; de stat [t] = .label permanent; k = t; /* K este nodul inițial de lucru * /do {/* este mai bine calea de la K? * /pentru I = 0; Am < n; I ++) /* acest grafic are n noduri * /if (dist [k] [I] = 0 &! &Amp; stat [I] .label == tentativa) {if (de stat [k] .length + dist [K ] [I] < stat [I] .length) {de stat [I] .predecessor = k; de stat [I] .length = de stat [k] .length + dist [k] [I]}} /* Gaseste nodul tentativ etichetate cu cea mai mică etichetă. * /k = 0; min = INFINITY, pentru (i = 0; i < n; i ++) în cazul în care (de stat [I] .label == tentativă & & stat [I] .length < min) = de stat [I] .length; k = I; } stat [k] .label = permanent} în timp ce (k = s!); /* Copiați calea în ieșire matrice * /i = 0; k = 0Do {cale [I ++] = k; k = de stat [k]. predecesorul, în timp ce} (k > = 0);} DV Algoritmi
algoritmi DV sunt cunoscute ca Bellman-Ford algoritmi de rutare și Ford-Fulkerson algoritmi de rutare. În aceste algoritmi, fiecare router are o tabelă de rutare că cea mai bună rută pentru orice destinatie prezinta. Un grafic tipic și masă de rutare pentru router J este afișat în partea de sus a paginii.