base algorithms
happylife1527
这个作者很懒,什么都没留下…
展开
-
背包之01背包、完全背包、多重背包详解
背包之01背包、完全背包、多重背包详解【转载】保护知识产权,转载请注明本文链接:http://www.wutianqi.com/?p=539 背包之01背包、完全背包、多重背包详解 首先说下动态规划,动态规划这东西就和递归一样,只能找局部关系,若想全部列出来,是很难的,比如汉诺塔。你可以说先把除最后一层的其他所有层都移 动到2,再把最转载 2012-09-04 22:43:29 · 296 阅读 · 0 评论 -
组合问题
组合的实现: 1.回溯实现回溯法实现从1~n这n个数中每次取m个数的组合,设置a数组,i从1开始取值,a(1)从1开始到n取值。约定a(1),...,a(i),...,a(m)按升序排列,a(i)后有m-i个大于a(i)的元素,其中最大取值为n,显然a(i)最多取n-m+i,即a(i)回溯的条件是a(i)=n-m+i。当i当a(i)=n-m+i时,i--回溯,直到i=0时结束。转载 2012-09-05 13:43:04 · 304 阅读 · 0 评论 -
贪心算法
贪心算法一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前转载 2012-09-04 22:24:18 · 708 阅读 · 0 评论 -
动态规划解——有向图中的最长路径
动态规划博大精深,想完全掌握是很难的,不过我们可以从一些简单的例子之中去体会她的奥妙。不说废话、先来一个简单的例子吧:longest path in DAGProblem: Given a weighted directed acyclic graph G=(V, E), an vertex v, where each edge is assigned an integer转载 2012-09-05 15:32:00 · 2112 阅读 · 1 评论 -
n皇后详解及代码实现/C++
初衷这个学期开了算法课,要几个关键算法思想的代码实现。当时感觉学的还可以了,也做了认真的笔记。真正写代码的时候发现还是没有完全掌握。网上关于这方面的资料也零零散散不是很全,致使走了不少弯路。今晚上实验成功验收了,感觉自己也收获不小遂决定把算法实现的详细思路记录下来,一是自己坐下总结、另外也希望给当时想我一样找资料、搞算法的同学一些帮助。这中间我会尽最大可能的把问题描述清楚。这篇转载 2012-09-05 15:33:37 · 1605 阅读 · 0 评论 -
回溯思想
http://www.cnblogs.com/huangxincheng/archive/2012/02/08/2342111.html 记得广告中经常听到过,抱着试试看的态度买了3个疗程,效果不错........ 也经常听人说过什么车到山前必有路,船到桥头自然直。哈哈,这种思想就是回溯思想,也可称为试探思想。 一: 思想 有时我们要得到问转载 2012-09-08 21:15:34 · 808 阅读 · 0 评论 -
概率思想
http://www.cnblogs.com/huangxincheng/archive/2012/02/14/2350275.html今天写最后一篇来结束这个系列,我们知道很多算法解决问题的步骤都是固定的,而概率算法每一步的选择都是随机的,当在某些领域问题中通常比最优选择省时,所以就大大提高了算法的效率,降低了复杂度。 一:思想 这里主要讲一下“数值概率算法转载 2012-09-08 21:17:00 · 538 阅读 · 0 评论 -
贪心思想
http://www.cnblogs.com/huangxincheng/archive/2012/01/03/2311383.html 说到“贪”字,很邪恶的一个词,记得和珅和大人拆解过这个字,为”今“和”贝“,而”贝“字分解成”上面的那个XX“和”人“,意思就是说今天你贪了,明天一座监狱就把你套起来,纵观古今,有多少豪杰与"贪“结下了不解之缘,呵呵,扯远了。转载 2012-09-08 21:13:37 · 462 阅读 · 0 评论 -
递归思想
http://www.cnblogs.com/huangxincheng/archive/2011/12/30/2306875.html今天说说递归思想,在我们编码时,有的时候递归能够让我们的算法更加通俗易懂,并且代码量也是大大的减少。比如我先前的系列中说到了关于树的“先序,中序和后序”遍历,那么看看用递归来描叙这个问题是多少的简洁,多么的轻松。 1 #regi转载 2012-09-08 21:12:35 · 556 阅读 · 0 评论 -
分治思想
http://www.cnblogs.com/huangxincheng/archive/2012/02/07/2340797.html由于最近工作比较忙,好长时间都没有更新博客了,今天就分享下分治思想。 一: 思想 有时候我们处理一个复杂的问题,可能此问题求解步骤非常杂,也可能是数据非常多,导致我们当时很难求出或者无法求出,古语有云:步步为营,转载 2012-09-08 21:15:03 · 743 阅读 · 0 评论 -
动态规划
http://www.cnblogs.com/huangxincheng/archive/2012/02/13/2349664.html 今天跟大家分享下算法思想中比较难的一种"动态规划",动态规划给人像是作战时常用的“迂回战术”,或者说是游击战,在运动中寻找突破口。 一: 思想 首先要了解”动态规划“,必须先知道什么叫做”多阶段决策“,百科里面对这个问题解释的转载 2012-09-08 21:16:05 · 437 阅读 · 0 评论 -
递推思想
http://www.cnblogs.com/huangxincheng/archive/2011/12/29/2305525.html 像俺一样奋斗在一线的码农们,一谈到学编程,都是说要学会XX语言就OK了,其实我们理解的有一点点的偏差,因为我们只说到了三分之一,其实真正的编程应该是:编程=数据结构+算法+XX语言。 对的,XX语言只是一个工具而已,就好比我们知转载 2012-09-08 21:11:56 · 1411 阅读 · 1 评论 -
五大常用算法之二:动态规划算法
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能转载 2012-08-22 16:42:53 · 355 阅读 · 0 评论 -
五大常用算法之一:分治算法
分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计转载 2012-08-22 16:40:53 · 661 阅读 · 0 评论 -
回溯法简介
回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。回溯法的基本做法是搜索,或是一种组织得井井有条的、能避免不必要搜索的穷举转载 2012-08-29 22:01:44 · 694 阅读 · 0 评论 -
五大常用算法之五:分支限界法
一、基本描述 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。 (1)分支搜索算法 所谓“分支”就是采用广度优先的策略,依转载 2012-08-22 16:44:32 · 646 阅读 · 0 评论 -
动态规划算法
动态规划算法作者 July 二零一零年十二月三十一日本文参考:微软面试100题系列V0.1版第19、56题、算法导论、维基百科。 ok,咱们先来了解下什么是动态规划算法。 动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。转载 2012-09-03 22:28:02 · 486 阅读 · 0 评论 -
五大常用算法之四:回溯法
1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 许多复杂的转载 2012-08-22 16:43:56 · 623 阅读 · 0 评论 -
【贪心法求解最小生成树之Kruskal算法详细分析】---Greedy Algorithm for MST
初衷:最近在看算法相关的东西,看到贪心法解决mst的问题,可惜树上讲解的不是很清新,到网上找了很多资料讲解的也不透彻只是随便带过就草草了事、这几天抽空看了下,总算基本思路理清楚了主要还是得感谢强大的google,帮我找到一个很好的英文资料。(下面有链接,有兴趣的同学可以看看)理顺了思路,就和大家分享下~希望对学习贪心法的同学会有所帮助。 这篇博客的主要内容是贪心法求解Min转载 2012-09-05 15:30:46 · 1433 阅读 · 0 评论 -
分支限界法分配任务
http://blog.csdn.net/lewutian/article/details/4552122分支限界法分配任务(1)来点技术的。 算法课结束了,不能交手写版作业,电子版的把我写死了,怎么也得贴出来一下。 题目:用分支定界法求解下面问题。需给出搜索树及其中各节点上的部分解和界。将5个任务分配各5个人,1个任务1个人,表中单元格中的数值代表转载 2012-09-05 22:15:47 · 3992 阅读 · 0 评论 -
动态规划解背包问题/
http://www.cnblogs.com/yanlingyin/archive/2011/12/25/knapsackproblem.html前言背包问题是一个经典的算法问题,可以用动态规划,贪心法,分支界限法等方法解决问题描述:有n个物品,编号1,2,3,、、n,其中第 i 个物品重量为Wi 价值 Vi ,有一个容量为W的背包。在容量允许范围内,如何选择物转载 2012-09-05 22:16:24 · 397 阅读 · 0 评论 -
常用算法五(分支限界法)
http://blog.csdn.net/com_stu_zhang/article/details/7233808一、基本描述 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使转载 2012-09-05 22:17:59 · 420 阅读 · 0 评论 -
回溯算法
http://www.cnblogs.com/hustcat/archive/2008/04/09/1144645.htmlhttp://www.cnblogs.com/hustcat/archive/2008/04/13/1151379.html引言 寻找问题的解的一种可靠的方法是首先列出所有候选解,然后依次检查每一个,在检查完所有或部分候选解后,即可找到所需要的解。理论上转载 2012-09-05 22:20:35 · 678 阅读 · 1 评论 -
动态规划那些事
http://www.cnblogs.com/hustcat/archive/2010/05/21/1741228.html动态规划算法是一种经典的算法,它是如此美妙的算法,值得每一个程序员拥有。但是,直到晚上看《算法导论》,才发现自己现在才全面理解它,不禁狂汗。。。以经典的背包问题来展示动态规划算法:代码 1 #include stdio.h> 2转载 2012-09-05 22:21:18 · 289 阅读 · 0 评论 -
背包九讲(转载)
from http://www.oiers.cn/pack/Index.html 第一讲 01背包问题这是最基本的背包问题,每个物品最多只能放一次。第二讲 完全背包问题第二个基本的背包问题模型,每种物品可以放无限多次。第三讲 多重背包问题每种物品有一个固定的次数上限。第四讲 混合三种背包问题将前面三种简单的问题叠加成较复杂的问题。第五讲 二维转载 2012-09-04 22:44:21 · 665 阅读 · 0 评论 -
回溯法
常用算法设计方法——回溯法五、回溯法 回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。当发现当前候选解不可能是解时,就选择下一个候选解;倘若当前候选解除了还不满足问题规模要求外,满足所有其他要求时,继续扩大当前候选解的规模,并继续试探。如果当前候选解满足包括问题规模在内的所有要求时,该候选解就是问题的一个解。在回溯法中,放弃当前候选解转载 2012-08-28 12:55:24 · 406 阅读 · 0 评论 -
贪心算法和动态规划
贪心算法1.贪心选择性质 所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。在动态规划算法中,每步所作的选择往往依赖于相关子问题的解。因而只有在解出相关子问题后,才能作出选择。而在贪心算法中,仅在当前状态下作出最好选择,即局部最优选择。然后再去解作出这个选择后产生转载 2012-09-04 22:25:36 · 756 阅读 · 0 评论 -
枚举思想
http://www.cnblogs.com/huangxincheng/archive/2012/01/07/2315945.html 今天分享一下枚举思想,这种思想也常是码畜,码奴常用的手段,经常遭到码农以上级别的鄙视,枚举思想可以说是在被逼无奈时最后的狂吼。 一: 思想 有时我们解决某个问题时找不到一点规律,此时我们很迷茫,很痛苦,很蛋疼,突然我们转载 2012-09-08 21:14:08 · 507 阅读 · 0 评论