图的最短路径和距离
准备
1.创建稀疏矩阵
1.1什么是稀疏矩阵
在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。
矩阵稠密度:非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。
1.2 sparse函数
S = sparse(A)
将矩阵A转化为稀疏矩阵形式,即矩阵A中任何0元素被去除,非零元素及其下标组成矩阵S。如果A本身是稀疏的,sparse(S)返回S。
例子
有以下矩阵:A=[1,0,2;2,0,0;3,1,0]
S=sparse(A)
运行结果:
此时已经剔除全部0元素。
2.有向图的最短路径
下面是一个带权重的无向图:
matlab代码:
%w(a,b)=权重
w=zeros(4);
w(1,2)=2;
w(2,1)=2;
w(1,3)=1;
w(3,1)=1;
w(2,4)=3;
w(4,2)=3;
w(3,4)=4;
w(4,3)=4;
s=sparse(w);
运行结果:
还可以用另外一种方法创建稀疏矩阵
G=sparse([起点集合],[对应终点集合],[权重值])
G=sparse([1,2,1,3,2,4,3,4],[2,