图形卡上的并行最短格向量枚举
1. 最短格向量枚举算法
最短格向量的枚举以深度优先搜索顺序进行,其关键在于裁剪搜索树的部分分支,即确定哪些子树需要探索,哪些无法得到更短的向量。
设 $i$ 为树的当前层级,$i = 1$ 为树的底部,$i = n$ 为树的顶部。枚举算法的每一步包括:
1. 计算中间平方范数 $l_i$;
2. 在树中向上或向下移动一层(到层级 $i’ \in {i - 1, i + 1}$);
3. 确定坐标 $x_{i’}$ 的新值。
令 $r_i = |b_i^*|^2$,定义 $l_i = l_{i + 1} + y_i^2 r_i$,其中 $y_i = x_i - c_i$,$c_i = -\sum_{j = i + 1}^{n} \mu_{j, i} x_j$。对于特定的坐标选择 $x_i \cdots x_n$,对于所有以相同坐标 $x_i \cdots x_n$ 结尾的坐标向量 $x$,都有 $l_k \geq l_i$($k < i$)。这意味着中间范数 $l_i$ 可用于裁剪不可行的子树。如果 $l_i > A$($A$ 是到目前为止找到的最短向量的平方范数),算法将增加 $i$ 并在树中向上移动;否则,算法将降低 $i$ 并在树中向下移动。通常,最短向量长度的初始边界 $A$ 使用第一个基向量的范数。
$x_{i’}$ 的下一个值在以 $c_{i’}$ 为中心、长度为 $\sqrt{\frac{A - l_{i’ + 1}}{r_{i’}}}$ 的区间内选择。该区间按照 [SE91] 中描述的之字形模式进行枚举。从中心值 $\lfloor c_{i’}\rfloor$ 开始,ENU
GPU并行最短格向量枚举
超级会员免费看
订阅专栏 解锁全文
2353

被折叠的 条评论
为什么被折叠?



