Недетерминированные конечные автоматы — различия между версиями
| Строка 22: | Строка 22: | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
| − | Рефлексивно-транзитивное замыкание отношения <tex> \vdash </tex> обозначается <tex> \vdash^*</tex>. Это отношение называется '''выводится за ноль или более шагов'''. | + | Рефлексивно-транзитивное замыкание отношения <tex> \vdash </tex> обозначается как <tex> \vdash^*</tex>. Это отношение называется '''выводится за ноль или более шагов'''. |
<!--Говорят, что <tex> \langle p, \beta \rangle</tex> '''выводится за ноль и более шагов''' из <tex>\langle q, \alpha \rangle </tex>, если <tex>\exists c_1, c_2 \ldots c_n</tex>: | <!--Говорят, что <tex> \langle p, \beta \rangle</tex> '''выводится за ноль и более шагов''' из <tex>\langle q, \alpha \rangle </tex>, если <tex>\exists c_1, c_2 \ldots c_n</tex>: | ||
* <tex>\langle q, c_1 c_2 \ldots c_n \beta\rangle \vdash \langle u_1, c_2 c_3 \ldots c_n \beta\rangle \vdash \langle u_2, c_3 \ldots c_n \beta\rangle \ldots \vdash \langle u_{n-1}, c_n \beta\rangle \vdash \langle p, \beta \rangle</tex>. --> | * <tex>\langle q, c_1 c_2 \ldots c_n \beta\rangle \vdash \langle u_1, c_2 c_3 \ldots c_n \beta\rangle \vdash \langle u_2, c_3 \ldots c_n \beta\rangle \ldots \vdash \langle u_{n-1}, c_n \beta\rangle \vdash \langle p, \beta \rangle</tex>. --> | ||
Версия 08:30, 21 января 2012
| Определение: |
| Недетерминированный конечный автомат (НКА) — пятерка , где — алфавит, — множество состояний автомата, — начальное состояние автомата, — множество допускающих состояний автомата, — функция переходов. Таким образом, единственное отличие НКА от ДКА — существование нескольких переходов по одному символу из одного состояния. |
Содержание
Процесс допуска
| Определение: |
| Мгновенное описание — пара , , . |
Определим некоторые операции для мгновенных описаний.
| Определение: |
Говорят, что выводится за один шаг из , если:
|
| Определение: |
| Рефлексивно-транзитивное замыкание отношения обозначается как . Это отношение называется выводится за ноль или более шагов. |
НКА допускает слово , если существует путь из начального состояния в какое-то терминальное, такое что буквы, выписанные с переходов на этом пути по порядку, образуют слово .
Теперь это опишем более формально.
| Определение: |
| НКА допускает слово , если . |
Язык автомата
| Определение: |
Множество слов, допускаемых автоматом , называется языком НКА .
|
Язык НКА является автоматным языком, так как для любого НКА можно построить эквивалентный ему ДКА, а значит, вычислительная мощность этих двух автоматов совпадает.
Пример
Это НКА, который распознает язык из алфавита , где на четвертой с конца позиции стоит 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