Отношения и соответствия: эквивалентность, порядок, функции
Что такое бинарное отношение, чем эквивалентность похожа на равенство, почему порядок бывает частичным и как из таблицы элементов получить классы.
«Ваня дружит с Петей», «6 больше 4», «эти два треугольника подобны», «файл лежит в папке» — за всеми этими фразами прячется одна и та же конструкция: пара объектов и связь между ними. Дискретная математика выдирает связку из языка и учит её считать: сколько связей может быть, какими свойствами они обладают и что из этих свойств следует. Получается инструмент, без которого не строятся ни базы данных, ни графы, ни сортировки.
Декартово произведение и бинарное отношение#
В уроке о множествах мы уже строили декартово произведение: для множеств и множество — это все упорядоченные пары . Например, , , тогда — всего пар.
Бинарное отношение из в — это просто любое подмножество : . Если пара попала в , пишут и читают « находится в отношении с ». Из 6 пар произведения выше можно составить разных отношения — от пустого до полного.
Живой пример: , отношение «меньше». Оно собирается из пар — именно они удовлетворяют условию . Отношение на одном множестве (когда ) удобно рисовать стрелками между элементами — по сути, получается ориентированный граф, см. словарную статью граф.
Числовая проверка: если , то число пар в равно , а число возможных отношений на — . Уже при это отношений, при — миллиона. Поэтому с отношениями работают не перебором, а через свойства.
Как хранить отношение в компьютере? Таблицей: строки — элементы , столбцы — элементы , в ячейке 1, если пара есть в , и 0, если нет. Такая таблица называется матрицей отношения — это обычная матрица из нулей и единиц, только с особым смыслом.
Четыре свойства: рефлексивность и компания#
Отношения классифицируют по четырём базовым свойствам. Определения звучат сухо, поэтому к каждому приложим расшифровку и пример.
| Свойство | Формально | Словами | Пример на числах |
|---|---|---|---|
| Рефлексивность | каждый связан с самим собой | , | |
| Симметричность | связь работает в обе стороны | , « — сосед » | |
| Антисимметричность | двусторонняя связь бывает только с самим собой | ||
| Транзитивность | связь передаётся по цепочке |
Проверим свойства на конкретном отношении. Возьмём и = «делится на» (, если делится на ). Рефлексивность: каждое число делится на себя — есть. Антисимметричность: если делится на и на , то — есть. Транзитивность: если делится на и на , то делится на — тоже есть (например, 12 делится на 6, 6 на 3, и 12 делится на 3). Симметричности нет: 12 делится на 3, а 3 на 12 — нет. Выходит, «делится на» — рефлексивное, антисимметричное, транзитивное отношение. И это не случайный набор свойств.
- Эквивалентность = рефлексивность + симметричность + транзитивность: «равенство с расфокусом».
- Порядок = рефлексивность + антисимметричность + транзитивность: те же три, но средняя строже.
- Симметричность спрашивает «а в обратную сторону?», антисимметричность — «а если в обе, то может, это один элемент?»
- Транзитивность — мостик через посредника: если связан с , а с , то обязан быть связан с .
Эквивалентность: равенство с поправкой на задачу#
Отношение, которое рефлексивно, симметрично и транзитивно, называется отношением эквивалентности. Интуиция: это «равенство» в широком смысле — объекты считаются одинаковыми по выбранному критерию. Примеры вокруг: «жить в одном городе», «дроби равны по значению» (, хотя записи разные), «углы равны по мере».
Главный факт: отношение эквивалентности на множестве разбивает его на классы эквивалентности — непересекающиеся группы, внутри которых все элементы эквивалентны друг другу. Вместе классы покрывают всё множество. Такое разделение называется разбиением. И работает в обе стороны: всякое разбиение порождает эквивалентность «лежать в одной группе».
Числовой пример. Отношение на целых числах: числа эквивалентны, если их разность делится на 3. Проверим свойства: делится на 3 — рефлексивность; если делится на 3, то и — симметричность; суммы разностей тоже делятся на 3 — транзитивность. Классы получаются три: остаток 0 — , остаток 1 — , остаток 2 — . Множество всех целых чисел рассыпалось на три бесконечные полки.
Порядок: когда элементы можно сравнивать#
Рефлексивное, антисимметричное и транзитивное отношение называется отношением порядка (нестрогого: ). Если убрать рефлексивность и потребовать вместо антисимметричности иррефлексивность (никто не связан с самим собой), получится строгий порядок вроде . Порядок называется линейным, если любые два элемента сравнимы (числа: или — всегда), и частичным, если есть несравнимые пары.
Эталон частичного порядка — отношение включения на множествах: , но и не сравнимы ни так, ни этак. Второй пример — «является предком» в генеалогическом дереве: двоюродные братья друг другу не предки. Рисуют частичный порядок диаграммой Хассе — снизу вверх, от меньших элементов к большим. Топологическая сортировка, о которой вы услышите в курсе алгоритмов, — это вытащить из частичного порядка линейный, не нарушив стрелок.
Соответствия и функции#
Отношение из в называют ещё соответствием. Каждому соответствие ставит в пару подмножество — его образ. Соответствие, у которого образ каждого элемента состоит ровно из одного элемента, — это уже знакомая функция. Так что функция — частный случай отношения: , где у каждого ровно одна пара.
Функции делят по тому, насколько они «покрывают» :
- Инъекция: разные элементы уходят в разные точки — никаких совпадений ( на : сдвиг не склеивает значения)
- Сюръекция: каждый элемент чей-то образ — нет «брошенных» целей ( с на множество неотрицательных квадратов)
- Биекция: и то и другое — взаимно однозначное соответствие, у которого есть обратная функция ( между чётными числами и всеми целыми)
Биекция — главный инструмент сравнения мощностей: два множества равномощны, если между ними есть биекция. Именно так доказывают, что натуральных чисел «столько же», сколько целых, и что существуют разные бесконечности. Конечный частный случай вы уже считали: биекция между и существует, когда .
Свойства отношений понадобятся дальше повсюду: отношение достижимости в графах транзитивно, а кванторы, которыми записывают определения вроде , подробно разбираются в логике предикатов. Потренироваться в подсчёте вариантов полезно в тренажёре комбинаторики — там, в частности, встречаются задачи на разбиения множеств.
Отношение « — брат » на множестве людей: симметрично ли оно?
Сколько классов эквивалентности даёт отношение на целых числах?
На множестве задано . Какие свойства оно имеет?
Частые вопросы
Чем отношение отличается от функции?
Функция — специальное отношение: каждому элементу области определения соответствует ровно один образ. Обычное отношение может ставить в пару несколько элементов или ни одного. Например, « — родитель » — отношение, но не функция (детей может быть много), а « — мама » — уже функция.
Как быстро проверить транзитивность по матрице отношения?
Для каждой единицы в матрице сравните строку и столбец: если и , то обязан быть единицей. На практике проверяют булево умножение матрицы на себя: единицы произведения не должны попадать в нули исходной матрицы.
Обязательно ли эквивалентность даёт конечное число классов?
Нет. Отношение «иметь одинаковую зарплату» на всех работниках мира даёт очень много классов, а «сравнимы по модулю 3» — ровно три. Число классов называют индексом разбиения; он может быть любым конечным или бесконечным.
Где в реальном программировании используются эти свойства?
Рефлексивность и транзитивность неявно требуются в любых сравнениях, на которых строятся сортировки: если компаратор их нарушает, алгоритмы сортировки дают мусор. Классы эквивалентности — это группировки и дедупликация данных, а частичный порядок — разрешение зависимостей между пакетами и задачами сборки.
Готовитесь к контрольной?
Чеклист тем по «Дискретка»: что вы уже умеете, что повторить и в каком порядке.
Открыть чеклист предмета →
Проверьте себя в бою
Босс-экзамен по «Дискретка»: квизы всех уроков плюс бесконечный поток сгенерированных задач. Каждая попытка — новый расклад.
Начать босс-экзамен →