码迷,mamicode.com
首页 > 编程语言 > 详细

对回溯算法的理解

时间:2019-12-19 21:00:06      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:构建   black   子集和   ima   背包   说明   就是   inf   回溯算法   

一、对回溯算法的理解

应用回溯算法的三个步骤:

1.首先得构造解空间树:子集树和排列树;

2.以深度优先的方式搜索解空间:递归或迭代;

3.设计剪枝函数避免无效搜索:使用约束函数,剪去不满足约束条件的路径或使用限界函数,剪去不能得到最优解的路径。

回溯法解问题的一个显著特征是,解空间树是虚拟的,在任何时候,只需保存从根节点到当前扩展结点的路径。

在回溯问题中,若要求问题的所有解,就要回溯到根。

二、请说明“子集和”问题的解空间结构和约束函数

 

子集和问题:
设集合S={x1,x2,…,xn}是一个正整数集合,c是一个正整数,子集和问题判定是否存在S的一个子集S1,使S1中的元素之和为c。
解空间结构:
和0-1背包问题差不多。 
技术图片
约束函数:
先把集合里的数按递增序列排序,若当前的和sum加上当前正在进行的ai如果小于要求的和c,就是可以继续进行下一步k+1,若sum加上剩余的排在最后面的子集的和大于要求的和,就不符合要求,就可以跳过,并回溯到上一个步骤。

三、请说明在本章学习过程中遇到的问题及结对编程的情况

回溯算法的难点:剪枝函数比较难构建。

结对编程:经过了一学期的磨合,现在已经可以和队友配合默契了。感谢队友一学期的支持和鼓励,希望我们都能再接再厉。

 
 

对回溯算法的理解

标签:构建   black   子集和   ima   背包   说明   就是   inf   回溯算法   

原文地址:https://www.cnblogs.com/Texas/p/12069880.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!