【问题标题】:Weighted graph problems, TRUE/FALSE + explanation加权图问题,TRUE/FALSE + 解释
【发布时间】:2011-10-29 10:44:51
【问题描述】:

我正在尝试完成一些正确/错误的问题。当我用 true 回答其中的许多问题时,我开始担心......强>。负重应该没问题。

Qa) 如果 G 有一个具有唯一最重边 e 的环,则 e 不能是任何 MST 的一部分。

我的回答是对的。 例如,我们有一个包含节点 A、B、C、D、E 的图。

AB = 1
BC = 2
BD = 3
CD = 100
DE = 4

如您所见,BCD 是一个循环。 我的论点是,既然它是一个循环,我们总是可以通过采取其他路线来避免独特的最重边缘 CD。因此这是真的。我的论点是否合理(足够)?

Qb) Dijkstra 算法计算的最短路径树必然是 MST。

我的回答是对的,但我的直觉告诉我出了点问题。 嗯... Disjkstra 和 Prim 都是贪心算法。他们每次都选择最轻的加权边缘。 是否存在最短路径树不是最小生成树的情况? 我真的很难理解这两个家伙之间的区别。

Qc) Prim 的算法适用于负加权边缘。

我的回答是对的。因为这就是wiki所说的......:p 该算法是关于在所有边中找到成本最低的边。所以负加权边缘应该没关系,是吗?但是负加权循环呢?

Qd) 如果 G 有一个具有唯一最轻边 e 的循环,则 e 必须是每个 MST 的一部分。

我的回答是对的。 我们必须访问 MST 中的所有节点。例如,在长度为 3 的循环中,我们总是可以用 2 步遍历该循环中的所有节点。如果有独特的最轻边缘,我们肯定会在 MST 中选择它。

我的声明合理吗?也许他们还不够?那么有什么建议吗?

【问题讨论】:

  • dijstra 用于计算 A 到 B 之间的最短路径。它不是 MST。 Prim 是 MST。
  • 是的,但是在执行 Dijkstra 之后,如果我们在到达目标时不停止,我们会得到到每个节点的最短路径。有时,问题甚至没有给出目标,这意味着我们会继续迭代,直到遍历所有节点。之后,我们就有了最短路径树。问题是这个最短路径树是否在同一个图的 MST 中?
  • 确实如此,但图中也有多个 MST。
  • 是的,在这种情况下有多个 MST,因为边权重不明显。因此,Dijkstra 的输出是否是或可以是这些 MST 之一是个问题。

标签: graph weighted


【解决方案1】:

对 b) 的建议:您的直觉认为这是错误的,因此请尝试构建一个反例。如果你找到了,它就解决了,否则你通常可以通过分析你构建反例失败的原因来了解为什么一个主张是正确的。不过,我不会告诉你你的答案或直觉是否正确。


作业肯定早就交了,所以答案:

Qa) 如果 G 有一个具有唯一最重边 e 的环,则 e 不能是任何 MST 的一部分。

没错。假设您有一个包含边 e 的生成树 T。如果从树中删除边 e,您将得到一个包含两个非空连通分量 C1 和 C2 的图。循环中的至少一个其他边必须连接 C1 和 C2(否则它不会是一个循环)。让g 成为这样的优势。通过删除e并添加gT得到的树T'是一棵权重小于T的生成树。因此T 不是 MST。

Qb) Dijkstra 算法计算的最短路径树必然是 MST。

我的回答是对的,但我的直觉告诉我有问题。

直觉是对的,那是错误的。考虑

    6
  A---B
3 |   | 1
  C---D
    3

其中最短路径树是从顶点A 计算的。最短路径树是

    6
  A---B
3 |
  C---D
    3

总权重为 12,但唯一的 MST 是

  A   B
3 |   | 1
  C---D
    3

重量为 7。

Qc) Prim 的算法适用于负加权边缘。

没错。从正权重的正确性中推断出这一点的一种方法是将恒定权重 W 添加到所有边,以便所有边权重都是正的(例如 W = 1 + max { |weight(e)| : e ∈ E })。

由于具有V 顶点的树总是有V - 1 边,任何生成树的总权重在修改权重和未修改权重之间相差(V - 1)*W,因此树是修改权重的 MST 当且仅如果它是未修改的边缘权重之一。

边的权重排序不会通过向所有权重添加一个常数来改变,因此 Prim 的算法为修改后的边权重和未修改的权重构建相同的生成树,顺序相同。

通过对正权重的正确性,Prim算法构造的具有修改权重的树是修改权重的MST。

Qd) 如果 G 有一个具有唯一最轻边 e 的循环,则 e 必须是每个 MST 的一部分。

错误。考虑

     1   1
   A---B---C
   |  / \  |
 1 | /4 5\ | 1
   |/  6  \|
   D-------E

循环 BDE 具有唯一的最轻边 BD,权重为 4,但 MST 不包含该循环的任何边。

如果在图表 G 中有唯一的最轻边 e ,那么它必须是每个 MST 的一部分。这与 a) 是双重的:考虑不包含 eG 的生成树 T。通过将e 添加到T,我们获得了一个必须有一个循环的图T'(因为T 是一个生成树,而e 不在T 中)。 T' 中的任何循环都必须包含e,否则将是T 中的循环。因此,在T' 中选择任何循环C(确实有一个,但这并不重要)并从C 中删除除e 之外的任何边缘。让结果图为T''

T'' 的总权重小于T 的总权重,因为T'' 是从T 通过用较轻的边缘替换边缘获得的。 T'' 是连接的(因为它是从 T' 通过删除循环的边获得的),并且包含 V 顶点和 V - 1 边。因此它是一棵生成树,因此T 不是最小的。

【讨论】:

    【解决方案2】:

    D 是真的。
    Qd) 如果 G 有一个具有唯一最轻边 e 的循环,则 e 必须是每个 MST 的一部分。真的。

    轻边缘 = 穿过切口的边缘,其重量是穿过切口的任何边缘的最小值。

    现在让 T 是 G 的 MST。假设(出于矛盾的目的)T' 是 G 的不同 MST。因为 T 和 T' 不是同一棵树,并且它们都有 |V|–1 条边,在 T 中存在一些不在 T' 中的边 e。从 T 中移除边 e 会导致(创建)G 的一个切割;由于 T 是一棵生成树,删除 e 会将 G 分成两个不相交的顶点集,它们一起包括 G 的所有顶点,这正是割的含义。现在,由于 T 是一个 MST,边 e 必须是该切割上的(唯一)轻边,因此在每个 MST 中。但是通过构造,边 e 不在 T' 中。因此 T' 不是 MST,这与我们最初的假设相矛盾。

    【讨论】:

    • 图中最轻的边保证是某个切口之间最轻的交叉。循环中最轻的边缘不是切口之间最轻的交叉,我们还不知道什么是切口。还要考虑一个反论点:可以在没有循环的情况下构建 MST 吗?仅当循环已经在每个 MST 中时,您的证明才成立。
    猜你喜欢
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    相关资源
    最近更新 更多