-
Notifications
You must be signed in to change notification settings - Fork 70
/
Copy pathdijkstra_sp.m
57 lines (49 loc) · 1.61 KB
/
dijkstra_sp.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
function [d pred] = dijkstra_sp(A,u,varargin)
% DIJKSTRA_SP Compute the weighted single source shortest path problem.
%
% Dijkstra's algorithm for the single source shortest path problem only
% works on graphs without negative edge weights.
%
% This method works on weighted directed graphs without negative edge
% weights.
% The runtime is O(V log (V)).
%
% See the shortest_paths function for calling information. This function
% just calls shortest_paths(...,struct('algname','dijkstra'));
%
% The options structure can contain a visitor for the Dijkstra algorithm.
%
% See http://www.boost.org/libs/graph/doc/DijkstraVisitor.html for a
% description of the events.
%
% visitor is a struct with the following optional fields
% vis.initialize_vertex(u)
% vis.discover_vertex(u)
% vis.examine_vertex(u)
% vis.examine_edge(ei,u,v)
% vis.edge_relaxed(ei,u,v)
% vis.edge_not_relaxed(ei,u,v)
% vis.finish_vertex(u)
% Each visitor parameter should be a function pointer, which returns 0
% if the shortest path search should stop. (If the function does not
% return anything, the algorithm continues.)
%
% Example:
% load_mbgl_graph('clr-25-2');
% dijkstra_sp(A,1)
%
% See also SHORTEST_PATHS, BELLMAN_FORD_SP.
% David Gleich
% Copyright, Stanford University, 2006-2008
%% History
% 2006-04-23: Initial version
% 2008-10-07: Changed options parsing
% 2011-09-08: Changed doc to load_mbgl_graph
%%
algname = 'dijkstra';
if ~isempty(varargin),
options = merge_options(struct(),varargin{:});
options.algname= algname;
else options = struct('algname',algname);
end
[d pred] = shortest_paths(A,u,options);