<< NL_R_DijkstraMultiPath NL_R: Routing NL_R_DijkstraRT >>

NARVAL >> NL_R: Routing > NL_R_DijkstraNiNj

NL_R_DijkstraNiNj

Perform the shortest path between two network nodes on a topology in respect with the Dijkstra's algorithm.

Calling Sequence

[P] = NL_R_DijkstraNiNj(G,I,J)

Arguments

G :

Graph.

I :

Emission node.

J :

Destination node.

P :

Route.

Description

NL_R_DijkstraNiNj performs the shortest path between the two nodes I and J of the graph G (WIKIPEDIA). P corresponds to the shortest path composed by a succession of nodes between I and J.

Pseudo-Code (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[]

Examples

n=150;//network size
L=1000;//network square area side
dmax=100;//Locality radius
[g]=NL_T_LocalityConnex(n,L,dmax);//generation of a topology in respect with the Locality method
nf=length(g.node_x);//real network size
nl=length(g.head);//quantity of network links
[i,j]=NL_F_RandIntNiNj(nf);//selection of the extremal nodes
[path]=NL_R_DijkstraNiNj(g,i,j)//application of NL_R_DijkstraNiNj
[p]=NL_G_Nodes2Path(path,g);//set of links belonging to the shortest path
Ebi=2;//width
EC=ones(1,nl);//display the path between i and j
EB=Ebi*ones(1,nl);//edge width
EC(p)=5;//color
EB(p)=2*Ebi;
Bdi=5;//border
D=Bdi*ones(1,nf);//node border
D(path)=3*Bdi;
g.node_border=D;
g.edge_color=EC;
g.edge_width=EB;
ind=1;//window index
[f]=NL_G_ShowGraphN(g,ind);//graph visualization

Dependency

NL_R_Dijkstra, NL_R_PredecessorRoute

Report an issue
<< NL_R_DijkstraMultiPath NL_R: Routing NL_R_DijkstraRT >>