分块格算法分析:BKZ’算法的深入研究
1. BKZ’算法成本分析
在分析 BKZ 和 BKZ’算法的位复杂度时,通常会分别考虑几个成本组件。本文主要关注遍历次数,调用 SVP 求解器(对于 BKZ)或 HKZ 约化算法(对于 BKZ’)的次数最多为 $n$ 倍的遍历次数。
一次遍历包含高效操作(如 LLL、大小约化等)以及更耗时的 SVP/BKZ 调用。SVP 求解器或 HKZ 约化算法的成本通常以其执行的算术运算次数来界定,对于所有已知算法,该数量至少在块大小 $\beta$ 上呈指数级增长。
此外,还需考虑在调用 SVP/HKZ 之前、期间和之后执行算术运算的位成本。这些算术成本可以通过考虑所涉及数量的位大小来界定,通过有理算术和标准工具,可以证明它们在输入位大小上是多项式的。通过使用浮点近似技术,这些成本可能会进一步降低。
总体成本的上界为 $Poly(n, \log |B|) \cdot 2^{O(\beta)} \cdot \tau$,其中 $\tau$ 是遍历次数。
2. 沙堆模型下的 BKZ’分析
2.1 模型及其动态系统解释
在分析 BKZ’时,可以通过观察向量 $x := (\log |b^*_i|)_i$ 在执行过程中的变化来进行研究,而不是考虑整个基 $(b_i)_i$。这种简化在格约化算法的分析中很常见,并且可以用沙堆模型来解释。
对于 $\beta$ 维 HKZ 约化基 $(b_i) {i\leq\beta}$,定义 $x_i = \log |b^*_i|$,根据引理 1 有:
$\forall i \leq \beta, x