我需要设计一种算法来解决以下问题:
考虑平面中的直线L.目标的有限集T位于线L上方,无线传感器的有限集S位于线L下方。当且仅当s和t之间的欧几里德距离最大时,传感器s才能监视目标t一。假设每个传感器s∈S具有正成本c(s)并且每个目标t∈T可以由S中的至少一个传感器监测。考虑S中的传感器的子集S0。如果每个传感器被认为是覆盖T中的目标由S0中的至少一个传感器覆盖。 S0的成本是S0中传感器的总成本。目标是计算最低成本的封面S0。请开发一个多项式时间算法并编写一个程序来实现它。
我真的不知道我可以使用哪种类型的算法(贪婪,动态,分而治之)我不一定要找到答案,而不是提示如何继续。我该如何处理这个问题?
答案 0 :(得分:3)
请看http://www.pressingquestion.com/3830657/Computing-Minimum-Cost-With-Using-Dynamic-Programming。这是一个与你非常相似的问题。这个问题的解决方案表明你的问题是NP-Hard,而不是多项式。但是,如果您稍微更改问题的方式是 行 行,而不是 行,那么您可以使用动态编程解决它的方法。详细信息请参见链接。
如果您的问题没有改变,并且您仍然需要多项式解决方案,那么您可能需要假设传感器以稀疏方式放置。在这种情况下,您可以使用分而治之方法。按行方向对所有传感器进行排序(假设线L是x轴,然后按x坐标对传感器进行排序),然后将它们从中间分开。在划分时,你需要推理那些x坐标非常小心地分开(不超过1)的点。如果有太多的点,算法将不是多项式,这就是需要稀疏假设的原因。