实验实现
• 1.[编程语言]:实验用Java完成算法设计和程序设计并调试通过。
• 2.[解题思想、方法]
符号说明
表示保存雷达覆盖范围的对象,其中
Radar.Min表示左区间坐标,Radar.Max
表示右区间坐标
算法描述
本雷达覆盖问题采用贪心算法进行实现,贪心策略采用当前安装的雷达能覆
盖更多的小岛,可产生最优覆盖问题的最优解。本问题首先通过小岛的坐标计算
出此小岛需要雷达的有效区间,左右区间的值分别保存在一个Radar对象中,并
且根据Radar对象区间最大值进行升序排列。
首先,据此,问题的第一个贪心选择是第一个Radar对象的区间最大值作为
第一个雷达的建立点,后面考虑下一个区间,如果该区间内雷达为空,则选区间
最右边的端点放雷达,并删掉左端点在雷达前的区间,进入子问题。并且,在每
个区间只能有一个雷达(多了明显不是最优解)。现在要证明此贪心选择一定是在
此覆盖问题的某一最优解中。由于所有的坐标已经按照右区间大小升序排列,下
面可以分两种情况讨论:
1 i
1.Radar . Radar . (2 )Max Min i total£ £ £
,即除了最左边的区间外所有的雷达覆
盖区间都不与第一区间交叉,此时将雷达建在
上必然是在最优解内的。