Задача 3SUM решена быстрее, чем за O(N²) — а именно за O(N¹·⁹⁹⁹²). Без нейронок не обошлось. 3sum.. 3sum. ai.. 3sum. ai. apsp.. 3sum. ai. apsp. Claude.. 3sum. ai. apsp. Claude. llm.. 3sum. ai. apsp. Claude. llm. Алгоритмы.. 3sum. ai. apsp. Claude. llm. Алгоритмы. ИИ.. 3sum. ai. apsp. Claude. llm. Алгоритмы. ИИ. искусственный интеллект.. 3sum. ai. apsp. Claude. llm. Алгоритмы. ИИ. искусственный интеллект. математика.
вместо тысячи слов

вместо тысячи слов

5 октября американские исследователи Вирджиния Василевска-Уильямс, известная своими быстрыми (и безумно сложными) алгоритмами перемножения матриц за O(N^{2.373}) вместо O(N^3) и её бывший аспирант Джош Алман опубликовали препринт на arxiv.org, демонстрирующий алгоритм решения задачи 3SUM за O(N^{1.9992}).

Это знаковое событие в узких кругах. Во-первых, раньше предполагалось, что решить эту задачу быстрее, чем за O(N^2), невозможно. Во-вторых, вместе с ней наконец решилась быстрее, чем за O(N^3), задача нахождения кратчайших путей между любыми парами вершин в графе (All-Pairs Shortest Paths, APSP) — по-настоящему практическая задача вычислительной геометрии. В-третьих, мало того, что корректность работы проверяла закрытая модель Anthropic — авторы также утверждают, что Claude нашёл изначальный алгоритм, после чего учёные осознали и улучшили его.

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

Задача 3SUM

Есть ли в заданном множестве чисел три, сумма которых равна нулю?

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

from itertools import combinations

def solve_3sum(numbers: set[int]) -> bool:
    for x, y in combinations(numbers, 2):
        z = -x - y
        if z in present:
            return True
    return False

Нетрудно проверить, что решение это стоит O(N^2). Сначала (при необходимости) строим хэш-таблицу за O(N), потом пробегаем по всем N(N-1)/2 парам чисел и делаем в неё запрос за O(1). Вопрос, стоявший с 2014 года, был в том, можно ли решить её быстрее — а именно полиномиально быстрее, то есть за O(N^{2-varepsilon}) для хоть какого-то положительного varepsilon. Теперь мы знаем, что varepsilon ge 0.0008 !

Exact Triangle problem

Как это часто бывает в вычислительной математике, новый быстрый алгоритм для задачи на самом деле вовсе не для неё — а для какой-то другой задачи, про которую мы знаем, что она сводится к интересующей.

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

Есть ли в заданном графе графе с рёбрами с целочисленными весами и N вершинами треугольник, сумма весов ребёр в котором равна нулю?

Ещё одна задача с простой формулировкой и наивным решением, в этот раз за O(N^3), которое не страшно попросить налайвкодить на собеседовании. Сама Вирджиния доказала это сведение (вместе с мужем!) в 2009 году — в тексте всего 19 страниц, все желающие приглашаются к чтению. Причём не просто доказала сведение, а доказала, что если найден алгоритм за O(N^{3-varepsilon}), то для 3SUM будет автоматически найден алгоритм за O(N^{2-delta}).

All-Edges Sparse Triangle problem

Следующее сведение, снова доказанное Василевска-Уильямс, уже в 2020-м году, сводит Exact Triangle к All-Edges Sparse Triangle.

В заданном графе с M рёбрами определить для каждого ребра, входит ли оно в хоть какой-нибудь треугольник.

Наивное решение по-прежнему просто: перебираем все рёбра, перебираем все пары соседних рёбер, проверяем, получается ли треугольник — получаем O(M^3). Но к чему же сводится эта задача, чтобы получить не наивное?

Перемножение матриц

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

для сильных духом

для сильных духом

И, конечно, не удивительно, что и здесь всё в итоге пришло к ним — хоть и довольно интересным способом.

Само по себе сведение графовых алгоритмов к матрицам не ново. Для любого графа, ориентированного или нет, можно построить матрицу смежности — в ячейке (i, j) пишем 0, если вершины v_i и v_j не связаны ребром, и 1, если связаны. Заходя вперёд скажу, что можно назвать это число количеством способов попасть из вершины v_i в вершину v_j за 1 шаг.

Назовём эту матрицу A (от слова adjacency — смежность). Что будет, если мы, скажем, возведём её в квадрат? Какой будет смысл у числа в ячейке (i, j) матрицы A^2? Давайте посмотрим на определение произведения матриц:

left(A^2right)_{ij}=sum_k A_{ik} cdot A_{kj}

По сути мы берём всевозможные промежуточные вершины v_k и перемножаем количество способов попасть из v_i в v_k (за один шаг) на количество способов попасть из v_k в v_j (также за один шаг). А значит, мы перебираем всевозможные способы попасть из v_i в v_j за два шага.

Это легко можно использовать для решения задачи All-Edges Sparse Triangle. Строим матрицу смежности, считаем её квадрат. Дальше перебираем все рёбра графа. Если(v_i, v_j) — ребро в графе, мы точно знаем, что из v_i в v_j можно попасть напрямую за один шаг. Если при этом величина left(A^2right)_{ji} не равна нулю, значит, можно попасть из v_j в v_i за два шага. А это как раз означает, что ребро (v_i, v_j) лежит в каком-то треугольнике (v_i, v_j, v_k). Итого мы решили задачу, возведя матрицу Ntimes N в квадрат.

Чуть более сложным образом, чем я описал (окей, значительно более сложным образом) задача 3SUM сводится Вирджинией к перемножению узких матриц — X размера N times D и Y размера D times N, с D le N^{1/18}. Да не просто перемножению. Учёные описывают алгоритм, позволяющий найти значения в любом подмножестве позиций матрицы Xcdot Y — но не более N^2/sqrt{D} позиций — за O(N^2/D^{0.063}) арифметических операций.

Препринт с этим результатом публично доступен и длиной всего в 76 страниц — можно прочитать и написать потом хорошую статью на Хабр (ну или сразу кандидатскую диссертацию).

Роль Claude

Авторы препринта рассказывают, что в ходе поиска решений открытых криптографических задач сотрудником Anthropic модель, сгенерировав 16 миллионов токенов, нашла описанный в препринте алгоритм. В сентябре 2026-го Anthropic поделилась им с авторами, докинув NDA, денег и бесплатного доступа к публичным моделям.

После написания статьи Anthropic также применили свою внутреннюю модель для проверки результатов посредством системы доказательства теорем Lean 4 — формализация также доступна онлайн.

оказывается, математическая нотация в учебниках не так уж плоха

оказывается, математическая нотация в учебниках не так уж плоха

Также авторы указывают, что использовали помощь Claude в написании текста, создании иллюстраций (их в статье аж 10 штук) и проверке математических фактов.

Заключение

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

Закрытая модель Anthropic нашла новый алгоритм такого класса за сессию, продолжительность и цену которой сложно оценить — мы знаем только про 16 миллионов токенов на выходе, что стоит от силы $1000.

С помощью Claude авторы подготовили и выпустили препринт научной математической статьи длиной в 76 страниц меньше, чем за месяц от получения письма от Anthropic.

Хотя эти числа весьма красноречивы, есть что отметить и со стороны ИИ-скептицизма. Во-первых, алгоритм такого класса — это по сути многомерный массив с какими-то числами; во-вторых, такие алгоритмы непрактичны ввиду своей сложности и большой константы, спрятанной внутри O(); в-третьих, мало кто в мире в принципе понимает, как устроен поиск таких алгоритмов. Так что это может быть ещё одним примером задачи, которую нейросеть решила быстрее людей за счёт способности к быстрому автоматизированному перебору и крайней нишевости результата. Кроме того, нейросеть воспользовалась долгим путём, проторенным мясными математиками, и неизвестно, смогла ли бы она найти этот алгоритм, или даже задумалась ли бы о решении этой задачи, если бы не целая научная карьера, положенная на развитие этого пути.

Автор: saluev

Источник