-知识表示方法部分习题及答案
第 2 章-知识表示方法 部分习题及答案 本页仅作为文档封面,使用时可以删除 This document is for reference only-rar21year.March 第2章知识表示方法部分 设有如下语句,请用相应的谓词公式分别把他们表示出来: (1)(1)有的人喜欢梅花,有的人喜欢菊花,有的人既喜欢梅花又喜欢菊花 。 解:解:定义谓词 P(x):x 是人 L(x,y):x 喜欢y 其中,y 的个体域是{梅花,菊花}。 将知识用谓词表示为: (x )(P(x) →L(x,梅花)∨ L(x,菊花)∨ L(x,梅花)∧ L(x,菊花)) (2)(2)有人每天下午都去打篮球。 解:解:定义谓词 P(x):x 是人 B(x):x 打篮球 A(y):y 是下午 将知识用谓词表示为: (x )(y) (A(y) →B(x)∧ P(x)) (3)(3)新型计算机速度又快,存储容量又大。 解:解:定义谓词 NC(x):x 是新型计算机 F(x):x 速度快 B(x):x 容量大 将知识用谓词表示为: (x) (NC(x) →F(x)∧ B(x)) (4)(4)不是每个计算机系的学生都喜欢在计算机上编程序。 解:解:定义谓词 S(x):x 是计算机系学生 L(x, pragramming) :x 喜欢编程序 U(x,computer) :x 使用计算机 将知识用谓词表示为: ¬ (x) (S(x) →L(x, pragramming) ∧ U(x,computer)) (5)(5)凡是喜欢编程序的人都喜欢计算机。 解:解:定义谓词 P(x):x 是人 L(x, y):x 喜欢y 将知识用谓词表示为: (x) (P(x) ∧ L(x,pragramming) →L(x, computer)) 用谓词表示法求解机器人摞积木问题。设机器人有一只机械手,要处理的世界有一张桌子,桌上可堆放 若干相同的方积木块。机械手有4 个操作积木的典型动作:从桌上拣起一块积木;将手中的积木放到桌之上; 在积木上再摞上一块积木;从积木上面拣起一块积木。积木世界的布局如下图所示。 解:(1)先定义描述状态的谓词 CLEAR(x) :积木x 上面是空的。 ON(x, y) :积木x 在积木y 的上面。 ONTABLE(x) :积木x 在桌子上。 HOLDING(x) :机械手抓住x。 HANDEMPTY :机械手是空的。 其中,x 和 y 的个体域都是{A, B, C} 。 问题的初始状态是: ONTABLE(A) ONTABLE(B) ON(C, A) CLEAR(B) CLEAR(C) HANDEMPTY 问题的目标状态是: ONTABLE(C) ON(B, C) ON(A, B) CLEAR(A) HANDEMPTY (2)再定义描述操作的谓词 在本问题中,机械手的操作需要定义以下 4 个谓词: Pickup(x) :从桌面上拣起一块积木x。 Putdown(x) :将手中的积木放到桌面上。 Stack(x, y) :在积木x 上面再摞上一块积木y。 Upstack(x, y) :从积木x 上面拣起一块积木y。 其中,每一个操作都可分为条件和动作两部分,具体描述如下: Pickup(x) C A B 图 机器人摞积木问题 A B C 条件:ONTABLE(x) ,HANDEMPTY ,CLEAR(x) 动作:删除表: ONTABLE(x) ,HANDEMPTY 添加表:HANDEMPTY(x) Putdown(x) 条件:HANDEMPTY(x) 动作:删除表: HANDEMPTY(x) 添加表:ONTABLE(x) ,CLEAR(x),HANDEMPTY Stack(x, y) 条件:HANDEMPTY(x) ,CLEAR(y) 动作:删除表: HANDEMPTY(x) ,CLEAR(y) 添加表:HANDEMPTY ,ON(x, y),CLEAR(x) Upstack(x, y) 条件:HANDEMPTY ,CLEAR(y),ON(y,x) 动作:删除表: HANDEMPTY ,ON(y, x) 添加表:HOLDING(y) ,CLEAR(x) (3)问题求解过程 利用上述谓词和操作,其求解过程为: ONTABLE(A) ONTABLE(A) ONTABLE(A) ONTABLE(B) ONTABLE(B) ONTABLE(B) Upstack(A,C)Putdown(C ONTABLE(C) Pickup(B) ON(C, A) HOLDING(C) CLEAR(A) CLEAR(B) CLEAR(A) CLEAR(B) CLEAR(C) CLEAR(B) CLEAR(C) HANDEMPTY CLEAR(C) HANDEMPTY ONTABLE(C) ONTABLE(C) ON(B,C) Stack(B,A) ON(B,C) ON(A,B) CLEAR(A) CLEAR(A) CLEAR(B) HANDEMPT HOLDING(A) ONTABLE(A)ONTABLE(A) ONTABLE(C)ONTABLE(C) Stack(C,B)Pickup(A) HOLDING(B)ON(B,C) CLEAR(A)CLEAR(A) CLEAR(B)CLEAR(B) CLEAR(C)HANDEMPTY 用谓词表示法求解农夫、狼、山羊、白菜问题。农夫、狼、山羊、白菜全部放在一条河的左岸,现在要 把他们全部送到河的右岸去,农夫有一条船,过河时,除农夫外船上至多能载狼、山羊、白菜中的一种。狼要 吃山羊,山羊要吃白菜,除非农夫在那里。似规划出一个确保全部安全过河的计划。请写出所用谓词的定义, 并给出每个谓词的功能及变量的个体域。 解:解:(1)先定义描述状态的谓词 要描述这个问题,需要能够说明农夫、狼、羊、白菜和船在什么位置,为简化问题表示,取消船在河中 行驶的状态,只描述左岸和右岸的状态。并且,由于左岸和右岸的状态互补,因此可仅对左岸或右岸的状态做 直接描述。本题选择对左岸进行直接描述的方法,即定义谓词如下: AL(x):x 在左岸 其中,x 的个体域是{农夫,船,狼,羊,白菜 }。对应地,¬AL(x)表示x 在右岸。 问题的初始状态: AL(农夫) AL(船) AL(狼) AL(羊) AL(白菜) 问题的目标状态: ¬AL(农夫) ¬AL(船) ¬AL(狼) ¬AL(羊) ¬AL(白菜) (2)再定义描述操作的谓词 本题需要以下4 个描述操作的谓词: L-R:农夫自己划船从左岸到右岸 L-R(x):农夫带着x 划船从左岸到右岸 R-L:农夫自己划船从右岸到左岸 R-L(x):农夫带着x 划船从右岸到左岸 其中,x 的个体域是{狼,羊,白菜}。 对上述每个操作,都包括条件和动作两部分。它们对应的条件和动作如下: L-R:农夫划船从左岸到右岸 条件:AL(船),AL(农夫),¬AL(狼)∨ ¬AL(羊),¬AL(羊)∨ ¬AL(白菜) 动作:删除表: AL(船),AL(农夫) 添加表:¬AL(船),¬AL(农夫) L-R(狼):农夫带着狼划船从左岸到右岸 条件:AL(船),AL(农夫),AL(狼),¬AL(羊)