Greedy

简介:   在现实世界中,有这样一类问题:它有n个输入,而它的解就由这n个输入的某个子集组成,不过这个子集必须满足某些事先给定的条件。把那些必须满足的条件称为约束条件;而把满足约束条件的子集称为该问题的可行解。

  在现实世界中,有这样一类问题:它有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具体化并付诸实现。

相关文章
|
机器学习/深度学习 自然语言处理 TensorFlow
Next Sentence Prediction,NSP
Next Sentence Prediction(NSP) 是一种用于自然语言处理 (NLP) 的预测技术。
349 2
|
算法 安全 Java
z3-solver求解器
一个非常高级的工具,SMT求解器。应用领域非常广,解各类方程,解各类编程问题(例如解数独),解逻辑题等都不在话下。
|
6月前
|
机器学习/深度学习 缓存 数据可视化
[Linformer]论文实现:Linformer: Self-Attention with Linear Complexity
[Linformer]论文实现:Linformer: Self-Attention with Linear Complexity
109 1
[Linformer]论文实现:Linformer: Self-Attention with Linear Complexity
|
机器学习/深度学习 自然语言处理 算法
逆向最大匹配(Backward Maximum Matching)
逆向最大匹配(Backward Maximum Matching)是一种分词算法。它的工作原理与正向最大匹配相反,即从字符串结尾开始查找。
245 1
|
算法
LeetCode 334. Increasing Triplet Subsequence
给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。 数学表达式如下: 如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1, 使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。
90 0
LeetCode 334. Increasing Triplet Subsequence
|
机器学习/深度学习 安全
Re28:读论文 CECP Charge Prediction by Constitutive Elements Matching of Crimes
Re28:读论文 CECP Charge Prediction by Constitutive Elements Matching of Crimes
Re28:读论文 CECP Charge Prediction by Constitutive Elements Matching of Crimes
Greedy Takahashi——UPC
题目描述 Takahashi has A cookies, and Aoki has B cookies. Takahashi will do the following action K times: ·If Takahashi has one or more cookies, eat one of his cookies. ·Otherwise, if Aoki has one or more cookies, eat one of Aoki’s cookies. ·If they both have no cookies, do nothing.
117 0
|
编译器 C++
C++ Trick:什么时候需要前置声明?
经常有C++开发的小伙伴提问: C++中要使用类A时,什么时候#include "a.h",什么时候用class A前置声明呢?
234 0
【LeetCode】Increasing Triplet Subsequence(334)
  Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.
100 0