wma*_*mac 2 logic artificial-intelligence expert-system inference-engine
在基于规则的专家系统中,知识库包含大量“if(模板)then(动作)”形式的规则。推理引擎选择与输入事实匹配的规则。也就是说,将其条件部分与输入数据匹配的那些规则列入候选名单,并选择其中之一。
现在可以使用具有类似条件语句的普通程序以某种方式达到可能的结果。
我试图找到两者之间差异的“合理而清晰的描述”,以及为什么我们无法实现专家系统规则可以通过正常算法编程实现的功能?
难道只是算法需要完整且众所周知的输入,而专家系统可以接受任何顺序的不完整信息?
谢谢。
规则更准确地描述为“当(模板)然后(动作)”的形式。“当”的语义与“如果”的语义完全不同。例如,将一组不同的规则最直接地转换为过程编程语言将如下所示:
if <rule-1 conditions>
then <rule-1 actions>
if <rule-2 conditions>
then <rule-2 actions>
.
.
.
if <rule-n conditions>
then <rule-n actions>
Run Code Online (Sandbox Code Playgroud)
由于规则的操作可以影响另一个规则的条件,因此每次应用任何规则操作时,都需要重新检查规则条件。这可能效率很低。
基于规则的系统提供的好处是允许您将规则表达为离散的逻辑单元,同时为您高效地处理匹配过程。通常,这将涉及检测和共享规则之间的共同条件,以便不需要多次检查它们,以及数据驱动的方法,其中系统预先确定哪些规则将受到特定数据更改的影响,以便规则条件不需要当不相关的数据发生改变时要重新检查。
这一好处类似于 Java 等语言中垃圾回收所提供的好处。Java 中自动内存管理提供的一切都是通过用 C 编写自己的内存管理例程来实现的。但由于这很乏味且容易出错,因此使用自动内存管理有一个明显的好处。