MATLAB之最优路径的查找

                            求解最优路径问题以一个例题引入

MATLAB之最优路径的查找_第1张图片

这个例题是一个有向图,在图里面已经标注了权值。在MATLAB里面图用矩阵表示,具体操作见下面:

step1,找出起始节点、终止节点、权值,这三个部分组成三个A、B、C向量,

A=[1  1  2  2  3  3  4  4  4  4  5  6  6  7  8];

B=[2  3  5  4  4  6  5  7  8  6  7  8  9  9  9];

C=[1  2 12 6  3  4  4 15 7  2  7  7 15 3 10];

利用系数矩阵生成函数sparse()函数将图转换为系数矩阵。

{

   注解:这里先讲解sparse()函数的利用方法

   S=sparse(i,j,s,m,n,nzmax) 这是完整的定义式,其中i,j, s,都是向量,i,j ,决定S的元素位置,向量s决定S的元素值,即S(i(k),j(k))=s(k), 最终生成的S是一个m*n的矩阵,nzmax决定S矩阵中非零元素的个数一般nzmax=length(s)。

}

R=sparse(A,B,C);

R(9,9)=0;


step2:

利用biography()函数将矩阵制成图表形式

{

  注解:biography()函数的用法,biograghy(R,[],'ShowWeights','on');这里矩阵R数值就是要制成表的路径权值,如果R(i,j)=a!=0,则i——j路径上权值就为a。

MATLAB之最优路径的查找_第2张图片

上图就是最终生成的向量图。ShowWeights选项设置为on ,图像里面会显示路径权值。

如果要想显示出上图可以用view函数。

}

step3:

这一步就是利用graphshortestpath()函数找出最优路径,一般[d,p]=graphshortestpath(R,1,9)

其中R代表将要搜寻的图矩阵,1代表搜寻起始点,9代表搜寻终止节点。

d返回值代表距离起点与终点间距离,p返回值代表经过的节点。


                                         


                                     无向图的最优路径搜寻

                            MATLAB之最优路径的查找_第3张图片


你可能感兴趣的:(MATLAB专栏)