第四次作业

我的贪心策略:
1.为了尽量减少点的数量,应该让一个点尽可能覆盖更多区间
2.选择区间的右端点是最优策略,因为右端点是当前区间中最靠右、仍能覆盖该区间的点
3.右端点越小,未来可覆盖的区间越多,从整体上减少点的数量
总结.将区间按右端点从小到大排序,依次选择最早结束区间的右端点作为选点,并用它覆盖尽可能多的区间

证明:考虑所有区间中右端点最小的区间,记为[a1,b1],贪心地选择b1,则b1不仅覆盖[a1,b1]而且能覆盖所有左端点<=b1的区间,
删除所有可被b1覆盖的区间后,剩余问题仍与原问题同构,且需要k-1个点,因此问题可分解为更小的同类子问题,满足最优子结构
选择当前右端点最小的区间的右端点,不会影响最终最优性.设p是[a1,b1]中一点,若p<b1,将p替换为b1。b1仍在区间[a1,b1]内可以覆盖该区间,
b1不小于p不会减少未来能覆盖的区间,其余选点保持不变,总点数不变。因此,选择右端点最小的区间的右端点不会影响最优解。

时间复杂度:
排序,O(nlogn)
计数,O(n)
总时间复杂度,O(nlogn)+O(n)=O(nlogn)

对贪心算法的理解:
贪心算法是一种在求解问题时,每一步都做出当前看来最优的选择,从而希望最终得到全局最优解的方法。
局部最优推出全局最优。但只有当问题满足贪心选择性质和最优子结构时,贪心法才能保证得到正确的最优解。

posted @ 2025-12-08 20:20  minato_yukina  阅读(0)  评论(0)    收藏  举报