算法第五章作业

一. 对回溯算法的理解

使用回溯算法首先要确定问题的解空间,然后从根节点出发,以深度优先的方式搜索整个解空间。

可使用递归函数来实现回溯法。

子集树和排列树是用回溯法解题时常用的两类典型的解空间树。

回溯法一定要进行剪枝,用约束函数剪去不含最优解的树。

二. 子集和问题的解空间和约束函数

解空间: 是否选择当前元素

约束函数:

定义rest初值为全部元素之和,sum为当前已选了的元素之和,

if( sum + rest >= c){
        x[t] = 0 ;
        if (backtrack(t+1)){
            return true;
        }
    }

三. 本章学习中遇到的问题以及结对编程情况

这一章的学习比较重要的问题时如何进行剪枝,找到问题的约束条件是关键

结对编程情况,我与同伴在做题时会先将问题的框架列出,然后在进行细化,但是做到约束函数那一部分的时候会经常出错,对回溯法的理解还有待加强。

原文地址:https://www.cnblogs.com/Ygrittee/p/10147848.html