最短路算法(图论).ppt
《最短路算法(图论).ppt》由会员分享,可在线阅读,更多相关《最短路算法(图论).ppt(55页珍藏版)》请在三一办公上搜索。
1、图算法及其在通信网中的应用,王晟 博士 教授 博导,Part 05:最短路算法,2009年春季图算法及其在通信网络中的应用,2/55,最短路算法,1,2,Label-Setting算法,Label-Correcting算法,毫无疑问,重点将是以Dijkstra算法为代表的Label-Setting算法。,2009年春季图算法及其在通信网络中的应用,3/55,Label-Setting算法,4,基本Dijkstra算法,1,2,3,5,分析(Analysis),扩展(Extension),加速(Speed up),应用(Application),2009年春季图算法及其在通信网络中的应用,4/5
2、5,基本Dijkstra算法,Dijkstra算法是本课程的核心内容,务必要掌握其思想和具体的编程方法。,问题分析,代码设计,算法示例,求解思路,伪码描述,Dijkstra算法,2009年春季图算法及其在通信网络中的应用,5/55,问题描述,所有这些最短路构成的是一个怎样的子图?,为什么一定是树?,最短路径树是生成树么?,最短路径树是最小生成树么?,2009年春季图算法及其在通信网络中的应用,6/55,Dijkstra的求解思路,如何维护最短路径树?,如何选择顶点?,如何更新距离标记?,2009年春季图算法及其在通信网络中的应用,7/55,伪码描述,d(j):顶点j的距离标记。,p(j):顶点
3、j在最短路径树上的前继点。,S:最短路径树上的顶点集合。,2009年春季图算法及其在通信网络中的应用,8/55,怎样根据得到的这些信息重构出最短路径?,Dijkstra算法示例,0,c,s,2,s,4,s,s,sa,sae,saed,saedb,saedbc,2,s,2,s,6,a,6,a,6,a,6,a,6,d,6,d,6,d,4,a,4,a,4,a,4,s,3,a,3,a,a,6,a,4,a,3,a,e,d,6,d,b,每条边被检查了(被描黑)几次?,如果放松“连通图”假设,如何改进代码?,2009年春季图算法及其在通信网络中的应用,9/55,Dijkstra算法代码设计,Dijkstra
4、Alg,d(j)和p(j),如何管理,FindMin,Update,2009年春季图算法及其在通信网络中的应用,10/55,DijkstraAlg源码(一),class CGraph private:int numVertex,numEdge;list IncidentList;/所有的边map mapVID_Vertex;/所有的顶点list listTempMark;/暂时标记的顶点集合map mapVID_listEdge;/记录与顶点关联的出度边Update(int VID);public:CGraph(char*inputFile);CGraph(list listEdge);CGr
5、aph(CGraph,class CVertex public:int d;int p;int ID;CVertex()d=INFINITY;p=NULL;CVertex();bool pVertexComp(CVertex*x,CVertex*y)if(x-d d)return TRUE;return FALSE;,如果sort的是对象本身,可以用重载来实现。这里sort的是对象指针,所以写了个外部函数。,2009年春季图算法及其在通信网络中的应用,11/55,DijkstraAlg源码(二),void CGraph:Dijkstra(int s)map:iterator i,iend;ie
6、nd=mapVID_Vertex.end();for(i=mapVID_Vertex.begin();i!=iend;i+)if(i-second-ID=s)i-second-d=0;listTempMark.pushback(i-second);Update(s);while(!listTempMark.empty()listTempMark.sort(pVertexComp);int j=(*listTempMark.begin()-ID;listTempMark.popfront();Update(j);,void CGraph:Update(int v)list lEdge=mapVI
7、D_listEdgev;list:iterator i,iend;iend=lEdge.end();for(i=lEdge.begin();i!=iend;i+)int w=(*i)-getWeight();CVertex*h=mapVID_Vertex(*i)-getHead();CVertex*t=mapVID_Vertexv;if(t-d+w d)h-d=t-d+w;h-p=v;,2009年春季图算法及其在通信网络中的应用,12/55,Label-Setting算法,4,基本Dijkstra算法,1,2,3,5,分析(Analysis),扩展(Extension),加速(Speed up
8、),应用(Application),2009年春季图算法及其在通信网络中的应用,13/55,分析(Analysis),正确性分析和复杂度分析是算法分析中两个主要的内容。,复杂度分析,正确性分析,Dijkstra算法分析,2009年春季图算法及其在通信网络中的应用,14/55,正确性分析,问题1:Dijkstra算法求出的是从s到其他顶点的最短路么?,第一次循环(k=1)时,Dijkstra算法求出的路径是什么?它是从s出发的最短路么?,假定第k次循环求得了第k条最短路,问第k+1次循环求得的是第k+1短的路径么?,问题2:Dijkstra算法求出的是从s出发的前n条最短路(宿点必须不同)么?,
9、YES,OF COURSE,YES,IT IS.,2009年春季图算法及其在通信网络中的应用,15/55,复杂度分析,2,2n,n,总的操作次数为:2n+n(n-1)/2+n+m,结论:Dijkstra算法的复杂度为O(n2),2009年春季图算法及其在通信网络中的应用,16/55,Label-Setting算法,4,基本Dijkstra算法,1,2,3,5,分析(Analysis),扩展(Extension),加速(Speed up),应用(Application),2009年春季图算法及其在通信网络中的应用,17/55,扩展(Extension),针对不同问题的物理意义,通过扩展Dijks
10、tra算法来达到求解目的。,单源单宿最短路问题,最短分离路径对问题,带宽约束最短路问题,最大通过率路径问题,Dijkstra算法扩展,2009年春季图算法及其在通信网络中的应用,18/55,单源单宿最短路,2009年春季图算法及其在通信网络中的应用,19/55,最大通过率路径,2009年春季图算法及其在通信网络中的应用,20/55,带宽约束下的最短路,2009年春季图算法及其在通信网络中的应用,21/55,最短分离路径对(Shortest Disjoint Path Pair),b,s,c,d,4,4,1,1,1,算法不完备。,b,a,c,d,4,4,1,1,1,e,8,8,不是最佳解。,b,
11、a,c,d,4,4,1,1,1,b,a,c,d,4,4,1,1,1,2009年春季图算法及其在通信网络中的应用,22/55,Label-Setting算法,4,基本Dijkstra算法,1,2,3,5,分析(Analysis),扩展(Extension),加速(Speed up),应用(Application),2009年春季图算法及其在通信网络中的应用,23/55,加速(Speed up),本课程略去了利用各种“堆”数据结构来实现Dijkstra算法加速的内容。着重讲一种理论上有效(且有趣)的加速方法,以及两种现实中很有效的方法。,Dial实现,A*算法,双向Dijkstra算法,Dijks
12、tra算法加速,2009年春季图算法及其在通信网络中的应用,24/55,Dial实现,2009年春季图算法及其在通信网络中的应用,25/55,Dijkstra算法的Dial实现,0,c,s,2,s,4,s,s,sa,sae,saed,saedb,saedbc,2,s,2,s,6,a,6,a,6,a,6,a,6,d,6,d,6,d,4,a,4,a,4,a,4,s,3,a,3,a,a,6,a,4,a,3,a,e,d,6,d,b,a,b,c,d,e,a,e,b,d,e,c,2009年春季图算法及其在通信网络中的应用,26/55,实现细节提示,难点1:基于桶的FindMin,难点2:桶的更新,/桶的实
13、现:map mapBuckets;,/指向桶的迭代器map:iterator itBucket;,2009年春季图算法及其在通信网络中的应用,27/55,加速(Speed up),本课程略去了利用各种“堆”数据结构来实现Dijkstra算法加速的内容。着重讲一种理论上有效(且有趣)的加速方法,以及两者现实中很有效的方法。,Dial实现,A*算法,双向Dijkstra算法,Dijkstra算法加速,2009年春季图算法及其在通信网络中的应用,28/55,反向Dijkstra算法,注意,CGraph中的mapVID_listEdge只记录了出度边;另外构造一个类似的数据结构,记录每个顶点的入度边:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 短路 算法 图论
链接地址:https://www.31ppt.com/p-2906390.html