【问题标题】:Inference engine prolog推理机序言
【发布时间】:2014-12-21 20:10:00
【问题描述】:

我正在尝试在 prolog 中构建推理引擎。

例如,这里有一些规则

R1 : A and B -> C
R2 : E and F -> D
R3 : G and T -> H

我想这样做

c :- a,b
d :- e,f
h :- g,t

但我必须使用如下定义的谓词“rule/1”

rule(Ri) :- "if conditions then conclusions".

例如:

rule(r1) :- "if a and b then c".

我该怎么办?

【问题讨论】:

  • 有点不清楚您希望您的 rule/1 谓词或事实如何工作。你可以这样说,R1 = ':-'(c,(a,b)),然后assertz(R1) 将断言规则,c :- a,b.。但您似乎并没有确切地要求这个。
  • 您究竟想如何使用这些谓词?
  • ' -1 因为没有打扰澄清您的问题/随着时间的推移回复 cmets。
  • 加 1 帮助我完成作业。

标签: prolog inference-engine


【解决方案1】:

我找到了解决办法:

:- dynamic if/1, then/1.
rule(r1) :- if([a,b]),then([c]).
rule(r2) :- if([e,f]),then([d]).
rule(r3) :- if([g,t]),then([h]).

然后使用谓词clause/2 遍历规则,如下所示:

clause(rule(R),(if(X),then(Y))).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2010-10-13
    相关资源
    最近更新 更多