W2. Множества, алфавиты, формальные языки, операции над языками
1. Краткое содержание
1.1 Введение в множества
Множество — одно из самых фундаментальных понятий в математике и информатике. Множество — это хорошо определённая совокупность различных объектов, называемых элементами или членами. Говоря «хорошо определённое», мы имеем в виду, что должен быть ясный критерий: принадлежит объект множеству или нет — двусмысленности быть не должно.
Множества можно задать двумя основными способами:
1.1.1 Явное перечисление
Для конечных множеств или когда перечисление уместно, можно описать множество, перечислив все элементы в фигурных скобках. Например:
Эта запись говорит, что
Для бесконечных или очень больших конечных множеств иногда используют многоточие, чтобы указать закономерность:
Однако такая запись может быть неоднозначной: разные люди могут по-разному понять закономерность.
1.1.2 Задание множества через свойство (нотация с предикатом)
Более надёжный способ — указать свойство, которому должны удовлетворять элементы. Это называется заданием через свойство (set comprehension) или определением множества предикатом:
Читается: «
Вертикальная черта «
1.2 Основные обозначения и отношения между множествами
1.2.1 Принадлежность элемента
Чтобы записать, что элемент принадлежит множеству, используют символ
Утверждение истинно, потому что 2 действительно является элементом множества
Чтобы записать, что элемент не принадлежит множеству, используют
Это истинно, потому что 4 нет в этом множестве.
1.2.2 Пустое множество
Пустое множество, обозначаемое
1.2.3 Подмножества
Множество
Пример:
Важно: любое множество — подмножество самого себя. Пустое множество
1.2.4 Равенство множеств
Два множества равны, если и только если у них в точности одни и те же элементы. Математически
- каждый элемент
должен быть в , и - каждый элемент
должен быть в
1.3 Множества, элементами которых являются множества
Множества могут содержать другие множества как элементы. Например:
Множество
- если
, то (потому что — элемент ) - однако
(число 1 не является прямым элементом ; оно элемент элемента )
Различие между «
1.4 Операции над множествами
Подобно тому, как числа можно складывать и умножать, над множествами можно выполнять операции и получать новые множества. Наиболее распространённые:
1.4.1 Объединение
Объединение двух множеств
Здесь «
Пример: если
1.4.2 Пересечение
Пересечение множеств
Здесь «
Пример: если
1.4.3 Разность
Разность множеств
Пример: если
1.4.4 Объединение многих множеств
Объединение обобщается на любое число множеств. Если есть
или эквивалентно:
Это множество всех элементов, принадлежащих хотя бы одному из этих множеств.
1.5 Булеан (множество всех подмножеств)
По любому множеству
Пример: булеан
В нём
Почему обозначение
1.6 Алфавиты и строки
Алфавит — конечное множество символов. Алфавиты обычно обозначают греческой буквой
(двоичный алфавит) (латиница) (цифры)
Строка (также слово или последовательность) над алфавитом — конечная последовательность символов из этого алфавита. Повторения разрешены.
Примеры над
— строка (длина 3) — строка (длина 8) — строка (длина 1)
Длина строки
Пустая строка, обозначается
1.7 Множество всех строк
Для алфавита
Пример: для
Обычно строки перечисляют по возрастанию длины: сначала длина 0, затем 1, затем 2 и т.д.
1.8 Конкатенация строк
Как числа складывают, так строки конкатенируют. Если
Пример:
Важные свойства конкатенации:
- Ассоциативность:
для всех строк. От расстановки скобок результат не зависит. - Некоммутативность: вообще говоря,
. Порядок важен! - Нейтральный элемент:
. Конкатенация с пустой строкой не меняет строку.
Степенную запись используют для повторной конкатенации:
1.9 Формальные языки
Язык — множество строк над алфавитом. Точнее, язык
Языки могут быть конечными и бесконечными. Примеры:
- над
: множество всех двоичных строк длины 8 — язык: - над
: множество всех строк, начинающихся с 0: - над
: английские слова образуют язык - над
: десятичные записи чисел образуют язык
Термин «язык» широк, потому что охватывает и естественные языки (например английский), и формальные конструкции (множества двоичных строк, синтаксис языков программирования).
1.10 Операции над языками
Поскольку язык — множество, к языкам применимы все операции над множествами. Кроме того, из строк можно строить новые языки.
1.10.1 Множественные операции над языками
Основные:
- Объединение:
— строки хотя бы в одном языке - Пересечение:
— строки в обоих языках - Разность:
— строки из , не лежащие в - Дополнение:
— все строки над , не входящие в
1.10.2 Конкатенация языков
Если
Это множество всех строк, получаемых взятием строки из
Пример: если
Конкатенация языков в общем случае некоммутативна: обычно
Есть тонкое замечание: если
1.10.3 Степень языка
Степень языка получают повторной конкатенацией языка с самим собой. Для положительного целого
По определению
Пример: если
Для алфавита
1.10.4 Звезда Клини (замыкание Клини)
Звезда Клини — одна из важнейших операций в теории формальных языков. Для языка
Разберём определение:
- берём ноль или больше строк из
- конкатенируем их
— множество всех таких результатов- часть «ноль или больше» означает, что пустая строка
всегда входит в (ноль строк даёт )
Пример: если
Это все строки из символа
Другой пример: если
Звезду Клини называют «замыканием», потому что результат замкнут относительно конкатенации: если взять две строки из
1.10.5 Плюс Клини
Связанная операция — плюс Клини, обозначение
Это одна или более конкатенаций строк из
Пример: если
Разница: в
1.11 Кратко о специальных обозначениях
Для алфавита
(по соглашению, любая строка в степени 0 — пустая строка) (р а з -кратная конкатенация с собой) (все строки длины ровно над ) (все строки любой длины над ) (все непустые строки над )
2. Определения
- Алфавит: конечное множество символов, обычно обозначается
. Примеры: , или любое конечное множество различных символов. - Строка (также слово или последовательность): конечная последовательность символов алфавита, повторения разрешены. Длина строки
, , — число содержащихся в ней символов. - Пустая строка: единственная строка без символов, обозначается
(эпсилон). По определению . - Множество: хорошо определённая совокупность различных объектов — элементов. Множество определяется тем, какие объекты в него входят: для любого объекта либо он элемент, либо нет (без двусмысленности).
- Элемент: объект, принадлежащий множеству. Пишем
, если — элемент , и , если нет. - Подмножество:
— подмножество , пишут , если каждый элемент также элемент . Любое множество — подмножество самого себя; пустое множество — подмножество любого множества. - Пустое множество: единственное множество без элементов,
. Подмножество любого множества. - Равенство множеств:
и равны ( ) тогда и только тогда, когда у них одни и те же элементы, т.е. и . - Объединение множеств:
— множество элементов, принадлежащих или (или обоим): . - Пересечение множеств:
— элементы, принадлежащие и , и : . - Разность множеств:
или — элементы из , не лежащие в : . - Булеан (power set):
или — множество всех подмножеств , включая и само . Если , то . - Задание через свойство (set comprehension): способ задать множество свойством элементов:
означает « — множество всех , для которых истинно ». - Язык: язык
над — множество строк над , т.е. любое подмножество . Языки бывают конечными и бесконечными. : множество всех строк над , включая пустую; .- Конкатенация строк: склейка двух строк конец-в-начало. Для строк
и конкатенация (или ) — символы , затем символы . Ассоциативна, в общем случае не коммутативна. - Конкатенация языков:
— все строки из строки из и строки из . - Степень языка:
— -кратная конкатенация с собой. По соглашению . - Звезда Клини (замыкание Клини):
— все строки, получаемые конкатенацией нуля или более строк из : . Всегда содержит . - Плюс Клини:
— без пустой строки. - Дополнение языка: для
над дополнение (или ) — все строки над , не входящие в : . - Мощность (cardinality): для конечного
число — число элементов. Для бесконечных множеств мощность — более абстрактное понятие «размера». - Свободный моноид (free monoid):
с операцией конкатенации строк (string concatenation). Моноид — множество с ассоциативной бинарной операцией и нейтральным элементом (здесь ). «Свободный» значит отсутствие дополнительных ограничений на склейку строк.
3. Формулы
- Объединение:
- Пересечение:
- Разность:
- Объединение семейства множеств:
д л я н е к о т о р о г о - Мощность булеана: если
, то - Длина строки:
— число символов в ; - Конкатенация строк:
— символы , затем символы - Ассоциативность конкатенации:
для всех строк - Нейтральный элемент конкатенации:
для любой строки - Степень строки:
прир а з ; - Конкатенация языков:
- Степень языка:
;д л я в с е х - Звезда Клини:
- Плюс Клини:
- Строки фиксированной длины:
- Все строки над алфавитом:
- Все непустые строки:
- Дополнение языка:
4. Примеры
4.1. Определение множества по описанию (Лаба 2, Задание 1.1)
Определите множество
Показать решение
Ключевая идея: это множество состоит из одноэлементных множеств. Нужно перечислить такие
- Найти неотрицательные целые по условию: нужно
и , значит . - Построить одноэлементные множества:
- при
: - при
: - при
: - при
: - при
:
- при
- Собрать их в
:
Ответ:
4.2. Определение множества по описанию (Лаба 2, Задание 1.2)
Определите множество
Показать решение
Ключевая идея: это множество всех неотрицательных целых линейных комбинаций 3 и 5. Нужно понять, какие неотрицательные целые представимы в виде
- Перечислить элементы: подберём значения
и : : : : : : : :- и так далее…
- Какие числа представимы: можно показать, что любое неотрицательное целое, кроме 1, 2, 4 и 7, представимо в виде
. Это связано с задачей Фробениуса для монет 3 и 5: наибольшая невыразимая сумма равна . - Явная запись множества:
Ответ:
4.3. Равенство множеств (Лаба 2, Задание 1.3)
Равны ли множества
Показать решение
Ключевая идея: множество определяется только составом элементов, а не порядком перечисления.
- Элементы первого множества: в
— 0 и 1. - Элементы второго множества: в
— 1 и 0. - Сравнение: в обоих ровно элементы 0 и 1.
- Равенство: два множества равны тогда и только тогда, когда совпадают элементы. Значит
.
Ответ: да,
4.4. Равенство и повторы (Лаба 2, Задание 1.4)
Равны ли множества
Показать решение
Ключевая идея: в фигурных скобках повторы не создают «дополнительных» элементов; важны только различные элементы.
- Различные элементы первого множества: в
встречаются 0, 1 и 2 — множество различных: . - Различные элементы второго множества: в
— снова . - Сравнение: совпадают.
- Вывод: обе записи задают одно и то же множество.
Ответ: да,
4.5. Построение булеана (Лаба 2, Задание 2.1)
Постройте булеан множества
Показать решение
Ключевая идея: булеан содержит все подмножества, включая
- Все подмножества
:- без элементов:
- по одному элементу:
, - оба элемента:
- без элементов:
- Полнота: для каждого элемента выбор «включить / не включить»:
- исключить
и : - только
: - только
: - оба:
- исключить
- Счёт: 2 элемента
подмножества — перечислены все.
Ответ:
4.6. Построение булеана (Лаба 2, Задание 2.2)
Постройте булеан
Показать решение
Ключевая идея: сначала упростить множество (объединение), затем перечислить подмножества.
- Объединение:
. - Подмножества
:- 0 элементов:
- 1 элемент:
, , - 2 элемента:
, , - 3 элемента:
- 0 элементов:
- Счёт: 3 элемента
подмножеств.
Ответ:
4.7. Построение булеана (Лаба 2, Задание 2.3)
Постройте булеан
Показать решение
Ключевая идея: у одноэлементного множества ровно
- Подмножества
:
Ответ:
4.8. Операции и булеан (Лаба 2, Задание 2.4)
Постройте булеан
Показать решение
Ключевая идея: сначала пересечение, затем булеан.
- Пересечение: элементы, лежащие в обоих множествах.
- 0 только в первом — нет.
- 1 в обоих — да.
- 2 только в первом — нет.
- 3 в обоих — да.
- 4 только в первом — нет.
- 5 только во втором — нет.
только во втором — нет.
- Булеан
:
Ответ:
4.9. Операции и булеан (Лаба 2, Задание 2.5)
Постройте булеан
Показать решение
Ключевая идея: сначала разность, затем булеан.
- Разность: элементы первого, которых нет во втором.
- 0: в первом, не во втором — да.
- 1: в обоих — нет.
- 2: в первом, не во втором — да.
- 3: в обоих — нет.
- Булеан
:
Ответ:
4.10. Булеан пустого множества (Лаба 2, Задание 2.6)
Постройте булеан
Показать решение
Ключевая идея: единственное подмножество пустого множества — само пустое множество.
- Подмножества
: только . - Счёт: 0 элементов
подмножество.
Ответ:
4.11. Основы формального языка (Лаба 2, Задание 2.7)
Определите
Показать решение
Ключевая идея:
- Строки длины 0: существует ровно одна —
. - Вывод:
Ответ:
4.12. Все строки заданной длины (Лаба 2, Задание 2.8)
Определите
Показать решение
Ключевая идея:
- Число строк: на каждой из 4 позиций 0 или 1, всего
строк. - Перечисление:
- с префиксом 00:
- с префиксом 01:
- с префиксом 10:
- с префиксом 11:
- с префиксом 00:
Ответ:
4.13. Булеан алфавита (Лаба 2, Задание 2.9)
Определите
Показать решение
Ключевая идея:
- Подмножества
: ,
- Счёт: 2 элемента
4 подмножества.
Ответ:
4.14. Булеан множества всех строк (Лаба 2, Задание 2.10)
Определите
Показать решение
Ключевая идея:
- Структура:
— все конечные двоичные строки. : булеан бесконечного множества бесконечен (более того, мощность выше, чем у ).- Примеры элементов
: (пустой язык)- множество всех строк, начинающихся с 0
- множество всех строк чётной длины
- любое другое подмножество
Ответ:
4.15. Алфавиты для языков (Лаба 2, Задание 3.1)
Укажите возможный алфавит для языка
Показать решение
Ключевая идея: алфавит должен содержать все символы, встречающиеся в строках языка.
- Строки:
- Символы:
- в «oh»:
, - в «ouch»:
, , , - в «ugh»:
, ,
- в «oh»:
- Совокупность:
- Проверка: каждая строка составлена только из этих символов.
Ответ: например
4.16. Алфавиты для языков (Лаба 2, Задание 3.2)
Укажите возможный алфавит для языка
Показать решение
Ключевая идея: в алфавит входят все символы, встречающиеся в строках языка.
- Символы:
- в «apple»:
- в «pear»:
- в «4711»:
- в «apple»:
- Без повторов:
Ответ: например
4.17. Алфавиты для языков (Лаба 2, Задание 3.3)
Укажите возможный алфавит для языка всех двоичных строк.
Показать решение
Ключевая идея: двоичные строки используют только 0 и 1.
- Нужные символы: последовательности из нулей и единиц.
Ответ:
4.18. Звезда Клини на разных алфавитах (Лаба 2, Задание 3.4)
Что даёт
Показать решение
Ключевая идея:
- Описание:
- Смысл: все конечные двоичные строки, включая пустую.
Ответ:
4.19. Звезда Клини на разных алфавитах (Лаба 2, Задание 3.5)
Что даёт
Показать решение
Ключевая идея: при одном символе в алфавите
- По длинам:
- длина 0:
- длина 1:
- длина 2:
- длина 3:
- и т.д.
- длина 0:
- Запись:
Ответ:
4.20. Звезда Клини от пустого алфавита (Лаба 2, Задание 3.6)
Что даёт
Показать решение
Ключевая идея: без символов нельзя построить непустую строку; остаётся только пустая.
- Анализ: непустая строка требует хотя бы один символ из алфавита — их нет.
Ответ:
4.21. Определение алфавита (Лаба 2, Задание 4.1)
Для языка
Показать решение
Ключевая идея: смотрим, какие символы встречаются в строках языка.
- Наблюдение: язык содержит все строки из символов 0 и 1.
- Алфавит: только 0 и 1.
Ответ:
4.22. Определение алфавита (Лаба 2, Задание 4.2)
Для языка
Показать решение
Ключевая идея: какие символы появляются в языке.
- Наблюдение: все строки — повторы символа
.
Ответ:
4.23. Дополнение языка (Лаба 2, Задание 4.3)
Пусть
Показать решение
Ключевая идея: дополнение — все строки над
- Определение:
- Описание: все двоичные строки, кроме 010, 101 и 11. В частности:
- строки длины 1:
- строки длины 2:
(11 исключена) - строки длины 3, кроме 010 и 101:
- все строки длины 4 и далее
- Явно:
Ответ:
4.24. Дополнение языка (Лаба 2, Задание 4.4)
Пусть
Показать решение
Ключевая идея: нужно дополнение к языку «все строки, кроме 110».
Исходный язык:
— все двоичные строки, кроме 110.Дополнение:
По теории множеств
Проверка:
разбивается на строки из и единственную строку 110.
Ответ:
4.25. Разность булеанов (Лаба 2, Задание 4.5)
Определите множество
Показать решение
Ключевая идея: сначала булеаны, затем разность.
: :- Разность: элементы первого, отсутствующие во втором.
и — в обоих — только в первом — только в первом
- Результат:
Ответ:
4.26. Задание через свойство (Лаба 2, Задание 4.6)
Определите множество
Показать решение
Ключевая идея: это значения
- Условие:
и . - Перебор:
.- …
- Итог:
Ответ:
4.27. Конкатенация языков (Лаба 2, Задание 5.1)
Пусть
Показать решение
Ключевая идея:
(a) Дополнение
: — только , без . — все строки над , не из .- Характеризация: строки, в которых есть хотя бы один
. - Запись:
с о д е р ж и т х о т я б ы о д и н
(b) Звезда Клини
- Определение:
- Анализ: конкатенируем ноль или более строк вида
, . - Склейка:
- Вывод: сумма неотрицательных целых даёт любое неотрицательное целое в показателе:
Ответ:
с о д е р ж и т х о т я б ы о д и н
4.28. Конкатенация языков (пример) (Лаба 2, Задание 5.2)
Пусть
Показать решение
Ключевая идея:
- Элементы:
— 3 строки, — 2 строки. - Все склейки:
- Без дубликатов:
Ответ:
4.29. Конкатенация языков (пример) (Лаба 2, Задание 5.3)
Пусть
Показать решение
Ключевая идея: раскрыть степени;
- Явно:
- Все произведения:
, , , , , ,
- Результат:
Ответ:
4.30. Степень языка (Лаба 2, Задание 5.4)
Пусть
Показать решение
Ключевая идея:
- Пары:
, , , , , ,
- Дубликатов нет.
Ответ:
4.31. Описание языка словами (Лаба 2, Задание 5.5)
Опишите словами язык
Показать решение
Ключевая идея:
- Нотация:
— все строки из символов и . - Состав:
- длина 1:
- длина 2:
- длина 3:
- и далее…
Ответ: язык всех конечных строк над алфавитом
4.32. Описание языка словами (Лаба 2, Задание 5.6)
Опишите словами язык
Показать решение
Ключевая идея: объединение двух звёзд Клини — строки только из
: :- Объединение:
Ответ: язык всех строк, состоящих либо только из
4.33. Описание языка словами (Лаба 2, Задание 5.7)
Опишите словами язык
Показать решение
Ключевая идея: в пересечении — то, что есть и там, и там.
: строки без : строки без- Пересечение: одновременно без
и без — только . - Итог:
Ответ: язык, состоящий только из пустой строки:
4.34. Описание языка словами (Лаба 2, Задание 5.8)
Опишите словами язык
Показать решение
Ключевая идея: разность языков, связанных с чётными повторами
: конкатенации строки «aa»: — все строки из чётной длины. : — длина делится на 4.- Разность: в первом, но не во втором — чётная длина, не кратная 4.
- Характеризация: длины
, т.е. длина
Ответ: строки из символов
4.35. Раскрытие степенной записи (Лаба 2, Задание 5.9)
Запишите явно:
Показать решение
Ключевая идея: степень — повторение строки или символа.
: пять нулей: : три нуля и три единицы: : «010» два раза: : в формулировке задания опечатка; по смыслу имеется в виду и затем символ : : степень 0 даёт пустую строку:
Ответ:
(пустая строка)
4.36. Сложные операции над языками (Лаба 2, Задание 6.1)
Рассмотрим языки над
Найти: 1.
Показать решение
Ключевая идея: сначала уточним каждый язык.
- Языки:
— строки из одинаковых символов (все нули или все единицы, длина )Формально:
— все двоичные строки — — — все непустые:
(Часть 1a:
- Значит
(Часть 1b:
(Часть 2a:
(Часть 2b:
- строки длины 1 в
: только и
(Часть 2c:
- строки длины 2 в
: только и
(Часть 2d:
- в
нет , в все непустые
(Часть 2e:
- длина не может быть одновременно 1 и 2
Ответ: 1.
4.37. Разность языков (Лаба 2, Задание 6.2)
Для тех же языков из упражнения 5 найти: 3.
Показать решение
(Часть 3a:
(Часть 3b:
(Часть 3c:
- разные длины
(Часть 3d:
- все строки из
непустые и лежат в
(Часть 3e:
- все непустые строки, кроме длины 2
Ответ: 3. -
4.38. Дополнения языков (Лаба 2, Задание 6.3)
Для тех же языков из упражнения 5 найти: 4.
Показать решение
(Часть 4a:
- в частности:
с о д е р ж и т и и
(Часть 4b:
(Часть 4c:
(Часть 4d:
- дополнение: пустая строка и все строки длины 2
Ответ: 4. -
4.39. Конкатенация языков (Лаба 2, Задание 6.4)
Для тех же языков из упражнения 5 найти: 5.
Показать решение
(Часть 5a:
(все двоичные строки)
- Разбор: для каждой строки из
(повтор одного символа) дописываем справа любую строку из . - Примеры:
, : , :
- Какие строки получаются? Докажем, что
совпадает со всеми непустыми двоичными строками.- Для
нужны и с — невозможно, так как в нет . - Если
начинается с 0, пишем , где — любая строка. Возьмём и . - Если
начинается с 1, пишем . Возьмём и .
- Для
- Итог:
(Часть 5b:
(строки длины 1) (строки длины 2)
- Все склейки:
- Результат:
(все 3-битовые строки)
(Часть 5c:
,
- Все склейки:
- Результат:
(все 3-битовые строки)
Ответ: 5. -
4.40. Звезда Клини и плюс (Лаба 2, Задание 6.5)
Для тех же языков из упражнения 5 найти: 6.
Показать решение
(Часть 6a:
(все двоичные строки) — все конкатенации нуля или более строк из
- Разбор: любая склейка строк из
снова даёт двоичную строку. - Включения в обе стороны:
- Любая строка из
двоична? Да, так как сомножители из двоичны. - Любая двоичная строка лежит в
? Да: как одна конкатенация из .
- Любая строка из
- Итог:
(Часть 6b:
(односимвольные строки) — конкатенации нуля или более строк из
- Смысл: склеивая любое число символов 0 и 1, получаем любую двоичную строку.
- Проверка:
- любая такая склейка — двоичная строка;
- любую двоичную можно разбить на одиночные 0 и 1;
- ноль сомножителей даёт
.
- Итог:
(Часть 6c:
(все строки длины 2) — конкатенации нуля или более строк из
- Разбор: каждая строка в
получается склейкой блоков длины 2.- ноль склеек:
- одна склейка: любая строка из
- две склейки: любая строка длины 4 из двух блоков по 2 символа
- три склейки: длина 6
- вообще: длины
- ноль склеек:
- Наблюдение:
строк длины 2 дают строку длины . - Возможные длины:
(пустая), , , … — все чётные длины. - Итог:
(все двоичные строки чётной длины, включаяч ё т н а )
Ответ: 6. -
4.41. Минимальный алфавит по языку (Туториал 2, Пример 1)
Для языка
Показать решение
Ключевая идея: минимальный алфавит содержит все используемые символы и не содержит лишних.
- Язык: все строки, начинающиеся с цифры 0:
- Символы: нужен 0; после ведущего 0 могут идти любые символы алфавита.
- Минимум: чтобы были не только «0», нужен ещё хотя бы один символ; минимально — добавить 1.
- Проверка: при
язык согласуется с описанием.
Ответ: минимальный алфавит
4.42. Ассоциативность и нейтральный элемент (Туториал 2, Пример 2)
Проверьте ассоциативность конкатенации и укажите нейтральный элемент.
Показать решение
Ключевая идея: показать
Ассоциативность:
- Пусть
, , : , затем : , затем- Вывод:
.
Нейтральный элемент:
: ,- Вывод: нейтральный элемент —
.
Ответ: конкатенация ассоциативна: