知识表示|一阶谓词逻辑表示法

  • 问题描述

一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设猴子位置为A,香蕉位置在B,箱子位置为C),如何行动可摘取到香蕉。

  • 算法介绍——一阶谓词逻辑表示法

分别定义描述状态和动作的谓词。

描述状态的谓词:EMPTY(y):猴子monkey手里是空的;AT(y,z):y在z处;HOLDS(w):猴子monkey拿着w;ONBOX(x):猴子monkey在x上。

变元的个体域:x的个体域为{box},y的个体域是{monkey,box,banana},z的个体域为{a,b,c},w的个体域是{banana,box}。

问题的初始状态为:AT(monkey,a),AT(banana,b),AT(box,c),EMPTY(monkey)。

目标状态为:AT(monkey,b),AT(banana,b),AT(box,b),ONBOX(box),HOLDS(banana)。

猴子行动的目标是把问题的初始状态转换为目标状态。

  • 算法实现

猴子行动包括以下操作:

Goto(x,y)

条件:AT(monkey,x)

动作:删除表:AT(monkey,x)

      添加表:AT(monkey,y)

MoveBox(x,y)

条件:AT(monkey,x),AT(box,x),EMPTY(monkey)

动作:删除表:AT(monkey,x),AT(box,x)

      添加表:AT(monkey,y),AT(box,y)

Climb(x)

条件:AT(monkey,x),AT(box,x),ONBOX(null)

动作:删除表:ONBOX(null)

      添加表:ONBOX(box)

Pick(x)

条件:AT(monkey,x),AT(box,x),AT(banana,x),ONBOX(box)

动作:删除表:EMPTY(monkey)

      添加表:HOLDS(banana)

则猴子具体行动为:

①初始状态:AT(monkey,a),AT(banana,b),AT(box,c),EMPTY(monkey)

②Goto(a,c):AT(monkey,c),AT(banana,b),AT(box,c),EMPTY(monkey)

③MoveBox(c,b):AT(monkey,b),AT(banana,b),AT(box,b),EMPTY(monkey)

④Climb(b):AT(monkey,b),AT(banana,b),AT(box,b),EMPTY(monkey),ONBOX(box)

⑤Pick(b):AT(monkey,b),AT(banana,b),AT(box,b),HOLDS(banana),ONBOX(box)

实验具体运行结果如下:

图1 程序运行结果

  • 讨论及结论

一阶谓词逻辑表示法是一种重要的知识表示方法,它以数理逻辑为基础,是到目前为止能够表达人类思维活动规律的一种最精确的形式语言。

使用一阶谓词逻辑表示法能够有效完整表示变化的过程,利于编程逻辑的实现,在一些复杂问题上能够一定程度上简化问题的复杂程度。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值