程序设计综合实践教学课件2-3-1 回溯法 - 八皇后问题.pptxVIP

  • 9
  • 0
  • 约3.57千字
  • 约 16页
  • 2021-10-13 发布于安徽
  • 举报

程序设计综合实践教学课件2-3-1 回溯法 - 八皇后问题.pptx

三、回溯法; 当试探完所有步,获得问题的一个答案时,如果需要寻求更多答案或迭代最佳答案,也可以退回一步,继续回溯,以获得更多答案或迭代最佳答案,直到退回到最初出发点,试探-回溯完成,确定问题所有答案、迭代最佳答案或确定问题无答案。 当试探完所有步,获得问题的一个答案并且不需要寻求更多答案时,可以直接结束试探-回溯过程。; 把试探-回溯过程中每一步的状态作为一个结点,出发状态结点为根结点。当前状态中试探选择某一个选项后进入下一个状态,这两个状态结点间形成父子关系,这样,试探-回溯过程中所有的状态结点构成一个树,称为状态空间树,参见下面小节图2.4。树根结点是开始出发时状态结点,搜索过程中获得问题答案的状态结点是叶子结点。 高度为h的满二叉树结点数为 ,搜索完满二叉树的算法时间复杂性也是 ,因此,在试探-回溯过程中,为提高算法的效率,应尽量优化,减去不必要树枝,减少状态空间树的结点数。 试探回溯法采用深度优先策略,一般情况下可以用递归函数实现回溯法,问题和必要的状态、答案用Problem描述,p-n表示问题的规模,CheckOk (p)表示检查目前的选择是否可行。回溯法框架如下:;bool BackTrace(Problem *p, int i) //试探第i步 { if (已获

文档评论(0)

1亿VIP精品文档

相关文档