Алгоритм приведения решеточного базиса Ленстры – Ленстры – Ловаса
Алгоритм Ленстра-Ленстра-Ловаса ( LLL ) сокращения базиса решетки — это с полиномиальным временем, сокращения решетки алгоритм изобретенный Арьеном Ленстра , Хендриком Ленстрой и Ласло Ловасом в 1982 году. [1] Учитывая основу с n -мерными целочисленными координатами для решетки L (дискретной подгруппы R н ) с , алгоритм LLL вычисляет LLL-сокращенный (короткий, почти ортогональный ) базис решетки во времени где это наибольшая длина по евклидовой норме , то есть . [2] [3]
Первоначальные приложения должны были предоставить алгоритмы с полиномиальным временем для факторизации многочленов с рациональными коэффициентами , для поиска одновременных рациональных приближений к действительным числам и для решения задачи целочисленного линейного программирования в фиксированных размерностях.
Снижение LLL
[ редактировать ]Точное определение LLL-reduced следующее: Учитывая основу определить его процесса Грама – Шмидта ортогональный базис и коэффициенты Грамма-Шмидта для любого .
Тогда основа является LLL-редуцируемым, если существует параметр в (0.25, 1] такой, что выполнено следующее:
- (уменьшенного размера) . По определению это свойство гарантирует сокращение длины упорядоченного базиса.
- (условие коня) Для k = 2,3,..,n .
Здесь, оценивая стоимость параметра, можно сделать вывод, насколько хорошо сокращается базис. Большие значения приводят к более сильному сокращению базиса. Первоначально А. Ленстра, Х. Ленстра и Л. Ловас продемонстрировали алгоритм LLL-редукции для . Обратите внимание, что хотя LLL-редукция четко определена для полиномиальная сложность гарантирована только для в .
Алгоритм LLL вычисляет основания, уменьшенные с помощью LLL. Не существует известного эффективного алгоритма вычисления базиса, в котором базисные векторы были бы максимально короткими для решеток размерностей больше 4. [4] Однако базис, сокращенный с помощью LLL, почти настолько короток, насколько это возможно, в том смысле, что существуют абсолютные границы. такой, что первый базисный вектор не более раз длиннее кратчайшего вектора в решетке, второй базисный вектор также находится в пределах второго последовательного минимума и так далее.
Приложения
[ редактировать ]Первым успешным применением алгоритма LLL было его использование Эндрю Одлыжко и Германом те Риле для опровержения гипотезы Мертенса . [5]
Алгоритм LLL нашел множество других применений в MIMO . алгоритмах обнаружения [6] и криптоанализ схем шифрования с открытым ключом : ранцевые криптосистемы , RSA с определенными настройками, NTRUEncrypt и т.д. Алгоритм можно использовать для поиска целочисленных решений многих задач. [7]
В частности, алгоритм LLL образует ядро одного из алгоритмов целочисленных отношений . Например, если считается, что r = 1,618034 является (слегка округленным) корнем неизвестного квадратного уравнения с целыми коэффициентами, можно применить сокращение LLL к решетке в охватываемый и . Первый вектор в сокращенном базисе будет целочисленной линейной комбинацией этих трех, поэтому обязательно имеет вид ; но такой вектор «короток» только в том случае, если a , b , c малы и еще меньше. Таким образом, первые три элемента этого короткого вектора, скорее всего, будут коэффициентами целого квадратичного многочлена которого является r , корнем . В этом примере алгоритм LLL находит кратчайший вектор [1, -1, -1, 0,00025] и действительно имеет корень, равный золотому сечению , 1,6180339887....
Свойства LLL-редуцированного базиса
[ редактировать ]Позволять быть -LLL-приведенный базис решетки . Из определения LLL-редуцированного базиса мы можем вывести несколько других полезных свойств .
- Первый вектор в базисе не может быть намного больше самого короткого ненулевого вектора : . В частности, для , это дает . [8]
- Первый вектор базиса также ограничен определителем решетки: . В частности, для , это дает .
- Произведение норм векторов базиса не может быть много больше определителя решетки: пусть , затем .
Псевдокод алгоритма LLL
[ редактировать ]Следующее описание основано на ( Hoffstein, Pipher & Silverman 2008 , теорема 6.68) с исправлениями опечаток. [9]
INPUT a lattice basis b1, b2, ..., bn in Zm a parameter δ with 1/4 < δ < 1, most commonly δ = 3/4 PROCEDURE B* <- GramSchmidt({b1, ..., bn}) = {b1*, ..., bn*}; and do not normalize μi,j <- InnerProduct(bi, bj*)/InnerProduct(bj*, bj*); using the most current values of bi and bj* k <- 2; while k <= n do for j from k−1 to 1 do if |μk,j| > 1/2 then bk <- bk − ⌊μk,j⌉bj; Update B* and the related μi,j's as needed. (The naive method is to recompute B* whenever bi changes: B* <- GramSchmidt({b1, ..., bn}) = {b1*, ..., bn*}) end if end for if InnerProduct(bk*, bk*) > (δ − μ2k,k−1) InnerProduct(bk−1*, bk−1*) then k <- k + 1; else Swap bk and bk−1; Update B* and the related μi,j's as needed. k <- max(k−1, 2); end if end while return B the LLL reduced basis of {b1, ..., bn} OUTPUT the reduced basis b1, b2, ..., bn in Zm
Примеры
[ редактировать ]Пример из Z 3
[ редактировать ]Пусть решетчатый базис , задается столбцами тогда приведенный базис который уменьшен по размеру, удовлетворяет условию Ловаса и, следовательно, уменьшен по LLL, как описано выше. См. В. Босма. [10] для получения подробной информации о процессе сокращения.
Пример из Z[ i ] 4
[ редактировать ]Аналогично, для базиса комплексных целых чисел, заданных столбцами приведенной ниже матрицы, тогда столбцы приведенной ниже матрицы дают базис, уменьшенный с помощью LLL.
Реализации
[ редактировать ]LLL реализован в
- Арагели как функция
lll_reduction_int
- fpLLL как отдельная реализация
- FLINT как функция
fmpz_lll
- GAP как функция
LLLReducedBasis
- Маколей2 как функция
LLL
в упаковкеLLLBases
- Магма как функции
LLL
иLLLGram
(берем грамм-матрицу) - Клен как функция
IntegerRelations[LLL]
- Mathematica как функция
LatticeReduce
- Библиотека теории чисел (NTL) как функция
LLL
- PARI/GP как функция
qflll
- Пиматген как функция
analysis.get_lll_reduced_lattice
- SageMath как метод
LLL
управляемый fpLLL и NTL - Изабель/ХОЛ в записи «архива формальных доказательств»
LLL_Basis_Reduction
. Этот код экспортируется в эффективно исполняемый Haskell. [11]
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ Ленстра, АК ; Ленстра, Х.В. младший ; Ловас, Л. (1982). «Факторизация полиномов с рациональными коэффициентами». Математические Аннален . 261 (4): 515–534. CiteSeerX 10.1.1.310.318 . дои : 10.1007/BF01457454 . HDL : 1887/3810 . МР 0682664 . S2CID 5701340 .
- ^ Гэлбрейт, Стивен (2012). «глава 17» . Математика криптографии с открытым ключом .
- ^ Нгуен, Фонг К.; Стеле, Дэмиен (сентябрь 2009 г.). «Алгоритм LLL с квадратичной сложностью» . СИАМ Дж. Компьютер . 39 (3): 874–903. дои : 10.1137/070705702 . Проверено 3 июня 2019 г.
- ^ Нгуен, Фонг К.; Стеле, Дэмиен (1 октября 2009 г.). «Повторное рассмотрение редукции низкоразмерного базиса решетки». Транзакции ACM на алгоритмах . 5 (4): 1–48. дои : 10.1145/1597036.1597050 . S2CID 10583820 .
- ^ Одлизко, Андрей; те Рейле, Герман Дж. Дж. «Опровержение гипотезы Мертенса» (PDF) . Журнал чистой и прикладной математики . 357 : 138–160. дои : 10.1515/crll.1985.357.138 . S2CID 13016831 . Проверено 27 января 2020 г.
- ^ Д. Вюббен и др., «Сокращение решетки», Журнал IEEE Signal Processing Magazine, Vol. 28, № 3, стр. 70–91, апрель 2011 г.
- ^ Д. Саймон (2007). «Избранные приложения LLL в теории чисел» (PDF) . Конференция LLL+25 . Кан, Франция.
- ^ Регев, Одед. «Решетки в информатике: алгоритм LLL» (PDF) . Нью-Йоркский университет . Проверено 1 февраля 2019 г.
- ^ Сильверман, Джозеф. «Введение в ошибки математической криптографии» (PDF) . Математический факультет Университета Брауна . Проверено 5 мая 2015 г.
- ^ Босма, Виб. «4. ЛЛЛ» (PDF) . Конспекты лекций . Проверено 28 февраля 2010 г.
- ^ Дивасон, Хосе (2018). «Формализация алгоритма приведения базиса LLL» . Документ конференции . Конспекты лекций по информатике. 10895 : 160–177. дои : 10.1007/978-3-319-94821-8_10 . ISBN 978-3-319-94820-1 .
Ссылки
[ редактировать ]- Напиас, Угетт (1996). «Обобщение алгоритма LLL на евклидовы кольца или порядки» . Journal de Théorie des Nombres de Bordeaux . 8 (2): 387–396. дои : 10.5802/jtnb.176 .
- Коэн, Анри (2000). Курс вычислительной алгебраической теории чисел . ГТМ. Том. 138. Спрингер. ISBN 3-540-55640-0 .
- Борвейн, Питер (2002). Вычислительные экскурсы по анализу и теории чисел . ISBN 0-387-95444-9 .
- Люк, Франклин Т.; Цяо, Саньчжэн (2011). «Поворотный алгоритм LLL» . Линейная алгебра и ее приложения . 434 (11): 2296–2307. дои : 10.1016/j.laa.2010.04.003 .
- Хоффштейн, Джеффри; Пайфер, Джилл; Сильверман, Дж. Х. (2008). Введение в математическую криптографию . Спрингер. ISBN 978-0-387-77993-5 .