在阅读中 约束逻辑编程, ,我不禁注意到与 SQL 编程的明显关系。SQL 是“约束逻辑编程”的实际例子吗?

有帮助吗?

解决方案

它们是从高电平非常相似。无论是声明或一套基于而不是迭代(这意味着你问你想要的东西 - 你不遍历和处理个别项目一个接一个)。

CLP可以在SQL建模,但它是寻找更好的解决方案的一个问题的情况。 SQL有利于发现在已经明确定义给定数据集的答案。 CLP是用于松散地或有时甚至不甚至完全定义的域寻找答案良好。

作为一个例子。如果我想给所有1到10万元之间使用SQL我需要一个表列出的所有从(现有的数据集)选择号码返回偶数。使用CLP我只是需要一个约束(10M),但不会有明确创建的所有记录。

内部CLP引擎(CSP问题)也推断约束,使它们更快。 SQL你就必须弄清楚这些规则和明确说明它们。例如,如果你的SQL是其中A = B和B = C,一个CLP引擎可能会弄清楚,A = C和用它来运行得更快,其中SQL不会。他们同样可以推断域以及要优化运行时间(如果我知道永远不会返回偶数号的CLP会扔出来考虑 - SQL仍然会考虑他们,但不能退货的“解决方案”)。

希望帮助 - 如果你需要它,我可以得到更多的技术。关键的一点是要记住两者是相似的,但其使用取决于问题的模型。如果你可以说:“这些都是我的变量,而这些是如何相互关联的,给我任何有效的解决方案”,然后CLP是一个不错的人选。如果你可以说“有我的变量,而这些都是细节,给我带回我的现有数据的一个子集,适合”,那么SQL是更好的人选。

其他提示

我没有完整的答案,但您可能会发现查看 Datalog 和 DLV 很有趣。它们可能是逻辑编程(但不是 CLP)和 SQL 之间的“缺失的环节”,可以帮助您更清楚地理解事物。

因为这更多的是关于 LP 而不是 CLP,所以我可能错过了一些东西 - 如果是这样,抱歉。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top