gpt4 book ai didi

prolog - CLP:对结构化变量的约束?

转载 作者:行者123 更新时间:2023-12-01 23:12:36 29 4
gpt4 key购买 nike

让我们有以下假设场景……一个 5x5 的网格,比如说 3 个数字。
我们想定义对位置的约束。在 CLP 中,我们通常用整数定义约束,所以这是一种方法:

  ... Fig1X #\= 2, Fig1Y #\= 3, ....

即我们为每个 X 和 Y 位置都有单独的变量。有没有办法定义构建在整数之上的结构化变量的约束。举例来说:
 .... Fig1 #\= (2,4) ...

该场景仅用于说明。

我主要对您如何处理结构化变量感兴趣,是否有标准做法。

最佳答案

特别是与您的示例中的几何任务有关,至少有以下完全不同的概念方法:

  • geost/N :这些约束为推理多维对象提供了专用的迷你语言。这是一种非常强大且灵活的方法,可在 SICStus Prolog 和其他一些约束系统中使用。
  • 实体化约束 .例如,您可以声明 X #= 2 #==> Y #\= 4表示Y如果 X,则不得为 4等于 2。因此,(X,Y)自动不同于 (2,4) .
  • extensional constraints (在许多 Prolog 系统中可用作 table/2fd_relation/2 等)让您明确枚举可允许的元组集或其补集。
  • 装修您的任务是通过 bool 指标在可接受的位置之间进行选择。见 Packing Squares对于这种方法的一个例子。

  • 这些方法会带来不同的后果和权衡。我的个人喜好和建议大致反射(reflect)在上述顺序中。但是,根据手头的情况,一种方法可能比其他方法具有显着优势。

    CSP 中的建模部分有时更像是一门艺术而不是一门科学,因为有很多不同的可能性可供选择,而且尚不清楚哪种模型最好,也因为有很多权衡——例如便利性、便携性、可扩展性、速度、内存等——涉及。

    关于prolog - CLP:对结构化变量的约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48937374/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com