最短路matlab实现,来发个精品~matlab实现最短路

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

function [distance,path]=dijkstra(A,s,e)

% [DISTANCE,PATH]=DIJKSTRA(A,S,E)

% returns the distance and path between the start node and the end node.%

% A: adjcent matrix% s: start node% e: end node

% initializen=size(A,1);

% node numberD=A(s,:);

% distance vectorpath=[];

% path vectorvisit=ones(1,n);

% node visibilityvisit(s)=0;

% source node is unvisibleparent=zeros(1,n);

% parent node

% the shortest distancefor i=1:n-1

% BlueSet has n-1 nodes

temp=zeros(1,n);

count=0;

for j=1:n

if visit(j)

temp=[temp(1:count) D(j)];

else

temp=[temp(1:count) inf];

end

count=count+1;

end

[value,index]=min(temp);

j=index; visit(j)=0;

for k=1:n

if D(k)>D(j)+A(j,k)

D(k)=D(j)+A(j,k);

parent(k)=j;

end

end

end

distance=D(e);

% the shortest distance pathif parent(e)==0, return; endpath=zeros(1,2*n);

% path preallocationt=e;

path(1)=t;

count=1;while t~=s && t>0

p=parent(t);

path=[p path(1:count)];

t=p; count=count+1;

end

if count>=2*n,

error(['The path preallocation length is too short.',... 'Please redefine path preallocation parameter.']);

end

path(1)=s;

path=path(1:count);

end

这个算第一篇精品吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab实现求最短路径的算法有多种方法,以下是其中一种常用的实现办法: 首先,我们需要构建一个图来表示路径,这可以通过邻接矩阵或邻接表的方式实现。假设我们有一个邻接矩阵的图,可以使用Matlab的矩阵来表示,其中每个元素(i, j)表示节点i到节点j的路径长度。如果没有直接连接,则可以用一个很大的数或无穷大表示。 接下来,我们可以使用Dijkstra算法来求解最短路径。Dijkstra算法是一种贪心算法,基于节点间的距离来选择下一个节点。算法的基本思想是从起点开始,逐步选择到达当前节点的最短路径,并更新与其相邻节点的距离。这一过程一直进行,直到找到最短路径到达终点或者所有节点都已经被访问完。 在Matlab中,可以通过循环和条件判断来实现Dijkstra算法。首先,初始化距离矩阵和访问矩阵,将起点的距离设为0,其他节点的距离设为无穷大。接着,在一个循环中,选择未被访问的距离最短的节点,并更新与其相邻节点的距离。重复这个过程,直到找到最短路径或者所有节点都已被访问。 最后,根据最短路径的距离矩阵和访问矩阵,可以输出最短路径的结果。 总之,使用Matlab实现求最短路径的程序主要包括构建图的数据结构、实现Dijkstra算法以及输出最短路径的结果。以上是其中一种实现办法,也可以根据具体需求采用其他算法实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值