【发布时间】:2021-01-03 12:51:42
【问题描述】:
AI: A Modern Approach 在first-order logic 中讨论推理时会提到Rete algorithm。
然而,我发现的所有关于 Rete 算法的描述似乎都使用了没有函数符号的规则。 换句话说,规则看起来像
a(X) ∧ b(X, Y) → c(Y)
但不是
a(f(X)) ∧ b(X, Y) → c(f(Y))
(差异可能是根本性的,因为它是Prolog和Datalog之间的差异,其中只有一个是图灵完备的)
Rete 算法是否仅限于没有函数符号的规则? Drools 和 CLIPS 等现代规则引擎是否处理函数符号?
【问题讨论】:
-
如果我正确理解了您的符号,那么是的,Drools 引擎确实允许在条件和结果内进行函数评估。不过,我不能代表其他引擎。
-
CLIPS 也一样
-
@RoddyoftheFrozenPeas "function symbols" 可能与其他地方的 "functions" 不同。这是一个试金石:当你陈述规则时,你能使用一个逻辑变量作为给那些 "functions" 的参数吗? (见Q中的第二个例子)
-
@GaryRiley 请看我对 Roddy 的回复。
-
@MaxB 我刚才提到了 Prolog,因为你提到了。如果没有简单的方法来解释函数 args 或您为什么要使用它们,那么有人很难回答您的问题。您的示例没有说明函数 args 的作用。
标签: artificial-intelligence rule-engine first-order-logic rete