Опубликован: 09.07.2007 | Уровень: профессионал | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 2:

Слова, языки и грамматики

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >
Аннотация: В данной лекции определяются такие основные понятия, как алфавит, слово, язык над данным алфавитом - и вводятся обозначения для пустого слова, конкатенации слов, степени слова, длины слова, количества вхождений данного символа. Приведены практические примеры и упражнения для закрепления материала

В начале этой лекции определяются основные понятия, используемые в дальнейшем: алфавит, слово, язык над данным алфавитом - и вводятся обозначения для пустого слова, конкатенации слов, степени слова, длины слова, количества вхождений данного символа. В разделе 1.2 фиксируются обозначения для префикса и суффикса слова, а также для ряда операций над языками, таких как конкатенация, итерация, обращение. При беглом чтении раздел 1.3, где определяются образ и полный прообраз языка при гомоморфизме, можно пропустить: вводимые в этом разделе понятия понадобятся только в лекциях "4" , "11" и "13" .

Используемые в приложениях формальные языки, как правило, являются бесконечными. Очевидно, нужен способ конечного описания формального языка. В данном курсе изучаются несколько классических средств: порождающие грамматики, автоматы, регулярные выражения. Определению понятий грамматики и порождаемого ею языка посвящен раздел 1.4. В конце первой лекции вводятся классы грамматик, образующие иерархию Хомского: грамматики типа 0 (все порождающие грамматики), грамматики типа 1 (контекстные грамматики), грамматики типа 2 (контекстно-свободные, или бесконтекстные, грамматики), грамматики типа 3 (праволинейные грамматики), а также менее важный класс линейных грамматик, промежуточный между классами грамматик типа 2 и 3.

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

1.1. Формальные языки

Определение 1.1.1. Будем называть натуральными числами неотрицательные целые числа. Множество всех натуральных чисел {0, 1, 2, ...} обозначается N.

Определение 1.1.2. Алфавитом называется конечное непустое множество. Его элементы называются символами ( буквами ).

Определение 1.1.3. Словом ( цепочкой, строкой, string) в алфавите \Sigma называется конечная последовательность элементов \Sigma.

Пример 1.1.4. Рассмотрим алфавит \Sigma = {a, b, c}. Тогда baaa является словом в алфавите \Sigma.

Определение 1.1.5. Слово, не содержащее ни одного символа (то есть последовательность длины 0 ), называется пустым словом и обозначается \varepsilon.

Определение 1.1.6. Множество всех слов в алфавите \Sigma обозначается \Sigma ^*.

Замечание 1.1.7. Множество \Sigma ^* счетно. В самом деле, в алфавите \Sigma множество всех слов данной длины конечно, следовательно, \Sigma ^* является объединением счетного числа конечных множеств.

Определение 1.1.8. Множество всех непустых слов в алфавите \Sigma обозначается \Sigma ^+.

Пример 1.1.9. Если \Sigma = {a}, то \Sigma ^+ = {a,aa,aaa,aaaa,...}.

Определение 1.1.10. Если L \subseteq \Sigma ^*, то L называется языком (или формальным языком ) над алфавитом \Sigma.

Поскольку каждый язык является множеством, можно рассматривать операции объединения, пересечения и разности языков, заданных над одним и тем же алфавитом (обозначения L_1 \cup L_2,\; L_1 \cap L_2,\; L_1 - L_2 ).

Пример 1.1.11. Множество {a, abb} является языком над алфавитом {a, b}.

Определение 1.1.12. Пусть L \subseteq \Sigma ^*. Тогда язык \Sigma ^* - L называется дополнением языка L относительно алфавита \Sigma. Когда из контекста ясно, о каком алфавите идет речь, говорят просто, что язык \Sigma ^* - L является дополнением языка L.

Определение 1.1.13. Если x и y - слова в алфавите \Sigma, то слово xy (результат приписывания слова y в конец слова x ) называется конкатенацией,( катенацией, сцеплением ) слов x и y. Иногда конкатенацию слов x и y обозначают x \cdot y.

Определение 1.1.14. Если x - слово и n \in N, то через xn обозначается слово \underbrace{ x \cdot x \cdot \ldots \cdot x }_{n \text{ раз}}. Положим x^0 \rightleftharpoons \varepsilon (знак \rightleftharpoons читается "равно по определению"). Всюду далее показатели над словами и символами, как правило, являются натуральными числами.

Пример 1.1.15. По принятым соглашениям ba3 = baaa и (ba)3 = bababa.

Пример 1.1.16. Множество \{ a^k b a^l \mid k \leqslant l \} является языком над алфавитом {a,b}. Этот язык содержит слова b, ba, aba, baa, abaa, baaa, aabaa, abaaa, baaaa и т. д.

Определение 1.1.17. Длина слова w, обозначаемая |w|, есть число символов в w, причем каждый символ считается столько раз, сколько раз он встречается в w.

Пример 1.1.18. Очевидно, что |baaa| = 4 и | \varepsilon | = 0.

Определение 1.1.19. Через |w|a обозначается количество вхождений символа a в слово w.

Пример 1.1.20. Если \Sigma = \{ a , b , c \}, то |baaa|a = 3, |baaa|b = 1 и |baaa|c = 0.

Упражнение 1.1.21. Перечислить слова языка L_1 \cap L_2, где L_1 = \{ (ab)^n \mid n \geqslant 0 \} и L_2 = \{ a^m b^m \mid m \geqslant 0 \}.

Упражнение 1.1.22. Пусть \Sigma = \{a,b,c\}. Равны ли языки \{ (abc)^n a \mid n \geqslant 2 \} и L_2 = \{ ab (cab)^n ca \mid n \geqslant 1 \}?

Упражнение 1.1.23. Пусть \Sigma = \{a,b,c\}, L_1 = \{ w \in \Sigma ^* \mid | w | = 4 \} и L_2 = \{ w \in \Sigma ^* \mid | w |_c = 1 \}. Сколько слов содержит язык L1 - L2?

Упражнение 1.1.24. Пусть даны такие алфавиты \Sigma_1 и \Sigma_2, что \Sigma_1 - \Sigma_2 \neq \varnothing. В каком случае \Sigma_1 ^+ - \Sigma_2 ^* = ( \Sigma_1 - \Sigma_2 )^+?

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >
Юлия Маковецкая
Юлия Маковецкая

Упражнение 2.1.25

Евгения Гунченко
Евгения Гунченко

Сдавала тест экстерном, результат получен 74 после принятия данного результата и соответственно оплаты курса, будет ли выдано удостоверение о повышении квалификации?

Юрий Фролов
Юрий Фролов
Украина
Руслан Мухамедьяров
Руслан Мухамедьяров
Россия, Казань, КФУ