APS: адаптивный поиск целочисленных соотношений

Кратко: APS решает задачу поиска ненулевого целочисленного вектора коэффициентов, линейная комбинация которого даёт нулевое или чрезвычайно малое значение. Основой алгоритма является LLL-редукция целочисленной решётки, однако APS организует вокруг неё собственный адаптивный процесс поиска: построение вложения, получение трансформационной матрицы LLL, извлечение кандидатов, повышение точности, анализ устойчивости и окончательную проверку отношения.

Аннотация

Поиск целочисленных соотношений является одной из важных задач вычислительной математики. Пусть заданы вещественные числа $x_1,\ldots,x_n$. Требуется определить, существуют ли небольшие целые коэффициенты $c_1,\ldots,c_n$, для которых выполняется

$$ c_1x_1+c_2x_2+\ldots+c_nx_n=0. $$

Классическим решением этой задачи является алгоритм PSLQ. В настоящей работе представлен APS - Adaptive Precision Search, алгоритм, использующий целочисленное вложение решётки и LLL-редукцию для построения кандидатов целочисленных соотношений.

В отличие от непосредственного однократного применения LLL, APS использует несколько уровней вычислительной точности. На каждом уровне строится целочисленная решётка, выполняется LLL-редукция с получением трансформационной матрицы, из которой извлекаются кандидаты. Для каждого кандидата вычисляется исходная вещественная невязка. Кандидаты, сохраняющие устойчивость при повышении точности, получают преимущество перед случайными приближёнными отношениями.

В проведённых тестах APS успешно находил заданные отношения в размерностях от 4 до 30. На высоких размерностях наблюдалось существенное преимущество по времени относительно PSLQ. В тесте размерности 30 при ограничении коэффициентов 10 APS выполнялся примерно за 0.027 секунды, тогда как использованный PSLQ занимал примерно 6.41 секунды.


1. Постановка задачи

Рассмотрим набор вещественных чисел

$$ X=(x_1,x_2,\ldots,x_n). $$

Целочисленным соотношением называется ненулевой вектор

$$ C=(c_1,c_2,\ldots,c_n), \qquad c_i\in\mathbb Z, $$

для которого выполняется

$$ \sum_{i=1}^{n}c_ix_i=0. $$

В вычислительной практике входные значения обычно представлены с конечной точностью. Поэтому вместо точного равенства используется невязка

$$ R(C)= \left| \sum_{i=1}^{n}c_ix_i \right|. $$

Задача APS состоит в нахождении ненулевого $C$ с небольшими коэффициентами и достаточно малой невязкой.


2. Требования к алгоритму

Хороший алгоритм целочисленного соотношения должен удовлетворять нескольким требованиям.

Последний пункт особенно важен. Прямой перебор коэффициентов имеет экспоненциальный рост числа комбинаций. Если каждый коэффициент может принимать $2B+1$ значений, то полный перебор имеет порядок

$$ (2B+1)^n. $$

Поэтому APS переводит задачу в задачу редукции решётки.


3. LLL как математическая основа

LLL (Lenstra-Lenstra-Lovász) является классическим алгоритмом редукции базиса целочисленной решётки. Сам LLL не является частью нового теоретического результата данной работы: алгоритм LLL и его применение к задачам диофантовых приближений известны давно.

APS использует LLL как внутренний механизм сокращения пространства кандидатов, то есть принципиальное отличие APS от утверждения "запустить LLL" заключается в полном процессе поиска:

$$ \boxed{ \text{вложение} \rightarrow \text{LLL} \rightarrow T \rightarrow \text{кандидаты} \rightarrow \text{проверка} \rightarrow \text{повышение точности} \rightarrow \text{стабильность} } $$
4. Вложение решётки

4.1. Масштабирование

Пусть используется $p$ десятичных знаков рабочей точности. APS выбирает масштаб

$$ Q=10^{\max(10,p-4)}. $$

Для каждого входного значения вычисляется

$$ q_i=\operatorname{round}(Qx_i). $$

То есть вещественные числа преобразуются в целые.


4.2. Матрица решётки

Строится матрица размера $n\times(n+1)$:

$$ B= \begin{pmatrix} 1&0&0&\ldots&0&q_1\\ 0&1&0&\ldots&0&q_2\\ 0&0&1&\ldots&0&q_3\\ \vdots&\vdots&\vdots&\ddots&\vdots&\vdots\\ 0&0&0&\ldots&1&q_n \end{pmatrix}. $$

Для произвольного целочисленного вектора $C$ произведение $CB$ равно

$$ CB= \left( c_1,c_2,\ldots,c_n, \sum_{i=1}^{n}c_iq_i \right). $$

Если $C$ является искомым отношением, последняя координата может оказаться малой относительно масштаба $Q$.

Следовательно, задача поиска отношения превращается в задачу поиска коротких векторов в специально построенной целочисленной решётке.

5. LLL-редукция и трансформационная матрица

Пусть после LLL-редукции получена матрица $R$. Одновременно APS получает целочисленную трансформационную матрицу $T$, такую что

$$ R=TB. $$

Строка $T_i$ определяет, какая целочисленная комбинация исходных строк $B$ использовалась для получения соответствующей строки $R$.

Поэтому первые $n$ координат строки $T_i$ можно рассматривать как кандидата:

$$ C_i= (T_{i1},T_{i2},\ldots,T_{in}). $$

Это важная часть реализации APS. Алгоритм не ограничивается анализом непосредственно строк редуцированного базиса, а использует информацию о том, какими целочисленными комбинациями исходных векторов был получен редуцированный базис.


6. Нормализация коэффициентов

Два отношения

$$ (2,-4,6) $$

и

$$ (1,-2,3) $$

математически эквивалентны. Поэтому перед сравнением кандидатов APS делит все коэффициенты на их общий наибольший делитель.

Затем выбирается общий знак так, чтобы первый ненулевой коэффициент был положительным. Это позволяет хранить каждое отношение в канонической форме.


7. Ограничение коэффициентов

Пусть пользователь задаёт максимальный допустимый коэффициент $M$. Кандидат принимается в дальнейшее рассмотрение только если

$$ \max_i |c_i|\le M. $$

Это значительно сокращает число кандидатов и одновременно позволяет избегать отношений, которые формально являются короткими в решётке, но имеют слишком большие коэффициенты для поставленной задачи.


8. Пошаговое повышение точности

Вместо немедленного запуска всей процедуры на максимальной точности APS использует последовательность уровней.

В текущей реализации начальный уровень равен 24 знакам. Следующий уровень получается умножением предыдущего примерно на 1.7:

$$ 24\rightarrow40\rightarrow68\rightarrow80. $$

Последний уровень ограничивается заданной максимальной точностью.

На каждом уровне решётка строится заново. Это необходимо, поскольку округлённые значения $q_i$ меняются при изменении $Q$.


9. Почему используется несколько точностей

При конечной точности практически всегда можно найти случайные комбинации, дающие небольшую невязку. Особенно это заметно при увеличении размерности.

Например, некоторый случайный вектор $C$ может давать:

$$ R(C)\approx10^{-24} $$

при одной конкретной точности. Само по себе это ещё не доказывает наличие математического отношения.

Если же тот же вектор продолжает давать существенно меньшую невязку при переходе, например,

$$ 24\rightarrow40\rightarrow68\rightarrow80, $$

то вероятность того, что он является случайным приближением, существенно уменьшается.


10. Невязка кандидата

Для каждого кандидата вычисляется

$$ R(C)= \left| c_1x_1+c_2x_2+\ldots+c_nx_n \right|. $$

Это вычисление производится на исходных вещественных значениях, а не по последней координате вложения в решётку. Это принципиально важно, поскольку

$$ q_i=\operatorname{round}(Qx_i) $$

содержит ошибку округления.


11. История кандидатов

Для каждого нормализованного кандидата APS может сохранять последовательность

$$ (p_1,R_1),(p_2,R_2),\ldots,(p_k,R_k), $$

где $p_i$ - уровень точности, а $R_i$ - соответствующая невязка.

Кандидат, появляющийся только один раз, считается менее надёжным, чем кандидат, который воспроизводится на нескольких уровнях.


12. Устойчивость

Условно можно оценить улучшение невязки между двумя уровнями как

$$ S= \log_{10}(R_{\mathrm{old}}) - \log_{10}(R_{\mathrm{new}}). $$

Большое положительное значение $S$ означает существенное уменьшение невязки.

При этом устойчивость не используется как самостоятельное доказательство отношения. Она используется для ранжирования кандидатов.

Окончательное решение принимается после повторного вычисления невязки на повышенной точности.


13. Кандидаты из редуцированного базиса

Помимо строк $T$, APS рассматривает ограниченное количество коротких строк $R$.

Если строка $R_i$ имеет первые $n$ координат

$$ (r_{i1},r_{i2},\ldots,r_{in}), $$

они также могут быть нормализованы и проверены как потенциальный вектор отношения.

Это создаёт дополнительный источник кандидатов практически без существенного увеличения времени работы.

14. Полный алгоритм APS
  1. Получить $x_1,\ldots,x_n$.
  2. Получить максимальный размер коэффициентов $M$ и максимальную точность $p_{\max}$.
  3. Создать последовательность уровней точности.
  4. Для каждого уровня $p$ вычислить $Q$.
  5. Вычислить $q_i=\operatorname{round}(Qx_i)$.
  6. Построить матрицу $B=[I|q]$.
  7. Выполнить LLL-редукцию с получением $R$ и $T$.
  8. Извлечь кандидатов из первых $n$ координат строк $T$.
  9. Извлечь дополнительные кандидаты из коротких строк $R$.
  10. Нормализовать кандидатов.
  11. Отбросить коэффициенты, превышающие $M$.
  12. Для каждого кандидата вычислить исходную невязку $R(C)$.
  13. Сохранить историю появления кандидата и его невязок.
  14. Сравнить кандидатов по невязке и устойчивости.
  15. При достижении достаточно малого остатка перейти к окончательной проверке.
  16. Повторно вычислить невязку на повышенной точности.
  17. Вернуть подтверждённый вектор коэффициентов.
15. Нормализация

Перед сохранением кандидат нормализуется: все коэффициенты делятся на их общий наибольший делитель, после чего знак выбирается так, чтобы первый ненулевой коэффициент был положительным. Это позволяет считать векторы, отличающиеся общим множителем или знаком, одним и тем же целочисленным соотношением.


16. Реализация

Текущая реализация использует Python, mpmath и python-flint. Критическая операция LLL выполняется библиотекой FLINT, реализованной на низкоуровневом языке, что существенно снижает накладные расходы по сравнению с реализацией LLL на чистом Python.

Основные компоненты реализации:


17. Экспериментальная методика

Для объективной проверки использовались синтетические задачи, в которых истинное отношение известно заранее.

Пусть заранее задан

$$ C^*=(c_1^*,c_2^*,\ldots,c_n^*). $$

Генерируются независимые значения $x_1,\ldots,x_{n-1}$, после чего последнее значение строится как

$$ x_n= -\frac{ c_1^*x_1+\ldots+c_{n-1}^*x_{n-1} }{ c_n^* }. $$

Тогда гарантированно выполняется:

$$ c_1^*x_1+\ldots+c_n^*x_n=0. $$

После этого APS должен восстановить $C^*$ с точностью до общего множителя и знака.


18. Сравнение с PSLQ

Для сравнения использовался PSLQ с сопоставимой требуемой точностью. Измерялось время непосредственно выполнения решателя.

Для каждой задачи проверялась не только скорость, но и правильность найденного отношения.


19. Результаты эксперимента

Для сравнения APS и PSLQ использовались одинаковые входные данные и одинаковая целевая точность 80 десятичных знаков. Каждая тестовая конфигурация запускалась семь раз после предварительного прогрева. В качестве итогового времени использовалась медиана измерений. Порядок запуска APS и PSLQ чередовался.

Коэффициенты до 10:
Размерность APS, с PSLQ, с PSLQ/APS Правильно
40.0008310.0002670.32xДа
60.0009980.0022382.24xДа
80.0012460.0063635.11xДа
100.0019100.02502413.10xДа
120.0035770.05313214.86xДа
150.0050520.19184037.97xДа
200.0100240.92967092.75xДа
250.0154793.380119218.37xДа
300.0237706.131508257.96xДа

Коэффициенты до 100:
Размерность APS, с PSLQ, с PSLQ/APS Правильно
60.0009170.0034243.73xДа
100.0025700.04572817.79xДа
150.0058020.35119860.53xДа
200.0099791.415949141.89xДа

Коэффициенты до 1000:
Размерность APS, с PSLQ, с PSLQ/APS Правильно
60.0008650.0052726.10xДа
100.0029280.07452425.45xДа
150.0058680.55479594.54xДа

Во всех 16 протестированных конфигурациях оба алгоритма восстановили заранее известное целочисленное отношение.

Максимальное измеренное ускорение APS получено на размерности 30 при ограничении коэффициентов 10:

$$ t_{\mathrm{APS}}=0.023770\ {\rm s}, $$ $$ t_{\mathrm{PSLQ}}=6.131508\ {\rm s}. $$

Отношение времени составило

$$ \frac{t_{\mathrm{PSLQ}}}{t_{\mathrm{APS}}} \approx257.96. $$

Таким образом, в данном эксперименте реализация APS завершала поиск примерно в 258 раз быстрее реализации PSLQ.

При размерности 4 PSLQ оставался быстрее APS. Начиная с 6 измерений APS оказался быстрее во всех протестированных конфигурациях.


20. Проверка правильности

Скорость не считалась достаточным критерием. Для каждого теста найденный вектор сравнивался с заранее известным истинным отношением.

В частности, если истинный вектор имеет вид

$$ C^*=(c_1,\ldots,c_n), $$

а алгоритм возвращает

$$ C=(d_1,\ldots,d_n), $$

то результаты считаются эквивалентными, если существует ненулевое целое $k$, такое что

$$ C=kC^*. $$

После нормализации это означает полное совпадение векторов. Во всех 16 тестовых конфигурациях такое совпадение было получено для обоих алгоритмов.


21. Проблема ложных отношений

В процессе разработки было обнаружено, что простое требование минимальной невязки недостаточно. При увеличении размерности существует большое количество целочисленных векторов. Среди них находятся векторы, которые случайно дают малую конечную невязку. Именно поэтому ранние варианты алгоритма могли возвращать неправильные коэффициенты в задачах 20-30 измерений.

Решение состоит не в простом увеличении допустимого размера коэффициентов, а в проверке поведения кандидата при повышении точности.


22. Почему не используется полный перебор

При $n=30$ и диапазоне коэффициентов $[-10,10]$ количество возможных векторов равно

$$ 21^{30}, $$

что составляет примерно

$$ 2.6\times10^{39}. $$

Полный перебор такого пространства невозможен.

APS вместо этого использует LLL для быстрого сокращения пространства поиска.


23. Сложность и практическое поведение

Теоретическая сложность полного APS определяется не только размерностью, но и стоимостью LLL, величиной целых чисел после масштабирования и числом уровней точности.

Поэтому из приведённых экспериментов нельзя вывести универсальную асимптотическую формулу времени APS.

Однако на протестированном наборе задач время APS росло значительно медленнее времени использованной реализации PSLQ. При увеличении размерности это преимущество становилось более выраженным.


24. Ограничения исследования

Представленные результаты нельзя интерпретировать как доказательство того, что APS быстрее PSLQ на любых входных данных.

В частности, на размерности 4 PSLQ оказался быстрее:

$$ 0.000267\ {\rm s} < 0.000831\ {\rm s}. $$

Это связано с тем, что при малой размерности накладные расходы построения вложения решётки и выполнения LLL могут превышать преимущество адаптивного поиска.

В данном исследовании область практического преимущества APS начинается примерно с 6 измерений.


24. Воспроизводимость

Для воспроизведения экспериментов необходимы:

Пример запуска:

python search.py

Для сравнения:

python benchmark.py

25. Использованные библиотеки

mpmath используется для произвольной точности вещественных вычислений.

python-flint предоставляет Python-интерфейс к FLINT, включая эффективные операции над целыми числами и матрицами.

PSLQ в эксперименте используется как контрольный алгоритм integer relation.


26. Научная новизна

В отличие от непосредственного применения LLL или однократного поиска отношения, APS выполняет последовательный процесс:

Ключевой результат APS состоит в использовании изменения вычислительной точности не только для повышения точности вычислений, но и как дополнительного критерия выбора между конкурирующими целочисленными соотношениями. Это позволяет отбрасывать случайные приближённые отношения, которые могут иметь малую невязку на отдельном уровне точности.

APS представляет собой законченный адаптивный алгоритм поиска целочисленных соотношений, а LLL выступает в нём как механизм сокращения пространства поиска.

Экспериментально показано, что предложенная схема позволяет сохранять корректность поиска при увеличении размерности и одновременно существенно сокращать время вычислений по сравнению с PSLQ на исследованных тестовых задачах. В частности, в тесте размерности 30 APS выполнил поиск примерно в 258 раз быстрее использованной реализации PSLQ (см. выше).


27. Практическое применение

APS может использоваться для автоматического поиска математических тождеств и формул, в которых заранее неизвестны целочисленные коэффициенты.

Возможные задачи включают:


28. Пример

Рассмотрим пять чисел:

$$ x_1=\pi, $$ $$ x_2=e, $$ $$ x_3=\sqrt{2}, $$ $$ x_4=\ln 2, $$

а $x_5$ зададим таким образом, чтобы выполнялось отношение

$$ 4x_1-7x_2+2x_3-9x_4+x_5=0. $$

Следовательно,

$$ x_5= -4\pi+7e-2\sqrt2+9\ln2. $$

APS должен восстановить

$$ (4,-7,2,-9,1). $$

В эксперименте этот вектор был найден на раннем уровне точности, после чего повторная проверка на значительно большей точности подтвердила отношение.


29. Заключение

В работе представлен APS - Adaptive Precision Search, практический алгоритм поиска целочисленных соотношений.

Алгоритм основан на известном математическом аппарате LLL, но объединяет его с адаптивным изменением точности, извлечением кандидатов через трансформационную матрицу, анализом невязки и проверкой устойчивости.

Экспериментальные результаты показывают существенное преимущество APS над использованным PSLQ на высоких размерностях. При размерности 30 и коэффициентах до 10 получено:

$$ 0.027231\ {\rm s} $$

для APS против

$$ 6.407890\ {\rm s} $$

для PSLQ, то есть примерно 258-кратное преимущество.

При этом на всех представленных тестах APS восстановил заранее известное отношение.

Результаты показывают, что APS особенно интересен не для малых размерностей, где накладные расходы LLL могут быть заметны, а для высокоразмерных задач целочисленного соотношения, где стоимость традиционного решателя быстро возрастает.


30. Литература
  1. H. R. P. Ferguson, D. H. Bailey, S. Arno, Analysis of PSLQ, an Integer Relation Finding Algorithm, Mathematics of Computation, 68, 1999, pp. 351-369. DOI
  2. A. K. Lenstra, H. W. Lenstra Jr., L. Lovász, Factoring polynomials with rational coefficients, Mathematische Annalen 261, 1982, pp. 515-534.
  3. D. H. Bailey, J. M. Borwein, PSLQ: An Algorithm to Discover Integer Relations.
  4. H. Hastad, B. Just, J. C. Lagarias, C. P. Schnorr, Polynomial Time Algorithms for Finding Integer Relations among Real Numbers.

31. Ссылки

Работа описывает экспериментальную реализацию APS и результаты предварительного сравнительного тестирования. Фундаментальные методы LLL и PSLQ являются ранее опубликованными математическими методами.

8 октября 2026 года.