使用贪婪算法最小化

问题描述 投票:0回答:1

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

我该如何解决这个问题?

algorithm greedy minimization
1个回答
0
投票

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

创建最初包含所有房屋的房屋清单(我们称之为“NeedToCover”)。

现在浏览每个位置的列表,确定哪个位置的列表涵盖了“NeedToCover”列表中的大多数房屋。这将是您建立设施的位置。

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

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

(这种算法很贪婪,因为每次你选择覆盖其余房屋中大多数房屋的位置“而不考虑未来。”)

© www.soinside.com 2019 - 2024. All rights reserved.