LLL和BKZ算法的一些注記

swap bi and bi+1

交換了bi和bi+1以后, b1*,...,bi-1*肯定沒有變, 計算bi*=bi+1*+u(i+1,i)bi*, bi+1*的式子比較復雜, 然后bi+2*,...,bd*的值按照論文的說法是也沒有發生改變, 不知道有沒有簡單點算出后面這些正交化值得方法.
i+1后面的向量, 是投影到前面分量形成的正交補空間里面, 而前面分量的正交補空間確實是沒有變得.

對于某個格基bk的size reduction
輸入格基, 正交化系數:
對于k,
看bk關于前k-1個正交基的系數
從k-1開始
如果系數超過0.5, 那么就把bk給約減(四舍五入系數乘以相應的前面的格向量)得到新的bk, 得到新的bk以后, 跟新所有關于k的系數.
最后輸出格基, 這里bk滿足約化條件, 以及新的正交化系數
交換bi和bi+1的標準是如果交換后, bi* new 比原來的bi*小, 那么就交換吧.

得到約化基, 通過約化每一個向量.

LLL約化: 輸入格基, 約化參數

  1. GSO 算正交系數以及正交向量的長度(這個存的東西少一點)
  2. size reduction:
    從第2個格基向量開始約減
    約減單個格基向量
    然后更新與這個向量相關的正交系數(u(k,k-1), u(k, k-2), ..., u(k,1))
    3.算Lovasz條件, 如果不滿足, 那么交換相鄰的兩個格基向量, 滿足的話繼續約減下一個格基向量
  • 做到bk的時候, b1, b2,...,bk-1已經是LLL約化的了
  • 交換bk-1, bk, 我們需要更新對應的正交向量, 算長度, 以及所有與k-1, k相關的正交系數

B記格基向量的最大長度的平方, throughout LLL

  1. 正交向量長度(一個有理數)的分子和分母的bit長度
  2. 正交系數的bit長度
  3. bi的整系數的bit長度
    都被O(維數*logB)界住
    自然問: 迭代了多少次? 進行了多少次整數(O(維數*logB)位)上的算術運算? 精細的分析見LLL的原始文獻Factoring polynomial with rational coefficients.

In practical applications, the above LLL is suffering frome the slowness of the subroutines for long int arithmetic.
To speed up the algorithm, it has been proposed to operate the numbers 正交系數 and 正交向量長度平方 in 浮點數運算.
However, the origin LLL becomes unstable and it has to be rewritten to minimize floating point errors.

An ordered basis b1,...,bm of lattice is KZ basis if it's size-reduced and if 第i格正交基向量的長度=第i次投影格里的最短向量長度

理論最差情形時間界的分析見文獻A hierarchy of polynomial time lattice basis reduction algorithms (1987 SCHNORR)

以下Schnorr翻譯為斯諾.
斯諾引進了BKZ約化基的概念, 有一個塊的size β, 說一個格基b1,...,bm是β約化的, 如果是size-reduced且if 第i格正交格基的長度<=

full enumeration

從最后一個坐標, 相繼地算前面的坐標
有一個深度優先的搜索樹

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容