我进行了动态编程练习,发现了Floyd-Warshall算法。显然,它找到了图的所有对最短路径,其权重边可能为负,但没有负周期。
所以,我想知道负重边的现实意义是什么?简单的英语解释会有所帮助。
我进行了动态编程练习,发现了Floyd-Warshall算法。显然,它找到了图的所有对最短路径,其权重边可能为负,但没有负周期。
所以,我想知道负重边的现实意义是什么?简单的英语解释会有所帮助。
Answers:
赛义德·阿米里(Saeed Amiri)在评论中已经给出了一个很好的例子:边缘的权重可以代表现实世界中的任何事物,例如,从一个帐户转移到另一个帐户的金额。金额可以是正数或负数。例如,如果要在图表中从转到,同时又要尽可能减少损失的钱(最短路径),则可以考虑负权重。有关更多信息,请参见本书的章节。b
除此之外,还有更多的应用程序。负权重取决于您要建模的程度。例如,考虑此图
化学:权重可用于表示化学反应过程中产生的热量。(模式:化合物,边缘:如果化合物从能够获得(“化学还原”)。在该图中:你产生千焦转换和千焦转换到需要。千焦从取回。 v u 4 s - a 2 a t 5 s t
现实生活:想想一个驾驶员,他得到报酬将其雇主从驾驶到但他在和之间付款(例如在他的家和工作场所之间旅行)。吨一个b
游戏:假设您为了钱而玩剪刀石头布。节点:石头,纸,剪刀。边:任何关系(clique)。重量:下注。在此图中:(忘记),这里击败,击败和击败,分别赢得4,2,-5。小号一个一吨吨小号
负边缘仅仅是具有负权重的边缘。它可能在任何与图有关的上下文中以及其边指的是什么。例如,上图中的边缘CD是负边缘。如果可能,Floyd-Warshall的工作方式是使每对图表之间的权重最小。因此,对于负权重,您可以像对正权重边缘一样简单地执行计算。
当出现负周期时会出现问题。看一下上面的图。并问自己一个问题-A和E之间的最短路径是什么?刚开始您可能会觉得它的ABCE花费6(2 + 1 + 3)。但是实际上,从更深入的角度看,您会发现一个负循环,即BCD。BCD的权重为1 +(-4)+2 =(-1)。从A到E遍历时,我可以在BCD内继续骑行,以每次将成本降低1。像路径A(BCD)BCE花费5(2 +(-1)+ 1 + 3)。现在重复无限次循环将使每次成本降低1。我可以实现A和E之间的负无穷短最短路径。
对于图中的任何负周期,问题都是显而易见的。因此,每当出现负循环时,最小权重都没有定义或为负无穷大,因此弗洛伊德·沃歇尔在这种情况下无法工作。
另外,您可能想看一下Bellman-Ford算法,该算法检测图是否具有负周期,否则返回两个节点之间的最短路径。
例如,想象一个逻辑网络,其中边ij的权重w(i,j)是从顶点i到顶点j的成本。如果您与其他公司达成了运输其产品的商业协议,则w(i,j)将是利润而不是成本,因此您可以将此权重解释为负成本。
地图上的交通拥堵:
将权重与边缘关联的另一个现实世界示例可能是权重表示地图中的路况(负值更大,更不利)-然后,我们可以使用此表示来计算最佳距离。
我们真的可以使用“权重”隐喻来表示图形中任意两个点之间的任何正/负值