第四次作业

💡解答

  1. 选点问题的贪心策略
    核心策略:按区间的右端点从小到大排序,依次选择每个区间的右端点作为选点,若当前区间已包含已选点则跳过,否则选择该区间的右端点。
    步骤拆解:
    1. 将所有区间按b_i升序排列;
    2. 初始化第一个选点为第一个区间的右端点b_1,计数count=1;
    3. 遍历后续区间,若当前区间的左端点a_i > 已选的最后一个点,则选择该区间的右端点b_i作为新选点,count++;
    4. 遍历结束后,count即为最少选点数量。

  2. 贪心选择性证明
    贪心选择性指:局部最优选择能导致全局最优解,证明如下:
    1. 设最优解为S,第一个选点为x,按策略选的第一个点为b_1(第一个区间的右端点)。
    由于所有区间按b_i排序,b_1是第一个区间的最小右端点,x \geq b_1;
    2. 若x = b_1,则策略的第一个选择与最优解一致;
    若x > b_1,将S中的x替换为b_1,新的点集S'仍能覆盖所有区间(因b_1 \in [a_1, b_1],且后续区间的b_i \geq b_1,原被x覆盖的区间仍会被b_1覆盖),即S'也是最优解;
    3. 以此类推,每一步选择区间右端点的局部最优操作,最终能得到全局最优的选点集合。

  3. 时间复杂度分析
    1. 排序阶段:对n个区间按右端点排序,使用快速排序/归并排序的时间复杂度为O(n\log n);
    2. 遍历阶段:遍历n个区间做判断和选点,时间复杂度为O(n);
    3. 总时间复杂度:O(n\log n) + O(n) = \boldsymbol{O(n\log n)},排序是算法的时间瓶颈。

posted @ 2025-12-28 22:23  681k  阅读(1)  评论(0)    收藏  举报