【问题标题】:Forward chaining and Backward chaining in javajava中的前向链接和后向链接
【发布时间】:2011-05-23 00:32:15
【问题描述】:

在java中为推理过程实现前向链接和后向链接的最佳方法是什么?

我们已经获得了具有一组语句的喇叭形式的知识库。

我曾尝试在互联网上搜索,但找不到任何关于如何将这些人工智能概念实施到编码中的描述。

我的理解:

到目前为止,我一直认为我会阅读每个句子(Horn-Form)并创建一个对象。每个 Sentence 类对象都会有关系变量,当我向知识库询问 Backward 或 Forward 链时,它会检查这些对象的数组并构造我想要的链。

 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");

我是否走在正确的轨道上,抱歉,我不适合这种复杂的编程,根据我的预测,我可能需要大量优化才能在非常高的水平上运行这种推理。但是,如果你们中的一些人可以提供帮助,我似乎需要有人很好地理解...

谢谢!

【问题讨论】:

    标签: java algorithm artificial-intelligence inference reasoning


    【解决方案1】:

    在尝试为自己编写此内容之前,我会使用DroolsJESS 之类的规则引擎。

    除非您的目的是学习如何编写 Rete 规则引擎,在这种情况下,我将撤回我的答案。我会去找Charles Forgy's的论文。

    【讨论】:

    • 我认为这是一个家庭作业。并且检查一个简单的 Horn 子句是否成立,真的不是特别难。即使是 HORNSAT 也应该不难做到正确 - 但我们需要知道究竟应该实施什么。
    • 非常感谢我已经扩展了我对这些技术的理解......但是我可能需要进行更多研究才能在更高级别上实际实施,所以正如 Voo 所说,我的作业必须更容易解决,但我想如果我正在学习一些东西,为什么不学习正确有效的方法,:) 谢谢
    • @Voo,是的,伙计,你是对的!如果我上面给出的想法(有问题)是正确的,这将很容易实现。 :) 感谢您的帮助。
    【解决方案2】:

    使用以下方法可能也会有所帮助:

    HashMap map = new HashMap(); map.put(impliedBy,impliedVar);

    简单地获取 var:String value = map.get(impliedBy)。

    【讨论】:

      【解决方案3】:

      查看here 以了解如何使前向链接在变量数量的线性时间内工作(注意 sn-p 中的实现如何循环遍历议程中每个变量的子句)。它没有代码,但 Hornsat 确实没有那么难编写代码。

      【讨论】:

        【解决方案4】:

        OPS5 等系统通常具有推理组件 使用前向链接。另一方面,Prolog 通常 使用反向链接。

        前向和后向链接可以被视为不同的 处理分辨率的策略。而前向链接 对应于单位分辨率,反向链接将 对应输入分辨率。

        还可以构建系统,包括 反向链接在受控的前向链接中 方式。一个这样的系统是Jekejeke Minlog

        Marvin Minsky 的一个可能实现是 将 HornClauses 视为一个网络。霍恩条款 有一个头部 X 和在身体有一个 X 的 Horn 子句 将被连接。

          A <- D, X      X <- G
                  |      |
                  +------+
        

        现在,HornClause 的主体充当一种与门, 并且由于不同的 HornClauses 可以有相同的头部 还涉及一个或门。现在尝试编程 沿着这些大门传播真相的东西。

        再见

        【讨论】:

          猜你喜欢
          • 2011-03-22
          • 1970-01-01
          • 2017-08-19
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 2013-11-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多