算法第四次作业
1.关于选点问题的贪心策略,就是按右端点大小将区间排序后从第一个小的开始选右端点,之后若端点在区间就找下一个区间,端点不在那个区间就把那个区间右端点选上以此类推直至最后一个区间。
2.关于算法是否满足贪心选择性质,用反证法可证,前提:把区间按右端点升序排好,第一个区间是(I_1),右端点是(b_1);OPT是选点最少的最优解。假设:最优解OPT里没有(b_1)这个点。矛盾点:既然OPT是最优解,肯定有一个点x能覆盖(I_1),所以x一定在(I_1)的范围里,也就是(x ≤ b_1)。而排好序后,后面的区间右端点都≥(b_1),如果把OPT里的x换成(b_1),新的点集依然能覆盖所有区间,且选点数量不变,还是最优解。结论:假设不成立,(b_1)一定是某个最优解的一部分。
3.关于算法时间复杂度分析,在排序期间,对n个区间进行排序,使用 C++ 的sort函数(底层为快速排序,平均时间复杂度为O(n log n))。排序的比较函数是常数时间O(1),因此排序的总时间复杂度为O(n log n)。在遍历阶段,遍历n个区间,每个区间的处理是常数时间O(1)(判断pos是否在区间内、更新pos和cnt),因此遍历的时间复杂度为O(n)。总时间复杂度为O(n log n) + O(n) = O(n log n)。
4.对于贪心算法的理解,其核心思想是在每一步决策中,选择当前看起来最优的选项(局部最优),并希望通过一系列局部最优选择得到全局最优解。与动态规划(考虑所有子问题的解)和回溯法(穷举所有可能)不同,贪心算法的决策是不可逆的,一旦做出选择,就不再回溯。优点是时间复杂度通常较低,效率远高于动态规划和回溯法,且代码实现简洁,逻辑清晰。缺点是贪心策略的正确性需要严格证明,并非所有问题都满足贪心选择性质,若贪心策略选择不当,可能得到局部最优但全局次优的解。

浙公网安备 33010602011771号