假设存在100-Vertexes
的定向图,例如V_1---> V_2 ---> ... ---> V_100
边的所有权重都是1.我们想用Bellman-Ford
算法找到顶点1 (V_1)
到其他顶点之间的最短路径。每个步骤中的算法以任意顺序检查所有边缘。如果在一步中V_1
到所有其他顶点not changed
之间的最短路径(来自先前的值),算法将停止! the number of steps in this algorithms
depends on the order of inspecting edges
。
这个算法中的最大步数和最小步数是多少?
a) 100, 10000
b) 2, 100
c) 100, 100
d) 2, 99
任何人都可以形容我为什么选择选项(2)作为这个问题的答案?
答案 0 :(得分:0)
Bellman-Ford算法在Wikipedia给出。
如果选择V_1
和V_2
,则需要执行两个步骤。如果V_1
到V_1
不是允许的输入,那么它就不会更好。这可以通过一步完成。
最糟糕的情况是,如果V_1
和V_100
作为输入:这需要100步才能达到V_100。
问题是:给定可能的输入,最佳情况是什么,以及示例图中边缘之间距离可能发生的最坏情况是什么?
示例:输入为Bellman-Ford(Vertices, Edges, Soucre)
会发生什么?
在此特定示例中,顶点为V_1至V_100,边缘为E_1(从V_1至V_2等),源为V_1。
第1步:从头开始,即我们知道从V_1
到V_1
的最短路径。
第2步:遵循其中一条边。只有一个边缘,我们称之为E_1。此边缘从V_1
到V_2
。算法将遵循这一优势。现在,我们现在从V_1
到V_2
的最短路径沿此边缘迈出一步。 V_1和V_2的步数为2.这是最短的非平凡路径。
现在确定V_1和V_100之间距离的结果。 V_1
和V_100
之间有99条边,因为E_99
从V_99
变为V_100
。这会采取多少步骤?这个特定的图表可以有更长的路径吗?