- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
f ( B) = C4的解# 搜索满足多约束子集的计算是串行的, 没有
考虑到 A 中各属性取值之间的依赖关系#事实上 可以对两个或多个约 束的满足性进 行并行的判
ห้องสมุดไป่ตู้
定, 至少在形式上可以做到并行判定# 定理 1 对于下面的不定方程组: K1 d 1 + K1 d 2 + ,+ Kl dl = C1 ¹ K1 e1 + K2 e2 + ,+ Kl el = C2 º ( 6)
if ( IsLin( A rray, C- count, L en- 1, Solution) ) { Solution [ L en- 1 ] = count/ Ar ray [ L en- 1] ; return 1; } return 0; }
下面求这个递归算法最坏情况下( 无解) 时间 复杂度#考虑三维特例: K1d 1+ K2 d2+ K3d 3= C#K3 的取值共有õC/ d38+ 1 个, 为方便计算多计一个, 取 0 [ K3 [ 7C/ d 3ô#每当 K3 取定一个值 K* 便对应 出一个二维问题 K1 d1+ K2 d2= C- K* d3, 总共对 应出7 C/ d3ô+ 1 个二维问题, 在几何上相当于对应 了7C / d3ô+ 1 个平面, 如图 2 所示#由前边二维问 题的讨论可知各平面上的测试点数为
S 3 = ( 7C / d 2ô+ 0) (7 C / d 3ô+ 1) / 2 # 推广之即可得 l 维情况下的测试点总数:
S l = ( Sl- 1 + 0) (7 C / dlô+ 1) / 2, 则 Sl = (7C/ d2ô+ 1)(7 C/ d 3ô+ 1) ,(7C/ dlô+ 1)/ 2l- 1 # 如果忽略掉 1, 可得求解式( 2) 的时间复杂度为
为方便起见, 设属性 B. 1, B. 2, ,, B. m 对应 的定义域为 D = D1 = ,= Dm = { d1, d 2, ,, dl } , 其中 d 1, d 2, ,, dl 为非负整数#
3 单约束简单 CSP 算法
考虑简单 CSP 问题3A , b1. 1+ b2. 1+ ,+ bk. 1= C4, 由于 b1. 1, b2. 1, ,, bk. 1 都取自{ d1, d2, ,, dl } , 且 A = n, 因此共 n 个取自{ d1, d2, ,, dl } 的非负整数, 于是问题转化为在这 n 个非负整
{ if( Len= = 1) if( ( C% Arr ay [ 0] ) = = 0) { Solution [ 0] = C/ A rray[ 0] ; return 1; } else r eturn 0;
int count; for ( count = 0; count3= C; count+ = Arr ay [ L en- 1] )
t2 s#
Kl
hl 1 hl 2 , hl , l- 1 tl- 1
即 K= HT , 其中 H 为整系数矩阵, T 为整参数矩
阵#T 任取一组整数便 得到方程的一个解#加入 取值范围约束条件便可得到一个整数不等式组:
0 [ HT [ L, L = ( L 1, L 2, ,, Ll ) T # ( 4)
Ki 为变量, 0 [ Ki [ L i , i = 1, 2, ,, l# 将( L 1+ 1) 个 d 1, ( L 2+ 1) 个 d 2, ,, ( L l + 1)
个 dl 组成降 序序列: dc1, dc2, ,, dcH, 其中 H= L 1+ ,+ L l + l #类似地, 可得升序序列: ec1, ec2,
0 [ Ki [ L i , i = 1, 2, ,, l #
求解式( 3) 涉及到数论中非常复杂的不定方程
非负整数解的问题, 迄今只得到了一些局部结论# 本文提出 3 种算法, 并详细讨论第 3 种#
( 1) 整数规划法
引入非负整数变量 z , 则式( 3) 可以转化为下 面的线性整数规划问题:
min z
的方法对解决本文所讨论问题颇为适用# ( 2) 不等式组法
方程 K1 d 1+ ,+ Kldl = C 有整数解的充要条
件是: K1, ,, Kl 的最大公约数可整除 C#文献[ 8] 给出了一个程序化方法可以求得通解:
K1
h11 h12 , h1, l- 1 t 1
K2 =
s
h21 h22 ss
, h2, l- 1 ,s
最坏情况下的时间 复杂度, 从而能够 比较清 晰地描 述一类 约束满 足问题的 一般分 析过程, 揭示 了
约束满足问题同经典的整数规划、数论和整数环论的 联系# 关 键 词: 约束满足问题( CSP ) ; 不定方程; 整数规划; 偏移方程; 时间复杂度
中图分类号: T P 311
文献标识码: A
约束满足问题( Constraint Satisfaction Problem, CSP) 是人工智能领域的一个重要问题, 在网络规 划、语言理解、模式识别等领域也有着重要的应用#
一类约束满足问题及其算法
蒋本铁1, 毕世飞2
( 1. 东北大学 计算中心, 辽宁 沈阳 110004; 2. 东北大学信息科学与工程学院, 辽宁 沈阳 110004)
摘
要: 针 对具有解析 约束形式、同一 变量多赋值 的约束满足 问题, 提出了一 种新的约束 满
足问题定 义# 通过一种特殊约束满足问题的研究提出一套建立 在这个定 义基础之上 的概念和 三种 算法: 整数规划法、不等式组 法和直接求 解不定 方程法, 详细 研究了 其中的 第三种 算法, 并给出 了
b1. 2+ b2. 2+ ,+ bk. 2 = C2, ,,
b1. m + b 2. m + ,+ bk. m = Cm # 这是一种系数全为 1 的线性约束, 且每个约 束只对应一个属性, 这类 CSP 问题不妨称之为简 单一对一线性约束满足问题, 以下称简单 CSP, 其 约束形式可以简记为
f 1( B. 1) = C1, f 2( B. 2) = C2, ,, f m( B. m) = Cm #
设集合 A = { a1, a2, ,, an } , 其中任一元素 ai 有 m 个属性, 记作 ai . 1, ai . 2, ,, ai . m , 假定 属性的取值总是非负整数#现在要从 A 中选取一 个子集 B = { b1, b 2, ,, bk } , 使得 B 各元素的属 性值满足一些约束条件( 这里只讨论等值约束) :
0 [ Ki [ Ai #
( 2)
1 170
东北大学学报( 自然科学版)
第 24 卷
有限集 A 中属性取特定值 di 的元素的个数
是有限的#设 A 中属性取值为 d 1, ,, dl 的元素 个数为 B1, ,, Bl , L i = m in{ Ai , Bi } , 问题转化为
K1 d1 + K2 d2 + ,+ Kldl = C , ( 3)
1 约束满足问题的定义
约束满 足问题的 经典定义[ 1~ 3] 主要 体现的 是一组赋值和多个约束之间的满足关系, 其基本 算法是递归形式的回溯算法[ 4, 5] ( 算法 1) 和弧一 致性算法[ 6] #在 应用 中还 提出 了多 组 赋值 的问 题, 此时出现了同一变量的不同取值之间的制约 问题#为此, 下面给出另外一种 CSP 的定义#
K1 d 1 + K2 d 2 + ,+ Kldl + z = C ,
0 [ Ki [ L i , i = 1, 2, ,, l ; Ki , z 为非负整数 # 若求得整数规划最优解为 0, 则由此最优解
可得到式( 3) 的一个解#整数规划有大量的成果可 应用, 文献[ 7] 中将整数规划化为连续非线性规划
图 1 二维特例 Fi g. 1 Case of 2D
对于点 T 这类偏离直线很远的点是没有必 要测试的, 只需要测试直线两侧的点就足够了, 从 纵轴方向看只需测试 7K2= 0, 7 K2= 7, 7K2= 14 共 3 个点就够了#把这种想法具体化并推广到多维 情况可得到如下算法( 算法 2) : int IsLin( int Array [ ] , int C, int L en, int Solut ion [ ] ) / * 如果 Array [ 0] ~ Array [ L en- 1] 能组合出 整数 C 返回 1( 有解) , 解放入数组 Solut ion; 否则 返回 0* /
,, ecH#
N
N- 1
6 6 设下标 N 满足: eci \ C 2 且 eci [ C2,
i= 1
i= 1
N
6 取 M = max 1+ C 1, 1+ dci , 则对于算法 3 i= 1
第24卷第 12期 2003 年 12 月
东北大学学报( 自然科学版) Journal of Nort heastern U niversity( Natural Science)
文章编号: 1005-3026( 2003) 12- 1169- 04
Vol124, No. 12 Dec. 2 0 0 3
f 1( B) = C1, f 2( B) = C 2, ,, f i ( B) = Ci # 其中, C1, C 2, ,, Ci 为非负整常数#
这些约束可以简记为 f ( B) = C, 集合 A 和 约束 f ( B) = C 组 成一 个约 束 满足 问题, 记作 < A , f ( B) = C> #满足约束 f ( B) = C 的集合 B 称为一个解, 通常 B 中元素的个数远小于 A 中 元素的个数, 即 B n A #
显然式( 4) 和式( 3) 同解#不等式组( 4) 在实数 集上的求解已经有了很好的算法[ 9] , 整数集上的求
解还少有文献论及#若结合数论和整数环论的研 究[ 10] , 作者认为不等式组法是很有希望的算法#
( 3) 直接求解不定方程法
先考虑求解式( 2) 的算法#考虑二维特例: 3K1 + 7K2= 17, 如图 1 所示#搜索它的非负整数解相 当于考查直线 3 K1+ 7 K2= 17 是否经过交叉点#
4 多约束简单 CSP 算法
对于多约束问题3A , f ( B) = C4, 一个显然
的算法是先找出3A , f 1( B) = C4的所有解, 然后
在这些解中寻找所有满足 f 2 ( B) = C 的解, 以此
类推#此算法的困难在于当 A 很大时, 满足 f 1 ( B) = C 解的数量 C一般非常大#理论和试验表 明, 这 C个解中只有非常少的一部分能成为3A ,
数中取 K1 个 d1, K2 个 d2, ,, Kl 个 dl 使得 K1 d1 + K2 d2 + ,+ Kldl = C ,
0 [ Ki [ õC / di 8, i = 1, 2, ,, l # ( 1)
设 Ai = õC / di 8, 则式( 1) 等价于 K1 d1 + K2 d2 + ,+ Kldl = C ,
7C / d 2 - K3( d 3/ d2) ô#
图 2 三维特例示意 Fi g. 2 Sketch map of 3D case
在向 上 取 整 符 号 内, 当 K3 从 0 变 化 到 7 C/ d 3ô时, 测试点数是7 C / d2ô到 0 之间的等差 数列#忽略向上取整符号所导致误差, 根据等差数 列求和公式得到总的测试点数为
2 一对一简单线性约束满足问题
在 CSP 问题中一类约束形式是
收稿日期: 2003- 06-09 基金项目: 辽宁省自然科学基金资助项目( 9910701001) # 作者简介: 蒋本铁( 1947- ) , 男, 辽宁大连人, 东北大学教授#
b1. 1+ b2. 1+ ,+ bk. 1 = C1,
O ( Cl- 1/ ( 2l- 1 d 2 ,dl ) ) = O ( A2 ,Al / 2l- 1) # ( 5)
当 l = D 增加到一定程度后可能出现 Ai <
第 12期
蒋本铁等: 一类约束满足问题及其算法
11 71
1 的情况, 此时时间规模便不再随着 l 的增长呈 指数增长#只有当 l 和 C 都 很大的时候, 时间规 模才会急剧增加#在算法 2 中加入对 Ki 取值范围 的限制可得到式( 3) 的算法( 算法 3) #