识别贝尔曼-福特算法中的负循环

问题描述 投票:0回答:1

Graph Diagram

当我选择选项 1 和 3(-6,无穷大),(-7,无穷大)并应用 Bellman-Ford 算法进行最短路径计算时,计算在第 n 步之后没有显示任何负循环选项(我可能是错的)。因此,“X”的值应至少为“-7”以避免任何负循环是否有效?

algorithm shortest-path bellman-ford
1个回答
0
投票

为了确定贝尔曼-福特算法是否可以在不遇到负循环的情况下使用,我们必须查看

x
的值,这些值不会造成循环周围的权重总和为负的情况。只要源顶点不存在可到达的负权重循环,贝尔曼-福特算法就能够处理具有负权重的图。

根据图像中的图表,我们可以分析周期,看看

x
如何影响每个周期的总重量:

以下是我们需要检查的潜在周期:

  • 循环0-1-3-2-0
  • 循环0-2-4-3-1-0
  • 循环1-3-4-2-1

我们将检查这些循环,看看它们的总权重是否会因涉及

x
的边权重而变为负值。

  1. 对于循环 0-1-3-2-0: 总重量 = 6 + x + 5 + 3 = x + 14。
  2. 对于循环 0-2-4-3-1-0: 总重量 = 5 + 4 + 5 + 1 + 6 = x + 21。
  3. 对于周期 1-3-4-2-1: 总重量 = x + 5 + 4 + 3 = x + 12。

为了不存在负循环,所有循环权重必须是非负的,这给了我们:

x + 14 ≥ 0
x + 21 ≥ 0
x + 12 ≥ 0

其中最受限制的是

x + 12 ≥ 0
,这意味着
x ≥ -12
。因此,对于大于或等于
-12
的 x 值,Bellman-Ford 算法不会遇到任何负环,可用于查找最短路径。

根据您的选择,范围

(-6, ∞)
(-7, ∞)
都是
[-12, ∞)
的子集,这意味着它们都是
x
的有效范围,其中可以使用 Bellman-Ford 算法而不会遇到负循环。如果
x
应至少为
-7
以避免负循环,这是“不正确的”,因为根据循环分析,x 应至少为
-12
以避免负循环。
    

© www.soinside.com 2019 - 2024. All rights reserved.