prim算法与dijkstra算法在更新上的区别

9人阅读 评论(0) 收藏 举报
分类:

prime:

 visit[index] = true;//最短边对应的另一个点纳入集合
        cout << index << " ";
        sum += minor;//最小树的总距离长度
        for (int j = 0; j < N; j++){
            if (!visit[j] && dist[j]>g[index][j]){//更新当前包括之前可连的点(最短),当前这个点a与其他点b的距离可能比之前的其他点c与点b的距离要短,所以要更新。
                dist[j] = g[index][j];
            }
        }

dijkstra:

s[u] = true;
        for (int j = 1; j <= n; j++) {//从最小边的点更新之前的与v0的距离
            if (!s[j] && dist[u] + map[u][j] < dist[j]) {
                dist[j] = dist[u] + map[u][j];
                pre[j] = u;//如果有更小边,则说明j的前驱为u
            }
        }

我也是刚开始学这个东西,看了之后发现两个算法简直就是一模一样,prim算法是用来算最小生成树的,就是求最小的连通值,而dijkstra算法是用来做单源最小路径的。差别也就在这个更新数组的位置,prim更新的是所有已加入集合的点到未加入点的最小距离,为后续继续纳入点。
而dijkstra的更新是指的初始点到所有点的最小距离,自然也就需要原点到这个点的距离+这个点到目标点的距离,来直接和原点到目标点的距离进行判定。然后更新最短距离。综上,我所理解的更新的区别就这么多,我的解释只是非常浅显的,若要深入的理解还需要认真的学习算法的证明和推导过程才行。

查看评论

Dijkstra算法与Prim算法的区别

1: Prim是计算最小生成树的算法,比如为N个村庄修路,怎么修花销最少。 Dijkstra是计算最短路径的算法,比如从a村庄走到其他任意村庄的距离。 2: Prim算法中有一个统计总len的...
  • u012856866
  • u012856866
  • 2014-08-21 10:53:05
  • 1669

Dijkstra算法与Prim算法的异同

Dijkstra算法,Prim算法,数据结构,代码,时间复杂度,图论
  • qq284565035
  • qq284565035
  • 2016-06-04 10:51:27
  • 3180

Prim算法和Dijkstra算法的异同

之前一直觉得Prim和Dijkstra很相似,但是没有仔细对比; 今天看了下,主要有以下几点: 1: Prim是计算最小生成树的算法,比如为N个村庄修路,怎么修花销最少。 Dijkstra是计...
  • touxuecainiao
  • touxuecainiao
  • 2017-03-07 09:15:55
  • 849

比较Dijkstra算法和最小生成树prim算法之间的区别

我们先看看他们的模板:
  • qq_15681523
  • qq_15681523
  • 2014-08-27 21:44:59
  • 1529

Prim算法、Kruskal算法和Dijkstra…

本文转自:http://squirrelrao.iteye.com/blog/1044867 Prim算法和Kruskal算法都能从连通图找出最小生成树。区别在于Prim算法是挨个找,而Kruska...
  • rxm1989
  • rxm1989
  • 2014-09-25 13:31:08
  • 623

Dijkstra和Prim算法 【含数学证明】

#ACM&算法 不知是不是因为自己的抽象学习能力还是不够强,之前在翻阅别人博客学习这两个算法的时候,整个人一直处于懵逼状态。 分析了一下,发现之前存在的博客教程,大多趋向于方法讲解,学完以后有知其...
  • Reskip
  • Reskip
  • 2016-02-17 20:10:29
  • 6760

图论——Dijkstra+prim算法涉及到的优先队列(二叉堆)

【0】README0.1)为什么有这篇文章?因为 Dijkstra算法的优先队列实现 涉及到了一种新的数据结构,即优先队列(二叉堆)的操作需要更改以适应这种新的数据结构,我们暂且吧它定义为Distan...
  • PacosonSWJTU
  • PacosonSWJTU
  • 2015-11-19 09:40:48
  • 1273

Prim算法 Kruskal算法 Dijstra算法 Floyed算法

Prim算法和Kruskal算法都能从连通图找出最小生成树。区别在于Prim算法是挨个找,而Kruskal是先排序再找 Dijkstra算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径...
  • bjtu_dubing
  • bjtu_dubing
  • 2015-12-16 20:22:12
  • 500

最小生成树Prim算法和单源最短路径Dijkstra算法

问题: 1. (最小生成树)给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,即求最小生成树。 2. (单源最短路径)给定一个权值都为正数的无向连通图和一个源点,确定它到...
  • linyunzju
  • linyunzju
  • 2012-07-28 14:51:46
  • 4985
    个人资料
    持之以恒
    等级:
    访问量: 9675
    积分: 1376
    排名: 3万+