• 贪心算法部分知识点


    贪心算法

    概念:简单来说,贪心算法就是贪心,在求解的时候步步贪心,步步求得最优解,直至结束时求得想要的最优解。因此贪心算法起初考虑的并非整体,而是局部的最优解。如果一个问题可以同时用几种方法解决,贪心算法应该是最好的选择之一。
    因为我们使用贪心算法,每次都得到其子问题的最优解,所以这里引入最优子结构的概念:
    当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。问题的最优子结构性质是该问题可用贪心算法或动态规划算法求解的关键特征。
    利用贪心策略解题,需要解决两个问题:
    (1)该题是否适合于用贪心策略求解;
    (2)如何选择贪心标准,以得到问题的最优/较优解。
    贪心算法的基本流程(模型):

    //A是问题的输入集合即候选集合
    Greedy(A)
    {
      S={ };           //初始解集合为空集
      while (not solution(S))  //集合S没有构成问题的一个解
      {
        x = select(A);     //在候选集合A中做贪心选择
        if feasible(S, x)    //判断集合S中加入x后的解是否可行
          S = S+{x};
          A = A-{x};
      }
      return S;
    }
    

    (1)候选集合A:问题的最终解均取自于候选集合A。
    (2)解集合S:解集合S不断扩展,直到构成满足问题的完整解。
    (3)解决函数solution:检查解集合S是否构成问题的完整解。
    (4)选择函数select:贪心策略,这是贪心算法的关键。它指出哪个候选对象最有希望构成问题的解,选择函数通常和目标函数有关。
    (5)可行函数feasible:解集合扩展后是否满足约束条件。

    贪心算法问题应用:
    背包问题,最优装载问题
    删数问题
    多处最优服务次序问题
    Moving tables
    均分纸牌
    整数区间
    看守仓库
    Gone fishing(普通贪心实现)(贪心与优先队列)

    对于例题,将会在下次博客中进行部分介绍。

  • 相关阅读:
    Python sendemail txt,html,图片及附件
    python 3 requests库2个问题
    py37 unitest+html_sendmail
    python 3 unitest批量执行用例
    phthon 3 unittest模块使用
    python 之发送邮件
    ipad已停用 连接itunes怎么办
    Ubuntu 16.04系统挂载4T硬盘
    华硕RT-AC86U路由器 AP模式实现多路由器组网,扩展主路由器的无线网范围
    ubuntu 常用命令
  • 原文地址:https://www.cnblogs.com/study-hard-forever/p/12130039.html
Copyright © 2020-2023  润新知