贪心算法及其理论依据——拟阵

  贪心算法主要采用局部最优的解决问题的策略,但是在很多时候都不能达到全局最优的效果,那么什么时候使用贪心算法能够得到全局最优呢?就此引出拟阵的概念。

贪心算法的一般步骤

  • 确定待解问题的最优子结构
  • 设计递归求解方式
  • 证明在递归的任一阶段,最优选择之一总是贪心的(那么贪心选择是最适合的)
  • 证明通过做贪心选择,所有的子问题都为空(除一个以外)
  • 设计实现贪心策略的递归算法
  • 将设计好的递归算法转换成迭代算法

贪心选择  

  贪心算法中,我们所做的总是当前看似最佳的选择,然后在解决经过贪心选择之后所出现的子问题。其作出的当前的选择可能要依赖于已经做出的所有选择,但不依赖于未做出的选择或子问题的解。贪心算法采取的贪婪策略往往是自顶向下的。核心所在就是要证明每一步所做的贪心选择最终能产生一个全局最优解

最优子结构

  对于一个问题,如果它的一个最优解包含了其子问题的最优解,则称该问题具有最优子结构(最优子结构的证明采用部分替换法)。

设计贪心算法的一般步骤

  • 将优化问题转化为:先做出选择,再解决剩下的一个子问题
  • 证明原问题总是有一个最优解是做贪心选择而得到的,从而证明贪心选择的安全性与鲁棒性
  • 说明做出贪心选择之后,剩余的子问题具有一个性质:如果将子问题的最优解和所做的贪心选择联合,可以得到原问题的一个最优解

拟阵

  拟阵理论是组合优化的一个分支。拟阵理论并不是因为贪心算法而引入,但是却是贪心算法的强力辅助。拟阵理论不能完全覆盖所有的贪心算法(如赫夫曼编码问题),但它可以覆盖大多数具有实际意义的情况。

  在问题模型满足拟阵结构的情况下,贪心策略总是能够得到最优解。

拟阵的概念

定义1:子集系统的优化问题

  

定义2:拟阵

贪心算法

定义4:拟阵的权函数

 

定义5:拟阵的最大权独立集问题

拟阵的性质

定义3:独立子集

 

定理1

定理2

定理3

贪心算法

猜你喜欢

转载自www.cnblogs.com/zhangzefei/p/9749735.html