图论中求解最短路的dijkstra法的MATLAB程序中最后的矩阵DD是什么意思?
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:数学作业 时间:2024/07/14 22:40:34
图论中求解最短路的dijkstra法的MATLAB程序中最后的矩阵DD是什么意思?
MATLAB程序:
function [d,DD]=dijkstra(D,s)
%Dijkstra最短路算法Matlab程序用于求从起始点s到其它各点的最短路
%D为赋权邻接矩阵
%d为s(图中顶点)到其它各点最短路径的长度
%DD记载了最短路径生成树
[m,n]=size(D);
d=inf.*ones(1,m);
d(1,s)=0;
dd=zeros(1,m);
dd(1,s)=1;
y=s;
DD=zeros(m,m);
DD(y,y)=1;
counter=1;
while length(find(dd==1)) [d,DD]=dijkstra(W,1)
d =
0 5 3 1 6 10 9 11 8
DD =
1 0 0 2 0 0 0 0 0
0 0 4 0 5 0 0 0 0
0 4 0 3 0 0 0 0 0
2 0 3 0 0 0 0 0 0
0 5 0 0 0 0 0 0 6
0 0 0 0 0 0 8 9 0
0 0 0 0 0 8 0 0 7
0 0 0 0 0 9 0 0 0
0 0 0 0 6 0 7 0 0
DD中的数字表达什么意思,或者DD表达什么意思,我不懂.
MATLAB程序:
function [d,DD]=dijkstra(D,s)
%Dijkstra最短路算法Matlab程序用于求从起始点s到其它各点的最短路
%D为赋权邻接矩阵
%d为s(图中顶点)到其它各点最短路径的长度
%DD记载了最短路径生成树
[m,n]=size(D);
d=inf.*ones(1,m);
d(1,s)=0;
dd=zeros(1,m);
dd(1,s)=1;
y=s;
DD=zeros(m,m);
DD(y,y)=1;
counter=1;
while length(find(dd==1)) [d,DD]=dijkstra(W,1)
d =
0 5 3 1 6 10 9 11 8
DD =
1 0 0 2 0 0 0 0 0
0 0 4 0 5 0 0 0 0
0 4 0 3 0 0 0 0 0
2 0 3 0 0 0 0 0 0
0 5 0 0 0 0 0 0 6
0 0 0 0 0 0 8 9 0
0 0 0 0 0 8 0 0 7
0 0 0 0 0 9 0 0 0
0 0 0 0 6 0 7 0 0
DD中的数字表达什么意思,或者DD表达什么意思,我不懂.
![图论中求解最短路的dijkstra法的MATLAB程序中最后的矩阵DD是什么意思?](/uploads/image/z/15322742-62-2.jpg?t=%E5%9B%BE%E8%AE%BA%E4%B8%AD%E6%B1%82%E8%A7%A3%E6%9C%80%E7%9F%AD%E8%B7%AF%E7%9A%84dijkstra%E6%B3%95%E7%9A%84MATLAB%E7%A8%8B%E5%BA%8F%E4%B8%AD%E6%9C%80%E5%90%8E%E7%9A%84%E7%9F%A9%E9%98%B5DD%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%3F)
你的源代码中不说明了,DD表示最短路径的生成树嘛!
你看DD矩阵中的数字,是一个对称矩阵,根据该矩阵就可以知道,最短路径的通路是:
1->4->3->2->5->9->7->6->8(数字表示结点的号码),这条路径的权重(你可以理解为距离)就是11,由D给出.
实际上由D你也可以推出这条路径,只不过,D是用一维表示方法(根据权重),而DD是二维表示方法(根据下一个结点,所以就是1、2、3.).
--------------------------------
你对照DD画出一张图,你就明白了.
有数字的就画线,并标明权重,是0就不画线.
你看DD矩阵中的数字,是一个对称矩阵,根据该矩阵就可以知道,最短路径的通路是:
1->4->3->2->5->9->7->6->8(数字表示结点的号码),这条路径的权重(你可以理解为距离)就是11,由D给出.
实际上由D你也可以推出这条路径,只不过,D是用一维表示方法(根据权重),而DD是二维表示方法(根据下一个结点,所以就是1、2、3.).
--------------------------------
你对照DD画出一张图,你就明白了.
有数字的就画线,并标明权重,是0就不画线.