算法设计技巧与分析课件--13回溯法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020/10/25
华南师范大学 计算机学院
15
13.3 8皇后问题
• 八皇后问题 在一个8×8国际象棋盘上,有8个皇后,每 个皇后占一格;要求皇后间不会出现相互" 攻击"的现象,即不能有两个皇后处在同一 行、同一列或同一对角线上。问共有多少 种不同的方法。
2020/10/25
华南师范大学 计算机学院
2020/10/25
华南师范大学 计算机学院
2
13.2 3着色问题
• G=(V,E)用1,2,3三个色着顶点,邻 接顶点不同色着法为合法解。
– 避免:要求找到一个满足某些条件的最优解, 如果进行彻底的搜索,要进行大量的比较,要 以大量的运算时间为代价。
– 借助:回溯法(backtracking)求助于回溯技 巧,常常可以大大地减少实际的搜索数目。
– 初始化空棋盘(起始状态);
– 从第一行开始准备放子,直至第一行出现回溯 – 在当前行r中查找下一个可以放置王后的位置
– 如果找到了可以摆放的位置 – 放下一个子
– 如果已经是最后一行 – 得到一个解
– 撤掉该子,继续寻找下一个解 – 否则(未到最后一行)
– 准备处理下一行
– 否则(没有找到可以摆放的位置)
第13章 回溯法
2020/10/25
1
13-1 引言
• 现实问题有很多无法穷尽可能解 • 穷尽列举现实某些问题的可能解,代价巨大
• 在解空间搜索解的系统化方法--因需要而研究。
– 回溯法,其中一个常用的,希望将搜索空间收缩到尽 可能小。
– 优点:可以有条理有组织地穷尽式搜索,避免搜索所 有解空间
– 适用:有潜在的大量解,但有限个解已经检查过的问 题
• 一旦走到叶子,就找到了一组解。
2020/10/25
华南师范大学 计算机学院
8
运用回溯法解题三个步骤:
(1)针对所给问题,定义问题的解空间; (2)确定易于搜索的解空间结构; (3)以深度优先的方式搜索解空间,并且在
搜索过程中用剪枝函数避免无效搜索;
2020/10/25
华南师范大学 计算机学院
9
2020/10/25 – 回溯到上一行华,南师并范撤大学掉计该算行机学的院棋子
19
2020/10/25
2020/10/25
华南师范大学 计算机学院
17
N后问题
回溯过程分析
1、从空棋盘起,逐行放置棋子。 2、每在一个布局中放下一个棋子,即推演
到一个新的布局。 3、如果当前行上没有可合法放置棋子的位
置,则回溯到上一行,重新布放上一行的 棋子。
2020/10/25
华南师范大学 计算机学院
18
N后问题
• 算法描述
– 仅合某些法才着是色问的题路的径解多长?
– 对于图1,可以看作3色着法的搜索树
– 注意:局部不合法的解,必整体不合法
– 对应:部分解,
完整解
2020/10/25
华南师范大学 计算机学院
5
过程
• 如果所有颜色都已经试过 且 没有成功, • 返回到父结点,它的颜色被修改, • 反复直至搜到解。
• 由于回溯方法的本质是用深度优先的方法 在解的空间树中搜索。所以在算法中都需 要建立一个栈,用来保存搜索的路径。一 旦产生的部分解序列不合要求,就要从栈 中找到回溯的前一个位置,继续试探。
2020/10/25
华南师范大学 计算机学院
3
3着色的搜索树
对于仅有3个顶点的图
1
1 23
1 3 12 3
2020/10/25
华南师范大学 计算机学院
4
着色的表示
• 一种对n个顶点的着色,可以用n元组表示
– (c1,c2,c3,…,cn) ci属于颜色集合C
– 问如题上:图对,(于1n,个1结,点1)的,图1属,于搜{1索,2树,3从} • N个根顶到点当的前图叶有子|C给|n种出可合能法着着色色,,解中空止间;大
2、回溯法的基本思想:确定了解空间的组织结构后,回溯 法就从开始结点(根结点)出发,以深度优先的方式搜索 整个解空间。这个开始结点就成为一个活结点,同时也成 为当前的扩展结点。在当前的扩展结点处,搜索向纵深方 向移至一个新结点。这个新结点就成为一个新的活结点, 并成为当前扩展结点。如果在当前的扩展结点处不能再向 纵深方向移动,则当前扩展结点就成为死结点。换句话说, 这个结点不再是一个活结点。此时,应往回移动(回溯) 至最近的一个活结点处,并使这个活结点成为当前的扩展 结点。回溯法即以这种工作方式递归地在解空间中搜索, 直至找到所要求的解或解空间中已没有活结点时为止。
2020/10/25
华南师范大学 计算机学院
6
例子13-2
C={1,2,3}, 问题:为图(a)着色
2020/10/25
华南师范大学 计算机学院
生 成 搜 索 树 的 一 个 部 分
深度优先 只需存储根 到当前活动 结点的路径
7

• 穷举测试是对所有的叶子都一一测试,
• 而回溯的方法是从树根开始,边试探边往 下走,若在某一层次查明不符合解的限制, (即局部不是解,整体不是解)则不往下 走,砍掉以下的树杈,跳到下一杈上继续 试探着往下走。这样边走边砍,砍掉大量 的树杈,从而省掉大量(解空间)测试。
16
N后问题
• 问题:在一个n×n的棋盘上布置n个王后,使其相互不 能攻击;
• 问题的状态即棋盘的布局状态,状态空间树的根为空 棋盘,每个布局的下一步可能布局为该布局结点的子 结点;
• 由于可以预知,在每行中有且只有一个王后,因此为 了简化状态空间树,采用逐行布局的方式,即每个布 局有n个子结点;
2020/10/25
华南师范大学 计算机学院
12
2020/10/25
华南师范大学 计算机学院
13
算法在生成了总共341个可能结点的27个结点后,就 找到了下图的解。
……
2020/10/25
华南师范大学 计算机学院
14
回顾
1、问题的解空间:应用回溯法解问题时,首先应明确定义 问题的解空间。问题的解空间应到少包含问题的一个(最 优)解。
3着色递归算法
2020/10/25
华南师范大学 计算机学院
10
3着色迭代算法
2020/10/百度文库5
华南师范大学 计算机学院
11
13.3 引例 4×4 棋盘
不合
相法
互:
攻不
击相
的互
少攻
于击
4
个 皇 后 的 放 置
的 皇 后 布 置 , 部



没有两个queen可以在同行,同列,用4维数组记录顺 序行中Queen的列位置,原有解空间44个降到4!
相关文档
最新文档