用dijkstra算法计算源点到个结点的最短路径....谢谢亲爱的朋友~ 详细答案

如题所述

第1个回答  2011-01-14
Dijkstra算法的具体步骤:
Dijkstra算法又称为单源最短路径,所谓单源是在一个有向图中,从一个顶点出发,求该顶点至所有可到达顶点的最短路径问题。
设G=(V,E)是一个有向图,V表示顶点,E表示边。它的每一条边(i,j)属于E,都有一个非负权W(I,j),在G中指定一个结点v0,要求把从v0到G的每一个接vj(vj属于V)的最短有向路径找出来(或者指出不存在)。
基本思想是:设置一个顶点的集合s,并不断地扩充这个集合,一个顶点属于集合s当且仅当从源点到该点的路径已求出。开始时s中仅有源点,并且调整非s中点的最短路径长度,找当前最短路径点,将其加入到集合s,直到终点在s中。
基本步骤:
1、把所有结点分成两组:
第一组:包括已经确定最短路径的结点;
第二组:包括尚未确定最短路径的结点。
2、开始时,第一组只包含起点,第二组包含剩余的点;
3、用贪心的策略,按最短路径长度递增的顺序把第二组的结点加到第一组去,直到v0可达的所有结点都包含于第一组中。在这个过程中,不断更新最短路径,总保持从v0到第一组各结点的最短路径长度dist都不大于从v0到第二组任何结点的路径长度。
4、每个结点对应一个距离值,第一组结点对应的距离就是v0到此结点的最短路径长度,第二组结点对应的距离值就是v0由第一组结点到此结点的最短路径长度。
5、直到所有的顶点都扫描完毕(v0可达的所有结点都包含于第一组中),找到v0到其它各点的所有最短路径。

用dijkstra算法计算源点到个结点的最短路径...谢谢亲爱的朋友~ 详细...
(这里描述的是从节点1开始到各点的dijkstra算法,其中Wa->b表示a->b的边的权值,d(i)即为最短路径值)1. 置集合S={2,3,...n}, 数组d(1)=0, d(i)=W1->i(1,i之间存在边) or +无穷大(1.i之间不存在边) 2. 在S中,令d(j)=min{d(i),i属于S},令S=S-{j},若S为...

用Dijkstra算法求图中从顶点a到其他各顶点间的最短路径,并写出执行算 ...
已知有V中有顶点s及t,Dijkstra算法可以找到s到t的最低花费路径(i.e. 最短路径)。 这个算法也可以在一个图中,找到从一个顶点s到任何其他顶点的最短路径 这个算法是通过为每个顶点v保留目前为止所找到的从s到v的最短路径来工作的。初始时,源点s的路径长度值被赋为0(d[s]=0), 同时把所有...

最短路径算法(Dijkstra)
下面是一个有权图,求从A到各个节点的最短路径。第1步:从A点出发,判断每个点到A点的路径(如果该点不能直连A点则距离值为无穷大,如果该点能和A直连则是当前的权值),计算完之后把A点上色,结果如下图:第2步:从除A点之外的点查找到距离A点最近的点C,从C点出发查找其邻近的节点(除去已...

谁能举一个Pascal中Dijkstra算法求单源最短路径问题的例子并作一些说明...
重复以上过程n-2次,即可在dist数组中得到从源点到其余各终点的最段路径长度,对应的path数组中保存着相应的最段路径。下面给出具体的Dijkstra算法框架(注:为了实现上的方便,用一个一维数组s[1..n]代替集合S,用来保存已求得最短路径的终点集合,即如果s[j]=0表示顶点Vj不在集合中,反之,s[j...

利用Dijkstra算法求下图中从顶点1到其它各顶点间的最短路径,按下面表格...
v1v4v6v7=8+5+30=42;v1v4v6v5v7=35;35为最短路径 Dijkstra:求单源、无负权的最短路。时效性较好,时间复杂度为O(V*V+E)。源点可达的话,O(V*lgV+E*lgV)=>O(E*lgV)。当是稀疏图的情况时,此时E=V*V\/lgV,所以算法的时间复杂度可为O(V^2)。若是斐波那契堆作优先队列...

运筹学用dijkstra算法求最短路径
就是通过广度搜索遍历当前节点和子节点的关系,然后再依次递归。我给你开个头啊:首先设首节点为1,那么子节点是2,3,4,那么我分别遍历 1-2 = 4 1-3 = 5 1-4 = 2 全部遍历完后我在从下面的第一个子节点开始遍历,1(-2)-5 = 11 1(-2)-3 = 10 和1-3 = 5 对比 5<10 那么 1-3...

...表作存储结构实现求源点到其余各顶点的最短路径的Dijkstra算法
具体算法为:\/\/Dijkstra求单源最短路径 include<stdio.h> define N 20 \/\/图的顶点最多数 define MAX 1000 define MIN -1 typedef int ElemType;\/\/图的顶点标识,这里为自然数 \/\/图的结点结构 typedef struct ArcNode{ ElemType adjvex;\/\/图的顶点 (该弧指向顶点的位置)struct ArcNode *nextarc...

怎样用DIJKSTRA算法设计最短路径
2)算法步骤:a.初始时,S只包含源点,即S={v},v的距离为0。U包含除v外的其他顶点,即:U={其余顶点},若v与U中顶点u有边,则正常有权值,若u不是v的出边邻接点,则权值为∞。b.从U中选取一个距离v最小的顶点k,把k,加入S中(该选定的距离就是v到k的最短路径长度)。c.以k为新...

求最短路径的dijkstra算法
最短路径dijkstra算法如下: Dijkstra迪杰斯特拉是一种处理单源点的最短路径算法,就是说求从某一个节点到其他所有节点的最短路径就是Dijkstra。 资料拓展: 迪杰斯特拉算法(Dijkstra)是由荷兰数腔计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其薯纳衫余各顶点的最短路径算法,解决的...

[最短路径问题]—Dijkstra 算法最详解
Dijkstra算法,由Edsger Wybe Dijkstra在1956年提出,是一种解决赋权图单源最短路径问题的有效方法。其基本思想是通过逐步更新每个顶点到源点的最短路径,形成一个最短路径树。该算法适用于非负权值图,但不能处理负权边。以下是算法的详细过程:首先,从源点开始,标记为已访问,初始化距离为0,其余...

相似回答
大家正在搜