You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
title={Lower bounds for Combinatorial Algorithms for Boolean Matrix Multiplication},
1376
+
author={Debarati Das and Michal Koucký and Michael Saks},
1377
+
year={2018},
1378
+
eprint={1801.05202},
1379
+
archivePrefix={arXiv},
1380
+
primaryClass={cs.CC}
1381
+
}
1382
+
1383
+
@misc{alman2020refined,
1384
+
title={A Refined Laser Method and Faster Matrix Multiplication},
1385
+
author={Josh Alman and Virginia Vassilevska Williams},
1386
+
year={2020},
1387
+
eprint={2010.05846},
1388
+
archivePrefix={arXiv},
1389
+
primaryClass={cs.DS}
1390
+
}
1391
+
1392
+
@INPROCEEDINGS{5438580,
1393
+
author={Bansal, Nikhil and Williams, Ryan},
1394
+
booktitle={2009 50th Annual IEEE Symposium on Foundations of Computer Science},
1395
+
title={Regularity Lemmas and Combinatorial Algorithms},
1396
+
year={2009},
1397
+
volume={},
1398
+
number={},
1399
+
pages={745-754},
1400
+
doi={10.1109/FOCS.2009.76}}
1401
+
1402
+
@InProceedings{10.1007/978-3-662-47672-7_89,
1403
+
author="Yu, Huacheng",
1404
+
editor="Halld{\'o}rsson, Magn{\'u}s M.
1405
+
and Iwama, Kazuo
1406
+
and Kobayashi, Naoki
1407
+
and Speckmann, Bettina",
1408
+
title="An Improved Combinatorial Algorithm for Boolean Matrix Multiplication",
1409
+
booktitle="Automata, Languages, and Programming",
1410
+
year="2015",
1411
+
publisher="Springer Berlin Heidelberg",
1412
+
address="Berlin, Heidelberg",
1413
+
pages="1094--1105",
1414
+
abstract="We present a new combinatorial algorithm for triangle finding and Boolean matrix multiplication that runs in {\$}{\$}{\backslash}hat{\{}O{\}}(n^3/{\backslash}log ^4 n){\$}{\$}O^(n3/log4n)time, where the {\$}{\$}{\backslash}hat{\{}O{\}}{\$}{\$}O^notation suppresses poly(loglog) factors. This improves the previous best combinatorial algorithm by Chan [4] that runs in {\$}{\$}{\backslash}hat{\{}O{\}}(n^3/{\backslash}log ^3 n){\$}{\$}O^(n3/log3n)time. Our algorithm generalizes the divide-and-conquer strategy of Chan's algorithm.",
1415
+
isbn="978-3-662-47672-7"
1416
+
}
1417
+
1418
+
1419
+
@article{ArlDinKro70,
1420
+
author = {{\CYRV}. Арлазаров and {\CYRE}. Диниц and {\CYRM}. Кронрод and {\CYRI}. Фараджев},
1421
+
title = {Об экономном построении транзитивного замыкания ориентированного графа},
Copy file name to clipboardExpand all lines: tex/GraphTheoryIntro.tex
-41Lines changed: 0 additions & 41 deletions
Original file line number
Diff line number
Diff line change
@@ -373,49 +373,8 @@ \section{APSP и произведение матриц}
373
373
\section{Умножение матриц с субкубической сложностью}
374
374
В предыдущем подразделе мы свели проблему APSP к проблеме min-plus matrix multiplication, поэтому взглянем на эффективные алгоритмы матричного умножения.
375
375
376
-
Сложность наивного произведения двух матриц составляет $O(n^3)$, это приемлемо только для малых матриц, для больших же лучше использовать алгоритмы с субкубической сложностью.
377
-
Отметим, что мы называем сложность субкубической, если она равна $O(n^{3-\varepsilon})$, где $\varepsilon > 0$, иначе говоря, меньшей, чем $O(n^3)$.
378
-
379
-
Первый субкубический алгоритм опубликовал Ф. Штрассен в 1969 году, его сложность --- $O(n^{\log_2 7}) \approx O(n^{2.81})$~\cite{Strassen1969}. Основная идея --- рекурсивное разбиение на блоки $2\times2$ и вычисление их произведения с помощью только 7 умножений, а не 8.
380
-
Впоследствии алгоритмы усовершенствовались до ${\approx} O(n^{2.5})$~\cite{Pan1978,BiniCapoRoma1979,Schonhage1981,CoppWino1982}. В настоящее время наиболее асимптотически быстрым является алгоритм Копперсмита --- Винограда со сложностью $O(n^{2.376})$~\cite{CoppWino1990}.
381
-
382
-
Несмотря на то, что у приведенных алгоритмов неплохая алгоритмическая сложность, мы всё же не можем использовать их для вычисления min-plus matrix multiplication, так как в субкубических алгоритмах требуется, чтобы элементы образовывали кольцо. Покажем, что $\mathbb{R} \cup\{+\infty\}$ с операциями min и + являются полукольцом, а не кольцом:
383
-
\begin{enumerate}
384
-
\item$min(a, b) = min(b, a)$
385
-
\item$min(min(a, b)), c) = min(a, min(b, c)))$
386
-
\item$min(a, +\infty) = min(+\infty, a) = a$, т.е. $+\infty$ --- нейтральный элемент относительно операции min
387
-
388
-
\item$(a + b) + c = a + (b + c)$
389
-
390
-
\item$min(a, b) + c = min(a + c, b + c)$
391
-
\item$a + min(b, c) = min(a + b, a + c)$
392
-
393
-
\item$a + \infty = \infty + a = \infty$
394
-
\item Но для произвольного элемента $a$: $\nexists d$, т.ч. $min(a, d) = min(d, a) = +\infty$, т.е. для любого элемента нет обратного относительно операции min
395
-
\end{enumerate}
396
-
397
376
Таким образом, вопрос о субкубических алгоритмах решения APSP всё ещё открыт~\cite{Chan2010}.
398
-
Кроме того, более простая задача APSP с булевыми матрицами также не решена за субкубическую сложность. Приведем обоснование этого факта.
399
-
400
-
\begin{definition}
401
-
Матрица называется \textit{булевой}, если она состоит из 0 и 1.
402
-
\end{definition}
403
-
404
-
Булевы матрицы с поэлементными операциями дизъюнкции и конъюнкции являются полукольцом. Покажем это: пусть $A$, $B$ и $C$ --- булевы матрицы, тогда:
405
-
\begin{enumerate}
406
-
\item$A \vee B = B \vee A$
407
-
\item$(A \vee B) \vee C = A \vee (B \vee C)$
408
-
\item$A \vee N = N \vee A = A$, где $N$ --- матрица, полностью состоящая из 0
409
-
410
-
\item$(A \wedge B) \wedge C = A \wedge (B \wedge C)$
411
-
412
-
\item$(A \vee B) \wedge C = (A \wedge C) \vee (B \wedge C)$
413
-
\item$A \wedge (B \vee C) = (A \wedge B) \vee (A \wedge C)$
414
-
415
-
\item$A \wedge N = N \wedge A = N$
416
-
\end{enumerate}
417
377
418
-
Булевы матрицы тоже не являются кольцом, т.к. не имеют обратный элемент относительно операции дизъюнкции (т.е. для произвольной булевой матрицы $A$: $\nexists D$, т.ч. $D$ --- булева матрица и $A \vee D = D \vee A = N$). Следовательно, субкубические алгоритмы не подходят для перемножения булевых матриц, т.к. в них используются обратные элементы (например, для разности). В частности, они не применимы к классической матрице смежности, которая ведёт себя как булева матрица.
Пусть $G = (S,\oplus, \otimes)$ --- полукольцо, $M_{n \times m}, N_{m\times k}$ --- две матрицы над этим полукольцом.
508
508
Тогда
@@ -604,7 +604,54 @@ \section{Матрицы и вектора}
604
604
\end{align}
605
605
\end{example}
606
606
607
-
%Заметим, что скаларная операция --- это частный случай произвеления Кронекера: достаточно превратить элемент носителя полугруппы в матрицу размера $1\times 1$.
В рамках такого раздела теории сложности, как мелкозернистая сложность (fine-grained complexity) задача умножения двух матриц оказалась достаточно важной, так как через вычислительную сложность этой задачи можно оценить сложность большого класса различных задач. С примерами таких задач можно ознакомиться в работе~\cite{Williams:2010:SEP:1917827.1918339}. Поэтому рассмотрим алгоритмы нахождения произведения двух матриц более подробно.
611
+
612
+
Для начал построим наивный алгоритм, сконструированный на основе определении произведения матриц~\ref{algo:MxM}.
\Comment{{\footnotesize Пустая цепочка выводима из $S$}}
621
+
\State{\Return\textit{(true, $\omega$)}}
622
+
\EndIf
623
+
624
+
\If{$(\omega = a :: tl)$}
625
+
\Comment{{\footnotesize Выводимая из $S$ подстрока должна начинаться с $a$}}
626
+
\State{$res,tl' = $ S($tl$)}
627
+
\Comment{{\footnotesize Затем должна идти подстрока, выводимая из $S$}}
628
+
\If{res \&\&$tl' = b :: tl''$}
629
+
\Comment{{\footnotesize Если вызов закончился успешно, то надо проверить, что следующий символ --- это $b$}}
630
+
\State{\Return$S(tl'')$}
631
+
\Comment{{\footnotesize И снова попробовать вывести перфикс из $S$}}
632
+
\Else
633
+
\State{\Return\textit{(false, $tl'$)}}
634
+
\EndIf
635
+
\Else
636
+
\State{\Return\textit{(false, $\omega$)}}
637
+
\EndIf
638
+
\EndFunction
639
+
\end{algorithmic}
640
+
\end{algorithm}
641
+
642
+
Сложность наивного произведения двух матриц составляет $O(n^3)$, что очевидным образом следует из псевдокода. Но можно ли улучшить этот алгоритм? Первый положительный ответ был опубликовал Ф. Штрассен в 1969 году~\cite{Strassen1969}. Сложность предложенного им алгоритма --- $O(n^{\log_2 7}) \approx O(n^{2.81})$. Основная идея --- рекурсивное разбиение на блоки $2\times2$ и вычисление их произведения с помощью только 7 умножений, а не 8.
643
+
644
+
Рассмотрим предложенный им алгоритм более подробно !!!. Про вычитание блоков, чтобы было видно, откуда требуются обратные.
645
+
646
+
Впоследствии сложность постепенно понижалась в ряде работ, таких как ~\cite{Pan1978,BiniCapoRoma1979,Schonhage1981,CoppWino1982,CoppWino1990}. Было введено специальное обозначение для показателя степени в данной оценке: $\omega$. То есть сложность умножения матриц --- это $O(n^\omega)$, и задача сводится к уменьшению значения $\omega$. В настоящее время работа над уменьшением показателя степени продолжается и сейчас уже предложены решения с $\omega < 2.373$\footnote{В данной области достаточно регулярно появляются новые результаты, дающие сравнительно небольшие, в терминах абсолютных величин, изменения. Так, в 2021 была педставлена работа, улучшающая значение $\omega$ в пятом знаке после запятой~\cite{alman2020refined}. Несмотря на кажущуюся несерьёзность результата, подобные работы имеют большое теоретическое значение, так как улучшают наше понимание исходной задачи и её свойств.}.
647
+
648
+
Всё тем же Ф. Штрассеном ещё в 1969 году была выдвинута гипотеза о том, что для достатого больших $n$ существует алгоритм, который для любого сколь угодно маленького наперёд заданного $\varepsilon$ перемножает матрицы за $O(n^{2+\varepsilon})$. На текущий момент ни доказательства, ни опровержения этой гипотезы не предъявлено.
649
+
650
+
Важной особенностью указанного выше направления улучшения алгоритмов является то, что оно допускает использования более богатых алгебраических структур, чем требуется для определения умножения двух матриц. Так, уже алгоритм Штрасеена использует операцию вычитания, что приводит к необходимости иметь обратные элеиенты по сложению, а значит определять матрицы над кольцом. Хотя для исходного определения (\ref{def:MxM}) достаточно более бедной структуры. При этом, часто, структуры, возникающие в прикладных задачах кольцами не являются. Напмриер, тропическое (или $\{min,+\}$) полукольцо, играющее ключевую роль в тропической математике, или булево ($\{\vee,\wedge\}$) полукольцо, возникающее, например, при работе с отношениями\footnote{Вообще говоря, в некоторых прикладных задачах возникают структуры, не являющиеся даже полукольцом. Предположим, что есть три различных множества $S_1, S_2$ и $S_3$ и две двухместные функции $f:S_1 \times S_2 \to S_3$ и $g: S_3 \times S_3 \to S_3$. Этого достаточно, чтобы определить произведение двух матриц $M_1$ и $M_2$, построенных из элементов множеств $S_1$ и $S_2$ соответственно. Результирующая матрица будет состоять из элеиентов $S_3$. Как видно, функции не являются бинарными операциями в смысле нашего определения. Несотря на кажущуюся экзотичность, подобные структуры возникают на практике при работе с графами и учитываются, например, в стандарте GraphBLAS (\url{https://graphblas.github.io/}), где, кстати, называются полукольцами, что выглядит не вполне корректно.}. Значит, описанные выше решения не применимы и вопрос о существовании алгоритма с менее чем кубической сложностью снова актуален.
651
+
652
+
В попытках ответить на этот вопрос появились так называемые комбинаторные алгориты умножения матриц\footnote{В противовес описанным выше, не являющимся комбинаторными. Стоит отметить, что строгое опредедение комбинаторных алгоритмов отсутствует, хотя этот термин и получил широкое употребление. В частности, Н.~Бансал (Nikhil Bansal) и Р.~Уильямс (Ryan Williams) в работе~\cite{5438580} дают определение комбинаторного алгоритма, но тут же замечают следющее: ``We would like to give a definition of ``combinatorial algorithm'', but this appears elusive. Although the term has been used in many of the cited references, nothing in the literature resembles a definition. For the purposes of this paper, let us think of a ``combinatorial algorithm'' simply as one that does not call an oracle for ring matrix multiplication.''. Ещё один вариант определения с обсуждением можно найти в~\cite{das2018lower}.}. Классический результат в данной области --- это алгоритм чеиырёх русских, предложенный В. Л. Арлазаровым, Е. А. Диницем, М. А. Кронродом и И. А. Фараджевым в 1970 году~\cite{ArlDinKro70}, позволяющий перемножить матрицы над конечным полукольцом за $O(n^3/\log n)$. Лучшим результатом\footnote{В работе~\cite{das2018lower} предложен алгоритм со сложностью $\Omega(n^{7/3}/2^{O(\sqrt{\log n})})$, однако авторы утверждают, тчо сами не уверены в комбинаторности предложенного решения. По-видимому, полученные результаты ещё должны быть проверены сообществом.} в настоящее время является алгоритм со сложностью $\hat{O}(n^3/\log^4 n)$\footnote{Нотация $\hat{O}$ скрывает $poly(\log\log)$ коэффициенты.}~\cite{10.1007/978-3-662-47672-7_89}.
653
+
654
+
%Заметим, что скалярная операция --- это частный случай произвеления Кронекера: достаточно превратить элемент носителя полугруппы в матрицу размера $1\times 1$.
0 commit comments