Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по ТА.docx
Скачиваний:
11
Добавлен:
24.09.2019
Размер:
355.83 Кб
Скачать

9. Недетерминированные конечные автоматы и их работа. Диаграмма и отношение переходов. Язык нка

Теория автоматов изучает абстрактные вычислительные устройства (машины).

Простейшие из таких вычислительных устройств называются конечными автоматами. Основной их характеристикой является то, что они являются моделью не всего программного обеспечения, а какой-то его части. Их особенностью является то, что в каждый момент они могут находиться только в одном из конечного числа состояний. Назначением каждого состояния - запоминание определенного момента истории системы.

Каждому автомату нужен алфавит. Алфавит – любое конечное множество. Элементы этого множества называются символами алфавита.

Опр. Цепочкой (словом) в данном алфавите называется конечная последовательность символов этого алфавита.

- пустая цепочка (цепочка, которая не содержит ни одного символа). Пустое слово принадлежит любому алфавиту.

Если цепочка непустая, например, w = a1a2a3 ak, то возникает понятие длины цепочки - число символов в ней. =k.

Пусть Σ – алфавит.

Опр. Степень алфавита – множество цепочек алфавита Σ длины k.

Σk = {w \ |w| = k}

Σ0 = {ε}

Σ = {0, 1}

Σ1 = {0, 1} ≠ Σ, Σ – множество элементов, Σ1 – множество однобуквенных слов.

Опр. Σ* - множество всех слов данного алфавита.

Σ+ - множество собственных слов не нулевой длины.

Σ+ =

Σ* =

Над множеством слов данного алфавита можно производить некоторые действия:

x = a1a2a3 ak, y = b1b2b3 bl.

Опр. x∙y = xy – конкатенация цепочек х и у. Это цепочка, полученная ху = a1a2a3 akb1b2b3 bl.

ху ≠ ух – конкатенация цепочек ху не совпадает с конкатенацией цепочек ух.

хх = хх или εх = хε

Когда строим слова, не обязательно использовать все символы алфавита.

Опр. Множество цепочек алфавита , каждая из которых принадлежит (множество всех слов данного алфавита), называется языком над этим алфавитом.

L(Σ) = {w\ w }

Если L – некоторый язык над каким-то алфавитом Σ, то L язык над , где Σ , т.к. если мы расширяем язык Σ, то слова Σ будут и словами Σ’.

Язык – это какое-то подмножество Σ.

Как задается язык?

1. язык можно задать, перечислив все его слова (если язык небольшой).

2. задать это множество с помощью характеристического свойства (регулярное выражение).

Опр. Есть некоторое конечное множество Q = , которое называется множеством состояний автомата, его элементы - состояния.

Опр. - конечное множество символов.

Опр. Недетерминированный конечный автомат (НКА) – упорядоченная пятёрка А=(Q, Σ, δ, q1, F), где:

Q= – мн-во состояний.

Σ= – мн-во символов - алфавит.

Q – начальное состояние

F – мн-во заключительных состояний, F

δ: (отношение, а не функция).

δ( ) = – отношение переходов.

Если автомат, прочитав некоторую цепочку (слово), приходит в заключительное состояние, то тогда автомат допускает эту цепочку.

Язык НКА – множество всех цепочек, которые он допускает. Множество цепочек допускается, если есть хотя бы один путь, по которому автомат приходит в заключительное состояние.

Множество состояний может состоять из одного состояния, тогда пишут {q1}.

Как задается отношение переходов δ?

Таблицей и диаграммой.

Пример. Множество всех цепочек, заканчивающихся на 01.

Σ Q

→q0

q1

*q2

0

{q0, q1}

1

{q0 }

{q2}

Опр. Расширенное отношение перехода – отношение, определённое на паре состояний цепочки и каждой паре состояний ставится в соответствие множество состояний цепочки.

– расширенная отношение.

– если на пустом слове функция не меняется.

Пусть w = xa

) =

Далее смотрим куда попадёт автомат, прочитав следующий символ из каждого состояния .

Опр. Если среди множества есть хотя бы одно заключительное состояние, то автомат допускает эту цепочку.

Опр. Язык НКА – множество тех цепочек, которые он допускает.

L(A) = { w\

.

Автомат, имея допустимую цепочку, может и не попасть в заключительное состояние.

Если автомат из начального состояния, прочитав допустимую цепочку, в заключительное состояние не попадает, то он просто умирает.

Теорема. Язык L допускается некоторым детерминированным конечным автоматом  он допускается некоторым недетерминированным конечным автоматом.

Док-во:

. L – язык некоторого ДКА. Докажем, что он является языком НКА.

Чтобы из ДКА сделать НКА, нужно сделать ещё один переход.

. Пусть L – язык НКА. Построим ДКА с тем же самым языком.

Для этого надо объединить какие-то состояния НКА. Объединение множества состояний НКА называется конструкцией подмножеств, т.е. надо выделить все подмножества Q. Строим булеан Q, всего их будет 2n.

Q(ДКА) = β(НКА).

, .

Покажем это на конкретном примере.

Σ Q

→q0

q1

*q2

0

{q0, q1}

1

{q0 }

{q2}

Цепочки вида: Х01

QN = {q0, q1, q2}

,

А

В

С

D

Е

F

H

G

{q0 }

{q1 }

{q2 }

{q0, q1}

{q1, q2}

{q0, q2}

{q0, q1, q2}

0

{q0, q1}

{q0, q1}

{q0, q1}

{q0, q1}

1

{q0 }

{q2 }

{q0, q2}

{q2 }

{q0 }

{q0, q2}

Получили ДКА.

Диаграмма переходов этого ДКА:

Опр. Язык, для которого существует автомат его допускающий, называется регулярным.