开放式或交互式约束满意度


17

过去,我使用SAT和常规约束满足作为引擎中的核心动力来实施协调模型。继续这一工作,我想使模型更具交互性,而我看到的最好的方法是打开约束求解器,使其不再是一个黑匣子。

因此,我有兴趣学习更多关于约束满足的信息,其中约束具有我称之为外部变量谓词函数的条件,也就是说,约束语言可能具有诸如谓词,只有通过咨询一些求解器外部的代理,然后仅当接地时。当对应于某些不能合并到约束求解器中的外部决策过程时,此方法很有用。这种约束求解器可以称为开放式(因为约束不是完全已知的)或交互式的P(x)xP (因为需要进行交互才能满足约束条件)。

我想都知道:

  • 朝这个方向进行的理论研究
  • 实现约束求解器的工具或库,这些约束求解器允许在约束求解过程中与外界交互。

Answers:


9

我完全不相信先前有关开放式和交互式约束的工作。

研究易处理性问题的尝试是:

尽管本文确实遗漏了几个主要问题。本文中通过传播器的方法与现有的约束求解器实现紧密相关。

我认为有关SMT(可满足性模理论)的工作也与您的问题密切相关。SMT理论通常受软件和硬件验证问题的推动,但是确实存在具有AI特色的理论。我期望有更多以SMT为核心技术构建的应用程序,并期待更多应用SMT构想的工作。


1
那篇论文当然看起来很有趣。我从未想到SMT求解器可以满足我的要求。这无疑是探索的途径。
戴夫·克拉克

我对最后的评论感到困惑。SMT求解器用于逻辑和理论,而不是特定的谓词。欢迎人们贡献新的理论和基准。我知道MathSAT开发人员已经研究了AI和计划问题。
维杰·D

@Vijay D:没错,这句话有不当偏见,我将对其进行修改。Banković和Marić于2010年发布了有效地实施SJ理论的INJECTIVE(argo.matf.bg.ac.rs/publications/2010/alldiff-smt2010.pdf)。
安德拉什萨拉蒙

7

在阅读您的问题时,我也同意说可满足性模理论与您的需求紧密相关。我建议阅读《决策程序-一种算法的观点》这本书。


Aaron R. Bradley和Zohar Manna的书《计算的微积分:决策程序及其在验证中的应用》的相关性/价值如何?我知道可以在步行距离之内找到它的副本。
戴夫·克拉克

@Dave:免责声明:我在SMT上的个人经验才刚刚开始;-)我只是看了那本书的目录;它和我指示的对象之间似乎有很大的交集。在后一个函数中,您在此处所说的外部函数在这里称为未解释函数,并被广泛介绍。我无法在申请验证决策程序目录中找到未解释的功能 ; 但是,这似乎是一本很好的书,也许可以证明它很有用。
Giorgio Camerani

@戴夫:如今,我正在阅读决策程序-一种算法观点。我还没有到达有关未解释函数的章节,但是如果我没有记错,则将具有未解释函数的公式转换为平等理论中的公式。在决定程序及其适用于验证的情况下(第9章),便包含了平等理论。
Giorgio Camerani 2010年

1
我认为亚马逊正在打电话。
戴夫·克拉克

@Dave:好的,太好了!;-)
Giorgio Camerani


4

我对交互一词有些困惑。我将与其他人交流,并补充说SMT求解器可能会有所帮助。要增加Walter Bishop的评论,可以使用《决策程序》(Kroening和Strichman)这本书的幻灯片。约翰·哈里森(John Harrison)在《实用逻辑和自动推理手册》中的详尽处理也可能使您感兴趣。示例代码可在线获得。

菲利普·鲁默(Philipp Ruemmer)的《公主》(Princess)支持带未解释谓词的算术运算,这可能符合您所说的开放式含义。它用Scala编写,在处理量化时使用E匹配,并提供内插值。


0

关于工具,如果您决定选择Prolog作为语言,我可以建议一些实现方法:

  • GNU Prolog带有C编程库。您可以从Prolog调用C函数,也可以从C调用Prolog。这为您扩展功能提供了很多可能性。专业版:Gnu Prolog是最快免费提供的Prolog编译器之一。注意:有些人抱怨缺少一些内置谓词...实际上大多数可以实现,请查看Prolog兼容性层@SO
  • SWI-Prolog具有有趣的编程库,包括网络通信,协议缓冲区支持等。并且非常流行。
  • XSB Prolog在互操作性方面有人认为这是最有趣的项目-包括:数据库接口等。

Prolog是一种编程语言,适用于执行多种求解器(并且大多数都有有限域求解器)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.