贪心总结

一、基本思想

-->归纳、分析、选择正确合适的贪心策略

在每一个局部阶段,都做一个在当前“看上去”最优的决策,并期望通过每一次所做的局部最优选择产生出一个全局最优解。做出贪心决策的依据称为“贪心策略”。贪心策略一旦做出,就不可再更改。

二、3种证明方法(反证法,构造法,调整法)

1、反证法

用贪心的策略,依次构造出一个解 S1,假设最优解 S2 不同于S1,可以证明是矛盾的,从而得出 S1 就是最优解。(举出反例

eg:n个字符串凑成最大整数

->将 A+B 与 B+A 相比较,如果前者大于后者,则认为 A>B。

2、构造法

根据描述的算法,用贪心的策略依次构造出一个解,可证明一定是合法的解。即用贪心法找可行解。( 举例子

eg:取火柴游戏(博弈论)

->转成二进制后,进行异或。为0则先取必败;为1则先取必胜

3、调整法

用贪心的策略,依次构造出一个解 S1。假设最优解 S2 不同于 S1,找出不同之处,在不破坏最优性的前提下,逐步调整 S2,最终使其变为 S1,从而 S1 也是最优解。( 调整a[i]和a[j]进行比较

eg:排队接水

->把接水时间少的人尽可能排在前面

三、实时调整类贪心

-->每做一步决策都得重新调整决策

eg:桐桐的新闻系统

->将间隔从小到大排序,输出一个(出队)后将它加上间隔再入队

四、贪心的常见模型

  • 货币选择问题

    -->化异为同(先选面值大的,再选小的)

  • 区间调度问题

    -->以结束时间递增排序

  • 部分背包问题

    -->按照单位价值递减排序

  • 区间相关问题

    (1)选择不相交区间:

    数轴上有 n 个开区间。选择尽量多个区间,使得这些区间两两没有公共点。

    -->按照右端点递增排序

    (2)区间选点问题:

    数轴上有 n 个闭区间。取尽量少的点,使得每个区间内都至少有一个点。

    -->按照右端点递增排序&&左端点递减排序

    (3)区间覆盖问题:

    数轴上有 n 个闭区间,选择尽量少的区间覆盖一条指定线段。
    -->按照左端点递增排序

posted @   xishanmeigao  阅读(29)  评论(0编辑  收藏  举报
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示