电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

最短路的Dijkstra算法的程序源代码VIP免费

最短路的Dijkstra算法的程序源代码_第1页
1/12
最短路的Dijkstra算法的程序源代码_第2页
2/12
最短路的Dijkstra算法的程序源代码_第3页
3/12
关于最短路的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],From[501],Stack[501];intp,q,k,Path,Source,Vertex,Temp,SetCard;intFindMin(){intp,Temp=0,Minm=MaxNum;for(p=1;p<=Vertex;p++)if((Dist[p]>Source>>Vertex;for(p=1;p<=Vertex;p++)for(q=1;q<=Vertex;q++){fin>>Map[p][q];if(Map[p][q]==0)Map[p][q]=MaxNum;}for(p=1;p<=Vertex;p++){Dist[p]=Map[Source][p];if(Dist[p]!=MaxNum)From[p]=Source;elseFrom[p]=p;}is_arrived[Source]=true;SetCard=1;do{Temp=FindMin();if(Temp!=0){SetCard=SetCard+1;is_arrived[Temp]=true;for(p=1;p<=Vertex;p++)if((Dist[p]>Dist[Temp]+Map[Temp][p])&&(!is_arrived[p])){Dist[p]=Dist[Temp]+Map[Temp][p];From[p]=Temp;}}elsebreak;}while(SetCard!=Vertex);for(p=1;p<=Vertex;p++)if(p!=Source){fout<<"========================\n";fout<<"Source:"<=1;q--)fout<<"-->"<1================================================Source:2Target:3Distance:25Path:2-->3================================================Source:2Target:4Distance:50Path:2-->1-->4================================================Source:2Target:5Distance:50Path:2-->3-->5================================================Source:2Target:6Distance:60Path:2-->3-->5-->6================================================Source:2Target:7Distance:InfinityPath:NoWay!========================示例程序及相关子程序:voidDijkstra(intn,int[]Distance,int[]iPath){intMinDis,u;inti,j;//从邻接矩阵复制第n个顶点可以走出的路线,就是复制第n行到Distance[]for(i=0;i

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

最短路的Dijkstra算法的程序源代码

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群