赞
踩
贪心算法是一种求解组合优化问题的算法设计技术,其求解过程由一系列决策构成,
每一步决策仅依赖于某种局部优化的性质。
与动态规划算法不同,贪心算法在做决策时候不必考虑所有子问题的选择结果。
贪心算法适用的条件
问题的求解可以由一系列的决策步骤构成,每步决策依赖于某种局部最优的贪心策略。正确的贪心策略要保证每一步基于局部优化性质的选择最终导致全局的最优解。
如果不具有上述性质,贪心法对某些实例只能得到近似解。
主要设计步骤:
方法一:数学归纳法
主要步骤如下:
(1)叙述一个论证算法正确性的与自然数相关的命题P(n),这里的n可以代表算法步数 或者 实例规模。例如:
对于任何正整数n,贪心法的前n步选择将导致最优解。
对于任何正整数n,贪心法对于规模为n的任何实例都得到最优解。
(2)使用第一或者第二数学归纳法证明上述命题P(n)。
第一数学归纳法:
证:
P(1)为真;
若P(n)为真,则P(n+1)为真。
第二数学归纳法:
证:
P(1)为真;
若对所有k<n,有P(k)为真, 则P(n)为真。
方法二:交换论证法
主要步骤如下:
(1)分析一般最优解与贪心法的解的区别,然后定义一种转换规则,使得从任意一个最优解出发,经过不断对解的某些成分的排列次序进行交换或者用其他元素替换,将这个解最终能够转变成贪心法的解。
(2)证明在上述转换中解得优化函数值不会变坏。
(3)证明上述转换在有限步结束。
使用贪心法一定要证明其正确性!!!
想到贪心法不难,难在证明!需仔细揣摩,消化贪心法的证明方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。