第二讲回溯法精选PPT.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第二讲回溯法精选PPT.ppt》由会员分享,可在线阅读,更多相关《第二讲回溯法精选PPT.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二讲回溯法第1页,本讲稿共27页关于搜索n n人类的思维过程既是一个搜索过程。人类的思维过程既是一个搜索过程。n n先来看一个智力游戏先来看一个智力游戏第2页,本讲稿共27页传教士与野人n n有三个传教士和三个野人渡河,河边有有三个传教士和三个野人渡河,河边有一条船,每次只能乘坐一条船,每次只能乘坐2人,为了传教士人,为了传教士的安全,应如何规划渡船方案,使得任的安全,应如何规划渡船方案,使得任何时刻,在河的两岸及船上,传教士的何时刻,在河的两岸及船上,传教士的人数不能少于野人数。人数不能少于野人数。第3页,本讲稿共27页第4页,本讲稿共27页搜索分类第5页,本讲稿共27页基本思想n n回溯
2、法是一种通用性解法,可以将回溯法看作是带优化回溯法是一种通用性解法,可以将回溯法看作是带优化回溯法是一种通用性解法,可以将回溯法看作是带优化回溯法是一种通用性解法,可以将回溯法看作是带优化的穷举法。的穷举法。的穷举法。的穷举法。n n回溯法的基本思想是在一棵含有问题全部可能解的状态空间树回溯法的基本思想是在一棵含有问题全部可能解的状态空间树回溯法的基本思想是在一棵含有问题全部可能解的状态空间树回溯法的基本思想是在一棵含有问题全部可能解的状态空间树上进行深度优先搜索,解为叶子结点。搜索过程中,每到达一上进行深度优先搜索,解为叶子结点。搜索过程中,每到达一上进行深度优先搜索,解为叶子结点。搜索过程
3、中,每到达一上进行深度优先搜索,解为叶子结点。搜索过程中,每到达一个结点时,个结点时,个结点时,个结点时,则判断该结点为根的子树是否含有问题的解则判断该结点为根的子树是否含有问题的解则判断该结点为根的子树是否含有问题的解则判断该结点为根的子树是否含有问题的解,如,如,如,如果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,退回到上层父结点,继续下一步深度优先搜索过程。退回到上层父结点,继续下一步深度优先搜索过程。退回到上层
4、父结点,继续下一步深度优先搜索过程。退回到上层父结点,继续下一步深度优先搜索过程。n n在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,而是在搜索过程,而是在搜索过程,而是在搜索过程,而是在搜索过程,逐步构造出状态空间树逐步构造出状态空间树逐步构造出状态空间树逐步构造出状态空间树,即边搜索,边构造。,即边搜索,边构造。,即边搜索,边构造。,即边搜索,边构造。第6页,本讲稿共27页第7页,本讲稿共27页应用步骤n n1、确定问题状
5、态结构;、确定问题状态结构;n n2、分析问题状态空间树;、分析问题状态空间树;n n3、确定深度搜索与回溯规则;、确定深度搜索与回溯规则;n n4、确定解状态判别规则;、确定解状态判别规则;第8页,本讲稿共27页二个问题n n八皇后问题八皇后问题n n全排列问题全排列问题第9页,本讲稿共27页N皇后问题n n问题:在一个问题:在一个问题:在一个问题:在一个nnnn的棋盘上布置的棋盘上布置的棋盘上布置的棋盘上布置n n个王后,使其相互不能攻击,即每行、个王后,使其相互不能攻击,即每行、个王后,使其相互不能攻击,即每行、个王后,使其相互不能攻击,即每行、每列,每斜线都只有一个皇后;每列,每斜线都
6、只有一个皇后;每列,每斜线都只有一个皇后;每列,每斜线都只有一个皇后;n n问题的状态问题的状态问题的状态问题的状态即棋盘的布局状态,状态空间树的根为空棋盘,即棋盘的布局状态,状态空间树的根为空棋盘,即棋盘的布局状态,状态空间树的根为空棋盘,即棋盘的布局状态,状态空间树的根为空棋盘,每个布局的下一每个布局的下一每个布局的下一每个布局的下一步可能布局步可能布局步可能布局步可能布局为该布局结点的子结点;为该布局结点的子结点;为该布局结点的子结点;为该布局结点的子结点;n n由于可以预知,在每行中有且只有一个王后,因此为了简化状态空间由于可以预知,在每行中有且只有一个王后,因此为了简化状态空间由于可
7、以预知,在每行中有且只有一个王后,因此为了简化状态空间由于可以预知,在每行中有且只有一个王后,因此为了简化状态空间树,采用逐行布局的方式,即每个布局有树,采用逐行布局的方式,即每个布局有树,采用逐行布局的方式,即每个布局有树,采用逐行布局的方式,即每个布局有n n个子结点;个子结点;个子结点;个子结点;第10页,本讲稿共27页N后问题n n回溯过程分析回溯过程分析n n1 1、从空棋盘起,逐行放置棋子。、从空棋盘起,逐行放置棋子。、从空棋盘起,逐行放置棋子。、从空棋盘起,逐行放置棋子。n n2 2、每在一个布局中放下一个棋子,即推、每在一个布局中放下一个棋子,即推、每在一个布局中放下一个棋子,
8、即推、每在一个布局中放下一个棋子,即推演到一个新的布局。演到一个新的布局。演到一个新的布局。演到一个新的布局。n n3 3、如果当前行上没有可合法放置棋子的、如果当前行上没有可合法放置棋子的、如果当前行上没有可合法放置棋子的、如果当前行上没有可合法放置棋子的位置,则回溯到上一行,重新布放上一行位置,则回溯到上一行,重新布放上一行位置,则回溯到上一行,重新布放上一行位置,则回溯到上一行,重新布放上一行的棋子。的棋子。的棋子。的棋子。第11页,本讲稿共27页N后问题n n算法描述算法描述算法描述算法描述n n初始化空棋盘(起始状态);初始化空棋盘(起始状态);初始化空棋盘(起始状态);初始化空棋盘
9、(起始状态);n n从第一行开始准备放子,直至第一行出现回溯从第一行开始准备放子,直至第一行出现回溯从第一行开始准备放子,直至第一行出现回溯从第一行开始准备放子,直至第一行出现回溯n n 在当前行在当前行在当前行在当前行r r中查找下一个可以放置王后的位置中查找下一个可以放置王后的位置中查找下一个可以放置王后的位置中查找下一个可以放置王后的位置n n 如果找到了可以摆放的位置如果找到了可以摆放的位置如果找到了可以摆放的位置如果找到了可以摆放的位置n n放下一个子放下一个子放下一个子放下一个子n n如果已经是最后一行如果已经是最后一行如果已经是最后一行如果已经是最后一行n n得到一个解得到一个解
10、得到一个解得到一个解n n撤掉该子,继续寻找下一个解撤掉该子,继续寻找下一个解撤掉该子,继续寻找下一个解撤掉该子,继续寻找下一个解n n否则(未到最后一行)否则(未到最后一行)否则(未到最后一行)否则(未到最后一行)n n准备处理下一行准备处理下一行准备处理下一行准备处理下一行n n 否则(没有找到可以摆放的位置)否则(没有找到可以摆放的位置)否则(没有找到可以摆放的位置)否则(没有找到可以摆放的位置)n n回溯到上一行,并撤掉该行的棋子回溯到上一行,并撤掉该行的棋子回溯到上一行,并撤掉该行的棋子回溯到上一行,并撤掉该行的棋子第12页,本讲稿共27页第13页,本讲稿共27页算法伪码n n得到求
11、解皇后问题的算法如下:得到求解皇后问题的算法如下:得到求解皇后问题的算法如下:得到求解皇后问题的算法如下:输入棋盘大小值输入棋盘大小值输入棋盘大小值输入棋盘大小值n n;m=0;m=0;good=1;good=1;dodoif(good)if(good)if(m=n)if(m=n)输出解;输出解;输出解;输出解;改变之,形成下一个候选解改变之,形成下一个候选解改变之,形成下一个候选解改变之,形成下一个候选解;elseelse扩展当前候选接至下一列;扩展当前候选接至下一列;扩展当前候选接至下一列;扩展当前候选接至下一列;elseelse改变之,形成下一个候选解;改变之,形成下一个候选解;改变之,
12、形成下一个候选解;改变之,形成下一个候选解;good=good=检查当前候选解的合理性;检查当前候选解的合理性;检查当前候选解的合理性;检查当前候选解的合理性;while(m!=0);while(m!=0);第14页,本讲稿共27页引入辅助变量n n一维数组(一维数组(一维数组(一维数组(colcol),值),值),值),值colcol表示在棋盘第表示在棋盘第表示在棋盘第表示在棋盘第i i列、列、列、列、colcol行有一个皇后。例如:行有一个皇后。例如:行有一个皇后。例如:行有一个皇后。例如:col3=4col3=4,就表示在棋盘的,就表示在棋盘的,就表示在棋盘的,就表示在棋盘的第第第第3
13、3列、第列、第列、第列、第4 4行上有一个皇后。另外,为了使程序在行上有一个皇后。另外,为了使程序在行上有一个皇后。另外,为了使程序在行上有一个皇后。另外,为了使程序在找完了全部解后回溯到最初位置,设定找完了全部解后回溯到最初位置,设定找完了全部解后回溯到最初位置,设定找完了全部解后回溯到最初位置,设定col0col0的初的初的初的初值为值为值为值为0 0当回溯到第当回溯到第当回溯到第当回溯到第0 0列时,说明程序已求得全部解,列时,说明程序已求得全部解,列时,说明程序已求得全部解,列时,说明程序已求得全部解,结束程序运行。结束程序运行。结束程序运行。结束程序运行。n n数组数组数组数组aa,
14、akak表示第表示第表示第表示第k k行上还没有皇后;行上还没有皇后;行上还没有皇后;行上还没有皇后;n n数组数组数组数组bb,bkbk表示第表示第表示第表示第k k列右高左低斜线上没有皇列右高左低斜线上没有皇列右高左低斜线上没有皇列右高左低斜线上没有皇后;后;后;后;n n数组数组数组数组cc,ckck表示第表示第表示第表示第k k列左高右低斜线上没有皇列左高右低斜线上没有皇列左高右低斜线上没有皇列左高右低斜线上没有皇后;后;后;后;第15页,本讲稿共27页nn【程序】【程序】【程序】【程序】#include#include#include#include#defineMAXN20#def
15、ineMAXN20intn,m,good;intn,m,good;intcolMAXN+1,aMAXN+1,b2*MAXN+1,c2*MAXN+1;intcolMAXN+1,aMAXN+1,b2*MAXN+1,c2*MAXN+1;voidmain()voidmain()intj;intj;charawn;charawn;printf(“Entern:“);scanf(“%d”,&n);printf(“Entern:“);scanf(“%d”,&n);for(j=0;j=n;j+)aj=1;for(j=0;j=n;j+)aj=1;for(j=0;j=2*n;j+)cbj=cj=1;for(j=0
16、;j=2*n;j+)cbj=cj=1;m=1;col1=1;good=1;col0=0;m=1;col1=1;good=1;col0=0;dodoif(good)if(good)if(m=n)if(m=n)printf(“printf(“列列列列tt行行行行”);”);for(j=1;j=n;j+)for(j=1;j=n;j+)printf(“%3dt%dn”,j,colj);printf(“%3dt%dn”,j,colj);printf(“Enteracharacter(Q/qforexit)!n”);printf(“Enteracharacter(Q/qforexit)!n”);scanf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 回溯 精选 PPT
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内