问题标签 [inference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
295 浏览

search - Haskell 中的搜索控制

假设你正在编写一个搜索指数级大或无限空间的程序:游戏玩法、定理证明、优化等,任何你无法搜索整个空间的地方,结果的质量很大程度上取决于选择要搜索的部分在可用资源范围内。

在 Eager 语言中,这在概念上很简单:该语言允许您指定评估顺序,并使用它来控制首先评估搜索空间的哪些部分。(在实践中,它往往会变得混乱和复杂,因为您的推理控制代码布局与问题定义混在一起,这也是我对用惰性语言执行此操作的方法感兴趣的原因之一。但它是概念上直截​​了当。)

在像 Haskell 这样的惰性语言中,你不能那样做。我可以想到两种方法来代替:

  1. 编写代码,该代码取决于您正在使用的当前版本的编译器恰好选择的评估的确切顺序,以及您正在使用的优化标志,以便最终以正确的顺序发生。这似乎可能导致可维护性问题。

  2. 编写编写代码的代码,具体而言,编写将问题定义与一组启发式算法一起转换为急切语言的指令序列的代码,该指令指定了应该完成的确切顺序。如果您愿意支付前期费用,这似乎有好处。

还有其他推荐的方法来做这种事情吗?

0 投票
2 回答
372 浏览

prolog - Allegrograph - RDF 对象属性之类的函子?

使用Allegrograph,Prolog 函子非常棒,但有一个缺点。

假设您定义了一个链接两个实体的函子,例如parentOf等于“ !n:motherOf OR !n:fatherOf ”,它们都是在您的本体中定义的 rdf 对象属性(不是函子)。

让我们定义三元组“A !n:fatherOf B”。由于“ parentOf ”是函子而不是 rdf 对象属性,如果您请求链接 A 和 B 的所有属性,您将仅获得三元组“A !n:fatherOf B”(而不是“A parent B”)。

知道 A 是否是 B 的父级的唯一方法是直接询问布尔问题。

所以我的问题是:如何轻松获得“获得由函子生成的 FACTS + INFERRED FACTS 组成的 RDF 三元组”的结果?

0 投票
2 回答
722 浏览

prolog - Prolog 初学者 - 这是一个坏主意吗?

我正在开发的应用程序是一种“配置器”。它是用 C# 编写的,我什至编写了一个规则引擎来配合它。这个想法是有一堆命题逻辑语句,用户可以进行选择。根据他们选择的内容,其他一些项目变得需要或完全不可用。

命题逻辑语句一般采用以下形式:

符号:

我对 Prolog 很陌生,但它似乎能够为我处理所有的“规则处理”,让我摆脱我当前的规则引擎(它有效,但它不是那么快或容易保持我想要的)。

此外,所有可用选项都属于层次结构。例如:

如果隐含了第二级的项目(特征,例如颜色),则必须选择第三级的项目(选项,例如红色)。同样,如果我们知道一个特征是假的,那么它下面的所有选项也都是假的。

问题是每个产品都有自己的一套规则。建立一个包含这些运算符作为谓词的知识库,然后在运行时开始为产品构建所有规则是一种合理的方法吗?

我想象它可能工作的方式是建立组件、功能和选项的想法。然后设置 then 之间的关系(例如,如果特征为假,那么它的所有选项都是假的)。在运行时,添加产品的特定规则。然后将所有用户的选择传递给一个函数,检索哪些项目为真哪些项目为假作为输出。

我不知道我所问的所有含义,因为我刚刚进入 Prolog,但我试图避免走上一条糟糕的道路并在此过程中浪费大量时间。

一些可能有助于针对我想要找出的问题的问题:

  1. 这听起来可行吗?
  2. 我在吠叫错误的树吗?
  3. 尝试在运行时创建所有这些规则是否有任何缺点或顾虑?
  4. 有没有更好的系统来处理这种事情,我可以挤进 C# 应用程序(确切地说是 Silverlight)?
  5. 我应该检查其他竞争系统吗?
  6. 你对这类事情有什么一般性的建议吗?

提前感谢您的建议!

0 投票
1 回答
327 浏览

grammar - GA语法归纳程序/代码?

有谁知道使用 GA 执行语法归纳/推理的程序,我已经阅读了大量关于 Lankhorst 和 De Pauw 之类的研究论文和文章,但我在任何地方都找不到使用这种技术的任何实现或程序. 非常感谢对此的任何帮助,欢呼

0 投票
0 回答
375 浏览

semantic-web - 构建基于规则的 SKOS Reasoner

我必须为本体 SKOS 构建一个推理器,以根据 CLIPS / Jess 中制定的规则进行推理。我想要简单形式的自动推理。我找不到任何专门帮助我为具有规则的本体创建推理器的东西,甚至找不到类似尝试复制 CLIPS 中的某些功能的东西。

0 投票
1 回答
524 浏览

scala - Scala类型(推理)问题?

我正在使用Jersey JAX-RS 参考实现在 Scala 中开发 REST Web 服务,但遇到了一个奇怪的错误。

我正在尝试使用ContentDisposition.ContentDispositionBuilder创建一个ContentDisposition对象。

ContentDisposition.ContentDispositionBuilder有两种类型T extends ContentDisposition.ContentDispositionBuilderV extends ContentDisposition。该方法返回一个type构建ContentDisposition器实例。

编码

但是有效

产生编译器错误

(请注意,type需要放在“引号”中,因为它是 Scala 中的关键字)

fileNameofContentDispositionBuilder返回一个实例,T所以这实际上应该有效。

我不明白这个。任何想法?顺便说一句,我正在使用 Scala 2.9.0.1。

更新:

这行得通。但是为什么我需要在这里进行选角?

0 投票
2 回答
587 浏览

ruby - 可与 Ruby 交互的轻量级推理引擎

我有一个大型 Rub​​y 应用程序,它急需添加推理引擎;我不需要很多功能,不怕集成 C 库,而且在我的谷歌搜索中是空的。

Python 和 JVM 中似乎有很多规则引擎;虽然我更喜欢使用 Python,但我不会重写整个该死的应用程序只是为了添加一个推理引擎,所以我真的很想看看这样的东西是否存在。

有人有想法么?

0 投票
1 回答
497 浏览

scala - Scala 编译器无法推断模式匹配的混合类型

我有一个关于有限置换集的代数群的用例。因为我想将该组用于其他不相关的各种排列类,所以我想将此作为混合特征。这是我尝试的摘录

在某个时间点,我想调用 simple 方法,以便使用代数公理简化组运算的表达式。使用模式匹配似乎很有意义,因为要评估很多公理并且语法简洁。但是,如果我编译代码,我会得到:

我不明白为什么编译器不能正确推断类型,我不知道如何帮助它。实际上,在这种情况下,模式匹配时 P 的参数类型是无关紧要的。如果 p 是任何排列之和,则模式应该匹配。返回类型仍然是 P,因为转换仅通过调用 P 上的 + 运算符完成。

因此,在第二次尝试中,我交换了 unapply 的注释掉版本。但是,然后我从编译器(2.8.2)得到一个断言错误:

有什么线索可以让编译器接受这个吗?

提前致谢!

0 投票
3 回答
183 浏览

programming-languages - 反向推理引擎(找到 foo(X) 为真的随机 X)

我知道像 Prolog 这样的语言允许您编写如下内容:

我想要的是这样的东西,但是倒退了。假设我有这个:

然后我要求它给我一个随机的 X,其中 mortal(X) 为真(因此根据一些随机种子,它应该给我“苏格拉底”、“柏拉图”或“亚里士多德”之一)。

我的问题是:

  • 这种反向推理有名字吗?
  • 是否有任何语言或库支持它?

编辑

正如下面有人指出的那样,您可以简单地询问 mortal(X),它会返回所有 X,您可以从中简单地从列表中随机选择一个。但是,如果该列表非常大,可能有数十亿呢?显然在这种情况下,在选择一个之前生成所有可能的结果是行不通的。

要了解这将如何成为一个实际问题,请想象一个简单的语法,它生成了一个形式为“形容词1 名词1 副词传递性_动词形容词2 名词2”的随机句子。如果形容词、名词、动词等的列表非常大,你可以看到组合爆炸是一个问题。如果每个列表有 1000 个单词,那么您将有 1000^6 个可能的句子。

0 投票
2 回答
1452 浏览

c++ - C++11 中带有可变参数模板的 bindParameter 函数

我正在尝试编写一个简单的函数来转换 std::function<> 对象,同时绑定最后一个参数。这就是我所拥有的:

这就是我想使用它的方式:

...因此在此示例中,主函数应返回 42。问题是,gcc (4.6) 似乎无法正确推断模板参数的类型,第一个版本产生以下错误:

但在我看来,参数是显而易见的。还是这种类型的推断没有被标准覆盖或者还没有在 gcc 中实现?