Двусторонний детерминированный конечный автомат — различия между версиями
Kabanov (обсуждение | вклад) |
Kabanov (обсуждение | вклад) (→Пример) |
||
Строка 22: | Строка 22: | ||
Теперь построим на его основе ДКА. Мы можем построить автомат <tex>A_n</tex>, который запоминает последние <tex>n</tex> входных символов. Следовательно, когда мы находимся с состоянии, соответствующему подстроке <tex>\sigma_1 \sigma_2 \dots \sigma_n</tex>, и читаем очередной символ <tex>\gamma</tex>, то мы переходим в состояние, которому уже будет соответствовать подстрока <tex>\sigma_2 \sigma_3 \dots \sigma_n \gamma</tex>. Однако, в случае <tex>\sigma_1 = \gamma = a</tex> автомат переходит в допускающее состояние, где в цикле может переходить на любому символу. Следует отметить, что такая стратегия строит ДКА c <tex>2^n + 1</tex> состояниями. Ниже представлен автомат <tex>A_3</tex>, который распознает язык <tex>L_3</tex>. | Теперь построим на его основе ДКА. Мы можем построить автомат <tex>A_n</tex>, который запоминает последние <tex>n</tex> входных символов. Следовательно, когда мы находимся с состоянии, соответствующему подстроке <tex>\sigma_1 \sigma_2 \dots \sigma_n</tex>, и читаем очередной символ <tex>\gamma</tex>, то мы переходим в состояние, которому уже будет соответствовать подстрока <tex>\sigma_2 \sigma_3 \dots \sigma_n \gamma</tex>. Однако, в случае <tex>\sigma_1 = \gamma = a</tex> автомат переходит в допускающее состояние, где в цикле может переходить на любому символу. Следует отметить, что такая стратегия строит ДКА c <tex>2^n + 1</tex> состояниями. Ниже представлен автомат <tex>A_3</tex>, который распознает язык <tex>L_3</tex>. | ||
+ | |||
+ | Покажем, что построенные таким образом автоматы будут минимальными. | ||
+ | * Каждые две попарно различных строки <tex>x</tex> и <tex>y</tex> длины <tex>n</tex> различимы. Чтобы доказать это, достаточно рассмотреть строку <tex>b^{i-1}a</tex>, где <tex>i : 1 \leqslant i \leqslant n</tex> {{---}} самая левая позиция символа, в которой начинают различаться строки <tex>x</tex> и <tex>y</tex>, и проверить, что ровно одна строка <tex>xb^{i-1}a</tex> или <tex>yb^{i-1}a</tex> принадлежит <tex>L_n</tex>. | ||
+ | * Каждая строка длины <tex>n</tex> не принадлежит <tex>L_n</tex> и, следовательно, различима от строки <tex>a^{n+1}</tex>, которая принадлежит <tex>L_n</tex>. | ||
+ | * Таким образом, <tex>2^n + 1</tex> строк в <tex>\Sigma^n \cup \{a^{n+1}\}</tex> являются попарно различимыми для <tex>L_n</tex>. Как следствие, <tex>2^n + 1</tex> {{---}} минимальное количество состояний для ДКА, который способен распознать язык <tex>L_n</tex>. | ||
== См. также == | == См. также == |
Версия 20:00, 9 января 2015
Определение: |
Двусторонний детерминированный конечный автомат (2ДКА) (англ. Two-way deterministic finite automaton (2DFA)) — набор из восьми элементов | , где — алфавит (англ. alphabet), — множество состояний (англ. finite set of states), — левый маркер конца строки, — правый маркер конца строки, — начальное (стартовое) состояние (англ. start state), — допускающее состояние (англ. accept state), — отвергающее состояние (англ. reject state), — функция переходов (англ. transition function).
Также должны быть удовлетворены следующие условия:
- для некоторого ,
- для некоторого ,
и
- ,
- ,
- ,
- .
Содержание
Описание
Зафиксируем
, где . Пусть и . Тогда .Пример
Рассмотрим следующий язык
при .Он может быть легко распознан с помощью следующего недетерменированного конечного автомата.
Теперь построим на его основе ДКА. Мы можем построить автомат
, который запоминает последние входных символов. Следовательно, когда мы находимся с состоянии, соответствующему подстроке , и читаем очередной символ , то мы переходим в состояние, которому уже будет соответствовать подстрока . Однако, в случае автомат переходит в допускающее состояние, где в цикле может переходить на любому символу. Следует отметить, что такая стратегия строит ДКА c состояниями. Ниже представлен автомат , который распознает язык .Покажем, что построенные таким образом автоматы будут минимальными.
- Каждые две попарно различных строки и длины различимы. Чтобы доказать это, достаточно рассмотреть строку , где — самая левая позиция символа, в которой начинают различаться строки и , и проверить, что ровно одна строка или принадлежит .
- Каждая строка длины не принадлежит и, следовательно, различима от строки , которая принадлежит .
- Таким образом, строк в являются попарно различимыми для . Как следствие, — минимальное количество состояний для ДКА, который способен распознать язык .