一、贪心算法
如果找出局部最优解并可以推出全局最优解,就是贪心。
如果有四种硬币:二角五分、一角、五分、一分
现在要找给某顾客六角三分钱,哪种找钱方法拿出的硬币个数最少呢?
如果要找的是4角呢?
二、概念
所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择
。也就是说,
不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。
贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪
心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状
态以后的过程不会影响以前的状态,只与当前状态有关。
所以对所采用的贪心策略一定要仔细分析其是否满足无后效性。
三、介绍
一、基本思路
1.建立数学模型来描述问题。
2.把求解的问题分成若干个子问题。
3.对每一子问题求解,得到子问题的局部最优解。
4.把子问题的解局部最优解合成原来解问题的一个解。
二、适用问题
贪心策略适用的前提是:
局部最优策略能导致产生全局最优解
。
三、实现框架
从问题的某一初始解出发;
while (能朝给定总目标前进一步){
利用可行的决策,求出可行解的一个解元素;
}
由所有解元素组合成问题的一个可行解;
四、贪心策略的选择
因为用贪心算法只能通过
解局部最优解
的策略来达到全局最优解,因此,一定要注意断
问题是否适合采用贪心算法策略,找到的解是否一定是问题的最优解。