Conversation
* found questions * add answers * fix * conversation resolve * fix * fix * fix * fix * fix * fix --------- Co-authored-by: Alexey Lisov <lisov.a2005@yandex.ru>
|
Добрый вечер, Антонина Николаевна! На всякий случай оставляю здесь пометку о том, что мои вопросы готовы к ревью. Посмотрите, пожалуйста, когда вам будет удобно |
data/data.yaml
Outdated
| author: Проклашкина Софья | ||
| id: 193 | ||
| questions: | ||
| - 'Конечный автомат для распознавания {a^n b^n | n>0} |
There was a problem hiding this comment.
нужно обязательно уточнить, что конечный PDA, потому что {a^n b^n | n>0} - не регулярный
There was a problem hiding this comment.
Здесь точно есть галюцинация?
Грамматика для языка
https://gist.github.com/stewkk/fad1fcf612bae365a71ed0e8e0e211e4
PDA для языка
https://gist.github.com/stewkk/13e99c8f9cae43d144bc51dab7e15621
Только единственный момент, что бот построил для слов n>0.
There was a problem hiding this comment.
Я взяла этот вопрос из списка галлюцинаций, которые составляла Антонина Николаевна. Если спрашивать ллм именно про конечный автомат, то она отвечает, что построить конечный автомат невозможно https://gist.github.com/stewkk/bb024f603b30d4cf4b910dbe812240e8
There was a problem hiding this comment.
Я так понимаю, ценность этого элемента именно в утверждении, что КС языки могут распознаваться конечными автоматами
There was a problem hiding this comment.
Я взяла этот вопрос из списка галлюцинаций, которые составляла Антонина Николаевна. Если спрашивать ллм именно про конечный автомат, то она отвечает, что построить конечный автомат невозможно https://gist.github.com/stewkk/bb024f603b30d4cf4b910dbe812240e8
Тут в ответе нейросети ошибка только в отсутсвии одного перехода в PDA. В остальном нейросеть ответила верно
| ' | ||
| author: Проклашкина Софья | ||
| id: 198 | ||
| questions: |
There was a problem hiding this comment.
еще давай тогда добавим вопрос
- 'Нормальная форма DPDA
'| ' | ||
| author: Проклашкина Софья | ||
| id: 192 | ||
| questions: |
There was a problem hiding this comment.
давай еще попробуем добавить вопрос по типу
- '
Приведи пример не кс языка, который накачивается
'| author: Проклашкина Софья | ||
| id: 195 | ||
| questions: | ||
| - 'Язык, допускаемый по заключительному состоянию |
There was a problem hiding this comment.
вроде называем обычно финальными, мы же про одно и то же?
data/data.yaml
Outdated
| - 'Нормальная форма ДМПА | ||
|
|
||
| ' | ||
| - answer: 'Пусть M, - автомат со стековой памятью, представленный тройкой: входной алфавит на ленте Σ, стековый алфавит G и множество переходов Δ. |
There was a problem hiding this comment.
| - answer: 'Пусть M, - автомат со стековой памятью, представленный тройкой: входной алфавит на ленте Σ, стековый алфавит G и множество переходов Δ. | |
| - answer: 'Пусть M - автомат со стековой памятью, представленный тройкой: входной алфавит на ленте Σ, стековый алфавит G и множество переходов Δ. |
data/data.yaml
Outdated
|
|
||
| ' | ||
| - answer: 'Пусть M, - автомат со стековой памятью, представленный тройкой: входной алфавит на ленте Σ, стековый алфавит G и множество переходов Δ. | ||
| Тогда M называется автоматом с единственным состоянием (англ. Single State Push Down Automata, SDA), если переходы в нем имеют вид (S, a) → α, где a∈Σ, S∈G, α∈G*. ДМП-автомат с единственным состоянием — это минимальная модель для работы со стеком, который может обрабатывать некоторые КС-языки, в которых, например, не важен порядок элментов, но важно количество. |
There was a problem hiding this comment.
если есть возможность - давай не a и α, а что-то более различающееся?
|
Добрый вечер, @TonitaN. Внесла предложенные Лешей правки |
data/data.yaml
Outdated
| - answer: 'Лемма о накачке для контекстно-свободных языков (англ. Pumping lemma) является необходимым условием для того, чтобы язык порождался контекстно-свободной грамматикой, однако недостаточным. | ||
| То есть, если язык не накачивается с помощью леммы - он точно не контекстно-свободный, однако если накачивается - может таковым не являться. | ||
| Пример: язык L = {a^nb^nc^i, i ≠ n}. Докажем, что этот язык накачивается с помощью леммы. | ||
| Выберем для языка L = {a^nb^nc^i, i ≠ n} константу из леммы n = 5. Рассмотрим следующие случаи: |
There was a problem hiding this comment.
Не очень хорошо, что тут и степень в языке, и длина накачки - одна и та же буква.
data/data.yaml
Outdated
| - answer: 'Язык {a^n b^n | n>0} является контекстно-свободным языком, который может быть распознан с помощью конечного автомата со стековой памятью. | ||
| Данный автомат будет содержать следующие состояния: | ||
| q_0: Начальное состояние, "накапливаем" количество символов a. | ||
| q_1: Состояние, когда мы уже прочитали все a и при встрече b снимаем со стека символы X. |
There was a problem hiding this comment.
Тут пока никто не знает про символы X, можно просто - снимаем со стека символы.
data/data.yaml
Outdated
| s — стартовое состояние автомата, | ||
| Z0 — маркер дна стека, | ||
| T — множество допускающих состояний автомата. | ||
| Тогда языком, допускаемым автоматом Aпо заключительному состоянию, является L(A) = {w ∣ (s, w, Z0) ⊢∗ (q, ε, α)} для некоторого состояния q ∈ T и произвольной магазинной цепочки α. Сочетание (s, w, Z0) ⊢∗ (q, ε, α) означает, что функция переходов δ позволяет от (s, w, Z0), проходя через промежуточные значения функции, попасть в (s, w, Z0). Начиная с стартовой вершины s и w на входе, автомат читает слово w и достигает допускающего состояния. Содержимое стека в этот момент не имеет значения. |
There was a problem hiding this comment.
Тут и в вопросе ниже один и тот же баг в расшифровке обозначения ⊢∗ .
| - answer: 'ДМП (DPDA) в нормальной форме - это детерминированный автомат с магазинной памятью M, представленный конечным набором состояний Q, входным алфавитом на ленте Σ, стековым алфавитом G и множеством переходов Δ, который удовлетворяет следующим условиям: | ||
| 1. Если (p, a, S) → (q, γ) ∈ Δ, то |γ|⩽2, где γ ∈ G* — последовательность стековых символов, S∈G. | ||
| 2. Если (p, ε, S) → (q, γ) ∈ Δ, то γ = ε. | ||
| 3. Δ не содержит бесполезных переходов (переход (p, a, S) → (q, γ) считается бесполезным, если L(q, γ) = ∅, то есть из конфигурации (q, γ) нельзя ничего вывести). |
There was a problem hiding this comment.
Это нетривиальное условие, его не так просто разрешить) Но оставим как есть.
There was a problem hiding this comment.
А стоп, тут точно должно быть именно такое условие? Дело в том, что (q, γ) - это не конфигурация, а пара "состояние - результат изменения стека". При этом сам стек не обязан иметь вид γ. Например, из конфигурации (q0, ε) ничего вывести обычно нельзя (т.к. для действий в PDA нужны какие-то стековые символы), но признавать все переходы, сбрасывающие со стека символы, бесполезными, точно абсурдно.
Мне видится два возможных исправления:
- либо на любом пути вычисления переход бесполезен (т.е. при чтении любого префикса мы получаем при этом переходе конфигурацию с пустым языком). Это нетривиальное, хотя и вычислимое в PDA условие.
- либо если γ непусто, то переход (p, a, S) → (q, γ) считается бесполезным, если из q нет переходов по верхнему стековому символу из γ. Это простое синтаксическое условие.
Поскольку дальше присутствует слово ловушка, я склоняюсь всё-таки к семантической трактовке (пункт 1).
data/data.yaml
Outdated
|
|
||
| ' | ||
|
|
||
| - answer: 'Автомат Глушкова - недетерминированный конечный автомат, построенный по регулярному выражению. Принимает те же строки, что и соответствующее регулярное выражение. |
There was a problem hiding this comment.
Ну не всякий же, а с использованием множеств First, Follow, Last линеаризованного регулярного выражения.
data/data.yaml
Outdated
| ' | ||
|
|
||
| - answer: 'Автомат Глушкова - недетерминированный конечный автомат, построенный по регулярному выражению. Принимает те же строки, что и соответствующее регулярное выражение. | ||
| Автомат Глушкова без ε-переходов эквивалентен автомату, построенному по тому же регулярному выражению по алгоритму Томсона. |
|
Добрый вечер, Антонина Николаевна @TonitaN, постаралась поправить все замечания |
TonitaN
left a comment
There was a problem hiding this comment.
Заметила ещё при прежнем ревью что-то странное с ловушками в PDA. При более детальном разборе - да, там какая-то неточность в формулировке.
Остальное - последние штрихи исправлений.
| 5) Слово w = a^jb^jc^(j+1). Пусть u = a^(j-2), v = aa, x = ℇ, y = bb, z = b^(j-2)c^j+1. |vxy| ≤ 5. При накачке uv^kxy^kz количество a и b будет одновременно и сбалансированно увеличиваться, при этом никогда не будет равно числу i. | ||
| 6) Слово w = a^jb^jc^i, i > j+1. Пусть u = a^jb^c^i-1, v = c, x = y = z = ℇ. |vxy| ≤ 5. При накачке uv^kxy^kz количество a и b не будет меняться, в то время как число c будет увеличиваться и никогда не будет равно j. | ||
| Таким образом, существует такое n из леммы, что все условия для этого языка выполняются. Однако, данный язык не будет являться контекстно-свободным. Докажем это с помощью леммы Огдена. | ||
| Для фиксированного n из леммы Огдена рассмотрим слово w = a^mb^mc^(m!+m). Пометим все символы a и b и разобьем на u, v, x, y, z так, что x содержит выделенную позицию, u и v содержат выделенные позиции и vxy содержат не более n выделенных позиций. |
There was a problem hiding this comment.
Тут только что заметила, что n и m никак не связаны :(
| - 'Язык, допускаемый по заключительному состоянию | ||
|
|
||
| ' | ||
| - 'Язык, допускаемый по финальному состоянию |
There was a problem hiding this comment.
Язык магазинного автомата, допускаемый по финальному состоянию
(т.к. есть и другие классы автоматов, здесь речь только о PDA)
| - 'Язык, допускаемый по пустому стеку | ||
|
|
||
| ' | ||
| - answer: 'Классы языков, допускаемых автоматами с магазинной памятью по заключительному состоянию и по пустому магазину (стеку), совпадают. |
There was a problem hiding this comment.
Может, ещё добавим, что классы языков, допускаемых детерминированными автоматами с магазинной памятью по финальному состоянию и по пустому стеку не совпадают?
Первые - это в точности LR(1) языки, вторые - LR(0)-языки
| - answer: 'ДМП (DPDA) в нормальной форме - это детерминированный автомат с магазинной памятью M, представленный конечным набором состояний Q, входным алфавитом на ленте Σ, стековым алфавитом G и множеством переходов Δ, который удовлетворяет следующим условиям: | ||
| 1. Если (p, a, S) → (q, γ) ∈ Δ, то |γ|⩽2, где γ ∈ G* — последовательность стековых символов, S∈G. | ||
| 2. Если (p, ε, S) → (q, γ) ∈ Δ, то γ = ε. | ||
| 3. Δ не содержит бесполезных переходов (переход (p, a, S) → (q, γ) считается бесполезным, если L(q, γ) = ∅, то есть из конфигурации (q, γ) нельзя ничего вывести). |
There was a problem hiding this comment.
А стоп, тут точно должно быть именно такое условие? Дело в том, что (q, γ) - это не конфигурация, а пара "состояние - результат изменения стека". При этом сам стек не обязан иметь вид γ. Например, из конфигурации (q0, ε) ничего вывести обычно нельзя (т.к. для действий в PDA нужны какие-то стековые символы), но признавать все переходы, сбрасывающие со стека символы, бесполезными, точно абсурдно.
Мне видится два возможных исправления:
- либо на любом пути вычисления переход бесполезен (т.е. при чтении любого префикса мы получаем при этом переходе конфигурацию с пустым языком). Это нетривиальное, хотя и вычислимое в PDA условие.
- либо если γ непусто, то переход (p, a, S) → (q, γ) считается бесполезным, если из q нет переходов по верхнему стековому символу из γ. Это простое синтаксическое условие.
Поскольку дальше присутствует слово ловушка, я склоняюсь всё-таки к семантической трактовке (пункт 1).
| ' | ||
| - answer: 'Пусть M - автомат со стековой памятью, представленный тройкой: входной алфавит на ленте Σ, стековый алфавит G и множество переходов Δ. | ||
| Тогда M называется автоматом с единственным состоянием (англ. Single State Push Down Automata, SDA), если переходы в нем имеют вид (S, a) → γ, где a ∈ Σ, S ∈ G, γ ∈ G*. ДМП-автомат с единственным состоянием — это минимальная модель для работы со стеком, который может обрабатывать некоторые КС-языки, в которых, например, не важен порядок элементов, но важно количество. | ||
| Автомат с единственным состоянием находится в нормальной форме, если все его переходы удовлетворяют следующему условию: если (S, a) → γ ∈ Δ, тогда |γ|⩽2 и L(γ) ≠ ∅. |
| ' | ||
|
|
||
| - answer: 'Автомат Глушкова - недетерминированный конечный автомат, построенный с использованием множеств First, Last, Follow линеаризованного регулярного выражения. Принимает те же строки, что и соответствующее регулярное выражение. | ||
| Автомат Глушкова эквивалентен автомату без ε-переходов, построенному по тому же регулярному выражению по алгоритму Томсона. |
There was a problem hiding this comment.
*автомат Глушкова совпадает с результатом применения к автомату Томпсона операции удаления эпсилон-переходов посредством построения эпсилон-замыканий состояний.
| 4) Создание состояний: добавляем стартовое состояние и состояния, соответствующие пронумерованным символам регулярного выражения. Финальными обозначаем состояния, которые соответствуют пронумерованным символам, присутствующим в множестве LAST. Также делаем финальным состоянием стартовое, если регулярное выражение принимает пустую строку. | ||
| 5) Для каждого пронумерованного состояния из множества FIRST добавляем переходы из стартового состояния в состояние по этому символу, соответствующее пронумерованному символу из множества FIRST. | ||
| 6) Для каждой пары (γ_i, γ_j) из множества FOLLOW добавляем переход по символу γ_j из состояния, соответствующего символу γ_i в состояние, соответствующее символу γ_j | ||
| Таким образом будет построен недетерминированный конечный автомат Глушкова, распознающий это регулярное выражение |
There was a problem hiding this comment.
Нужно ещё стереть на переходах линеаризующую разметку.
No description provided.