Пространственная сложность алгоритма Копперсмита – Винограда

24

Алгоритм Копперсмита – Винограда - это асимптотически самый быстрый известный алгоритм для умножения двух квадратных матриц. Время выполнения их алгоритма - который является самым известным на сегодняшний день. Какова пространственная сложность этого алгоритма? Это в ?O ( n 2,337 ) Θ ( n 2 )n×nO(n2.376)Θ(n2)

Шива Кинтали
источник

Ответы:

30

Да, все алгоритмы, основанные на оригинальном алгоритме Штрассена (включая большинство известных алгоритмов для умножения матриц, но не все - см. Комментарии), имеют пространственную сложность . Если бы вы могли найти алгоритм времени со сложностью пространства , это было бы большим достижением. Одним из применений будет алгоритм пространства времени, для задачи о подмножестве сумм. Θ ( n 2 ) n 3 - ε p o l y ( log n ) 2 ( 1 - ε ) n p o l y ( n )n3εΘ(n2)n3εpoly(logn)2(1ε)npoly(n)

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

Райан Уильямс
источник
Привет Райан, Круто. Как насчет теоретико-групповых алгоритмов Кон-Уманса [FOCS2003] и Кон-Кляйнберга-Сегеди-Уманса [FOCS2005]?
Шива Кинтали
1
Да, те тоже. Насколько я понимаю, они делают особый вид свертки (БПФ над специальной группой), но свертка идет над объектами размера . Никакие алгоритмы малого пространства (с временной сложностью лучше, чем очевидный алгоритм) не известны для сверток векторов над целыми числами, и я полагаю, что получить эти свертки в маленьком пространстве только сложнее. Θ(n2)
Райан Уильямс
Как можно иметь пространство, когда для хранения записей матриц требуется пространства? 2 п 2poly(logn)2n2
T ....
Поскольку обычным способом, которым измеряется сложность пространства, входные данные не учитываются в отношении границы пространства. Входные данные обрабатываются как «только для чтения», и мы измеряем, сколько дополнительной памяти «для чтения-записи» необходимо для вычисления функции. В этом случае только дополнительного пространства достаточно, когда входные записи ограничены (например, 0 или 1), и вы используете операций. O ( n 3 )O(logn)O(n3)
Райан Уильямс
1
Я не знаю, что вы имеете в виду, но есть определенно "комбинаторные" (просмотр таблиц) algs для логической матрицы mult, которые бьют n ^ 3 раз по логарифму и используют намного меньше, чем n ^ 2 пробела ...
Райан Уильямс