背包问题--贪心算法C#Demo解析
Posted 天赋吉运科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了背包问题--贪心算法C#Demo解析相关的知识,希望对你有一定的参考价值。
01
概述
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。
个人对贪心算法的理解是:贪心是有条件的,我们也常说贪心策略选择,具有一定的时效性。而通常,基于选择的性质,往往贪心算法会做一个排序。
02
性质
• 最优子结构
当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。运用贪心策略在每一次转化时都取得了最优解。
• 贪心选择
贪心选择是指所求问题的整体最优解,可以通过一系列局部最优的选择;例如背包问题中,我们放物品可以选择按物品价值最大的先放;可以选择按重量最小的物品来放;我们可以选择单位重量的价值最大来访。。。我们从局部最优解,扩展到整体最优解。
03
解题步骤
• 1. 数学模型
• 2. 分解成子问题
• 3. 局部最优
• 4. 局部最优到整体最优
04
贪心VS动态规划
这种算法很相似,传送门:之前自己总结的动态规划的内容,于是将他们比较了一下,同时借助了一下思维导图,如下(大家拍砖斧正):
![背包问题--贪心算法C#Demo解析](https://image.cha138.com/20210425/7fbd85c60b984ddca62d1c710a0b075a.jpg)
05
C# Demo
自己顺了一遍之后,用C#实现了一下贪心算法,路过的小伙伴多提建议,其中进行简单排序的地方,用了一下堆排序,顺便温习一下堆排序时间复杂度:O (nlgn)。我们一起学习,共同进步~
![背包问题--贪心算法C#Demo解析](https://image.cha138.com/20210425/d8520c1248144948b1f7c8fd619d4fb3.jpg)
![背包问题--贪心算法C#Demo解析](https://image.cha138.com/20210425/9e0f8b905e6745109b68a3606777743c.jpg)
![背包问题--贪心算法C#Demo解析](https://image.cha138.com/20210425/36880313f49149f3a17b0dd4d413d47b.jpg)
![背包问题--贪心算法C#Demo解析](https://image.cha138.com/20210425/5f192d6b413d4f8c89f0d0140f966e87.jpg)
运行的结果如下,页面有些丑,这次的侧重点在逻辑上,望见谅~
![背包问题--贪心算法C#Demo解析](https://image.cha138.com/20210425/9a9a5c927434485f88ff45fa2886472f.jpg)
06
感受
算法,很大的程度上锻炼自己的逻辑思考,最近研究算法这方面的感受深刻,严谨的小伙伴,在算法的路上不断精进。
联系我们
没有教不好的学生
只有不会教的老师
大米时代(北京)教育科技有限公司
座机:010-51292788
0316-5552070
手机(微信):15831639058
邮箱:3460307818@qq.com
编辑:十四期 张伟杰
以上是关于背包问题--贪心算法C#Demo解析的主要内容,如果未能解决你的问题,请参考以下文章