在答案集编程中,模型和最小模型之间有什么区别?

时间:2014-09-21 19:01:05

标签: answer-set-programming clingo

我正在参加人工智能课程,我们正在使用答案集编程(Clingo)。我们目前主要讨论的是理论,我在区分模型和最少模型方面遇到了一些麻烦。我有以下定义:

  

满足规则,模型,最少模型和答案集   程序

     
      
  1. 如果程序的规则正文中没有“not”,则称该程序为明确。
  2.   
  3. 据说集合S满足形式a的规则: - b1,...,bm,而不是c1,...,而不是cn。如果它的身体被S满足(即,b1 ... bm在S中   并且没有c1 ... cn在S)暗示其头部必须是   S满意(i..e,a在S中)。
  4.   
  5. 如果满足该程序的所有规则,则称集合S满足程序。
  6.   
  7. 如果(a)S满足P(也称为S是P的模型)和(b)否,则集合S被称为确定程序P的答案集合   严格的S子集满足P(即S是P的最小模型)。
  8.   

提出问题(从演讲幻灯片中提取,而不是作业):

P is defined as:
a :- b,e.
b. 
c :- d,b.
d.

Which of the following are models and least models?
{}, {b}, {b,d}, {b,d,c}, {b,d,c,e}, {b,d,c,e,a}

有谁能让我知道上述问题的答案是什么?我可以找出与那里的区别,尽管如果有人可以解释普通话的差异(而不是教科书定义),那将是美妙的。我不确定在哪个论坛发布此问题 - 请告诉我是否应将其发布到其他地方。

由于

1 个答案:

答案 0 :(得分:2)

首先,请注意幻灯片的这一部分是关于积极计划的答案集 P (也称为明确计划),即使它提到。积极的计划是一个简单的案例,正面计划 P 总是存在一个独特的最小模型 LM P ),这是它所有模型的交集。

在规则 body 中允许 not 规则会使事情变得更复杂。规则的正文:-的右侧。

问题的答案是,设置为:

  • S = {} 不是模型,因为b和d是事实b. d.
  • S = {b} 不是模型,因为d是事实d.
  • S = {b,d} 不是模型,因为c隐含在c :- d,b.而c不在S
  • S = {b,d,c}是模型
  • S = {b,d,c,e} 不是模型,因为a隐含在a :- b,e.而a不在S
  • S = {b,d,c,e,a}是型号

那么最少的模特是什么?它的S = {b,c,d},因为没有严格的S子集满足 P

我们可以通过两种方式获得正面计划 P 的最小模型:

  • 枚举所有模型并取其交叉点(此处{b,c,d}∩{a,b,c,d,e} = {b,c,d})。
  • 从事实开始(此处b. d.)并迭代地将隐含的原子(此处为c :- b,d.)添加到S,重复直到S为模型并在此时停止。

就像你的幻灯片说的那样,积极计划 P 答案集的定义是:S是 P 如果S是 P 的最小型号。更严格的是,这实际上是当且仅当,因为最小模型 LM P )是唯一的。

作为最后一点,因此您不会对它们感到困惑,约束 :- a, b实际上只是x :- not x, a, b的简写。因此,包含约束的计划不是积极的计划;虽然它们可能看起来像起初,因为约束的主体似乎并不包含而不是