【发布时间】:2015-12-23 17:19:26
【问题描述】:
在(最好的)Prolog 中解决任何问题的时间复杂度是否比天真的蛮力回溯实现更好?
我一般说 Prolog 语言...我想知道是否有一些众所周知的算法,例如,这会使在 Scheme 中使用 call/cc 回溯的“做 Prolog”成为一个糟糕的选择。
编辑:“解决任何问题”是指所有 Prolog 程序。 “问题中的问题”:我想知道语言设计:完全延续是否比部分延续有任何实际效用(主要优点是 Prolog 式的,但如果它们不能在时间复杂度上竞争,这并不严重使用 Prolog),以及如果另一种语言可以完全吸收 Prolog,或者如果通过将程序限制为 Prolog 形式来进行优化(类似于 Fortran 在 C 上可能进行的优化)。
编辑:时间复杂度是指大 O,即修剪不可能用通用语言天真地模拟 Prolog。
【问题讨论】:
-
解决什么是什么意思?
-
我不清楚您指的是哪种复杂性...也就是说,Prolog 实现通常在回溯时回收内存的开销非常低(与 Scheme 调用/ cc)。