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
Copy file name to clipboardexpand all lines: tex/FLPQ.tex
+59-64
Original file line number
Diff line number
Diff line change
@@ -1,62 +1,64 @@
1
-
\chapter[Пути с ограничениями в терминах формальных языков]{Задача о поиске путей с ограничениями в терминах формальных языков}\label{chpt:FLPQ}
2
-
3
-
1
+
\setchapterpreamble[u]{\margintoc}
2
+
\chapter[Пути с ограничениями в терминах формальных языков]{Задача о поиске путей с ограничениями в терминах формальных языков}
3
+
\label{chpt:FLPQ}
4
+
\tikzsetfigurename{FLPQ_}
4
5
5
6
В данной главе сформулируем постановку задачи о поиске путей в графе с ограничениями.
6
7
Также мы приведём несколько примеров областей, в которых применяются алгоритмы решения этой задачи.
7
8
8
-
\section{Постановка задачи}
9
+
\section{Постановка задачи}
9
10
10
-
11
-
Пусть нам дан конечный ориентированный помеченный граф $\mathcal{G}=\langle V,E,L \rangle$.
12
-
Функция $\omega(\pi) = \omega((v_0, l_0, v_1),(v_1,l_1,v_2),\dots,(v_{n-1},l_{n-1},v_n)) = l_0\cdot l_1\cdot\ldots\cdot l_{n-1} $ строит слово по пути посредством конкатенации меток рёбер вдоль этого пути.
13
-
Очевидно, для пустого пути данная функция будет возвращать пустое слово, а для пути длины $n > 0$ --- непустое слово длины $n$.
11
+
Пусть нам дан конечный ориентированный помеченный граф $\mscrG = \langle V, E, L \rangle$.
12
+
Функция $\omega(\pi) = \omega((v_0, l_0, v_1), (v_1, l_1, v_2), \dots, (v_{n-1}, l_{n-1}, v_n)) = l_0\cdot l_1\cdot\dots\cdot l_{n-1}$ строит слово по пути посредством конкатенации меток рёбер вдоль этого пути.
13
+
Очевидно, для пустого пути данная функция будет возвращать пустое слово, а для пути длины $n > 0$~--- непустое слово длины $n$.
14
14
15
15
Если теперь рассматривать задачу поиска путей, то окажется, что то множество путей, которое мы хотим найти, задаёт множество слов, то есть язык.
16
16
А значит, критерий поиска мы можем сформулировать следующим образом: нас интересуют такие пути, что слова, составленные из меток вдоль них, принадлежат заданному языку.
17
-
\begin{definition} \label{def1}
18
-
\textit{Задача поиска путей с ограничениями в терминах формальных языков} заключается в поиске множества путей $\Pi = \{\pi\mid\omega(\pi) \in\mathcal{L}\}$.
19
17
18
+
\begin{definition}[Задача поиска путей с ограничениями в терминах формальных языков]
19
+
\label{def1}
20
+
\emph{Задача поиска путей с ограничениями в терминах формальных языков} заключается в поиске множества путей $\Pi = \{\pi\mid\omega(\pi) \in\mscrL\}$.
20
21
\end{definition}
21
22
22
-
В задаче поиска путей мы можем накладывать дополнительные ограничения на путь (например, чтобы он был простым, кратчайшим или Эйлеровым~\cite{kupferman2016eulerian}), но это уже другая история.
23
+
В задаче поиска путей мы можем накладывать дополнительные ограничения на путь (например, чтобы он был простым, кратчайшим или Эйлеровым~\sidecite{kupferman2016eulerian}), но это уже другая история.
23
24
24
25
Другим вариантом постановки задачи является задача достижимости.
25
26
26
-
\begin{definition}\label{def2}
27
-
\textit{Задача достижимости} заключается в поиске множества пар вершин, для которых найдется путь с началом и концом в этих вершинах, что слово, составленное из меток рёбер пути, будет принадлежать заданному языку.
\emph{Задача достижимости} заключается в поиске множества пар вершин, для которых найдется путь с началом и концом в этих вершинах, что слово, составленное из меток рёбер пути, будет принадлежать заданному языку
При этом, множество $\Pi$ может являться бесконечным, тогда как $\Pi'$ конечно, по причине конечности графа $\mathcal{G}$.
33
+
При этом, множество $\Pi$ может являться бесконечным, тогда как $\Pi'$ конечно, по причине конечности графа $\mscrG$.
33
34
34
-
Язык $\mathcal{L}$ может принадлежать разным классам и быть задан разными способами. Например, он может быть регулярным, контекстно-свободным, или многокомпонентным контекстно-свободным.
35
+
Язык $\mscrL$ может принадлежать разным классам и быть задан разными способами.
36
+
Например, он может быть регулярным, контекстно-свободным, или многокомпонентным контекстно-свободным.
35
37
36
-
Если $\mathcal{L}$--- регулярный, $\mathcal{G}$ можно рассматривать как недетерминированный конечный автомат (НКА), в котором все вершины являются одновременно и стартовыми, и конечными.
37
-
Тогда задача поиска путей, в которой $\mathcal{L}$--- регулярный, сводится к пересечению двух регулярных языков.
38
+
Если $\mscrL$~--- регулярный, $\mscrG$ можно рассматривать как недетерминированный конечный автомат (НКА), в котором все вершины являются одновременно и стартовыми, и конечными.
39
+
Тогда задача поиска путей, в которой $\mscrL$~--- регулярный, сводится к пересечению двух регулярных языков.
38
40
39
-
Более подробно мы рассмотрим случай, когда $\mathcal{L}$--- контекстно-свободный язык.
41
+
Более подробно мы рассмотрим случай, когда $\mscrL$~--- контекстно-свободный язык.
40
42
41
-
Путь $G = \langle\Sigma, N, P \rangle$--- контекстно-свободная грамматика.
43
+
Путь $G = \langle\Sigma, N, P \rangle$~--- контекстно-свободная грамматика.
42
44
Будем считать, что $L \subseteq\Sigma$.
43
45
Мы не фиксируем стартовый нетерминал в определении грамматики, поэтому, чтобы описать язык, задаваемый ей, нам необходимо отдельно зафиксировать стартовый нетерминал.
44
-
Таким образом, будем говорить, что $L(G,N_i) = \{ w \mid N_i \xRightarrow[G]{*} w \}$--- это язык задаваемый грамматикой $G$ со стартовым нетерминалом $N_i$.
46
+
Таким образом, будем говорить, что $L(G,N_i) = \{ w \mid N_i \xRightarrow[G]{*} w \}$~--- это язык задаваемый грамматикой $G$ со стартовым нетерминалом $N_i$.
45
47
46
48
\begin{example}
47
49
Пример задачи поиска путей.
48
50
49
-
Дана грамматика $G$, задающая язык $\mathcal{L} = a^n b^n$:
51
+
Дана грамматика $G$, задающая язык $\mscrL = a^n b^n$:
Задачи из определения \ref{def1} и \ref{def2} сводятся к построению пересечения языка $\mathcal{L}$ и языка, задаваемого путями графа, $R$.
76
+
Задачи из определения \ref{def1} и \ref{def2} сводятся к построению пересечения языка $\mscrL$ и языка, задаваемого путями графа, $R$.
75
77
А мы для обсуждения разрешимости задачи рассмотрим более слабую постановку задачи:
76
78
77
-
\begin{definition}
78
-
Необходимо проверить, что существует хотя бы один такой путь $\pi$ для данного графа, для данного языка $\mathcal{L}$, что $\omega(\pi) \in\mathcal{L}$.
79
-
79
+
\begin{definition}[TODO: Что ты?]
80
+
Необходимо проверить, что существует хотя бы один такой путь $\pi$ для данного графа, для данного языка $\mscrL$, что $\omega(\pi) \in\mscrL$.
80
81
\end{definition}
81
82
82
-
Эта задача сводится к проверке пустоты пересечения языка $\mathcal{L}$ c $R$--- регулярным языком, задаваемым графом. От класса языка $\mathcal{L}$ зависит её разрешимость:
83
-
83
+
Эта задача сводится к проверке пустоты пересечения языка $\mscrL$ c $R$~--- регулярным языком, задаваемым графом.
84
+
От класса языка $\mscrL$ зависит её разрешимость:
84
85
\begin{itemize}
85
-
\item Если $\mathcal{L}$ регулярный, то получаем задачу пересечения двух регулярных языков:
86
-
87
-
$\mathcal{L} \cap R = R'$.
88
-
$R'$ --- также регулярный язык.
89
-
Проверка регулярного языка на пустоту --- разрешимая проблема.
90
-
91
-
\item Если $\mathcal{L}$ контекстно-свободный, то получаем задачу
92
-
93
-
$\mathcal{L} \cap R = CF$ --- контекстно-свободный.
94
-
Проверка контекстно-свободного языка на пустоту --- разрешимая проблема.
95
-
86
+
\item Если $\mscrL$ регулярный, то получаем задачу пересечения двух регулярных языков: $\mscrL\cap R = R'$.
87
+
$R'$~--- также регулярный язык.
88
+
Проверка регулярного языка на пустоту~--- разрешимая проблема.
89
+
\item Если $\mscrL$ контекстно-свободный, то получаем задачу: $\mscrL\cap R = CF$~--- контекстно-свободный.
90
+
Проверка контекстно-свободного языка на пустоту~--- разрешимая проблема.
96
91
\item Помимо иерархии Хомского существуют и другие классификации языков.
97
-
Так например, класс конъюнктивных (Conj)
98
-
языков~\cite{DBLP:journals/jalc/Okhotin01}
99
-
является строгим расширением контекстно-свободных языков и все так же позволяет полиномиальный синтаксический анализ.
100
-
101
-
Пусть $\mathcal{L}$ --- конъюнктивный. При пересечении конъюнктивного и регулярного языков получается конъюнктивный ($\mathcal{L} \cap R = Conj$), а проблема проверки Conj на пустоту не разрешима~\cite{DBLP:journals/tcs/Okhotin03a}.
92
+
Так например, класс конъюнктивных (Conj) языков~\sidecite{DBLP:journals/jalc/Okhotin01}является строгим расширением контекстно-свободных языков и все так же позволяет полиномиальный синтаксический анализ.
102
93
103
-
\item Ещё один класс языков из альтернативной иерархии, не сравнимой с Иерархией Хомского, --- MCFG (multiple context-free grammars)~\cite{SEKI1991191}.
104
-
Как его частный случай --- TAG (tree adjoining grammar)~\cite{Joshi1997}.
105
-
106
-
Если $\mathcal{L}$ принадлежит классу MCFG, то $\mathcal{L} \cap R$ также принадлежит MCFG. Проблема проверки пустоты MCFG разрешима~\cite{SEKI1991191}.
94
+
Пусть $\mscrL$~--- конъюнктивный.
95
+
При пересечении конъюнктивного и регулярного языков получается конъюнктивный ($\mscrL\cap R = Conj$), а проблема проверки Conj на пустоту не разрешима~\sidecite{DBLP:journals/tcs/Okhotin03a}.
96
+
\item Ещё один класс языков из альтернативной иерархии, не сравнимой с Иерархией Хомского,~--- MCFG (multiple context-free grammars)~\sidecite{SEKI1991191}.
97
+
Как его частный случай~--- TAG (tree adjoining grammar)~\sidecite{Joshi1997}.
107
98
99
+
Если $\mscrL$ принадлежит классу MCFG, то $\mscrL\cap R$ также принадлежит MCFG.
100
+
Проблема проверки пустоты MCFG разрешима~\sidecite{SEKI1991191}.
108
101
\end{itemize}
109
102
110
103
Существует ещё много других классификаций языков, но поиск универсальной иерархии до сих пор продолжается.
Поиск путей с ограничениями в виде формальных языков широко применяется в различных областях. Ниже даны ключевые работы по применению поиска путей с контекстно-свободными ограничениями и ссылки на них для более детального ознакомления.
117
-
109
+
Поиск путей с ограничениями в виде формальных языков широко применяется в различных областях.
110
+
Ниже даны ключевые работы по применению поиска путей с контекстно-свободными ограничениями и ссылки на них для более детального ознакомления.
118
111
\begin{itemize}
119
112
\item Межпроцедурный Статанализ кода.
120
-
Идея начала активно разрабатываться Томасом Репсом~\cite{Reps}. Далее последовал ряд, в том числе инженерных работ, применяющих достижимость с контекстно-свободными ограничениями для анализа указателей, анализа алиасов и других прикладных задач~\cite{LabelFlowCFLReachability,specificationCFLReachability,Zheng}.
121
-
\item Графовые БД. Впервые задача сформулирована Михалисом Яннакакисом~\cite{Yannakakis}. Запросы с контекстно-свободными ограничениями нашли своё применение различных областях.
Идея начала активно разрабатываться Томасом Репсом~\sidecite{Reps}.
114
+
Далее последовал ряд, в том числе инженерных работ, применяющих достижимость с контекстно-свободными ограничениями для анализа указателей, анализа алиасов и других прикладных задач~\sidecite{LabelFlowCFLReachability,specificationCFLReachability,Zheng}.
115
+
\item Графовые БД.
116
+
Впервые задача сформулирована Михалисом Яннакакисом~\sidecite{Yannakakis}.
117
+
Запросы с контекстно-свободными ограничениями нашли своё применение различных областях.
0 commit comments