在Clingo指南中,有两种称为谨慎和勇敢的模式,如下所示:
勇敢的计算一个逻辑程序的勇敢结果(所有答案集的总和)。 谨慎计算一个逻辑程序的谨慎结果(所有答案集的交集)。
指南中没有提供更多的信息。我试了几个例子,很难理解这个问题。
我尝试运行以下简单的ASP程序:
p :- not q.
q :- not p.运行没有模式参数的Clingo将给出正确的答案集:
answer 1:{p}
answer 2:{q}正如指南中所描述的,如果在勇敢模式下运行,这将计算所有答案集的合并,我将得到结果{p, q}。
同样,对于谨慎的情况,预期结果为空。
然而,克林戈勇敢推理的实际结果是:
clingo版本5.3.0 从试验中读/谨慎推理 解决..。 答:1 问: 后果: 1;2 答:2 后果: 2;2 萨蒂斯菲尔德 模型:2 勇敢:是的 后果:2 电话:1 时间: 0.006s (解题: 0.00s 1型号: 0.00s Unsat: 0.00s) CPU时间: 0.002s
至于谨慎的情况:
clingo版本5.3.0 从试验中读/谨慎推理 解决..。 答:1 问: 后果: 0;1 答:2 后果: 0;0 萨蒂斯菲尔德 模型:2 谨慎:是的 后果:0 电话:1 时间: 0.001s (解题: 0.00s 1型号: 0.00s Unsat: 0.00s) CPU时间: 0.001s
那么,[]中的数字代表什么呢?如何理解克林戈的谨慎勇敢的推理模式?
发布于 2019-04-14 19:36:53
当您使用枚举算法--enum-mode brave或--enum-mode cautious调用clingo时,每个枚举模型中出现的原子“会聚”到一组勇敢或谨慎的结果中。即在brave模式下原子单调增加,而在cautious模式下原子单调减少。把它看作是一个“奔跑”的联合或十字路口,为勇敢和谨慎的后果,雷普。
方括号[d;p]中的数字有以下含义: clingo对每个模型调用TextOutput::printMeta,它输出由Output::numCons计算的确定性后果d和剩余可能后果p的一对整数。
编辑:最后一个答案将给出最终结果,即输入程序的勇敢/谨慎的后果。如果您只关心最终的结果,那么您可以像这样调用clingo来获得勇敢的结果(例如,程序a | b | c | d.):
% echo 'a|b|c|d.' | clingo -e brave | grep -A1 '^Answer:' | tail -n -1
b c d a对于程序a | b | c | d. (即空集)的谨慎后果,只需在谨慎的枚举模式下启动clingo:
% echo 'a|b|c|d.' | clingo -e cautious | grep -A1 '^Answer:' | tail -n -1https://stackoverflow.com/questions/55675488
复制相似问题