王朝百科
分享
 
 
 

回答集编程

王朝百科·作者佚名  2009-12-26  
宽屏版  字体: |||超大  

回答集编程是语法上类似传统逻辑编程而语义上密切于非单调逻辑的一种声明式编程。在传统逻辑编程和回答集编程之间的主要区别是如何表示否定为失败。在传统逻辑编程中,否定为失败指示推导失败;在回答集编程中,它指示一个文字的一致性。

语法

回答集编程由规则的集合构成,每个规则由一个头部和一个后部构成:

<math>head leftarrow body</math>

规则的头部和后部二者都是文字的集合,每个文字都是可能被否定的原子。与传统逻辑程序相反,原子都是命题而不是一阶的,并且可以使用两种形式的否定去否定它们: 经典否定(指示为 <math>

eg</math>)和否定为失败(指示为 <math>not</math>)。文字要么是原子要么是(使用经典否定)否定的原子。下面是一个例子程序:

<math>a leftarrow b, not~c</math>

<math>a, not~

eg c leftarrow not~d,

eg e</math>

<math>

eg c leftarrow not~

eg e, a</math>

依据第一个规则,<math>a</math> 是真,只要 <math>b</math> 是真,并且 <math>c</math> 可以被假定为假而不产生矛盾。

语义

程序的语义基于它的回答集,每个回答集都是文字集合。对于不包含否定为失败的程序,程序的语义基于闭包和最小性的概念:

程序在一个文字集合下闭合,如果这个集合包含至少一个在某个规则的头部中的文字,而总是包含在规则的体部中的所有文字。

文字集合是一个程序回答集,如果在这个程序闭合于的文字集合中、它(在集合的容量(containment)上)是最小化的。

如果程序包含使用否定为失败否定的一些文字,语义要求额外的简约概念:

一个程序在一个文字集合下的简约是通过对每个规则进行下列变更而获得的程序:

除去在头部中的、使用否定为失败否定的并且在集合中的所有文字;

除去在后部中的、使用否定为失败否定的并且在集合中不包含的所有文字;

删除整个规则,如果在应用完上面两个规则之后,它仍然包含(使用否定为失败)否定的原子。

文字集合是一个程序的回答集,如果它是这个程序在这个集合自身下的简约的回答集。换句话说,可以通过运行下列非确定性的算法来计算一个回答集可以:

选择文字集合 L;

计算程序 P 在 L 下的简约 PL;

如果 L 是 PL 所闭合的最小化文字集合则

输出 L

最初的文字集合 L 的选择是非确定性的。确定 L 是否为一个回答集的算法,首先计算程序在 L 下的简约,并接着检查 L 是否是这个无否定为失败的程序的回答集。

一个回答集程序可以有零个、一个或多个回答集。一个程序蕴涵一个文字,如果它的所有的回答集都包含这个文字。

比较、复杂性和实现

与 Prolog 相反,回答集程序的语义不依赖于规则的求值和原子在每个规则中的特定次序。

检查一个程序的回答集的存在性的复杂性,和检查一个程序是否蕴涵一个文字复杂性,范围是从 P 到多项式层次的第二级,依赖于一个程序可以满足也可以不满足的一组条件(就是说分层、头部中的析取)。

实现了回答集编程的三个系统是:smodels、dlv 和 cmodels。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有