gpt4 book ai didi

answer-set-programming - Clingo:创建自定义函数

转载 作者:行者123 更新时间:2023-12-04 08:41:29 27 4
gpt4 key购买 nike

在 clingo 中创建一个“函数”,如果可以定义的话,我无能为力。在我试图完成的简化版本中,我编写了这个非常短的程序:

a(1..3).

adj(X,Y) :- a(X), a(Y), abs(X-Y)==1.

#hide a/1.

基本上,我想定义一个邻接函数,如果给定的任意两个数字的差的绝对值等于 1,则该函数将保持 true。我对上述程序的期望是输出结果:adj(1,2) adj(2,1) adj(2,3) adj(3,2),但我呈现此输出:

Answer: 1

SATISFIABLE

Models : 1
Time : 0.000
Prepare : 0.000
Prepro. : 0.000
Solving : 0.000

(如果我省略 #hide a/1. 它将输出答案:a(1) a(2) a(3))。

我觉得这是 clingo 101,所以我可能误解了这里的基本知识。我正在尝试通过研究我在网上偶然发现的示例来学习 Clingo,但由于我明天有一项作业,所以我有点匆忙。如果有人能阐明一些观点,那就太好了。谢谢。

最佳答案

已解决。事实证明, native abs 函数并没有像我预期的那样真正起作用,但是为 adj 函数定义两个条件可以起到分离的作用,而且效果很好。这:

a(1..3).

adj(X,Y) :- a(X), a(Y), X-Y==1.
adj(X,Y) :- a(X), a(Y), Y-X==1.

#hide a/1.

输出:

Answer: 1
adj(3,2) adj(2,1) adj(2,3) adj(1,2)
SATISFIABLE

Models : 1
Time : 0.000
Prepare : 0.000
Prepro. : 0.000
Solving : 0.000

关于answer-set-programming - Clingo:创建自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545477/

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