1、实验内容
设已知初始事实存放在综合数据库中:
该动物身上有:暗斑点,长脖子,长腿,奶,蹄·推理机构的工作过程:
( 1)从规则库中取出r,检查其前提是否可与综合数据库中的已知事实匹配。匹配失败则r不能被用于推理。然后取r,进行同样的工作。匹配成功则r,被执行·综合数据库:
该动物身上有:暗斑点,长脖子,长腿,奶,蹄,哺乳动物
(2)分别用r,r4,rs,r,综合数据库中的已知事实进行匹配,均不成功。r,匹配成功,执行r,。
综合数据库:
该动物身上有:暗斑点,长脖子,长腿,奶,蹄,哺乳动物,有蹄类动物
( 3) r.匹配成功,并推出“该动物是长颈鹿”。
2、实验目的
1.建立规则库;
2.实现推理,打印推理过程,可文字或画图;
例如:
输入:该动物身上有:暗斑点,长脖子,长腿,奶,蹄输出:前提条件为:
有斑点长脖长腿蹄类产奶
推理过程如下:
产奶->哺乳类
有斑点,有黑色条纹,长脖,蹄类->长颈鹿
所识别的动物为长颈鹿
3、实验思路
1.实验先创建了一个特征数组characteristic ,将特征放进特征数组,方便后面提取特征时对比。
2.定义了一个bf算法BF(s, t)对比特征,可以从一句话里面提取有用的特征。
3.定义了一个描述数组describe 用来存放第二步提取的特征。
4.定义了一个特征搜索函数search(describe),里面包含推理的过程,如果满足某一条条件,就会打印出来。而且在推理过程里面有总结某一个新的特征,也会加到描述数组里面去。
5.最后定义了一个输出结果函数result(describe) 判断最终结果有没有要查找的七种动物,如果有就输出动物名字,没有就输出无法判断是什么动物。
4、源代码
# 特征数组
characteristic = ["毛发","奶","羽毛","会飞","吃肉","犬齿","有爪","眼盯前方","有蹄",
"反刍动物","哺乳动物","鸟","善飞","信天翁","食肉动物","黄褐色","暗斑点",
"黑色条纹","长腿","长脖子","有蹄类动物","虎","金钱豹","长颈鹿","斑马",
"不会飞","黑白二色","会游泳","鸵鸟","企鹅","下蛋"]
# 描述数组
describe = []
def BF(s, t):
i = 0
j = 0
k = 0
flag = -1
while (i < len(s) and j < len(t)):
# 匹配成功
if (i - k == j) and (j == len(t) - 1) and (s[i] == t[j]):
flag