From 3366d6d6446586189358897d8b2fe6a69205ff3b Mon Sep 17 00:00:00 2001 From: Denis Kochetkov Date: Mon, 7 Apr 2025 18:26:26 +0300 Subject: [PATCH 01/10] init closure table --- ...21\217\320\267\320\272\320\276\320\262.md" | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 "\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" diff --git "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" new file mode 100644 index 0000000..511dc34 --- /dev/null +++ "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" @@ -0,0 +1,51 @@ +![[Иерархия Хомского.png]] + +# Замкнутость различных классов языков относительно операций + +| Класс\операция | $L_1 \cap L_2$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L^*$ | $L\cup Reg$ | $L\cap Reg$ | $\overline L$ | $h(L)$ | $h^{-1}(L)$ | $L^R$ | +| --------------------- | -------------- | ------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------ | --------------------------------------------- | ----- | ----------- | ----------- | ------------- | ------ | ----------- | ----- | +| Конечные языки | + | + | + | + | + | - | - | - | - | + | + | + | +| $Reg$ | | | | + | + | + | | | | | | | +| Ограниченные языки | | | | | | | | | | | | | +| $VPL$ | | | | | | | | | | | | | +| $LR(0)$ | | | | | | | | | | | | | +| $DCFL=$$=LR(k)=LR(1)$ | | | | | | | | | | | | | +| $LL(k)$ | | | | | | | | | | | | | +| $CFL$ | - | | | | | | | | | | | | +| $LinCFL$ | | | | | | | | | | | | | +| $LinConj$ | | | | | | | | | | | | | +| $Conj$ | | | | | | | | | | | | | +| $Rec$ | | | | | | | | | | | | | + +Расшифровка сокращений +- Reg - регулярные языки +- VPL(Visibly Pushdown Languages) +- DCFL - детерминированные контекстно свободные языки +- CFL(Contest Free Languages) - контекстно свободные языки +- LinCFL - линейные контекстно свободные языки +- LinConj - линейные конъюнктивные языки +- Conj - конъюнктивные языки +- Rec - рекурсивные языки + +# Док-во замкнутости конечных языков + + + + +# Док-во замкнутости для регулярных языков + +Регулярные языки **замкнуты** относительно $L_1L_2$, $L^*$ по структурному определению регулярных языков. + +# Док-во замкнутости для CFL +CFL **не замкнуты** относительно пересечения - контрпример - +Языки $\{a^nb^nc^*\mid n \in \mathbb N\}$ и $\{a^*b^nc^n\mid n \in \mathbb N\}$ при пересечении дают не кс язык $\{a^nb^nc^n \mid n \in \mathbb N\}$. + + + +CFL языки **замкнуты** относительно $L_1L_2$ по структурной индукции. +Пусть $S_1$ и $S_2$ - стартовые нетерминалы языков $L_1,L_2$. Тогда новый стартовый нетерминал для $L_1L_2$ определяется следующим образом: +$$S' \to S_1S_2$$ + +CFL языки **замкнуты** относительно $L^*$ по структурной индукции. +Для стартового нетерминала S новый стартовый нетерминал: +$$S' \to SS' \mid \varepsilon$$ \ No newline at end of file From f720e2666d437ed70b96d578e0fad61acc4209b4 Mon Sep 17 00:00:00 2001 From: Denis Kochetkov Date: Mon, 7 Apr 2025 18:50:52 +0300 Subject: [PATCH 02/10] finite languages --- ...76\320\262 \321\217\320\267\320\272\320\276\320\262.md" | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" index 511dc34..31f68cf 100644 --- "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" +++ "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" @@ -4,7 +4,7 @@ | Класс\операция | $L_1 \cap L_2$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L^*$ | $L\cup Reg$ | $L\cap Reg$ | $\overline L$ | $h(L)$ | $h^{-1}(L)$ | $L^R$ | | --------------------- | -------------- | ------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------ | --------------------------------------------- | ----- | ----------- | ----------- | ------------- | ------ | ----------- | ----- | -| Конечные языки | + | + | + | + | + | - | - | - | - | + | + | + | +| Конечные языки | + | + | + | + | + | - | - | + | - | + | + | + | | $Reg$ | | | | + | + | + | | | | | | | | Ограниченные языки | | | | | | | | | | | | | | $VPL$ | | | | | | | | | | | | | @@ -28,10 +28,15 @@ - Rec - рекурсивные языки # Док-во замкнутости конечных языков +Для операций $L_1\cap L_2$, $L_1\cup L_2$ имеет место объединение и пересечение конечных множеств, что есть конечное множество. +Элементы $L_1L_2$ мы можем отобразить в элементы множества $L_1 \times L_2$, которое для конечных $L_1,L_2$ является также конечным множеством, из чего следует замкнутость. +Конечные языки не замкнуты относительно $L^*, L\cup Reg, \overline L$ так как эти операции дают бесконечные множества языков: замыкание Клини дает бесконечное множество слов, объединение с бесконечным регулярным дает бесконечное множество слов, и дополнение к языку также дает счетное множество слов. +Пересечение $L\cap Reg$ дает также конечное множество, так как $L\cap Reg \subseteq L$, поэтому получившийся язык будет иметь размер не больше исходного. +Конечные языки замкнуты относительно $L^R$,$h(L)$ и $h^{-1}(L)$ , так как они не увеличивают число слов: каждое слово либо уникально, либо совпадает с другим образом. # Док-во замкнутости для регулярных языков Регулярные языки **замкнуты** относительно $L_1L_2$, $L^*$ по структурному определению регулярных языков. From f52837d6a01157c3535064918131cedc50bd155d Mon Sep 17 00:00:00 2001 From: Denis Kochetkov Date: Fri, 11 Apr 2025 08:55:32 +0300 Subject: [PATCH 03/10] regular closure: union, complement, morphism --- ...20\262 \321\217\320\267\320\272\320\276\320\262.md" | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" index 31f68cf..111dd3e 100644 --- "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" +++ "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" @@ -1,11 +1,11 @@ -![[Иерархия Хомского.png]] + # Замкнутость различных классов языков относительно операций | Класс\операция | $L_1 \cap L_2$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L^*$ | $L\cup Reg$ | $L\cap Reg$ | $\overline L$ | $h(L)$ | $h^{-1}(L)$ | $L^R$ | | --------------------- | -------------- | ------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------ | --------------------------------------------- | ----- | ----------- | ----------- | ------------- | ------ | ----------- | ----- | | Конечные языки | + | + | + | + | + | - | - | + | - | + | + | + | -| $Reg$ | | | | + | + | + | | | | | | | +| $Reg$ | | + | + | + | + | + | + | | + | + | | | | Ограниченные языки | | | | | | | | | | | | | | $VPL$ | | | | | | | | | | | | | | $LR(0)$ | | | | | | | | | | | | | @@ -39,7 +39,11 @@ Конечные языки замкнуты относительно $L^R$,$h(L)$ и $h^{-1}(L)$ , так как они не увеличивают число слов: каждое слово либо уникально, либо совпадает с другим образом. # Док-во замкнутости для регулярных языков -Регулярные языки **замкнуты** относительно $L_1L_2$, $L^*$ по структурному определению регулярных языков. +Регулярные языки **замкнуты** относительно $L_1L_2, L_1 \cup L_2, L^*$ по структурному определению регулярных языков - использовать соответсвенно конкатенацию, альтернативу и замыкание Клини для представления в виде регулярного выражения.(автоматически выполняется и $L\cup Reg \sim L_1 \cup L_2$) + +Для замкнутости относительно **дополнения** к языку $\overline L$, воспользуемся представлением регулярного языка в виде ДКА. Для построения дополнения к языку, инвертируем все состояния - финальные в нефинальные и наоборот. Таким образом все слова, что раньше принимались автоматом перестанут приниматься, а те что отвергались - начнут. Тем самым мы построили автомат для дополнения $\Rightarrow$ дополнение регулярно. + +Регулярные языки замкнуты относительно морфизмов, так как мы можем в регулярном выражении в соответствии с морфизмом каждое вхождение символов исходного алфавита заменить на его образ, тем самым мы получим регулярное выражение, которое разбирает новый язык. # Док-во замкнутости для CFL CFL **не замкнуты** относительно пересечения - контрпример - From c06d9923950d6404a1486231c3c1af56bbd62215 Mon Sep 17 00:00:00 2001 From: Denis Kochetkov Date: Fri, 11 Apr 2025 09:34:11 +0300 Subject: [PATCH 04/10] Chomsky hierarchy diagram init --- ...21\217\320\267\320\272\320\276\320\262.md" | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" index 111dd3e..9863bcc 100644 --- "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" +++ "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" @@ -1,5 +1,42 @@ - - +```dot +graph { + node[shape=none] + + label="Chomsky Hierarchy" + subgraph cluster_recursive{ + label="Recursive" + + subgraph cluster_Conj { + label="Conj" + subgraph cluster_CFL{ + label="CFL" + subgraph cluster_DCFL{ + label="DCFL" + + subgraph cluster_VPL{ + label="VPL" + + subgraph cluster_Reg{ + label="Reg" + + subgraph cluster_Finite{ + label="Finite Languages" + F1[label="{a,b,ab}"] + } + R1[label="a*b*"] + } + VPL1[label="Dyck Language"] + } + DCFL1[label="a^nb^{2n}"] + } + CFL[label="ww^R"] + } + Conj1[label="a^nb^nc^n"] + } + Rec1[label="Prime numbers"] + } +} +``` # Замкнутость различных классов языков относительно операций | Класс\операция | $L_1 \cap L_2$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L^*$ | $L\cup Reg$ | $L\cap Reg$ | $\overline L$ | $h(L)$ | $h^{-1}(L)$ | $L^R$ | From 9ed9f3776f93715377c2ce205ca6a57d475869a0 Mon Sep 17 00:00:00 2001 From: Denis Kochetkov Date: Fri, 11 Apr 2025 09:35:37 +0300 Subject: [PATCH 05/10] Bounded languages fix --- ...320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" index 9863bcc..6955247 100644 --- "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" +++ "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" @@ -43,7 +43,6 @@ graph { | --------------------- | -------------- | ------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------ | --------------------------------------------- | ----- | ----------- | ----------- | ------------- | ------ | ----------- | ----- | | Конечные языки | + | + | + | + | + | - | - | + | - | + | + | + | | $Reg$ | | + | + | + | + | + | + | | + | + | | | -| Ограниченные языки | | | | | | | | | | | | | | $VPL$ | | | | | | | | | | | | | | $LR(0)$ | | | | | | | | | | | | | | $DCFL=$$=LR(k)=LR(1)$ | | | | | | | | | | | | | @@ -52,6 +51,7 @@ graph { | $LinCFL$ | | | | | | | | | | | | | | $LinConj$ | | | | | | | | | | | | | | $Conj$ | | | | | | | | | | | | | +| Ограниченные языки | | | | | | | | | | | | | | $Rec$ | | | | | | | | | | | | | Расшифровка сокращений From e44dbe52027e4e9f2c69f16fd7b78fdf151bf33b Mon Sep 17 00:00:00 2001 From: Denis Kochetkov Date: Fri, 11 Apr 2025 09:53:15 +0300 Subject: [PATCH 06/10] structure closures --- ... \321\217\320\267\320\272\320\276\320\262.md" | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" index 6955247..0ed883a 100644 --- "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" +++ "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" @@ -47,10 +47,10 @@ graph { | $LR(0)$ | | | | | | | | | | | | | | $DCFL=$$=LR(k)=LR(1)$ | | | | | | | | | | | | | | $LL(k)$ | | | | | | | | | | | | | -| $CFL$ | - | | | | | | | | | | | | +| $CFL$ | - | + | + | + | + | + | | | | | | | | $LinCFL$ | | | | | | | | | | | | | | $LinConj$ | | | | | | | | | | | | | -| $Conj$ | | | | | | | | | | | | | +| $Conj$ | + | + | + | + | + | + | + | + | | + | | | | Ограниченные языки | | | | | | | | | | | | | | $Rec$ | | | | | | | | | | | | | @@ -87,11 +87,19 @@ CFL **не замкнуты** относительно пересечения - Языки $\{a^nb^nc^*\mid n \in \mathbb N\}$ и $\{a^*b^nc^n\mid n \in \mathbb N\}$ при пересечении дают не кс язык $\{a^nb^nc^n \mid n \in \mathbb N\}$. - CFL языки **замкнуты** относительно $L_1L_2$ по структурной индукции. Пусть $S_1$ и $S_2$ - стартовые нетерминалы языков $L_1,L_2$. Тогда новый стартовый нетерминал для $L_1L_2$ определяется следующим образом: $$S' \to S_1S_2$$ +Аналогично для $L_1 \cup L_2$ только используем $S' \to S_1 \mid S_2$. CFL языки **замкнуты** относительно $L^*$ по структурной индукции. Для стартового нетерминала S новый стартовый нетерминал: -$$S' \to SS' \mid \varepsilon$$ \ No newline at end of file +$$S' \to SS' \mid \varepsilon$$ + +# Док-во замкнутости для Conj +Свойства $L_1L_2, L_1 \cup L_2, L_1 \cap L_2, L^*$ вытекают из структурных конструкторов. + +Замкнутость относительно морфизмов получается по той же схеме, что и предыдущие классы языков - каждый терминал в грамматике заменяем на соответсвующую замену морфизма. + +Для доказательства обращения, рассмотрим контекстную грамматику в нормальной форме: правила имеют либо КС вид, либо вид $N_1 \to N_2 \& N_3$. Тогда обращение можно построить очень просто - обращаем все КС правила, а раскрытие конъюнктивных правил оставляем такое же. Полученная конъюнктивная грамматика будет разбирать обращенный язык. +==Док-во корректности построения== \ No newline at end of file From 8df3b83171f09a0ad38972f7feadf199cd5a2513 Mon Sep 17 00:00:00 2001 From: Denis Kochetkov Date: Fri, 11 Apr 2025 10:39:41 +0300 Subject: [PATCH 07/10] regular intersection, fix conj morphisms, add links --- ...21\217\320\267\320\272\320\276\320\262.md" | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" index 0ed883a..6b113c2 100644 --- "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" +++ "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" @@ -42,7 +42,7 @@ graph { | Класс\операция | $L_1 \cap L_2$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L^*$ | $L\cup Reg$ | $L\cap Reg$ | $\overline L$ | $h(L)$ | $h^{-1}(L)$ | $L^R$ | | --------------------- | -------------- | ------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------ | --------------------------------------------- | ----- | ----------- | ----------- | ------------- | ------ | ----------- | ----- | | Конечные языки | + | + | + | + | + | - | - | + | - | + | + | + | -| $Reg$ | | + | + | + | + | + | + | | + | + | | | +| $Reg$ | + | + | + | + | + | + | + | + | + | + | | | | $VPL$ | | | | | | | | | | | | | | $LR(0)$ | | | | | | | | | | | | | | $DCFL=$$=LR(k)=LR(1)$ | | | | | | | | | | | | | @@ -50,17 +50,17 @@ graph { | $CFL$ | - | + | + | + | + | + | | | | | | | | $LinCFL$ | | | | | | | | | | | | | | $LinConj$ | | | | | | | | | | | | | -| $Conj$ | + | + | + | + | + | + | + | + | | + | | | +| $Conj$ | + | + | + | + | + | + | + | + | | - | | | | Ограниченные языки | | | | | | | | | | | | | | $Rec$ | | | | | | | | | | | | | Расшифровка сокращений -- Reg - регулярные языки +- Reg - [[регулярный язык |регулярные языки]] - VPL(Visibly Pushdown Languages) - DCFL - детерминированные контекстно свободные языки -- CFL(Contest Free Languages) - контекстно свободные языки +- CFL(Contest Free Languages) - [[КС-язык|контекстно свободные языки]] - LinCFL - линейные контекстно свободные языки -- LinConj - линейные конъюнктивные языки +- $\text{LinConj} = \text{trellis automata}$ - линейные конъюнктивные языки - Conj - конъюнктивные языки - Rec - рекурсивные языки @@ -76,6 +76,12 @@ graph { Конечные языки замкнуты относительно $L^R$,$h(L)$ и $h^{-1}(L)$ , так как они не увеличивают число слов: каждое слово либо уникально, либо совпадает с другим образом. # Док-во замкнутости для регулярных языков +Регулярные языки замкнуты относительно пересечения $L_1 \cap L_2$. Для этого рассмотрим ДКА $A_i$ для $L_i$. $A = A_1 \cap A_2$ - новый "автомат-пересечение" +Состояния автомата - пары состояний $(s_1, s_2)$из $A_1$, $A_2$ +Переходы состояний - переходы $(s_1, s_2) \xrightarrow{a} (f_1,f_2)$ в случае если $s_1 \xrightarrow{a} f_1$ и $s_2 \xrightarrow{a} f_2$ +Финальные состояния - состояния, где каждый составляющий пары - финальное состояние в своем автомате. +Таким образом построенный автомат будет одновременно отслеживать состояния двух автоматов сразу, и будет принимать слово только тогда, когда оно принимается в обоих автоматах. %%вроде как если рассмотреть категорию автоматов, с морфизмами - а не знаю какими :( , то такой "автомат-пересечение" - произведение автоматов%% + Регулярные языки **замкнуты** относительно $L_1L_2, L_1 \cup L_2, L^*$ по структурному определению регулярных языков - использовать соответсвенно конкатенацию, альтернативу и замыкание Клини для представления в виде регулярного выражения.(автоматически выполняется и $L\cup Reg \sim L_1 \cup L_2$) Для замкнутости относительно **дополнения** к языку $\overline L$, воспользуемся представлением регулярного языка в виде ДКА. Для построения дополнения к языку, инвертируем все состояния - финальные в нефинальные и наоборот. Таким образом все слова, что раньше принимались автоматом перестанут приниматься, а те что отвергались - начнут. Тем самым мы построили автомат для дополнения $\Rightarrow$ дополнение регулярно. @@ -96,10 +102,15 @@ CFL языки **замкнуты** относительно $L^*$ по стру Для стартового нетерминала S новый стартовый нетерминал: $$S' \to SS' \mid \varepsilon$$ + + # Док-во замкнутости для Conj Свойства $L_1L_2, L_1 \cup L_2, L_1 \cap L_2, L^*$ вытекают из структурных конструкторов. Замкнутость относительно морфизмов получается по той же схеме, что и предыдущие классы языков - каждый терминал в грамматике заменяем на соответсвующую замену морфизма. +%% Для доказательства обращения, рассмотрим контекстную грамматику в нормальной форме: правила имеют либо КС вид, либо вид $N_1 \to N_2 \& N_3$. Тогда обращение можно построить очень просто - обращаем все КС правила, а раскрытие конъюнктивных правил оставляем такое же. Полученная конъюнктивная грамматика будет разбирать обращенный язык. -==Док-во корректности построения== \ No newline at end of file +Док-во корректности построения +%% + From fd63948f00627df17afd9ad8e683c0e6a1705a69 Mon Sep 17 00:00:00 2001 From: Denis Kochetkov Date: Mon, 28 Jul 2025 12:07:17 +0300 Subject: [PATCH 08/10] erase morphisms fix --- ...21\217\320\267\320\272\320\276\320\262.md" | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" index 6b113c2..2c2fb5a 100644 --- "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" +++ "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" @@ -39,20 +39,20 @@ graph { ``` # Замкнутость различных классов языков относительно операций -| Класс\операция | $L_1 \cap L_2$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L^*$ | $L\cup Reg$ | $L\cap Reg$ | $\overline L$ | $h(L)$ | $h^{-1}(L)$ | $L^R$ | -| --------------------- | -------------- | ------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------ | --------------------------------------------- | ----- | ----------- | ----------- | ------------- | ------ | ----------- | ----- | -| Конечные языки | + | + | + | + | + | - | - | + | - | + | + | + | -| $Reg$ | + | + | + | + | + | + | + | + | + | + | | | -| $VPL$ | | | | | | | | | | | | | -| $LR(0)$ | | | | | | | | | | | | | -| $DCFL=$$=LR(k)=LR(1)$ | | | | | | | | | | | | | -| $LL(k)$ | | | | | | | | | | | | | -| $CFL$ | - | + | + | + | + | + | | | | | | | -| $LinCFL$ | | | | | | | | | | | | | -| $LinConj$ | | | | | | | | | | | | | -| $Conj$ | + | + | + | + | + | + | + | + | | - | | | -| Ограниченные языки | | | | | | | | | | | | | -| $Rec$ | | | | | | | | | | | | | +| Класс\операция | $L_1 \cap L_2$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L^*$ | $L\cup Reg$ | $L\cap Reg$ | $\overline L$ | $h(L)$ | $h(L)$ нестирающие | $h^{-1}(L)$ | $h^{-1}(L)$ нестирающие | $L^R$ | +| --------------------- | -------------- | ------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------ | --------------------------------------------- | ----- | ----------- | ----------- | ------------- | ------ | ------------------ | ----------- | ----------------------- | ----- | +| Конечные языки | + | + | + | + | + | - | - | + | - | + | + | - | + | + | +| $Reg$ | + | + | + | + | + | + | + | + | + | + | | | | | +| $VPL$ | | | | | | | | | | | | | | | +| $LR(0)$ | | | | | | | | | | | | | | | +| $DCFL=$$=LR(k)=LR(1)$ | | | | | | | | | | | | | | | +| $LL(k)$ | | | | | | | | | | | | | | | +| $CFL$ | - | + | + | + | + | + | | | | | | | | | +| $LinCFL$ | | | | | | | | | | | | | | | +| $LinConj$ | | | | | | | | | | | | | | | +| $Conj$ | + | + | + | + | + | + | + | + | | | | | | | +| Ограниченные языки | | | | | | | | | | | | | | | +| $Rec$ | | | | | | | | | | | | | | | Расшифровка сокращений - Reg - [[регулярный язык |регулярные языки]] @@ -73,7 +73,12 @@ graph { Пересечение $L\cap Reg$ дает также конечное множество, так как $L\cap Reg \subseteq L$, поэтому получившийся язык будет иметь размер не больше исходного. -Конечные языки замкнуты относительно $L^R$,$h(L)$ и $h^{-1}(L)$ , так как они не увеличивают число слов: каждое слово либо уникально, либо совпадает с другим образом. +Конечные языки замкнуты относительно $L^R$,$h(L)$ и нестирающие $h^{-1}(L)$ , так как они не увеличивают число слов: каждое слово либо уникально, либо совпадает с другим образом. + +Для стирающих обратных морфизмов $h^{-1}(L)$ уже не выполняется замкнутость в классе конечных языков. Возьмем пример простейшего стирающего морфизма для языка над алфавитом $\{a,b\}$. +Пусть +$$h(x) = \begin{cases} a, \text{если } x = a \\ \varepsilon , \text{если } x = b\end{cases}$$ +И рассмотрим простейший конечный язык, состоящий из одного слова $\{a\}$. Тогда, при применении к нему обратного морфизма мы получим уже регулярный язык $b^*ab^*$. В общем случае, стирающие обратные морфизмы позволяют произвольным образом добавлять стираемые символы между любыми символами прообраза слова. Таким образом мы получаем бесконечный язык, поэтому замкнутость не выполняется. # Док-во замкнутости для регулярных языков Регулярные языки замкнуты относительно пересечения $L_1 \cap L_2$. Для этого рассмотрим ДКА $A_i$ для $L_i$. $A = A_1 \cap A_2$ - новый "автомат-пересечение" From 770bc19f60a5507bb84f29085e34c04acc818300 Mon Sep 17 00:00:00 2001 From: Denis Kochetkov Date: Mon, 28 Jul 2025 12:18:58 +0300 Subject: [PATCH 09/10] style fix --- ...21\217\320\267\320\272\320\276\320\262.md" | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" index 2c2fb5a..d8e9db1 100644 --- "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" +++ "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" @@ -39,20 +39,20 @@ graph { ``` # Замкнутость различных классов языков относительно операций -| Класс\операция | $L_1 \cap L_2$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1 \cup L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L^*$ | $L\cup Reg$ | $L\cap Reg$ | $\overline L$ | $h(L)$ | $h(L)$ нестирающие | $h^{-1}(L)$ | $h^{-1}(L)$ нестирающие | $L^R$ | -| --------------------- | -------------- | ------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------ | --------------------------------------------- | ----- | ----------- | ----------- | ------------- | ------ | ------------------ | ----------- | ----------------------- | ----- | -| Конечные языки | + | + | + | + | + | - | - | + | - | + | + | - | + | + | -| $Reg$ | + | + | + | + | + | + | + | + | + | + | | | | | -| $VPL$ | | | | | | | | | | | | | | | -| $LR(0)$ | | | | | | | | | | | | | | | -| $DCFL=$$=LR(k)=LR(1)$ | | | | | | | | | | | | | | | -| $LL(k)$ | | | | | | | | | | | | | | | -| $CFL$ | - | + | + | + | + | + | | | | | | | | | -| $LinCFL$ | | | | | | | | | | | | | | | -| $LinConj$ | | | | | | | | | | | | | | | -| $Conj$ | + | + | + | + | + | + | + | + | | | | | | | -| Ограниченные языки | | | | | | | | | | | | | | | -| $Rec$ | | | | | | | | | | | | | | | +| Класс\операция | $\mathcal{L}_1 \cap \mathcal{L}_2$ | $\mathcal{L}_1 \cup \mathcal{L}_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $\mathcal{L}_1 \cup \mathcal{L}_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $\mathcal{L}_1\mathcal{L}_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $\mathcal{L}^*$ | $\mathcal{L}\cup Reg$ | $\mathcal{L}\cap Reg$ | $\overline {\mathcal{L}}$ | $h(\mathcal{L})$ | $h(\mathcal{L})$ нестирающие | $h^{-1}(\mathcal{L})$ | $h^{-1}(\mathcal{L})$ нестирающие | $\mathcal{L}^R$ | +| --------------------- | ---------------------------------- | -------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------- | --------------- | --------------------- | --------------------- | ------------------------- | ---------------- | ---------------------------- | --------------------- | --------------------------------- | --------------- | +| Конечные языки | + | + | + | + | + | - | - | + | - | + | + | - | + | + | +| $Reg$ | + | + | + | + | + | + | + | + | + | + | | | | | +| $VPL$ | | | | | | | | | | | | | | | +| $LR(0)$ | | | | | | | | | | | | | | | +| $DCFL=$$=LR(k)=LR(1)$ | | | | | | | | | | | | | | | +| $LL(k)$ | | | | | | | | | | | | | | | +| $CFL$ | - | + | + | + | + | + | | | | | | | | | +| $LinCFL$ | | | | | | | | | | | | | | | +| $LinConj$ | | | | | | | | | | | | | | | +| $Conj$ | + | + | + | + | + | + | + | + | | | | | | | +| Ограниченные языки | | | | | | | | | | | | | | | +| $Rec$ | | | | | | | | | | | | | | | Расшифровка сокращений - Reg - [[регулярный язык |регулярные языки]] @@ -65,54 +65,54 @@ graph { - Rec - рекурсивные языки # Док-во замкнутости конечных языков -Для операций $L_1\cap L_2$, $L_1\cup L_2$ имеет место объединение и пересечение конечных множеств, что есть конечное множество. +Для операций $\mathcal{L}_1\cap \mathcal{L}_2$, $\mathcal{L}_1\cup \mathcal{L}_2$ имеет место объединение и пересечение конечных множеств, что есть конечное множество. -Элементы $L_1L_2$ мы можем отобразить в элементы множества $L_1 \times L_2$, которое для конечных $L_1,L_2$ является также конечным множеством, из чего следует замкнутость. +Элементы $\mathcal{L}_1\mathcal{L}_2$ мы можем отобразить в элементы множества $\mathcal{L}_1 \times \mathcal{L}_2$, которое для конечных $\mathcal{L}_1,\mathcal{L}_2$ является также конечным множеством, из чего следует замкнутость. -Конечные языки не замкнуты относительно $L^*, L\cup Reg, \overline L$ так как эти операции дают бесконечные множества языков: замыкание Клини дает бесконечное множество слов, объединение с бесконечным регулярным дает бесконечное множество слов, и дополнение к языку также дает счетное множество слов. +Конечные языки не замкнуты относительно $\mathcal{L}^*, \mathcal{L}\cup Reg, \overline{\mathcal{L}}$ так как эти операции дают бесконечные множества языков: замыкание Клини дает бесконечное множество слов, объединение с бесконечным регулярным дает бесконечное множество слов, и дополнение к языку также дает счетное множество слов. -Пересечение $L\cap Reg$ дает также конечное множество, так как $L\cap Reg \subseteq L$, поэтому получившийся язык будет иметь размер не больше исходного. +Пересечение $\mathcal{L}\cap Reg$ дает также конечное множество, так как $\mathcal{L}\cap Reg \subseteq \mathcal{L}$, поэтому получившийся язык будет иметь размер не больше исходного. -Конечные языки замкнуты относительно $L^R$,$h(L)$ и нестирающие $h^{-1}(L)$ , так как они не увеличивают число слов: каждое слово либо уникально, либо совпадает с другим образом. +Конечные языки замкнуты относительно $\mathcal{L}^R$,$h(\mathcal{L})$ и нестирающие $h^{-1}(\mathcal{L})$ , так как они не увеличивают число слов: каждое слово либо уникально, либо совпадает с другим образом. -Для стирающих обратных морфизмов $h^{-1}(L)$ уже не выполняется замкнутость в классе конечных языков. Возьмем пример простейшего стирающего морфизма для языка над алфавитом $\{a,b\}$. +Для стирающих обратных морфизмов $h^{-1}(\mathcal{L})$ уже не выполняется замкнутость в классе конечных языков. Возьмем пример простейшего стирающего морфизма для языка над алфавитом $\{a,b\}$. Пусть $$h(x) = \begin{cases} a, \text{если } x = a \\ \varepsilon , \text{если } x = b\end{cases}$$ И рассмотрим простейший конечный язык, состоящий из одного слова $\{a\}$. Тогда, при применении к нему обратного морфизма мы получим уже регулярный язык $b^*ab^*$. В общем случае, стирающие обратные морфизмы позволяют произвольным образом добавлять стираемые символы между любыми символами прообраза слова. Таким образом мы получаем бесконечный язык, поэтому замкнутость не выполняется. # Док-во замкнутости для регулярных языков -Регулярные языки замкнуты относительно пересечения $L_1 \cap L_2$. Для этого рассмотрим ДКА $A_i$ для $L_i$. $A = A_1 \cap A_2$ - новый "автомат-пересечение" +Регулярные языки замкнуты относительно пересечения $\mathcal{L}_1 \cap \mathcal{L}_2$. Для этого рассмотрим ДКА $A_i$ для $\mathcal{L}_i$. $A = A_1 \cap A_2$ - новый "автомат-пересечение" Состояния автомата - пары состояний $(s_1, s_2)$из $A_1$, $A_2$ Переходы состояний - переходы $(s_1, s_2) \xrightarrow{a} (f_1,f_2)$ в случае если $s_1 \xrightarrow{a} f_1$ и $s_2 \xrightarrow{a} f_2$ Финальные состояния - состояния, где каждый составляющий пары - финальное состояние в своем автомате. Таким образом построенный автомат будет одновременно отслеживать состояния двух автоматов сразу, и будет принимать слово только тогда, когда оно принимается в обоих автоматах. %%вроде как если рассмотреть категорию автоматов, с морфизмами - а не знаю какими :( , то такой "автомат-пересечение" - произведение автоматов%% -Регулярные языки **замкнуты** относительно $L_1L_2, L_1 \cup L_2, L^*$ по структурному определению регулярных языков - использовать соответсвенно конкатенацию, альтернативу и замыкание Клини для представления в виде регулярного выражения.(автоматически выполняется и $L\cup Reg \sim L_1 \cup L_2$) +Регулярные языки **замкнуты** относительно $\mathcal{L}_1\mathcal{L}_2, \mathcal{L}_1 \cup \mathcal{L}_2, \mathcal{L}^*$ по структурному определению регулярных языков - использовать соответсвенно конкатенацию, альтернативу и замыкание Клини для представления в виде регулярного выражения.(автоматически выполняется и $\mathcal{L}\cup Reg \sim \mathcal{L}_1 \cup \mathcal{L}_2$) -Для замкнутости относительно **дополнения** к языку $\overline L$, воспользуемся представлением регулярного языка в виде ДКА. Для построения дополнения к языку, инвертируем все состояния - финальные в нефинальные и наоборот. Таким образом все слова, что раньше принимались автоматом перестанут приниматься, а те что отвергались - начнут. Тем самым мы построили автомат для дополнения $\Rightarrow$ дополнение регулярно. +Для замкнутости относительно **дополнения** к языку $\overline{ \mathcal{L}}$, воспользуемся представлением регулярного языка в виде ДКА. Для построения дополнения к языку, инвертируем все состояния - финальные в нефинальные и наоборот. Таким образом все слова, что раньше принимались автоматом перестанут приниматься, а те что отвергались - начнут. Тем самым мы построили автомат для дополнения $\Rightarrow$ дополнение регулярно. Регулярные языки замкнуты относительно морфизмов, так как мы можем в регулярном выражении в соответствии с морфизмом каждое вхождение символов исходного алфавита заменить на его образ, тем самым мы получим регулярное выражение, которое разбирает новый язык. - # Док-во замкнутости для CFL CFL **не замкнуты** относительно пересечения - контрпример - Языки $\{a^nb^nc^*\mid n \in \mathbb N\}$ и $\{a^*b^nc^n\mid n \in \mathbb N\}$ при пересечении дают не кс язык $\{a^nb^nc^n \mid n \in \mathbb N\}$. -CFL языки **замкнуты** относительно $L_1L_2$ по структурной индукции. -Пусть $S_1$ и $S_2$ - стартовые нетерминалы языков $L_1,L_2$. Тогда новый стартовый нетерминал для $L_1L_2$ определяется следующим образом: +CFL языки **замкнуты** относительно $\mathcal{L}_1\mathcal{L}_2$ по структурной индукции. +Пусть $S_1$ и $S_2$ - стартовые нетерминалы языков $\mathcal{L}_1,\mathcal{L}_2$. Тогда новый стартовый нетерминал для $\mathcal{L}_1\mathcal{L}_2$ определяется следующим образом: $$S' \to S_1S_2$$ -Аналогично для $L_1 \cup L_2$ только используем $S' \to S_1 \mid S_2$. +Аналогично для $\mathcal{L}_1 \cup \mathcal{L}_2$ только используем $S' \to S_1 \mid S_2$. -CFL языки **замкнуты** относительно $L^*$ по структурной индукции. +CFL языки **замкнуты** относительно $\mathcal{L}^*$ по структурной индукции. Для стартового нетерминала S новый стартовый нетерминал: $$S' \to SS' \mid \varepsilon$$ # Док-во замкнутости для Conj -Свойства $L_1L_2, L_1 \cup L_2, L_1 \cap L_2, L^*$ вытекают из структурных конструкторов. +Свойства $\mathcal{L}_1\mathcal{L}_2, \mathcal{L}_1 \cup \mathcal{L}_2, \mathcal{L}_1 \cap \mathcal{L}_2, \mathcal{L}^*$ вытекают из структурных конструкторов. -Замкнутость относительно морфизмов получается по той же схеме, что и предыдущие классы языков - каждый терминал в грамматике заменяем на соответсвующую замену морфизма. +>[!error] +> Замкнутость относительно морфизмов получается по той же схеме, что и предыдущие классы языков - каждый терминал в грамматике заменяем на соответсвующую замену морфизма. %% Для доказательства обращения, рассмотрим контекстную грамматику в нормальной форме: правила имеют либо КС вид, либо вид $N_1 \to N_2 \& N_3$. Тогда обращение можно построить очень просто - обращаем все КС правила, а раскрытие конъюнктивных правил оставляем такое же. Полученная конъюнктивная грамматика будет разбирать обращенный язык. From 1653ebe64749e3a96fd38baac74dfae059e9934f Mon Sep 17 00:00:00 2001 From: Denis Kochetkov Date: Mon, 28 Jul 2025 12:31:12 +0300 Subject: [PATCH 10/10] reg reverse closure --- ...2 \321\217\320\267\320\272\320\276\320\262.md" | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" index d8e9db1..3d6c8ad 100644 --- "a/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" +++ "b/\320\242\320\265\320\276\321\200\320\270\321\217/\320\227\320\260\320\274\320\272\320\275\321\203\321\202\320\276\321\201\321\202\321\214 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \321\217\320\267\320\272\320\276\320\262.md" @@ -42,7 +42,7 @@ graph { | Класс\операция | $\mathcal{L}_1 \cap \mathcal{L}_2$ | $\mathcal{L}_1 \cup \mathcal{L}_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $\mathcal{L}_1 \cup \mathcal{L}_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $L_1L_2$,
$\Sigma_1\cap\Sigma_2\neq\emptyset$ | $\mathcal{L}_1\mathcal{L}_2$,
$\Sigma_1\cap\Sigma_2=\emptyset$ | $\mathcal{L}^*$ | $\mathcal{L}\cup Reg$ | $\mathcal{L}\cap Reg$ | $\overline {\mathcal{L}}$ | $h(\mathcal{L})$ | $h(\mathcal{L})$ нестирающие | $h^{-1}(\mathcal{L})$ | $h^{-1}(\mathcal{L})$ нестирающие | $\mathcal{L}^R$ | | --------------------- | ---------------------------------- | -------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------- | --------------- | --------------------- | --------------------- | ------------------------- | ---------------- | ---------------------------- | --------------------- | --------------------------------- | --------------- | | Конечные языки | + | + | + | + | + | - | - | + | - | + | + | - | + | + | -| $Reg$ | + | + | + | + | + | + | + | + | + | + | | | | | +| $Reg$ | + | + | + | + | + | + | + | + | + | + | + | | | + | | $VPL$ | | | | | | | | | | | | | | | | $LR(0)$ | | | | | | | | | | | | | | | | $DCFL=$$=LR(k)=LR(1)$ | | | | | | | | | | | | | | | @@ -92,6 +92,19 @@ $$h(x) = \begin{cases} a, \text{если } x = a \\ \varepsilon , \text{если Для замкнутости относительно **дополнения** к языку $\overline{ \mathcal{L}}$, воспользуемся представлением регулярного языка в виде ДКА. Для построения дополнения к языку, инвертируем все состояния - финальные в нефинальные и наоборот. Таким образом все слова, что раньше принимались автоматом перестанут приниматься, а те что отвергались - начнут. Тем самым мы построили автомат для дополнения $\Rightarrow$ дополнение регулярно. Регулярные языки замкнуты относительно морфизмов, так как мы можем в регулярном выражении в соответствии с морфизмом каждое вхождение символов исходного алфавита заменить на его образ, тем самым мы получим регулярное выражение, которое разбирает новый язык. + +%%обратные морфизмы%% + +Для доказательства замкнутости регулярных языков относительно обращения воспользуемся ДКА, распознающим заданный язык $\mathcal L$. Пусть ДКА задан как $(\Sigma, Q, q_0, F, \delta)$, где $\Sigma$ - алфавит, $Q$ - множество состояний, $q_0 \in Q$ - начальное состояние, $F \subset Q$ - множество конечных состояний, $\delta: Q \times \Sigma \to Q$ - функция переходов в автомате, тогда +Строим НКА, распознающий обращенный язык по следующему принципу: +- В ДКА обращаем все стрелки; +- Делаем новым единственным финальным состоянием $q_0$; +- Добавляем новое начальное состояние $q_0'$ и строим от него переходы к всем состояниям $q \in F$ по пустому слову $\varepsilon$. + +Таким образом построенный нами НКА будет распознавать обращенный регулярный язык. +Почему построение верно? +Потому что при распознавании обращенного слова новым автоматом мы будем проходить путь по графу автомата, соответствующий обращенному пути в исходном автомате. При этом путь будет идти от одного из финальных состояний в начальное. Новое начальное состояние нужно лишь для соответствия определению автомата, по сути оно говорит, что мы недетерминировано выбираем одно из начальных состояний. + # Док-во замкнутости для CFL CFL **не замкнуты** относительно пересечения - контрпример - Языки $\{a^nb^nc^*\mid n \in \mathbb N\}$ и $\{a^*b^nc^n\mid n \in \mathbb N\}$ при пересечении дают не кс язык $\{a^nb^nc^n \mid n \in \mathbb N\}$.