NTL库中的LLL算法

时间:2014-06-17 02:20:54

标签: c ntl

我正在学习当前使用NTL库,尤其是稍后的LLL算法。有没有人知道在NTL库中使用LLL函数?提前谢谢。

1 个答案:

答案 0 :(得分:3)

来自“文档”:

long 
[G_]LLL_{FP,QP,XD,RR} (mat_ZZ& B, [ mat_ZZ& U, ] double delta = 0.99, 
                   long deep = 0, LLLCheckFct check = 0, long verbose = 0);

您可以通过调用例如

来使用LLL功能
LLL_FP(B)

后缀FP标记精度,因为计算是在浮点运算中完成的。这样做是为了加速LLL算法。如果您需要更好的预处理,可以选择其他后缀QPXDRR

请注意,B必须是ZZ类型的矩阵。 NTL使用矩阵的作为晶格的基础。 (我遇到了这个问题,因为C.P. Schnorr教授将格子基础写为

在减少之后,LLL减少的基础会覆盖输入矩阵B。如果您需要转换矩阵U,那么执行reducktioin U*B = B_LLL,您可以调用

LLL_FP(B, U)

我希望这会有所帮助。