贪心算法入门

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。文章介绍了贪心算法在硬币找零问题中的应用,以及其在压缩算法中的作用,如音频和视频压缩。然而,贪心算法并不适用于所有最优化问题,如旅行推销员问题。尽管如此,贪心算法在特定问题上仍能提供有效解决方案。
摘要由CSDN通过智能技术生成

和大多数计算机科学的术语一样,贪心算法(greedy algorithm)策略被命名得非常地契合。被归类为贪心算法的常见模式是:

在做出选择的时候,算法总是选择目前看起来最好的选择。

贪婪策略通常被用来解决最优化问题。最优化问题通常包含这些短语之一:什么是最好的、什么是最小的或者什么是最大的。

最优化问题的一个例子是:

如果总共有42美分,那么最少有多少个硬币?在美国,你可以选择的硬币有25美分、10美分、5美分、2美分这几个。

这是一个可以用贪婪策略来解决的问题。贪婪策略总会选择能够选的最大的硬币。因此从42美分开始,我们先选一个25美分的硬币,还剩下17美分。现在我们可以选择的最大的硬币是10美分的硬币,于是还有7美分。这个时候可以用的最大硬币是5美分的,以及一个2美分的硬币。

使用贪婪策略的步骤

  • 首先是确定如何把贪婪策略的选择应用于问题。

在我们的硬币例子里,我们决定的贪婪策略是始终用最大的可能的硬币

  • 其次是证明贪婪策略的选择是能够得到最优解的方案

贪心算法的不足

遗憾的是,贪婪策略并不能应用到所有的最优化问题里。考虑这样一个被广泛研究了的问题:旅行推销员问题。给定一组城市之间的直线距离,在总距离最小的情况下,得出访问所有城市的顺序。一个贪婪策略是从你当前的位置选择最近的城市,然后选择距离它最近的城市,以此类推,直到所有的城市都被访问过为止。这个策略并不会在所有的情况下都找到最短路径。

贪心算法应用

  • 贪心算法可以被用来实现压缩算法。
  • 压缩的基本思想是减少数据所需的存储量。
  • 压缩有两类:有损(lossy)压缩和无损(lossless)压缩。

顾名思义,当你用有损压缩的时候,会丢失一些数据,而且再也没法准确地重现原始数据;相应地,无损压缩能够让你在解压缩数据的时候得到完整的原始数据。

不论你有没有意识到压缩数据的存在,你都一定使用过压缩数据。大部分音频格式(比如MP3和AAC)都会使用压缩来减少存储以及播放音频文件所需的数据量。类似地,大部分视频也通过压缩格式来进行存储以及传输。数字电视会用有损压缩格式(通常是MPEG-2压缩格式)进行广播;你也可能听说过其他的一些常见的视频压缩格式,比如MPEG-4以及H.264(它是MPEG-4的一种特殊形式)。对于音频和视频应用来说,因为不需要完整的原始数据,所以有损压缩是可以接受的。在压缩比和音频、视频的质量之间会需要一些权衡。只要压缩版本里包含了足够的数据,当数据解压缩之后,音频和视频对于大多数人来说听起来或看起来依然是“足够好”的。在美国,不同的网络使用不同的压缩比,而且在某些情况下,比如体育运动的快速移动场景里,质量的损失是非常明显的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值