【问题标题】:Is there any minimum spanning tree that contains the maximum-weight edge on some cycle?是否存在包含某个循环中最大权重边的最小生成树?
【发布时间】:2020-09-05 00:10:00
【问题描述】:

起源问题来自算法介绍的练习。

23.1-5 让e 成为连接图G=(V, E) 的某个循环上的最大权重边。证明存在G'=(V, E - {e}) 的最小生成树,这也是G 的最小生成树。也就是说,有一个最小生成树G,不包括e

问题是:我认为G 的所有最小生成树都不包括e命题 是正确的。 e 是某个循环中唯一的最大权重边缘。是吗?

更新:2016-10-28 20:21

添加e是某个循环中唯一一个最大权重边的限制。

【问题讨论】:

    标签: algorithm minimum-spanning-tree


    【解决方案1】:

    一个测试用例是当有标记为 0..n-1 的节点并且仅在节点 i 和节点 (i + 1) mod n 之间存在链接(即环)时。在这种情况下,通过仅省略其中一个链接来创建最小生成树。如果 e 是唯一最大权重边,则它不在唯一生成树中,这是所有其他链接。如果最大权重的边不止一条,那么不同的最小生成树的数量与最大权重的边一样多,每棵树都会留下一条不同的最大权重边,而保留其他的。

    考虑只有一个最大重量边缘的情况。假设有人递给你一棵使用这条边的最小生成树。从树中删除它,为您提供两个断开连接的组件。现在尝试添加循环中的其他每个边,一次添加一个。如果边缘没有连接两个组件,请再次将其删除。如果任何一条边连接这两个组件,则生成树的权重比以前小,因此它不可能是最小生成树。是不是没有一条边连接这两个组件?添加不连接两个组件的边不会增加从任一组件可到达的节点集,因此如果没有单个边连接两个组件,则同时添加所有组件不会。但是我们知道,添加所有这些边会添加一条连接由前一个最大权重边连接的两个节点的路径,因此其中一条边必须连接组件。所以我们原来的所谓最小生成树不是,在一个循环中具有唯一最大权重的边不能是最小生成树的一部分。

    【讨论】:

    • 这提供了一个反例来说明为什么 OP 的命题一般来说是不正确的。如果e 是某个循环上的非唯一最大权重边,则可能存在包含e 的MST。
    • @mcdowella,你的例子是对的。我应该添加 e 是唯一一个最大权重边的限制,那么我的提议对吗?
    • @mcdowella,谢谢,你和我有同样的想法。我没有注意在某个循环中可能存在多个最大权重边缘的情况。
    【解决方案2】:

    你猜对了: G的所有最小生成树不包括e都是对的。

    首先我们需要证明: e 不是穿过 G 任何切口的轻边。

    让 C 是任何切割 e 的切割,因为 e 在一个循环中,所以对于这些切割中的任何一个来说,e 都不是轻边,并且所有其他切割都不会让边 e 穿过它,我们赢了'对于这些切割中的任何一个,边缘都很轻。

    那么我们需要证明: 如果 e 不是穿过 G 的任何割的轻边,则 G 的所有最小生成树都不包括 e。 这正是 23.1-3 的逆命题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多