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