- BrainTools - https://www.braintools.ru -

Задача 3SUM решена быстрее, чем за O(N²) — а именно за O(N¹·⁹⁹⁹²). Без нейронок не обошлось

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

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

5 октября американские исследователи Вирджиния Василевска-Уильямс, известная своими быстрыми (и безумно сложными) алгоритмами перемножения матриц за O(N^{2.373}) вместо O(N^3) и её бывший аспирант Джош Алман опубликовали препринт на [1]arxiv.org [2], демонстрирующий алгоритм решения задачи 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

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

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

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

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

All-Edges Sparse Triangle problem

Следующее сведение, снова доказанное [6] Василевска-Уильямс, уже в 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}) арифметических операций.

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

Роль Claude

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

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

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

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

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

Заключение

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

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

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

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

Автор: saluev

Источник [9]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/36596

URLs in this post:

[1] препринт на : https://arxiv.org/abs/2610.06783v1

[2] arxiv.org: http://arxiv.org

[3] математике: http://www.braintools.ru/article/7620

[4] доказала: https://dl.acm.org/doi/abs/10.1145/1536414.1536477

[5] всего 19 страниц: https://www.academia.edu/download/103493722/finding-full.pdf

[6] доказанное: https://ieeexplore.ieee.org/abstract/document/9318002

[7] публично доступен: https://arxiv.org/pdf/2610.06783v1

[8] доступна онлайн: https://github.com/anthropics/formal-math/tree/main/3sum-apsp

[9] Источник: https://habr.com/ru/articles/1091158/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1091158

www.BrainTools.ru

Rambler's Top100