【问题标题】:Prolog advantages over DatalogProlog 相对于 Datalog 的优势
【发布时间】:2015-10-25 16:42:12
【问题描述】:

我一直在尝试了解在特定上下文中使用 Prolog 是否比 Datalog 有很大的优势。 Prolog 是图灵完备的,而 Datalog 不是。但是使用 Prolog 还有其他实质性优势吗?

具体的上下文可以是例如关系数据库...最好使用 Prolog 或 Datalog ?

【问题讨论】:

  • 问题是什么?你说的“具体背景”是什么?
  • 可以在 Prolog 中实现 Datalog 解释器,但反过来不行。
  • Datalog 是一个移动的目标。目前尚不清楚这意味着什么。最近的支持者将提出远远超出最初目标的主张。 OTOH,Prolog 是一种标准化语言。
  • 具体的上下文可以是例如关系数据库...最好使用Prolog或Datalog?
  • 我正在使用 Prolog 创建一个演绎电子表格......但我看到到目前为止创建的大多数演绎/逻辑电子表格大多基于 Datalog......我想知道它是否不是最好使用 Prolog...而不是

标签: prolog datalog


【解决方案1】:

除了 Prolog 的图灵完备性和普通 Datalog 的非图灵完备性(Datalog 有扩展其复杂度类的扩展)之外,Datalog 和 Prolog 之间的几个显着差异如下:

  1. 在 Datalog 中,规则的顺序或规则中的原子不会对其评估或评估结果产生影响。另一方面,在 Prolog 中,原子顺序可能意味着终止和非终止之间的差异,或者终止评估的运行时间。 Prolog 还提供命令式运算符,例如 cut (!);典型的 Datalog 实现没有这样的操作符。因此,Datalog 在这个意义上更具声明性。

  2. Datalog 实现通常支持自下而上的评估,而 Prolog 实现通常支持自上而下的评估。各有优缺点,具体取决于程序的使用方式以及程序要操作的数据大小。

不确定对您的特定用例的影响。这在很大程度上取决于您要构建的确切内容——是否需要图灵完备性等。

【讨论】:

    猜你喜欢
    • 2017-03-19
    • 2010-12-23
    • 2015-07-23
    • 2011-02-26
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多