《图论_dijkstra.ppt》由会员分享,可在线阅读,更多相关《图论_dijkstra.ppt(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法在图的点或者边上表明某种信息的数,称为权,含有权的图称为赋权图。下图就是在图的点或者边上表明某种信息的数,称为权,含有权的图称为赋权图。下图就是一个公路网络交通图。一个公路网络交通图。如果从如果从a点出发,那么如何寻找一条点出发,那么如何寻找一条从点从点a到其他各点的通路,使得通路到其他各点的通路,使得通路上各边的权和最小。接下来介绍著名上各边的权和最小。接下来介绍著名的迪克斯特拉算法。这个算法很著名,的迪克斯特拉算法。这个算法很著名,应用很广泛,比如路由器搜寻节点采应用很广泛,比如路由器搜寻节点采用的就是由该算法改进而来。用的就
2、是由该算法改进而来。Dijkstra算法是解单源最短路径的一个贪心算法。其本思想是。设置一个顶点算法是解单源最短路径的一个贪心算法。其本思想是。设置一个顶点集合,并不断的作贪心选择来扩充这个集合。一个顶点属于集合,并不断的作贪心选择来扩充这个集合。一个顶点属于S当且仅当从源到当且仅当从源到该顶点的最短路径及其长度已知。初始时,该顶点的最短路径及其长度已知。初始时,S中仅有源。假设中仅有源。假设u是是G(V,E)的)的某一个顶点,我们把从源到某一个顶点,我们把从源到u且中间只经过且中间只经过S中顶点的路称为从源到中顶点的路称为从源到u的特殊的特殊路径(当前最短路径),用路径(当前最短路径),用d
3、ist来记录当前每个顶点所对引得最短特殊路径的来记录当前每个顶点所对引得最短特殊路径的长度。长度。Dijkstra算法每次从算法每次从V-S中取出具有最短特殊路径的顶点中取出具有最短特殊路径的顶点u,将,将u添加到添加到S中去,同时对中去,同时对dist做相应的修改。一旦做相应的修改。一旦S包含了所有包含了所有V中的顶点。中的顶点。Dist就记录就记录了从源到所有其他顶点之间的最短路径长度。了从源到所有其他顶点之间的最短路径长度。此时假设此时假设S=a,b,V-S=,c,d,e,f,g,z,则则a-b-c就是一条从就是一条从a到到c的特殊路径。的特殊路径。但是形如但是形如a-b-e-c或者或者
4、a-d-c都不都不是从是从a到到c的特殊路径。的特殊路径。赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法相关概念:相关概念:1.最短路是一条路径,且最短路的任一最短路是一条路径,且最短路的任一段也是最短路段也是最短路2.我们考虑的是有向赋权图或者无向图,我们考虑的是有向赋权图或者无向图,假设假设G为赋权有向图或无向图,为赋权有向图或无向图,G边上边上的权均非负。的权均非负。算法流程:算法流程:赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法很多同学肯定是一头雾水吧,为了加强同学们对算法的理解,我们手动来走一遍流很多同学肯定是一头雾水吧,为了加强同学们对算法的理解,
5、我们手动来走一遍流程:程:赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法 赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法 赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法 赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法 赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法 赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法 赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法 赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法 赋权图的最短路算法赋权图的最短路算法 dijkstra算法算法