首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么向OWL EL添加析取会使其在计算上更加复杂?

为什么向OWL EL添加析取会使其在计算上更加复杂?
EN

Stack Overflow用户
提问于 2018-08-23 20:37:34
回答 1查看 98关注 0票数 2

我试图理解为什么向OWL EL添加析取会使该语言在计算上更加复杂(例如。为什么添加'or‘会使得在多项式时间内不可能进行可满足性、一致性和/或包含检查……它们是标准猫头鹰EL中的p-time )

OWL EL配置文件不允许使用析取和求反等操作。我很难理解为什么不能使用现有的OWL EL构造来实现析取,方法是创建包含给定类表达式析取的子集的新类。

例如,表达式(在曼彻斯特语法中):

代码语言:javascript
复制
  Class1 and (Class2 or Class3) and (Property1 some (Class3 or Class4))

重写为:

代码语言:javascript
复制
  Class1 and NewClass1 and (Property1 some NewClass2)

  where Class2 is a subset of NewClass1,
        Class3 is a subset of NewClass1,
        Class3 is a subset of NewClass2,
        Class4 is a subset of NewClass2

我知道答案是“不”,但为什么是“不”?

EN

回答 1

Stack Overflow用户

发布于 2018-08-23 21:53:19

通过“重写到”,我猜您的意思是用命名类C_or_D替换原始本体中的所有析取表达式C or D,并添加公理:

代码语言:javascript
复制
`C subClassOf C_or_D`
`D subClassOf C_or_D`

您必须递归地执行此操作,因为C (分别为D)本身可能包含析取。然后你就有了一个本体,它有更多的公理,更多的概念名称,但语义似乎非常接近。然而,当你怀疑自己时,你错了。考虑以下示例:

代码语言:javascript
复制
A subClass C or D
C subClassOf B
D subClassOf B

使用您提议的重写,您将获得:

代码语言:javascript
复制
A subClass C_or_D
C subClassOf C_or_D
D subClassOf C_or_D
C subClassOf B
D subClassOf B

第一个本体需要A subClassOf B,而第二个本体不需要。

一般来说,析取在推理中是有问题的,因为它会导致选择。如果你想,比如说,检查一致性,你必须尝试为备选方案的一个分支找到世界的可能排列,如果失败,为备选方案的第二个分支找到世界的可能排列。每个析取可能会将处理时间乘以2。对于n个析取,您可能会得到n个可能性的幂的2来探索。

这在命题逻辑中也是一样的:如果你有一个没有析取出现的合取范式,那么可满足性是一个愚蠢的简单问题。当你允许析取时,它是NP完全的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51986001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档