-
Notifications
You must be signed in to change notification settings - Fork 12
MCFG chapter #46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
MCFG chapter #46
Changes from 4 commits
83b573e
5017617
0df3522
5a459bc
b9d145d
a73f832
198f854
c7149c9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,10 @@ | ||
| \chapter[Многокомпонентные контекстно-свободные языки]{Многокомпонентные контекстно-свободные языки\footnote{Мы дадим лишь базовые определения и приведём краткий обзор данного класса. В качестве отправной точки для более детального изучения можно порекомендовать материалы, подготовдленные Сильваном Салвати (Sylvain Salvati): \url{https://www.labri.fr/perso/salvati/downloads/cours/esslli/}}} | ||
| \chapter[Многокомпонентные контекстно-свободные языки]{Многокомпонентные контекстно-свободные языки} | ||
|
|
||
| \textit{Многокомпонентны контекстно-свободные языки} (и соответствующий класс грамматик) --- это строгое расширение контекстно-свободных языков (грамматик), обладающее рядом свойств !!! | ||
| \textit{Многокомпонентные контекстно-свободные грамматики (MCFG)} \sidenote{ | ||
| Мы дадим лишь базовые определения и приведём краткий обзор данного класса. В качестве отправной точки для более детального изучения можно порекомендовать материалы, подготовленные Сильваном Салвати (Sylvain Salvati) \url{https://www.labri.fr/perso/salvati/downloads/cours/esslli/}. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ссылку лучше в сноску. |
||
| } --- это строгое расширение контекстно-свободных грамматик для описания синтаксиса естественных языков. | ||
|
|
||
| Класс языков, порождаемых MCFG (называемых многокомпонентными контекстно-свободными языками, MCFL), входят в класс контекстно-зависимых языков и включают в себя класс контекстно-свободных языков. | ||
|
|
||
| \begin{definition} | ||
| \textit{m-MCFG(r)} это четвёрка $\langle \Sigma, N, S, P \rangle$ | ||
|
|
@@ -13,195 +17,91 @@ | |
| A(s_1,\ldots,s_k) \leftarrow B_1(x_1^1,\ldots,x_{k_1}^1), \ldots, B_n(x_1^n,\ldots,x_{k_n}^n) | ||
| $$ | ||
| \begin{itemize} | ||
| \item $A$ --- нетерминал ранга $k$, $B_i$ --- нетерминалы ранга $k_i$, $n \leq r$ | ||
| \item $A$ --- нетерминал ранга $k$, $B_i$ --- нетерминалы ранга $k_i$, $n \leq r$; | ||
| \item Все $x^i_j$ попарно различны (переменные) | ||
| \item $s_i \in (\Sigma \cup X)^*, X = \bigcup_{i=1}^n \bigcup_{j=1}^{k_i} {x^i_j}$ | ||
| \item Строки $s_i \in (\Sigma \cup X)^*, X = \bigcup_{i=1}^n \bigcup_{j=1}^{k_i} {x^i_j}$ | ||
| \item Каждая $x^i_j$ встречается не более одного раза в последовательности $s_1,\ldots, s_k$. Если допустить несколько вхождений, то это PMCFG. | ||
| \end{itemize} | ||
| \end{itemize} | ||
| \end{definition} | ||
| \end{definition} | ||
|
|
||
| Приведём примеры многокомпонентных контекстно-свободных грамматик. Для начал рассмотрим грамматики для известных нам контекстно-свободных языков: | ||
| \begin{itemize} | ||
| \item язык вложенных скобок (\ref{grm:nestedbrs_cfg} и \ref{grm:nestedbrs_mcfg}, соответственно);\\ | ||
| \begin{minipage}[t]{0.4\textwidth} | ||
| \begin{align}\label{grm:nestedbrs_cfg} | ||
| S &\to a S b \nonumber \\ | ||
| S &\to \varepsilon | ||
| \end{align} | ||
| \end{minipage} | ||
| ~ | ||
| \begin{minipage}[t]{0.2\textwidth} | ||
| \end{minipage} | ||
| ~ | ||
| \begin{minipage}[t]{0.4\textwidth} | ||
| \begin{align}\label{grm:nestedbrs_mcfg} | ||
| S(axb) & \leftarrow S(x) \nonumber \\ | ||
| S(\varepsilon) & \leftarrow | ||
| \end{align} | ||
| \end{minipage} | ||
| \item язык Дика на одном типе скобок(\ref{grm:d1_cfg} и \ref{grm:d1_mcfg}, соответственно).\\ | ||
| \begin{minipage}[t]{0.4\textwidth} | ||
| \begin{align}\label{grm:d1_cfg} | ||
| S &\to a S b S \nonumber \\ | ||
| S &\to \varepsilon | ||
| \end{align} | ||
| \end{minipage} | ||
| ~ | ||
| \begin{minipage}[t]{0.2\textwidth} | ||
| \end{minipage} | ||
| ~ | ||
| \begin{minipage}[t]{0.4\textwidth} | ||
| \begin{align}\label{grm:d1_mcfg} | ||
| S(ax_1bx_2) & \leftarrow S(x_1), S(x_2) \nonumber \\ | ||
| S(\varepsilon) & \leftarrow | ||
| \end{align} | ||
| \end{minipage} | ||
|
|
||
| \end{itemize} | ||
| MCFG позволяет правилам грамматики оперировать несколькими компонентами одновременно. Нетерминалы в MCFG могут выводить не одну строку, а кортеж из нескольких строк. | ||
| Также, можно произвольно комбинировать компоненты — переставлять их, дублировать, вставлять между ними терминалы. | ||
|
|
||
| Теперь рассмотрим грамматику для языка $L = \{a^nc^mb^nd^m \mid n \in \mathbb{N}, m \in \mathbb{N} \}$, не являющегося контекстно-свободным: | ||
| \begin{align*} | ||
| S(x_1 y_1 x_2 y_2) & \leftarrow P(x1,x2),Q(y_1,y_2) \\ | ||
| P(ax_1, bx_2) & \leftarrow P(x_1,x_2) \\ | ||
| P(\varepsilon,\varepsilon) &\leftarrow \\ | ||
| Q(cx_1, dx_2) & \leftarrow Q(x_1,x_2) \\ | ||
| Q(\varepsilon,\varepsilon) &\leftarrow | ||
| \end{align*} | ||
|
|
||
| В литературе можно еще встретить следующую запись правил вывода: | ||
| $$ | ||
| A_0 \leftarrow f[A_1, A_2,\ldots,A_q] | ||
| $$ | ||
| где $f$ — функция, аргументы и значения которой представляют собой кортежи строк, и | ||
| удовлетворяет следующим условиям: | ||
| \begin{enumerate} | ||
| \item Каждый компонент значения $f$ представляет собой конкатенацию некоторых константных строк и некоторых компонентов своих аргументов | ||
| \item Каждый компонент не может встречаться в $f$ более одного раза. | ||
| \end{enumerate} | ||
|
|
||
|
|
||
|
|
||
|
|
||
| Расширения MCFG | ||
| \begin{enumerate} | ||
| \item \textbf{PMCFG} (parallel MCFG) | ||
| $$ | ||
| A(x, ax) \leftarrow B(x) | ||
| $$ | ||
|
|
||
| \item | ||
| $$ | ||
| A(x) \leftarrow B(x),C(x) | ||
| $$ | ||
| \item \textbf{simpleLMG} | ||
| $$ | ||
| A(x, x) \leftarrow B(x),C(x) | ||
| $$ | ||
| \end{enumerate} | ||
| Приведём примеры многокомпонентных контекстно-свободных грамматик. | ||
| Для начала рассмотрим грамматики для известных нам контекстно-свободных языков и перепишем их в MCFG грамматику: | ||
|
|
||
| $MCFL \varsubsetneq PMCFL \varsubsetneq simpleLMG = P$ | ||
|
|
||
| $\{a^{2^n} \mid n\geq 0\} \in PMCFL - MCFL $ | ||
|
|
||
| $S(xx) \leftarrow S(x)$ | ||
|
|
||
| $S(a) \leftarrow $ | ||
| \begin{itemize} | ||
| \item \textbf{Язык вложенных скобок} | ||
|
|
||
| Разновидности MCFG | ||
| \begin{itemize} | ||
| \item \textbf{Неудаляющая} --- $\forall i \in \{i,\ldots,n\}, j\in \{1,\ldots,k_i\} \ x^i_j \text{ используется в } s_1,\ldots,s_k $ | ||
| \item \textbf{Непереставляющая} --- $\forall i \in \{i,\ldots,n\}, j,k\in \{1,\ldots,k_i\}, \text{если} j < k, \text{ то } x^i_j \text{ встречается в } s_1,\ldots,s_k \text{ перед } x^i_k$ | ||
| \item \textbf{Well-nested} --- неудаляющая, непереставляющая и | ||
| \begin{align*} | ||
| &\forall i,i' \in \{i,\ldots,n\}, i\neq i', \\ | ||
| &j\in \{1,\ldots,k_i-1\}, j\in \{1,\ldots,k_{i'}-1\},\\ | ||
| &s_1\cdots s_k \notin (\Sigma \cup X)^* x^i_j (\Sigma \cup X)^* x^{i'}_{j'} (\Sigma \cup X)^* x^i_{j+1} (\Sigma \cup X)^* x^{i'}_{j'+1}(\Sigma \cup X)^* | ||
| S &\rightarrow aSb &\quad& S(axb) \leftarrow S(x) \\ | ||
| S &\rightarrow \varepsilon &\quad& S(\varepsilon) \leftarrow | ||
| \end{align*} | ||
| \end{itemize} | ||
|
|
||
| Пример well-nested MCFG | ||
| \begin{itemize} | ||
| %\item[\faCheck] [\faTimes] | ||
| \item[\faCheck] $A(\highlight[pink]{x_1},\highlight{z_1,z_2},\highlight[pink]{x_2},\highlight[green]{y_1,y_2,y_3},\highlight[pink]{x_3}) \leftarrow B(x_1,x_2,x_3),C(y_1,y_2,y_3),D(z_1,z_2)$ | ||
| \item[\faTimes] $A(\highlight{z_1},\highlight[pink]{x_1},\highlight[green]{y_1},\highlight[pink]{x_2},\highlight{z_2},\highlight[green]{y_2},\highlight[pink]{x_3},\highlight[green]{y_3}) \leftarrow B(x_1,x_2,x_3),C(y_1,y_2,y_3),D(z_1,z_2)$ | ||
| \end{itemize} | ||
| \item \textbf{Язык Дика на одном типе скобок} | ||
|
|
||
| \begin{theorem}[genaral MCFG] | ||
| \begin{align*} | ||
| &\forall L \in \text{m-MCFG } \exists n \geq 1 \ \underline{\boldsymbol{\exists} z} \in L (|z| \geq n) \\ | ||
| &\exists \text{ разбиение } z=u_1 v_1 w_1 s_1 u_2 \ldots u_m v_m w_m s_m u_{m+1}, \Sigma|v_js_j| \geq 1 \\ | ||
| &\forall i \geq 0: z_i = u_1 v_1^i w_1 s_1^i u_2 \ldots u_m v_m^i w_m s_m^i u_{m+1} \in L | ||
| \begin{align*} | ||
| S &\rightarrow aSbS &\quad& S(ax_1bx_2) \leftarrow S(x_1), S(x_2) \\ | ||
| S &\rightarrow \varepsilon &\quad& S(\varepsilon) \leftarrow | ||
| \end{align*} | ||
| \end{theorem} | ||
|
|
||
| \begin{theorem}[well-nested MCFG] | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. А куда делись иерархии и прочее разное?
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Остатки попыток потестить CI, сейчас все вернется:) |
||
| \begin{align*} | ||
| &\forall L \in \text{m-wnMCFG } \exists n \geq 1 \ \underline{\boldsymbol{\forall} z} \in L (|z| \geq n) \\ | ||
| &\exists \text{ разбиение } z=u_1 v_1 w_1 s_1 u_2 \ldots u_m v_m w_m s_m u_{m+1}, \Sigma|v_js_j| \geq 1 \\ | ||
| &\forall i \geq 0: z_i = u_1 v_1^i w_1 s_1^i u_2 \ldots u_m v_m^i w_m s_m^i u_{m+1} \in L | ||
| \end{align*} | ||
| \end{theorem} | ||
|
|
||
| Иерархии внутри MCFL | ||
| \begin{theorem} | ||
| $(m*(k-1))$-$MCFL(r-k) \subseteq m$-$MCFL(r) $ если $1 \leq k \leq r - 2$ | ||
| \end{theorem} | ||
|
|
||
| \begin{theorem}[Seki et al] | ||
| $L_{m+1} = \{a_1^nb_1^n\cdots a_{m+1}^n b_{m+1}^n \mid n\in \mathbb{N}\}$ является $(m+1)$-$MCFL(1)$, но не является $m$-$MCFL(r)$ ни для какого $r$ | ||
| \end{theorem} | ||
|
|
||
|
|
||
| \begin{figure} | ||
| \includegraphics[width=\textwidth]{figures/mcfg/mcfg.pdf} | ||
| \label{fig:mcfg_hierarachy_1} | ||
| \caption{Иерархия по $m$} | ||
| \end{figure} | ||
|
|
||
| Иерархия для $m=1$ | ||
| \begin{theorem} | ||
| 1-MCFL = CFL | ||
| \end{theorem} | ||
|
|
||
| \begin{theorem} | ||
| 1-MCFL(1) $\varsubsetneq$ 1-MCFL(2) | ||
| \end{theorem} | ||
|
|
||
| \begin{theorem} | ||
| 1-MCFL($r$) = 1-MCFL($r+1$), $r\geq2$ | ||
| \end{theorem} | ||
|
|
||
| Иерархия для $m=2$ | ||
| \begin{theorem}[Ramow, Satta] | ||
| 2-MCFL(2) = 2-MCFL(3) | ||
| \end{theorem} | ||
|
|
||
| \begin{theorem} | ||
| Если $m>2$ или $r>2$, то m-MCFL(r) $\varsubsetneq$ m-MCFL(r+1) | ||
| \end{theorem} | ||
|
|
||
| \begin{figure} | ||
| \includegraphics[width=\textwidth]{figures/mcfg/mcfg_2.pdf} | ||
| \label{fig:mcfg_hierarachy_2} | ||
| \caption{Иерархия по $r$} | ||
| \end{figure} | ||
|
|
||
|
|
||
| Про MIX и $O_n$ | ||
| В MCFG-варианте ранг $S$ равен двум, то есть $S$ возвращает две компоненты. Такая грамматика записывается как 2-MCFG. | ||
|
|
||
| \begin{itemize} | ||
| \item $mix = \{\omega \in \{a,b\}^* \mid |\omega|_a = |\omega|_b \}$ --- контекстно-свободный язык | ||
|
|
||
| \item $MIX = \{\omega \in \{a,b,c\}^* \mid |\omega|_a = |\omega|_b = |\omega|_c\}$ --- MCFL? Хотелось верить, что нет | ||
| \begin{itemize} | ||
| \item \href{https://hal.inria.fr/inria-00564552/document}{MIX is a 2-MCFL and the word problem in $\mathbb{Z}^2$ is solved by a third-order collapsible pushdown automaton, Sylvain Salvati, 2011}~\cite{salvati:inria-00564552} | ||
| \end{itemize} | ||
| \item $O_2=\{\omega \in \{a,\overline{a},b,\overline{b}\}^* \mid |\omega|_a=|\omega|_{\overline{a}} \wedge |w|_b=|w|_{\overline{b}}\}$ | ||
| \item $O_n=\{\omega \in \{a_1,\overline{a_1},a_2,\overline{a_2},\ldots,a_n,\overline{a_n}\}^* \mid |\omega|_{a_1}=|\omega|_{\overline{a_1}} \wedge |w|_{a_2}=|w|_{\overline{a_2}} \wedge \cdots \wedge |w|_{a_n}=|w|_{\overline{a_n}}\}$ | ||
| \item $MIX_n = \{\omega \in \{a_1,\ldots,a_n\}^* \mid |\omega|_{a_1} = |\omega|_{a_2} =\cdots = |\omega|_{a_n}\}$ | ||
| \item $MIX_n$ регулярно эквивалентен $O_n$ (существует алгоритм построения грамматики одного языка по грамматике другого) | ||
| \begin{itemize} | ||
| \item \href{https://hal.archives-ouvertes.fr/hal-01771670/document}{$O_n$ is an n-MCFL, Sylvain Salvati, 2018}~\cite{GEBHARDT202241} | ||
| \end{itemize} | ||
| \end{itemize} | ||
|
|
||
| \end{itemize} | ||
|
|
||
| Теперь рассмотрим грамматику для языка $L = \{a^nc^mb^nd^m \mid n \in \mathbb{N}, m \in \mathbb{N} \}$, не являющегося контекстно-свободным, но выразимого в 2-MCFG(2) грамматике : | ||
| \begin{align*} | ||
| S(x_1 y_1 x_2 y_2) & \leftarrow P(x1,x2),Q(y_1,y_2) \\ | ||
| P(ax_1, bx_2) & \leftarrow P(x_1,x_2) \\ | ||
| P(\varepsilon,\varepsilon) &\leftarrow \\ | ||
| Q(cx_1, dx_2) & \leftarrow Q(x_1,x_2) \\ | ||
| Q(\varepsilon,\varepsilon) &\leftarrow | ||
| \end{align*} | ||
|
|
||
| \section{Расширения MCFG} | ||
|
|
||
| Как было сказано раннее, в MCFG каждая переменная в левой части правила встречается ровно один раз в его правой части, и наоборот. | ||
| Если мы откажемся от этого ограничения, мы получим более общие грамматики. | ||
|
|
||
| \begin{enumerate} | ||
| \item \textbf{PMCFG} (Parallel Multiple Context-Free Grammar).\\ | ||
| \\ | ||
| PMCFG задает некоторое ограничение над MCFG. | ||
| В правилах PMCFG компоненты должны комбинироваться параллельно, без перемешивания между разными нетерминалами: $i$-й компонент результата формируется только из $i$-х компонентов правой части. | ||
|
|
||
| $$ | ||
| A(xy, xz) \leftarrow B(x), C(y, z) | ||
| $$ | ||
|
|
||
| \item \textbf{sLMG (Simple LMG, Simple Literal Movement Grammar)}.\\ | ||
| \\ | ||
| sLMG является ограниченным подклассом LMG (Literal Movement Grammar). | ||
| Общее определение LMG допускает любую комбинацию переменных и терминалов в компонентах левой и правой части правила. | ||
| LMG являются грамматическими формализмами, основанными на предикатах над строковыми кортежами и расширяют класс контекстно-свободных грамматик. | ||
|
|
||
| Предикатом будем называть синтаксическую единицу вида $A(\alpha_1, \alpha_2, ..., \alpha_n)$, где A — нетерминальный символ (имя предиката), | ||
| $\alpha_1, \alpha_2, ..., \alpha_n$ --- аргументы (последовательности терминалов и переменных). | ||
|
|
||
| Правила (так же называемые клаузы, clauses) в такой грамматике имеют вид $\varphi \leftarrow \psi_1, \psi_2, ..., \psi_m$, где $\phi$ --- предикат в левой части (голова), | ||
| $\psi_1, \psi_2, ..., \psi_m$ --- последовательность предикатов в правой части (тело). Клауза может инстанцироваться (т.е конкретные значения будут подставлены в аргументы) путем замены каждой переменной в клаузе на строку.\\ | ||
| \\ | ||
| \textbf{Simple LMG} — это подкласс LMG, где каждая клауза (правило) должна удовлетворять трём синтаксическим ограничениям: | ||
| \begin{itemize} | ||
| \item Варианты леммы о накачке | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. И про леммы о накачке чот всё исчезло. |
||
| \item Представимость конкретных языков | ||
| \begin{itemize} | ||
| \item Многомерный язык Дика: \href{https://link.springer.com/chapter/10.1007/978-3-662-59620-3_5}{Towards a 2-Multiple Context-Free Grammar for the 3-Dimensional Dyck Language, Konstantinos Kogkalidis, Orestis Melkonian, 2019}~\cite{10.1007/978-3-662-59620-3_5} | ||
| \item Шафл языков Дика: \href{https://dl.acm.org/doi/10.1145/3093333.3009848}{Context-sensitive data-dependence analysis via linear conjunctive language reachability, Qirun Zhang, Zhendong Su et al, 2017}~\cite{10.1145/3009837.3009848} | ||
| \end{itemize} | ||
| \end{itemize} | ||
|
|
||
| \item Non-combinatorial (некомбинаторность). Аргументы каждого $\psi_i$ должны быть переменными. | ||
| \item Bottom-up nonerasing (восходящая неудаляемость). Все переменные из каждого $\psi_i$ также должны встречаться в $\varphi$. Это означает, что правая часть не может вводить новые переменные --- все переменные должны "приходить" из левой части. | ||
|
||
| \item Bottom-up linear (восходящая линейность). Ни одна переменная не встречается в $\varphi$ более одного раза. | ||
| \end{itemize} | ||
| \end{enumerate} | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не, лучше оставить её на пержнем месте. Но раскоментировать, да.