贪心算法简介

目录

一、什么是谈心算法

二、例题

证明找零问题:

三、贪心算法的特点


一、什么是谈心算法

其实是贪心策略,是解决问题的策略,局部最优->全局最优

解释:

1、将解决问题的过程分为若干步

2、解决每一步的时候,都选择当前看起来最优的解法

3、希望得到全局最优解


二、例题

例一:找零问题

用了50块钱买了4块钱的东西,只有20、10、5、1的面额的纸币,要求找的张数最少

这里第一个考虑20块钱,当前最优情况是两张20,还剩6块;再考虑5块钱,当前最优解是一张;

最后是一块钱,当前最优解是一张一块的,完成

例二:最小路径和

九宫格,从左上格子走到右下格子,只能向下或者向右走,每个格子路程为格子里的数

往下走到底,然后只能往右走到头

|---|---|---|
| 1 | 3 | 1 |
| 1 | 5 | 1 |
| 6 | 1 | 1 |

例三:背包问题

体积为V,W代表价值,最大容量固定,每个物品有无限多个,怎样装价值背包最大

(体积小的,价值也低

|-------|----|---|---|
| 总体积:8 | A | B | C |
| V | 5 | 4 | 1 |
| W | 10 | 7 | 1 |

只考虑体积的话,会只装体积小的物品,一直装到不能装;或者考虑价格,先装最贵的,

再装其他装的下的且价值最高的;或者两者以及考虑,用价值/体积作为判断标准(单位体积)

但实际以上找的方法除了例一都是错的

核心就是贪,而且鼠目寸光,只希望当前拥有最优解

证明找零问题:

先证明一个性质------

10元的分为三种情况大于2、等于2、小于2

一定是小于2,因为其他的都可以用数量更少的20代替

因此B <= 1

同理可证的C <= 1,D <= 4

贪心解法:【a, b, c, d】

最优解法:【A, B, C, D】

因为是贪心解法,所以a >= A,但又因为一旦A < a,那么这二十块钱就要有后面更小的面额去补

不复合最优解,因此A = a;

同理可证B = b,C = c

自然而然,d = D

证毕。


三、贪心算法的特点

1、贪心策略的提出

(1)贪心策略的提出是没有标准以及模版的(检验、要求、瞎蒙)

(2)可能每一道题的策略都是不同的

2、贪心策略的正确性

因为有可能贪心策略是一个错误的方法

正确的谈心策略是需要证明的,而证伪只要举反例就可以

常用的证明方法:数学中见过的所有的证明方法

3、学习方向

(1)心理上:遇到不会的贪心题很正常,把心态放平

(2)前期学习的时候,重点放在贪心的策略上,把这个策略当成经验吸收

(3)如何去证明------题目解析、算法原理、写代码