算法第五章作业

一、对回溯算法的理解

回溯法算是一种通用解法,因为用回溯法能搜索一个问题的所有解或者任一解。因为回溯法是先找出问题的解空间,然后进行深度优先遍历,找出所有可行解。可以通过约束函数和限界函数(统称为剪枝函数)减少遍历次数从而优化时间复杂度。

 

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

1、解空间结构

非负非零的整数集合 S = {x1, x2, …, xn} 对应的一个子集 S1,S1 中的元素之和为 c 。

2、约束函数

if (sum + temp[t] <= c) 

sum 是当前没有加上遍历到的那个值的总和,temp 数组是遍历的,c 是所要求的最优解(就是最大和)。

如果大于该数,则舍去那个结点。

 

三、本章遇到的问题和结对编程的情况

1、遇到的问题

大概是上机实践的时候,对着第一题0-1背包一直在死磕,然后因为想不出怎样更好得约束函数,一直超时卡着,导致一道题没打出来。就是觉得回溯法对于约束函数怎样去严格剪枝挺有难度地,需要好好学。

2、结对编程的情况

两人一学期的编程思想交流,学到了挺多,毕竟不同人思维不同。然后大作业的配合也不错,有伙伴帮忙的感觉很棒,就辉彼此找出对方不足并改正,共同进步

posted @ 2019-12-19 22:48  ErwinGluttony  阅读(125)  评论(0编辑  收藏  举报