【问题标题】:Minimum Spanning Graph - Negative and Positive Weights最小跨度图 - 负权重和正权重
【发布时间】:2013-11-11 06:21:06
【问题描述】:
我无法理解 MST 是否是一棵树。
假设给定一个图 G = (V, E),连接 V 中所有顶点且总权重最小的边 T ⊆ E 的任何子集必须是一棵树,或者它可以是某个其他子图
- 一些边可能有负权重。
- 所有边的权重为正。
我在想,对于某些可能具有负权重的边,它必须是一棵树,而对于所有边都具有正权重的边,它可以是其他一些子图。
如果我是对的或错的,请帮助我。
如果它必须是一棵树,你能解释一下连通性和极简性之间的矛盾吗?但是,如果您认为它可能是其他子图,那么您能否向我展示一个可能不是树的连通图的权重较低的示例。
【问题讨论】:
标签:
algorithm
graph
minimum-spanning-tree
【解决方案1】:
如果您有负权重,则不能保证最小跨度子图 是一棵树。考虑一个包含 3 个顶点且所有边权重为 -1 的完整图。
编辑有点误解你的问题:
如果你有负权重:它可能不是一棵树
所有权重都是非负数 (>=0):存在最小生成树,但可能还有另一个它不是树并且具有相同的权重总和。
所有权重都是正数 (>0):它是一棵树。
【解决方案2】:
最小生成树/森林 (MST/F) 和最小生成图 (MSG) 之间存在差异。
最小跨度图 (MSG):连接图 G 的所有连接组件中的所有节点,从而使总成本最小。
对于非负成本,MSF 等于 MSG。
例如图 G 是一个三角形,每条边的成本为 1。 MSG 将连接 2 条边上的 3 个顶点。这与使用 Kruskal、Prim 或 Boruvka 算法计算 G 得到的 MSF 相同。
对于负成本,MSF 可能不等于相应的 MSG,而且 MSG 并不总是 MSF。
例如图 G 是一个三角形,每条边的成本为 -1。 MSG 将使用每一个优势,因为它会降低整体成本。因此,您将获得一个循环。根据定义,一棵树或森林不包含循环。
使用正成本,您将永远不会在 MSG 中获得循环,因为添加产生循环的边总是会增加 MSG 的总成本。
用 Kruskal、Prim 或 Boruvka 计算 G 将返回一个 MSF。
【解决方案3】:
一些事实足以回答您的问题:
- 如果 T 是连接所有顶点的边的子集,则 T 不是
一定是一棵树。
- 如果 T 是连接所有边的子集
顶点,并且 T 最小化权重之和,那么我们知道:
- T 不一定是唯一的。
- T 始终包含形成树的边的子集。 (“连通性”)
- 如果所有权重都严格为正,则 T 是一棵树。 (“极简”)
- 找到一些权重总和最小的 T 就像找到一个 MST 一样容易:
- 找到一些 MST(例如使用 Kruskal 或 Prim 算法)。
- 添加所有具有负权重的边。
最小化权重的子集 T 的一个简单示例是图 G=(V,E),其中所有边的权重为 -1,然后 T 为 E。