贪心算法原理和案例

目录

​编辑

贪心算法简介

什么时候使用贪心算法

贪心算法缺陷

贪心算法应用

贪心算法JAVA代码实现


贪心算法简介

        贪心算法(又称贪婪算法)Greedy Algorithm 是一种不断做出局部最优解的选择,最终期望得到全局最优解的算法。

        简单地说,贪心算法就是在每一步都做出当前最优的选择,以期望能够得到全局最优的解

        贪心算法是一种常用于求解优化问题的算法,在实际应用中,它常被用于求解一些经典问题,如背包问题、最短路径问题、最小生成树问题等。

        其中贪心算法最佳实践为用于压缩数据的霍夫曼编码(Huffman encoding)还有用于寻找图中最短路径的Dijkstra算法

什么时候使用贪心算法

        贪心算法的优点是简单、高效,容易理解和实现。但同时,由于贪心算法是基于局部最优决策的,无法保证全局最优解,所以有一定的局限性。在实践中,贪心算法通常适用于满足以下两个条件的优化问题:

  • 贪心选择性质:通过在每一步中选择最优选项(比如最小值或最大值),可以达到全局(整体)最优解。
  • .最优子结构性质:如果整个问题的最优解包含子问题的最优解,则该问题具有最优子结构。

如果上面两个性质都成立,则可以使用贪心算法来解决问题。

贪心算法缺陷

        由于贪心算法每次只考虑局部最优解,所以它无法保证能够得到全局最优解。在某些情况下,贪心算法会得到次优解甚至无解。比如下面的这一个例子。

        在下面的示例中通过贪心算法寻求找到和最大数值的路径。它通过在每一步选择最大的可用数字来实现这一点。然而,贪心算法无法找到最大的和,因为它只根据每一步所掌握的信息做出决策,而不考虑整体问题。

示例1:

在下面的图中,贪心算法试图找到最大的一个数字。它在算法的每一步中选择最大的数字。我们一眼就可以看出该算法不会得到正确的解决方案。

正确的解决方案是什么?为什么贪婪算法不适合这个问题?

<

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值