Skip to content

Commit 41ffb5b

Browse files
committed
Базовый перенос GLR для CFPQ и куча правок мелких.
1 parent 466ffda commit 41ffb5b

49 files changed

Lines changed: 487 additions & 130 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

book_structure.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,14 +234,15 @@
234234
- ❌ Раздел "Свойства алгоритма"
235235

236236

237-
- Раздел "Обобщённый восходящий алгоритм для поиска путей с КС ограничениям" — `GLR-based_CFPQ.tex` — ⚠️
237+
- Раздел "Обобщённый восходящий алгоритм для поиска путей с КС ограничениям" — `07_GLR_Based.tex` — ⚠️
238238
- ⚠️ Вводная часть главы: история вопроса, обзор, мотивация
239239
- ⚠️ Раздел "Описание алгоритма"
240240
- Планируемое содержание раздела:
241241
- Описание, Адаптация GLR: множественный shift по всем исходящим рёбрам (конфликт типа shift-shift), Модификации GLR (RNGLR, BRNGLR)
242242
- Псевдокод
243-
- ❌ Раздел "Примеры"
244-
- ❌ Раздел "Свойства алгоритма"
243+
- ⚠️ Раздел "Примеры"
244+
- ⚠️ Раздел "Свойства алгоритма"
245+
- Интегрированы материалы из статьи `papers_src/CFPQ_GLR/paper`: основной алгоритм из `algorithm.tex`, доказательства завершимости и корректности из `algorithm.tex`, пример и рисунки из `appendix.tex`. Рисунки и dot-исходники перенесены в `tex/part_03_GraphAnalysis/chapter_12_CFPQ/figures/07_GLR_Based/`.
245246

246247

247248
- Раздел "Комбинаторы парсеров для поиска путей с КС ограничениям" — `CombinatorsForCFPQ.tex` — ⚠️

glossary.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,17 @@
3535
- GraphBLAS --- GraphBLAS
3636
- LAGraph --- LAGraph
3737
- SuiteSparse:GraphBLAS --- SuiteSparse:GraphBLAS
38+
- Встроенный язык --- String-embedded language
39+
- Регулярная аппроксимация --- Regular approximation
40+
- Ослабленный синтаксический анализ --- Relaxed parsing
41+
- Проходящая свёртка --- Passing reduction
42+
- Обнуляемый справа --- Right nullable
43+
- Полнота --- soundness (В смысле полнота и корректность)
44+
- Произведение Кронекера --- Kronecker product
45+
- Тензорное произведение --- Tensor product
46+
- Иерархия Хомского --- Chomsky hierarchy
47+
- Дескриптор --- Descriptor
48+
- Контекстно-зависимый язык --- Context-sensitive language
3849

3950
# Сокращения (расшифровка --- сокращение)
4051
- Graph Structured Stack --- GSS
@@ -62,6 +73,7 @@
6273
- Cocke-Younger-Kasami --- CYK
6374
- Extended Backus-Naur Form --- EBNF
6475
- Right Nulled GLR --- RNGLR
76+
- Right-Nulled Generalized LR --- RNGLR
6577
- Finite State Machine --- FSM
6678
- Недетерминированный конечный автомат --- НКА
6779
- Детерминированный конечный автомат --- ДКА
@@ -72,6 +84,22 @@
7284
- Generalized LL --- GLL
7385
- Two-way Regular Path Querying --- 2-RPQ
7486
- Two-way Nondeterministic Finite Automaton --- 2-NFA
87+
- Left-to-right Leftmost-derivation --- LL
88+
- Left-to-right Rightmost-derivation --- LR
89+
- Simple LR --- SLR
90+
- Look-Ahead LR --- LALR
91+
- Canonical LR --- CLR
92+
- Binary Right-Nulled Generalized LR --- BRNGLR
93+
- Multiple-Source Breadth-First Search --- MS-BFS
94+
- Tree Adjoining Grammar --- TAG
95+
- Visibly Pushdown Automaton --- VPDA
96+
- Parallel Multiple Context-Free Grammar --- PMCFG
97+
- Parallel Multiple Context-Free Language --- PMCFL
98+
- Multiple Component Context-Free Language Path Querying --- MCFLPQ
99+
- Directed Acyclic Graph --- DAG
100+
- Abstract Family of Languages --- AFL
101+
- Input-Driven Pushdown Automata --- IDPDA
102+
- Linear Algebra-based Regular Path Querying --- LARPQ
75103

76104
# Иерархия терминов
77105
- Задача анализа графов с ограничениями в виде контекстно свободных языков --- более общий термин, чем задача достижимости с ограничениями в виде контекстно свободных языков

tex/frontmatter/Introduction.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
Затем, в главе~\ref{chpt:FormalLanguageTheoryIntro} мы введём основные понятия из теории формальных языков.
4545
Далее, в главе~\ref{chpt:FLPQ} рассмотрим различные варианты постановки задачи поиска путей с ограничениями в терминах формальных языков, обсудим базовые свойства задач, её разрешимость в различных постановках и т.д..
4646
И в итоге зафиксируем постановку, которую будем изучать далее.
47-
После этого, в главах~\ref{chpt:CFPQ_CYK}--\ref{chpt:GLR} мы будем подробно рассматривать различные алгоритмы решения этой задачи, попутно вводя специфичные для рассматриваемого алгоритма структуры данных.
47+
После этого мы будем подробно рассматривать различные алгоритмы решения этой задачи, включая алгоритмы на основе GLR (раздел~\ref{sec:GLR}), попутно вводя специфичные для рассматриваемого алгоритма структуры данных.
4848
Большинство алгоритмов будут основаны на классических алгоритмах синтаксического анализа, таких как CYK или LR.
4949

5050
\begin{figure*}

tex/part_01_Prep/chapter_01_LinearAlgebra/07_MatricesAndVectors.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ \section{Матрицы и вектора}
225225
\end{definition}
226226

227227
\begin{remark}
228-
\label{note:KronIsNotCommutative}
228+
\label{rem:KronIsNotCommutative}
229229
Произведение Кронекера не является коммутативным\sidenote{Показать это можно по определению: найти пример, для которого $M \otimes N \neq N \otimes M$.}.
230230
При этом всегда существуют две матрицы перестановок $P$ и $Q$ такие, что $A \otimes B = P(B \otimes A)Q$.
231231
\end{remark}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
\section{Прикладные особенности}
22

33
\mytodo{Написать раздел}
4-
Планируемое содержание раздела: Взгляд программиста: типы данных, не совсем честные алгебраические структуры ("просто лишь бы типизировалось"), GraphBLAS, разреженность, параллельность. Операции типа маски, map2 и так далее.
4+
Планируемое содержание раздела: Взгляд программиста: типы данных, не совсем честные алгебраические структуры (<<просто лишь бы типизировалось>>), GraphBLAS, разреженность, параллельность. Операции типа маски, map2 и так далее.

tex/part_01_Prep/chapter_02_SetTheory/main.tex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
\setchapterpreamble[u]{\margintoc}
22
\chapter{Некоторые понятия теории множеств}
3+
\label{chpt:SetTheory}
34
\tikzsetfigurename{SetTheory_}
45

56
Ниже мы введём некоторые понятия из теории множеств, которые будут необходимы при изложении дальнейшего материала.

tex/part_01_Prep/chapter_03_GraphTheoryIntro/01_BasicDefinitions.tex

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ \section{Основные определения}
1919
& \ \ \ (2, b, 3), (3, b, 2)\}, \\
2020
L & =\{a, b\} \rangle.
2121
\end{align*}
22-
Графическое представление графа $\mbfscrG_1$ представлено на рисунке~\ref{gr:garph_visualization}.
22+
Графическое представление графа $\mbfscrG_1$ представлено на рисунке~\ref{fig:garph_visualization}.
2323
\begin{marginfigure}
2424
\begin{center}
2525
\resizebox{\marginparwidth}{!}{\input{figures/edge_labelled_graph_a_3_loop_b_2_loop}}
2626
\end{center}
2727
\caption{Визуальное представление графа из примера~\ref{exmpl:garph_visualization}}
28-
\label{gr:garph_visualization}
28+
\label{fig:garph_visualization}
2929
\end{marginfigure}
3030

3131
Здесь $(0, a, 1)$ и $(3,b,2)$~--- это рёбра графа $\mbfscrG_1$.
@@ -78,11 +78,11 @@ \section{Основные определения}
7878
\resizebox{\marginparwidth}{!}{\input{part_01_Prep/chapter_03_GraphTheoryIntro/figures/graph1.tex}}
7979
\end{center}
8080
\caption{Неориентированный граф}
81-
\label{gr:graph1}
81+
\label{fig:graph1}
8282
\end{marginfigure}
8383
\begin{example}[Пример матрицы смежности неориентированного графа]
8484
\label{exmpl:undirectedGraphMatrix}
85-
Пусть дан неориентированный граф $\mbfscrG = \langle V, E\rangle$ без каких-либо меток на рёбрах (см. рисунок \ref{gr:graph1}).
85+
Пусть дан неориентированный граф $\mbfscrG = \langle V, E\rangle$ без каких-либо меток на рёбрах (см. рисунок~\ref{fig:graph1}).
8686
Его матрица смежности~--- булева матрица, в ячейке которой хранится $1$ только если соответствующие вершины соединены ребром:
8787
\[
8888
\begin{pmatrix}
@@ -102,11 +102,11 @@ \section{Основные определения}
102102
\resizebox{\marginparwidth}{!}{\input{part_01_Prep/chapter_03_GraphTheoryIntro/figures/graph2.tex}}
103103
\end{center}
104104
\caption{Ориентированный граф}
105-
\label{gr:graph2}
105+
\label{fig:graph2}
106106
\end{marginfigure}
107107
\begin{example}[Пример матрицы смежности ориентированного графа]
108-
\label{example:diGraph}
109-
Дан ориентированный граф (см. рисунок \ref{gr:graph2}).
108+
\label{exmpl:diGraph}
109+
Дан ориентированный граф (см. рисунок~\ref{fig:graph2}).
110110
Построить его булеву матрицу смежности можно применив рассуждения из предыдущего примера (\ref{exmpl:undirectedGraphMatrix}) и выглядеть она будет следующим образом:
111111
\[
112112
\begin{pmatrix}
@@ -123,11 +123,11 @@ \section{Основные определения}
123123
\resizebox{\marginparwidth}{!}{\input{part_01_Prep/chapter_03_GraphTheoryIntro/figures/graph3.tex}}
124124
\end{center}
125125
\caption{Помеченный граф}
126-
\label{gr:graph3}
126+
\label{fig:graph3}
127127
\end{marginfigure}
128128
\begin{example}[Пример матрицы смежности помеченного графа]
129129
\label{exmpl:matrix_for_labelled_graph}
130-
Пусть дан помеченный граф (см. рисунок \ref{gr:graph3}).
130+
Пусть дан помеченный граф (см. рисунок~\ref{fig:graph3}).
131131
В данном случае $L = \{a,b\}$.
132132
Так как мы не будем в данном примере запрещать параллельные рёбра, то ячейки матрицы будут содержать множества меток: метки для всех параллельных рёбер между парой вершин.
133133
Соответственно, $\varnothing$ означает, что рёбер между соответствующей парой вершин нету.
@@ -148,11 +148,11 @@ \section{Основные определения}
148148
\resizebox{\marginparwidth}{!}{\input{part_01_Prep/chapter_03_GraphTheoryIntro/figures/graph4.tex}}
149149
\end{center}
150150
\caption{Взвешенный граф}
151-
\label{gr:graph4}
151+
\label{fig:graph4}
152152
\end{marginfigure}
153153
\begin{example}[Пример матрицы смежности взвешенного графа]
154-
\label{example:apspGraph}
155-
Пусть дан взвешенный граф (см. рисунок \ref{gr:graph4}).
154+
\label{exmpl:apspGraph}
155+
Пусть дан взвешенный граф (см. рисунок~\ref{fig:graph4}).
156156
Будем считать, что веса берутся из $\BbbR \ (L \subseteq \BbbR$).
157157
Нужно придумать специальное значение, которое будет храниться в ячейках, соответствующих вершинам, между которыми нету рёбер\sidenote{
158158
Выбрать какое-то значение из $\BbbR$ не получится, так как в общем слуае любое такое значение может быть корректной меткой существующего ребра, так как у нас метки~--- это \emph{произвольные} значения из $\BbbR$.
@@ -176,7 +176,7 @@ \section{Основные определения}
176176
\]
177177
\end{example}
178178

179-
В нашем последнем примере (\ref{example:apspGraph}) мы обратили внимание на то, что детали построения матрицы смежности могут зависеть от того, для решения какой задачи её планируется использовать.
179+
В нашем последнем примере (\ref{exmpl:apspGraph}) мы обратили внимание на то, что детали построения матрицы смежности могут зависеть от того, для решения какой задачи её планируется использовать.
180180
В действительности, именно так и происходит: матрица смежности~--- удобный инструмент для описания некоторых свойств графа, важных при решении той или иной задачи.
181181
Исходя из такого взгляда мы и попробуем построить обобщённое определение матрицы смежности.
182182

tex/part_01_Prep/chapter_03_GraphTheoryIntro/04_BFS.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ \section{Обход графа в ширину}
144144

145145
\begin{example}
146146

147-
Рассмотрим обход в ширину графа из примера~\ref{example:diGraph} начиная с вершины \circled{2}.
147+
Рассмотрим обход в ширину графа из примера~\ref{exmpl:diGraph} начиная с вершины \circled{2}.
148148
Для обозначения текущего фронта будем использовать зелёный цвет, а для достижимых из него за один шаг~--- жёлтый, обведём вершину красным, если она посещается повторно.
149149

150150
В начальном состоянии посещённых вершин нет и во фронте отмечена только вторая вершина (так как она является стартовой):
@@ -340,7 +340,7 @@ \section{Обход графа в ширину}
340340
\end{algorithm}
341341

342342
\begin{example}
343-
Рассмотрим обход в ширину графа из примера~\ref{example:diGraph} начиная с вершин \circled{1} и \circled{3}.
343+
Рассмотрим обход в ширину графа из примера~\ref{exmpl:diGraph} начиная с вершин \circled{1} и \circled{3}.
344344
Будем использовать ту же цветовую схему, что и в предыдущем примере.
345345

346346
В данном случае вспомогательные структуры инициализируются следующими матрицами.

tex/part_02_Foundations/chapter_04_FormalLanguageTheoryIntro/main.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ \chapter{Общие сведения теории формальных язык
3333
Для обозначения символов алфавита будем использовать строчные буквы латинского алфавита: $a, b, \dots, x, y, z$.
3434

3535
Будем считать, что над алфавитом $\Sigma$ всегда определена операция конкатенации $\cdot: \Sigma^* \times \Sigma^* \to \Sigma^*$.
36-
Здесь $\Sigma^*$~--- замыкание множества !!!! \ref{def:set_closure}
36+
Здесь $\Sigma^*$~--- замыкание множества !!!!~\ref{def:set_closure}
3737
При записи выражений символ точки (обозначение операции конкатенации) часто будем опускать: $a \cdot b = ab$.
3838

3939
\begin{definition}[Слово]

tex/part_02_Foundations/chapter_05_RegularLanguages/02_FiniteAutomata.tex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ \section{Конечные автоматы}
3939
Иными словами, будем говорить, что автомат принимает на вход слово или строку.
4040
При таком подходе автомат естественно рассматривать как \emph{распознаватель}\sidenote{Конечно, на автомат можно смотреть и как на генератор: любой путь от стартового состояния до финального задаёт слово из языка.}.
4141

42-
\begin{example}\label{example:NFA}
42+
\begin{example}\label{exmpl:NFA}
4343
Пусть задан автомат $M=\langle Q, Q_S, Q_F, \delta, \Sigma\rangle$, где
4444
\begin{itemize}
4545
\item $Q = \{0,1,2\}$;
@@ -167,7 +167,7 @@ \section{Конечные автоматы}
167167
Во-первых, стартовое состояние ровно одно.
168168
Во-вторых, функция переходов не допускает переходов по $\varepsilon$ и из любого состояния существует не более одного перехода по конкретному символу.
169169

170-
\begin{example}\label{example:DFA}
170+
\begin{example}\label{exmpl:DFA}
171171
Пусть задан детерминированный автомат $M=\langle Q, q_S, Q_F, \delta, \Sigma\rangle$, где
172172
\begin{itemize}
173173
\item $Q = \{0,1,2\}$;
@@ -185,7 +185,7 @@ \section{Конечные автоматы}
185185
\begin{center}
186186
\input{part_02_Foundations/chapter_05_RegularLanguages/figures/02_FiniteAutomata/fig_dfa_example.tex}
187187
\end{center}
188-
\caption{Пример детерминированного конечного автомата в котором состояние $0$~--- стартовое, а состояние $1$~--- финальное, задающего тот же язык, что и автомат из примера~\ref{example:NFA}}
188+
\caption{Пример детерминированного конечного автомата в котором состояние $0$~--- стартовое, а состояние $1$~--- финальное, задающего тот же язык, что и автомат из примера~\ref{exmpl:NFA}}
189189
\label{fig:dfa_example}
190190
\end{marginfigure}
191191

0 commit comments

Comments
 (0)