迪杰斯塔拉算法—求最短路径
这是一个按路径长度递增的次序产生最短路径的方法,并不是一下子就求出 v0 到 vi 的最短路径,而是一步步求出他们之间顶点的最短路径,过程都是易于已经求出的最短路径的基础上,求的更远顶点的最短路径,最终的到结果。
算法描述
1)算法思想:
设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长