【发布时间】:2011-06-26 00:21:19
【问题描述】:
这是 Vazirani 的算法书中的一个问题
这个问题的输入是一棵树 T,边上有整数权重。权重可能为负, 零或正数。给出一个线性时间算法来找到 T 中的最短简单路径。 path 是路径中边的权重之和。如果没有重复的顶点,则路径是简单的。笔记 路径的端点不受约束。
提示:这与在树中寻找最大独立集的问题非常相似。
如何在线性时间内解决这个问题?
这是我的算法,但我想知道它是否是线性时间,因为它与深度优先没有什么不同:
- 遍历树(深度优先)
- 保留索引(节点)
- 添加值
- 做 (1) 直到树的尽头
- 比较总和并打印路径和总和
这个问题和topic类似,但是没有确定的答案。
【问题讨论】:
-
Vazirani 近似书?我无法理解问题,树中的每条边都是路径,最小的边是最短路径,你能用这个澄清一下,还是说问题的确切名称太谷歌了?你的意思是找到最短路径树吗?还是树根?
-
@Saeed - 最小的边不一定是最短路径,因为你可以有负权重。
-
空路径怎么样 - 它是最短的,不是吗?您没有对路径应包含的内容提出单一要求。这没有意义。
-
@Tomas 空路径的权重为零。由单个负权重边组成的路径更短。
-
提示说这个问题与在树中寻找最大的独立集有关。对这意味着什么有任何想法?
标签: algorithm graph graph-theory dynamic-programming graph-algorithm