1. 你对回溯算法的理解

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

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

 

  • 回溯算法的理解

回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。

 

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

子集和问题可描述如下:给定n个正整数W=(w1, w2, …, wn)和正整数M,要求寻找这样一个子集I⊆{1, 2, 3, ..., n},使得∑wi=M,i∈I[1]

举个例子对子集和问题做一个通俗的解释:集合W=(1, 2, 3, 4, 5),给定一个正整数M=5,是否存在W的一个子集I,使得子集I中的元素相加等于M,这个例子显然存在子集I=(2, 3)。

 

解空间结构

定义一个解空间,它包含问题的解。利用深度优先法搜索解空间。利用限界函数避免移动到不可能产生解的子空间。解空间通常是在搜索问题的解的过程中动态产生的。

 

约束函数

避免无效搜索,避免移动到不可能产生解的子空间。对目标值常常要在一定的约束条件下(要求下限或者上限),借以对决策方案施加限制范围。

 

  • 本章学习过程中遇到的问题及结对编程的情况

总体来说,回溯算法比较简单,当我们想不出更好的办法时,回溯算法是一种有效的解决问题的方法,编写回溯算法逻辑清晰,编写程序简洁。

posted on 2019-12-18 11:04  likeghee  阅读(145)  评论(0编辑  收藏  举报