问题标签 [clingo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
223 浏览

answer-set-programming - 如何在 Clingo 中使用否定选择最大值

在 prolog 中,我们可以使用否定来选择元组中的最大值,例如:p(X),而不是 (p(Y), Y > X)。% 在 Prolog 中工作,但在 Clingo 中不工作

如何使用 Clingo 表达式获得相似的规则(如果没有比 A 更大的数字,则 A 为最大值)。谢谢。

0 投票
1 回答
1017 浏览

answer-set-programming - 如何在 Clingo 中定义 OR 条件

我是 Clingo 的新手。

我想知道如何在计数聚合中表达 OR 条件。

我正在写这条规则。

但是 cligo 不承认圆括号。我必须如何在 clgo 中制定这种条件?

如果我移动条件并写下有什么区别:

0 投票
1 回答
84 浏览

answer-set-programming - 有没有一种方法可以在 Clingo 中表示任意长度的元组?

如果我想获得任意长度元组的头部,我必须编写如下代码:head(A) :- tuple(A,B)。头(A):-元组(A,B,C)。头(A):-元组(A,B,C,D)。…………

有没有一种方法可以表示 head(A) :- tuple(A...)。

谢谢!

0 投票
0 回答
40 浏览

answer-set-programming - sbass 无法读取外国佬输出

我正在运行一个简单的 ASP 程序:

为了尝试通过打破对称性来减少搜索空间,我一直在尝试使用Potassco 网站上的 sbass 工具

我正在使用 Ubuntu 20.04 LTS。在 sbass 文件中运行 make 并获取可执行文件后,我只运行:

它抛出了一个错误:

我错过了什么?根据文章,sbass 应该只是能够获取 gringo 的输出。

0 投票
1 回答
380 浏览

answer-set-programming - 如何在答案集编程中对此进行编码?

我是一个回答集合编程的新手,我正在努力解决一个相当简单的问题。该程序需要用 cligo 编写。

所以这是一个问题:

一个抽象的论证框架由一组参数 A 和它们之间的攻击关系 R ⊆ AXA 组成。对于任意两个参数 a1 和 a2,如果 (a1, a2) ∈ R,那么我们说 a1 攻击 a2:如果一个人承认参数 a1,那么它就会对参数 a2 产生怀疑。形式上,如果满足以下两个条件,则参数 E ⊆ A 的子集是稳定的:

  1. E 中的任何论点都不会攻击 E 的任何其他论点。
  2. E 之外的任何参数都会受到来自 E 的参数的攻击。

编写一个 ASP 程序,通过答案集识别给定实例中参数的稳定子集。该实例将通过分别对应于 A 和 R 的两个谓词参数/1 和攻击/2 提供。

这是一个例子:

有效输出:

这是我尝试过的,这显然是错误的:

我根本不知道如何处理这个问题。

请帮忙。

0 投票
1 回答
125 浏览

answer-set-programming - 如何在 clgo 中使用 sum?

我有以下数据集:

我想满足以下限制:

选择 N-1 个顶点(目标(N))

并且sum它们的weight应该小于M(threshold(M))。输出所有满足条件。我编了以下代码:

但结果只有一个,其实应该有几个答案。
我不知道原因。

0 投票
1 回答
282 浏览

undirected-graph - 如何使用答案集编程从图中提取树?

有一个无向图 (V,E),边上的权重 w : E → N,目标 k ∈ N,阈值 O ∈ N。找到权重小于阈值的图的 k 顶点树。也就是说,分别从V和E中选择k个顶点和k-1条边,使得它们构成一棵树,并且所选择的边的权重之和小于O。

编写一个 ASP 程序,将 V、E、w、k 和 O 作为输入,并找到满足约束的边的选择,如果不能满足约束,则输出“不可满足”。选择边隐含地导致选择顶点,因此不需要显式显示所选顶点。

通过谓词 vertex/1、weight/3、target/1 和 threshold/1 提供了这个问题的一个实例。所有边都有权重,所以形式为 weight(a, b, 10) 的语句。可用于声明顶点 a 和 b 之间存在边的同时声明它们的权重,不需要任何多余的边/2 谓词。

我尝试了以下方法:

我得到以下输出:

我只是期待

因为其他人显然不是发辫。

我认为这是因为有问题的行:

我该如何纠正?

0 投票
1 回答
57 浏览

answer-set-programming - 确定两个派系是否不同

假设我有一个图表,并且想在图表中找到 2 个不同的派系。一个团是图顶点的一个子集,所有这些顶点都连接在一起。具有 2 个 cliques (a,b,c) 和 (b,c,d) 的 cliquesize 3 的示例图:

在此处输入图像描述

获得 2 个派系相当容易:

给出:

可以解释为:

但是如何测试两个派系是否不同?我试过了

但这对输出没有影响。我如何测试两个派系是否不同?


现在我找到了这个解决方案:

它有效,但我不喜欢它需要 2 行。我如何把它放在一个约束中?

0 投票
1 回答
304 浏览

list - 如何检查 CLINGO 列表中的成员资格?

拥有 Prolog 的背景,我正在努力将这个DLV(它具有内置谓词来处理类似于 Prolog 的列表)程序转换为CLINGO.

到目前为止,我设法实现了这一点:

但我得到了错误unsafe variables in in file - at line 7 and column 1-72,我不完全明白为什么。我想知道是否有人可以提供帮助。

0 投票
1 回答
300 浏览

aggregate - ASP Clingo - 获取原子的确切数量

我期待着为特定的班次分配特定的人数。例如,我有六个人和三个不同的班次。现在我必须为每个班次分配准确的两个人。我试过这样的东西,但是..
注意:不起作用,所以请尽快编辑以误导人们,我什至删除了“。” 在它之后没有人复制它:

这是否可以计算分配班次的数量,所以我可以分配与给定人数一样多的人?

上面代码的输出(插入“.”时)是:

在这里,您可以清楚地看到,早班(“mor”)班次使用了两次以上,如shiftCount中所定义。我需要改变什么才能得到想要的结果?