【问题标题】:In Answer Set Programming, what is the difference between a model and a least model?在答案集编程中,模型和最小模型有什么区别?
【发布时间】:2014-09-21 19:01:04
【问题描述】:

我正在学习人工智能课程,我们正在使用答案集编程(特别是 Clingo)。我们目前主要谈论的是理论,我在区分模型和最小模型时遇到了一些麻烦。我有以下定义:

满足规则、模型、最小模型和确定的答案集 程序

  1. 如果程序在其规则主体中没有“not”,则称为确定程序。
  2. 集合 S 满足以下形式的规则 a :- b1, ..., bm, not c1, ..., not cn。如果它的主体被 S 满足(即 b1 ... bm 在 S 并且 c1 ... cn 都没有在 S 中)意味着它的头部必须是 满足 S(即 a 在 S 中)。
  3. 如果集合 S 满足该程序的所有规则,则称它满足该程序。
  4. 如果 (a) S 满足 P(也称为 S 是 P 的模型)并且 (b) No S 的严格子集满足 P(即 S 是 P 的最小模型)。

问题(从讲座幻灯片中提取,而不是家庭作业):

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}

谁能告诉我上述问题的答案是什么?我可能可以从那里找出区别,尽管如果有人可以解释普通话的区别(而不是教科书的定义),那就太好了。我不确定该在哪个论坛发布这个问题 - 如果它应该发布在其他地方,请告诉我。

谢谢

【问题讨论】:

    标签: answer-set-programming clingo


    【解决方案1】:

    首先,请注意幻灯片的这一部分是在讨论肯定计划P(也称为明确计划)的答案集em>),尽管它也提到了 not。正规划是简单的情况,正规划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 :- b,e. 隐含 a 而 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 成为模型并在该点停止。

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

    最后一点,为了避免您以后被它们弄糊涂,约束 :- a, b 实际上只是 x :- not x, a, b 的简写。因此,包含约束的程序不是正程序;尽管它们一开始可能看起来像,因为约束的主体似乎不包含 not

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-14
      • 2012-08-11
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 2011-02-24
      • 1970-01-01
      相关资源
      最近更新 更多