《八皇后问题详细的解法》ppt模板课件.pptVIP

  • 4
  • 0
  • 约1.51千字
  • 约 28页
  • 2021-09-02 发布于湖南
  • 举报

《八皇后问题详细的解法》ppt模板课件.ppt

(Suitable for teaching courseware and reports);1八皇后问题背景 2盲目的枚举算法 3加约束的枚举算法 4回溯法及基本思想 5 回溯法应用 6八皇后问题的递归回溯算法 7八皇后问题的非递归回溯算法 ;【背景】 八皇后问题是一个以国际象棋为背景的问题: 如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。 ;八皇后问题;【问题分析】;枚举得有个顺序,否则轻则有漏的、重复的;重则无法循环表示。;1.按什么顺序去查找所有的解 a.盲目的枚举算法 void main() { int x[100]; for (x[1]=1;x[1]=10;x[1]++) for (x[2]=1;x[2]=10;x[2]++) for (x[3]=1;x[3]=10;x[3]++) for (x[4]=1;x[4]=10;x[4]++) for (x[5]=1;x[5]=10;x[5]++) for (x[6]=1;x[6]=10;x[6]++) for (x[7]=1;x[7]=10;x[7]++) for (x[8]=1;x[8]=10;x[8]++) if (check(x)==0) { printf(x); } };该如何解决冲突的问题呢? 1.行;我们是按照行枚举的,保证了一行一个皇后; 2.列:判断是否存在x[i]=x[j] 3.对角线:主对角线的i-j与从对角线的i+j存在特殊关系,如图: ;盲目的枚举算法;盲目的枚举算法;有“通用的解题法”之称。 回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。 回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。;求问题所有解:要回溯到根,且根结点的所有子树都已被搜索遍才结束。 求任一解:只要搜索到问题的一个解就可结束。;1 回溯算法设计过程;2 回溯法应用-加约束的枚举算法;只要当前枚举到的状态可行,就继续枚??下去。当找到一种方案或者无法继续枚举下去时,就退回到上一状态。退回到上一状态的过程叫做回溯,枚举下一个状态的过程叫做递归。 回溯就是像人走迷宫一样,先选择一个前进方向尝试,一步步试探,在遇到死胡同不能再往前的时候就会退到上一个分支点,另选一个方向尝试,而在前进和回撤的路上都设置一些标记,以便能够正确返回,直到达到目标或者所有的可行方案都已经尝试完为止。 ;2 回溯法应用-例1 b加约束的枚举算法;我们可以依次确定每一行皇后的位置;2 例1 b加约束的枚举算法;2 回溯法应用-算法说明;2 回溯法应用-n皇后问题;2 回溯法应用-算法框架-递归算法框架;;演讲结速,谢谢观赏!;PPT常用编辑图使用方法;;;;

文档评论(0)

1亿VIP精品文档

相关文档