Определение 1.1.1. Будем называть натуральными числами
неотрицательные целые числа. Множество всех натуральных чисел {0, 1, 2, ...} обозначается N.
Определение 1.1.2. Алфавитом
называется конечное непустое множество. Его элементы называются символами
(буквами).
Определение 1.1.3.Словом (цепочкой, строкой, string) в алфавите называется
конечная последовательность элементов .
Пример 1.1.4. Рассмотрим алфавит = {a, b, c}. Тогда baaa
является словом в алфавите .
Определение 1.1.5. Слово, не содержащее ни одного символа
(то есть последовательность длины 0), называется пустым
словом и обозначается .
Определение 1.1.6. Множество всех слов в алфавите обозначается .
Замечание 1.1.7. Множество счетно. В самом деле, в алфавите множество всех
слов данной длины конечно, следовательно, является
объединением счетного числа конечных множеств.
Определение 1.1.8. Множество всех непустых слов в алфавите
обозначается .
Пример 1.1.9. Если = {a}, то = {a,aa,aaa,aaaa,...}.
Определение 1.1.10. Если ,
то L называется языком (или формальным
языком) над алфавитом .
Поскольку каждый язык является множеством, можно рассматривать
операции объединения, пересечения и разности языков, заданных над одним и тем
же алфавитом (обозначения ).
Пример 1.1.11. Множество {a, abb} является языком
над алфавитом {a, b}.
Определение 1.1.12. Пусть .
Тогда язык называется
дополнением языка L относительно алфавита . Когда из
контекста ясно, о каком алфавите идет речь, говорят просто, что язык является
дополнением языка L.
Определение 1.1.13. Если x и y
- слова в алфавите , то слово xy (результат приписывания
слова y в конец слова x) называется конкатенацией,
(катенацией, сцеплением) слов x и y.
Иногда конкатенацию слов x
и y обозначают .
Определение 1.1.14. Если x - слово и , то через xn обозначается
слово . Положим (знак читается
"равно по определению"). Всюду далее показатели над словами и
символами, как правило, являются натуральными числами.
Пример 1.1.15. По принятым соглашениям ba3 = baaa и (ba)3 = bababa.
Пример 1.1.16. Множество является языком над алфавитом {a,b}. Этот язык содержит
слова b, ba, aba, baa,
abaa, baaa, aabaa, abaaa,
baaaa и т. д.
Определение 1.1.17. Длина слова w, обозначаемая |w|, есть число символов в w, причем каждый символ считается столько раз,
сколько раз он встречается в w.
Пример 1.1.18. Очевидно, что |baaa| = 4 и .
Определение 1.1.19. Через |w|a обозначается количество вхождений
символа a в слово w.
Пример 1.1.20. Если ,
то |baaa|a = 3,
|baaa|b = 1 и
|baaa|c = 0.
Определение 1.2.1. Пусть . Тогда
Язык называется
конкатенацией языков L1 и L2.
Пример 1.2.2. Если L1 =
{a,abb} и L2
= {bbc,c}, то .
Определение 1.2.4. Пусть . Тогда
Пример 1.2.5. Если L = {akbal | 0 < k
< l}, то L2
= {akbalbam | 0 <
k < l - 1, m > 1}.
Определение 1.2.7. Итерацией языка (Kleene closure) языка L (обозначение L*) называется язык
Эта операция называется также звездочкой Клини (Kleene star, star
operation).
Пример 1.2.8. Если и L = {aa,ab,ba,bb}, то
Определение 1.2.11. Обращением или зеркальным
образом слова w
(обозначается wR)
называется слово, в котором символы, составляющие слово w, идут в обратном порядке.
Пример 1.2.12. Если w = baaca,
то wR = acaab.
Определение 1.2.13. Пусть . Тогда
Определение 1.2.15. Говорят, что слово x - префикс (начало) слова y (обозначение ), если y = xu для некоторого слова u.
Пример 1.2.16. Очевидно, что ,
, и .
Определение 1.2.17. Пусть . Тогда через Pref(L) обозначается множество, состоящее из всех префиксов слов языка L:
Определение 1.2.18 Говорят, что слово x - суффикс (конец)
слова y (обозначение ), если y = ux для некоторого слова u.
Определение 1.2.19. Пусть . Тогда через Suf(L) обозначается множество, состоящее из всех суффиксов слов языка L:
Определение 1.2.20. Говорят, что слово x - подслово (substring) слова y,
если y = uxv для некоторых слов u и v.