Page 23 - 《软件学报》2026年第1期
P. 23

20                                                         软件学报  2026  年第  37  卷第  1  期


                    引理   12.  d ⩾ 3  时, 若存在一族  F d (n)-器  Ampl d = (P d ,X d ,(a ,b ,c ),(a,b,c),Z d )  使得其中程序  P d  长度为  p(n) ∈
                                                                     ′
                                                                   ′
                                                                 ′
                 F <d , 令  D = max(|X d |,2+|{a,b,c}∪Z d |), 则  D-VASS  可达性问题是  F d -难的.
                    证明: 与引理    10、推论   2  同理, 只需将归约问题改为计数器机器          F d (n)/2-时间可达性问题, 并对调模拟和结束
                                                               ;
                              a、b 的角色:                x+y+a = A b 用于记录测零次数, 每次减        2.
                 阶段中三元组内                a 用于维持不变量
                    为了解决三元组只能进行         B/2 次测零, 但  P ′   中却需要进行  ⩾ B 次测零的问题, Czerwiński 等人  [36] 使用了快速增
                                                     k+1
                 长函数的另一等价定义         (等价性证明见原文):      F 1 (n) = 2n 以及  k ⩾ 1 时  F k+1 (n) = F (n/4)  (4). 最终得到一族  F d : N 4 →
                                                                                k
                 N 4 , 这里,  N 4  表示  4  的自然数倍数. 函数族的定义域限制并不影响引理         12  的正确性, 因为将   n 替换成为稍大的     N 4
                 中的数是容易的. 本节后续证明中仅考虑满足              B ∈ N 4  的乘法三元组. 同时, 为了减少     Z k  中的计数器数量, 我们必须
                                                 ′
                                             ′
                                               ′
                 从  Z 1  开始优化. 定义计数器程序    P 1 (a ,b ,c ,a,b,c;l) 如图  11  所示.

                                                                   k b′ +=4;
                                                                   loop a′ +=1,  k c′ +=4;
                                                                      k
                                          loop
                                            loop a′ -=1,  a +=1,  c′ -=1,  c += l ;  loop k P ; zero-test ( c′ )
                                            loop a′ +=1,  a -=1,  c′ -=1,  c += l ;  , , ,b c a′ ′  k )
                                                                          , , ;1b c′
                                            b′ -=2,  b += 2l ;      1 P  (a k  k  k  k  k  k
                                                                    zero-test ( c )
                                          loop a′ -=2,  a +=2,  c′ -=2,  c += 2l ;  k P ; zero-test ( c′ )
                                                                          k
                                          b′ -=2, b += 2l ;                k
                                                                   loop  a + ′ -=1,  k c + ′  1 -=2;
                                                                      k  1
                                                                   zero-test ( a + ′ )
                                                                         k  1
                                             P 1  (a′, b′, c′, a, b, c: l)  P k+1
                                                 图 11 优化后的    F d (n)-放大器

                                ′  ′  ′      l = 2 时即可得到一个                     (     (  ′  ′  ′  )   { })
                                                                                                      ′
                    设   X = {a,b,c,a ,b ,c }, 容易验证            F 1 (n)-放大器  Ampl 1 = P 1 ,X 1 , a ,b ,c ,(a 1 ,b 1 ,c 1 ), c  ,
                                                                                      1  1  1         1
                                                          }
                           (
                                       )
                                             {
                 其中,  P 1 = P 1 a ,b ,c ,a,b,c;2 , X 1 = a 1 ,b 1 ,c 1 ,a ,b ,c .
                                                         ′
                                 ′
                                                       ′
                                                     ′
                               ′
                             ′
                             1  1                    1  1
                                                                                 )
                    假设我们已经得到了一个          F k (n)-放大器  Ampl k = P k ,X k , a ,b ,c ,(a k ,b k ,c k ),Z k , 其中,  Z k = c , 构造  P k+1  如
                                                                                           { }
                                                           (
                                                                (
                                                                       )
                                                                                             ′
                                                                  ′
                                                                    ′
                                                                      ′
                                                                                             k
                                                                      k
                                                                    k
                                                                  k
                 图  11                   a ′  , b ′  , c ′   构成的三元组模拟, 需要对其中的加法语句进行适当的互补操作, 此
                     所示. 程序中的测零使用
                                          k+1  k+1  k+1
                                          {         }      {  }
                 处隐去了这些操作. 令      X k+1 = X k ∪ a ′  ,b ′  ,c ′  ,  Z k+1 = c ′  .
                                            k+1  k+1  k+1   k+1
                                      (                 )
                                   τ s = a ′  ,b ′  ,c ′         τ s  出发的                       X k  上, 第  1
                    ● 假设初始格局为           k+1  k+1  k+1 ,A s ,B,X k+1 , 将任意从   Z k + 1 -执行限制在计数器集合
                                                 (
                                                              )
                 个  loop                      τ 0 = a ,b ,c ,A 0 ,4,X k . 第  2  个  loop  c  的模拟测零保证了该执行对应
                                                                                ′
                                                     ′
                                                       ′
                                                   ′
                                A 1  构造了三元组
                       语句对某个
                                                   k  k  k               语句对    k
                 P k  的一次  Z k -执行, 因此将  τ 0  放大到了  τ = (a k ,b k ,c k ,A 1 ,F k (4),X k ), 其中,   A 1  是某个自然数; 对  c k  的模拟测零保证了
                                               ′
                                               0
                            (       ′  ′  ′  )                  (  ′  ′  ′      )
                 该执行对应    P 1 a k ,b k ,c k ,a ,b ,c ;1  的一次{c k }-执行, 得到  τ 1 = a ,b ,c ,A 1 ,F k (4),X k . 由于  B = 0 (mod 4), 乘法三元
                                                                  k
                                    k
                                      k
                                                                    k
                   τ s  保证一次                                                                  τ t = (a k ,b k ,c k ,
                 组           Z k + 1 -执行中恰好能够进行   B/2 次模拟测零, 从而    P k  可以循环执行   B/4 次, 最终得到
                              )
                 A B/4 ,F (B/4)  (4),X k+1 .
                      k
                    ● 若给定    A ∈ N , 其中,   B ∈ N 4 , 借用   Ampl k  的性质不断倒推可知: 存在   A s ∈ N , 使得   P k+1  能从   τ s = (a ′ k+1 ,
                 b ′  ,c ′  ,A s ,B,X k+1 )  Z k + 1 -计算出某个  τ t = (a k ,b k ,c k ,A,F k+1 (B),X k+1 )  使得  A t ⩾ A .
                  k+1  k+1
                                 (
                                                               )
                                         (
                    综上,  Ampl k+1 = P k+1 ,X k+1 , a ′ k+1 ,b ′ k+1 ,c ′ k+1  ) ,(a k ,b k ,c k ),Z k+1  是一个  F k + 1 (n)-放大器. 由构造过程可知:  |X d | = 3d+
                  ,
                 3 |Z d | = 1, 程序长度为  2 O(d) , 从而有如下引理.
                                                             (
                                                                   (
                    引理  13  [36] .  d ⩾ 3 时, 存在一族  F d (n)-放大器  Ampl d = P d ,X d , a ,b ,c ,(a d ,b d ,c d ),Z d  使得其中程序  P d  长度为
                                                                         )
                                                                                    )
                                                                         ′
                                                                       ′
                                                                    ′
                                                                    d  d  d
                              ,
                 2 O(d) ,  |X d | = 3d +3 |Z d | = 1.
                                                                                                      ′
                                                                                ′
                    当  d ⩾ 3 时,  D = max(|X d |,2+|{a d ,b d ,c d }∪Z d |) = max(3d +3,4) = 3d +3. 注意,  b  只会减少, 因此在图  7  的  P  中
                                                                                d
                                           ′                                          O(d) . 因此有如下定理.
                 可以使用   n, n−1,..., 0 替换每次  b  的出现, 从而减少一个计数器, 代价是程序长度变为            n2
                                           d
                    定理  9 [36] .  d ⩾ 3 时, (3d + 2)-VASS  可达性问题是  F d -难的.
                    相较于定理     8, 这是一个更好的下界. 事实上, 在不复用任何一组三元组中的计数器的情况下, 计数器数量必
                 然有  3d +Ω(1) 的下界, 此方法已经几乎对应此时的最优下界了.
                  3.4   快速增长函数的向量编码
                    本节介绍    F d (n)-放大器的构造路线    2: Leroux [15,30] 的基于向量编码的构造方法. 与第   3.3  节中阐述的思路不同,
                 2021  年  Leroux [15] 在构造  F d (n)-放大器的过程中巧妙地使用向量对一般形式的快速增长函数进行编码, 同时用程序
   18   19   20   21   22   23   24   25   26   27   28