算法设计与分析-第8章-回溯法PPT课件
合集下载
回溯法_ppt课件

//h(i)表示在当前扩展节点处x[t]的第i个可选值
实 现 递 归
} }
if (Constraint(t) &&Bound(t) ) { if (Solution(t)) Output(x); else t ++; } else t --;
if (Constraint(t) &&Bound(t) ) { if (Solution(t)) Output(x); else t ++; } else t --; 分析:
算法设计与分析 >回溯法
5、回溯法解题步骤: 1).针对所给问题,定义问题的解空间 2).确定解空间结构. 3).以深度优先方式搜索解空间.
算法模式 Procedure BACKTRACK(n); {k:=l; repeat if TK (x1,x2,...xK-1 )中的值未取遍 then { xK:=TK (x1,x2,..., x K-1 )中未取过的一个值; if BK (x1, x2, ..., x K) then //状态结点(x1,...xk)被激活 if k=n then output(x1, x2, ..., xk) //输出度优先 e1se k:=k-l; //回溯 until k=0; end;{BACKTRACK}
if (Constraint(t)&&Bound(t) ) Backtrack(t + 1); if语句含义:Constraint(t)和Bound(t)表示当前扩展 节点处的约束函数和限界函数。 Constraint(t): 返回值为true时,在当前扩展节点处 x[1:t]的取值问题的约束条件,否则不满足问题的约束条 件,可剪去相应的子树 Bound(t): 返回的值为true时,在当前扩展节点处 x[1:t]的取值为时目标函数越界,还需由Backtrack(t+1) 对其相应的子树做进一步搜索。否则,当前扩展节点处 x[1:t]的取值是目标函数越界,可剪去相应的子树 for循环作用:搜索遍当前扩展的所有未搜索过的 子树。 递归出口:Backtrack(t)执行完毕,返回t-1层继续 执行,对还没有测试过的x[t-1]的值继续搜索。当t=1时, 若以测试完x[1]的所有可选值,外层调用就全部结束。
实 现 递 归
} }
if (Constraint(t) &&Bound(t) ) { if (Solution(t)) Output(x); else t ++; } else t --;
if (Constraint(t) &&Bound(t) ) { if (Solution(t)) Output(x); else t ++; } else t --; 分析:
算法设计与分析 >回溯法
5、回溯法解题步骤: 1).针对所给问题,定义问题的解空间 2).确定解空间结构. 3).以深度优先方式搜索解空间.
算法模式 Procedure BACKTRACK(n); {k:=l; repeat if TK (x1,x2,...xK-1 )中的值未取遍 then { xK:=TK (x1,x2,..., x K-1 )中未取过的一个值; if BK (x1, x2, ..., x K) then //状态结点(x1,...xk)被激活 if k=n then output(x1, x2, ..., xk) //输出度优先 e1se k:=k-l; //回溯 until k=0; end;{BACKTRACK}
if (Constraint(t)&&Bound(t) ) Backtrack(t + 1); if语句含义:Constraint(t)和Bound(t)表示当前扩展 节点处的约束函数和限界函数。 Constraint(t): 返回值为true时,在当前扩展节点处 x[1:t]的取值问题的约束条件,否则不满足问题的约束条 件,可剪去相应的子树 Bound(t): 返回的值为true时,在当前扩展节点处 x[1:t]的取值为时目标函数越界,还需由Backtrack(t+1) 对其相应的子树做进一步搜索。否则,当前扩展节点处 x[1:t]的取值是目标函数越界,可剪去相应的子树 for循环作用:搜索遍当前扩展的所有未搜索过的 子树。 递归出口:Backtrack(t)执行完毕,返回t-1层继续 执行,对还没有测试过的x[t-1]的值继续搜索。当t=1时, 若以测试完x[1]的所有可选值,外层调用就全部结束。
算法设计与分析-第8章-回溯法PPT课件

{ ( ), (1), (2), (3), (1, 2), (1, 3), (2, 3), (1, 2, 3) }
(2)可能解由一个等长向量{x1, x2, …, xn}组成,其中 xi=1(1≤i≤n)表示物品i装入背包,xi=0表示物品i没有装入背包, 当n=3时,其解空间是:
{(0, 0, 0), (0, 0, 1), (0, 1, 0), (1, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 0), (1, 1, 1) }
4 34 2 2 3 4 3 4 13 1 4 24 12 12 3 3 12 1 5 7 10 12 15 17 21 23 26 28 31 33 37 39 42 44 47 49 53 55 58 60 63 65
解向量:由根结点到叶结点的路径所定义
图8.1.1-3 n=4的八皇后问题解空间树
1
1
0
2
1
0
6
9
1
0
10
13
不可行解
1
0
1
0
1
0
8
11
12
14
15
不可行解 价值=20 价值=55 价值=30 价值=25 价值=0
.
15
8.1.2 回溯法的设计思想
TSP问题搜索解空间的方法---应用目标函数剪枝
再如,对于n=4的TSP问题,其代价矩阵如图所示,
∞3 6 7 C= 12 ∞ 2 8
.
21
8.1.3 回溯法的求解过程
简言之:
1) 逐级扩展解向量 x1 ,x2 , … , xi-1
xi
2) 动态测试部分解
用 Bi (x1 , x2 ,… ,xi-1 ,xi) ---剪枝函数动态测试, 判定路径 x1 x2 … xi-1 xi 是否可行。
(2)可能解由一个等长向量{x1, x2, …, xn}组成,其中 xi=1(1≤i≤n)表示物品i装入背包,xi=0表示物品i没有装入背包, 当n=3时,其解空间是:
{(0, 0, 0), (0, 0, 1), (0, 1, 0), (1, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 0), (1, 1, 1) }
4 34 2 2 3 4 3 4 13 1 4 24 12 12 3 3 12 1 5 7 10 12 15 17 21 23 26 28 31 33 37 39 42 44 47 49 53 55 58 60 63 65
解向量:由根结点到叶结点的路径所定义
图8.1.1-3 n=4的八皇后问题解空间树
1
1
0
2
1
0
6
9
1
0
10
13
不可行解
1
0
1
0
1
0
8
11
12
14
15
不可行解 价值=20 价值=55 价值=30 价值=25 价值=0
.
15
8.1.2 回溯法的设计思想
TSP问题搜索解空间的方法---应用目标函数剪枝
再如,对于n=4的TSP问题,其代价矩阵如图所示,
∞3 6 7 C= 12 ∞ 2 8
.
21
8.1.3 回溯法的求解过程
简言之:
1) 逐级扩展解向量 x1 ,x2 , … , xi-1
xi
2) 动态测试部分解
用 Bi (x1 , x2 ,… ,xi-1 ,xi) ---剪枝函数动态测试, 判定路径 x1 x2 … xi-1 xi 是否可行。
算法设计与分析王红梅第二版第8章_回溯法详解

2018/10/15
Chapter 8 Back Track Method
10
概述 -问题的解空间
可行解:满足约束条件的解,解空间中的一个子集
最优解:
使目标函数取极值(极大或极小)的可行解,一个或少数几个 例:货郎担问题,有nn种可能解。n!种可行解,只有一个或 几个是最优解。 例:背包问题,有2n种可能解,有些是可行解,只有一个或 几个是最优解 有些问题,只要可行解,不需要最优解: 例:八皇后问题和图的着色问题
7
概述 -问题的解空间
例:0/1背包问题中,xi 有0/1 两种取值,则S={0,1}, 当n=3时,0/1背包问题的解空间是:
{(0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1)}
即:当输入规模为n 时,有2n 种可能的解。 例:货郎担问题,S={1,2,…,n},当n=3时,S={1,2,3} 。 货郎担TSP问题的解空间中的可能解有27个,是:
0 3 0 15
对物品2的选择
对物品3的选择
2018/10/15
Chapter 8 Back Track Method
12
概述 -问题的解空间
例:对于n=4 的TSP 问题,图8.3是经压缩后的解空间树,树中的24 个叶子结 点分别代表该问题的24 个可能解,例如结点5 代表一个可能解,路径为 1→2→3→4→1,长度为各边代价之和。
2018/10/15 Chapter 8 Back Track Method 2
学习目标
教学重点 教学难点 回溯法的设计思想,各种经典问题的回溯思想 批处理作业调度问题的回溯算法
最大团问题-回溯法ppt课件

G的最大团是指G中所含顶点数最多的团。
下图G中,子集{1,2}是G的大小为2的完全子图。这
个完全子图不是团,因为它被G的更大的完全子图{1,2,
5}包含。{1,2,5}是G的最大团。{1,4,5}和{2,3,5}
也是G的最大团。
1
2
3
4
5
01
问题描述
4
03 算法设计
无向图G的最大团问题可以看作是图G的顶点集V的子集选取问题。因此可 以用子集树表示问题的解空间。设当前扩展节点Z位于解空间树的第i层。在 进入左子树前,必须确认从顶点i到已入选的顶点集中每一个顶点都有边相连。 在进入右子树之前,必须确认还有足够多的可选择顶点使得算法有可能在右 子树中找到更大的团。
8
07 改进
•选择合适的搜索顺序,可以使得上界函数更有效的发挥作用。 例如在搜索之前可以将顶点按度从小到大排序。这在某种意义上 相当于给回溯法加入了启发性。 •定义Si={vi,vi+1,...,vn},依次求出Sn,Sn-1,...,S1的解。从 而得到一个更精确的上界函数,若cn+Si<=max则剪枝。同时注意 到:从Si+1到Si,如果找到一个更大的团,那么vi必然属于找到 的团,此时有Si=Si+1+1,否则Si=Si+1。因此只要max的值被更 新过,就可以确定已经找到最大值,不必再往下搜索了。
1
i=3 cn=2 bestn=0 2
i=4 tn=3
1
i=2 cn=0 bestn=3
2
2
i=3 cn=1 bestn=3
3
4
4
3
3
i=5 cn=2 bestn=0
4
4
下图G中,子集{1,2}是G的大小为2的完全子图。这
个完全子图不是团,因为它被G的更大的完全子图{1,2,
5}包含。{1,2,5}是G的最大团。{1,4,5}和{2,3,5}
也是G的最大团。
1
2
3
4
5
01
问题描述
4
03 算法设计
无向图G的最大团问题可以看作是图G的顶点集V的子集选取问题。因此可 以用子集树表示问题的解空间。设当前扩展节点Z位于解空间树的第i层。在 进入左子树前,必须确认从顶点i到已入选的顶点集中每一个顶点都有边相连。 在进入右子树之前,必须确认还有足够多的可选择顶点使得算法有可能在右 子树中找到更大的团。
8
07 改进
•选择合适的搜索顺序,可以使得上界函数更有效的发挥作用。 例如在搜索之前可以将顶点按度从小到大排序。这在某种意义上 相当于给回溯法加入了启发性。 •定义Si={vi,vi+1,...,vn},依次求出Sn,Sn-1,...,S1的解。从 而得到一个更精确的上界函数,若cn+Si<=max则剪枝。同时注意 到:从Si+1到Si,如果找到一个更大的团,那么vi必然属于找到 的团,此时有Si=Si+1+1,否则Si=Si+1。因此只要max的值被更 新过,就可以确定已经找到最大值,不必再往下搜索了。
1
i=3 cn=2 bestn=0 2
i=4 tn=3
1
i=2 cn=0 bestn=3
2
2
i=3 cn=1 bestn=3
3
4
4
3
3
i=5 cn=2 bestn=0
4
4
回溯法ppt课件

1
x1=2
1
3
4
x2=4 123
1
23 4 1 2 3 4
x3=1
2
4
1 23 4
1 2 x4=3 1
3
3 1
4 2
36
例1: n后问题
法2:4后问题的解空间(排历排列树需要O(n!)计算时间 void backtrack (int i) { if (i>n) output(x);
2
2 34
64
5 10
3 42 4 2 3
3
4
20
4
34
23
2
当起点1固定时,上图有3!个周游路线(排列问题)
16
回溯法的基本思想
回溯法
回溯法是一种选优搜索法,按选优条件向前搜 索,以达到目标。
但当探索到某一步时,发现原先选择并不优或 达不到目标,就退回一步重新选择,这种走不 通就退回再走的技术为回溯法,而满足回溯条 件的某个状态的点称为“回溯点”。
个数的组合。
12 5
要求: 输入:m,n=5 3 输出:
13 4 13 5 14 5 23 4
23 5
24 5
34 5
Total=10种
24
例: 排列与组合
分析:
设(x1,x2, ……,xn)一组解 约束条件:
显约束:1≤xi≤m 隐约束:x1<x2< ……<xn
i≤ xi ≤m-n+i
通常情况下:|S1|=n,|S2|=n-1,…,|Sn|=1, 解空间为:
(1,2,3,……,n-1,n) (2,1,3,……,n-1,n)
…… (n,n-1,……,3,2,1)
《算法8回溯法》课件

八皇后问题
使用回溯法找到八个皇后的摆 放位置,使得它们不会互相攻 击。
0/1背包问题
利用回溯法找到最优的物品选 择方案,使得总价值最大且不 超过背包容量。
八皇后问题
八皇后问题是一个经典的回溯法应用,要求在8x8的棋盘上放置8个皇后,使 得它们不会互相攻击。
解决方法是使用递归的回溯法,在每一行放置一个皇后,然后递归地处理下 一行。
回溯法和动态规划的比较
回溯法和动态规划都可以用来解决搜索问题,但它们在求解方式和效率上有 一些区别。
回溯法通过试错的方式搜索解空间,可能需要遍历大量的解空间;而动态规 划则通过状态的存储和复用来避免重复计算,提高效率。回溯法的优化1
剪枝
通过判断条件和提前终止搜索,剪掉不必要的分支。
2
双向搜索
从目标状态和初始状态同时进行搜索,减少搜索空间。
回溯法的代码实现
回溯法的实现可以使用伪代码或具体的编程语言。 以下是伪代码示例:
procedure backtrack(c) is if reject(P, c) then return if accept(P, c) then output(P, c) s <- first(P, c) while s != NULL do backtrack(s) s <- next(P, s)
欢迎通过示例代码进一步学习回溯法的实现细节。
总结
回溯法是一种强大的搜索算法,广泛应用于各种问题领域。 了解回溯法的应用场景和技巧,可以帮助我们解决更加复杂的问题。 在使用回溯法时,需要注意剪枝和双向搜索等优化方法,以提高求解效率。
《算法8回溯法》PPT课 件
探索回溯法的魅力,从算法基础到应用实例,让我们一起深入了解回溯法的 奥秘。
算法与结构课件-第8章回溯法

下图为n=3和m=3时,问题的解空间树。
在回溯算法Backtrack中,当i>n时,表示算法已搜索至一个 叶结点,得到一个新的m着色方案,因此当前已找到的可m着色 方案数sum增1。当i≤n时,当前扩展结点Z是解空间树中的一个 内部结点。该结点有x[i]=1,2,…,m。对当前扩展结点Z的每一个 儿子结点,由函数 Ok检查其可行性,并以深度优先的方式递归地 对可行子树进行搜索,或剪去不可行子树。
计算机算法设计与分析
Computer Algorithms Design & Analysis
第六章 回溯算法(Backtrack Algorithm)
★ 回溯法的算法框架 ★ 0/1背包问题 ★ 旅行售货员问题 ★ n后问题
问题的解空间
复杂问题常常有很多的可能解,这些可能解 构成了问题的解空间。解空间也就是进行穷举的 搜索空间,所以,解空间中应该包括所有的可能 解。
E (10,20)
x3=1
x3= 0
J (10,20) K
F (5,15)
x3=1
x3=0 x3=1
(15,25)
L M (5,15)
N
G (0,0)
x3=0
O (0,0)
(15,35)
当前最优解 可行解
(15,35) (20,40)
中间计算结果
(20,40) (20,40)
(20,40)
旅行售货员问题
for (i=1; i<k; i++) if (x[k]= =x[i] | | abs(k-i)= =abs(x[k]-x[i])) return false; return true;
}
§5 图的着色问题
算法分析与设计回溯法ppt课件

上图显示了在4-皇后问题中求上述一个解的树的实际生成 部分。结点按它们生成的次序被编号。由限界函数所杀死 的结点则在其下方写上B。
回溯法的算法
算法的三个步骤:
针对所给问题,定义问题的解空间;
应用回溯法解问题时,首先应明确定义问题的 解空间。问题的解空间应至少包含问题的一个 (最优)解。
确定易于搜索的解空间结构; 以深度优先的方式搜索解空间,并且在搜
索过程中用剪枝函数避免无效搜索;
回溯算法的形式描述
假设回溯算法要找出所有的答案结点而不是仅 仅只找出一个。 ① 设(x1,x2,…,xi-1)是状态空间树中由根到一个 结点(问题状态)的路径。 ② T(x1,x2,…,xi-1)是下述所有结点的xi的集合, 它使得对于每一个xi, (x1,x2,…,xi)是一条由 根到结点xi的路径 ③ 存在一些限界函数Bi(可以表示成一些谓词), 如果路径(x1,x2,…,xi)不可能延伸到一个答案 结点,则Bi(x1,x2,…,xi)取假值,否则取真值。
问题求解的方法
硬性处理法
列出所有候选解,逐个检查是否为所需要的解 理论上,候选解数量有限,并且通过检查所有或部分
候选解能够得到所需解时,上述方法可行
实际中则很少使用,因为候选解的数量通常都非常大 (比如指数级,甚至是大数阶乘),即便采用最快的 计算机也只能解决规模较小的问题。
回溯或分枝限界法
避免对很大的候选解集合进行完全检查 大大减少问题的求解时间 通常用来求解规模较大的问题
回溯法求解的经典问题(1) 8-皇后问题
在一个8*8棋盘上放置8个皇后,且使得每两个 之间都不能互相“攻击”,也就是使得每两个 都不能在同一行、同一列及同一条斜角线上。
8皇后问题的解可以表示为8-元组(x1,…,x8) , 其中其中xi是第i行皇后所在的列号。
回溯法的算法
算法的三个步骤:
针对所给问题,定义问题的解空间;
应用回溯法解问题时,首先应明确定义问题的 解空间。问题的解空间应至少包含问题的一个 (最优)解。
确定易于搜索的解空间结构; 以深度优先的方式搜索解空间,并且在搜
索过程中用剪枝函数避免无效搜索;
回溯算法的形式描述
假设回溯算法要找出所有的答案结点而不是仅 仅只找出一个。 ① 设(x1,x2,…,xi-1)是状态空间树中由根到一个 结点(问题状态)的路径。 ② T(x1,x2,…,xi-1)是下述所有结点的xi的集合, 它使得对于每一个xi, (x1,x2,…,xi)是一条由 根到结点xi的路径 ③ 存在一些限界函数Bi(可以表示成一些谓词), 如果路径(x1,x2,…,xi)不可能延伸到一个答案 结点,则Bi(x1,x2,…,xi)取假值,否则取真值。
问题求解的方法
硬性处理法
列出所有候选解,逐个检查是否为所需要的解 理论上,候选解数量有限,并且通过检查所有或部分
候选解能够得到所需解时,上述方法可行
实际中则很少使用,因为候选解的数量通常都非常大 (比如指数级,甚至是大数阶乘),即便采用最快的 计算机也只能解决规模较小的问题。
回溯或分枝限界法
避免对很大的候选解集合进行完全检查 大大减少问题的求解时间 通常用来求解规模较大的问题
回溯法求解的经典问题(1) 8-皇后问题
在一个8*8棋盘上放置8个皇后,且使得每两个 之间都不能互相“攻击”,也就是使得每两个 都不能在同一行、同一列及同一条斜角线上。
8皇后问题的解可以表示为8-元组(x1,…,x8) , 其中其中xi是第i行皇后所在的列号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2021
9
8.1.1 问题的解空间
对于n=3的0/1背包问题,其解空间树如图8.1.1-2所示,树中的 8个叶子结点分别代表该问题的8个可能解。
1 1
2
1
0
0
9
1
0
3
1
0
4
5
6
1
0
10
1
0
7
8
11
12
图8.1.1-2
3
1
0
14 15
2021
对物品1的选择 对物品2的选择 对物品3的选择
10
8.1.1 问题的解空间
Q
? 解空间大小: 88 8!
2021
8
8.1.1 问题的解空间
三、状态空间树:解空间的树结构
问题的解空间一般用解空间树(Solution Space Trees, 也称状态空间树)的方式组织,树的根结点位于第1层, 表示搜索的初始状态,第2层的结点表示对解向量的第一 个分量做出选择后到达的状态,第1层到第2层的边上标出 对第一个分量选择的结果,依此类推,从树的根结点到叶 子结点的路径(也可能是根节点到任何一个树中结点,但 不含搜索失败的结点),就构成了解空间的一个可能解。
40
45
51
56
61
3 4 2 4 3 2 3 4 1 4 1 32 4 1 4 1 2 3 21 3 1 2
4 6 9 11 14 16 20 22 25 27 30 32 36 38 41 43 46 48 52 54 57 59 62 64
4 34 2 2 3 4 3 4 13 1 4 24 12 12 3 3 12 1
假设集合Si的大小是mi ,解空间的大小为m=m1m2…mn。
2021
6
8.1.1 问题的解空间
显式约束条件常见的例子是:
当 xi≥0
即 Si={所有非负实数}
当 xi=0或xi=1
即 Si={0,1}
当 li xi ui 即
Si {a : li a ui}
注意:“解空间”是指满足显式约束条件的元组,并非一般意 义上的解。
隐式约束:规定解空间中那些实际上满足目标约束的向量。
2021
7
8.1.1 问题的解空间
例 8皇后问题 。
12345678
1
解的表示:X=(x1,x2,…,x8)
2
Q Q
显式约束: xi∈Si ,1≤i≤8, Si={1,2,3,4,5,6,7,8}
3 4Q 5 6Q
Q Q
隐式约束:
7
Q
任何两个皇后不能相互攻击 8
2021
5
8.1.1 问题的解空间
二、显式约束与隐式约束
用回溯法求解,它的解一般要求满足一组综合约束条件,这些 约束条件分为以下两类:
显式约束:限定每个xi只从一个给定的集合Si上取值。 为了用回溯法求解一个具有n个输入的问题,一般情况下, 将 其 可 能 解 表 示 为 满 足 某 个 约 束 条 件 的 等 长 向 量 X=(x1, x2, …, xn),其中分量xi (1≤i≤n)的取值范围是某个有限集合 Si={ai1, ai2, …, aimi},所有可能的解向量构成了问题的解空间。
第8章 回溯法
8.1 概 述 8.2 图问题中的回溯法 8.3 组合问题中的回溯法 8.4 实验项目——0/1背包问题
2021
1
8.1 概 述
8.1.1 问题的解空间 8.1.2 回溯法的设计思想 8.1.3 回溯法的求解过程 8.1.4 回溯法的算法描述 8.1.5 回溯法的时空性能
2021
2
8.1.1 问题的解空间
5 7 10 12 15 17 21 23 26 28 31 33 37 39 42 44 47 49 53 55 58 60 63 65
图8.1.1-4 n=4的TSP问题的解空间树
2021
4 34 2 2 3 4 3 4 13 1 4 24 12 12 3 3 12 1 5 7 10 12 15 17 21 23 26 28 31 33 37 39 42 44 47 49 53 55 58 60 63 65
解向量:由根结点到叶结点的路径所定义
图8.1.1-3 n=4的八皇后问题解空间树
2021
11
8.1.1 问题的解空间
对于n=4的TSP问题,其解空间树如图8.1.1-4所示,树中 的24个叶子结点分别代表该问题的24个可能解,例如结点5代 表一个可能解,路径为1→2→3→4→1,长度为各边代价之和。
1
1
4
2
3
2
18
34
50
Hale Waihona Puke 2 341 341 24
1 23
3
8
13
19 24
29 35
一、解空间概述 复杂问题常常有很多的可能解,这些可能解构成了
问题的解空间。
解空间也就是进行穷举的搜索空间,所以,解空间中 应该包括所有的可能解。
确定正确的解空间很重要,如果没有确定正确的解空 间就开始搜索,可能会增加搜索很多无用解,或者根本 就搜索不到正确的解。
2021
3
8.1.1 问题的解空间
例如:桌子上有6根火柴棒,要求以这6根火柴棒为边搭建4 个等边三角形。
{ ( ), (1), (2), (3), (1, 2), (1, 3), (2, 3), (1, 2, 3) }
(2)可能解由一个等长向量{x1, x2, …, xn}组成,其中 xi=1(1≤i≤n)表示物品i装入背包,xi=0表示物品i没有装入背包, 当n=3时,其解空间是:
{(0, 0, 0), (0, 0, 1), (0, 1, 0), (1, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 0), (1, 1, 1) }
(a) 二维搜索空间无解
(b) 三维搜索空间的解
图8.1.1-1 错误的解空间将不能搜索到正确答案
2021
4
8.1.1 问题的解空间
对于任何一个问题,可能解的表示方式和它相应的解释隐 含了解空间及其大小。
例如,对于有n个物品的0/1背包问题,其可能解的表示方 式可以有以下两种:
(1)可能解由一个不等长向量组成,当物品i(1≤i≤n)装入背包 时,解向量中包含分量i,否则,解向量中不包含分量i,当n=3 时,其解空间是:
4皇后问题的解空间树
1
2
18
1
2
3
4 34
2 34
1 34
1 24
50 1 23
3
8
13
19
24
29 35
40
45
51
56
61
3 4 2 4 3 2 3 4 1 4 1 32 4 1 4 1 2 3 21 3 1 2
4 6 9 11 14 16 20 22 25 27 30 32 36 38 41 43 46 48 52 54 57 59 62 64