gpt4 book ai didi

prolog - Sicstus Prolog 使用变量(Sel)和值(Enum)自定义标签

转载 作者:行者123 更新时间:2023-12-04 04:50:39 26 4
gpt4 key购买 nike

假设我将以下域变量列表传递给标签谓词:

Z=[X1,Y1,X2,X3,Y2,X4,Y3.......Xn,Ym],
labeling(...., Z).

对于变量(Sel):
此外,我希望标签可以先选择所有 Y,然后再继续选择 X。
或者更复杂:
从 X 或 Y 开始,如果与 Y 相比未标记的数量更多,则继续标记 X,反之亦然。

对于值(枚举):
更复杂的是,我可能想要根据它是 X 还是 Y 来使用不同的策略。

我的第一次尝试是使用属性变量并向每个变量添加更多信息:
put_atts( X1,  type_var(is_xvar)),
put_atts( X2, type_var(is_xvar)),
put_atts( Y1, type_var(is_yvar)),
.
.

而内部变量(Sel)和值(Enum)我可以使用这个属性进行搜索和选择。

但是由于 fd_var 已经是一个属性变量,所以这种尝试效果不佳。

所以我的问题是:使用属性变量是解决此类任务的正确策略吗?有没有其他方法可以做到这一点?

这只是一个简化的例子。我需要大约 10 种不同的变量类型,而不仅仅是此处所示的两种。

最佳答案

域变量的附加属性绝对没有问题。只要您依赖 labeling/2 进行变量选择,这就是最自然的解决方案。

另一种方法是编写您自己的不依赖于 labeling/2 的搜索过程。

关于prolog - Sicstus Prolog 使用变量(Sel)和值(Enum)自定义标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17501104/

26 4 0