zoukankan      html  css  js  c++  java
  • 算法设计与分析之贪心算法

    1 贪心策略

     模板:为了使***最*,如何做贪心选择

    2 贪心算法正确性证明

    2.1 贪心选择性

     定义:若一个问题的全局优化解可以通过局部优化选择得到,则该问题称为具有贪心选择性

    2.2 优化子结构

     定义:若一个优化问题的优化解包含它的子问题的优化解,则称其具有优化子结构

    2.3 正确性证明

    证明步骤:

    • 证明算法所求解的问题具有贪心选择性
    • 证明算法所求解的问题具有优化子结构
    • 证明算法确实按照贪心选择性进行局部优化选择

    (1)证明算法所求解的问题具有贪心选择性

    证明思路:证明存在一个最优解是以贪心选择开始的(包含贪心选择),常用Exchange Argument方法

    首先写出贪心选择性:设某元素是符合贪心选择的(例如xx最大的,符合贪心选择即可),则一定存在最优解包含该元素。

    a) 定义通过非贪心策略可以得到的一个最优解A,并设其中某个元素为k

    b) 对k的值进行归纳讨论。

    • 若k=贪心选择的下标,则说明贪心选择的元素存在于一个最优解A中;
    • 若k!=贪心选择的下标,将某最优解中的元素用贪心策略会选择的元素交换,说明得到的解A'并不比A差

    c) 存在原问题的最优解包含贪心选择得到的元素(最优解可以通过贪心选择得到)

    (2)证明算法所求解的问题具有优化子结构

    证明思路:证明将一个最优解分解为第一步的贪心选择和一个大小为n-1的解,该解是大小为n-1的子问题的最优解

    假设如果子问题的解不是最优解,将其替换为对应最优解应该可以得到原问题的一个更优的解,这与最初的解是原问题的最优解矛盾,因此最优子结构得证。

    (3)证明算法确实按照贪心选择性进行局部优化选择

    证明思路:证明第一步的贪心选择和大小为n-1的子问题可以合并为一个全局最优解

     

  • 相关阅读:
    有关ASP的过程及函数的定义方法及调用
    ASP留言板(在一页里实现所有功能)
    滚动DataGrid
    效果试验
    自己写的身份证号码15位升18位的函数
    [学习笔记]开始学directx了之一
    改写的一个自动生成图片验证码的类asp.net(vb)
    参加了腾讯通RTX客户交流会
    杨伟帆的个人简历
    全国省市县无刷新多级关联菜单
  • 原文地址:https://www.cnblogs.com/haodingkui/p/13354206.html
Copyright © 2011-2022 走看看