在MATLAB里面,我们用邻接矩阵来表示一个有向图之间的节点与节点之间的距离。
假如我们现在有六个节点,他们之间的距离如下表所示:
0 | 50 | ∞ | 40 | 25 | 10 |
---|---|---|---|---|---|
50 | 0 | 15 | 20 | ∞ | 25 |
∞ | 15 | 0 | 10 | 20 | ∞ |
40 | 20 | 10 | 0 | 10 | 25 |
25 | ∞ | 20 | 10 | 0 | 55 |
10 | 25 | ∞ | 25 | 55 | 0 |
下面先写个Dijkstra算法的文件,方便之后直接调用:
function[mydijkstra,mypath] = mydijkstra(a,sb,db);
%a是表示图的邻接矩阵,sb是起点,db是终点
n = size(a,1); %n是整个图的大小
visited(1:n) = 0;
distance(1:n) = inf;
distance(sb) = 0;%distance是表示起点到当前角标点的最小距离,所以起点到起点为0
visited(sb) = 1; %将起点标记为1
u = sb; %u为最新的标号顶点
parent(1:n) =