关于最短路的Dijkstra算法的程序源代码
悬赏分:150|解决时间:2009-1-2500:57|提问者:hraper最好是matlab的
哪位高手有相关的程序请发到yangzhuwen6@163
com,谢谢
最佳答案Dijkstra算法Dijkstra算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径
主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止
Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低
Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等
Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN,CLOSE表方式,Drew为了和下面要介绍的A*算法和D*算法表述一致,这里均采用OPEN,CLOSE表的方式
其采用的是贪心法的算法策略大概过程:创建两个表,OPEN,CLOSE
OPEN表保存所有已生成而未考察的节点,CLOSED表中记录已访问过的节点
1.访问路网中距离起始点最近且没有被检查过的点,把这个点放入OPEN组中等待检查
2.从OPEN表中找出距起始点最近的点,找出这个点的所有子节点,把这个点放到CLOSE表中
3.遍历考察这个点的子节点
求出这些子节点距起始点的距离值,放子节点到OPEN表中
4.重复第2和第3步,直到OPEN表为空,或找到目标点
[编辑本段]算法实现#include#defineMaxNum765432100usingnamespacestd;ifstreamfin("Dijkstra
in");ofstreamfout("Dijkstra
out");intMap[501][501];boolis_arrived[501];intDist[501],Fro