算法第五章作业
-
你对回溯算法的理解(2分)
回溯算法说白了就是穷举法。不过回溯算法使用剪枝函数,剪去一些不可能到达 最终状态(即答案状态)的节点,从而减少状态空间树节点的生成。回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时,只要搜索到问题的一个解就可以结束。这种以深度优先的方式系统地搜索问题的解的算法称为回溯法,它适用于解一些组合数较大的问题。
-
请说明“子集和”问题的解空间结构和约束函数(2分)
if( sum == c )
return true;
if( t > n )
return false ;
total -=a[t];
if(sum + a[t] <= c)
{
x[t] = 1 ;
sum = sum+a[t] ;
if ( backtrack(t+1) )
return true;
sum -= a[t];
}
if( sum + total >= c)
{
x[t] = 0 ;
if ( backtrack(t+1) )
return true;
}
total += a[t];
return false;
} -
请说明在本章学习过程中遇到的问题及结对编程的情况(1分)
和卢涵一起结对编程很愉快,我们一起讨论问题然后得出答案。
浙公网安备 33010602011771号