5.5 最短路径

作者: 个革马 | 来源:发表于2017-03-02 15:13 被阅读44次

1. Dijkstra算法(迪杰斯特拉算法)

所求的是,某一个顶点到图中各点的最短路径。
算法基本思路

  1. 找到离顶点最近且未标记的点,此时所得的路径便是这两点最短的距离(当前两点路径已经是全图最近,若再经过别的点的中转,必然绕远了)
  2. 标记最近点
  3. 刷新所有点离开始顶点的距离,重复第一步
for (v = 0; v < G.numVertexes; y++)
{
    //初始化各点与源点的距离,final用于保存各点是否找到最短路径
    final[v] = 0;
    D[v] = G.matirx[V0][v];
    P[v] = 0;
}
//
for (v = 1; v < G.numVertexes; v++) 
{
    //遍历所有结点,找到离源点最近,且还未找到最短路径的点
    min = INFINITY;
    for (w = 0; w < G.numVertexes; w++)
    {
        if (!final[w] && D[w] < min)
        {
            k = w;
            min = D[w];
        } 
     }

    final[k] = 1;//把顶点k标记,已经找到最短路径
    for (w = 0; w < G.numVertexes; w++)
    {
        //k点最短路径找到后,更新没找到最短路径的顶点与源点的距离
        if( !final[w] && (min + G.matirx[k][w] < D[w]))
        {
            D[w] = min + G.matirx[k][w];
            P[w] = k;
        }
    }
}

2. Floyd算法(弗洛伊德算法)

不断地通过尝试添加中转点,刷新两个顶点之间的距离,保存最短的。最终找到所有顶点到所有顶点的最短路径。

为此,需要两个变量用以保存,一个是两点之间的距离,一个是两点之间离终点最近的一个中转点。

for (v = 0; v < G.numVertexes; ++v)
{
    for (w = 0; w < G.numVertexes; ++w)//遍历所有顶点对
    {
        D[v][w] = G.matirx[v][w];//两点距离,初始化为邻接矩阵的距离
        P[v][w] = w;//路径直接保存为w
    }
}

for (k = 0; k<G.numVertexes; ++k)
{
    for (v = 0; v < G.numVertexes; ++v)
    {
        if ( D[v][w] > D[v][k] + D[k][w])  
        {
            //如果新的中转点使得两点距离变短,更改两点距离及路径
            D[v][w] = D[v][k] + D[k][w];
            P[v][w] = k;
        }
    }
}

相关文章

  • 5.5 最短路径

    1. Dijkstra算法(迪杰斯特拉算法) 所求的是,某一个顶点到图中各点的最短路径。算法基本思路 找到离顶点最...

  • 图的应用-最短路径求解

    图的最短路径   图的最短路径是一个起点到一个终点之间最短的路径。  用于解决最短路径问题的算法被称做“最短路径算...

  • Yen的K条最短路径算法(KSP)

    一、问题介绍 1.求K条最短路径的必要性 最短路径问题分为: 单源最短路径 所有顶点对间的最短路径 共同的缺陷:这...

  • 最短路径算法

    最短路径算法可以分为两类:单源最短路径问题:从某固定源点出发,求其到所有其他顶点的最短路径。多源最短路径问题:求任...

  • 最短路径 之 Dijkstra 算法

    • 最短路径 之 Floyd 算法• 最短路径 之 Bellman 算法 Dijkstra算法是用于求解单源最短路...

  • 数据结构第二季 Day11 图 Kruskal算法、Dijkst

    一、最短路径基础知识 1、最短路径的定义是什么? 最短路径(Shortest Path):两顶点之间权值之和最小的...

  • 图 求解最短路径 时间复杂度 空间复杂度 单源最短路径 多源最短路径 条数最短(点权为1) 边权之和最小或最大(花...

  • 最短路径问题

    无权图单源最短路径 有权图单源最短路径 有权图单源最短路径和无权图最短路径不一样,不能单从节点数来看,比如上图中,...

  • 最短路径

    最短路径 最短路径:http://baike.baidu.com/view/349189.htmDijkstra算...

  • 算法之「迪杰斯特拉(Dijkstra)算法」

    最短路径 生活中,我们常常会面临着对路径的最优选择问题,可能是路程最短,也可能是时间最短,这个的最短路径就类似路程...

网友评论

    本文标题:5.5 最短路径

    本文链接:https://www.haomeiwen.com/subject/ahsawttx.html