算法读书笔记-3

简介: 算法读书笔记-3

贪心算法

一个贪心算法总是做出当前最好的选择,也就是说,它期望通过局部最优选择得到全局最优的解决方案。

——《算法导论》

贪心算法正是“活在当下,看清楚眼前”的办法。贪心算法从问题的初始解开始,一步一步地做出当前最好的选择,逐步逼近问题的目标,从而尽可能地得到最优解,即使达不到最优解,也可以得到最优解的近似解。

对于贪心算法,需要注意以下几个问题。
(1)一旦做出选择,就不可以回溯。
(2)有可能得不到最优解,而是得到最优解的近似解。
(3)选择什么样的贪心策略直接决定算法的好坏。

1.性质

1.1贪心选择

贪心选择是指原问题的整体最优解可以通过一系列局部最优的选择得到:先做出当前最优的选择,将原问题变为一个相似却规模更小的子问题,而后的每一步都是当前最优的选择。这种选择依赖于已做出的选择,但不依赖于未做出的选择。

1.2 最优子结构

最优子结构是指原问题的最优解包含子问题的最优解。贪心算法通过一系列的局部最优解(子问题的最优解)得到全局最优解(原问题的最优解),如果原问题的最优解和子问题的最优解没有关系,则求解子问题没有任何意义,无法采用贪心算法。例如,对于原问题S={a1,a2,…,ai,…, an},可以在通过贪心选择得到一个当前最优解(ai}之后,转换为求解子问题S-{ai},继续求解该子问题,最后对所有子问题的最优解进行合并,即可得到原问题的最优解。

2.最优装载问题

2.1 问题描述

海盗们截获一艘装满各种各样古董的货船,每一件古董都价值连城,但一旦打碎就会失去其原有的价值。海盗船虽然足够大,但载重量是有限的。海盗船的载重量为W,每件古董的重量为wi,如何才能把尽可能多的古董装上海盗船呢?

2.2思路分析

问题要求装载的古董尽可能多,在载重量有限的情况下,优先把重量小的古董装进去,装的古董最多。可以采用重量最小者先装的贪心策略,从局部最优达到全局最优,从而得到最优装载问题的最优解。

2.3算法设计

贪心策略是重量最小的古董先装,每次从余下的古董中选择一个重量最小的古董。如果采用顺序查找法寻找最小值,则n个元素最多需要比较n次。第1次选择时有n个古董,需要比较n次;第2次选择时有n-1个古董,需要比较n-1次;.;第n次选择时需要比较1次,总共需要比较n(n+1)/2次,时间复杂度为O(n2)。如果采用快速排序法寻找最小值,也就是先从小到大排序,再按顺序选择,则时间复杂度为O(nlogn),相比顺序查找法更优。在序列没有变化(静态)的情况下,如果需要多次从序列中选择最小值或最大值,那么可以采用先排序的办法,这样效果更好。
(1)把n个古董的重量从小到大(非递减)排序。
(2)根据贪心策略选择装入的古董,直到不能继续装为止,此时达到最优。

** 如果还行继续了解更多的算法题目** 可通过下面的活动链接查看耿多


相关文章
|
机器学习/深度学习 算法 程序员
|
自然语言处理 算法
|
存储 缓存 安全
《深入理解Java虚拟机》读书笔记(六)--HotSpot的算法细节实现
《深入理解Java虚拟机》读书笔记(六)--HotSpot的算法细节实现
197 0
《深入理解Java虚拟机》读书笔记(六)--HotSpot的算法细节实现
|
人工智能 算法 定位技术
啊哈 算法读书笔记 第三章 很暴力的枚举
算法读书笔记 第三章 很暴力的枚举
64 0
|
存储 人工智能 算法
啊哈 算法读书笔记 第 2 章 栈、队列、链表
首先将第 1 个数删除,紧接着将第 2 个数放到这串数的末尾,再将第 3 个数删除并将第 4 个数放到这串数的末尾,再将第 5 个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是小哈的 号码 啦。现在你来帮帮小哼吧。小哈给小哼加密过的一串数是“ 6 3 1 7 5 8 9 2 4 ”。
73 0
|
机器学习/深度学习 存储 人工智能
啊哈 算法读书笔记 第 1 章 一大波数正在靠近——排序
首先出场的是我们的主人公小哼,上面这个可爱的娃就是啦。期末考试完了老师要将同 学们的分数按照从高到低排序。小哼的班上只有 5 个同学,这 5 个同学分别考了 5 分、 3 分、 5 分、 2 分和 8 分,哎考得真是惨不忍睹(满分是 10 分)。接下来将分数进行从大到小排序, 排序后是 8 5 5 3 2 。你有没有什么好方法编写一段程序,让计算机随机读入 5 个数然后将这 5 个数从大到小输出?
75 0
|
存储 自然语言处理 算法
【趣学算法】第一章读书笔记
宕机就是死机,指计算机无法正常工作,包括一切原因导致的死机。计算机主机出现意外故障而死机,一些服务器死锁,服务器的某些服务停止运行等,都可以称为宕机。
|
机器学习/深度学习 存储 算法
《大话数据结构》读书笔记——第2章 算法
《大话数据结构》读书笔记——第2章 算法
72 0
《大话数据结构》读书笔记——第2章 算法