MATLAB实现A*;dijkstra;floyd三种路径规划算法
2018-08-24 11:23
337 查看
理解:
floyd 属于遍历求解;dijkstra属于动态规划;A*在dijkstra的基础上加了一部分预测处理。三者运行速度逐渐降低,但A *无法保证结果为最优解。
floyd:
以加中间点的方式循环迭代,即整个距离矩阵以每个节点为中间点进行更迭。
代码:
%弗洛伊德算法(floyd):两点之间最段路径,,,核心点是找出中间值
cost=round(rand(10,10).*50);%随机产生数据
len_n=size(cost,1);%计算节点的个数
connect_all=cell(len_n,len_n);%预设两点之间的连接节点
for i=1:len_n
for j=1:len_n
if abs(i-j)==0
cost(i,j)=0;%相同点之间的距离是0
end
connect_all{i,j}=[i,j];%预设两点之间的连接节点
end
end
cost_last=cost;%预设最短的距离
% 开始计算
tic
for i=1:len_n
for j=1:len_n
for z=1:len_n
if cost_last(j,z)>cost_last(j,i)+cost_last(i,z)
cost_last(j,z)=cost_last(j,i)+cost_last(i,z);
road1=connect_all{j,i};
road2=connect_all{i,z};
connect_all{j,z}=[road1(1:end),road2(2:end)];%更新连接
end
end
end
end
toc
相关文章推荐
- 求最短路径的三种算法: Ford, Dijkstra和Floyd
- 图的最短路径算法(Dijkstra,Floyd)的实现
- 路径搜索 – Dijkstra 算法 (MATLAB实现)
- 最短路径算法Dijkstra && SPFA && Floyd 代码实现模板
- [置顶] 【matlab dijkstra单源最短路径算法】dijkstra单源最短路径算法实现
- Dijkstra(迪杰斯特拉)最短路径算法之matlab实现(修正+验证)
- 数据结构之---C语言实现最短路径之Floyd(弗洛伊德)算法
- 图论所有的算法实现。DFS,BFS,Dijkstra,Floyd,Topsort,Kruskal,Prim,
- python矩阵/字典实现最短路径算法(Dijkstra)
- 最小生成树算法(Prime、Kruskal)和最短路径算法(Dijkstra、Floyd)
- Dijkstra 最短路径算法的设计与PHP实现
- [图的最短路径算法]Dijkstra, Bellman-Ford, Floyd-Warshall
- 最短路径算法——Dijkstra,Bellman-Ford,Floyd-Warshall,Johnson
- 图论--Matlab实现最短路径算法
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
- 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
- 最短路径问题的几种算法(dijkstra , Floyd ,) 例 hdoj 1002 畅通工程续