【AI学习笔记】置换、合一、归结原理

来源:互联网 发布:软件考试考什么 编辑:程序博客网 时间:2024/06/10 03:18

本文内容来自中科院大学张文生老师的人工智能课件,整理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.

1 0