算法设计与分析
峰中劲草
这个作者很懒,什么都没留下…
展开
-
用优先队列式分支限界法解决0-1背包问题
用优先队列式分支限界法解决0-1背包问题的算法思想:1.分支限界法常以广度优先或最小耗费优先(最大效益优先)方式搜索问题的解空间树, 对于0-1背包问题的解空间树是一个颗子集树。2.在分支限界法中有一个活结点表,活结点表中的每个活结点只有一次机会成为扩展结点,一旦成为 扩展结点就一次性产生所有儿子结点,在这些儿子结点中,导致不可行解或导致非最优解的儿子 结点被舍弃,其余儿子结点被加入到活原创 2016-04-26 20:28:23 · 34449 阅读 · 3 评论 -
用回溯法解决0-1背包问题
用回溯法解决0-1背包问题需要解决一下问题:1.如何动态生成子集树2.如何设计子集树中的结点类型3.如何设计两个剪枝函数:约束函数和限界函数4.如何保存一个或多个最优解,同时保存最优值解决方法:1.子集树通过动态的方式生成,子集树中的结点类型共用物品类型,其中结点之间的父子关系通过递归调用的方式关联,这种关系并不在类中设置变量显示表示。2.为了方便限界函数的计算和程原创 2016-04-27 19:02:22 · 14343 阅读 · 2 评论 -
用动态规划算法解决0-1背包问题
用动态规划算法解决0-1背包问题需要了解以下基本概念和原理:1.使用动态规划算法必须具备两个基本要素:最优子结构性质和重叠子问题性质2.动态规划算法常以自底向上的方式计算最优值,也就是说,从最小的子问题开始向包含该子问题的大问题方向求解,把每一次求解出的子问题的解保存下来,以便提供给包含该小问题的大问题使用,因此使用循环迭代方式计算更为合理,但从动态规划算法的两个基本要素可以看出,直接以递原创 2016-04-30 21:44:25 · 20123 阅读 · 1 评论 -
用动态规划算法的变形方法——备忘录方法,解决0-1背包问题
使用备忘录方法解决0-1背包问题:1.跟直接递归很相似,该算法能将递归遇到的子问题的解保存在一个表中,以便下一个递归遇到同样的子问题时快速求解。2.为了区分一个子问题是否已经求解,可以通过查表的方式来判断,若子问题对应的表中元素的值为一个初始特殊值,说明该子问题还未求解;否则,表明该子问题曾经已求解过,直接获取子问题的解,不需要递归求解该值。3.备忘录算法与动态规划算法的区别有:(原创 2016-05-04 10:59:20 · 11729 阅读 · 2 评论 -
旅行售货员问题的回溯法求解
旅行售货员问题的解空间是一颗排序树,对于排序树的回溯法搜索与生成1,2,3,4,...,n的所有排列的递归算法Perm类似,开始时,x = [1,2,...,n],则相应的排序树由x[1:n]的所有排序构成。以下解释排序算法Perm:(1)假设Perm(1)的含义是对x = [1,2,...,n]进行排序,则Perm(i)的含义是对[i,i+1,i+2,...,n]进行排序。为了方便描述,规定原创 2016-05-04 21:22:37 · 19192 阅读 · 1 评论