【问题标题】:MST recursive construction on subgraph子图上的 MST 递归构造
【发布时间】:2020-03-14 15:48:00
【问题描述】:

MST 表示:最小生成树。

给定一个图形 g = (V, E)。将顶点任意划分为 2 个不相交的集合,V1 和 V2。 令 E1 是 V1 中具有两个事件顶点的所有边 令 E2 是 V2 中具有两个事件顶点的所有边 设 E3 是所有边,在 V1 中有一个事件,在 V2 中有一个事件

现在在子图(V1,E1)上构造一个 MST M1,在子图(V2,E2)上构造一个 MST M2。然后在 E3 中添加连接 M1 和 M2 的最低权重边。这是在原始图 g 上构建 MST 的结果吗?

【问题讨论】:

    标签: algorithm graph minimum greedy


    【解决方案1】:

    我的答案是否定的。

    考虑图 G:{顶点:{A,B,C,D} 边:{AB = 1,BD = 10,DC = 3,AC = 2}}。当它被划分为V1 = {A, C} V2 = {B, D} E1 = {AC} E2 = {BD} E3 = {AB, CD}时,根据描述MST是{AC, AB, BD },而真正的 MST 是 {AB, AC, CD}。

    回想一下 Kruskal 算法:边按权重升序排序,不形成循环的边将与 MST 中已存在的边一一添加。 MST 是树,因此将选择 |E|-1 条边(假设 MST 中没有孤立顶点)。如果 |E1| 1,则在整个图 G 上执行 Kruskal 算法时,E3 中的多条边将被添加到 MST。如果MST由M1 M2和E3中最小的边构成,可能会丢失一些边。

    此外,如果我们在整个图 G 上实现 Kruskal 算法,则可能会添加多个 E3 中的小边(我们称它们为 E3')。如果我们在 V1 E1 和 V2 E2 上分别实现 Kruskal 算法,则比 E3' 中的边大的边将被添加到 M1、M2 中。并且只会添加 E3 (E3') 中的最小边。因此,第二个 MST 的总重量大于第一个,它不是真正的 MST。

    在任何情况下单独构建 MST 与在整个图表上构建它是相同的吗?

    1. 当 E3 只有一条边时:

      在整个图 G 上实现 Kruskal 算法时,这条边将被添加到 MST 中,因为它不会与任何边形成循环。并且它不会影响任何其他边缘的决策。

    2. 当M1、M2都是无隔离的连通树时 E3 中的顶点和至少 |E3|-1 个边是 E.

      当在整个图上执行 Kruskal 算法时,E3 中的最小边将被添加到 MST 中。它不影响在 E1 或 E2 中添加的任何其他边的决定。因为它不会与 E1 或 E2 中的任何边形成循环。而E3中的其他边不会被添加,因为它们是Kruskal算法中要考虑的最后一条边,它们将与MST中已经存在的边形成一个循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 2022-08-20
      • 2014-03-03
      相关资源
      最近更新 更多