机器智能-高频问题:前向连接算法

1、前向连接算法:
从知识库的原子语句出发,在前向推理中应用假言推理规则,增加新的原子语句,直到不能进行任何推理
a、首先进行实例化的置换,得到CNF,然后进行前向连接。
b、前向连接步骤:
①、扫描整个知识库,找到所有的实例化的事实(谓词),凡是有变量的都不是实例化的谓词
②、通过所有实例化的事实去置换所有的含有变量的事实(谓词),进行匹配,将可以进行置换的语句进行置换(实例化)
③、将新得到的实例化的事实加入到知识库中,并继续进行置换,直到得到结论。
c、举例:
在这里插入图片描述
首先,得到知识库:
在这里插入图片描述
然后,查看哪些是实例化的,哪些不是。可以看出,一下几句是实例化后的:

west是美国人 nono有一些导弹 nono是美国的敌人
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

然后,用实例化后的去置换未实例化的,尽可能得到更多实例化后的语句:
在这里插入图片描述
然后,用新得到的实例化后的语句去置换剩余的未实例化后的语句
在这里插入图片描述
最后,得出结论
在这里插入图片描述
d、优点:可靠的,完备的
e、缺点:时间长、易产生与目标无关的结论。如果含有涵词,那么实例化时可能生成无限多的新事实使算法无法终止
f、前向连接算法是低效的:
①、匹配的代价很高,比如说找到一个p(x)的所有实例化的代价往往需要查询整个数据库
g、②、对于有过个子目标的规则而言,对每个子目标的匹配顺序进行排序是重要的。
h、提高前向连接的效率:
①、增量前向连接:每个第t次迭代推理出来的新事实应由至少一个第t-1次迭代中推理出来的新事实导出。因此,在第t次迭代时,只检查那些规则前提包含了能与第t-1次迭代新推理出的事实进行合一的合取子句。看哪些前提条件包含我新产生的结论,因为如果想要退出新的事实,必然要用到新产生的结论。
②、先实例化个数少的谓词,后实例化个数多的谓词。
③、不相关事实:产生许多与目标毫无关系的事实(用反向链接算法解决)

发布了317 篇原创文章 · 获赞 194 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_40851744/article/details/105300773