贪婪算法

1.贪婪算法:

每一步都采用当前局部的(这里是重点)最优的做法,最终得到全局最优解;这是一种完美算法,要找到最优的结果

贪婪算法与动态规划的区别:

这两种算法都是选择性算法,就是从一个候选集合中选择适当的元素加入解集合。

  贪心算法的选择策略即贪心选择策略,通过对候选解按照一定的规则进行排序,然后就可以按照这个排好的顺序进行选择了,选择过程中仅需确定当前元素是否要选取,与后面的元素是什么没有关系。

  动态规划的选择策略是试探性的,每一步要试探所有的可行解并将结果保存起来,最后通过回溯的方法确定最优解,其试探策略称为决策过程。

从背包问题看两种算法的区别:

贪婪算法:选择当前最优的选择就是拿最贵的,但这从全局来看不是最优的选择,但这就是贪婪算法

动态规划:从全局考虑选出最优的方案,那总价最贵的及背包最大容量

2.集合覆盖问题:

近似算法(贪婪算法在有些问题上也是近似算法):

是一种大致解决问题的算法,它是以一种简单容易的方式来实现,但它的结果不是最优的,只是接近于最优

3.集合问题的实现代码

主要知识点:

a.集合 set()

b.集合的并集 | (合并)

c.集合的交集 & (重合的相同的)

d.集合的差集 - (从前面的集合里减去跟后面集合中相同的项)

e.实现代码

4.NP完全问题

以难解著称的问题

集合问题及旅行商问题都属于NP完全问题

5.NP完全问题的特点

a.数据少时运算速度快,随着数据的增加,速度变的特别慢

b.涉及所有组合的问题

c.复杂难以解决的问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容