一、简介

① 贪心算法的基本概念
  • 贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解,它是最自然智慧的算法。
  • 贪心算法用一种局部最功利的标准,总是能做出在当前看来是最好的选择,难点在于证明局部最优解最功利的标准可以得到全局最优解。
  • 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。需要注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性(即某个状态以后的过程不会影响以前的状态,只与当前状态有关)。因此,对所采用的贪心策略一定要仔细分析其是否满足无后效性。
② 贪心算法的算法解释
  • 正例:通过一个例子来解释,假设一个数组中 N 个正数,第一个挑选出来的数乘以 1,第二个挑选出来的数乘以 2,同理,第 N 次挑选出来的数乘以 N,总的加起来是我们的分数,那么怎么挑选数字使我们达到最大分数?
  • 数组按从小到大的顺序排序,按顺序依次挑选,最终结果就是最大的。本质思想是因子随着挑选次数的增加会增大,尽量让大数去结合大的因子。
③ 贪心算法的证明问题
  • 如何证明贪心算法的有效性?一般来说,贪心算法不推荐证明,很多时候证明是非常复杂的。
  • 例如:给定一个由字符串组成的数组 strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中,字典序最小的结果。<

【数据结构与算法】之深入解析“贪心算法“的原理解析和算法实现相关推荐

  1. easy excel date 类型解析报错_ptarchiver原理解析

    pt-archiver原理解析 作为MySQL DBA,可以说应该没有不知道pt-archiver了,作为pt-toolkit套件中的重要成员,往往能够轻松帮助DBA解决数据归档的问题.例如线上一个流 ...

  2. 【算法+OpenCV】基于三次Bezier原理的曲线拟合算法C++与OpenCV实现

    近期,因为要实现经过多个控制点的曲线拟合,研究起了曲线拟合算法.综合搜索到的资料,发现Bezier曲线拟合算法是一种相对较容易实现.且拟合的效果较好的算法.关于Bezier曲线原理,请参照(Bezie ...

  3. 原理解析_SpringBoot自动装配原理解析

    自动装配是Spring Boot的核心部分,也是Spring Boot功能的基础,正是由于自动装配,才将我们从Bean的繁复配置中解脱出来.那么Spring Boot中的自动装配指的是什么?我们继 续 ...

  4. 计算机数学方法记录图像原理,图像处理原理技术与算法

    <图像处理原理技术与算法>是2001年浙江大学出版社出版的图书. 中文名 图像处理原理技术与算法 ISBN: 7308027775 条形码: 9787308027779 尺寸: 25.4 ...

  5. 【优化算法】 简述遗传算法(GA)原理

    [优化算法]简述遗传算法(GA)原理 [优化算法]简述灰狼优化算法(GWO)原理 前言 遗传算法GA(Genetic algorithm)由美国密西根大学 J. Holland 教授于90年代提出来的 ...

  6. 数据结构——马踏棋盘题解(贪心算法)

    本文转自: https://blog.csdn.net/qq_41596568/article/details/83060317 数据结构--马踏棋盘题解(贪心算法) 使用循环建立棋盘与权值棋盘(权值 ...

  7. 数据结构——马踏棋盘题解(贪心算法)(C语言)

    数据结构--马踏棋盘题解(贪心算法) 使用循环建立棋盘与权值棋盘(权值为该位置可走的位置数量) 将当前步数写入棋盘数组中 开始探测下一步该走的位置, 分别测试八个方向 对可走位置进行查询权值,将权值最 ...

  8. 算法系列(二):贪心算法--Huffman编码

    算法系列(二):贪心算法--Huffman编码 一.分析 问题描述: 哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法.其压缩率通常在20%-90%之间.哈夫曼编码算法使用字符在文件中出现的频率 ...

  9. 索引算法原理解析(B-tree以及磁盘存储原理)

    刚开始学习的时候,百度去查,但发现好多说得太复杂不好理解,结合各个文章总结一下(建议大概看文字,不理解不要紧,然后再看图的执行步骤然后在结合文字,这样一切就清晰好多) B-tree,B是balance ...

最新文章

  1. Oracle Hint 之 Parallel
  2. html 中如何写js代码提示错误,javascript怎么进行错误处理?
  3. 超有用的,从此vi变得友好了
  4. GDCM:gdcm::PNMCodec的测试程序
  5. Oracle 11.2.0.2新特性——用户重命名(Rename User)
  6. js事件流、事件代理等
  7. .NET Core Web APi大文件分片上传研究
  8. linux安装mysql5.6
  9. Java8新特性总结 -7.新API和工具
  10. 新版DevEco不用USB线下载程序
  11. php wind8.5,PHPWind Forums下载
  12. wifi连接过程抓包
  13. Elasticsearch入门 - 简单上手
  14. C++11 auto自动类型推导
  15. abap语言去除重复项怎么写
  16. 【毕业设计】深度学习动物识别系统 - python 卷积神经网络 机器视觉
  17. 剑指OFFER 03-11
  18. 软件测试常用文档规范
  19. Linux基本操作4
  20. Windows下使用任务计划程序实现宽带开机自动拨号和断线自动重连

热门文章

  1. 关闭防火墙和selinux
  2. Linux学习笔记02
  3. day4 Python的selenium库
  4. 每周分享第7期(2019.5.18)
  5. 网易严选的wkwebview测试之路
  6. UVa 10642 - Can You Solve It?
  7. [Laravel框架学习一]:Laravel框架的安装以及 Composer的安装
  8. mysql 各表charset不同_MySQL表字段字符集不同导致的索引失效问题
  9. C语言使用找出二维数组所有元素中的最大值,下标
  10. react 合并数组_React 常被忽视的细节。