【数据结构与算法】之深入解析“贪心算法“的原理解析和算法实现
一、简介
① 贪心算法的基本概念
- 贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解,它是最自然智慧的算法。
- 贪心算法用一种局部最功利的标准,总是能做出在当前看来是最好的选择,难点在于证明局部最优解最功利的标准可以得到全局最优解。
- 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。需要注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性(即某个状态以后的过程不会影响以前的状态,只与当前状态有关)。因此,对所采用的贪心策略一定要仔细分析其是否满足无后效性。
② 贪心算法的算法解释
- 正例:通过一个例子来解释,假设一个数组中 N 个正数,第一个挑选出来的数乘以 1,第二个挑选出来的数乘以 2,同理,第 N 次挑选出来的数乘以 N,总的加起来是我们的分数,那么怎么挑选数字使我们达到最大分数?
- 数组按从小到大的顺序排序,按顺序依次挑选,最终结果就是最大的。本质思想是因子随着挑选次数的增加会增大,尽量让大数去结合大的因子。
③ 贪心算法的证明问题
- 如何证明贪心算法的有效性?一般来说,贪心算法不推荐证明,很多时候证明是非常复杂的。
- 例如:给定一个由字符串组成的数组 strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中,字典序最小的结果。<
【数据结构与算法】之深入解析“贪心算法“的原理解析和算法实现相关推荐
- easy excel date 类型解析报错_ptarchiver原理解析
pt-archiver原理解析 作为MySQL DBA,可以说应该没有不知道pt-archiver了,作为pt-toolkit套件中的重要成员,往往能够轻松帮助DBA解决数据归档的问题.例如线上一个流 ...
- 【算法+OpenCV】基于三次Bezier原理的曲线拟合算法C++与OpenCV实现
近期,因为要实现经过多个控制点的曲线拟合,研究起了曲线拟合算法.综合搜索到的资料,发现Bezier曲线拟合算法是一种相对较容易实现.且拟合的效果较好的算法.关于Bezier曲线原理,请参照(Bezie ...
- 原理解析_SpringBoot自动装配原理解析
自动装配是Spring Boot的核心部分,也是Spring Boot功能的基础,正是由于自动装配,才将我们从Bean的繁复配置中解脱出来.那么Spring Boot中的自动装配指的是什么?我们继 续 ...
- 计算机数学方法记录图像原理,图像处理原理技术与算法
<图像处理原理技术与算法>是2001年浙江大学出版社出版的图书. 中文名 图像处理原理技术与算法 ISBN: 7308027775 条形码: 9787308027779 尺寸: 25.4 ...
- 【优化算法】 简述遗传算法(GA)原理
[优化算法]简述遗传算法(GA)原理 [优化算法]简述灰狼优化算法(GWO)原理 前言 遗传算法GA(Genetic algorithm)由美国密西根大学 J. Holland 教授于90年代提出来的 ...
- 数据结构——马踏棋盘题解(贪心算法)
本文转自: https://blog.csdn.net/qq_41596568/article/details/83060317 数据结构--马踏棋盘题解(贪心算法) 使用循环建立棋盘与权值棋盘(权值 ...
- 数据结构——马踏棋盘题解(贪心算法)(C语言)
数据结构--马踏棋盘题解(贪心算法) 使用循环建立棋盘与权值棋盘(权值为该位置可走的位置数量) 将当前步数写入棋盘数组中 开始探测下一步该走的位置, 分别测试八个方向 对可走位置进行查询权值,将权值最 ...
- 算法系列(二):贪心算法--Huffman编码
算法系列(二):贪心算法--Huffman编码 一.分析 问题描述: 哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法.其压缩率通常在20%-90%之间.哈夫曼编码算法使用字符在文件中出现的频率 ...
- 索引算法原理解析(B-tree以及磁盘存储原理)
刚开始学习的时候,百度去查,但发现好多说得太复杂不好理解,结合各个文章总结一下(建议大概看文字,不理解不要紧,然后再看图的执行步骤然后在结合文字,这样一切就清晰好多) B-tree,B是balance ...
最新文章
- Oracle Hint 之 Parallel
- html 中如何写js代码提示错误,javascript怎么进行错误处理?
- 超有用的,从此vi变得友好了
- GDCM:gdcm::PNMCodec的测试程序
- Oracle 11.2.0.2新特性——用户重命名(Rename User)
- js事件流、事件代理等
- .NET Core Web APi大文件分片上传研究
- linux安装mysql5.6
- Java8新特性总结 -7.新API和工具
- 新版DevEco不用USB线下载程序
- php wind8.5,PHPWind Forums下载
- wifi连接过程抓包
- Elasticsearch入门 - 简单上手
- C++11 auto自动类型推导
- abap语言去除重复项怎么写
- 【毕业设计】深度学习动物识别系统 - python 卷积神经网络 机器视觉
- 剑指OFFER 03-11
- 软件测试常用文档规范
- Linux基本操作4
- Windows下使用任务计划程序实现宽带开机自动拨号和断线自动重连
热门文章
- 关闭防火墙和selinux
- Linux学习笔记02
- day4 Python的selenium库
- 每周分享第7期(2019.5.18)
- 网易严选的wkwebview测试之路
- UVa 10642 - Can You Solve It?
- [Laravel框架学习一]:Laravel框架的安装以及 Composer的安装
- mysql 各表charset不同_MySQL表字段字符集不同导致的索引失效问题
- C语言使用找出二维数组所有元素中的最大值,下标
- react 合并数组_React 常被忽视的细节。