MATLAB的迪杰斯特拉算法求7个起始点到15个终点的最短路径!如何用MATLAB实现地杰斯特拉算法 求7个起始点到15个终点的最短路径!(其他算法也行,但弗洛伊德算法除外!)起始点和终点中间还有
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/28 01:16:55
MATLAB的迪杰斯特拉算法求7个起始点到15个终点的最短路径!如何用MATLAB实现地杰斯特拉算法 求7个起始点到15个终点的最短路径!(其他算法也行,但弗洛伊德算法除外!)起始点和终点中间还有
MATLAB的迪杰斯特拉算法求7个起始点到15个终点的最短路径!
如何用MATLAB实现地杰斯特拉算法 求7个起始点到15个终点的最短路径!(其他算法也行,但弗洛伊德算法除外!)
起始点和终点中间还有其他顶点 咱是要求出这7个起始点和15个终点每对定点之间的最短路径,然后再挑!(各终点间也有路径,也就是可从起点途径一个终点到另一个终点)
MATLAB的迪杰斯特拉算法求7个起始点到15个终点的最短路径!如何用MATLAB实现地杰斯特拉算法 求7个起始点到15个终点的最短路径!(其他算法也行,但弗洛伊德算法除外!)起始点和终点中间还有
你对图论的知识有了解吧~W是关联矩阵,s和t分别是起始点和终止节点的序号.返回的d为最短的加权路径长度,p为最优路径节点的序号向量.注意,这里W矩阵为0的点权值已经自动设为无穷大了.请参考《高等应用数学问题的 MATLAB一书》.我吧程序赋给你.
你做一个M函数用吧.
function [d,path]=dijkstra(W,s,t)
[n,m]=size(W);ix=(W==0);W(ix)=inf;
if n~=m,error('Square W required');end
visited(1:n)=0; dist(1:n)=inf;parent(1:n)=0;dist(s)=0;d=inf;
for i=1:(n-1),%求出每个节点与起始点的关系
ix=(visited==0);vec(1:n)=inf;vec(ix)=dist(ix);
[a,u]=min(vec);visited(u)=1;
for v=1:n,if (W(u,v)+dist(u)