Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Формальные языки и грамматики. Учебное пособие для студентов факультета компьютерных наук и информационных технологий.pdf
Скачиваний:
0
Добавлен:
09.08.2026
Размер:
457 Кб
Скачать

Глава 1 Формальные языки

1.1. Алфавит и цепочки

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

Определение 1 (Алфавит). Алфавитом называют конечное непустое множество символов.

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

Пример 1. Цепочка 011101 – цепочка в бинарном алфавите {0,1}. Цепочка abacdadba – цепочка в алфавите {a,b,c,d}.

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

Пустую цепочку будем обозначать ε.

Определение 4 (Длина цепочки). Длиной цепочки называют число позиций в ней. Длину некоторой цепочки w обозначают |w|.

Пример 2. Длина цепочки 011101 обозначается |011101| и равна 6. Длина цепочки abacdadba |abacdadba| = 9. Длина цепочки ε |ε| = 0.

Определение 5 (Конкатенация). Пусть α и β – цепочки. Тогда αβ обозначает их конкатенацию (соединение), т. е. цепочку, в которой последовательно записаны сначала символы цепочки α, а затем символы цепочки β.

Пример 3. Пусть α = 01101 и β = 110. Тогда αβ = 01101110, βα = 11001101.

Для любой цепочки γ справедливы равенства

εγ = γε = γ.

Определение 6 (Подцепочка). Пусть α – цепочка, представимая в виде α = = βγϕ, где β, γ, ϕ – некоторые цепочки. Тогда цепочки β, γ и ϕ называют подцепочками цепочки α. Подцепочку β называют префиксом цепочки α, а ϕ – суффиксом цепочки α. Если β =6 α, то β называют собственным префиксом. Если ϕ =6 α, то ϕ называют собственным суффиксом.

4

Определение 7 (Степень алфавита). Пусть Σ – некоторый алфавит. Определим Σk как множество всевозможных цепочек длины k, состоящих из символов алфавита Σ.

Пример 4. Заметим, что Σ0 = {ε} независимо от алфавита Σ, так как ε – единственная цепочка нулевой длины.

Если Σ = {0,1}, то Σ1 = {0,1}, Σ2 = {00,01,10,11}, Σ3 = {000,001,010, 011,100,101,110,111}. . .

Множество всех слов над алфавитом Σ обозначают Σ . Это множество можно определить как объединение всех степеней алфавита Σ:

Σ = Σ0 Σ1 Σ2 Σ3 ... = Σk.

k=0

Множество всех непустых цепочек над алфавитом Σ обозначают Σ+.

Определение 8 (Зеркальное отражение цепочки). Цепочку, в которой символы цепочки α выписаны в обратном порядке, называют зеркальным отражением (инверсией) цепочки α. Результат зеркального отражения цепочки α обозначают αR.

Пример 5.

1R = 1;

(011101)R = 101110;

 

εR = ε;

(0123456789)R = 9876543210.

1.2. Языки и операции над ними

Определение 9 (Язык). Множество L цепочек над фиксированным алфавитом Σ называют языком над этим алфавитом.

Заметим, что язык над алфавитом Σ не обязан использовать в своих словах все символы алфавита Σ. Иными словами, в алфавите могут присутствовать символы, которые не встречаются в словах языка. Поэтому если известно, что L – язык над Σ, то можно утверждать, что L – язык над любым алфавитом, содержащим все элементы Σ.

Пример 6. Рассмотрим несколько языков:

1)L = {ε, 01, 0011, 000111, 00001111, ...} – язык над алфавитом {0,1}, в каждом слове которого k единиц следуют за k нулями;

2)L = – пустой язык в любом алфавите;

3)L = {ε} – язык в любом алфавите, состоящий лишь из пустого слова;

4)L = {ε,01,10,0011,1100,1001,0110,0101,...} – язык над алфавитом {0,1},

в словах которого равное количество единиц и нулей.

Определение 10 (Конечный язык). Язык L называют конечным, если он содержит конечное число слов. В противном случае язык бесконечный.

5

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

Так как языки представляют собой множества, то все операции над множествами можно перенести на языки. Здесь приведем только дополнительные специфические операции.

Определение 11 (Разность языков). Разностью двух языков L1 и L2 называют третий язык L3, определенный следующим образом:

L3 = {α | α L1,α / L2}.

Пишут L3 = L1 − L2.

Определение 12 (Дополнение языка). Дополнением языка L над алфавитом Σ называют язык L, определенный следующим образом:

L = Σ − L.

Определение 13 (Конкатенация языков). Конкатенацией языков L1 и L2 называют третий язык L3, определенный следующим образом:

L3 = {αβ | α L1, β L2}.

Пишут L3 = L1L2.

Пример 7. Пусть L1 = {01,001}, L2 = {ε,1,00}. Тогда

L1L2 = {01,011,0100,001,0011,00100};

L2L1 = {01,001,101,1001,0001,00001}.

Определение 14 (Степень языка). Понятие степени некоторого языка L определяют следующим образом:

1)L0 = {ε};

2)L1 = L;

3)Lk+1 = LkL.

Пример 8. Если L = {1,01}, то

L0 ={ε};

L1 ={1,01};

L2 ={11,101,011,0101};

L3 ={111,1101,1011,10101,0111,01101,01011,010101}.

Определение 15 (Итерация языка). Итерацией языка L называют множе-

ство L всевозможных слов, составленных из слов языка L. Другими сло-

вами, L = Lk.

k=0

6

Определение 16 (Регулярные операции). Операции объединения, конкатенации и итерации называют регулярными.

Определение 17 (Положительная итерация языка). Положительной итера-

цией языка L называют множество L+ всех слов, составленных из одного

или более слов языка L. Другими словами, L+ = Lk.

k=1

Положительную итерацию языка L можно определить формулой

L+ = LL .

Определение 18 (Зеркальное отражение языка). Зеркальным отражением

(инверсией) языка L называют множество LR, составленное из инверсий

слов языка L:

LR = {a | aR L}.

Определение 19 (Подстановка). Пусть L – язык над алфавитом Σ, а для каждого символа a из Σ определен σ(a) – язык над некоторым алфавитом Σa. Доопределим

σ(ε) = ε, σ(XY ) = σ(X )σ(Y ), X ,Y Σ .

Такое отображение σ из Σ в множество слов над алфавитом Σ, где

Σ= Σa,

a Σ

называют подстановкой. Для языка L результатом операции подстановки

является язык L:

L= {w | w σ(V),V L}.

Пишут L= σ(L).

Пример 9. Пусть над алфавитом {0,1,2} задан язык L = {00,010,1210}, для которого задана подстановка σ:

σ(0) = {0,1};

σ(1) = {2};

σ(2) = {3,ε}.

Тогда

σ(00) = σ(0)σ(0) = {0,1}{0,1} = {00,01,10,11};

σ(010) = σ(0)σ(1)σ(0) = {0,1}{2}{0,1} = {020,021,120,121};

σ(1210) = σ(1)σ(2)σ(1)σ(0) = {2}{3,ε}{2}{0,1} = {2320,2321,220,221}.

Объединяя результаты подстановки в слова? получим результат подстановки σ в язык L:

σ(L) = {00,01,10,11,020,021,120,121,220,221,2320,2321}.

7

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