贪心算法概念

前言

一种在问题求解过程中总是做出当前看来最优选择的策略。这个"最优选择"是在某个特定意义上的局部最优解,而不是全局最优解。

贪心算法并非对所有问题都能得到整体最优解,其关键在于贪心策略的选择。所选取的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

核心要素:

贪心选择

是指通过一系列局部最优的选择,达到问题的整体最优解。这是贪心算法可行的第一个基本要素,也是它与动态规划算法的主要区别。贪心选择采用从顶向下、以迭代的方式做出相继选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题。

要确定一个具体问题是否具有贪心选择的性质

我们必须证明每一步所作的贪心选择最终能得到问题的最优解。通常可以首先证明问题的一个整体最优解是从贪心选择开始的,而且作了贪心选择后,原问题简化为一个规模更小的类似子问题。然后,用数学归纳法证明,通过每一步贪心选择,最终可得到问题的一个整体最优解。

最优子结构

是指一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。
运用贪心策略在每一次转化时都取得了最优解。
问题的最优子结构性质是该问题可用贪心算法或动态规划的重要条件之一。

相关推荐
张李浩2 小时前
Leetcode 054螺旋矩阵 采用方向数组解决
算法·leetcode·矩阵
big_rabbit05023 小时前
[算法][力扣101]对称二叉树
数据结构·算法·leetcode
美好的事情能不能发生在我身上3 小时前
Hot100中的:贪心专题
java·数据结构·算法
2301_821700533 小时前
C++编译期多态实现
开发语言·c++·算法
xixihaha13244 小时前
C++与FPGA协同设计
开发语言·c++·算法
小小怪7504 小时前
C++中的函数式编程
开发语言·c++·算法
xixixiLucky4 小时前
编程入门算法题---小明爬楼梯求爬n层台阶一共多少种方法
算法
剑锋所指,所向披靡!4 小时前
数据结构之线性表
数据结构·算法
m0_672703316 小时前
上机练习第49天
数据结构·算法
样例过了就是过了6 小时前
LeetCode热题100 N 皇后
数据结构·c++·算法·leetcode·dfs·深度优先遍历