本文概述
- 例
- 实现贪婪算法的步骤是
【贪婪算法介绍】在这种方法中, 我们必须从许多现有方法中找出最佳方法/选项。
在这种方法/方法中, 我们专注于第一阶段并确定输出, 而不考虑未来。
此方法可能会或可能不会提供最佳输出。
贪婪算法通过做出在特定时刻看起来最好的最佳选择来解决问题。可以使用贪婪算法确定许多优化问题。某些问题没有有效的解决方案, 但是贪婪算法可能会提供接近最佳的解决方案。如果问题具有以下两个属性, 则贪心算法将起作用:
- 贪婪选择属性:通过创建局部最优解可以达到全局最优解。换句话说, 可以通过创建“贪婪”选择来获得最佳解决方案。
- 最优子结构:最优解包含最优子解。换句话说, 最优解子问题的答案是最优的。
- 机器调度
- 小背包问题
- 最小生成树
- 霍夫曼密码
- 作业排序
- 活动选择问题
- 可行:这里我们检查它是否满足所有可能的约束条件, 以获得至少一种解决我们问题的方法。
- 局部最优选择:在这种情况下, 选择应该是从当前可用的最优选择
- 不可更改:一旦做出决定, 在任何后续步骤中, 该选项都不会更改。
推荐阅读
- 生成总和等于给定值的最小硬币组合
- 算法设计(找零钱问题介绍和详细解决方案|DP-7)
- Kruskal的最小生成树算法|贪婪算法2
- 算法题(如何解决分数背包问题(代码实现))
- Dijkstra算法(邻接表表示的算法实现|贪婪算法S8)