lattice🚧

lattice

給定一組向量,作為座標軸,嘗試畫出座標格線。整數倍位置,稱作「晶格」。

N個向量必須產生N維空間!向量不得共點、共線、共面、……,以免空間萎縮。

大家習慣令向量數值是整數,增進討論意義。

http://cseweb.ucsd.edu/classes/wi12/cse206A-a/
http://cseweb.ucsd.edu/classes/wi10/cse206a/
http://people.csail.mit.edu/vinodv/CS294/

lattice basis reduction🚧

lattice basis reduction

https://en.wikipedia.org/wiki/Lattice_reduction

正交化。找到一組晶格向量,盡量互相垂直。

演算法(Lagrange's algorithm)

兩個向量的演算法。教科書以此作為引言。

長向量投影到短向量。短向量乘上(四捨五入的)伸縮倍率,得到(偏移的)投影向量。長向量減去(偏移的)投影向量,變得(更加的)垂直。

不斷相互投影,直到投影之後長度大小關係不變。

可以視作輾轉相除法。

while (true)
{
    if (‖b₁‖ > ‖b₂‖) swap(b₁, b₂);  // b₂ is longer
    s = dot(b₁, b₂) / ‖b₁‖²;
    s = round(s);
    b₂ = b₂ - (s * b₁);             // b₂ project to b₁
    if (‖b₁‖ ≤ ‖b₂‖) break;         // b₂ is still longer
}

演算法(Hermite's algorithm)

https://cs.uwaterloo.ca/~cbright/reports/latticealgs.pdf

演算法(Lenstra–Lenstra–Lovasz algorithm)

https://math.pro/db/thread-1876-1-1.html

https://zhuanlan.zhihu.com/p/336840687

closest vector problem🚧

shortest vector problem

https://en.wikipedia.org/wiki/Lattice_problem

找到長度最短的晶格向量。NP-hard。

利用lattice basis reduction快速找到近似解。

closest vector problem

針對一個非晶格向量,找到距離最近的晶格向量。NP-hard。

利用shortest vector problem快速找到近似解。

integer relation🚧

integer relation

《Computational excursions in analysis and number theory》

演算法(Lenstra–Lenstra–Lovasz algorithm)

演算法(HJLS algorithm)

演算法(PSLQ algorithm)

lattice counting🚧

計算半平面交內部格點數目(Barvinok's algorithm)

整數一次不等式組的解數量。

https://en.wikipedia.org/wiki/Minkowski's_theorem