一、解的表现形式
一般回溯法,其解满足事先定义好的某个约束的向量(X1,X2,……Xn),要善于将变长解转化为定长解。
二、基本思想
每个xi属于一个有限的线序集Xi。
解向量空间取值属于: X1 x X2 ……Xn (笛卡尔积的元素)。
1、算法由空向量开始,选X1最小元素加入。
2、若x1为部分解,则选X2中最小元素作为x2加入,依次类推。
若部分为:(x1,x2,……xj)
需考虑下一情况 v= (x1,x2,……xj,xj+1)
(1)、若v仅表示部分解,算法选择Xj+2中最小元素,继续向前。
(2)、若v不是最终解 且 v亦不是部分解
a、若Xj+1仍有其他元素,则将xj+1置为Xj+1中下一个元素。
b、若Xj+1被穷尽,将xj置为Xj中下一个元素(回溯)。
c、若穷尽Xj仍无,则将x-1置为Xj-1中下一个元素(回溯),依次类推。
三、典型例题
1、子集和数问题。
四、回溯法求解三个步骤
1、定义一个解空间,其包含问题的解。
2、用易于搜索的方式组织解空间。
3、深度优先搜索解空间,获得问题的解。