Page 135 - 《软件学报》2025年第10期
P. 135

4532                                                      软件学报  2025  年第  36  卷第  10  期


                                                    ∑ ∏
                                              #(G l ) =  ρ t  t i        ).
                                                           x = µ(x l 1
                                                            l i   , x l 2  ,..., x l m
                                                     t  i∈[m]
                                                       ∏
                                                                    m                                µ 在
                    由于  {g j } 两两线性无关, 故通过上述方式构造            (n i +1) ⩽ n  个实例去询问   Holant(F) 的神谕, 可以得到
                                                         i∈[m]
                                                                                             (∏         )
                 ∏                                            ∏
                      (n i +1) 个不同点上的值. 根据拉格朗日插值法, 已知      µ 在     (n i +1) 个不同点上的值, 可以在   poly    (n i +1)
                   i∈[m]                                         i∈[m]                          i∈[m]
                 时间内计算出     µ 中所有未知系数  . 从而可以计算得         µ(a 1 ,a 2 ,...,a m ) = #(G).
                                          ρ t
                    接下来分析以上归约所需时间. 每构造一个               G l  需要  poly(|V|) 时间, 访问一次  Holant(F) 的神谕所花费的时间
                                          (∏         )                           (∏        )
                 为   O(1); 计算出所有   ρ t  需要  poly  (n i +1)  时间; 计算   µ(a 1 ,a 2 ,...,a m ) 需要  poly  (n i +1)  时间; 故总时间
                                             i∈[m]                                  i∈[m]
                 为  poly(|V|), 即以上归约可在  poly(|V|) 时间内完成.
                    (2) 块插值: 构造亚指数时间归约来证明           Holant(F ∪H)⩽ serf Holant(F). 由于亚指数时间归约具有传递性, 因此
                 在这里简单展示      H 内只有一个一元函数       [1,a] 时的归约细节.
                                                                                ′    ′
                      G(V,E) 为  Holant(F ∪{[1,a]}) 的一个实例, 且其中对应函数  [1,a] 的点集记作  V . 设  V = n ⩽ |V|.
                                      ′                                                   d. 这些集合被称为
                    任给一个正整数      d, 将  V  分成   r = ⌈n/d⌉ 个不相交集合   B 1 ,B 2 ,...,B r , 满足每个集合大小不超过
                                                                                                       r
                 “块”. 不妨设  n 被   d 整除, 即每块大小恰好为   d. 为  E  的每组布尔赋值都新设计一个标签         ⃗ t = (t 1 ,t 2 ,...,t r ) ∈ {0,1,...,d} :
                                ,
                 该组赋值下,    ∀i ∈ [r] B i  内恰好有  t i  个点的邻边被赋值为  1. 根据定义:

                                                           ∑    ∏
                                                    #(G) =     ρ ⃗ t  a ,
                                                                    t i
                                                              r  i∈[r]
                                                         ⃗ t∈{0,1,...,d}
                                ⃗ t
                 其中,   ρ ⃗ t  仍然为标签   的所有可能赋值下的   V −V  中点对应函数值的积. 定义       n 次   元多项式:
                                                      ′
                                                                               r

                                                              ∑    ∏
                                                                       t i
                                                 µ(z 1 ,z 2 ,...,z r ) =  ρ ⃗ t  z i .
                                                                 r
                                                            ⃗ t∈{0,1,...,d}  i∈[r]
                    有  µ(a,a,...,a) = #(G). 根据假设, 利用   F  门可以实现  (d +1) 个两两线性无关的一元函数, 记为    {g j = [1, x j ] | x j ∈
                                                                 ⃗                r                B i  内点
                 C, j ∈ [d +1]}. 由于   d  为常数, 则这些  F  门的规模为常数. 任取  l = (l 1 ,l 2 ,...,l r ) ∈ [d +1] , 对于任意   i ∈ [r], 将
                 对应函数替换成       , 得到新的   Holant(F) 的实例   . 根据定义:
                              g l i                  G ⃗ l

                                                   ∑     ∏
                                               ) =            t i           ).
                                            #(G ⃗ l    ρ ⃗ t  (x l i  ) = µ(x l 1 , x l 2  ,..., x l r
                                                       r
                                                  ⃗ t∈{0,1,...,d}  i∈[r]
                                                                           r
                                                    r
                    由于  {g j } 两两线性无关, 故取遍   ⃗ l ∈ [d +1]  并按照上述方式构造   (d +1)  个新的实例去询问   Holant(F) 的神谕,
                               r
                 能得到  µ 在   (d +1)  个不同点上的值, 恢复出所有的系数  , 从而计算         #(G).
                                                            ρ ⃗ t
                                    r                                              F  门的规模为常数, 故每个
                    以上归约构造      (d +1)  个新的实例, 每个实例构造需要       poly(|V|) 时间. 由于涉及的
                 新的实例规模为      O(|V|). 以上归约的时间为:

                                                                               r
                                             r
                                                                    r
                                T(|V|;d) = (d +1) (poly(|V|)+O(1))+poly((d +1) )+poly((d +1) ) ⩽ 2 c  log(d+1)  |V| ,
                                                                                     d
                 其中,  c 为某个常数   (与  G 相关). 任给一个时间运行参数       ε > 0, 总可以选取足够大的常数       d, 使得  T(|V|;d) ⩽ 2 ε|V| , 故
                 以上归约为亚指数时间归约.
                    由引理   4  的证明可以看出, 若原问题实例有         N  个点, 多项式时间插值归约会构造常数元            O(N) 次多项式, 求解
                                                                                                   ( )
                                                                                                    N
                                                                                                  O    元
                 其中的   poly(N) 个系数需要构造    poly(N) 个新的实例, 其中每个新的实例规模为          poly(N); 而块插值会构造
                                                                                                    d
                                          log(d+1)  N          log(d+1)  N
                 O(N) 次多项式, 求解其中的      O(2  d  ) 个系数需要构造    O(2  d  ) 个新的实例, 其中每个新的实例规模为          O(N). 容
                 易看出, 块插值牺牲归约时间, 将归约中需要构建的新实例规模限制在线性规模                         O(N); 同时, 通过调节常数    d 的大
                                                              2 , 从而构造了亚指数时间归约. 多项式时间插值需要
                                                               εN
                 小, 使得构造的新实例个数及整个归约的时间小于给定的
                 O(N) 个线性无关函数的构件帮助构造新的实例, 而块插值仅需要常数个                      d (   个). 因此, 对于两个问题  A  和  B, 若能
                 通过多项式时间插值方法证明           A  ⩽ poly  B, 则必能通过块插值方法证明   A  ⩽ serf  B.
                  4   对称双态自旋系统相关的细密度二分定理
                                                                                                  2
                    考虑   k 正则图上的对称双态自旋系统的配分函数计算问题, 即                Holant(g|= k ), 其中  k 为正整数,  g : {0,1} → C 为
   130   131   132   133   134   135   136   137   138   139   140