Skip to content

Commit cffadd0

Browse files
committed
Задача поиска путей. В процессе.
1 parent 83ddbf9 commit cffadd0

File tree

2 files changed

+45
-35
lines changed

2 files changed

+45
-35
lines changed

tex/GraphTheoryIntro.tex

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ \section{Основные определения}
6969
Один из способов задать граф --- это задать его \textit{матрицу смежности}.
7070

7171
\begin{definition}
72-
\textit{Матрица смежности} графа $\mathcal{G}=\langle V,E,L \rangle$ --- это квадратная матрица $M$ размера $n \times n$, где $|V| = n$, построенная над алгебраической структурой $\mathbb{G} = (S,\circ\colon S \times S \to S)$, которая конструируется следующим образом.
72+
\textit{Матрица смежности} графа $\mathcal{G}=\langle V,E,L \rangle$ --- это квадратная матрица $M$ размера $n \times n$, где $|V| = n$, построенная над коммутативным моноидом $\mathbb{G} = (S,\circ\colon S \times S \to S)$, который конструируется следующим образом.
7373

7474
\begin{enumerate}
7575
\item $L \subseteq S$.
@@ -80,7 +80,7 @@ \section{Основные определения}
8080
При этом $M[i,j] = \bigcirc_{(i,l,j) \in E}l$, где $\bigcirc_\varnothing = \mathbb{0}$.
8181
\end{definition}
8282

83-
Заметим, что наше определение матрицы смежности отличается от классического, в котором матрица является булевой и отражает лишь факт наличия хотя бы одного ребра и. То есть $M[i,j] = 1 \iff \exists e = (i,\_,j) \in E$.
83+
Заметим, что наше определение матрицы смежности отличается от классического, в котором матрица является булевой и отражает лишь факт наличия хотя бы одного ребра. То есть $M[i,j] = 1 \iff \exists e = (i,\_,j) \in E$.
8484

8585
\begin{example}[Пример матрицы смежности неориентированного графа]\label{exmpl:undirectedGraphMatrix}
8686
Пусть дан следующий неориентированный граф.
@@ -159,7 +159,7 @@ \section{Основные определения}
159159
\input{figures/graph/graph4.tex}
160160
\end{center}
161161

162-
Будем считать, что веса берутся из $\mathbb{R}$, а решаемая задача --- поиск кратчайших путей между вершинами. В таком случае естественно предположить, что для любой вершины $v_i$ существует петля $v_i,0,v_i$, хоть она явно и не изображена. Далее, $\mathbb{G} = ( \mathbb{R}\cup \{\infty\} , \min)$, где $\infty$ --- нейтральный элемент относительно операции $\min$.
162+
Будем считать, что веса берутся из $\mathbb{R}$, а решаемая задача --- поиск кратчайших путей между вершинами. В таком случае естественно предположить, что для любой вершины $v_i$ существует петля $(v_i,0,v_i)$, хоть она явно и не изображена. Далее, $\mathbb{G} = ( \mathbb{R}\cup \{\infty\} , \min)$, где $\infty$ --- нейтральный элемент относительно операции $\min$.
163163

164164
В результате мы получим следующую матрицу смежности:
165165
$$
@@ -172,8 +172,47 @@ \section{Основные определения}
172172
$$
173173
\end{example}
174174

175-
Мы ввели лишь общие понятия.
176-
Специальные понятия, необходимые для изложения конкретного материала, будут даны в соответствующих главах.
175+
Таким образом, уже можно заметить, что введение моноида как абстракции позволяет достаточно унифицированным образом смотреть на различные графы и их матрицы смежности. Далее мы увидим, что данный путь позволит решать унифицированным образом достаточно широкий круг задач, связанных с анализом путей в графах. Но сперва мы сформулируем различные варианты задачи поиска путей в графе. Это необходимо для формулировки задач, на решение которых мы в конечном итоге нацелены.
176+
177+
\section{Задачи поиска путей}
178+
179+
Одна из классических задач анализа графов --- это задача поиска путей между вершинами с различными ограничениями.
180+
181+
При этом, возможны различные постановки задачи.
182+
С одной стороны, постановки различаются тем, что именно мы хотим получить в качестве результата. Здесь наиболее частыми являются следующие варианты.
183+
184+
\begin{itemize}
185+
\item Наличие хотя бы одного пути, удовлетворяющего ограничениям, в графе. В данном случае не важно, между какими вершинами существует путь, важно лишь наличие его в графе.
186+
187+
\item Наличие пути, удовлетворяющего ограничениям, между некоторыми вершинами: задача достижимости.
188+
При данной постановке задачи, нас интересует ответ на вопрос достижимости вершины $v_i$ из вершины $v_j$ по пути, удовлетворяющему ограничениям.
189+
Такая постановка требует лишь проверить существование пути, но не его предоставления в явном виде.
190+
191+
\item Поиск одного пути, удовлетворяющего ограничениям: необходимо не только установить факт наличия пути, но и предъявить его. При этом часто подразумевается, что возвращается любой путь, являющийся решением, без каких-либо дополнительных ограничений. Хотя, например, в некоторых задачах дополнительное требование простоты или наименьшей длинны выглядит достаточно естественным.
192+
193+
\item Поиск всех путей: необходимо предоставить все пути, удовлетворяющие заданным ограничениям.
194+
\end{itemize}
195+
196+
С другой стороны, задачи могут различаться ещё и тем, как фиксируются множества стартовых и конечных вершин.
197+
Здесь возможны следующие варианты:
198+
\begin{itemize}
199+
\item от одной вершины до всех,
200+
\item между всеми парами вершин,
201+
\item межу фиксированной парой вершин,
202+
\item между двумя множествами вершин $V_1$ и $V_2$, что подразумевает решение задачи для всех $(v_i,v_j) \in V_1 \times V_2$.
203+
\end{itemize}
204+
205+
Стоит отметить, что последний вариант является самым общим и остальные --- лишь его частные случаи.
206+
Однако этот вариант часто выделяют отдельно, подразумевая, что остальные, выделенные, варианты в него не включаются.
207+
208+
В итоге, перебирая возможные варианты желаемого результата и способы фиксации стартовых и финальных вершин, мы можем сформулировать достаточно большое количество задач. Например, задачу поиска всех путей между двумя заданными вершинами, задачу поиска одного пути от фиксированной стартовой вершины до каждой вершины в графе, или задачу достижимости между всеми парами вершин.
209+
210+
Часто при поиске путей на них накладывают дополнительные ограничения. Например, можно потребовать, чтобы пути были простыми или не проходили через определённые вершины. Один из естественных способов задавать ограничения --- это формулировать их в терминах той алгебраической структуры, из которой берутся веса рёбер графа.
211+
212+
Предположим, что дан граф $\mathcal{G} = \langle V, E, L\rangle $, где $L = \langle S, \oplus, \otimes \rangle$ --- это полукольцо. Тогда можно поставить следующую задачу: выяснить, каково наилучшее значение некоторого свойства $$ \{(v_i, v_j, c) \mid \exists v_i \pi v_j, c = \bigoplus_{\forall v_i \pi v_j} \bigotimes_{(u,l,v) \in \pi } l \} $$
213+
214+
Ограничение, имеющее важное прикладное значение, --- минимальность длины искомого пути.
215+
Одна из важных задач, имеющих как прикладное, так и теоретическое значение --- \textit{поиск кратчайших путей в графе между всеми парами вершин(англ. APSP --- all-pairs shortest paths)}. Рассмотрим её более подробно. Тем более, что данная задача в определённом смысле близка к задаче, которая будет основной в данной работе, и из алгоритмов для APSP можно почерпнуть идеи для алгоритмов решения задачи поиска путей с ограничениями в терминах формальных языков.
177216

178217
\section{Графы и линейная алгебра}
179218

@@ -224,36 +263,7 @@ \section{Графы и линейная алгебра}
224263

225264
Про Кронекера и произведение графов.
226265

227-
\section{Задачи поиска путей}
228-
229-
Одна из классических задач анализа графов --- это задача поиска путей между вершинами с различными ограничениями.
230-
231-
При этом, возможны различные постановки задачи.
232-
С одной стороны, по тому, что именно мы хотим получить в качестве результата:
233-
\begin{itemize}
234-
\item Наличие хотя бы одного пути, удовлетворяющего ограничениям, в графе. В данном случае не важно, между какими вершинами существует путь, важно лишь наличие его в графе.
235-
\item Наличие пути, удовлетворяющего ограничениям, между некоторыми вершинами: задача достижимости.
236-
При данной постановке задачи, нас интересует ответ на вопрос достижимости вершина $v_1$ из вершины $v_2$ по пути, удовлетворяющему ограничениям.
237-
Такая постановка требует лишь проверить существование пути, но не обязательно его предоставлять в явном виде.
238-
\item Поиск одного пути, удовлетворяющего ограничениям: необходимо не только установить факт наличия пути, но и предъявить его. При этом часто подразумевается, что возвращается любой путь, являющийся решением, без каких-либо дополнительных ограничений. Хотя, например, в некоторых задачах дополнительное требование простоты или наименьшей длинны выглядит достаточно естественным.
239-
\item Поиск всех путей: необходимо предоставить все пути, удовлетворяющие заданным ограничениям.
240-
\end{itemize}
241-
242-
С другой стороны, задачи различаются ещё и по тому, как фиксируются множества стартовых и конечных вершин.
243-
Здесь возможны следующие варианты:
244-
\begin{itemize}
245-
\item от одной вершины до всех,
246-
\item между всеми парами вершин,
247-
\item межу фиксированной парой вершин,
248-
\item между двумя множествами вершин.
249-
\end{itemize}
250-
251-
Стоит отметить, что последний вариант является самым общим и остальные --- лишь его частные случаи.
252-
Однако этот вариант часто выделяют отдельно, подразумевая, что остальные, выделенные, варианты в него не включаются. В итоге мы можем сформулировать прямое произведение различных постановок задач о поиске путей, перебирая возможные варианты желаемого результата и фиксируя стартовые и финальные множества разными способами.
253266

254-
Часто при поиске путей на них накладывают дополнительные ограничения. Например, можно потребовать, чтобы пути были простыми или не проходили через определённые вершины.
255-
Ограничение, имеющее важное прикладное значение, --- минимальность длины искомого пути.
256-
Одна из важных задач, имеющих как прикладное, так и теоретическое значение --- \textit{поиск кратчайших путей в графе между всеми парами вершин(англ. APSP --- all-pairs shortest paths)}. Рассмотрим её более подробно. Тем более, что данная задача в определённом смысле близка к задаче, которая будет основной в данной работе, и из алгоритмов для APSP можно почерпнуть идеи для алгоритмов решения задачи поиска путей с ограничениями в терминах формальных языков.
257267

258268

259269
\section{APSP и транзитивное замыкание графа}

tex/LinearAlgebra.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,7 @@ \section{Теоретическая сложность умножения мат
639639
\end{algorithmic}
640640
\end{algorithm}
641641

642-
Сложность наивного произведения двух матриц составляет $O(n^3)$, что очевидным образом следует из псевдокода. Но можно ли улучшить этот алгоритм? Первый положительный ответ был опубликовал Ф. Штрассен в 1969 году~\cite{Strassen1969}. Сложность предложенного им алгоритма --- $O(n^{\log_2 7}) \approx O(n^{2.81})$. Основная идея --- рекурсивное разбиение исходных матриц на блоки $2 \times 2$ и вычисление их произведения с помощью только 7 умножений, а не 8.
642+
Сложность наивного произведения двух матриц составляет $O(n^3)$, что очевидным образом следует из псевдокода. Но можно ли улучшить этот алгоритм? Первый положительный ответ был опубликовал Ф. Штрассен в 1969 году~\cite{Strassen1969}. Сложность предложенного им алгоритма --- $O(n^{\log_2 7}) \approx O(n^{2.81})$. Основная идея --- рекурсивное разбиение исходных матриц на блоки и вычисление их произведения с помощью только 7 умножений, а не 8.
643643

644644
Рассмотрим алгоритм Штрассена более подробно. Пусть $A$ и $B$ --- две квадратные матрицы размера $2^n \times 2^n$\footnote{Если размер умножаемых матриц не является натуральной степенью двойки, мы дополняем исходные матрицы дополнительными нулевыми строками и столбцами.} над кольцом $R=(S,\oplus,\otimes)$. Наша задача найти матрицу $C = A \cdot B$.
645645

0 commit comments

Comments
 (0)