文章目录
1.无向图最短路引例
2.有向图最短路引例
3.单源最短路函数graphshortestpath
1)对函数graphshortestpath进行解释
2)对于find函数解释
3)对于sparse函数解释
4.绘制最短路图形
5.matlab图论工具箱
1.无向图最短路引例
求无向图的最短路径:从v1到v11(最左边到最右边)
matlab代码
clc ,clear;
a(1,2)=2;a(1,3)=8;a(1,4)=1;
a(2,3)=6;a(2,5)=1;
a(3,4)=7;a(3,5)=5;a(3,6)=1;a(3,7)=2;
a(4,7)=9;
a(5,6)=3;a(5,8)=2;a(5,9)=9;
a(6,7)=4;a(6,9)=6;
a(7,9)=3;a(7,10)=1;
a(8,9)=7;a(8,11)=9;
a(9,10)=1;a(9,11)=2;
a(10,11)=4;
a=a';%matlab工具箱要求数据是下三角矩阵
[i,j,v]=find(a);
b=sparse(i,j,v,11,11);%构造稀疏矩阵
%b稀疏矩阵,1,11表示两个结点间最短路,
%Directed是标志图为有向图或者无向图的属性,该图是无向图,对于属性为false
[x,y,z]=graphshortestpath(b,1,11,'Directed',false)
运行之后得到结果
其中x表示最短路的长度,y表示最短路的节点编号,z表示最短路径的前驱节点
x =13
y = 1 2 5 6 3 7 10 9 11
z = 0 1 6 1 2 5 3 5 10 7 9
2.有向图最短路引例
该图中共有7个顶点,
邻接矩阵为
matlab代码
clc,clear;
a=zeros(7);
a(1,2)=4;a(1,3)=2;
a(2,3)=3;a(2,4)=2;a(2,5)=6;
a(3,4)=5;a(3,6)=4;
a(4,5)=2;a(4,6)=7;
a(5,6)=4;a(5,7)=