您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 迪杰斯特拉算法的基本思想
迪杰斯特拉算法的基本思想算法的基本思想是:设置并逐步扩充一个集合S,存放已求出其最短路径的顶点,则尚未确定最短路径的顶点集合是V-S,其中V为网中所有顶点集合。按最短路径长度递增的顺序逐个以V-S中的顶点加到S中.直到S中包含全部顶点,而V-S为空。具体做法是:设源点为vl,则S中只包含顶点vl,令W=V-S,则W中包含除v1外图中所有顶点,vl对应的距离值为0,W中顶点对应的距离值是这样规定的:若图中有弧vi,vj,则vj顶点的距离为此弧权值,否则为(一个很大的数),然后每次从W中的顶点中选—个其距离值为最小的顶点vm加入到S中,每往S中加入一个顶点vm,就要对W中的各个顶点的距离值进行一次修改。若加进vm做中间顶点,使vi,vm+vm,vj的值小于vi,vj值,则用vi,vm+vm,vj代替原来vj的距离,修改后再在W中选距离值最小的顶点加入到S中,如此进行下去,直到S中包含了图中所有顶点为止。下面以邻接矩阵存储来讨论迪杰斯特拉算法的具体实现。为了找到从源点到其他顶点的最短路径,引入两个辅助数组dist[n],s[n],数组dist记录从源点到其他各顶点当前的最短距离,其初值为dist[i]=cost[v0][i],i=2,...,n.其中v0表示源点。从S之外的顶点集合V-S中选出一个顶点w,使dist[w]的值最小。于是从源点到达w只通过S中的顶点,把w加入集合S中调整dist中记录的从源点到V-S中每个顶点v的距离:从原来的dist[v]和dist[w]+cost[w][v]中选择较小的值作为新的dist[v],重复上述过程,直到S中包含V中其余各顶点的最短路径。
本文标题:迪杰斯特拉算法的基本思想
链接地址:https://www.777doc.com/doc-5872776 .html