算法第四章作业

一、选点问题
贪心策略:按区间右端点升序排序,每次选择当前没有被覆盖的区间中最小的右端点作为选点。
具体步骤:
将所有区间按右端点 bi 从小到大排序,初始化计数器和上一个选点位置:count = 1(至少需要一个点),last_point = 第一个区间的右端点
遍历后续每个区间:如果当前区间的左端点 ai > last_point,新增一个点,count++,更新 last_point = 当前区间的右端点 bi
贪心选择性质证明:
1.最优子结构:
设原问题的最优解包含 k 个点,去掉第一个区间和第一个选点后,剩余区间的最优解为 k-1 个点,子问题具有最优解性质。
2.贪心选择性质:
设所有区间按右端点排序后为 I1, I2, ..., In,选择 I1 的右端点 P = b1 作为第一个点
证明这个选择是最优的:
P 覆盖所有左端点 ≤ b1 的区间
假设存在另一个点 Q < b1,Q 可能无法覆盖 I1(因为 I1 的左端点可能 > Q)
即使 Q 能覆盖 I1,它覆盖的区间不会比 P 更多(因为 P 是最右的覆盖点)
假设存在另一个点 R > b1,R 肯定能覆盖 I1(因为 I1 的右端点是 b1,而 R > b1),但 R 可能比 P 更晚出现,使得后续需要更多点,因此选择最小的右端点是最优的
时间复杂度:O(nlogn)

二、对贪心算法的理解
贪心算法是一种在每一步选择中都采取当前状态下最优(最有利)的选择,从而希望导致结果是全局最优的算法策略。
贪心算法的适用条件:
贪心选择性质:可以通过局部最优选择构造全局最优解
最优子结构:问题的最优解包含其子问题的最优解

posted @ 2025-12-20 20:11  杨月涵  阅读(0)  评论(0)    收藏  举报