算法与程序设计:贪心算法

Posted Abro.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法与程序设计:贪心算法相关的知识,希望对你有一定的参考价值。

目录

一、概念

1.1 贪心算法的基本要素

1.1.1 贪心选择性质

1.1.2 最优子结构性质

1.2 贪心算法与动态规划算法的差异

二、举例

2.1 活动安排问题

2.2 最优装载问题

2.3 哈夫曼编码


一、概念


1.1 贪心算法的基本要素

  1. 贪心选择性质
  2. 最优子结构性质

1.1.1 贪心选择性质

1.1.2 最优子结构性质


1.2 贪心算法与动态规划算法的差异

贪心算法:

1.每一步的最优解一定包含上一步的最优解,上一步之前的最优解则不作保留;

2.如果把所有的子问题看成一棵树的话,贪心从根出发,每次向下遍历最优子树即可(通常这个“最优”都是基于当前情况下显而易见的“最优”);这样的话,就不需要知道一个节点的所有子树情况,于是构不成一棵完整的树;

3.根据以上两条可以知道,贪心不能保证求得的最后解是最佳的,一般复杂度低;而动态规划本质是穷举法,可以保证结果是最佳的,复杂度高。

动态规划:

1.全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有的局部最优解;

2.动态规划则自底向上,从叶子向根,构造子问题的解,对每一个子树的根,求出下面每一个叶子的值,最后得到一棵完整的树,并且最终选择其中的最优值作为自身的值,得到答案;

3.针对0-1背包问题:这个问题应比较选择该物品和不选择该物品所导致的最终方案,然后再作出最好选择,由此就导出许多互相重叠的子问题,所以用动态规划。


 


二、举例

2.1 活动安排问题


2.2 最优装载问题


2.3 哈夫曼编码


算法与程序设计的复习嘻嘻嘻蟹蟹٩('ω')و 

以上是关于算法与程序设计:贪心算法的主要内容,如果未能解决你的问题,请参考以下文章

算法设计与分析贪心算法--活动安排问题

算法设计与分析报告

算法讲解之贪心算法1

算法设计与分析(锐格之贪心算法)

程序员算法基础——贪心算法

见闻广博|贪心算法小入门