8贪婪算法
Posted csj2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8贪婪算法相关的知识,希望对你有一定的参考价值。
内容:
- 处理不能完成的任务:没有快速算法的问题(NP完全问题)
- 识别NP完全问题,以免浪费时间去寻找解决它们的快速算法
- 学习近似算法,使用它们可快速找到NP完全问题的近似解
- 学习贪婪策略—一种非常简单的问题解决策略
1.教室调度问题
假设有如下课程表,你希望将尽可能多的课程安排在某个教室
课程 | 开始时间 | 结束时间 |
美术 | 9:00 | 10:00 |
英语 | 9:30 | 10:30 |
数学 | 10:00 | 11:00 |
计算机 | 10:30 | 11:30 |
音乐 | 11:00 | 12:00 |
因为时间冲突,因此要选出时间不冲突的课程。
- 1.选出最早结束的课程,它就是要在这件教室上的第一堂课
- 2.选择第一堂课结束后最早开始的课程。
- 3.重复操作,选出符合要求的课程
贪婪算法:每步采取最优的做法。步步最优,全局最优。
虽然贪婪算法并非在任何情况下都有效,但它简单易行(优点)。
2.背包问题
假设一个小偷,背着可装35斤的背包,在商场伺机盗窃各种可装入背包的商品。
- 1.盗窃可装入背包的最贵商品
- 2.再盗窃还可装入背包的最贵物品,重复
音响 3000元 30斤 笔记本电脑 2000元 20磅 吉他 1500元 15斤
背包可装35斤,选择音响,就不能装其他物品,价值3000;选择笔记本和吉他,价值3500。
使用贪婪算法并不能得到最优解,但非常接近。
对于小偷来说,偷到东西的价值差不多就行,没必要追求最大价值。即有些情况下,完美是优秀的敌人。有时只要找到一个能够大致解决问题的算法,那么贪婪算法正好用上。
3.集合覆盖问题
以上是关于8贪婪算法的主要内容,如果未能解决你的问题,请参考以下文章