算法与程序设计(四):贪心算法
目录
一、概念
1.1 贪心算法的基本要素
1.1.1 贪心选择性质
1.1.2 最优子结构性质
1.2 贪心算法与动态规划算法的差异
二、举例
2.1 活动安排问题
2.2 最优装载问题
2.3 哈夫曼编码
一、概念
1.1 贪心算法的基本要素
- 贪心选择性质
- 最优子结构性质
1.1.1 贪心选择性质
1.1.2 最优子结构性质
1.2 贪心算法与动态规划算法的差异
贪心算法:
1.每一步的最优解一定包含上一步的最优解,上一步之前的最优解则不作保留;
2.如果把所有的子问题看成一棵树的话,贪心从根出发,每次向下遍历最优子树即可(通常这个“最优”都是基于当前情况下显而易见的“最优”);这样的话,就不需要知道一个节点的所有子树情况,于是构不成一棵完整的树;
3.根据以上两条可以知道,贪心不能保证求得的最后解是最佳的,一般复杂度低;而动态规划本质是穷举法,可以保证结果是最佳的,复杂度高。
动态规划:
1.全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有的局部最优解;
2.动态规划则自底向上,从叶子向根,构造子问题的解,对每一个子树的根,求出下面每一个叶子的值,最后得到一棵完整的树,并且最终选择其中的最优值作为自身的值,得到答案;
3.针对0-1背包问题:这个问题应比较选择该物品和不选择该物品所导致的最终方案,然后再作出最好选择,由此就导出许多互相重叠的子问题,所以用动态规划。
二、举例
2.1 活动安排问题
2.2 最优装载问题
2.3 哈夫曼编码
算法与程序设计的复习嘻嘻嘻蟹蟹٩('ω')و
算法与程序设计(四):贪心算法相关推荐
- (十四)算法设计思想之“贪心算法”
算法设计思想之"贪心算法" 贪心算法是什么 LeetCode:455.分饼干 LeetCode:122.买卖股票的最佳时机II 思考题 贪心算法是什么 贪心算法是算法设计中的一种方 ...
- 算法系列(二):贪心算法--Huffman编码
算法系列(二):贪心算法--Huffman编码 一.分析 问题描述: 哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法.其压缩率通常在20%-90%之间.哈夫曼编码算法使用字符在文件中出现的频率 ...
- _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 、714.买卖股票的最佳时机含手续费、968.监控二叉树
_32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 .714.买卖股票的最佳时机含手续费.968.监控二叉树 题目列表 738.单调递增的数字 714.买卖股票 ...
- java贪心算法 区间调度_贪心算法-区间调度问题解之证明(示例代码)
一.贪心算法 定义:一个算法是贪心算法,如果它是通过一些小的步骤来一个求解,并且在每一步根据局部情况选择一个决定,使得某些主要的指标得到优化. 二.区间调度问题 1. 问题:我们有一组需求{1,2,3 ...
- _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II
_28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...
- 算法——人的天性贪心算法
相应的练习代码:https://github.com/liuxuan320/Algorithm_Exercises 0. 写在前面 说起贪心算法,可能是我们最为熟悉的算法了.正如我标题所说的,贪心算法 ...
- 《趣学算法》Chapter 2 贪心算法
Chapter 2 贪心算法 2.1 人之初,性本贪 2.2 加勒比海盗船--最优装载问题 2.3 阿里巴巴与四十大盗--背包问题 2.4 高级钟点秘书--会议安排 2.5 一场说走就走的旅行--最短 ...
- c语言单元最短路径贪心算法,单源最短路径 贪心算法
<单源最短路径 贪心算法>由会员分享,可在线阅读,更多相关<单源最短路径 贪心算法(3页珍藏版)>请在人人文库网上搜索. 1.实验三 单源最短路径一.实验目的及要求掌握贪心算法 ...
- c语言贪心算法ppt,c语言(贪心算法).ppt
c语言(贪心算法).ppt ACM程序设计,杭州电子科技大学 刘春英 ,2018/12/23,2,最近几天,,你 了吗,AC,2018/12/23,3,每周一星(9),qfwr,2018/12/23, ...
最新文章
- freebsd command
- C++STL中的unique函数解析
- [ubuntu]dlna平台搭建(在家里,寝室搭建自己的影音平台)
- linux搜狗输入法配置,liunx----配置搜狗输入法
- HugeGraph图数据库获Apache TinkerPop官方认证
- 护肤产生共鸣_通过以人为本的设计编织共鸣的20个指针
- 管道实现父子进程的信息传递(二)【标准流和其文件描述符、fwrite函数、perror函数】
- 编译C/C++为dll供Python调用
- 视频 java 我行我素管理系统 随堂视频
- sbt创建web项目
- 【干货】如何打造高质量的NLP数据集
- php array函数 strpos strstr查找一个字符串是否在另外一个字符串中
- 【Java与智能设备】 CH05_2 Intent启动内置程序
- sql基础语法(增、删、改、查)
- 2020年中国天线行业发展现状及细分市场结构分析[图]
- Pymoo:优化算法收敛性的实例分析
- 天耀18期 -09.数组-排序【作业】.doc
- Aqara首次发布会三大预测 全屋智能生活体验再次升级
- mac安装svn的两种方式(使用brew安装svn 和 可视化工具SnailsvnLite)
- IEEE-754标准
热门文章
- mysql内存机制_浅析Oracle 的体系架构及内存分配机制
- sql 聚合函数对 null 的处理
- IntentService总结
- Go 广度优先遍历 多叉树
- Mac osx安装Django
- php pos机刷卡,一清POS机不能刷卡的这些原因你知道几个?
- WebMagic使用--爬取cnki会议
- 在下列HTML中那也可以产生超链接,html+css+js完整版面试题(选择,简答,程序题)
- SQL Server安装登录过程中配置管理器无法创建管理单元的解决方法
- 华为5G模块MH5000_AT命令手册