【问题标题】:Bellman-Ford Algorithms and Number of StepsBellman-Ford 算法和步数
【发布时间】:2015-05-04 04:43:40
【问题描述】:

假设有一个带有100-Vertexes 的有向图,例如V_1---> V_2 ---> ... ---> V_100

所有边的权重都是1。我们想用Bellman-Ford算法找到顶点1(V_1)到其他顶点的最短路径。该算法在每个步骤中以任意顺序检查所有边缘。如果在一个步骤中V_1 到所有其他顶点not changed 之间的最短路径(来自先前的值),则算法将停止!。 the number of steps in this algorithmsdepends on the order of inspecting edges

这个算法的最大和最小步数是多少?

a) 100, 10000

b) 2, 100

c) 100, 100

d) 2, 99

谁能描述我为什么选择选项(2)来回答这个问题?

【问题讨论】:

  • 似乎学校正在接近你...... :-) 我认为你必须自己解决这个问题,否则你将如何学习?
  • “如V_1---> V_2 ---> ... ---> V_100”是什么意思?那是一个链表。是链表还是一般图?
  • 不,它是一个有向图 v_1 与 v_2 有一条边,v_3 有一条边,依此类推。 @IVlad
  • @IVlad 链表是图的特例,对吧?
  • @Beginner - 对。我只是对 OP 的图是否始终是链表感到困惑。

标签: algorithm graph tree shortest-path bellman-ford


【解决方案1】:

Bellman-Ford 算法在Wikipedia 给出。

如果选择V_1V_2 则需要两个步骤。假设 V_1V_1 不是一个允许的输入,它不会变得更好,这可以通过一个步骤来完成。

最坏的情况是如果 V_1V_100 作为输入:这需要 100 步才能到达 V_100。


问题是:给定可能的输入,对于示例图中的边之间的距离,什么是最好的和最坏的情况是什么?

示例:输入为Bellman-Ford(Vertices, Edges, Soucre)
会发生什么?
在这个特定示例中,顶点是 V_1 到 V_100,边是 E_1(从 V_1 到 V_2 等),源是 V_1。

第 1 步:从头开始,即我们知道从 V_1V_1 的最短路径。
第 2 步:跟随其中一个边缘。只有一条边,我们称它为 E_1。这条边从V_1V_2。该算法将遵循此边缘。现在我们现在从V_1V_2 的最短路径沿着这条边走了1 步。 V_1 和 V_2 的步数为 2。这是最短的非平凡路径。

现在确定 V_1 和 V_100 之间距离的结果。在V_1V_100 之间有99 条边,因为E_99V_99V_100。这将采取多少步骤?这个特定的图表可以有更长的路径吗?

【讨论】:

  • 您能补充一点细节吗?我没明白!
  • 我们该怎么做 BL(v_1 , v_2)?我认为我们总是应该计算从 v_1 到所有其他人的最短路径?
猜你喜欢
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 2015-08-27
相关资源
最近更新 更多