经典算法之贪心算法 学习笔记

本文深入探讨了贪心算法的基本概念,包括贪心选择性质和最优子结构,并通过活动安排、最优装载、哈夫曼编码、单源最短路径和最小生成树等经典问题阐述其应用。贪心算法与动态规划的区别在于,前者在解决问题时不考虑子问题的解,而是自顶向下地做出局部最优选择。同时,文中提供了相关问题的具体实现代码供参考。
摘要由CSDN通过智能技术生成

经典算法之贪心算法 学习笔记

贪心算法介绍

理解

贪心算法是局部最优的,大多数情况下也是整体最优。

贪心算法通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题

基本要素

1.贪心选择性质

指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。

对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解

2.最优子结构性质

当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。

与动态规划的不同

贪心算法直接做出当前问题中看起来最优的解,而不是考虑到子问题的解。

在动态规划中,往往每一个步骤都求做一个选择,这个选择往往依赖于子问题的解;

​ 是自底向上的;

​ 具有重叠子问题。

在贪心算法中,总是做出当时看来最佳的选择,然后再求解剩下唯一的子问题;

​ 做出选择时可能会依赖于之前的选择或者子问题的解,但绝对不依赖于将来的选择或者子问题的解;

​ 是自顶向下的。

贪心算法应用

  • 活动安排问题

  • 最优装载问题

  • 哈夫曼编码

  • 单源点最短路径(Dijkstra算法)

  • 最小生成树

    Prim算法

    Kruskal算法

  • 多机调度问题

具体实现代码戳蓝色查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值