Perform the Dijkstra's algorithm on a network topology from a source node (shortest path to all remaining nodes).
[D,P] = NL_R_DijkstraHT(X,Y,H,T,I)
Nodes x-coordinates.
Nodes y-coordinates.
Links head vector.
Links tail vector.
Source node.
Distance vector from the source node towards remaining network nodes.
Predecessor vector to reach the source node from remaining network nodes.
NL_R_DijkstraHT performs the Dijkstra's Algorithm from the source node I on the network topology represented by the 4 following vectors: X, Y, H and T. D and P enable to reconstruct the shortest path between any network node towards the source node N (WIKIPEDIA).
1 function Dijkstra(Graph, source): 2 for each vertex v in Graph: // Initializations 3 dist[v] := infinity // Unknown distance function from source to v 4 previous[v] := undefined // Previous node in optimal path from source 5 dist[source] := 0 // Distance from source to source 6 Q := the set of all nodes in Graph // All nodes in the graph are unoptimized - thus are in Q 7 while Q is not empty: // The main loop 8 u := vertex in Q with smallest dist[] 9 if dist[u] = infinity: 10 break // all remaining vertices are inaccessible from source 11 remove u from Q 12 for each neighbor v of u: // where v has not yet been removed from Q. 13 alt := dist[u] + dist_between(u, v) 14 if alt is inferior to dist[v]: // Relax (u,v,a) 15 dist[v] := alt 16 previous[v] := u 17 return dist[] | ![]() | ![]() |
n=80;//network size L=1000;//network square area side dmax=100;//locality radius [g]=NL_T_LocalityConnex(n,L,dmax);//generation of a random topology in respect with the Locality method. i=NL_F_RandInt1n(length(g.node_x))//selection of the source node ind=1;//window index [f]=NL_G_ShowGraphN(g,ind); [dist,pred]=NL_R_DijkstraHT(g.node_x,g.node_y,g.head,g.tail,i)//application of NL_R_DijkstraNxNyHT | ![]() | ![]() |