【问题标题】:Why most graph algorithms do not adapt so easily to negative numbers?为什么大多数图算法不那么容易适应负数?
【发布时间】:2012-04-30 09:39:20
【问题描述】:

Algorithm Design Manual 说:

大多数图形算法都不容易适应负数。事实上,最短路径算法在处理负数时会遇到问题,而且使用这种技术肯定不会生成可能的最长路径。

但是为什么呢?当我们只是在原始权重前加上一个负数-,我认为大多数涉及权重的图形问题都可以平等处理,对吧?

【问题讨论】:

  • 我认为这是一个语义问题。例如,当权重表示路径的长度时,那么长度怎么可能是负数呢?
  • 一般来说,边不一定是指物理长度;在许多情况下,边可能具有负长度(例如,对决策可能导致损失或收益的财务状况进行建模),因此这是一个真正的问题。

标签: algorithm data-structures graph


【解决方案1】:

因为当您考虑路径的最小或最大成本时,您最终总是会考虑所有单个步骤的总和。

而且由于这些算法中的许多算法都是通过逐步选择最佳方法(当然,步长不同)在本地工作的,因此负权重只会产生循环或误报。

具有负权重意味着路径的成本可以在未来降低,这就是它产生问题的原因:即使在到达当前路径的某个点之后,您也无法从潜在的好路径列表中排除路径比另一个更昂贵,因为你可以找到改变情况的负权边。

举个例子:如果你有两个节点通过两个权重边相互连接 1-2 你可以在它们之间创建一个循环来确定一条任意低成本的路径(甚至是-∞)。

【讨论】:

  • 那么,算法设计手册中的说法实际上是在谈论正负权重的混合?
【解决方案2】:

确实,最短路径算法在处理负数时存在问题,

Dijkstra's Algorithm 是这样,但一般来说最短路径算法不是这样。 Bellman-Ford Algorithm 可以处理负边权重,前提是图形不包含负循环。然而:

Bellman-Ford 可以检测负循环并报告它们的存在, 但如果没有负循环,它就不能产生正确的答案 可从源头获取。

【讨论】:

    【解决方案3】:

    我将专门为最短路径问题添加一个答案。 Jack’s answer 很好地描述了负边缘的一般问题。

    考虑一个图G = (V, E),每条边的长度为l(e) ≤ 0e ∈ EG 中的最短路径与 G'l'(e) = - l(e) ≥ 0 ∀e ∈ E 中的最长路径相同。 Longest path problem 在一般图中被认为是 NP 难的。 虽然它可以在 DAG 和其他类别的图中以线性时间求解。

    作为cls answered,问题仅在于负循环,Bellman-Ford algorithm 可以处理一些负边。但是最长路径算法必须处理图中的循环,Bellman-Ford 无法对具有负循环的图给出正确答案。因此,Bellman-Ford 算法只能用于计算没有正循环的图中的最长路径。 提及,因为那个想法是obviously not uncommon

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-07
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 2022-12-05
      • 2012-10-20
      相关资源
      最近更新 更多