1、实验目的
- 掌握谓语逻辑表示法。
- 掌握人工智能谓词逻辑中的经典案例。
2、实验原理
一阶谓词逻辑表示法是一种重要的知识表示方法,它以数理逻辑为基础,是到目前为止能够表达人类思维活动规律的一种最精准形式语言。它与人类的自然语言比较接近,又可方便存储到计算机中去,并被计算机进行精确处理。因此,它是一种最早应用于人工智能中的表示方法。
人类的一条知识一般可以由具有完整意义的一句话或几句话表示出来,而这些知识要用谓词逻辑表示出来,一般是一个谓词公式。所谓谓词公式就是用谓词联接符号将一些谓词联接起来所形成的公式。
用谓词公式既可以表示事物的状态、属性和概念等事实性的知识,也可以表示事物间具有确定因果关系的规则性知识。对事实性知识,谓词逻辑的表示法通常是由以合取符号(∧)和析取符号(∨)联接形成的谓词公式来表示。
一阶谓词逻辑是一种形式语言系统,它用数理逻辑的方法研究推理的规律,即条件与结论之间的蕴涵关系,其有以下一些特点。
①自然性。谓词逻辑是一种接近于自然语言的形式语言,用它表示问题易于被人理解和接受。
②适宜于精确性知识的表示,而不适宜于不确定性知识的表示。用谓词逻辑表示的问题是以谓词公式的形式为结果的,谓词公式的逻辑值只有“真”和“假”两种结果,而对某一知识有百分之几的可能为“真”或为“假”的情况无法表示,因此它适于表示那些精确性的知识,而不适于表示那些具有不确定性和模糊性的知识。
③易实现。用谓词逻辑法表示的知识可以比较容易地转换为计算机的内部形式,易于模块化,便于对知识的添加、删除和修改。
④与谓词逻辑表示法相对应的推理方法。在用谓词逻辑对问题进行表示以后,求解问题就是要以此表示为基础进行相应的推理。与谓词逻辑表示法相对应的推理方法称为归结推理方法或消除法。
3、实验内容
-
实宿主机前期配置
-
猴子摘香蕉问题
-
问题描述:房间内有一只猴子、一个箱子和一束香蕉。香蕉挂在天花板下方,但猴子的高度不足以碰到它,那么只猴子怎样才能摘到香蕉呢?
4.实验流程图
5.实验代码
def monkey_go_box(monkey,box):
global i #步数
i+=1
print("step "+str(i)+": "+"Monkey从"+monkey+"走向"+box)
def monkey_push_box(box,banana):
global i
i+=1
print("step "+str(i)+":"+"Monkey将箱子从"+box+"推向"+banana)
def monkey_clim_box():
global i
i+=1
print("step "+str(i)+": "+"Monkey爬上箱子")
def monkey_grasp():
global i
i+=1
print("step "+str(i)+": "+"Monkey摘到香蕉")
def monkey_drop():
global i
i+=1
print("step "+str(i)+": "+"Monkey爬下箱子")
if __name__ == "__main__":
i=0
print("请输入monkey位置,猴子是否在箱子上(1:在,0:不在)上以及猴子是否摘取香蕉(1:是,0:否),香蕉的位置,箱子的位置:")
monkey,monkey_y,monkey_re,banana,box=input().split(",")
while True:
if monkey!=box:
monkey_go_box(monkey,box)
monkey=box
continue
if box!=banana and monkey==box and monkey_y!="1":
monkey_push_box(box,banana)
monkey=box=banana
continue
if monkey_y!="1" and monkey==box:
monkey_clim_box()
monkey_y="1"
continue
if monkey_y=="1" and box==banana and monkey_re!="1":
monkey_grasp()
monkey_re="1"
continue
if monkey_y=="1" and box!=banana:
monkey_drop()
monkey_y="0"
continue
if monkey_re =="1":
break
6.运行结果截图
1.猴子在箱子上,已经摘到香蕉
2猴子在箱子上,没有摘到香蕉
3.猴子不在箱子上,没摘到香蕉
4.猴子与香蕉位置相同,与箱子位置不同
5.猴子与箱子位置相同,与香蕉位置不同
6.箱子与香蕉位置相同,与猴子位置不同
7.位置都不同