在java中实现推理过程的前向链接和后向链接的最佳方法是什么?
我们已经得到了具有一组语句的Horn-form知识库。
我试着在互联网上搜索,但我找不到任何关于如何将这些人工智能概念实现到编码中的描述。
我的理解是:
到目前为止,我已经想过,我将阅读每个句子(Horn-Form)并创建它的一个对象。每个句子类对象都会有关系变量,当我向知识库询问后向链或正向链时,它会检查这些对象的数组并构造我想要的链。
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");我是不是在正确的轨道上,抱歉,我是这些复杂的编程的菜鸟,根据我的预测,我可能需要大量的优化来在非常高的水平上运行这些类型的推理。但似乎我需要有人很好的理解,谢谢,如果你们中的一些人能帮助我的话…
谢谢!
发布于 2011-05-23 09:10:07
在我尝试自己写这篇文章之前,我会使用Drools或JESS这样的规则引擎。
除非您的目的是学习如何编写Rete规则引擎,在这种情况下,我将撤回我的答案。我会去找Charles Forgy's的论文。
发布于 2011-05-23 09:17:22
也可以通过使用以下命令来帮助您:
新映射= HashMap HashMap();map.put(impliedBy,impliedVar);
简单地获取var : String value = map.get(impliedBy)。
发布于 2012-05-03 01:55:19
查看here,了解如何使前向链接在变量数量的线性时间内工作(请注意,代码片段中的实现是如何循环通过议程中每个变量的子句的)。它没有代码,但Hornsat真的不难编码。
https://stackoverflow.com/questions/6091772
复制相似问题