• Greedy


      在现实世界中,有这样一类问题:它有n个输入,而它的解就由这n个输入的某个子集组成,不过这个子集必须满足某些事先给定的条件。把那些必须满足的条件称为约束条件;而把满足约束条件的子集称为该问题的可行解。
    问题的简单描述:
    In={n个输入};             显然,满足约束条件的子
    Ina是In的子集;             集可能不止一个,一般来说
    Ina满足约定的条件;           可行解不是唯一的。
    Ina构成问题的解。

       贪心方法是一种改进了的分级处理方法,选择能产生问题最优解的最优量度标准是使用贪心法设计求解的核心问题。但是,要选出最优量度标准并不是一件容易的事,不过,一旦能选择出某个问题的最优量度标准,那么用贪心方法求解这个问题则特别有效。

      贪心方法可以用下面的抽象化控制来描述:

      void Greedy(a[],n) {
    //A(1:n)包含n个输入
    solution = Φ //将解向量solution初始化为空
    for(j=1;j=n;++j) {
    x = Select(a[]);
    if Feasible(solution,x) {solution=union(solution,x);}
    };//for
    return solution;
    }// Greedy

      函数Select的功能是按某种最优量度标准从A(1:n)中选择一个输入,把它的值赋给x并从输入集合A中消去它。Feasible是一个布尔函数,它判定x是否可以包含在解向量中。union将x与解向量结合并修改目标函数。过程Greedy描述了用贪心策略设计算法的主要工作和基本控制路线。一旦给出一个特定的问题,就可将Select,Feasible和 Union具体化并付诸实现。

  • 相关阅读:
    jenkins
    k8s 驱逐限制
    jenkins+k8s 实现持续集成
    镜像更新备份
    【工具分享】2020年4月 phpstorm2020.1 for mac
    【排坑】mac安装homebrew会遇到的各种问题解决方案
    记一次C盘扩容
    2018夏季工作台之再设计
    left join后面加上where条件浅析
    编程随想篇(2018夏)
  • 原文地址:https://www.cnblogs.com/lihuidashen/p/3416961.html
Copyright © 2020-2023  润新知