【发布时间】: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 之一是个问题。