谓词逻辑是人工智能中最重要的一种知识表示方法,可用于表述各种描述性语句,并可有效地存储到计算机中进行处理。谓词演算可用来建立自动定理证明系统、基于规则的演绎系统等。下面的例子是谓词逻辑在人工智能知识表示中的应用。
例2.7.1 房间里有一只猴子和一个箱子,天花板上挂了一串香蕉,其位置关系如图2.7.1所示,猴子在 a 点,为了拿到香蕉,它必须把箱子从 b 点推到香蕉下面的 c 点,然后再爬到箱子上。请用谓词逻辑表示猴子摘香蕉问题。问题的初始状态是图2.7.1所示的状态,目标状态是箱子位于位置 c 、猴子站在箱子上、猴子拿到了香蕉。
图2.7.1 猴子摘香蕉问题
1)定义描述环境状态的谓词。
AT( x , w ): x 在 w 处,个体域: x ∈{monkey}, w ∈{ a , b , c }。
HOLD( x , t ): x 手中拿着 t ,个体域: t ∈{box,banana}。
EMPTY( x ): x 手中是空的。
ON( t , y ): t 在 y 处,个体域: y ∈{ b , c ,ceiling}。
CLEAR( y ): y 上是空的。
BOX( u ): u 是箱子,个体域: u ∈{box}。
BANANA( v ): v 是香蕉,个体域: v ∈{banana}。
2)使用谓词、联结词和量词来表示环境状态。
问题的初始状态可表示为 S 0 :AT(monkey, a )∧EMPTY(monkey)∧ON(box, b )∧ON(banana,ceiling)∧CLEAR( c )∧BOX(box)∧BANANA(banana)。
要达到的目标状态为 S g :AT(monkey, c )∧HOLD(monkey,banana)∧ON(box, c )∧CLEAR(ceiling)∧CLEAR( b )∧BOX(box)∧BANANA(banana)。
3)从初始状态到目标状态的转化,猴子需要完成一系列操作,定义操作类谓词表示其动作。
WALK( m , n ):猴子从 m 处走到 n 处,个体域: m , n ∈{ a , b , c }。
CARRY( s , r ):猴子在 r 处拿到 s ,个体域: r ∈{ b ,ceiling}, s ∈{box,banana}。
CLIMB( u , c ):猴子在 c 处爬上 u 。
这3个操作也可分别用条件和动作来表示。条件直接用谓词公式表示,是为完成相应操作所必须具备的条件。当条件中的事实均为真时,则可激活操作规则,于是可执行该规则中的动作部分。动作通过前后状态的变化表示,即通过从动作前状态表中删除或增加谓词公式来描述动作后的状态。
a)WALK( m , n ):猴子从 m 处走到 n 处。
条件:AT(monkey, m )
b)CARRY( s , r ):猴子在 r 处拿到 s 。
条件:AT(monkey, r )∧EMPTY(monkey)∧ON( s , r )∧BOX(box)∧BANANA(banana)
c)CLIMB( u , c ):猴子在 c 处爬上 u 。
条件:AT(monkey, c )∧HOLD(monkey, u )∧CLEAR( c )∧BOX(box)∧BANANA(banana)
4)按照行动计划,一步步进行状态替换,直至目标状态。
在上述过程中,当猴子执行某一个操作之前,需要检查当前状态是否满足所要求的条件,条件满足才能执行相应的操作。
◀
通过上面的例子可以看出,谓词逻辑可以有效地描述智能行为过程,可以通过对一组命题集或复杂的知识进行形式化表示而将智能行为过程输入计算机中,建立计算机系统知识库,从而进行问题求解或机器定理证明。