Skip to content

Commit 9b9d60c

Browse files
committed
Локальные исправления, опечатки, улучшения.
1 parent c89f954 commit 9b9d60c

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

tex/FLPQ.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ \section{Постановка задачи }
4141
Путь $G = \langle \Sigma, N, P \rangle$ --- контекстно-свободная грамматика.
4242
Будем считать, что $L \subseteq \Sigma$.
4343
Мы не фиксируем стартовый нетерминал в определении грамматики, поэтому, чтобы описать язык, задаваемый ей, нам необходимо отдельно зафиксировать стартовый нетерминал.
44-
Таким образом, будем говорить, что $L(G,N_i) = \{ w | N_i \xRightarrow[G]{*} w \}$ --- это язык задаваемый грамматикой $G$ со стартовым нетерминалом $N_i$.
44+
Таким образом, будем говорить, что $L(G,N_i) = \{ w \mid N_i \xRightarrow[G]{*} w \}$ --- это язык задаваемый грамматикой $G$ со стартовым нетерминалом $N_i$.
4545

4646
\begin{example}
4747
Пример задачи поиска путей.

tex/FormalLanguageConstrainedReachabilityLectureNotes.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
\usepackage{geometry}
99
\usepackage{amsfonts,latexsym}
10-
\usepackage{amsthm}
10+
\usepackage{amsthm, amsmath}
1111
\usepackage{amssymb}
1212
\usepackage[utf8]{inputenc} % Кодировка
1313
\usepackage[english,russian]{babel} % Многоязычность

tex/FormalLanguageTheoryIntro.tex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ \section{Теоретико-множественные операции над
9393
$$
9494
S_1 ^ n = \{ \underbrace{s_1 \odot s_1 \odot \ldots \odot s_1}_{\text{n раз}} \mid s_1 \in S_1\}
9595
$$
96-
При этом $S_1^0 = \{\varepsilon\}$\footnote{В данном случае нулевая степень тоже даёт единицу.}.
96+
При этом $S_1^0 = \{\varepsilon\}$\footnote{В данном случае нулевая степень даёт единицу, как мы и привыкли.}.
9797
\end{definition}
9898

9999
\begin{definition}
@@ -129,7 +129,7 @@ \section{Распознаватели}
129129
Таким образом, язык задаваемый некоторым вычислителем --- это множество принимаемых им слов.
130130
Далее становится возможно классифицировать языки по тому, какого класса распознаватель необходим и достаточен, чтобы их задать.
131131
Например, можно выделить класс языков, задаваемых конечными автоматами.
132-
На это, в частности, построена \textit{иерархия Хомского}.
132+
На этом, в частности, построена \textit{иерархия Хомского}.
133133

134134

135135

@@ -179,7 +179,7 @@ \section{Классы языков}
179179
Также, с данной презентацией рекомендуется ознакомиться чтобы представить себе состояние области в целом.}.
180180
Вариация предложенной Александром Охотиным иерархии представлена на изображении~\ref{fig:hierarchyOkhotin}~\footnote{Данная вариация скомпонована из версии, представленной в презентации ``Underlying principles
181181
and recurring ideas of formal grammars'' и версии, взятой из работы~\cite{MRYKHIN2023113829}.}.
182-
Представленная диаграмма содержит регулярные и контекстно-свободные.
182+
Приведённая диаграмма содержит регулярные и контекстно-свободные.
183183
Так и подклассы, лежащие между ними.
184184
Вместе с этим, классы, лежащие выше контекстно-свободных: многокомпонентные контекстно-свободные, булевы, конъюнктивные, их подклассы.
185185

@@ -279,7 +279,7 @@ \section{Классы языков}
279279
\end{tikzpicture}
280280
\end{center}
281281
\caption{Иерархия. \textit{Reg} --- регулярные, \textit{LLLin}, \textit{LRLin}, \textit{UnambLin}, \textit{Lin}, \textit{LL}, \textit{LR}, \textit{Unamb} --- однозначные, \textit{Ordinary} --- обыкновенные (контекстно-свободные)
282-
\textit{Conj}, \textit{Boolean}, \textit{UnamnbBool}, \textit{UnambConj}, \textit{VPDA}, \textit{LinConj}, \textit{UnambTAG}, \textit{TAG}, \textit{MCFL},}
282+
\textit{Conj} --- конъюнктивные, \textit{Boolean} --- булевы, \textit{UnamnbBool}, \textit{UnambConj}, \textit{VPDA}, \textit{LinConj}, \textit{UnambTAG}, \textit{TAG}, \textit{MCFL},}
283283
\label{fig:hierarchyOkhotin}
284284
\end{figure}
285285

tex/LinearAlgebra.tex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,10 @@ \section{Бинарные операции и их свойства}
112112

113113
\begin{itemize}
114114
\item Умножение целых чисел дистрибутивно относительно сложения и вычитания: классический \textit{распределительный закон}, знакомый всем со школы.
115-
\item Операция деления (допустим, на действительных числах) не коммутативна. При этом, она дистрибутивна справа относительно сложения и вычитания, но не дистрибутивна слева.
115+
\item Операция деления (допустим, на действительных числах) не коммутативна. При этом, она дистрибутивна справа относительно сложения и вычитания, но не дистрибутивна слева\footnote{Здесь может быть уместно вспомнить правила сложения дробей. Дроби с общим знаминателем складывать проще как раз из-за дистрибутивности справа.}.
116116
$$(a + b) / c = (a / c) + (b / c) $$
117117
но
118-
$$c / (a + b) \neq (c / a) + (c / b)\footnote{Здесь может быть уместно вспомнить правила сложения дробей. Дроби с общим знаминателем складывать проще как раз из-за дистрибутивности справа.}.$$
118+
$$c / (a + b) \neq (c / a) + (c / b).$$
119119
\end{itemize}
120120

121121
\end{example}
@@ -761,7 +761,7 @@ \section{Теоретическая сложность умножения мат
761761

762762
Важной особенностью указанного выше направления улучшения алгоритмов является то, что оно допускает использования (и даже основывается на использовании) более богатых алгебраических структур, чем требуется для определения умножения двух матриц. Так, уже алгоритм Штрасеена использует операцию вычитания, что приводит к необходимости иметь обратные элементы по сложению, а значит определять матрицы над кольцом. Хотя для исходного определения (\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/}), где, кстати, называются полукольцами, что выглядит не вполне корректно.}. Значит, описанные выше решения не применимы и вопрос о существовании алгоритма с менее чем кубической сложностью снова актуален.
763763

764-
В попытках ответить на этот вопрос появились так называемые комбинаторные алгоритмы умножения матриц\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}.
764+
В попытках ответить на этот вопрос появились так называемые комбинаторные алгоритмы умножения матриц\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})})$, однако авторы утверждают, что сами не уверены в комбинаторности предложенного решения. По-видимому, полученные результаты ещё должны быть проверены сообществом.} в настоящее время является алгоритм со сложностью\footnote{Нотация $\hat{O}$ скрывает $poly(\log\log)$ коэффициенты.} $\hat{O}(n^3/\log^4 n)$~\cite{10.1007/978-3-662-47672-7_89}.
765765

766766
Как видим, особенности алгебраических структур накладывают серьёзные ограничения на возможности конструирования алгоритмов. Отметим, что, хотя, в указанных случаях и предлагаются решения лучшие, чем наивное кубическое, они обладают принципиально разной асимптотической сложностью. в первом случае сложность оценивается полиномом, степень которого меньше третьей. Такие решения принято называть \textit{истинно субкубическими} (truly subcubic). В то время как в случае комбинаторных алгоритмов степень полинома остается прежней, третьей, хотя сложность и уменьшается на логарифмический фактор. Такие решения принято называть \textit{слегка субкубическими} (mildly subcubic). Естественный вопрос о существовании истинно субкубического алгоритма перемножения матриц над полукольцами (или же комбинаторного перемножения матриц) всё ещё не решён\footnote{Один из кандидатов --- работа~\cite{das2018lower}, однако на текущий момент предложенное в ней решение требует проверки.}.
767767

0 commit comments

Comments
 (0)