Page 59 - 《软件学报》2025年第8期
P. 59

3482                                                       软件学报  2025  年第  36  卷第  8  期




                                                         …
                                           :−f2([1,1,0,−1,−1],Var).
                                 :−f2([1,1,0,−1,−1],Var),
                                  f2(Var,[−1,−1,0,1,1]).
                                                   :−f1([1,1,0,−1,−1],Var),  :−f1([1,1,0,−1,−1],Var).
                                                   :−f1(Var,[−1,−1,0,1,1]).
                                                            :−f1(Var,[−1,−1,0,1,1]).
                                           :−f2(Var,[−1,−1,0,1,1]).
                                         …
                       ?−f([1,1,0,−1,−1],
                        [−1,−1,0,1,1]).  :r2([1,1,0,−1,−1],[1,1,−1,−1,0]).
                                :−r2([1,1,0,−1,−1],[1,1,−1,−1,0]),  :−r1([1,1,−1,−1,0],Var),
                                f2([1,1,−1,−1,0],[−1,−1,0,1,1]).  r1(Var,[−1,−1,0,1,1]).
                                                                           …
                                                            :−l1([1,1,−1,−1,0],
                                                             [1,1,−1,0,−1]).    :−r1([1,1,−1,0,−1]),[1,1,−1,−1,0]).
                                        :−f2([1,1,−1,−1,0],[−1,−1,0,1,1]).
                                                                  :−r1([1,1,−1,0,−1],[1,1,−1,−1,0]),
                                                                     r1([1,1,−1,−1,0],Var).  :−r1([1,1,−1,−1,0],Var).
                                                :−l1([1,1,−1,−1,0],[1,1,−1,0,−1]),
                                                 f1([1,1,−1,0,−1],[−1,−1,0,1,1]).
                                                            :−f1([1,1,−1,0,−1],   :−l2([1,1,−1,0,−1]),[1,0,−1,1,−1]).
                                                             [−1,−1,0,1,1]).
                                                                   :−l2([1,1,−1,0,−1],[1,0,−1,1,−1]),
                                                                     l2([1,0,−1,1,−1],Var).
                                                                                   :−l2([1,0,−1,1,−1]),Var).

                                                                           …
                                                     f ([1,1,0,−1,−1],[−1,−1,0,1,1]) 的  SLD-树的示意图
                             图 4 当   N = 3, M = 2 时, 目标


                                                …                          …
                                                               …  :−f2([1,1,0,−1,−1],Var).
                                                                             :−f1([1,1,0,−1,−1],Var).
                                              ?−f3([1,1,0,−1,−1],Var).
                                                                     :−f1([1,1,0,−1,−1],Var),
                               ?−f([1,1,0,−1,−1],
                                [−1,−1,0,1,1]).  :−f3([1,1,0,−1,−1],Var),  :−f2([1,1,0,−1,−1],Var), f1(Var,[−1,−1,0,1,1])
                                           f3(Var,[−1,−1,0,1,1]).  f2(Var,Var).
                                                                            :−f1(Var,[−1,−1,0,1,1]).
                                                 :r1(Var, [−1,−1,0,1,1]).
                                                                 :−f2(Var,Var).
                                                                            …
                                                               …                         …
                                                …
                              图 5 当  N = 4, M = 3 时, 目标   f ([1,1,0,−1,−1],[−1,−1,0,1,1]) 的  SLD-树示意图


                 3   元解释学习剪枝算法

                    如算法   1  所示, 为了在元解释学习      (meta-interpretive learning, MIL) 中实现剪枝, 我们的方法利用了保存失败
                 目标能划定搜索空间中不可行区域的洞察. 通过记录这些失败, 算法避免了冗余探索, 而是专注于有前景的区域,
                 从而提高搜索效率. 这个原理是我们基于记忆的剪枝算法开发的基础, 通过将                        SLD-树中的节点分类为常量化目标
                 和非常量化目标, 为更高效的         MIL  过程奠定了基础.
                 算法  1. MIL  剪枝算法.

                                                                               N
                 输入: 实例集   E, 背景知识   BK, 元规则集   MS , 数据库   DB, 谓词集   Sig, 最大子句数  , 最大发明谓词数     M = N −1;
                 输出: 程序  H.
   54   55   56   57   58   59   60   61   62   63   64