
算法
changyuanchn
这个作者很懒,什么都没留下…
展开
-
贪婪算法
贪婪算法 0/1背包原创 2016-05-15 16:53:58 · 32024 阅读 · 4 评论 -
动态规划
动态规划是20世纪50年代由Richard Bellman发明的。不像贪婪算法,回溯算法等,单从名字上根本理解不了这是什么鬼。Bellman自己也说了,这个名字完全是为了申请经费搞出来的(囧),所以说这个名字坑了一代又一代的人啊。言归正传,我们来了解下动态规划,dynamic Programming,是一种高效解决问题的方法,使用与具有重复子问题和最优子结构的问题。(又是两个搞不懂的名词啊)。不过没原创 2016-05-15 23:35:14 · 15055 阅读 · 2 评论 -
0/1背包问题之穷举解法
穷举法 0/1背包原创 2016-05-15 16:58:03 · 12376 阅读 · 11 评论 -
动态规划解决0/1背包问题
之前总结了利用穷举法,贪婪法解决0/1背包的方法,同时也通过Fibnacci介绍了动态规划,那么该如何来利用动态规划来解决0/1背包问题呢?首先动态规划有两个条件; 如果可以把局部子问题的解结合起来得到全局最优解,那这个问题就具备最优子结构 如果计算最优解时需要处理很多相同的问题,那么这个问题就具备重复子问题从这两点看,0/1背包问题跟动态规划没有半毛钱的关系啊。那这两者又是怎么联系起原创 2016-05-18 20:12:51 · 18293 阅读 · 12 评论 -
分治算法
分治算法的名字是divide-and-conquer, 从名字上看一目了然,就是先把一个问题divide成为几个子问题,然后分别解决各个子问题。兵法有云:分而治之,各个击破。英文释义divide the problem instance, solve subproblems recursively, combine the results, and thereby conquer the probl原创 2016-05-21 00:15:05 · 4981 阅读 · 1 评论 -
五大常用算法总结
引言据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。虽然不知道为何要将这五个算法归为最常用的算法,但是毫无疑问,这五个算法是有很多应用场景的,最优化问题大多可以利用这些算法解决。算法的本质就是解决问题。当数据量比较小时,其实根本就不需要什么算法,写一些for循环完全就可以很快速的搞定了,但是当数据量比较大,场景比较复杂的时候,编写for循环原创 2016-06-10 23:26:41 · 70648 阅读 · 9 评论