为什么DLV在这个ASP示例程序中找到答案集而不是另一个答案集?

时间:2014-01-16 14:46:09

标签: logic-programming answer-set-programming

我在ASP(答案集编程)中尝试了两个简单程序,然后我使用答案集求解器DLV来找到答案集(也称为稳定模型);程序是

P1:

b :- c.  
c.

P2:

b :- c.  
f.

在P1 dlv中找到{c,b}作为答案集,在P2中找到的答案集为{f};我无法理解为什么答案集在P1中是{c,b},在P2中只是{f};在P1中作为(最小)模型的{c}是不够的?

谢谢

1 个答案:

答案 0 :(得分:1)

那是因为{c}不是P1的模型。


在地面(无变量)正面(所有正面)程序的情况下,约束非常简单:

  1. 要使解释成为基础积极计划的模型,每个适用的规则也必须应用,其中:

    • 适用:对于基础积极计划,正文中的所有文字都包含在解释中,
    • applied:头部原子包含解释。
  2. 对于作为答案集的模型,它必须在此程序的所有模型集中最小。

  3. 所以,在P1你有这个规则:

    b :- c.
    

    ,对于解释{c},适用(因为c在解释中),但未应用(因为b不是)。

    对于P2,我们有f.这一事实,暗示您必须在任何答案集中都有f(因为f.是相同的f :- ,意思是始终适用)。但是,f不会使规则b :- c适用,并且没有其他规则,因此{f}P2的模型,显然也是最小的模型 - 答案集。

    因此,例如{c,b,f}不是P2的答案集,因为与{f}相比,它并不是最小的。

相关问题