Недетерминированные конечные автоматы — различия между версиями
Forgotenn (обсуждение | вклад) (→Пример) |
Gromak (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
− | '''Недетерминированный конечный автомат''' ( | + | '''Недетерминированный конечный автомат''' или НКА (NFA {{---}} Nondeterministic Finite Automaton) {{---}} пятёрка <tex>\langle \Sigma , Q, s \in Q, T \subset Q, \delta : Q \times \Sigma \to 2^Q \rangle</tex>, где <tex>\Sigma</tex> {{---}} алфавит, <tex>Q</tex> {{---}} множество состояний автомата, <tex>s</tex> {{---}} начальное состояние автомата, <tex>T</tex> {{---}} множество допускающих состояний автомата, <tex>\delta</tex> {{---}} функция переходов. |
− | Таким образом, единственное отличие НКА от ДКА {{---}} существование нескольких переходов по одному символу из одного состояния. | + | Таким образом, единственное отличие НКА от [[Детерминированные_конечные_автоматы | ДКА]] {{---}} существование нескольких переходов по одному символу из одного состояния. |
}} | }} | ||
Строка 36: | Строка 36: | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
− | НКА '''допускает''' слово <tex>\alpha</tex>, если <tex>\exists t \in T: \langle s, \alpha \rangle \vdash^* \langle t, \varepsilon \rangle</tex>. | + | НКА '''допускает''' (accepts) слово <tex>\alpha</tex>, если <tex>\exists t \in T: \langle s, \alpha \rangle \vdash^* \langle t, \varepsilon \rangle</tex>. |
}} | }} | ||
Строка 91: | Строка 91: | ||
== Литература == | == Литература == | ||
* ''Ю. Громкович'' Теоретическая информатика. Введение в теорию автоматов, теорию вычислимости, теорию сложности, теорию алгоритмов, рандомизацию, теорию связи и криптографию: Пер. с нем. — СПб.:БХВ-Петербург, 2010. — С. 87. — ISBN 978-5-9775-0406-5 | * ''Ю. Громкович'' Теоретическая информатика. Введение в теорию автоматов, теорию вычислимости, теорию сложности, теорию алгоритмов, рандомизацию, теорию связи и криптографию: Пер. с нем. — СПб.:БХВ-Петербург, 2010. — С. 87. — ISBN 978-5-9775-0406-5 | ||
+ | * ''John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman'' Introduction to Automata Theory, Languages, and Computation. Second edition. P. 71. ISBN 0-201-02988-X | ||
[[Категория: Теория формальных языков]] | [[Категория: Теория формальных языков]] | ||
[[Категория: Автоматы и регулярные языки]] | [[Категория: Автоматы и регулярные языки]] |
Версия 20:45, 21 октября 2013
Определение: |
Недетерминированный конечный автомат или НКА (NFA — Nondeterministic Finite Automaton) — пятёрка ДКА — существование нескольких переходов по одному символу из одного состояния. | , где — алфавит, — множество состояний автомата, — начальное состояние автомата, — множество допускающих состояний автомата, — функция переходов. Таким образом, единственное отличие НКА от
Содержание
Процесс допуска
НКА допускает слово
, если существует путь из начального состояния в какое-то терминальное, такое что буквы, выписанные с переходов на этом пути по порядку, образуют слово . Теперь это опишем более формально.
Определение: |
Мгновенное описание — пара | , , .
Определим некоторые операции для мгновенных описаний.
Определение: |
Говорят, что
| выводится за один шаг из , если:
Определение: |
Рефлексивно-транзитивное замыкание отношения И говорят, что выводится за ноль и более шагов из , если | обозначается как .
Определение: |
НКА допускает (accepts) слово | , если .
Язык автомата
Определение: |
Множество слов, допускаемых автоматом
| , называется языком НКА .
Язык НКА является автоматным языком, так как для любого НКА можно построить эквивалентный ему ДКА, а значит, вычислительная мощность этих двух автоматов совпадает.
Пример
Это НКА, который распознает язык из алфавита
, где на четвертой с конца позиции стоит 0.Алгоритм, определяющий допустимость автоматом слова
Постановка задачи
Пусть заданы НКА и слово
. Требуется определить, допускает ли НКА данное слово.Алгоритм
Определим множество всех достижимых состояний из стартового по слову
: .Заметим, что если
, то слово допускается, так как по определению . Таким образом, алгоритм состоит в том, чтобы построить .Очевидно, что
. Пусть мы построили , построим , где . Заметим, что , так как, .
Теперь, когда мы научились по
строить , возьмем и будем последовательно вычислять для .Таким образом, мы получим
, и всё, что осталось — проверить, есть ли в нём терминальное состояние.Псевдокод
for i = 1 to length(w) do for do accepts = False for do if accepts = True
Время работы алгоритма:
.См. также
Литература
- Ю. Громкович Теоретическая информатика. Введение в теорию автоматов, теорию вычислимости, теорию сложности, теорию алгоритмов, рандомизацию, теорию связи и криптографию: Пер. с нем. — СПб.:БХВ-Петербург, 2010. — С. 87. — ISBN 978-5-9775-0406-5
- John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman Introduction to Automata Theory, Languages, and Computation. Second edition. P. 71. ISBN 0-201-02988-X