认知描述程序的实例化(1)

认知描述程序(epistemic specification)是回答集程序的超集,它是为了解决asp程序不能“自省”的问题所发明的一种逻辑语言。asp的求解的复杂度已经很高,复杂度,认知描述程序的求解复杂度更高,,我们原本设计的ES实例化器效率太低,以至于很多问题都不能有效的求解出来。我们现在准备转化一个思路,将ES程序转化成一个回答集程序(实例化等价),利用现有的高效的回答集程序的实例化器求解,等实例化完成后再恢复成原来的认知描述程序(略有点trick,不像正派武功,走了点邪道,哈哈),然后再利用我们设计的求解器求出该认知描述程序的解。

废话不多说,现在就展示一下转化的方法。


<span style="font-size:10px;">初步考虑:
1. 重写带有主观字的规则
对于包含K l的规则R
1)添加新规则,避免改写规则被优化
2)使用新的逻辑程序完成实例化
2. 实例化完成后,去掉所有添加规则,并将ground_k_l重写写成K l.</span>


看一个例子吧:

%% p(X) :- K l(X).
%% l(a).

%%added rules
defined_l(X) :- l(X).
positive_l(X) :- not negative_l(X), defined_l(X).
negative_l(X) :- not positive_l(X), defined_l(X).
ground_k_l(X) :- positive_l(X).
ground_not_k_l(X) :- positive_l(X).
ground_k_l(X) :- negative_l(X).
ground_not_k_l(X) :- negative_l(X).

p(X) :- ground_k_l(X).
l(a).
这是一个最简单的例子,为了实例化l(X),我们做了上述转化实例化后的程序为:

l(a).
defined_l(a).
positive_l(a):-not negative_l(a).
negative_l(a):-not positive_l(a).
ground_k_l(a):-positive_l(a).
ground_not_k_l(a):-positive_l(a).
ground_k_l(a):-negative_l(a).
ground_not_k_l(a):-negative_l(a).
p(a):-ground_k_l(a).

可以看到K l(X)被正确实例化出来了,只是被改写成ground_k_l(a)了,所以下一步我们要做的就是去掉新加的规则,结果如下:

去掉的准则就是1.删除所有头部含有defined_l,positive_l,negative_l,ground_k_l和ground_not_k_l的规则,2 将体部的ground_k_l和ground_not_k_l还原成K l 和not K l

l(a).
p(a):-K l(a).

还剩下的事情就是如何证明这样做方法可以保证最后的程序与原程序语义等价。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值