【问题标题】:Add new edge to graph and find new spanning tree in O(n)向图形添加新边并在 O(n) 中找到新的生成树
【发布时间】:2011-01-26 20:06:44
【问题描述】:

假设给定图 G 的最小生成树 T(n 顶点和 m 条边)和一条权重为 w 的新边 e = (u, v),我们将添加到 G 中。 给出一个有效的算法来找到图 G + e 的最小生成树。 您的算法应该在 O(n) 时间内运行才能获得全部信用。

(c) 来自 Skiena 手册

从 u 或 v 开始 Prim 或 Kruskal alg 直到我们到达给定生成树路径的片段?似乎新的生成树不会从一个新边缘发生太大变化。

【问题讨论】:

  • 既然这是一道家庭作业题,你能更具体地解释一下你需要帮助吗?这是一个很大的问题,但我们不只是要给你答案。

标签: algorithm graph-theory


【解决方案1】:

确定G中新边的端点之间的路径。如果该路径中的最大长度边大于新边的长度,则将其替换为新边。这在 O(N) 时间内运行。

来源:Trail Maintenance IOI 2003

【讨论】:

  • 非家庭作业问题的完美答案。但这是一个家庭作业问题,所以 -1。
  • @j_random_hacker - 有些人很想知道你为什么投反对票:见this question on Meta。为了更好地回答家庭作业问题,marcog 应该说些什么?
  • 哇!没想到会引起这么大的争议。感谢@ChrisW 的指点。我将尝试解释我对 Meta 问题的立场(我认为这是 Meta 问题的一个很好的例子,顺便说一句)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
相关资源
最近更新 更多