【发布时间】:2014-10-29 16:48:46
【问题描述】:
我有一个手机信号塔问题。有n个城镇。我们想在一些城镇建造手机信号塔。每个蜂窝塔都可以覆盖它自己和它的邻居。每个城镇都有建造手机信号塔的成本。我们想找出建造覆盖所有城镇的信号塔的最低成本。
例如,
(1)
小镇 1 2 3
COST 5 1 2 我们选择在 town-2 建造手机信号塔。成本为 1。
(2)
小镇 1 2 3 4
COST 5 1 2 3 我们选择在town-2/3 建造手机信号塔。成本是 1+2=3。
(3)
小镇 1 2 3 4
成本 5 1 3 2
我们选择在 2/4 镇建造手机信号塔。成本为 1+2=3。 有没有办法在 O(n) 时间内解决这个问题?我查看了dynamic programming proboem for minimum cost 上的帖子,但我认为给出的答案是 O(n^2)。我考虑过动态编程中的 LIS,但我认为它也会在 O(n^2) 中运行。
【问题讨论】:
-
为什么你认为那里的答案是
O(n^2)? -
@btilly,实际上你是对的,它是 O(n)。有没有办法使用动态编程来表达或转换和编码?
标签: algorithm data-structures dynamic-programming