浅谈为什么最短路径中的路径还原只能用prev前驱节点来记录

原创 2015年11月21日 11:34:08



在做题过程中,想过,既然前驱节点可以记录路径,那么后继能不能呢。


那么对于我这种逻辑感不强烈的人,只能动手做了。


在用后继的方式后,将每个点的后继一一的输出后发现了问题,


是这样的,因为在图中,可能一个点所连接的两条边都可能符合条件,比如 1->2, 1->3,2->3这样简单的一个图,如果1->2,1->3的路径都是最短的,那么在更新过程中,1的后继先是2,后来又会变成3,这样,1->2这条边将还原不出来。

那么为什么前驱可以呢,

原因在于在遍历过程中会判断下一个点是否被使用,如果没被使用才会参与运算,这样保证了,某一个点的前驱只更新了一次。而若是后继,则一个点的后继的值至少是更新一次,如果更新大于1次,则先前的点,就无法被还原



版权声明:虽然为本人原创,但是写得真是渣,想转就转,反正我也不是鸣人。

相关文章推荐

所有节点对最短路径 超时 优先队列 + dijkstra + 遍历前驱子图

贴代码在此,有待后续改进。 #include #include #include #include #include #include #include using namespace std; ...

图的所有节点对之间的最短路径—Floyd算法(C++)

Dijkstra算法之后是Floyd算法 Dijkstra算法是求单源最短路径(即固定起点,不固定终点) Floyd算法是求任意点对之间的最短路径(起点和终点都任意)Floyd算法也叫Floyd-...

算法导论 所有节点对的最短路径

本章主要讲述: 1.Floyd-Warshall算法:求解任意两点间的最短距离,时间复杂度为O(n^3)。  (1)使用条件&范围:通常可以在任何图中使用,包括有向图、带负权边的图。  (2)弗洛伊德...

所有节点最短路径的Johnson实现

一、数据集形式 其中:6105(节点个数) 7035(边数) 0(id) 1609(起始边) 1622(终边) 57.403187(权重)二、数据集上传中等待审核成功再链接过来三、实现代码// D...

所有节点对最短路径

我们这里讲解三个算法,第一个是利用传统的动态规划,第二个也是个动态规划算法,但是基于一种观察结果,他就是warshall算法,第三个算法是将问题转换为没有负数权重的图,再对每个节点调用Dijkstra...

单源节点最短路径蛮力法和Dijkstra算法性能对比

一、单源节点问题的对比         在本文中,考虑单源点最短路径问题,对于一个加权连通图的一个称为起点的给定定点,求出它到所有其他定点之间的一系列最短路径。需要说明的是,这里所关心的不是从一个起点...

单元最短路径

求两个点之间最短路径

  • 2017-06-01 01:06
  • 3.57MB
  • 下载

shuoj-小6爱夜跑--Floyd记录多个最短路径

Description 自从小6学了最短路算法之后,就成了一个不折不扣的最短路理论拥护者,每次在校园里夜跑的时候,只要确定好起点和终点他就能快速算出最短的路径。然而小6却没有走过每一条路,只...

最短路径问题

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)