Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория Автоматов и Формальных Языков - Вопросы...docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
358.16 Кб
Скачать
  1. Детерминированный автомат-распознаватель.

Конечный автомат распознаватель задаётся как:

A = {X, S, S0, λ, F}

Где:

X – конечный входной алфавит.

S – конечное, непустое множество состояний.

S0 – начальное состояние автомата.

λ – функция переходов. λ: X * S → S

F – заключительное, или финальное состояние (их может быть несколько).

Такой конечный автомат называется детерминированным конечным автоматом или ДКА.

ДКА – допускает выходную цепочку x ∈ X (входящую в X), если цепочка x переводит ДКА в одно из финальных состояний.

Если ДКА распознаёт некоторое множество цепочек, то это множество образует язык допускаемый автоматом.

Язык, который распознаётся ДКА, называется автоматным.

Не для каждого языка, может быть построен ДКА. Следовательно, существует не автоматные языки.

В тоже время, любой конечный язык может быть задан ДКА, и поэтому все конечные языки – автоматные.

Пример:

Построить график переходов ДКА, если задан алфавит:

V = {a, b, c}

и язык:

L = {abc, cc}

фото.

S3 – финальное состояние.

фото

S6 – тупиковое состояние. В него возможно попасть, но невозможно выйти.

ДКА переход в заключительное состояние S3 или S5 из начального состояния S0 только при подаче на его вход состояний a, b, c или c, c. Состояние S6 называется тупиковым состоянием и не является финальным.

Подача на вход ДКА находящегося в состоянии S6 любого символа из словаря, не выводит ДКА из этого тупикового состояния.

При исследованиях ДКА используется принцип Дирихле. Пусть задана функция на конечных множествах A и B, причём мощность A больше …:

f: A → B

|A| > n|B| n ∈ N

Тогда, некоторое своё значение функция f примет хотя бы n+1 раз.

Для конечных множеств не существует инъекции более мощного множества в менее мощное.

Принцип голубятни:

Если голуби рассажены в клетках, причём голубей больше чем клеток, то по крайней мере в одной из клеток больше чем один голубь.

Пример:

Задан словарь

V = {0, 1}

и язык:

L = {0n, 1n| n ≥ 1}

Т.е. язык состоит из следующих цепочек:

01, 0011, 000111, и т.п.

Утверждается, что этот язык не автоматный.

Доказательство от противного:

Допустим что язык автоматный. Тогда, допускающий его ДКА должен иметь некоторое число внутренних состояний K = |S| (K – равно мощности этих состояний). Пусть на вход ДКА поступило K нулей и он находится в не финальном состоянии. Т.к. у ДКА есть только K состояний, то прочитав два префикса Oi и Oj, причём i ≠ j, согласно принципу Дирихле автомат будет находится в некотором состоянии q.

Пусть, после прочтения i или j нулей, на вход ДКА поступает единицы. Прочитав i единиц, ДКА должен перейти в финальное состояние и выдать на выходе: "да, слово принадлежит заданному языку" и "нет", если на вход было подано j нулей. Но, ДКА находится в состоянии q и не может помнить i или j нулей было подано перед этим на его вход.

  1. Лемма о "накачке".

(доказательство того, что язык является автоматным)

Допустим, что L – автоматный язык, тогда (∃ n ∈ N) [α ∈ L, |α| ≤ n] [xyz ∈ L]

Тогда:

[α = xyz & |xy| ≤ n & |y| ≥ 0] [∃ k ≥ 0]

Тогда:

[α = xyKz ∈ L]

Другими словамимими, если язык L – автоматный, то существует некоторое целое число n, такое что каждую цепочку α, принадлежащую языку L и удовлетворяющую условию |α| ≤ n, то такую цепочку можно разбить на три цепочки α = xyz, так что выполняются три условия:

  • |xy| ≤ n (мощность конкретизации(?) эти цепочек);

  • |y| ≥ 0;

  • Для любого целого k > 0, цепочка α xykz ∈ L.

Условие 3 говорит о том, что в цепочке α можно выделить подцепочку y, которую можно "накачать" k раз. Т.е. если цепочку y повторить любое число раз, или удалить её (k = 0), то, в результате, цепочка α всё равно будет принадлежать языку L.

Доказательство:

Пусть ДКА имеет n состояний. Рассмотрим цепочку α, длиной не меньше L.

α = a0, a1, a2, ..., am,

где:

ai – символы заданного алфавита

m > n

Для любого i = (от 0 до n) определим состояние ДКА Pi , как Si = {a0, a1, a2, ..., ai; S0}*λ

В этом случае, начальное состояние S­0 = P0.

Т.к. ДКА имеет всего n разных состояний, то, согласно принципу Дирихле, найдётся два целых разных числа i и j, такие что (0 ≤ i < j ≤ n), при которых Pi = Pj (принцип Дирихле).

Разобьём цепочку α на три подцепочки:

x = a0, a1, … ai;

y = ai+1, ai+2, … ai;

z = aj+1, aj+2, … am;

Из такого разбиения следует что цепочка x переводит ДКА в состояние pi, цепочка y переводит ДКА также в состояние pi, т.к. Pi = Pj, а цепочка z есть остаток всей цепочки α.

График переходов такого автомата.

фото.

При поступлении на вход ДКА цепочки x, из цепочки α = xykz, при k = 0, ДКА перейдёт из начального состоянии в состояние Pi, прочитав цепочку x. Т.к. k = 0, то цепочка z приведёт ДКА в некоторое финальное состояние. Если k > 0, то под воздействием цепочки x, ДКА перейдёт в некоторое состояние S1, т.к. yk, он циклически будет переходить в это состояние. Прочитав цепочку y, k раз, получив на вход цепочку z, ДКА перейдёт в финальное состояние. Таким образом, при любом k, 0 ≤ k ≤ n, цепочка α = xykz допускается ДКА и, следовательно, она принадлежит языку L.