- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
/liufeng_king/article/details/024算法笔记——【贪心算法】单源最短路径问题?1、问题描述?给定带权有向图G =(V,E),其中每条边的权是非负实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到所有其他各顶点的最短路长度。这里路的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。 2、Dijkstra/base/31算法?Dijkstra算法是解单源最短路径问题的贪心算法。 其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含有源。设u是G的某一个顶点,把从源到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组dist记录当前每个顶点所对应的最短特殊路径长度。Dijkstra算法每次从V-S中取出具有最短特殊路长度的顶点u,将u添加到S中,同时对数组dist作必要的修改。一旦S包含了所有V中顶点,dist就记录了从源到所有其他顶点之间的最短路径长度。 Dijkstra算法可描述如下,其中输入带权有向图是G=(V,E),V={1,2,…,n},顶点v是源。c是一个二维数组,c[i][j]表示边(i,j)的权。当(i,j)不属于E时,c[i][j]是一个大数。dist[i]表示当前从源到顶点i的最短特殊路径长度。在Dijkstra算法中做贪心选择时,实际上是考虑当S添加u之后,可能出现一条到顶点的新的特殊路,如果这条新特殊路是先经过老的S到达顶点u,然后从u经过一条边直接到达顶点i,则这种路的最短长度是dist[u]+c[u][i]。如果dist[u]+c[u][i]dist[i],则需要更新dist[i]的值。步骤如下:?(1) 用带权的邻接矩阵c来表示带权有向图, c[i][j]表示弧vi,vj上的权值。设S为已知最短路径的终点的集合,它的初始状态为空集。从源点v经过S到图上其余各点vi的当前最短路径长度的初值为:dist[i]=c[v][i], vi属于V.?(2) 选择vu, 使得dist[u]=Min{dist[i] | vi属于V-S},vj就是长度最短的最短路径的终点。令S=S U {u}.?(3) 修改从v到集合V-S上任一顶点vi的当前最短路径长度:如果 dist[u]+c[u][j] dist[j] 则修改 dist[j]= dist[u]+c[u][j].??(4) 重复操作(2),(3)共n-1次.算法具体实现如下:[cpp]?/liufeng_king/article/details/view plain?/liufeng_king/article/details/copy//4d5?贪心算法?单源最短路径问题?#include?stdafx.h?#include?iostream??#include?fstream??#include?string??using?namespace?std;?const?int?N?=?5;??const?int?M?=?1000;??ifstream?fin(4d5.txt);?templateclass?Type?void?Dijkstra(int?n,int?v,Type?dist[],int?prev[],Type?c[][N+1]);??void?Traceback(int?v,int?i,int?prev[]);//输出最短路径?v源点,i终点??int?main()??{???int?v?=?1;//源点为1??int?dist[N+1],prev[N+1],c[N+1][N+1];????cout有向图权的矩阵为:endl;???for(int?i=1;?i=N;?i++)???{???for(int?j=1;?j=N;?j++)???{???finc[i][j];?coutc[i][j]?;?}???coutendl;???}????Dijkstra(N,v,dist,prev,c);????for(int?i=2;?i=N;?i++)???{???cout源点1到点i的最短路径长度为:dist[i],其路径为;???Traceback(1,i,prev);???coutendl;???}????return?0;??}????templateclass?Type?void?Dijkstra(int?n,int?v,Type?dist[],int?prev[],Type?c[][N+1])??{???bool?s[N+1];???for(int?i=1;?i=n;?i++)???{???dist[i]?=?c[v][i];//dist[i]表示当前从源到顶点i的最短特殊路径长度??s[i]?=?false;????i
您可能关注的文档
- 实训1:十字路口交通灯控制实训.ppt
- 《折纸》校本课程.docx
- 数分高代定理大全.docx
- 矩阵与变换(选修4-2)(理科专用解析版).doc
- TerraTEM瞬变电磁仪操作说明书.doc
- (feng)HALCON算子函数Chapter1-19.doc
- (四川专版)2016高考数学二轮复习 专题十九 概率、随机变量及其分布练习 理.doc
- (总) 试 验 报 告.doc
- (新课标)2015年高二第一学期段考2试卷及答案.doc
- (理论研讨)垂直管理体制下审计质量提升的再思考.doc
- 0026算法笔记——【贪心算法】多机调度问题.docx
- 0042算法笔记——【随机化算法】计算π值和计算定积分.docx
- 0047算法笔记——【随机化算法】拉斯维加斯(Las Vegas)算法和n后问题.docx
- -完全平方公式课件.ppt
- 0045算法笔记——【随机化算法】舍伍德随机化思想搜索有序表.docx
- 01 第一节 参数估计.doc
- 01Hadoop-2.7.2+Zookeeper-3.4.6完全分布式环境搭建(HDFS,YARN HA).docx
- 0046算法笔记——【随机化算法】舍伍德随机化思想解决跳跃表问题.docx
- 03 纳什均衡与一致预期.ppt
- 06、三元线性方程组与三阶行列式.ppt
文档评论(0)