贪婪算法:
又称"贪心法".从问题的某一个初始解决出发逼近给定的目标,每一步都作一个不可回溯的决策,尽可能地求得最好的解.当达到某算法中的某一步不需要再继续前进时,算法停止.
算法适用的问题:
贪心算法面对问题只考虑当前局部信息就要做出决策,也就是说适用于"局部最优策略能导致产生全局最优".
思考:那么它和动态规划都是求最优解,区别在哪里?
不明白可以看这篇博文:https://blog.csdn.net/suoyudong/article/details/89298229
算法框架:
从某一个初始解出发;
while(能朝给定目标前进一步)
利用可行的策略,求出可行解的一个元素
由所有的可行解元素组成一个可行解.
例子:
数列极差问题:
在黑板上写了n个正整数排成的一个数列,进行如下操作:每次擦去其中的两个数a,b
然后在数列中加入一个数a*b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,
最大的记作max,最小的记作min,则该数列的极差定义为m=max-min
算法分析:
每次要擦去两个数字,如果要得到最终max,我们是不是应该在每次选择的时候要选择最大或者最小的两个数(贪心策略),然后将其相乘+1放入之中.
再分析一下我们应该选取什么样的数据结构,以及这个过程是怎样的?
1)每次选取最大或者最