我在ASP(答案集编程)中尝试了两个简单程序,然后我使用答案集求解器DLV来找到答案集(也称为稳定模型);程序是
P1:
b :- c.
c.
P2:
b :- c.
f.
在P1 dlv中找到{c,b}作为答案集,在P2中找到的答案集为{f};我无法理解为什么答案集在P1中是{c,b},在P2中只是{f};在P1中作为(最小)模型的{c}是不够的?
谢谢
答案 0 :(得分:1)
那是因为{c}
不是P1
的模型。
在地面(无变量)正面(所有正面)程序的情况下,约束非常简单:
要使解释成为基础积极计划的模型,每个适用的规则也必须应用,其中:
所以,在P1
你有这个规则:
b :- c.
,对于解释{c}
,适用(因为c
在解释中),但未应用(因为b
不是)。
对于P2
,我们有f.
这一事实,暗示您必须在任何答案集中都有f
(因为f.
是相同的f :-
,意思是始终适用)。但是,f
不会使规则b :- c
适用,并且没有其他规则,因此{f}
是P2
的模型,显然也是最小的模型 - 答案集。
因此,例如{c,b,f}
不是P2
的答案集,因为与{f}
相比,它并不是最小的。