第四章作业

一、贪心策略

  • 排序:将所有区间按照右端点从小到大排序

  • 选点规则:从前往后遍历已排序的区间,如果当前区间的左端点大于当前已选的点,说明这个点无法覆盖当前区间,就在当前区间的右端点处放置一个新点,更新当前点的位置为当前区间的右端点

  • 贪心选择性质分析

    将区间按右端点排序后,设区间序列为 [l₁, r₁], [l₂, r₂], ..., [lₙ, rₙ](其中 r₁ ≤ r₂ ≤ ... ≤ rₙ)。对于第一个区间 [l₁, r₁],必须选择一个点来覆盖它。选择 r₁是最优的,因为:

    1. 如果选择小于 r₁的点,可能无法覆盖该区间
    2. 如果选择大于 r₁的点,会浪费覆盖能力
    3. r₁是所有区间右端点中最小的,选择它可能覆盖更多后续区间

    选择 r₁ 后,所有包含 r₁ 的区间都已经被覆盖,可以安全地从问题中移除。对剩余区间重复上述过程,每一步都选择剩余区间中最小的右端点。这种选择是局部最优的,并且能构成全局最优解。

    这体现了贪心算法的两个关键特性:贪心选择性质和最优子结构。每一步的选择不依赖于未来选择,且不会影响之前的选择。

二、时间复杂度分析

算法的时间复杂度主要由两部分组成:

  1. 排序阶段:O(n log n)。使用快速排序(或类似算法)对 n 个区间排序。比较函数简单,只需比较右端点值

  2. 遍历操作:时间复杂度为 O(n)。只需一次遍历即可完成所有点的选择,每个区间的处理是常数时间操作

总时间复杂度:O(n log n)。当 n 较大时,排序操作主导了总时间复杂度,遍历操作的时间可以忽略不计

三、对贪心算法的理解

贪心算法的核心思想:在每一步选择中都采取当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法。虽然贪心算法简单有效,但不是万能的。有时候,只顾眼前最优,反而会错过更优的适合全局的办法。

posted @ 2025-12-16 23:00  CxxxxQ  阅读(4)  评论(0)    收藏  举报