% Implementation of a simple version of the Dijkstra shortest path algorithm % Returns the distances from a single vertex to all others, doesn't save the path % % INPUTS: adjacency matrix, adj (nxn), start node s (index between 1 and n) % OUTPUTS: shortest path length from the start node to all other nodes, 1xn % % Note: Works for a weighted/directed graph. % GB: last updated, September 28, 2012 function d = simpleDijkstra(adj,s) n=length(adj); d = inf*ones(1,n); % distance s-all nodes d(s) = 0; % s-s distance T = 1:n; % node set with shortest paths not found yet while not(isempty(T)) [dmin,ind] = min(d(T)); for j=1:length(T) if adj(T(ind),T(j))>0 && d(T(j))>d(T(ind))+adj(T(ind),T(j)) d(T(j))=d(T(ind))+adj(T(ind),T(j)); end end T = setdiff(T,T(ind)); end