反向推理
1,反向推理中我们知道的:
(1)事实(事实库, 真正事实)
(2)规则(规则库:多个(前件, 后件)构成,即 前件=>后件)
(3)假设(假设事实)
2,要得出的是:
假设和事实的关系(假设是否与事实相符合/假设是否成立):(1)假设与事实相符(事实=>假设) (2)假设与事实不符合。
3,思路:
我们需要论证假设是否与事实相符合,即 事实=>假设。
显然需要通过规则(规则库)来联系两者。
我们可以使用规则库将假设中的每条信息通过规则库进行信息的扩展转换,通过每一步的转换,查看是否与事实存在等价的情况;若存在,说明假设可以通过规则进行的扩展得到该事实,自然事实=>假设(假设成立)。
4,实现步骤:
(1)若不存在假设作为后件的规则,那必然假设与事实不符,直接false
(2)我们将把假设作为后件的规则的前件,作为我们推理假设的扩展事实(问题转换为:真正事实=>这个事实(假设事实))(将多步使用)
(3)我们把真正事实的每条信息直接加入规则库做为后件,前件为空。
*至此我们将问题再次转换:我们通过(3)可知,如果有假设事实的信息根据(3)加入的规则,那假设事实将消失一条信息;
于是我们将问题转换为根据所有的规则更新后,是否存在假设事实为空的情况(空则说明我们的扩展假设事实<=>真正事实, 而扩展假设事实=>假设,此时显然得到真正事实=>假设,即假设成立。)
5,来个例子:
事实 a,7,9
规则 <(1,2,3,4),a> <(1,5),a> <(a,7,8),b>
假设 b
updata规则 <(1,2,3,4),a> <(1,5),a> <(a,7,8),b> <,a> <,7> <,9>
b ---> (a,7,8)
|
updata(a-->(1,2,3,4))<=(1,2,3,4,7,8) updata(a-->(1,5))<=(1,5,7,8) updata(a-->)<=(7,8)
| | |
| | |
v v v
no live<?,1> no live<?,1> updata(7-->)<=(8)
false false |
|
v
no live<?,8>
false
因此得出假设不成立。