-
Notifications
You must be signed in to change notification settings - Fork 0
rk 1 : variants 1, 2, 4, 6 #10
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
Open
HumsterProgrammer
wants to merge
19
commits into
main
Choose a base branch
from
Kochetkov
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
19 commits
Select commit
Hold shift + click to select a range
78ab2ab
add variant 2, 6. minor fixes 5, 8
HumsterProgrammer 5a3e1d5
var 1, changes var 2
HumsterProgrammer 526ba84
add 1, 3 var 4
HumsterProgrammer f18332c
fix var 1
HumsterProgrammer b08b84c
minor fix
HumsterProgrammer 9400709
automata changes
HumsterProgrammer df917d7
var 1 fix
HumsterProgrammer bc15f5d
var 2, 4,6 fixes
HumsterProgrammer 3ba5e9c
var 2 fixes + task 3
HumsterProgrammer 2267e21
minor fixes
HumsterProgrammer cc02f27
var 6: task 3
HumsterProgrammer 5bdefc0
task 4.2: Myhill–Nerode theorem
HumsterProgrammer d7735c0
4.2 reg l2 + dfa l1
HumsterProgrammer 577e5c6
task 4.2
HumsterProgrammer cd43bd6
minor fixes
HumsterProgrammer 5292e5a
format fixes + minimize 4.2
HumsterProgrammer 72da310
task 2.3 fixes
HumsterProgrammer c48287d
fix
HumsterProgrammer 7da5ac9
fix prime trees
HumsterProgrammer File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,5 @@ | ||
| ### 1. Язык $\{w \big{|} |w|_{ab} = |w|_{bba} \& |w|_{bbb} = 0 \& w \in \{a, b\}^*\}$. | ||
| ### 2. Язык слов, первая треть которых не равна последней трети. | ||
| ### 3. Язык истинных выражений, представляющих собой утверждение вида $N_1 + N_2 > N_0$, где $N_0, N_1, и N_2$ — двоичные числа. | ||
| ### 3. Язык истинных выражений, представляющих собой утверждение вида $N_1 + N_2 > N_0$, где $N_0, N_1,\text{ и }N_2$ — двоичные числа. | ||
|
|
||
| #пустой |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,89 @@ | ||
| ### 1. Язык логических формул $c \Rightarrow$ и без скобок, содержащих только константы $0$ и $1$, таких что их значение равно $1$. Считаем следование правоассоциативным, т.е. $1 \Rightarrow 0 \Rightarrow 0$понимаем как $1 \Rightarrow (0 \Rightarrow 0)$. | ||
| ### 2. Язык $$\{w_1 v w_2 \big{|} w_2 = h (w_1)h(w_1) \& w_i \in \{a, b\}^* \& v \in b^*a^*\}$$, где h - гомоморфизм, определённый правилами $h(a) = aa, h(b) = a$. | ||
| ### 1. Язык логических формул с $\Rightarrow$ и без скобок, содержащих только константы $0$ и $1$, таких что их значение равно $1$. Считаем следование правоассоциативным, т.е. $1 \Rightarrow 0 \Rightarrow 0$ понимаем как $1 \Rightarrow (0 \Rightarrow 0)$. | ||
|
|
||
| Если справа 1, то слева может быть все что угодно. | ||
| Если справа 0, то слева только 0. | ||
|
|
||
| Соответственно, можно регулярку строить рекурсивно, относительно правого выражения. | ||
| - Если справа $0\Rightarrow0$, $0\Rightarrow1$, $1\Rightarrow1$, то слева может быть любое регулярное выражение | ||
| - Если справа стоит $1\Rightarrow0$, то слева должно быть $0\Rightarrow X$, где X - это ложное выражение | ||
|
|
||
| Регулярка делает вывод о разборе по первому символу. Если символ 0, то формула будет истинной при любом суффиксе. Если 1, то истина только если истин суффикс. | ||
| Выведем регулярку через грамматику | ||
| ``` | ||
| S -> 0 => T | 1 => S | 1 => 1 | 0 => 0 | 0 => 1 // верное логическое выражение | ||
| T -> 0 => T | 1 => 1 | 1 => 1 | 0 => 0 | 0 => 1 | 1 => 0 // любое логическое выражение | ||
| ``` | ||
|
|
||
| Таким образом можно построить НКА, разбирающий язык(приведен без промежуточных состояний): | ||
| ```dot | ||
| digraph{ | ||
| rankdir=LR | ||
| node[shape=circle] | ||
| point[shape=point] | ||
| F[shape=doublecircle] | ||
|
|
||
| point -> S | ||
|
|
||
| S -> F [label="1=>1"] | ||
| S -> F [label="0=>1"] | ||
| S -> F [label="0=>0"] | ||
| S -> S [label="1=>"] | ||
| S,T -> T [label="0=>"] | ||
| T -> T [label="1=>"] | ||
| T -> F [label="1=>1"] | ||
| T -> F [label="0=>1"] | ||
| T -> F [label="0=>0"] | ||
| T -> F [label="1=>0"] | ||
| } | ||
| ``` | ||
|
|
||
| Далее при необходимости можно добавить промежуточные состояния и детерминизирвать. | ||
|
|
||
| ### 2. Язык $\{w_1 v w_2 \big{|} w_2 = h (w_1)h(w_1) \& w_i \in \{a, b\}^* \& v \in b^*a^*\}$, где h - гомоморфизм, определённый правилами $h(a) = aa, h(b) = a$. | ||
|
|
||
| Грамматика | ||
| ``` | ||
| S -> aSaaaa | bSaa | T | ||
| T -> BA | ||
| A -> aA | ε | ||
| B -> bB | ε | ||
| ``` | ||
| Так допустимо, так как образы гомоморфизма комутативны, то есть можно спокойно перемещать так как необходимо и нужно учитывать только количество. Поэтому структуру последовательных слов преобразуем в комутативную ей скобочную структуру. | ||
| $$S \to aS\underbrace{aa}_{h(a)}\underbrace{aa}_{h(a)} \mid bS\underbrace{a}_{h(b)}\underbrace{a}_{h(b)} \mid T$$ | ||
| ### 3. Язык деревьев арифметических выражений с операциями бинарного сложения и умножения, а также одноразрядными числами, таких, что они вычисляют простое число. | ||
| В-первых, определим как задается язык деревьев арифметических выражений, вычисляющих простое число $p$. | ||
| В листьях может быть одноразрядные числа $0,1,2,3,4,5,6,7,8,9$. | ||
| В ветвях может быть только $+(T1, T2)$ и $*(T1, T2)$. | ||
|
|
||
| Очевидно, что на поддеревьях естественно возникает отношение эквивалентности по равенству значений, которые они вычисляют. Это соответствует определению эквивалентности, так как мы можем поменять любые поддеревья, вычисляющие одинаковое число местами и общий результат арифметического выражения не изменится. Более того, такое отношение эквивалентности возникает для любых вычисляющих деревьев: будь то деревья булевой алгебры или другие. | ||
|
|
||
| В соответствии с этим, мы получаем счетное число классов эквивалентности, поэтому по теореме Майхилла-Нероуда этот язык **не будет древесно-автоматным.** | ||
|
|
||
| Почему нельзя задать другое отношение эквивалентности? Полученное нами отношение эквивалентности естественно возникает из того, что деревья являются вычисляющими. Так рассмотрим операции, и проверим, когда они будут равны. | ||
| $$+(X,Y) = +(Z, Y) \Leftrightarrow X = Z$$ | ||
| $$*(X,Y) = *(Z,Y) \Leftrightarrow X = Z$$ | ||
|
|
||
| >[!note] Излишнее рассуждение о том, что мы не можем ввести другое отношение эквивалентности на вычисляющих деревьях | ||
| >Пусть мы задали какое-то другое отношение эквивалентности, отличное от построенного ранее. Обозначим как $\operatorname{eqv}$, тогда существуют такие $X,Y$, что | ||
| >$$\begin{matrix} | ||
| X \neq Y \text{ и } X \operatorname{eqv} Y\space (1)\\ | ||
| \text{ или }\\ | ||
| X = Y \text{ и не } X \operatorname{eqv} Y \space (2) | ||
| \end{matrix}$$ | ||
| > Случай 2 не может быть, так как если $X = Y$, то тогда нарушается определение эквивалентности, что $X \operatorname{eqv} X$. и мы получаем противоречие. | ||
| > Случай 1 означает, что общее число классов эквивалентности уменьшается, поэтому мы не можем просто отбросить этот случай. Из определения эквивалентности имеем | ||
| > $$X \operatorname{eqv} Y \Leftrightarrow +(X, Z) = +(Y,Z)$$ | ||
| > А это вновь нас сводит к тому, что построенное нами отношение эквивалентности соответствует отношению равенства. Поэтому даже если мы очень захотим построить другое отношение эквивалентности на вычисляющих деревьях в полугруппах, то у нас это не получится =(. | ||
| > Почему важно требование, что мы работаем в группе? Потому что наше рассуждение целиком опирается на факт, что $+(X,Y) = +(Z, Y) \Leftrightarrow X = Z$. Слева направо факт следует в всех случаях, но обратно следует не всегда. Докажем его. | ||
| > $$f(x,z) = f(y,z) \text{, но } x \neq y$$ | ||
| > $$f(f(x,z),a) = f(f(y,z), a)$$ | ||
| > ассоциативность | ||
| > $$f(x, f(z,a)) = f(y, f(z,a))$$ | ||
| > $$f(x,b) = f(y,b)$$ | ||
| > Причем, мы так можем сделать для любого $a$, таким образом мы получаем, что все множество значений разбивается на 2 класса эквивалентности(так как $x\neq y$): для которых $f(x,z) = f(y,z)$ и для которых не выполнено это равенство. Но если это равенство не выполнено, то не выполнено определение эквивалентных поддеревьев. Соответственно для любых элементов выполено равенство, из чего следует равенство $x,y$. Так как мы воспользовались только свойством ассоциативности бинарной операции, то это свойство будет выполняться для любых вычисляющих деревьев в полугруппах. | ||
|
|
||
| Стоит сказать, что такой вывод об эквивалентности работает далеко не всегда. Например, если бы вычислялись четные выражения с теми же самыми структурами, то язык был бы древесным, так как можно выделить лишь 2 класса эквивалентности: четные и нечетные подвыражения, и на основе этих данных можно делать вывод о четности их суммы или произведения. Аналогично, можно расширить на другие остатки от деления. | ||
|
|
||
| Почему нельзя представить другую факторизацию чисел, то есть перейти к гомоморфизму в другую полугруппу, в которой все будет работать? ==Для обоснования этого можно привести== | ||
|
|
||
| #пустой | ||
| Возьмем подмножество деревьев только из 1 и сложений, вычисляющих простые числа. Очевидно, что если взять 2 дерева, вычисляющих $x < y$ - простые числа, то $x$ - поддерево $y$, причем $y$ линейно зависит от значения поддерева $x$, то есть пожно представить как $y = x + b$. Так как мы полагаем, что они принадлежат одному классу эквивалентности, то справедливо $z = y+ b = x+ 2b$ - также простое. Если провести соответствующую накачку $x$ раз, то получим $z = x + xb = x(1 + b)$ - очевидно составное число. Получаем противоречие $\implies$ бесконечное число классов эквивалентности в силу общности рассуждения относительно двух простых чисел и бесконечного количества простых чисел $\implies$ не древесно-автоматный язык. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,28 +1,82 @@ | ||
| [[Вариант 1]] | ||
| [[Вариант 2]] | ||
| [[Вариант 3]] | ||
| [[Вариант 4]] | ||
| [[Вариант 5]] | ||
| [[Вариант 6]] | ||
| [[Вариант 7]] | ||
| [[Вариант 8]] | ||
| [[Вариант 9]] | ||
| [[Вариант 10]] | ||
| [[Вариант 11]] | ||
| [[Вариант 12]] | ||
| [[Вариант 13]] | ||
| [[Вариант 14]] | ||
| [[Вариант 15]] | ||
| [[Вариант 16]] | ||
| [[Вариант 17]] | ||
| [[Вариант 18]] | ||
| [[Вариант 19]] | ||
| [[Вариант 20]] | ||
| [[Вариант 21]] | ||
| [[Вариант 22]] | ||
| [[Вариант 23]] | ||
| [[Вариант 24]] | ||
| [[Вариант 25]] | ||
| [[Вариант 26]] | ||
| [[Вариант 27]] | ||
| [[Вариант 28]] | ||
| ![[Вариант 1]] | ||
|
|
||
| --- | ||
| ![[Вариант 2]] | ||
|
|
||
| --- | ||
| ![[Вариант 3]] | ||
|
|
||
| --- | ||
| ![[Вариант 4]] | ||
|
|
||
| --- | ||
| ![[Вариант 5]] | ||
|
|
||
| --- | ||
| ![[Вариант 6]] | ||
|
|
||
| --- | ||
| ![[Вариант 7]] | ||
|
|
||
| --- | ||
| ![[Вариант 8]] | ||
|
|
||
| --- | ||
| ![[Вариант 9]] | ||
|
|
||
| --- | ||
| ![[Вариант 10]] | ||
|
|
||
| --- | ||
| ![[Вариант 11]] | ||
|
|
||
| --- | ||
| ![[Вариант 12]] | ||
|
|
||
| --- | ||
| ![[Вариант 13]] | ||
|
|
||
| --- | ||
| ![[Вариант 14]] | ||
|
|
||
| --- | ||
| ![[Вариант 15]] | ||
|
|
||
| --- | ||
| ![[Вариант 16]] | ||
|
|
||
| --- | ||
| ![[Вариант 17]] | ||
|
|
||
| --- | ||
| ![[Вариант 18]] | ||
|
|
||
| --- | ||
| ![[Вариант 19]] | ||
|
|
||
| --- | ||
| ![[Вариант 20]] | ||
|
|
||
| --- | ||
| ![[Вариант 21]] | ||
|
|
||
| --- | ||
| ![[Вариант 22]] | ||
|
|
||
| --- | ||
| ![[Вариант 23]] | ||
|
|
||
| --- | ||
| ![[Вариант 24]] | ||
|
|
||
| --- | ||
| ![[Вариант 25]] | ||
|
|
||
| --- | ||
| ![[Вариант 26]] | ||
|
|
||
| --- | ||
| ![[Вариант 27]] | ||
|
|
||
| --- | ||
| ![[Вариант 28]] |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.