利用负循环在图上的两个节点之间找到零/负权重的路径

Posted

技术标签:

【中文标题】利用负循环在图上的两个节点之间找到零/负权重的路径【英文标题】:Finding path of zero/Negative weight between Two Nodes on Graph by Utilizing Negative Cycles 【发布时间】:2012-08-22 14:26:16 【问题描述】:

我真的很难在标题中描述这一点,但我会用更长的格式来试一试。

我真的被这个问题难住了,我不是在寻找答案,只是寻求一点帮助或一些具体的主题来阅读。

我所拥有的是一个有向图,它具有各种权重的边,包括负边和正边。我试图做的是编写一个算法,该算法提供了两个位于图上的节点(并假设它们是连接的)在它们之间找到一条路径,导致路径的总权重为零或负数。路径可以多次包含节点(希望路径能够抵消包含边的正权重)。

我目前正在阅读 Russel 和 Norvig 的人工智能,但由于各种问题(算法不断循环负循环),我正在努力寻找一种方法将文本中的逻辑应用于我的问题。我不完全了解如何为此使用 Backtrack 和 AStar 等方法

如果有人能指出正确的方向来帮助我更好地理解我的问题,那将是一个很大的帮助,我可以处理 DFS 和 BFS 以及与图表相关的许多其他事情,但必须在两个具有权重限制的节点之间找到一条路径真的让我很困惑。

谢谢

下面我包含了一个示例图,我需要能够找到从起点到目标的路径,其中路径的总权重不超过零。

示例图表 http://i144.photobucket.com/albums/r166/ZooropaTV/bu.jpg

刚刚意识到我一直在做的很多搜索/阅读都被误导了,因为我的目标不一定是找到按重量计算的最短路径,而是通过访问所需的最少节点数,我现在需要再考虑一下,但仍然需要任何建议

【问题讨论】:

这本书 Network Flows: Theory, Algorithms, and Applications 可能很有趣。 【参考方案1】:

我想这就是你想要的:Floyd–Warshall 算法http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm

您必须对其进行修改以满足您的需求,但它会检测负循环,从而使您能够找到一条权重为零或更小的路径。

【讨论】:

以上是关于利用负循环在图上的两个节点之间找到零/负权重的路径的主要内容,如果未能解决你的问题,请参考以下文章

KL算法

在有向图中查找具有给定长度的路径,允许循环和负长度

约翰逊算法 - h 函数

第二次在图上运行时,广度/深度优先搜索导致崩溃

为啥全对最短路径算法使用负权重?

适用于负循环的 Floyd-Warshall 算法 [关闭]