本文内容来自中科院大学张文生老师的人工智能课件,整理by@tianranhe
3置换与合一.5归结原理.人工智能复习笔记,考试前还是没看懂,考试也来了,转过来好好看 - -
置换(substitution)
定义: 置换是一个形如{t1/v1,…, tn/vn}的有限集,其中每个vi是变量,ti是不同于vi的项(常量、变量或函数)(vi≠ti). 当i≠j时,vi≠vj.
无元素组成的置换称为空置换, 记为ε;
例子:
{a/x, w/y, f(s)/z}, {g(x)/x}是置换;
{x/x}, {y/f(x)}不是置换;
概念的理解:
置换:被置换元素必是变量,置换元素是项;
置换元素必不同于被置换元素;
在一次置换中,针对同一元素的置换只能出现一次(单次置换的同时性);
无元素组成的置换,成为空置换;
单次置换同时性:
θ是一个置换,E是一个表达式,Eθ称为E的实例(instance);
一次置换中,对所有变量的置换是同时进行的;
也就是说,一次置换中对不同的变量进行的置换不存在复合关系;
E=P(x,y,z), θ={a/x,f(b)/y,c/z},Eθ=P(y,z,z)
置换的复合只发生在多次置换中.
置换复合的过程:
θ={t1/x1,...,tn/xn},λ={u1/y1,...,um/ym},求θ° λ
1. 构成{t1λ/x1,...,tnλ/xn,u1/y1,...,um/ym};
2. 如果yj∈(x1,...,xn), 则删除uj/yj;
3. 如果tkλ=xk, 则删除tkλ/xk;
复合置换的性质:
(θ° λ)° μ=θ° (λ° μ) 成立
θ° λ=λ° θ 不一定成立
复合置换的例子:
θ={t1/x1,t2/x2}={f(y)/x,z/y}
λ={u1/y1,u2/y2,u3/y3}={a/x,b/y,y/z}
θλ={t1λ/x1,t2λ/x2,u1/y1,u2/y2,u3/y3} //分别对ti/xi, 进行与λ的复合
={f(b)/x,y/y,a/x,b/y,y/z} //注意单次置换的同时性
={f(b)/x,y/z}
合一(unification)
合一定义:E1θ=...=Enθ, 则称置换θ为{E1,...,En}的合一子(unifier). 如果对{E1,...,En}存在这样的合一子, 则称集合{E1,...,En}可合一.
例1:
E={P(a,y), P(x, f(b))}, θ={a/x, f(b)/y}.
E={P(a,b), P(x, f(b))}, 不可合一
合一子不一定唯一
E={P(a,y), P(x, f(b))}
θ1={a/x, f(b)/y} (唯一)
E={P(x,y), P(x,f(b))}
θ1={a/x, f(b)/y} (不唯一)
θ2={b/x, f(b)/y}
最一般合一子(most general unifier,mgu)
定义:如果对E的每个合一子θ, 都存在一个置换λ, 使得θ=γ°λ, 则称合一子γ是集合{E1,…,En}的最一般合一子.
例子:
E={P(x,y), P(x,f(b))}, θ1={a/x, f(b)/y}, θ2={b/x, f(b)/y}
最一般合一子 γ={f(b)/y}
θ1= γ° {a/x}, θ2= γ° {b/x}
是否存在寻找E的mgu的一般算法? 如何寻找E的mgu?
合一算法的考虑:
消除两个谓词之间项的差别. {P(x,…), P(a,…)}
非空表达式集W的差别集:
从左向右, 在W中的所有表达式, 遇到第一个不相同符号, 提取从这个符号开始的子表达式, 由此构成一个集合, 称为W的差别集, 记为D.
例子:
W={P(x,f(y,z),z,w), P(x,a), P(x, g(z),z,b)}
D={f(y,z), a, g(z)}
合一算法
W的合一算法:
1. K=0, Wk=W, γk=ε.
2. 如果Wk是单一的, 停机, γk是W的mgu.
否则,求出Wk的差别集Dk.
3. 如果在Dk中存在元素vk与tk, 使vk是一个未出
现在tk中的变量, 转4;
否则,停机, W是不可合一的.
4. 令γk+1=γk°{tk/vk}, Wk+1=Wk
°γk+1.
5. K=K+1. 转2.
换名:
{P(f(x), x), P(x, a)};
D={f(x), x}.
换名: {P(f(y), y), P(x, a)};
mgu: {f(a)/x, a/y}
例1:
求W={P(a,x,f(g(y))), P(z,f(z),f(u))}的mgu.
D0={a,z}, γ1= ε°{a/z}= {a/z}
W1= W0 · γ1
={P(a,x,f(g(y))), P(a,f(a),f(u))}
D1={x,f(a)}, γ2=γ1°{f(a)/x}= {a/z, f(a)/x}
W2= W1. γ2
={P(a,f(a),f(g(y))), P(a,f(a),f(u))}
D2={g(y),u}, γ3=γ2°{g(y)/u}={a/z,f(a)/x, g(y)/u}
W3= W2 · γ3 ={P(a,f(a),f(g(y)))}
γ3是mgu.
例2:
求W={Q(f(a), g(x)), Q(y, y)}的mgu.
D0={f(a),y} γ1= ε°{f(a)/y}= {f(a)/y}
W1= W0 · γ1
={Q(f(a), g(x)), Q(f(a), f(a))}
D1={g(x), f(a)}
不可合一, 没有mgu.
例3:
求W={P(f(y), y), P(x, a)}的mgu.
D0={f(y),x}, γ1= ε°{f(y)/x}= {f(y)/x}
W1 = W0 · γ1 ={P(f(y), y), P(f(y), a)}
D1={y, a}, γ2=γ1°{a/y}= {f(y)/x} °{a/y} = {f(a)/x, a/y}
W2 = W1 · γ2 ={P(f(a),a)}
γ2是mgu.