北京大学ACM暑期课讲义-Dijkstra Algorithm.ppt_第1页
北京大学ACM暑期课讲义-Dijkstra Algorithm.ppt_第2页
北京大学ACM暑期课讲义-Dijkstra Algorithm.ppt_第3页
北京大学ACM暑期课讲义-Dijkstra Algorithm.ppt_第4页
北京大学ACM暑期课讲义-Dijkstra Algorithm.ppt_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Dijkstras Algorithm,解决无负权边的带权有向图或无向图的单源最短路问题 贪心思想,若离s前k-1近的点已经被确定,构成点集P,那么从s到离s第k近的点t的最短路径,s,p1,p2pi,t满足s,p1,p2piP。 否则假设piP,则因为边权非负,pi到t的路径0,则dpidt,pi才是第k近 di=min(dpi+cost(pi,i),iP,piP dt=min(di) ,iP,Dijkstras Algorithm,初始令ds=0,di=+,P= 找到点iP,且di最小 把i添入P,对于任意jP,若di+cost(i,j)dj,则更新dj=di+cost(i,j)。 时间复

2、杂度O(V2+E) Dijkstra+堆的时间复杂度 o(ElgV) 用斐波那契堆可以做到O(VlogV+E),0,4,2,3,1,50,200,200,1000,3000,10000,8000,5000,10000,1000,3000,250,250,8250,5250,Dijkstras Algorithm,Dijkstra算法也适用于无向图。但不适用于有负权边的图。,2,3,1,-2,3,4,d1,2 = 2 但用Dijkstra算法求得 d1,2 = 3,POJ3159 Candies,有N个孩子(N=3000)分糖果。有M个关系(M=150000)。每个关系形如: A B C 表示第

3、B个学生比第A个学生多分到的糖果数目,不能超过C 求第N个学生最多比第1个学生能多分几个糖果,POJ3159 Candies,有N个孩子(NB的有向边,权值为C 然后求1到N的最短路,用prioirty_queue实现 dijkstra + 堆的 POJ 3159 Candies,/by guo wei #include #include #include #include #include using namespace std; struct CNode int k; /端点 int w; /权值,或k到已经求出最短路的那些点的最短距离 ; bool operator d2.w; /pri

4、ority_queue总是将最大的元素出列 int aDist30010; priority_queue pq; bool bUsed30010=0; /vector v30010; error,如果用这个,则在poj会超时。说明vector对象的初始化,也是需要可观时间的 vector v; const unsigned int INFINITE = 100000000;,int main() int N,M,a,b,c; int i,j,k; CNode p, q; scanf(%d%d, ,while( !pq.empty () p = pq.top (); pq.pop(); if( bUsedp.k) /已经求出了最短路 continue; bUsedp.k = true; if( p.k = N ) break; for( i = 0, j = vp.k.size(); i j; i + ) q.k = vp.ki.k; if( bUsedq.k ) continue; q.w = p.w +

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论