10

社区维基

我不在乎声望点,我只想要好的答案。随时将此问题标记为社区 wiki。

语境

我一直在通过 The Reasoned Schemer 工作,并发现了以下观察结果:

  • 逻辑编程非常有趣。
  • 逻辑编程有时是违反直觉的
  • 逻辑编程通常是“低效的”(或者至少是我编写的代码)。

    好像从

  • 汇编 -> C++,我“放弃”了编写自己的机器代码的控制权
  • C++ -> Clojure,我放弃了对内存管理的控制
  • Clojure -> core.logic/prolog/minikanren,我失去了对如何完成计算的部分控制

问题:

除了(1)解决逻辑难题和(2)类型推理之外,逻辑编程主导的问题领域是什么?

谢谢!

4

2 回答 2

4

约束逻辑编程对于解决各种调度、资源分配和其他重要的约束满足/组合优化问题非常有用。您所拥有的只是声明性的:约束(例如,一次只能在跑道上运行一架飞机),以及您可能想要最小化/最大化(吞吐量/等待)的东西。

Prolog 中有各种众所周知的风格,包括在有限整数域中工作的CLP(FD)和在实域中工作的 CLP(R)。至少 CLP(FD) 似乎在core.logic 的直接路线图中。

我相信这种源自 Prolog 的解决方案正在积极地用于空中交通管制和其他物流任务,尽管很难获得准确的信息,这些关键任务和生命的公司到底在使用哪些技术。

于 2012-06-02T07:56:13.857 回答
3

人工智能研究,特别是认知机器人学和基于逻辑的知识表示的其他应用,是 Prolog 与逻辑理论密切相关的领域。这种关系非常有用,因为它基本上将理论带入了生活。定理可以在纸上证明,然后在 prolog 中几乎可以轻松地实现并执行,并且执行的程序具有证明的性质。这允许程序“通过构造正确”,这与首先编写程序然后尝试证明它们的属性相反(就像在正式方法中所做的那样,使用例如模型检查)。

语义网是逻辑编程发挥越来越大作用的另一个地方。

于 2012-06-02T01:04:32.160 回答