Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Дискретная математика и теория алгоритмов. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать
существует путь вида

§ 11. Недетерминированные конечные автоматы с пустыми переходами

61

 

 

который начинается в 0, заканчивается в некотором с условием ( ) и вдоль

 

 

 

 

+1

дуг которого читается слово . Поскольку -н.к.а. A содержит дугу −−−→ , за-

ключаем, что ( , +1)

 

(

 

, +1) = ( , +1). Следовательно, в н.к.а.

 

( )

′ ′ +1

A существует дуга −−−→ . Кроме этого, автомат откуда следует, что ( )

Таким образом, в н.к.а. A

A содержит путь −→ . . . −→ ,

1 +1

0 −→ . . . −→ −−−→ ,

причём ( ) . Отсюда заключаем, что слово удовлетворяет условию (б). Пусть теперь для слова выполняется условие (б). Следовательно, существует

состояние такое, что в н.к.а. Aимеется путь вида

 

 

1

 

 

+1

 

 

 

0 −→ . . . −→ −−−→

 

и при этом выполняется условие ( ) .

 

 

 

( )

Так как ′ ′( , +1) =

 

( , +1), то существует состояние

такое, что ( , +1).

 

 

 

 

A

 

 

 

( )

 

 

 

 

 

Следовательно, в

 

-н.к.а. имеется дуга

 

 

 

 

+1

 

 

 

 

 

 

 

−−−→ .

 

 

Поскольку ( ) и в Aесть путь 0

1

 

 

−→ . . .

−→ , то для слова = 1 . . . и

состояния выполняется условие (б). Следовательно, в силу индукционного предположения, для и выполняется условие (а), т.е. в -н.к.а. A существует путь

 

 

 

1

 

 

 

 

 

 

0 −→ . . . −−→ ,

 

вдоль дуг которого читается слово 1 . . . = 1 . . . = ( > ).

Так как

 

( ), то в автомате A найдётся путь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

−→ . . . −→ .

 

Окончательно получаем существование в A пути

 

 

 

1

 

+1

 

 

 

 

0 −→ . . . −−→

−−−→ −→ . . . −→ ,

вдоль дуг которого читается слово 1 . . . +1

= , т.е. справедливо условие (а).

Таким образом, построенный н.к.а. Aраспознает язык (A).

Теорема 23. Для любого недетерминированного конечного автомата с пустыми переходами A существует детерминированный конечный автомат Aтакой, что

(A) = (A).

Доказательство. Конечно, утверждение теоремы является простым следствием теорем 21 и 22. Тем не менее мы приведём прямую конструкцию, преобразующую про-

извольный -н.к.а. в эквивалентный ему д.к.а.

Пусть A = , , , 0, — произвольный -н.к.а. Так же как и в доказательстве теоремы 22, для каждого состояния обозначим через ( ) его орбиту в автомате A и определим д.к.а. A= , , , 0, следующим образом:

62

 

Глава III. Конечные автоматы и формальные грамматики

 

 

 

 

 

 

 

(a) = ( );

 

 

 

 

 

 

(б) 0= ( 0);

 

 

 

=

?}

;

(в) =

{

 

|

 

 

 

 

̸

 

(г) для любого и каждого положим (см. пояснение на рисунке)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( , ) =

 

( ).

 

 

 

 

 

 

 

 

 

 

 

 

 

Δ( , )

 

 

 

 

 

 

 

1

 

 

-

 

 

-

 

= { 1, 2}

 

 

 

 

 

 

 

 

 

 

 

 

 

i1

 

 

 

i4

i7

( 1, ) = { 1, 2}

 

 

 

 

 

 

PP

PPqP

 

 

 

 

 

 

 

( 2, ) = { 3}

 

 

 

 

 

 

 

 

 

 

 

i1

 

3 i5

 

 

 

2

 

i2

 

 

 

( 1) = { 1, 4, 7}

 

PP

 

 

 

 

 

-

 

 

 

 

( 2) = { 2}

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 3) =

{

3, 5

, 6

 

i

PPqP

 

 

 

 

 

 

 

 

 

 

 

i3

 

 

 

i6

 

 

( , ) = { 1, . . . , 7}

Докажем, что для любого слова * и любого состояния следующие условия эквивалентны:

(а)В -н.к.а. A существует путь, который начинается в 0, заканчивается в и вдоль дуг которого читается слово .

(б)В д.к.а. Aсуществует путь, который начинается в ( 0), заканчивается в некотором и вдоль дуг которого читается слово .

Заметим, что если — выделенное состояние A, то условие (а) эквивалентно условию(A), а условие (б) — условию (A). Таким образом, (A) = (A).

Докажем индукцией по длине слова эквивалентность условий (а) и (б).

10. Пусть | | = 0, т. е. = . Тогда условие (а) эквивалентно тому, что в A существует путь вида

 

 

 

0 −→ 1

−→ . . . −→ −→

(включая случай, когда путь не содержит дуг), что, в свою очередь, эквивалентно условию ( 0). Покажем, что условие ( 0) эквивалентно (б). Действительно, если ( 0), то, взяв = ( 0), очевидно, получим условие (б). Если же в д.к.а. Aсуществует путь, начинающийся в ( 0), заканчивающийся в некотороми вдоль дуг которого читается пустое слово, то с необходимостью = ( 0).

Следовательно, ( 0).

20. Допустим, эквивалентность (а) и (б) уже доказана для произвольных слов длины . Докажем эквивалентность (а) и (б) для произвольного слова длины +1. Пусть = 1 . . . +1, где .

Пусть для слова выполняется условие (а). Следовательно, существуют состояния 1, 2 такие, что в -н.к.а. A имеется путь

 

1

 

+1

 

 

 

0 −→ . . . −−→ 1

−−−→ 2 −→ . . . −→ ,

где 1 . . .

= 1 . . . и

> . В частности, слово

= 1 . . . читается вдоль

дуг пути в A, который начинается в 0 и

заканчивается в 1, т.е. для слова и

состояния 1

выполняется условие (а). В силу индукционного предположения, для

 

 

§ 11. Недетерминированные конечные автоматы с пустыми переходами

 

 

63

 

и 1 выполняется условие (б), т.е. в д.к.а. Aсуществует путь, который начинается в

( 0), заканчивается в некотором 1

 

1

и вдоль дуг которого читается слово :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 0) −→ . . . −→ 1

 

 

 

 

 

 

 

 

 

 

Так как

2

 

(

,

+1

)

и

1

 

, то

(

)

 

(

,

+1

). Поскольку

 

 

(

),

 

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

2

 

 

1

 

 

 

 

 

2

 

заключаем, что

 

( ,

+1

). Следовательно, в д.к.а. Aсуществует дуга

 

+1

,

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

−−−→

 

 

где = ( ,

 

) и

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

+1

 

 

 

 

существует путь вида

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таким образом, в A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 0) −→

. . . −→ 1

−−−→ .

 

 

 

 

 

 

 

Отсюда заключаем, что слово удовлетворяет условию (б).

 

 

 

 

 

 

 

Пусть теперь для слова выполняется условие (б). Следовательно, существует

состояние 1′ ′ такое, что в д.к.а. Aимеется путь вида

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 0) −→

. . . −→ 1

−−−→ .

 

 

 

 

 

 

 

 

Так как

= ( ,

 

 

) =

 

 

 

 

 

 

 

( ) и

 

 

, то существуют состояния

 

 

 

 

 

 

 

 

1

 

 

такие, что

 

 

.

 

2

 

 

 

 

 

 

 

 

 

 

 

1

 

1и 2

 

 

 

 

 

+1

 

 

1

1

2

Δ( 1, +1)

 

 

 

 

 

 

 

 

 

 

 

 

 

( 1, +1)

 

 

 

 

 

 

 

 

 

( 2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поскольку 1 1

и в д.к.а. A

существует путь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 0) −→ . . . −→ 1,

 

 

 

 

 

 

 

 

 

 

 

то для слова = 1 . . . выполняется условие (б). Следовательно, в силу индукционного предположения, для и состояния 1 выполняется условие (а), т.е. в -н.к.а. A существует путь

1

 

,

0 −→ . . . −−→ 1

вдоль дуг которого читается слово 1 . . .

= 1

. . . = ( > ).

Так как 2 ( 1, +1), то в A имеется дуга

 

 

 

 

+1

 

 

 

1 −−−→ 2.

 

 

Так как ( 2), то в A найдётся путь

 

 

 

 

 

 

 

 

2 −→ . . . −→ .

 

Окончательно получаем существование в A пути

 

1

 

+1

 

 

0 −→ . . . −−→ 1

−−−→ 2

−→ . . . −→ ,

вдоль дуг которого читается слово 1 . . . +1 = , т.е. справедливо условие (а). Таким образом, построенный д.к.а. Aраспознаёт язык (A).

Пример (продолжение). Применим конструкцию из доказательства теоремы 23 к-н.к.а. A из предыдущего примера — получим следующий д.к.а. A, эквивалентный

исходному A:

64

Глава III. Конечные автоматы и формальные грамматики

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{

 

 

}

 

 

 

 

{

-

 

 

 

 

 

}

 

 

 

 

 

H

0

 

 

 

 

 

 

0, 1

, 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

dikQQQ

 

 

 

 

 

 

 

6idQkQQ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Q

{

 

 

}

 

 

 

 

 

 

 

 

Q

 

 

 

 

 

 

 

Q

1

, 2

 

 

 

 

 

 

 

 

Q

 

 

 

 

 

 

 

 

Q

 

 

 

 

 

 

 

 

 

Q

 

{ 2} iQQ

 

 

 

 

 

 

iQQ

 

 

 

 

 

 

 

di{ 0, 1}

 

 

 

 

 

 

 

 

 

 

 

 

 

QQ

 

?

 

 

 

 

QQ

 

 

?

 

 

 

 

Q

 

 

 

 

 

 

Q

 

 

 

 

 

 

 

 

sQ

 

 

 

 

 

 

 

sQ +

 

 

 

 

, -

?iQkQQQ

 

 

 

3{di0, 2}

 

 

 

 

 

 

 

 

QQ i

 

 

 

 

 

 

 

 

 

{ 1}

Заметим, что в полученном автомате состояния { 1}, { 2}, { 0, 1} и { 1, 2} яв-

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

di

 

 

 

 

 

 

 

{

0

}

{

-

 

, 2

}

 

H

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

 

 

 

?

 

 

, -

?i

 

 

{id0, 2}

Следствие 24. Для любого языка следующие утверждения эквивалентны:

(1)распознаётся некоторым детерминированным конечным автоматом.

(2)распознаётся некоторым недетерминированным конечным автоматом.

(3)распознаётся некоторым недетерминированным конечным автоматом с

пустыми переходами.

Доказательство. Импликации (1) (2) и (2) (3) очевидны. Справедливость импликации (3) (1) следует из теоремы 23.

Упражнения

1.Описать язык, распознаваемый следующим недетерминированным конечным автоматом с пустыми переходами:

,

(а) H i? - i

@

@

@ @@R@ i?

- di

6

- ?di

(б) H

 

 

-

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

i@

 

 

 

i@

 

 

 

i6

 

 

 

 

 

 

 

 

 

 

 

@

 

 

 

@

 

 

 

 

 

@

 

 

@

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

@

@

 

i

-

di

 

 

 

 

?

 

@

 

?

 

 

 

@R

 

 

 

R@

 

§ 12. Свойства автоматных языков

65

 

 

2.Используя конструкцию из теоремы 22, построить недетерминированные конечные автоматы, эквивалентные автоматам из упражнения 1.

3.Используя конструкцию из теоремы 23, построить детерминированные конечные автоматы, эквивалентные автоматам из упражнения 1.

§12. Свойства автоматных языков

В данном параграфе мы докажем важные теоретико-множественные свойства автоматных языков, а также покажем, что существуют неавтоматные языки.

Определение. Говорят, что подмножество множества замкнуто относительно операции : → , если для любых 1, . . . , имеет место ( 1, . . . , ) .

Теорема 25. Автоматные языки замкнуты относительно объединения, пересечения, дополнения, конкатенации и звёздочки Клини.

Доказательство. Для каждой из пяти операций мы неформально опишем, как по заданым автоматам, распознающим исходные языки, построить автомат, распознающий результат применения данной операции к исходным языкам. Заметим, что в силу теоремы 23 для каждого из случаев достаточно строить недетерминированный автомат с пустыми переходами.

Объединение. Пусть A1, A2 — детерминированные конечные автоматы над алфавитом . Нам необходимо определить автомат A такой, что (A) = (A1) (A2).

Можно считать, что множества состояний A1 и A2 не пересекаются, в противном случае следует переименовать состояния.

Автомат A строится следующим образом (см. схему построения на рисунке):

а) Соединим графические диаграммы автоматов A1 и A2 в одну, введя новое начальное состояние 0и добавив две дуги, выходящие из 0, входящие в старые начальные состояния и помеченные символом . (Считаем, что начальные состояния исходных автоматов перестают быть таковыми.)

б) Множеством выделенных состояний A будет объединение множеств выделенных состояний автоматов A1 и A2.

 

i

A1

di

H

0

 

*

i

A1

di

 

 

 

 

 

 

 

H

 

 

 

 

 

 

 

 

 

 

i

A2

di

H

H

 

 

i

A2

di

H

 

 

 

 

iHHHj

 

 

 

Такое описание однозначно задаёт автомат A. Рассмотрим произвольный путь по дугам автомата A, который начинается в 0и заканчивается в выделенном состоя- нии. Первым переходом такого пути обязан быть -переход, а остальные переходы

полностью содержатся внутри либо автомата A1, либо автомата A2. Следовательно, любое слово, распознаваемое A, — это слово, распознаваемое A1 или A2. С другой стороны, любое слово, распознаваемое A1 или A2, очевидно, распознаётся автоматом A. Таким образом, автомат A — искомый.

переходы полностью содержатся внутри автомата

66

Глава III. Конечные автоматы и формальные грамматики

 

 

 

 

 

Дополнение. Пусть д.к.а. A = , , , 0, распознаёт язык , т. е. для любого

слова * имеет место эквивалентность

*( 0, ) . Отсюда

вытекает эквивалентность

/

 

 

*(

, ) /

. Другими словами, имеет

место условие *

 

 

0

 

 

 

*( 0, ) . Отсюда делаем вывод, что д.к.а

A

= , , , 0, распознаёт дополнение

 

= * .

Пересечение. Замкнутость автоматных языков относительно пересечения следует из замкнутости относительно объединения и дополнения, а также из теоретико-

множественного тождества ∩ = .

Конкатенация. Пусть A1, A2 — детерминированные конечные автоматы над алфавитом , множества состояний которых не пересекаются. Построим автомат A,

распознающий язык (A1) (A2), следующим образом (см. схему построения на рисунке):

а) Соединим графические диаграммы автоматов A1 и A2, добавив новые дуги, выходящие из всех выделенных состояний автомата A1, входящие в начальное состо-

яние автомата A2 и помеченные символом .

б) Начальным состоянием полученного автомата объявляется начальное состояние A1.

в) Выделенными состояниями полученного автомата объявляются все выделен- ные состояния автомата A2. Других выделенных состояний нет.

 

id

 

 

 

 

 

H

 

 

H

H

 

di

HH

H

i

HHj

di

i A1

id

i

A2

 

i A1

* i A2

 

 

 

 

 

 

i

 

 

Любой путь вдоль дуг нового автомата, начинающийся в начальном состоянии и заканчивающийся в выделенном состоянии, разбивается на два участка. Первый

участок состоит только из дуг автомата A1 и заканчивается в одном из (бывших) выделенных состояний A1. Второй участок начинается с -перехода, остальные его A2, и заканчивается в одном из

выделенных состояний нового автомата. Отсюда следует, что (A) = (A1) (A2). Звёздочка Клини. По заданному д.к.а. A построим автомат A, распознающий

язык ( (A))*, следующим образом (см. схему построения на рисунке):

а) Введём новое начальное состояние 0, сделав его одновременно выделенным и добавив новую дугу, выходящую из 0, входящую в начальное состояние 0 автомата

A и помеченную символом .

б) Добавим в автомат A новые дуги, выходящие из всех выделенных состояний

автомата A, входящие в 0 и помеченные символом .

 

 

 

в) Выделенными состояниями автомата A

объявляются все выделенные состоя-

ния A и состояние 0.

 

 

 

 

 

 

 

 

 

 

 

di

A

 

 

 

 

H

i

 

HH H

id0

-

?

 

di

 

A

 

 

0

i

A

 

0

di

 

6

id

 

 

 

 

 

 

 

 

§ 12. Свойства автоматных языков

67

 

 

Докажем, что ( (A))* =

(A). Для этого сначала установим справедливость

включения ( (A))* (A).

Пусть слово ( (A))*. Если = , то (A)

в силу пункта (а). Если же ̸= , то слово представимо в виде = 1 . . . , где

(A) для каждого 1 6 6 . Следовательно, для каждого

1 6 6 слово

читается вдоль следующего пути в автомате A:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

2

 

 

 

,

 

 

 

 

 

0 = 0

−→ 1

−→ . . . −−→

 

 

 

 

в котором последнее состояние является выделенным в A. В силу пункта (а) для

= 1 в автомате Aсуществует -переход из 0

в 0

= 01

. Следовательно, слово 1

будет читаться вдоль следующего пути в автомате A:

 

 

 

 

 

 

 

 

 

 

11

 

21

 

1

 

 

 

 

 

 

 

 

01

11

1

 

 

 

 

 

 

 

0−→

−→

−→ . . . −−→ 11 .

 

 

 

 

В силу пункта (б) для 2 6

6 в новом автомате Aсуществует -переход из

состояния

−1

 

= 0

. Таким образом, для каждого

2 6 6

слово

 

 

−1

в состояние 0

 

 

 

 

 

 

 

 

:

 

 

будет читаться вдоль следующего пути в автомате A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

−1

 

 

1

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

−→ . . .

 

 

 

 

 

 

 

−1 −→ 0

−→ 1

−−→ .

 

 

 

 

Соединив последовательно все такие пути в одну цепочку, мы получим путь в автомате A, который начинается в состоянии 0, заканчивается в некотором выделенном состоянии автомата Aи вдоль дуг которого читается . Следовательно, (A).

Теперь установим обратное включение (A) ( (A))*. Пусть (A). Можно считать, что ̸= (случай пустого слова тривиален). Следовательно, читается

вдоль пути в автомате A, который начинается в состоянии 0и заканчивается в некотором выделенном состоянии . Поскольку в Aнет дуг, входящих в состояние

0, заключаем, что 0̸= . Поэтому состояние является выделенным и в исходном автомате A.

di

 

i

. . .

 

di

 

i

. . .

 

di

. . .

 

i

. . .

di

1

-

1

 

1

2

-

2

 

2

3

 

 

 

 

 

 

 

 

-

-

 

 

-

-

 

-

 

-

 

-

 

H

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поскольку = , первой дугой данного пути обязан быть -переход

 

 

.

̸

0

−→

0

 

Пусть в данном пути встречается ровно пустых переходов. Для 1 6 6

введём

следующие обозначения. Пусть -й пустой переход, встретившийся в данном пути,

имеет вид

 

 

 

. Тогда

 

=

и для каждого 2

6

 

6

состояние

 

является

 

 

−→

 

 

1

0

 

 

 

 

6 . Для

выделенным в исходном автомате A. Кроме этого, = 0

для всех 1 6

1 6 6 − 1 обозначим через

слово, которое читается вдоль участка пути,

начинающегося в и заканчивающегося в +1. Через обозначим слово, которое читается вдоль участка пути, начинающегося в и заканчивающегося в .

Для каждого 1 6 6 участок пути, вдоль которого читается , полностью содержится в автомате A, начинается в состоянии 0 и заканчивается в некотором

выделенном состоянии автомата A. Следовательно, (A) для всех 1 6 6 . Таким образом, = 1 . . . ( (A))*.

68 Глава III. Конечные автоматы и формальные грамматики

Замечание. В предыдущей теореме можно предложить прямое доказательство замкнутости автоматных языков относительно операции пересечения, а именно: если заданы два д.к.а. A1 = 1, , 1, 01, 1 и A2 = 2, , 2, 02, 2 , то определим д.к.а.

A1 × A2, который называется прямым произведением исходных автоматов, следующим образом: A1 × A2 = 1 × 2, , , 01, 02 , 1 × 2 , где функция перехода( 1, 2 , ) = 1( 1, ), 2( 2, ) для любых 1 1, 2 2, . Несложно убедиться в том, что (A1 × A2) = (A1) ∩ (A2).

Теорема 26. Любой конечный язык является автоматным.

Доказательство. а) Нетрудно построить в явном виде автоматы, распознающие языки ?, { }, { }, где — буква.

б) Из (а) и теоремы 25 (конкатенация) следует, что любой язык вида { }, где

— слово, является автоматным.

в) Из (б) и теоремы 25 (объединение) следует, что любой непустой конечный язык является автоматным.

Лемма 27 (о накачивании). Пусть — автоматный язык. Тогда найдётся > 1 такое, что для любого слова , где | | > , существует представление в виде= , где ̸= , | | 6 и для всех > 0.

Доказательство. Пусть A — д.к.а. такой, что (A) = , и пусть — число состояний автомата A. Рассмотрим произвольное слово со свойством | | > . Следовательно, можно представить = 1 . . . +1 . . . , где — буквы. Так как распознаётся автоматом A, то существует путь по дугам A, начинающийся в начальном состоянии, заканчивающийся в выделенном состоянии и вдоль которого читается слово .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

. . .

- i -. . .

- i -. . .

- i -. . .

- di

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+1

 

 

 

H

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим первые переходов в этом пути, вдоль которых читаются первые букв слова . Так как число состояний, пройденных на этом участке пути, равно+ 1, то существует хотя бы одно состояние , которое встречается не менее двух раз.

Пусть — часть слова 1 . . . , которая читается от начального состояния до первого попадания в состояние ; — часть слова 1 . . . , которая читается от первого попадания в состояние до последнего попадания в состояние ; — остальная часть(см. рисунок). Тогда ̸= и | | 6 . Кроме этого, чтение подслова начинается и заканчивается в состоянии . Следовательно, этот участок можно удалить из

нашего пути или пройти по нему произвольное количество раз. Отсюда заключаем, что слово (A) для всех > 0.

Замечание. Формальная запись утверждения леммы о накачивании имеет достаточно сложную логическую структуру:

( — автоматный −→ ( > 1

& [( & | | > ) −→

 

))]) ).

, , ( = &

̸= & | | 6 & ( > 0 →

| | > . Тогда по лемме можно представить
= { | } над алфавитом { , }. Допу-

§ 12. Свойства автоматных языков

69

 

 

С точностью до эквивалентности записанная выше формула имеет кванторную приставку , , с пятью группами чередующихся кванторов. Важно также

помнить, что если в логической формуле вида посылка ложна, то независимо от значения формула истинна. В частности, утверждение леммы о накачивании остаётся верным и для слов с условием | | < .

Следствие 28. Существуют неавтоматные языки.

Доказательство. Рассмотрим язык стим, — автоматный. Следовательно, существует > 1, как в лемме о накачивании. Рассмотрим слово . Длина

= , где ̸= , | | 6 и для любого > 0. Отсюда следует, что существует > 1 такое, что = , и слово не содержит букв . Следовательно, слово = , что невозможно, поскольку − < . Таким образом, не является автоматным.

Замечание. Лемма о накачивании — это необходимое условие автоматности языка. Это условие является достаточно сильным и демонстрирует определённую ограниченность вычислительных возможностей конечных автоматов. Например, как мы заметили, никакой конечный автомат не способен распознать язык { | }.

Однако несложно построить формальную грамматику, которая порождает этот язык. Другими словами, не любую алгоритмически разрешимую задачу можно решить с помощью конечных автоматов. Тем не менее язык конечных автоматов оказывается достаточным для алгоритмического описания многих важнейших классов задач в различных разделах математики и приложениях.

Упражнения

1.Доказать, что прямое произведение A1 × A2 детерминированных конечных ав- томатов A1 и A2 распознаёт язык (A1) ∩ (A2).

2.Почему доказательство теоремы 25 (звёздочка Клини) будет неверным, если просто сделать начальное состояние 0 выделенным и добавить новые -

переходы из всех выделенных состояний в состояние 0 (не вводя новое на-

чальное состояние 0)? Привести пример автомата, показывающий, что такое доказательство не верно.

3.Доказать, что следующие языки не являются автоматными:

(а){ | , — простое};

(б) { 2 | };

(в) { | { , }*};

(г) { | { , }*};

(д) { { , }* | имеет одинаковое число вхождений и };

(е) {1 01 01 + | , , , > 1}.

4. Арифметической прогрессией назовём любое множество { + | }, где и — некоторые натуральные числа.

(а) Доказать, что если { }* и { | } является арифметической прогрессией, то — автоматный язык;

70

Глава III. Конечные автоматы и формальные грамматики

 

 

(б) Доказать, что если { }* и { | } является объединением конечного числа арифметических прогрессий, то — автоматный язык;

(в) Доказать, что если { }* — автоматный язык, то { | } является объединением конечного числа арифметических прогрессий.

§ 13. Регулярные выражения и языки

В этом параграфе будет предложен другой подход для описания класса автоматных языков. Будет доказано, что автоматные языки — это в точности те языки, которые имеют «синтаксическое» описание в терминах регулярных выражений.

Определение. Пусть — конечный алфавит, не содержащий символов (, ), , *. Определим по индукции множество регулярных выражений над алфавитом :

10. Множества ? и , где , являются регулярными выражениями.

20. Если и — регулярные выражения, то ( ), ( ) и ( *) тоже являются

регулярными выражениями.

Таким образом, слово в алфавите {(, ), , *} называется регулярным выражением, если оно может быть получено конечным числом применений пунктов 10 и 20.

Замечание. В дальнейшем мы будем опускать некоторые (в том числе внешние) скобки при записи регулярных выражений, как это делается в обычной алгебре, считая, что операции имеют следующий приоритет: * — самая сильная операция,

далее идёт , а операция — самая слабая. Например, запись * на самом деле означает ((( *) ) ( )).

Определение. Определим отображение из множества всех регулярных выражений над алфавитом в множество всех языков над следующим образом:

(?) = ?,

( ) = { }, для любого ,

( ) = ( ) ( ),

( ) = ( ) ( ),

( *) = ( )*.

Определение. Язык над алфавитом называется регулярным, если существует регулярное выражение над алфавитом такое, что ( ) = . При этом будем говорить, что выражение задаёт язык .

Замечание. Семейство всех регулярных языков над алфавитом можно опреде-

лить, не прибегая к понятию регулярного выражения. Такое определение эквивалентно предыдущему и использует индукцию по количеству применений операций конкатенации, объединения и звёздочки Клини:

10. Языки ? и { }, где , являются регулярными над алфавитом .

20. Если 1 и 2 — регулярные языки над алфавитом , то языки 1 2, 1 2 и*1 тоже являются регулярными над алфавитом .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]