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

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


                  ⊗k
                 X = X ⊗(k−1)  ⊗ X. 一个  k  元函数  F  是退化的, 当且仅当它可以写作一些一元函数的张量积, 即          F = U 1 ⊗U 2 ⊗...⊗U k
                              U 1 ,...,U k  成立.
                 对某些一元函数
                                                                                                    e
                    一个无向图     G  可以用元组   (V,E) 表示, 其中  V  表示顶点集,  E  表示边集.  V,E  也记作  V(G),E(G). 一条边   的两
                                                                               v
                                                                                                  v
                                                              l
                                      e
                                           v
                 个端点若为同一点       v, 则称   为点   的一条自环边; 若存在   条边有相同的两端点   和           u, 则将这些边视为   和    u 之
                                                                                                   v
                                                                                               u
                 间的一条    l  重边. 若图  G  中没有自环和重边, 则    G  为简单图, 并常用元组      (u,v)  来指代  G  中两端点为   和   的边.
                                                                         v
                                    v
                                                              v
                 N(v) 和  E(v) 分别表示点   的邻点和邻边集合;     d(v) 表示点   的度数, 即点   的邻边条数, 其中自环计         2  条,  l 重边计
                                                                                                    V R , 且
                 l 条. 图  G 的最大度记作   ∆ = max{ d(v)|v ∈ V} . 若  G 是二部图, 则  V  可以分割成两个不相交的非空点集    V L  和
                 G 中任一边的一端点在       V L  中且另一端点在   V R  中. 二部图也常用元组    (V L ∪V R ,E) 表示, 其中  V L  和  V R  中的点常分别
                                                                                       k
                 称为“左侧”和“右侧”的点. 若      G  是一个简单图且任意点的度数都为某个正整数                k, 则称  G  为   正则图. 若  G  能按照
                 任意两条边不在非端点处相交的方式画在平面上, 则称                     G  为平面图, 且符合要求的画法称为           G  的一个平面
                 嵌入.
                    下面介绍两个典型的图上的#P          完全问题.
                    点覆盖集数目问题       (#VC): 给定一个图    G(V,E), 一个点子集  S ∈ V  被称作  G  的一个点覆盖集    (vertex cover) 当
                 且仅当,   ∀e ∈ E e ,   至少有一端点在  S  内. 点覆盖集数目问题, 简记为#VC, 即为求给定图的点覆盖集数目.
                    布尔满足性数目问题        (#SAT): 给定一个正整数     k, 一个定义在    n 个布尔变量    x 1 , x 2 ,..., x n  上的公式  ϕ 被称为  k
                 合取范式, 记作    k-CNF, 当且仅当   ϕ 可以写作   m 个子句的合取, 即    ϕ = ∧ i∈[m] C i , 其中  m 为某个正整数,  C i  表示第   个
                                                                                                      i
                               .
                                        i
                                                     j
                 子句且形如    ∨ j∈[k] l i,j l i,j  表示第   个子句中的第   个文字, 且  l i,j  对应某个布尔变量  x ∈ {x 1 , x 2 ,..., x n } 或者某个变量的
                 否   ¯ x = 1− x. 一组布尔赋值  a = (a 1 ,...,a n )  满足  ϕ(a) = 1, 则称其为  ϕ  的一组满足性赋值. 给定一个  k-CNF  公式  ϕ,
                     ϕ 是否有满足性赋值称为布尔满足性问题, 简记为                       ϕ 的满足性赋值的组数, 被称为布尔满足性赋数
                 判定                                         k-SAT; 求
                 目问题, 简记为#k-SAT. SAT={k-SAT  | k ∈ N} 且#SAT={#k-SAT  | k ∈ N}.
                  2.2   Holant 问题
                    在第  1  节中, 本文介绍了双态自旋系统模型. 若这样的一个自旋系统                 S(V,E) 内相互作用函数为     g = [0,1,1], 即
                                                                          ∏
                 要求  S  内每条边至少有一端点变量赋值为           1. 给定一组点赋值, 若其满足           g(σ(u),σ(v)) = 1 , 则此时对应赋值  1
                                                                         (u,v)∈E
                 的点构成的集合恰好是        S  的一个点覆盖集; 反之亦然. 故该自旋系统的配分函数的值恰好是图                    S  的点覆盖集数目.
                 由此可知, #VC   问题多项式时间等价于相互作用函数为              [0,1,1] 的双态自旋系统的配分函数计算问题. 与#VC           不同
                 的是, #k-SAT  问题的实例并不总能被表达成一个自旋系统.
                    Holant 是更一般的计数问题模型. Holant 值概念        [31] 由  Valiant 提出, 并被  Cai 等人  [32] 发展成  Holant 问题模型.
                 令  q 是一个大于等于    2  的正整数,   F  是一个定义在   [q] 上的函数组成的集合.     F  上的一个   signature grid  是一个元组
                 Ω(G,π), 其中  G  是一个点集为  V  且边集为  E  的图;  π 是一个将  F  内某个函数映射到     G  内某个点的函数. 以     F  为参
                 数函数集的    Holant 问题, 记为  Holant q (F), 定义如下.

                      Holant q (F) 问题: 接受  F  上的一个  signature grid  Ω(G,π) 为输入, 并输出

                                                         ∑ ∏
                                                   # q (Ω) =   F v (σ| E(v) ),
                                                         σ:E→[q] v∈V
                                                                                             v
                                                             v
                 其中,  σ 表示对所有边的一组布尔赋值;          σ| E(v)  表示  σ 下点   的邻边  E(v) 的赋值;   F v  是被  π 映射到点   的函数, 其值
                 由  σ| E(v)  按照一定顺序决定  (该顺序已被   π 确定).
                                λF v λ 为某个非  0                           λ 倍; 这种简单的倍数关系是容易计算及
                                   ,
                    若将   F v  替换成              常数, 根据定义, 实例的值仅变化
                 相互归约转换的, 故在      Holant 问题中, 对任意函数    F  和非  0  常数  ,   λF  被视为等价的, 它们之间的相互转化被
                                                                  λ F  和
                 称为归一化    (normalization).
                                                    ,
                                                                                               ;
                    当  q = 2 时,   F  被限定在布尔定义域  {0,1} Holant 2 (F) 是一个布尔  Holant 问题, 简记为  Holant(F) # 2 (Ω) 也简
                 记为   #(Ω). 若  F  能被划分成不相交的两个函数集合        H 和  , 且限制输入的    Ω(G,π) 中  G  为一个二部图  (V L ∪V R ,E),
                                                             G
                 其中   V L  的每个点被  π 映射到  H 内的某个函数,   V R  的每个点被  π 映射到  G  内的某个函数. 这样的      Ω 也被称为   H|G
   126   127   128   129   130   131   132   133   134   135   136