Нормальная форма ДМП-автомата — различия между версиями
Eadm (обсуждение | вклад) (init) |
Eadm (обсуждение | вклад) (New) |
||
Строка 1: | Строка 1: | ||
+ | == Определение == | ||
{{Определение | {{Определение | ||
− | |definition=ДМП в ''' | + | |definition=ДМП в '''нормальной форме''' (англ. ''Normal Form'') называется такой [[Детерминированные автоматы с магазинной памятью, допуск по пустому стеку|детерминированный автомат с магазинной памятью]] <tex>M</tex>, представленный конечным набором состояний <tex>Q</tex>, входным алфавитом на ленте <tex>\Sigma</tex>, стековым алфавитом <tex>\Gamma</tex> и множеством переходов <tex>\Delta</tex>, который удовлетворяет следующим условиям: |
− | + | # если <tex>(p, a, S) \rightarrow (q, \alpha) \in \Delta</tex>, то <tex>|\alpha| \le 2</tex>, где <tex>\alpha \in \Gamma^*</tex> {{---}} последовательность стековых символов, <tex>S \in \Gamma</tex>. | |
− | + | # если <tex>(p, \epsilon, S) \rightarrow (q, \alpha) \in \Delta</tex>, то <tex>\alpha = \epsilon</tex>. | |
− | + | # <tex>\Delta</tex> не содержит бесполезных переходов (переход <tex>(p, a, S) \rightarrow (q, \alpha)</tex> считается бесполезным, если <tex>L(q, \alpha) = \emptyset</tex>, то есть из конфигурации <tex>(q, \alpha)</tex> нельзя ничего вывести). | |
− | # | ||
− | |||
− | |||
− | |||
}} | }} | ||
+ | |||
+ | {{Определение | ||
+ | |definition=Множество слов выводиых из конфигурации <tex>L(p, \sigma) = \{ \omega \in \Sigma^* : \exists q \in Q. (p, \omega, \sigma) \rightarrow (q, \epsilon) \}</tex> | ||
+ | }} | ||
+ | |||
+ | '''Замечание:''' здесь и далее речь идёт о [[Детерминированные автоматы с магазинной памятью, допуск по пустому стеку|ДМП с допуском по пустому стеку]]. | ||
+ | |||
+ | ==Пример== | ||
+ | Пусть | ||
+ | : <tex>Q = \{p, r\}</tex> | ||
+ | : <tex>\Sigma = \{a, b, c\}</tex> | ||
+ | : <tex>\Gamma = \{X, Y\}</tex> | ||
+ | : <tex>(p, X)</tex> {{---}} стартовая конфигурация | ||
+ | и переходы имеют следующий вид: | ||
+ | : <tex>(p, a, X) \rightarrow (p, X)</tex> | ||
+ | : <tex>(p, b, X) \rightarrow (p, \epsilon)</tex> | ||
+ | : <tex>(p, c, X) \rightarrow (p, X)</tex> | ||
+ | : <tex>(r, \epsilon, X) \rightarrow (p, \epsilon)</tex> | ||
+ | : <tex>(p, a, Y) \rightarrow (p, \epsilon)</tex> | ||
+ | : <tex>(p, b, Y) \rightarrow (r, \epsilon)</tex> | ||
+ | : <tex>(p, c, Y) \rightarrow (p, YY)</tex> | ||
+ | : <tex>(r, \epsilon, Y) \rightarrow (r, \epsilon)</tex> | ||
+ | Данный автомат будет являтся [[Детерминированные автоматы с магазинной памятью, допуск по пустому стеку|ДМП автоматом с допуском по пустому стеку]] в нормальной форме. | ||
+ | |||
+ | == Автомат с единственным состоянием == | ||
+ | {{Определение | ||
+ | |definition='''Автомат с единственным состоянием ''' (англ. ''Single State Push Down Automata'', ''SDA'') называется такой автомат <tex>M</tex>, представленный тройкой: входной алфавит на ленте <tex>\Sigma</tex>, стековым алфавит <tex>\Gamma</tex> и множеством переходов <tex>\Delta</tex>. | ||
+ | Переходы в таком автомате имеют вид: | ||
+ | : <tex>(S, a) \rightarrow \alpha</tex>, где <tex>a \in \Sigma</tex>, <tex>S \in \Gamma</tex>, <tex>\alpha \in \Gamma^*</tex> | ||
+ | }} | ||
+ | |||
+ | {{Определение | ||
+ | |definition=Множество слов выводиых из конфигурации <tex>L(\alpha) = \{ \omega \in \Sigma^* : (\alpha, \omega) \rightarrow \epsilon \}</tex> | ||
+ | }} | ||
+ | |||
+ | {{Определение | ||
+ | |definition=Автомат с единственным состоянием находится в '''нормальной форме''', если все его переходы удовлетворяют условию: | ||
+ | : если <tex>(S, a) \rightarrow \alpha \in \Delta</tex>, тогда <tex>|\alpha| \le 2</tex> и <tex>L(\alpha) \neq \emptyset</tex> | ||
+ | }} | ||
+ | |||
+ | Автомат с единственным состоянием можно сделать детерминированным, наложив следующее требование на переходы: | ||
+ | : если <tex>(S, a) \rightarrow \alpha \in \Delta</tex> и <tex>(S, a) \rightarrow \beta \in \Delta</tex>, тогда <tex>\alpha = \beta</tex> | ||
+ | Детерминированный автомат с единственным состоянием соответствует по мощности "простым грамматикам". | ||
+ | |||
+ | {{Определение | ||
+ | |definition='''Простая грамматика''' (англ. ''Simple Grammar'') {{---}} такая грамматика, где все продукции имеют вид: | ||
+ | : <tex>A \rightarrow \alpha B_1 B_2 \ldots B_n</tex>, где <tex>\alpha</tex> {{---}} терминал, а все <tex>B_i, i = 1 \ldots n</tex> {{---}} нетерминалы, и существует только одна продукция с парой <tex>\langle A, \alpha \rangle</tex>. | ||
+ | }} | ||
+ | |||
+ | Однако, множество языков допускаемых детерминированным автоматом с единственным состоянием является строгим подможеством языков [[Детерминированные автоматы с магазинной памятью|ДМП автоматов]], поэтому больший интерес представляют ''строгие'' автоматы с единственным состоянием. | ||
+ | |||
+ | Для этого вводится отношение эквивалентности <tex>\equiv</tex> на множестве <tex>\Gamma</tex>, заданное разбиением <tex>\Gamma</tex> на непересекающиеся подмоножества. | ||
+ | |||
+ | '''Пример 1''' | ||
+ | Детерминированный стековый автомат | ||
+ | : <tex>\Sigma = \{a, b\}</tex> | ||
+ | : <tex>\Gamma = \{A, C, X, Y\}</tex> | ||
+ | : <tex>A, X</tex> {{---}} стартовые конфигурации | ||
+ | Переходы: | ||
+ | : <tex>(X, a) \rightarrow YX</tex> | ||
+ | : <tex>(X, b) \rightarrow \epsilon</tex> | ||
+ | : <tex>(Y, b) \rightarrow X</tex> | ||
+ | : <tex>(A, a) \rightarrow C</tex> | ||
+ | : <tex>(A, b) \rightarrow \epsilon</tex> | ||
+ | : <tex>(C, b) \rightarrow AA</tex> | ||
+ | Разбиение <tex>\Gamma</tex> имеет вид <tex>\{\{A\}, \{C\}, \{X\}, \{Y\}\}</tex> | ||
+ | Такой автомат будет детерминированным. | ||
+ | |||
+ | '''Пример 2''' | ||
+ | : <tex>\Sigma = \{a, b, c\}</tex> | ||
+ | : <tex>\Gamma = \{X, Y, Z\}</tex> | ||
+ | : <tex>X, Z</tex> {{---}} стартовые конфигурации | ||
+ | Переходы: | ||
+ | : <tex>(X, a) \rightarrow X</tex> | ||
+ | : <tex>(X, b) \rightarrow \epsilon</tex> | ||
+ | : <tex>(X, c) \rightarrow X</tex> | ||
+ | : <tex>(Y, a) \rightarrow \epsilon</tex> | ||
+ | : <tex>(Y, c) \rightarrow YY</tex> | ||
+ | : <tex>(Z, b) \rightarrow \epsilon</tex> | ||
+ | : <tex>(Z, c) \rightarrow Z</tex> | ||
+ | : <tex>(Z, c) \rightarrow YZ</tex> | ||
+ | Разбиение <tex>\Gamma</tex> имеет вид <tex>\{\{X\}, \{Y, Z\}\}</tex>, что означает, что <tex>Y \equiv Z</tex>. | ||
+ | |||
+ | Отношение <tex>\equiv</tex> можно расширить на последовательность стековых символов: | ||
+ | |||
+ | <tex>\alpha \equiv \beta</tex> если: | ||
+ | # либо <tex>\alpha = \beta</tex> | ||
+ | # либо <tex>\alpha = \delta X \alpha'</tex>, <tex>\beta = \delta Y \beta'</tex>, <tex>X \equiv Y</tex> и <tex>X \neq Y</tex>. | ||
+ | |||
+ | '''Свойства''' <tex>\equiv</tex>: | ||
+ | # <tex>\alpha\beta \equiv \alpha \Leftrightarrow \beta = \epsilon</tex> | ||
+ | # <tex>\alpha \equiv \beta \Leftrightarrow \delta\alpha \equiv \delta\beta</tex> | ||
+ | # если <tex>\alpha \equiv \beta</tex> и <tex>\gamma \equiv \delta</tex>, тогда <tex>\alpha\gamma \equiv \beta\delta</tex> | ||
+ | # если <tex>\alpha \equiv \beta</tex> и <tex>\alpha \neq \beta</tex>, тогда <tex>\alpha\gamma \equiv \beta\delta</tex> | ||
+ | # если <tex>\alpha\gamma \equiv \beta\delta</tex> и <tex>|\alpha| = |\beta|</tex>, тогда <tex>\alpha \equiv \beta</tex> | ||
+ | |||
+ | {{Определение | ||
+ | |definition=Отношение <tex>\equiv</tex> на множестве <tex>\Gamma</tex> является '''строгим''' (англ. ''strict'') {{---}}, если выполняются следующие условия: | ||
+ | # если <tex>X \equiv Y</tex>, <tex>(X, a) \rightarrow \alpha</tex> и <tex>(Y, a) \rightarrow \beta</tex>, тогда <tex>\alpha \equiv \beta</tex> | ||
+ | # если <tex>X \equiv Y</tex>, <tex>(X, a) \rightarrow \alpha</tex> и <tex>(Y, a) \rightarrow \alpha</tex>, тогда <tex>X = Y</tex> | ||
+ | }} | ||
+ | |||
+ | {{Определение | ||
+ | |definition=Автомат с единственным состоянием с заданным разбиением <tex>\Gamma</tex> является '''строгим''', если отношение <tex>\equiv</tex> строгое на множестве <tex>\Gamma</tex>. | ||
+ | }} | ||
+ | |||
+ | |||
+ | Опеределение конфигураций автомата с единственным состоянием расшириряется на наборы из последовательностей символов стека <tex>\{ \alpha_1, \ldots , \alpha_n \}</tex>, которые записываются в виде суммы <tex>\alpha_1 + \ldots + \alpha_n</tex>. | ||
+ | |||
+ | Две суммы конфигураций считаются эквивалентными (записывается через <tex>=</tex>), если они представляют из себя один и тот же набор. | ||
+ | |||
+ | Язык суммы конфигураций определяется {{---}} <tex>L(\alpha_1 + \ldots + \alpha_n) = \bigcup\{L(\alpha_i) : i = 1 \ldots n\}</tex> | ||
+ | |||
+ | {{Определение | ||
+ | |definition=Сумма конфигураций <tex>\beta_1 + \ldots + \beta_n</tex> называется '''допустимой''' (англ. ''admissible''), если <tex>\beta_i \equiv \beta_j</tex> для всех елементов суммы, и <tex>\beta_i \neq \beta_j</tex> при <tex>i \neq j</tex>. | ||
+ | }} | ||
+ | Таким образом <tex>\emptyset</tex> {{---}} тоже допустимо. | ||
+ | Некоторые суммы из второго примера: <tex>XX</tex>, <tex>ZZZ + ZZY</tex>, <tex>YX + Z</tex>, <tex>Z + YZ</tex> и <tex>Z + YZ + YYZ</tex> {{---}} все эти суммы допустимые, в то время как <tex>X + Y</tex> будет недопустима, так как <tex>X \not\equiv Y</tex>. | ||
+ | |||
+ | Строгий автомат с единственным состоянием можно сделать детерминированным, заменив множество переходов <tex>\Delta</tex> на <tex>\Delta'</tex>: | ||
+ | для каждого символа <tex>X \in \Gamma</tex> и <tex>a \in \Sigma</tex> переходы вида | ||
+ | <tex>(X, a) \rightarrow \alpha_1, \ldots , (X, a) \rightarrow \alpha_n</tex> из <tex>\Delta</tex> | ||
+ | заменяются на один переход <tex>(X, a) \rightarrow \alpha_1 + \ldots + \alpha_n</tex>. | ||
+ | Таким образом для каждого <tex>X \in \Gamma</tex> и <tex>a \in \Sigma</tex> будет уникальный переход <tex>(X, a) \rightarrow \sum{}{}{\alpha_i}</tex> из <tex>\Delta'</tex>. | ||
+ | |||
+ | == Связь ДМП автомата в нормальной форме и автомата с единственным состоянием == | ||
+ | {{Утверждение | ||
+ | |statement=Допустимые конфигурации строгого автомата с единственным состоянием генерируют те же языки, что и конфигурации [[Детерминированные автоматы с магазинной памятью, допуск по пустому стеку|ДМП с допуском по пустому стеку]]. | ||
+ | |proof= | ||
+ | Пусть задан ДМП автомат в нормальной форме в виде четырех множеств <tex>Q, \Sigma, \Gamma, \Delta</tex>. | ||
+ | # Для двух состояний <tex>p, q \in Q</tex> и <tex>X \in \Gamma</tex> заведём новый символ стека <tex>[pXq]</tex> | ||
+ | # Для переходов сначала для данного <tex>a \in \Sigma</tex>: | ||
+ | : если <tex>(p, a, X) \rightarrow (q, \epsilon) \in \Delta</tex>, тогда <tex>([pXq], a) \rightarrow \epsilon</tex> | ||
+ | : если <tex>(p, a, X) \rightarrow (q, Y) \in \Delta</tex>, тогда <tex>([pXr], a) \rightarrow [qYr]</tex> для всех <tex>r \in Q</tex> | ||
+ | : если <tex>(p, a, X) \rightarrow (q, YZ) \in \Delta</tex>, тогда <tex>([pXr], a) \rightarrow [qYp'][p'Zr]</tex> для всех <tex>r,p'' \in Q</tex> | ||
+ | # [pSq] считается <tex>\epsilon</tex>-символом, если <tex>(p, \epsilon, X) \rightarrow (q, \epsilon) \in \Delta</tex>. Все <tex>\epsilon</tex>-символы удаляются из правой части переходов, полученных в предыдущем пункте. | ||
+ | Полученный автомат с единственным состоянием также находится в нормальной форме. Детерминируем новый автомат, чтобы сохранить детерминированность. | ||
+ | Таким образом каждая конфигурация вида <tex>pX_1X_2 \ldots X_n</tex> из исходного автомата была трансформирована в <tex>sum(p\alpha) = \sum_{p_i \in Q}{[p X_1 p_1][p_1 X_2 p_2] \ldots [p_{n-1}X_n p_n]}</tex> и <tex>L(p\alpha) = L(sum(p\alpha))</tex>. | ||
+ | }} | ||
+ | |||
+ | Применим алгоритм к самому первому примеру и получим следующее: | ||
+ | : <tex>(X, a) \rightarrow X</tex> | ||
+ | : <tex>(Y, a) \rightarrow \epsilon</tex> | ||
+ | : <tex>(Z, a) \rightarrow \emptyset</tex> | ||
+ | : <tex>(X, b) \rightarrow \epsilon</tex> | ||
+ | : <tex>(Y, b) \rightarrow \emptyset</tex> | ||
+ | : <tex>(Z, b) \rightarrow \epsilon</tex> | ||
+ | : <tex>(X, c) \rightarrow X</tex> | ||
+ | : <tex>(Y, c) \rightarrow YY</tex> | ||
+ | : <tex>(Z, c) \rightarrow YZ + Z</tex>, где | ||
+ | |||
+ | : <tex>X = [pXp]</tex> | ||
+ | : <tex>Y = [pYp]</tex> | ||
+ | : <tex>Z = [pYr]</tex> | ||
+ | |||
+ | == Примение == | ||
+ | Существует задача об определении эквивалентности двух [[Детерминированные автоматы с магазинной памятью|ДМП автоматов]] (два ДМП автомата <tex>M_1</tex> и <tex>М_2</tex> эквивалетны, если <tex>L(M_1) = L(M_2)</tex>). | ||
+ | Для этого автоматы переводятся в нормальную форму, а потом переводятся в автоматы с единственным состоянием, для которых эта задача разрешима. | ||
+ | |||
+ | == См. также == | ||
+ | * [[Детерминированные автоматы с магазинной памятью, допуск по пустому стеку]] | ||
+ | * [[Детерминированные автоматы с магазинной памятью]] | ||
+ | * [[ДМП-автоматы и неоднозначность]] | ||
+ | |||
+ | == Источники информации == | ||
+ | * [http://homepages.inf.ed.ac.uk/cps/india.pdf Colin Stirling "An Introduction to Decidability of DPDA Equivalence"] | ||
+ | |||
+ | [[Категория: Теория формальных языков]] | ||
+ | [[Категория: Контекстно-свободные грамматики]] | ||
+ | [[Категория: МП-автоматы]] |
Версия 23:24, 8 января 2017
Содержание
Определение
Определение: |
ДМП в нормальной форме (англ. Normal Form) называется такой детерминированный автомат с магазинной памятью , представленный конечным набором состояний , входным алфавитом на ленте , стековым алфавитом и множеством переходов , который удовлетворяет следующим условиям:
|
Определение: |
Множество слов выводиых из конфигурации |
Замечание: здесь и далее речь идёт о ДМП с допуском по пустому стеку.
Пример
Пусть
- — стартовая конфигурация
и переходы имеют следующий вид:
Данный автомат будет являтся ДМП автоматом с допуском по пустому стеку в нормальной форме.
Автомат с единственным состоянием
Определение: |
Автомат с единственным состоянием (англ. Single State Push Down Automata, SDA) называется такой автомат Переходы в таком автомате имеют вид:
| , представленный тройкой: входной алфавит на ленте , стековым алфавит и множеством переходов .
Определение: |
Множество слов выводиых из конфигурации |
Определение: |
Автомат с единственным состоянием находится в нормальной форме, если все его переходы удовлетворяют условию:
|
Автомат с единственным состоянием можно сделать детерминированным, наложив следующее требование на переходы:
- если и , тогда
Детерминированный автомат с единственным состоянием соответствует по мощности "простым грамматикам".
Определение: |
Простая грамматика (англ. Simple Grammar) — такая грамматика, где все продукции имеют вид:
|
Однако, множество языков допускаемых детерминированным автоматом с единственным состоянием является строгим подможеством языков ДМП автоматов, поэтому больший интерес представляют строгие автоматы с единственным состоянием.
Для этого вводится отношение эквивалентности
на множестве , заданное разбиением на непересекающиеся подмоножества.Пример 1 Детерминированный стековый автомат
- — стартовые конфигурации
Переходы:
Разбиение
имеет вид Такой автомат будет детерминированным.Пример 2
- — стартовые конфигурации
Переходы:
Разбиение
имеет вид , что означает, что .Отношение
можно расширить на последовательность стековых символов:если:
- либо
- либо , , и .
Свойства
:- если и , тогда
- если и , тогда
- если и , тогда
Определение: |
Отношение
| на множестве является строгим (англ. strict) —, если выполняются следующие условия:
Определение: |
Автомат с единственным состоянием с заданным разбиением | является строгим, если отношение строгое на множестве .
Опеределение конфигураций автомата с единственным состоянием расшириряется на наборы из последовательностей символов стека
, которые записываются в виде суммы .Две суммы конфигураций считаются эквивалентными (записывается через
), если они представляют из себя один и тот же набор.Язык суммы конфигураций определяется —
Определение: |
Сумма конфигураций | называется допустимой (англ. admissible), если для всех елементов суммы, и при .
Таким образом
— тоже допустимо. Некоторые суммы из второго примера: , , , и — все эти суммы допустимые, в то время как будет недопустима, так как .Строгий автомат с единственным состоянием можно сделать детерминированным, заменив множество переходов
на : для каждого символа и переходы вида из заменяются на один переход . Таким образом для каждого и будет уникальный переход из .Связь ДМП автомата в нормальной форме и автомата с единственным состоянием
Утверждение: |
Допустимые конфигурации строгого автомата с единственным состоянием генерируют те же языки, что и конфигурации ДМП с допуском по пустому стеку. |
Пусть задан ДМП автомат в нормальной форме в виде четырех множеств .
Полученный автомат с единственным состоянием также находится в нормальной форме. Детерминируем новый автомат, чтобы сохранить детерминированность. Таким образом каждая конфигурация вида из исходного автомата была трансформирована в и . |
Применим алгоритм к самому первому примеру и получим следующее:
- , где
Примение
Существует задача об определении эквивалентности двух ДМП автоматов (два ДМП автомата и эквивалетны, если ). Для этого автоматы переводятся в нормальную форму, а потом переводятся в автоматы с единственным состоянием, для которых эта задача разрешима.
См. также
- Детерминированные автоматы с магазинной памятью, допуск по пустому стеку
- Детерминированные автоматы с магазинной памятью
- ДМП-автоматы и неоднозначность