在Java中,实现用于推理过程的正向链接和反向链接的最佳方法是什么?
我们已经得到了 Horn 形式的知识库,其中包含一组语句。
我尝试在互联网上搜索,但未能找到任何关于如何将这些类型的人工智能概念实现到编码中的描述。
我的理解:
我目前的想法是,我将读取每个句子(Horn形式)并创建一个对象。每个 Sentence 类对象都将具有关系变量,当我要求知识库进行反向或正向链接时,它将检查这些对象的数组并构建我想要的链。
public class Sentence{ private String impliedBy; private String implementedVar; public Sentence(String sentence){ String[] relation = sentence.split("=>"); this.impliedBy = relation[0]; this.implementedVar = relation[1]; } ... }
通过以下方式调用上面的类…
Sentence s = new Sentence("a&b=>c");
我走在正确的道路上吗?或者很抱歉,我是这类复杂编程的新手,并且根据我的预测,我可能需要大量的优化才能在非常高的级别运行这些推理。但看起来我需要一些人的理解,谢谢如果有人能帮助我…
谢谢!
回答:
在我尝试自己编写之前,我会使用像 Drools 或 JESS 这样的规则引擎。
除非你的目的是学习如何编写 Rete 规则引擎,否则我将撤回我的答案。我会去寻找 Charles Forgy 的 论文。