使用贪婪算法最小化

时间:2015-10-18 07:14:16

标签: algorithm greedy minimization

有一个问题,就是有一个房子a1,......在一条直线上。您希望建造设施,使每个房屋距离设施最多X。有p个位置b1,... bp可以建造设施。 我试图找出一个贪婪的算法来确定可以构建的最小设施数量。

我将如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

对于每个位置(B1,...,Bp),创建一个列表,其中包含距离该位置X距离之内的房屋。

创建最初包含所有房屋的房屋列表(此列表称为“ NeedToCover”)。

现在,遍历每个位置的列表,并确定哪个位置的列表涵盖“ NeedToCover”列表中最多的房屋。这将是您建造设施的位置。

建造设施后,移走“ NeedToCover”中您刚刚选择的位置覆盖的所有房屋。

对“ NeedToCover”中的剩余房屋和其余位置重复上述步骤,直到“ NeedToCover”为空,这意味着所有房屋均距设施X距离之内。

(此算法很贪婪,因为每次您在“不考虑未来”的情况下,从其余房屋中选择覆盖最多房屋的位置。)