人工智能课程实验·过河问题/实验一 知识表示方法
注:在校计算机学生一名,菜鸟一枚,这是人工智能这门课的课程实验,以此做记录
问题描述
实验一 知识表示方法
1.实验目的
(1)了解知识表示相关技术;
(2)掌握状态空间法的分析方法。
2.实验内容
状态空间法实验。从前有一条河,河的左岸有m(=3)个传教士、m(=3)个野人和一艘最多可乘n(=2)人的小船。约定左岸,右岸和船上或者没有传教士,或者野人数量不超过传教士,否则野人会把传教士吃掉。搜索一条可使所有的野人和传教士安全渡到右岸的方案。
(1)简述实验原理及方法,并请给出程序设计流程图。
本次试验选择传教士过河问题,以状态空间法实现。
解答步骤如下:
1) 设置状态变量并确定值域
M为传教士人数,C 为野人人数,B为船数,要求M>=C且M,C <= 3,L表示左岸,R表示右岸。
2) 确定状态组,分别列出初始状态集和目标状态集
用三元组来表示 :(ML , CL , BL)(均为左岸状态)其中0<=ML<=3 ,0<=CL<=0 ,BL ∈{ 0 , 1}
S0 :(3 , 3 , 1) —–> Sg: (0 , 0 , 0)
初始状态表示全部成员在河的的左岸;
目标状态表示全部成员从河的左岸全部渡河完毕。
3) 定义并确定规则集合
仍然以河的左岸为基点来考虑,把船从左岸划向右岸定义为Pij操作。其中,第一下标i表示船载的传教士数,第二下标j表示船载的食人者数;同理,从右岸将船划回左岸称之为Qij操作,下标的定义同前。则共有10种操作,操作集为
F={P01,P10,P11,P02,P20,Q01,Q10,Q11,Q02,Q20}
P10 if ( ML ,CL , BL=1 ) then ( ML–1 , CL , BL –1 )
P01 if ( ML ,CL , BL=1 ) then ( ML , CL–1 , BL –1 )
P11 if ( ML ,CL , BL=1 ) then ( ML–1 , CL–1 , BL –1 )
P20 if ( ML ,CL , BL=1 ) then ( ML–2 , CL , BL –1 )
P02 if ( ML ,CL , BL=1 ) then ( ML , CL–2 , BL –1 )
Q10 if ( ML ,CL , BL=0 ) then ( ML+1 , CL , BL+1 )
Q01 if ( ML ,CL , BL=0 ) then