这是为什么大多数图算法不容易适应负数?的后续问题。
我认为最短路径(SP)对负权重有问题,因为它将沿路径加起来的所有权重相加,并尝试找到最小值。
但我认为最小生成树(MST)没有负权重的问题,因为它只取单个最小权重边而不关心总体权重。
我说得对吗?
我认为最短路径(SP)对负权重有问题,因为它将沿路径加起来的所有权重相加,并尝试找到最小值。
但我认为最小生成树(MST)没有负权重的问题,因为它只取单个最小权重边而不关心总体权重。
我说得对吗?
是的,你说得对。最小生成树(MST)的概念允许边权为任意符号。寻找MST的两种最流行算法(Kruskal和Prim)可以处理负权边。
实际上,你可以将一个大正常数加到图中所有的边上,使所有边都变成正数。MST(作为边的子集)仍然保持不变。
p
会使得最小生成树的总权值增加pE
。然而在寻找最短路径时不成立,因为最短路径可以由不同数量的边组成。 - enedil是的,你说的对。因为如果你看最短路径算法(比如Dijkstra算法),它会检查当前顶点v的距离是否大于当前值加上边权值的和,如果是,就将距离s的顶点v的数值更改为总和的数值。但是,如果边权值为负,则会出现一些问题。
但是,在最小生成树(MST)问题中,有像Prim和Kruskal这样的算法,只选取最小权重的边,这使得负边可以符合MST的要求。
是的,你是正确的。 Prim算法与Dijkstra算法类似,但在Prim算法中,不应计算从i到j具有负边的最短路径。因此,还有另一个算法,即Bellman-Ford算法,用于计算具有负边缘的从i到j的最短路径。
因此,Prim和Kruskal算法对负边缘不公平。