人工智能在一阶逻辑中的统一

本文概述

  • 统一条件
  • 统一算法
  • 算法的实现
  • 统一是通过查找替换使两个不同的逻辑原子表达式相同的过程。统一取决于替换过程。
  • 它使用两个文字作为输入,并使用替换使它们相同。
  • 令Ψ1和be2是两个原子语句,????是一个统一符,使得Ψ1???? = Ψ2????,则可以表示为UNIFY(Ψ1,Ψ2)。
  • 示例:查找Unify {King(x),King(John)}的MGU
令Ψ1= King(x),Ψ2= King(John),
替换θ= {John / x}是这些原子的统一符,并应用此替换,因此两个表达式将相同。
  • UNIFY算法用于统一,该算法采用两个原子语句并为这些语句返回一个统一符(如果存在)。
  • 统一是所有一阶推理算法的关键组成部分。
  • 如果表达式彼此不匹配,则返回失败。
  • 替代变量称为“最通用统一者”或MGU。
例如。假设有两个不同的表达式,P(x,y)和P(a,f(z))。
在此示例中,我们需要使以上两个语句彼此相同。为此,我们将执行替换。
P(x,y)… … … (i)P(a,f(z))… … … (ii)
  • 在第一个表达式中将x替换为a,将y替换为f(z),并将其表示为a / x和f(z)/ y。
  • 使用这两个替换,第一个表达式将与第二个表达式相同,并且替换集将为:[a / x,f(z)/ y]。
统一条件以下是统一的一些基本条件:
  • 谓词符号必须相同,具有不同谓词符号的原子或表达式永远不能统一。
  • 两个表达式中的参数个数必须相同。
  • 如果同一表达式中存在两个相似的变量,统一将失败。
统一算法算法:Unify(Ψ1,Ψ2)
Step. 1: If Ψ1 or Ψ2 is a variable or constant, then: a) If Ψ1 or Ψ2 are identical, then return NIL. b) Else if Ψ1is a variable, a. then if Ψ1 occurs in Ψ2, then return FAILURE b. Else return { (Ψ2/ Ψ1)}. c) Else if Ψ2 is a variable, a. If Ψ2 occurs in Ψ1 then return FAILURE, b. Else return {( Ψ1/ Ψ2)}. d) Else return FAILURE. Step.2: If the initial Predicate symbol in Ψ1 and Ψ2 are not same, then return FAILURE. Step. 3: IF Ψ1 and Ψ2 have a different number of arguments, then return FAILURE. Step. 4: Set Substitution set(SUBST) to NIL. Step. 5: For i=1 to the number of elements in Ψ1. a) Call Unify function with the ith element of Ψ1 and ith element of Ψ2, and put the result into S. b) If S = failure then returns Failure c) If S ≠ NIL then do, a. Apply S to the remainder of both L1 and L2. b. SUBST= APPEND(S, SUBST). Step.6: Return SUBST.

算法的实现步骤1:将替换集初始化为空。
步骤2:以递归方式统一原子语句:
  1. 检查相同的表达式匹配。
  2. 如果一个表达式是变量vi,而另一个表达式是不包含变量vi的术语ti,则:将ti / vi替换为现有替换将ti / vi添加到替换集列表中。如果两个表达式都是函数,则函数名称必须相似,并且两个表达式中的参数数目必须相同。
对于以下每对原子语句,找到最通用的统一词(如果存在)。
1.找到{p(f(a),g(Y))和p(X,X)}的MGU
Sol:S0 => 这里,Ψ1= p(f(a),g(Y)),Ψ2= p(X,X)SUBSTθ= {f(a)/ X} S1 => Ψ1= p(f (a),g(Y))和Ψ2= p(f(a),f(a))SUBSTθ= {f(a)/ g(y)},统一失败。
【人工智能在一阶逻辑中的统一】这些表达式无法统一。
2.找出{p(b,X,f(g(Z)))和p(Z,f(Y),f(Y))}的MGU
在此,Ψ1= p(b,X,f(g(Z))),Ψ2= p(Z,f(Y),f(Y))S0 => {p(b,X,f(g( Z))); p(Z,f(Y),f(Y))}代替θ= {b / Z}
S1 => {p(b,X,f(g(b))); p(b,f(Y),f(Y))}代替θ= {f(Y)/ X}
S2 => {p(b,f(Y),f(g(b))); p(b,f(Y),f(Y))} SUBSTθ= {g(b)/ Y}
S2 => {p(b,f(g(b)),f(g(b)); p(b,f(g(b)),f(g(b))}}成功统一。 {b / Z,f(Y)/ X,g(b)/ Y}。
3.找到{p(X,X)和p(Z,f(Z))}的MGU
Ψ1= {p(X,X),,2 = p(Z,f(Z))S0 => {p(X,X),p(Z,f(Z))} SUBSTθ= {X / Z} S1 => {p(Z,Z),p(Z,f(Z))} SUBSTθ= {f(Z)/ Z},统一失败。
因此,这些表达式无法统一。
4.找到UNIFY的MGU(素数(11),素数(y))
Ψ1= {素数(11),Ψ2=素数(y)} S0 => {素数(11),素数(y)} SUBSTθ= {11 / y}
S1 => {prime(11),prime(11)},成功统一。统一符:{11 / y}。
5.找出Q(a,g(x,a),f(y)),Q(a,g(f(b),a),x)}的MGU
在此,Ψ1= Q(a,g(x,a),f(y)),Ψ2= Q(a,g(f(b),a),x)S0 => {Q(a,g( x,a),f(y)); Q(a,g(f(b),a),x)} SUBSTθ= {f(b)/ x} S1 => {Q(a,g(f(b),a),f(y) ); Q(a,g(f(b),a),f(b))}
SUBSTθ= {b / y} S1 => {Q(a,g(f(b),a),f(b)); Q(a,g(f(b),a),f(b))},成功统一。
统一符:[a / a,f(b)/ x,b / y]。
6. UNIFY(知道(Richard,x),知道(Richard,John))
在这里,Ψ1= Knows(Richard,x),Ψ2= Knows(Richard,John)S0 => {Knows(Richard,x); Knows(Richard,John)} SUBSTθ= {John / x} S1 => {Knows(Richard,John); 知道(理查德·约翰)},成功地实现了统一。统一者:{John / x}。

    推荐阅读