Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 19 марта 2020 года; проверки требуют 4 правки.
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 19 марта 2020 года; проверки требуют 4 правки.
Алгоритм Ленстры — Ленстры — Ловаса
Редукция базиса решетки в двумерном пространстве: решётка представлена синими точками, исходный базис — черные векторы, редуцированный базис — красные векторы.
Основной предпосылкой для создания ЛЛЛ-алгоритма послужило то, что процесс Грама ― Шмидта работает только с векторами, компоненты которых являются вещественными числами. Для векторного пространства процесс Грама ― Шмидта позволяет преобразовать произвольный базис в ортонормированный («идеал», к которому стремится ЛЛЛ-алгоритм). Но процесс Грама ― Шмидта не гарантирует того, что на выходе каждый из векторов будет целочисленнойлинейной комбинацией исходного базиса. Таким образом, полученный в результате набор векторов может и не являться базисом исходной решётки. Это привело к необходимости создания специального алгоритма для работы с решётками[3].
Редукция базиса заключается в приведении базиса решётки к особому виду, удовлетворяющему некоторым свойствам. Редуцированный базис должен быть, по возможности, наиболее коротким среди всех базисов решётки и близким к ортогональному (что выражается в том, что итоговые коэффициенты Грама — Шмидта должны быть не больше )[3].
Пусть в результате преобразования базиса с помощью процесса Грама ― Шмидта получен базис , с коэффициентами Грама — Шмидта, определяемыми следующим образом:
, для всех таких, что .
Тогда (упорядоченный) базис называется -ЛЛЛ-редуцированным базисом (где параметр находится в промежутке ), если он удовлетворяет следующим свойствам[3]:
Для всех таких, что . (условие уменьшения размера)
Изначально Ленстра, Ленстра и Ловас в своей статье продемонстрировали работу алгоритма для параметра . Несмотря на то что алгоритм остаётся корректным и для , его работа за полиномиальное время гарантируется только для в промежутке [1].
Пусть — сокращённый алгоритмом ЛЛЛ с параметром базис на решётке. Из определения такого базиса можно получить несколько свойств . Пусть — норма кратчайшего вектора решётки, тогда:
Произведение норм векторов не может быть сильно больше определителя решётки:. В частности, для [3].
Базис, преобразованный методом ЛЛЛ, почти самый короткий из всех возможных, в том смысле, что существуют абсолютные границы такие, что первый базисный вектор не более чем в раз длиннее самого короткого вектора решётки, аналогично, второй вектор базиса не более чем в раз превосходит второй кратчайший вектор решётки и так далее (что прямо следует из свойства 1)[6].
Сначала создается копия исходного базиса, которая ортогонализуется для того, чтобы по ходу алгоритма текущий базис сравнивался с полученной копией на предмет ортогональности ().
Если какой-либо коэффициент Грама — Шмидта (с ) по модулю больше , то проекция одного из векторов текущего базиса на вектор ортогонализованного базиса с другим номером составляет больше половины . Это говорит о том, что необходимо вычесть из вектора вектор , домноженный на округленный (округление нужно, так как вектор решётки остается вектором этой же решётки только при умножении на целое число, что следует из её определения). Тогда станет меньше , так как теперь проекция на будет меньше половины . Таким образом производится проверка соответствию 1-му условию из определения ЛЛЛ-редуцированного базиса.
Пересчитывается для .
Для проверяется 2-е условие, введенное авторами алгоритма как определение ЛЛЛ-редуцированного базиса[1]. Если условие не выполнено, то индексы проверяемых векторов меняются местами. И условие проверяется снова для того же вектора (уже с новым индексом).
Пересчитываются для и для
Если остался какой-либо , по модулю превышающий (уже с другим ), то надо вернуться к пункту 2.
Когда все условия проверены и сделаны изменения, алгоритм завершает работу.
В алгоритме — округление по правилам математики. Процесс алгоритма, описанный на псевдокоде[7]:
ortho
(выполнить процесс Грама — Шмидта без нормировки);
определить,всегда подразумевая наиболее актуальные значения присвоитьпока:дляjотдо0:если, то:
;
Обновить значения для ;
конецусловия;
конеццикла;
если, то:иначе:
поменять и местами;
Обновить значения для ; для ;
;
конецусловия;
конеццикла.
Если вектора базиса состоят из целочисленных компонент, алгоритм приближает кратчайший почти ортогональный базис за полиномиальное время, где — максимальная длина по евклидовой норме, то есть . Основной цикл алгоритма ЛЛЛ требует итераций и работает с числами длины . Так как на каждой итерации происходит обработка векторов длины , в итоге алгоритм требует арифметических операций. Применение наивных алгоритмов сложения и умножения целых чисел даёт в итоге битовых операций[3].
В случае, когда у решётки задан базис с рациональными компонентами, эти рациональные числа сначала необходимо преобразовать в целые путем умножения базисных векторов на знаменатели их компонент (множество знаменателей ограничено некоторым целым числом ). Но тогда операции будут производиться уже над целыми числами, не превышающими . В итоге будет максимум битовых операций. Для случая, когда решётка задана в , сложность алгоритма остается такой же, но увеличивается количество битовых операций. Так как в компьютерном представлении любое вещественное число заменяется рациональным в силу ограниченности битового представления, полученная оценка верна и для вещественных решёток[3].
В то же время для размерностей меньше чем 4 задача редукции базиса более эффективно решается алгоритмом Лагранжа[8].
Алгоритм часто применяется в рамках метода MIMO (пространственное кодирования сигнала) для декодирования сигналов, полученных несколькими антеннами[10], и в криптосистемах с открытым ключом: криптосистемах, основанных на задаче о ранце, RSA с конкретными настройками, NTRUEncrypt и так далее. Алгоритм может быть использован для нахождения целых решений в разных задачах теории чисел, в частности для поиска корней многочлена в целых числах[11].
В процессе атак на криптосистемы с открытым ключом (NTRU) алгоритм используется для поиска кратчайшего вектора решётки, так как алгоритм в результате находит целый набор кратчайших векторов[12].
В криптоанализе RSA c малой CRT-экспонентой задача, так же как в случае с NTRU, сводится к поиску кратчайшего вектора базиса решётки, который находится за полиномиальное (от размерности базиса) время[13].
Использование арифметики на числах с плавающей запятой вместо точного представления рациональных чисел может значительно ускорить работу ЛЛЛ-алгоритма ценой совсем небольших численных ошибок[15].
↑Bosma, Wieb.4. LLL // Computer Algebra. — 2007. Архивировано 8 мая 2019 года.
↑Shahriar Shahabuddin, Janne Janhunen, Zaheer Khan, Markku Juntti, Amanullah Ghazi. A customized lattice reduction multiprocessor for MIMO detection // 2015 IEEE International Symposium on Circuits and Systems (ISCAS). — 2015. — arXiv:1501.04860. — doi:10.1109/ISCAS.2015.7169312.
Cohen, Henri. A course in computational algebraic number theory (англ.). — Springer, 2000. — Vol. 138. — (GTM). — ISBN 3-540-55640-0.
Borwein, Peter. Computational Excursions in Analysis and Number Theory (англ.). — 2002. — ISBN 0-387-95444-9.
Hoffstein, Jeffrey; Pipher, Jill; Silverman, J.H. An Introduction to Mathematical Cryptography (англ.). — Springer, 2008. — ISBN 978-0-387-77993-5.
Luk, Franklin T.; Qiao, Sanzheng. A pivoted LLL algorithm // Lin. Alg. Appl.. — 2011. — Т. 434, № 11. — С. 2296—2307. — doi:10.1016/j.laa.2010.04.003.
The LLL Algorithm : Survey and Applications / Ed. by Phong Q. Nguyen and Brigitte Vallée. — Springer, 2010. — ISBN 978-3-642-02295-1. — doi:10.1007/978-3-642-02295-1.
Murray R. Bremner. Lattice Basis Reduction : An Introduction to the LLL Algorithm and Its Applications. — CRC Press, 2011. — ISBN 9781439807026.