レンストラ・レンストラ・ロヴァース(LLL)格子基底簡約アルゴリズムは、1982 年にArjen Lenstra、Hendrik LenstraおよびLászló Lovászによって発明された多項式時間の 格子簡約 アルゴリズムです。 [1] n次元整数座標を持つ基底が与えられた場合、 の格子L( R nの離散部分群 )に対して、LLL アルゴリズムは、 の時間でLLL 簡約(短く、ほぼ直交する)格子基底を計算します。ここで、 はユークリッドノルムの下での最大の長さ、つまり です。[2] [3]
元々の用途は、有理係数を持つ多項式を因数分解し、実数を同時に有理近似し、固定次元で整数線形計画問題を解くための多項式時間アルゴリズムを提供することでした。
LLL削減
LLL 縮小の正確な定義は次のとおりです。基底 が与えられた場合、 そのグラム・シュミット過程の直交基底 と任意の グラム・シュミット係数を 定義します。
このとき、 (0.25, 1]に次の式が成り立つような パラメータが存在する場合、基底は LLL 簡約化されます。
- (サイズ縮小) の場合。定義により、このプロパティは順序付き基底の長さの縮小を保証します。
- (Lovász 条件) k = 2,3,..,n の場合。
ここで、パラメータの値を推定することで、基底がどの程度簡約されているかを結論付けることができます。 の値が大きいほど、基底の簡約は強くなります。最初に、A. Lenstra、H. Lenstra、および L. Lovász は、 に対する LLL 簡約アルゴリズムを実証しました。LLL 簡約は に対して明確に定義されていますが、多項式時間の計算量は では に対してのみ保証されることに注意してください。
LLL アルゴリズムは、LLL 縮小基底を計算します。4 次元を超える格子に対して基底ベクトルが可能な限り短くなるように基底を計算する効率的なアルゴリズムは知られていません。[4]ただし、LLL 縮小基底は、最初の基底ベクトルが格子内の最短ベクトルの倍以下であり、2 番目の基底ベクトルも同様に2 番目に連続する最小値以内である、などの絶対的な境界があるという意味で、ほぼ可能な限り短くなります。
アプリケーション
LLLアルゴリズムの初期の成功した応用は、アンドリュー・オドリツコとヘルマン・テ・リーレがメルテンス予想を反証するために使用したことである。[5]
LLLアルゴリズムは、MIMO検出アルゴリズム[6]や公開鍵暗号方式の暗号解読(ナップザック暗号、特定の設定によるRSA 、 NTRUEncryptなど)など、数多くの応用が見出されています。このアルゴリズムは、多くの問題の整数解を見つけるために使用できます。[7]
特に、LLL アルゴリズムは整数関係アルゴリズムの 1 つの中核を形成します。たとえば、 r =1.618034 が整数係数を持つ未知の2 次方程式の (わずかに丸められた)根であると考えられる場合、およびで張られるの格子に LLL 縮約を適用できます。縮約された基底の最初のベクトルは、これら 3 つの整数線形結合になるため、必然的に の形式になります。ただし、このようなベクトルが「短い」のは、 a、b、cが小さく、さらに小さい場合のみです。したがって、この短いベクトルの最初の 3 つの要素は、r を根とする積分 2 次多項式の係数である可能性があります。この例では、LLL アルゴリズムは最短のベクトルを [1, -1, -1, 0.00025] と判定し、実際に根は黄金比、1.6180339887... に等しくなります。
LLL縮小基底の特性
を格子の -LLL 縮小基底とします。LLL 縮小基底の定義から、 に関する他のいくつかの有用な特性を導出できます。
- 基底の最初のベクトルは最短の非ゼロベクトル:より大きくすることはできません。特に、 の場合、 となります。[8]
- 基底の最初のベクトルも格子の行列式によって制限されます: 。特に、 の場合、 となります。
- 基底のベクトルのノルムの積は、格子の行列式よりもそれほど大きくなることはできません。 とすると、 となります 。
LLLアルゴリズムの疑似コード
以下の説明は、(Hoffstein、Pipher、Silverman 2008、定理6.68)に基づいており、正誤表からの修正が加えられています。[9]
入力Z mの
格子基底b 1、b 2、...、b n
パラメーターδ (1/4 < δ < 1、最も一般的にはδ = 3/4)
手順B * <- GramSchmidt({ b 1、...、b n }) = { b 1 *、...、b n * }; 正規化しませんμ i、j <- InnerProduct( b i、b j * )/InnerProduct( b j *、b j * ); 最新のb iおよびb j *の値を使用しますk <- 2;
k <= nの間、jに対してk −1から1までを実行します| μ k、j | > 1/2の場合、b k <- b k − ⌊ μ k、j ⌉ b j ;
必要に応じてB *および関連するμ i、jを更新します。(素朴な方法では、b i が変わるたびにB * を再計算します: B * <- GramSchmidt({ b 1 , ..., b n }) = { b 1 * , ..., b n * })
end if end for if InnerProduct( b k * , b k * ) > ( δ − μ 2 k , k −1 ) InnerProduct( b k −1 * , b k −1 * ) then k <- k + 1;
else
Swap b kと b k −1
;
必要に応じてB *と関連するμ i、jを更新します 。k <- max( k −1, 2);
end if end while return B the LLL compacted basis of {b 1 , ..., b n }
OUTPUT
the compacted basis b 1 , b 2 , ..., b n in Z m
例
Zの例3
格子基底 がの列で与えられるとすると、 縮小基底は となり 、これはサイズ縮小され、Lovász条件を満たし、したがって上で説明したようにLLL縮小されます。縮小プロセスの詳細についてはW. Bosma. [10]を参照してください。
Zからの例[私]4
同様に、以下の行列の列によって与えられる複素整数上の基底に対して、 以下の行列の列は LLL 縮小基底を与えます。
実装
LLLは、
- 機能としてのアラゲリ
lll_reduction_int - スタンドアロン実装としてのfpLLL
- FLINT関数
fmpz_lll - 機能としてのGAP
LLLReducedBasis LLLパッケージ内の関数としてのMacaulay2LLLBases- マグマは関数として
LLL(LLLGramグラム行列をとる) - 関数としてのMaple
IntegerRelations[LLL] - Mathematicaの関数として
LatticeReduce - 数論ライブラリ(NTL)関数として
LLL - PARI/GPの機能
qflll - 関数としてのピマトゲン
analysis.get_lll_reduced_lattice LLLfpLLLとNTLによって駆動されるSageMath- Isabelle/HOLの「形式証明アーカイブ」エントリ
LLL_Basis_Reduction。このコードは効率的に実行可能なHaskellにエクスポートされます。[11]
参照
注記
- ^ レンストラ、アラスカ州;レンストラ、HWジュニア;ロヴァシュ、L. (1982)。 「有理係数による多項式の因数分解」。数学アンナレン。261 (4): 515–534。CiteSeerX 10.1.1.310.318。土井:10.1007/BF01457454。hdl :1887/3810。MR 0682664。S2CID 5701340 。
- ^ Galbraith, Steven (2012). 「第17章」公開鍵暗号の数学。
- ^ Nguyen, Phong Q.; Stehlè, Damien (2009年9月). 「二次複雑度を持つLLLアルゴリズム」. SIAM J. Comput . 39 (3): 874–903. doi :10.1137/070705702 . 2019年6月3日閲覧。
- ^ Nguyen, Phong Q.; Stehlé, Damien (2009 年 10 月 1 日). 「低次元格子基底縮約の再考」. ACM Transactions on Algorithms . 5 (4): 1–48. doi :10.1145/1597036.1597050. S2CID 10583820.
- ^ オドリズコ、アンドリュー; te Reile、Herman JJ「メルテンス予想の反証」(PDF)。数学に関するジャーナル。357 : 138-160。土井:10.1515/crll.1985.357.138。S2CID 13016831 。2020 年1 月 27 日に取得。
- ^ D. Wübben 他、「Lattice reduction」、IEEE Signal Processing Magazine、Vol. 28、No. 3、pp. 70-91、2011 年 4 月。
- ^ D. Simon (2007). 「数論における LLL の厳選された応用」(PDF) . LLL+25 会議. カーン、フランス.
- ^ Regev, Oded. 「コンピュータサイエンスにおける格子: LLLアルゴリズム」(PDF)。ニューヨーク大学。 2019年2月1日閲覧。
- ^ Silverman, Joseph. 「数学的暗号入門 正誤表」(PDF)ブラウン大学数学部2015年5月5日閲覧。
- ^ ボスマ、ウィーブ。 「4.LLL」(PDF)。講義ノート。2010 年2 月 28 日に取得。
- ^ディバソン、ホセ ( 2018)。「LLL 基底削減アルゴリズムの形式化」。会議論文。コンピュータサイエンスの講義ノート。10895 : 160–177。doi : 10.1007 / 978-3-319-94821-8_10。ISBN 978-3-319-94820-1。
参考文献
- ネピアス、ユゲット (1996)。 「ユークリッド環または次数に対する LLL アルゴリズムの一般化」。ボルドーの貴族ジャーナル。8 (2): 387–396。土井:10.5802/jtnb.176。
- コーエン、アンリ(2000)。計算代数的数論のコース。GTM。第138巻。シュプリンガー。ISBN 3-540-55640-0。
- ボルウェイン、ピーター( 2002)。解析と数論における計算エクスカーション。ISBN 0-387-95444-9。
- ルーク、フランクリン・T.喬三正 (2011) 「ピボットされた LLL アルゴリズム」。線形代数とその応用。434 (11): 2296–2307。土井:10.1016/j.laa.2010.04.003。
- ホフスタイン、ジェフリー、ピファー、ジル、シルバーマン、JH (2008)。数学的暗号入門。シュプリンガー。ISBN 978-0-387-77993-5。
