Skip to content

Commit 5568b45

Browse files
committed
Minor fixes in introduction & basic TikZ setup
TikZ externalized enabled by default. Also made changes to the dependency diagram, maybe in vain
1 parent d5058cb commit 5568b45

File tree

4 files changed

+55
-32
lines changed

4 files changed

+55
-32
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,3 +276,4 @@ TSWLatexianTemp*
276276
*.lpz
277277

278278
tex/FormalLanguageConstrainedReachabilityLectureNotes.pdf
279+
tex/figures/externalized/*

tex/Introduction.tex

Lines changed: 41 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111
Таким образом, теория формальных языков выступает в качестве основы для многих прикладных областей, а алгоритмы синтаксического анализа применимы не только для обработки естественных языков или языков программирования.
1212
Нас же в данной работе будет интересовать применение теории формальных языков и алгоритмов синтаксического анализа для анализа графовых баз данных и для статического анализа кода.
1313

14-
Одна из классических задач, связанных с анализом графов --- это поиск путей в графе.
14+
Одна из классических задач, связанных с анализом графов~--- это поиск путей в графе.
1515
Возможны различные формулировки этой задачи.
1616
В некоторых случаях необходимо выяснить, существует ли путь с определёнными свойствами между двумя выбранными вершинами.
1717
В других же ситуациях необходимо найти все пути в графе, удовлетворяющие некоторым свойствам или ограничениям.
1818
Например, в качестве ограничений можно указать, что искомый путь должен быть простым, кратчайшим, гамильтоновым и так далее.
1919

2020
Один из способов задавать ограничения на пути в графе основан на использовании формальных языков.
21-
Базовое определение языка говорит нам, что язык --- это множество слов над некоторым алфавитом.
21+
Базовое определение языка говорит нам, что язык~--- это множество слов над некоторым алфавитом.
2222
Если рассмотреть граф, рёбра которого помечены символами из алфавита, то путь в таком графе будет задавать слово: достаточно соединить последовательно символы, лежащие на рёбрах пути.
2323
Множество же таких путей будет задавать множество слов или язык.
2424
Таким образом, если мы хотим найти некоторое множество путей в графе, то в качестве ограничения можно описать язык, который должно задавать это множество.
@@ -37,42 +37,51 @@
3737
Основной акцент будет сделан на контекстно-свободных языках, однако будут затронуты и другие классы: регулярные, многокомпонентные контекстно-свободные (Multiple Context-Free Languages, MCFL~\sidecite{SEKI1991191}) и конъюнктивные языки.
3838
Будет показано, что теория формальных языков и алгоритмы синтаксического анализа применимы не только для анализа языков программирования или естественных языков, а также для анализа графовых баз данных и статического анализа кода, что приводит к возникновению новых задач и переосмыслению старых.
3939

40-
4140
Структура данной работы такова.
42-
В начале (в части~\ref{chpt:GraphTheoryIntro}) мы рассмотрим основные понятия из теории графов, необходимые в данной работе. Данные разделы являются подготовительными и не обязательны к прочтению, если такие понятия как \textit{ориентированный граф} и \textit{матрица смежности} уже известны читателю. Более того, они лишь вводят определения, подразумевая, что более детальное изучение соответствующих разделов науки остается за рамками этой работы и скорее всего уже проделано читателем.
41+
В начале (в части~\ref{chpt:GraphTheoryIntro}) мы рассмотрим основные понятия из теории графов, необходимые в данной работе. Данные разделы являются подготовительными и не обязательны к прочтению, если такие понятия как \textit{ориентированный граф} и \textit{матрица смежности} уже известны читателю.
42+
Более того, они лишь вводят определения, подразумевая, что более детальное изучение соответствующих разделов науки остается за рамками этой работы и скорее всего уже проделано читателем.
4343
Затем, в главе~\ref{chpt:FormalLanguageTheoryIntro} мы введём основные понятия из теории формальных языков.
4444
Далее, в главе~\ref{chpt:FLPQ} рассмотрим различные варианты постановки задачи поиска путей с ограничениями в терминах формальных языков, обсудим базовые свойства задач, её разрешимость в различных постановках и т.д..
4545
И в итоге зафиксируем постановку, которую будем изучать далее.
4646
После этого, в главах~\ref{chpt:CFPQ_CYK}--\ref{chpt:GLR} мы будем подробно рассматривать различные алгоритмы решения этой задачи, попутно вводя специфичные для рассматриваемого алгоритма структуры данных.
4747
Большинство алгоритмов будут основаны на классических алгоритмах синтаксического анализа, таких как CYK или LR.
4848
%Все главы, начиная с~\ref{chpt:GraphTheoryIntro}, снабжены списком вопросов и задач для самостоятельного решения и закрепления материала.
4949

50-
\begin{center}
51-
\begin{tikzpicture}[shorten >=1pt,on grid,auto]
52-
\node (q_linal) [text width=4cm] {Некоторые понятия линейной алгебры};
53-
\node (q_graphtheory) [below of=q_linal, text width=4cm] {Некоторые сведения из теории графов};
54-
\node (q_fortmallang) [right of=q_graphtheory, text width=4cm] {Общие сведения теории формальных языков};
55-
\node (q_reglang) [below of=q_fortmallang, text width=4cm] {Регулярные языки};
56-
\node (q_cflang) [right of=q_reglang, text width=4cm] {Контекстно-свободные языки и грамматики};
57-
\node (q_mcfl) [right of=q_cflang, text width=4cm] {Многокомпонентные контекстно-свободные языки};
58-
\node (q_flpq) [below of=q_graphtheory, text width=4cm] {Пути с ограничениями в терминах формальных языков};
50+
\begin{figure*}
51+
\begin{center}
52+
\begin{tikzpicture}[shorten >= 1pt,
53+
auto,
54+
node distance=0.5cm,
55+
every node/.style = {shape=rectangle, draw, rounded corners},
56+
align = center]
57+
\node (q_linal) {Некоторые понятия \\ линейной алгебры};
58+
59+
\node (q_graphtheory) [below = of q_linal, ] {Некоторые сведения \\ из теории графов};
60+
\node (q_fortmallang) [right = 2 of q_graphtheory] {Общие сведения теории \\ формальных языков};
61+
62+
\node (q_flpq) [below = of q_graphtheory] {Пути с ограничениями \\ в терминах формальных \\ языков};
63+
\node (q_reglang) [right = of q_flpq] {Регулярные \\ языки};
64+
\node (q_cflang) [right = of q_reglang] {Контекстно-свободные \\ языки и грамматики};
65+
\node (q_mcfl) [right = of q_cflang] {Многокомпонентные \\ контекстно-свободные \\ языки};
66+
67+
\node (q_rpq) [below = 2 of q_flpq] {Поиск путей \\ с регулярными \\ ограничениями};
68+
\node (q_cfpq) [below = 2 of q_reglang] {Пути с ограничениями \\ в терминах \\ контекстно-свободных \\ языков};
69+
\node (q_mcfpq) [right = of q_cfpq] {Пути с ограничениями \\ в терминах \\ многокомпонентных \\ контекстно-свободных \\ языков};
5970

60-
\node (q_rpq) [below of=q_reglang, text width=4cm] {Поиск путей с регулярными ограничениями};
61-
\node (q_cfpq) [below of=q_cflang, text width=4cm] {Пути с ограничениями в терминах контекстно-свободных языков};
62-
\node (q_mcfpq) [below of=q_mcfl, text width=4cm] {Пути с ограничениями в терминах многокомпонентных контекстно-свободных языков};
63-
\path[->]
64-
(q_linal) edge node {} (q_graphtheory)
65-
(q_graphtheory) edge node {} (q_flpq)
66-
(q_fortmallang) edge node {} (q_flpq)
67-
(q_fortmallang) edge node {} (q_reglang)
68-
(q_fortmallang) edge node {} (q_cflang)
69-
(q_fortmallang) edge node {} (q_mcfl)
70-
(q_reglang) edge node {} (q_rpq)
71-
(q_cflang) edge node {} (q_cfpq)
72-
(q_mcfl) edge node {} (q_mcfpq)
73-
(q_flpq) edge node {} (q_rpq)
74-
(q_flpq) edge node {} (q_cfpq)
75-
(q_flpq) edge node {} (q_mcfpq)
76-
;
77-
\end{tikzpicture}
78-
\end{center}
71+
\path[->]
72+
(q_linal) edge (q_graphtheory)
73+
(q_graphtheory) edge (q_flpq)
74+
(q_fortmallang) edge (q_flpq)
75+
(q_fortmallang) edge (q_reglang)
76+
(q_fortmallang) edge (q_cflang)
77+
(q_fortmallang) edge (q_mcfl)
78+
(q_reglang) edge (q_rpq)
79+
(q_cflang) edge (q_cfpq)
80+
(q_mcfl) edge (q_mcfpq)
81+
(q_flpq) edge (q_rpq)
82+
(q_flpq) edge (q_cfpq)
83+
(q_flpq) edge (q_mcfpq);
84+
\end{tikzpicture}
85+
\end{center}
86+
\caption{Структура данной книги}
87+
\end{figure*}

tex/main.tex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@
55

66
\input{styles/language.tex}
77
\input{styles/utils.tex}
8+
\input{styles/tikz.tex}
89

910
\usepackage{kaobiblio}
1011
\addbibresource{FormalLanguageConstrainedReachabilityLectureNotes.bib}
1112

13+
\tikzexternalize
14+
1215
\title{О достижимости с ограничениями в терминах формальных языков}
1316
\author{Семён Григорьев}
1417
\date{\today}

tex/styles/tikz.tex

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
\usepackage{tikz}
2+
\usetikzlibrary{arrows.meta}
3+
\usetikzlibrary{external}
4+
\usetikzlibrary{positioning}
5+
6+
\tikzsetexternalprefix{figures/externalized/}
7+
8+
% \usetikzlibrary{fit, calc, automata}
9+
% \usetikzlibrary{shapes.geometric}
10+
% \usetikzlibrary{decorations.pathmorphing}

0 commit comments

Comments
 (0)