- •Предисловие
- •Введение
- •Глава 1. Множества
- •§ 1. Множества н их спецификация
- •§ 2. Простейшие операции над множествами
- •X ∉ ø при любом х.
- •§ 3. Диаграммы Венна
- •§ 4. Подмножества и доказательства
- •Глава 2. Отношения
- •§ 5. Произведения множеств
- •§ 1. Основные понятия
- •§ 2. Графические представления
- •§ 3. Свойства отношений
- •§ 4. Разбиения и отношения эквивалентности
- •§ 5. Отношения порядка
- •§ 6. Отношения на базах данных и структурах данных
- •§ 7. Составные отношения
- •§ 8. Замыкание отношений
- •Глава 3. Функции
- •§ 1. Функции и отображения
- •§ 2. Обратные функции и отображения
- •§ 3. Мощность множеств и счетность
- •§ 4. Некоторые специальные классы функций
- •§ 5. Аналитические свойства вещественных функций
- •§ 6. Операции
- •Глава 4. Основные понятия арифметики
- •§ 1. «Малая» конечная арифметика
- •§ 2. «Большая» конечная арифметика
- •§ 3. Двоичная арифметика
- •§ 4. Логическая арифметика
- •Глава 5. Алгебраические структуры
- •§ 1. Алгебраические структуры и подструктуры
- •§ 2. Простейшие операционные структуры
- •§ 3. Кольца и поля
- •§ 4. Линейная алгебра
- •4.1. Векторные пространства о линейные преобразования.
- •§ 5. Решетка и булевы алгебры
- •§ 6. Замкнутые полукольца
- •Глава 6. Матрицы
- •§ 1. Матрицы и бинарные отношения на конечных множествах
- •§ 2. Матрицы над другими алгебраическими структурами
- •§ 3. Матрицы и векторные пространства
- •Глава 7. Теория графов
- •§ 1. Вводные понятия
- •§ 2. Маршруты, циклы и связанность.
- •§ 3. Планарные графы
- •3.1. Теоремы Эйлера и Куратовского.
- •3.2. Раскраска карт и графов.
- •§ 4. Структуры данных для представления графа
- •§ 5. Обход графа
- •5.2. Обход графа по глубине.
- •5.4. Остовные леса обходов по глубине и ширине.
- •§ 6. Ориентированные графы
- •6.2. Маршруты и связность в орграфах.
- •Глава 8. Языки и грамматики
- •§ 1. Основные понятия
- •§ 2. Грамматики с фразовой структурой
- •2.1. Основные определения.
- •§ 3. Контекстно-свободные языки
- •§ 4. Понятия грамматического разбора и грамматических модификаций
- •§ 5. Грамматики операторного предшествования
- •Глава 9. Конечные автоматы
- •§ 1. Общие понятия
- •§ 2. Конечные автоматы
- •§ 3. Регулярная алгебра
- •Глава 10.Компьютерная геометрия
- •§ 1. Системы координат для подмножеств r3
- •§ 2. Преобразования
- •§ 3. Кривые и поверхности
§ 4. Разбиения и отношения эквивалентности
Во многих вычислительных задачах берутся большие множества и разбиваются таким образом, чтобы все интересующие нас ситуации можно было исследовать на нескольких правильно выбранных примерах. Например, один из путей получения качественной оценки характеристик языка программирования — это посмотреть конкретные программы, написанные на этом языке. Однако каждый интересный язык, включая такие языки высокого уровня, как Паскаль и Фортран, порождает бесконечно много программ, и, следовательно, мы должны выбирать программы так, чтобы они правильно отражали достоинства и недостатки языка. Чтобы быть более конкретными, давайте в дальнейшем предполагать, что язык имеет три основные управляющие структуры и четыре метода доступа и более у него нет никаких особые свойств. Мы могли бы в качестве примера взять семь программ, каждая из которых включает только одну характеристику языка (хотя, вообще говоря, каждая программа может использовать более чем одну характеристику языка). Исследование этих программ тогда могло бы покрыть большую часть свойств языка. Математически это можно определить следующим образом.
Определение. Пусть A — непустое множество и {Ai}— совокупность подмножеств (i=l,…, n, n N) таких, что
Совокупность этих подмножеств называется покрытием А.//
Пример 4.1.
{А, В} — покрытие A В,
{A, A В, В, С} - покрытие A В С. //
Используя понятие покрытия, можно обеспечить, чтобы ни одно из свойств не было пропущено, так как каждый элемент включен по крайней мере в одно из подмножеств покрытия. Однако в общем случае могут встречаться случаи дублирования. Если в дальнейшем потребовать, чтобы элементы покрытия попарно не пересекались, то дублирования не будет. Отсюда возникает понятие разбиения.
Определение. Разбиением непустого множества А называется совокупность подмножеств (А) таких, что объединение всех элементов (А) совпадает с А и все элементы (А) взаимно не пересекаются, т. е. А разбито таким образом, что каждый элемент А содержится только в одном подмножестве разбиения. //
Пример 4.2.
{А, А'} — разбиение ξ,
{А В, А В', А' В, А' В'} - разбиение ξ,
{A\B, A B,B\A} — разбиение A В. //
Разбиение определяется однозначно, и части разбиения индуцируют особый род отношения, называемого отношением эквивалентности. Эти отношения ведут себя подобно отношению «=» между числами или множествами. Выделяя основные свойства равенства, мы приходим к следующему определению.
Определение. Бинарное отношение на множестве называют отношением эквивалентности, если оно рефлексивно, симметрично и транзитивно. //
Пример 4.3. На множестве всех треугольников отношение, определяемое как {(х, у): х и y имеют одинаковую площадь}, является тривиальным отношением эквивалентности. Более интересно следующее отношение, определенное на множестве всех программ: {(а, b): а и b вычисляют одну и ту же функцию на определенной машине}. Это отношение является отношением эквивалентности. //
Напомним, что мы рассматриваем более простые способы создания больших множеств, разбивая их на мелкие части, чем если бы в качестве этих частей брали элементы множества. В настоящий момент у нас уже имеется математический аппарат, однако недостает подходящих простых обозначений. Сейчас это будет сделано, после чего приведем несколько известных примеров.
Определение. Пусть — отношение эквивалентности на множестве А. Определим класс эквивалентности [х] для х А:
[х] = {у: х у}.
Таким образом, [х]
есть множество
всех элементов A,
которые -эквивалентны
x.
В случаях, когда рассматривается
только одно отношение эквивалентности,
мы можем также использовать обозначение
«
»
(эквивалентно), поэтому
[x] = {y: x y}.
В отдельных специальных случаях для обозначения эквивалентности иногда используют символ «~». Теперь вместо проверки всего множества мы можем любым способом выбрать представителей (по одному от каждого из классов эквивалентности), что упрощает вычисления.
Следующий пример иллюстрирует вышесказанное.
Пример 4.4. Пусть s — фиксированный элемент N; определим отношение S на Z:
S = {(x, y): х — y = ns, где п Z).
Рассмотрим случай s = 10. Тогда
[1] = {11, 21, -9, 10 976 631,…},
[1066] = {66, 226, -24,…}
и т. д.
В действительности существуют только десять различных классов эквивалентности. Целые 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 принадлежат различным классам. Поэтому мы можем использовать их в качестве представителей этих классов. //
В вычислениях отношения эквивалентности представляют особый интерес, поскольку они ассоциируются с различными алгоритмами, дающими один и тот же результат, или приводящими к одной и той же обработке данных, или же представляющими одну и ту же информацию о различных эквивалентных структурах данных. Примером таких очевидных ситуаций является борьба с трудностями, которые возникают при исследовании разрешимости. Такие факторы, однако, не вызывают проблем, если множества образуются путем хорошо сконструированных процессов с конечной базой. И все же типичным является случай, когда при описании даже «хорошего поведения» требуется большое число деталей, в связи с чем они должны быть здесь рассмотрены. Несмотря на это, мы будем возвращаться к подобным вопросам в § 6 и в гл. 8 и 9.
По-видимому, наиболее
известное отношение эквивалентности
знакомо читателю, хотя он мог и не знать,
что оно — отношение эквивалентности.
Это отношение связано с дробями.
Рассмотрим множество
.
Пару (a,
b)
мы можем рассматривать
как дробь a/b.
Эти два способа обозначения элементов
являются различными, но они «изоморфны».
Мы будем их рассматривать далее в § 1
гл. 5. Отметим, что
можно переходить от одной формы
обозначения к другой.
До сих пор все было хорошо, однако существуют различные элементы в , которые желательно рассматривать как одни и те же, хотя записываются они по-разному. Чтобы преодолеть эту трудность, определим отношение эквивалентности на следующим образом:
(a, b) ≡ (c, d) тогда и только тогда, когда a*d=b*c.
Множество всех классов эквивалентности, определяемых этим отношением на , называют рациональными числами и обозначают символом Q. Обычно выбирают тех представителей классов, у которых самые малые а и о.
Следует упомянуть, что предполагается существование действительных чисел (множество действительных чисел обычно обозначают через R). Эти числа можно представить в форме
… 0 dn
… d2
d1
d0
1
2
…
m
…,
где каждое di и j принадлежат множеству
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} = Z10, dn ≠ 0,
исключая случай n = 0. В частности, допускается бесконечная непериодическая десятичная дробь, хотя нули перед dn обычно опускают. (Отрицательные числа представляют ненулевыми положительными числами со знаком минус.)
Заметим, что индекс отношения эквивалентности на множестве А — это количество частей А, индуцируемых (число -эквивалентных классов).
Упражнение 2.4.
Доказать, что любое отношение эквивалентности порождает такое разбиение, что для любых х, у А или [х] = [y], или [х] [у] = ø.
Пусть А — конечное множество. Какие отношения эквивалентности дают наибольшее и наименьшее число эквивалентных классов?
Если {А1, А2,…, An} — разбиение A и A конечное, показать, что
