使用动态编程的最低成本

时间:2014-10-29 16:48:47

标签: algorithm data-structures dynamic-programming

我有一个细胞塔问题。有n个城镇。我们想在一些城镇建造手机楼。每个蜂窝塔都可以覆盖自己及其邻居。每个城镇都有建造蜂窝塔的费用。我们想要找出建造蜂窝塔以覆盖所有城镇的最低成本。

例如,

(1)

TOWN 1 2 3

COST 5 1 2我们选择在城镇2建造蜂窝塔。费用是1.

(2)

TOWN 1 2 3 4

COST 5 1 2 3我们选择在城镇2/3建造蜂窝塔。费用是1 + 2 = 3.

(3)

TOWN 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)中运行。

1 个答案:

答案 0 :(得分:2)

是的,有办法在O(n)中解决这个问题。帖子中给出的答案具有线性时间复杂度,因此它正是您所需要的。