人工智能---产生式表示法

产生式表示法又称为产生规则表示法,“产生式”这一术语是由美国数学家波斯特在1943年首先提出来的,他根据串替代规则称为一个产生式。它可以描述形式语言的语法,表示人类心理活动的认知过程。

一、产生式的基本形式

产生式通常用于表示具有因果关系的知识,其基本形式是:

P->Q

或者

IF  P  THEN  Q

其中,P是生产式的前提,用于指出该生产式是否可用的条件;

Q 是一组结论或操作,用于指出当前提P所指示的条件被满足时,应该得出的结论或应该执行的操作。

整个产生式的含义是:如果前提P被满足,则可推出结论Q或执行Q所规定的操作。

例如:r4 :   IF   动物会飞    AND     会下蛋     THEN    该动物是鸟

谓词逻辑中的蕴含式与产生式的基本形式相同,其实蕴含式只是产生式的一种特殊情况,理由有二:

1. 蕴含式只能表示精确知识,其真值或者为真,或者为假,而产生式不仅可以表示精确的知识,而且还可以表示不精确的知识。

2. 用产生式表示知识的系统中,决定一条知识是否可用的方法是检查当前是否有已知事实可与前提中所规定的条件匹配。而去匹配可以是精确的,也可以是不精确的

为了严格地描述产生式,下面用巴科期范式BNF(Backus Normal Form)给出它的形式描述及语义:

<产生式> ::=<前提> -> <结论>

<前提>::=<简单条件>|<复合条件>

<结论>::=<事实>|<操作>

<复合条件>::=<简单条件> AND <简单条件> | <简单条件> OR <简单条件>

<操作>::= <操作名>[(<变元>,...)]

产生式有称为规则或产生式规则,产生式的“前提”有时由称为“条件”、“前提条件”、“前件”、“左部”等;其“结论”部分有时称为“后件”或“右部”。

二、产生式系统

把一组产生式放在一起,让它们互相配合,协同作用,一个产生式生成的结论可以供另一个产生式作为已知事实使用,以求得问题的解决,这样的系统称为产生式系统。

一个产生式系统由以下三个基本部分组成:

规则库

综合数据库

控制系统

1. 规则库

用于描述相应领域内知识集合称为规则库。在建立规则库时应注意以下问题:

有效地表达领域内的过程知识。规则库中存放的主要是过程性知识,用于实现对问题的求解。

对知识进行合理的组织与管理,对规则库中的知识进行适当的组织,采用合理的结构形式,可使推理避免访问那些与当前问题求解无关的知识,从而提高求解问题效率。

2. 综合数据库

综合数据库又称为事实库,上下文、黑板等。它是一个用于存放问题求解过程中各种当前信息的数据结构。当规则库中某条产生式的前提可与综合数据库中的某些已知事实匹配时,该产生式就被激活,并把它推出的结论放入综合数据库中,作为后面的推理的已知事实。显然,综合数据库的内容是不断变化的,是动态的。

3. 控制系统

控制系统又称为推理机构,有一组程序组成,负责整个产生式系统的运行,实现对问题的求解。他要做一下几项主要工作:

(1)按一定的策略从规则库选择规则与综合数据库中的已知事实进行匹配,所谓匹配是指规则的前提条件与综合数据库中的已知事实进行比较,如果两者一致,或者近似一致且满足预先规定的条件,则称匹配成功,相应的规则可被使用;否则称为匹配不成功,相应规则不可用于当前的推理。

(2)匹配成功的规则可能不止一条,这称为发生了冲突。此时,推理机构必须调用相应的解决冲突策略进行消解,以便从中选出一条执行。

(3)在执行某一条规则时,如果该规则的右部室一个或多个结论,则把这些结论加入到综合数据库中;如果规则的右部是一个或多个操作,则执行这些操作。

(4)对于不确定性知识,在执行每一条规则还要按一定算法计算结论的不确定性。

(5)随时掌握结束产生式系统运行时机,以便在适当的时候停止系统的运行。

产生式系统的求解问题的一般步骤是:

(1)初始化综合数据库,把问题的初始已知事实送入综合数据库中。

(2)若规则库中存在尚未使用过的规则,而且它的前提可与综合数据库中的已知事实匹配,则转第(3)步;若不存在这样的事实,则转第(5)步。

(3)执行当前选中的规则,并对该规则做上标记,把该规则执行后得到的结论送入综合数据库中,如果该规则的结论部分指出的是某些操作,则执行这些操作。

(4)检查综合数据库中是否已包含了问题的解,若已包含,则终止问题的求解过程;否则第(2)步

(5)要求用户提供进一步的关于问题的已知事实,若能提供,则转第(2)步,否则终止问题的求解过程。

(6)若规则库中不再有未使用过的规则,则终止问题的求解过程。

在上述的第(4)步中,为了检查综合数据库中是否包含问题的解,可采用如下两种简单的处理方法:

(1)把问题的全部最终的结论,如动物识别中的虎,金钱豹等七种动物的名称全部列于一张表中,每当执行一条规则得到一个结论时,就检查该结论是否包含在表中,若包含在表中,说明它就是最终结论,求得了问题的解。

(2)对每条结论部分是最终结论的产生式规则,如动物识别系统中的规则r9至r15,分别做一标记,当执行到上述一般步骤中的第(3)步时,首先检查该选中的规则是否带有这个标记,若带有,则由该规则推出的结论就是最终结论,即求得了问题的解。

三、产生式系统的分类

按推理方向划分可分为:前向、后向和双向产生式系统。

按其所表示的知识是否具有确定性可分为:确定性及不确定性产生式系统。

按规则库及综合数据库的性质及结构特征可分:可交换的、可分解、可恢复的产生系统。

人工智能--产生式表示法相关推荐

  1. MPB:邓晔、王尚等-​环境样本中的细菌总量测定—流式细胞法

    为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...

  2. 陈百强原来这么帅_朱一龙虽然很少玩手机,但居式打字法很有个性,手指飞舞超级帅!...

    文/梧弋柠 朱一龙虽然很少玩手机,但居式打字法十分有个性,手指飞舞超级帅! 印象里的朱一龙先生几乎从来不玩手机,以前不出门的时候曾长达大半年的时间没有更博,现在有了一定的知名度平时也很少上线冒泡,有时 ...

  3. 豪斯荷尔德变换 matlab,隐式QR法求实矩阵的全部特征值matlab实现

    隐式QR法求实矩阵的全部特征值matlab实现 隐式QR法求实矩阵的全部特征值matlab实现 要求:用matlab编写通用子程序,利用隐式QR法求实矩阵的全部特征值和特征向量. 思想:隐式QR法实质 ...

  4. 素数-试除法和埃式筛选法模板

    试除法: bool is_prime(int n) {if (n <= 1) return false;for (int i = 2;i<=sqrt(n);i++)//这样写更好!if ( ...

  5. 转载——三种编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法)...

    1 . 匈牙利命名: 开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写. 比如: int iMyAge; "i"是int类型的缩写: char c ...

  6. mfc编程淘汰了吗_四种基本的编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法、下划线命名法)...

    匈牙利命名法 匈牙利命名法是早期的规范,由微软的一个匈牙利人发明的,是 IDE 还十分智障的年代的产物.那个年代,当代码量很多的时候,想要确定一个变量的类型是很麻烦的,不像现在 IDE 都会给提示,所 ...

  7. 驼峰式命名法python_驼峰命名法

    原文来自百度百科: 驼峰命名法即骆驼命名法. 基本概念 骆驼式命名法(又称驼峰命名法),正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字.程序员们为了自己的代码 ...

  8. 匈牙利命名法、驼峰式命名法、帕斯卡命名法

    匈牙利命名法.驼峰式命名法.帕斯卡命名法 匈牙利命名法 驼峰式命名法 小驼峰式命名法 大驼峰式命名法(帕斯卡命名法) 匈牙利命名法优缺点 优点 缺点 其他 匈牙利命名法 基本原则是:变量名=属性+类型 ...

  9. 匈牙利命名法、驼峰式命名法、帕斯卡命名法、下划线命名法

    1.匈牙利命名:开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写.For example: int iMyAge; "i"是int类型的缩写: c ...

最新文章

  1. Io 异常: The Network Adapter could not establish the connection解决方案
  2. Lambda表达式常用代码示例
  3. 去姥姥家需要做的事情
  4. 我学员的一个问题及其我对之的解答,关于lr返回值问题
  5. 四十一、Vue项目上手 | 用户管理系统 实现用户修改和删除功能(完成篇)
  6. 到你是你玩互联网还是互联网玩了你
  7. 【Java】Java枚举类型示例
  8. Android中View绘制流程
  9. mui实现分享功能_MUI 分享功能(微信、QQ 、朋友圈)
  10. Linux笔记-shell遍历数组并判断是否等于某个值
  11. 渗透测试入门17之一次完整的渗透测试流程
  12. css img 等比例平铺怎么个屏幕
  13. windows 2003 远程桌面记录登陆IP的方法
  14. mysql保存表出错1075_navicat出现错误1075怎么办
  15. vue 大屏滚动实现 利用marquee和element-ui table
  16. Python模块02/序列化/os模块/sys模块/haslib加密/collections
  17. 《Android框架揭秘》——导读
  18. OCR文字识别软件在线如何操作?
  19. ipv6服务器及环境搭建
  20. 如何在微信公众号图文中添加附件

热门文章

  1. 2012-2020蓝桥C++ B组蓝桥杯省赛真题(第二题)
  2. 大直径测径仪的工艺流程详解
  3. 英语单词 One 个人 4. 人体的内部结构
  4. dell服务器增加磁盘阵列,Dell PowerEdge服务器如何通过联机容量扩充的方式实现磁盘阵列扩容?...
  5. NetBIOS特性简介
  6. 4个好用的音频转换工具,简单2步转成MP3格式
  7. 2019华东交通大学ACM基地简介
  8. 【聊天机器人】您必须了解的最佳聊天机器人框架
  9. 【NOIP2013模拟】水叮当的舞步
  10. 协程(二)协程的应用