当前位置:
首页 >
08-贪婪算法
发布时间:2023/12/4
52
豆豆
数据结构和算法
基于《算法图解》—Aditya Bhargava 和《数据结构》—严蔚敏
第8章 贪婪算法
贪婪算法的优点: 简单易行,让每一步都选择局部最优解,最终得到的就是全局最优解。
贪婪算法是近似算法:在获得精确解需要的时间太长时,可以使用近似算法。
判断近似算法优劣的标准如下:
- 速度有多块。
- 得到的近似解与最优解的接近程度。
8.1 集合覆盖问题
例如解决经典的集合覆盖问题——选择最优的广播电台:
假设办了个广播节目,要让全美50个州的听众都收听得到。为此,需要决定在哪些广播台播出。在每个广播台播出都需要支付费用,因此,要尽可能少的广播台播出。
8.2 NP完全问题
Non-deterministic Polynomial的问题,即多项式复杂程度的非确定性问题。
判断NP完全问题的方法:
- 元素较少时算法的运行速度非常快,但随着元素数量的增加,速度会变得非常慢。
- 涉及“所有组合”的问题通常是NP完全问题。
- 不能将问题分成小问题,必须考虑各种可能的情况。
- 如果问题涉及序列且难以解决(如旅行商问题中的城市序列)。
- 如果问题涉及集合且难以解决(如广播台集合)。
- 如果问题可转换为集合覆盖问题或者旅行商问题,就肯定是NP问题。
8.3 小结
- 贪婪算法寻找局部最优解,企图以这种方式来获得全局最优解。
- 对于NP完全问题,还没有找到快速解决方案。
- 面临NP完全问题时,最佳的做法是适用近似算法。
- 贪婪算法易于实现、运行速度快,是不错的近似算法。
——持续修改完善中…
创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖总结
- 上一篇: 07-狄克斯特拉算法
- 下一篇: 第1章 绪论