Page 394 - 《软件学报》2025年第4期
P. 394

1800                                                       软件学报  2025  年第  36  卷第  4  期



                 基于  C L  中的顶点可以将分支     Br 划分为如下   |C L |+1 个子分支:
                                     Br i = ⟨S L ∪ D i−1 ,S R ,C L \D i ,C L \{v i },C R ⟩ , 其中  D i = {v 1 ,...,v i } 且  i ∈ [1,n+1] .
                                                                                     C R  扩展当前解. 为了进一
                    上述针对    Br 的分支过程称之为对称集合枚举. 值得注意的是, 同样可以利用候选集
                 步阐述对称集合枚举的思想, 图         2  展示了使用候选集      C = {v 1 ,v 2 ,...,v n } 来扩展当前解的枚举树.

                                                           {v 1 , v 2 , …, v n }


                                                                  …
                                         −v 1 ;  −v 2 ;  −v 3 ;  −v i ;    −   ;
                                         +       +{v 1 }  +{v 1 , v 2 } +{v 1 , v 2 , …, v i−1 }  +{v 1 , v 2 , …, v n }
                                                    图 2 对称集合枚举树
                    然而直接利用上述方法, 递归分支           Br  的子分支数量仍然与      C L  的大小相关. 考虑到    k-缺陷二团最多允许缺陷
                                    C L \N(S R ) 中最多允许                                    S R  的共同邻居, 即
                 k 条边的限制, 则候选集                       k 个顶点同时扩展当前解, 其中         N(S R ) 表示顶点
                 N(S R ) = {u ∈ L|S R ⊆ N u (G)} . 为此可以得到如下针对  k-缺陷二团枚举的扩展方式.
                                                               v 4
                    定理   1. 给定递归分支     Br = ⟨S L ,S R ,C L ,C R ,X L ,X R ⟩  , 设  D = C L \N(S R ) = {v 1 ,v 2 ,...,v d }  , 其中  d = |C L \N(S R )|  . 若
                 |D| > k  , 则如下  k+1  个子分支可用于枚举所有包含     (S L ,S R )  的极大  k-缺陷二团:
                    ● 第  1  个子分支为  Br 1 = ⟨S L ,S R ,C L \{v 1 },C L \{v 1 },C R ⟩ ;
                    ● 第  i 个子分支为  Br i = ⟨S L ∪{v 1 ,...,v i−1 },S R ,C L \{v 1 ,...,v i },C L \{v i },C R ⟩ , 其中  i 为  2  到  k 的整数;
                    ● 第  k+1  个分支为  Br k+1 = ⟨S L ∪{v 1 ,...,v k },S R ,C L \{v 1 ,...,v d },C L ,C R ⟩ .
                    由定理   1  可知, 若候选集中存在至少       k+1  个当前解的非共同邻居时, 递归分支          Br 的子分支个数仅与      k 的大小
                 有关与候选集的大小无关. 在实际应用中, k 通常取值较小, 为此该分支方法相较于基本的对称集合枚举具有更高
                 的效率. 下面的例子进一步阐明了定理            1  相较于基本的对称集合枚举的优势.
                    为了阐述定理      1  从图  3  的二部图   G  中枚举包含  (S L ,S R ) 的极大  k-缺陷二团的分支过程, 其中  k = 2 S L = {u 1 }
                                                                                                 ,
                 以及  S R = {v 1 } , 图  4  展示了一个具体的实例, 其中黑色部分的子分支由定理         1  得到, 子分支数量为    3; 灰色部分的
                 子分支为冗余分支. 在递归分支之前, 需要计算                S L  在候选集  C R  中的非共同邻居, 即   C R \N(S L ) = {v 3 ,v 4 ,v 5 ,v 6 }  .
                 由于  C R \N(S L ) 的大小大于  k, 为此可以选择  C R \N(S L ) 中前  k 个顶点执行定理  1  的分支过程. 具体地, 第  1  个子分
                              v 3  的极大  k-缺陷二团; 第  2                          v 4  的极大  k-缺陷二团; 第  3  个子分
                 支为枚举不包含                          个子分支为枚举包含        v 3  但是不包含
                 支为枚举包含     {v 3 ,v 4 } 的极大  k-缺陷二团. 值得注意的是, 基于  k-缺陷二团的定义,     C R \N(S L ) 中最多允许  k 个顶点
                                                                                        C R \N(S L ) 中不存在大
                 加入当前   (S L ,S R ) 中, 为此在枚举包含  {v 3 ,v 4 } 的子分支中, 候选集一定不包含  {v 5 ,v 6 } . 此外,
                 于  k 个的顶点加入当前解中, 因此该分支方法的子分支数量仅为                  k +1 = 3 个, 与候选集  C L  (或者  C R  ) 的大小无关.
                 表明该方法可以极大地减少冗余分支的数量.


                                                 u 1  u 2   u 3   u 4  u 5



                                              v 1  v 2   v 3        v 5   v 6
                                                      图 3 二部图例图

                                                           C R \N(S )={v 3 , v 4 , v 5 , v 6 }
                                                                L



                                         −v 3 ;  −v 4 ;  −v 5 ;  −v 6 ;    −   ;
                                         +       +{v 3 }  +{v 3 , v 4 }  +{v 3 , v 4 , v 5 }  +{v 3 , v 4 , v 5 , v 6 }
                                    图 4 当  k = 2 时枚举包含  (S L = {u 1 },S R = {v 1 }) 的对称集合枚举树
   389   390   391   392   393   394   395   396   397   398   399