Язык математики
Отношения и эквивалентность
Отношение как подмножество A × B, классы эквивалентности и почему это то же самое, что разбиение
Отношение — это множество пар
Определение выглядит неожиданно скупо:
Отношение — это просто подмножество декартова произведения. Никакой отдельной сущности «отношение» нет: есть набор пар, которые мы объявили связанными.
Вместо обычно пишут . Именно поэтому , и — это отношения: на есть множество пар .
В коде отношение — это либо set[tuple], либо предикат f(a, b) -> bool, либо
матрица смежности. Три представления одного и того же.
Свойства
Для отношения на одном множестве () важны три свойства:
| Свойство | Формально | Словами |
|---|---|---|
| рефлексивность | каждый связан сам с собой | |
| симметричность | связь не имеет направления | |
| транзитивность | связь передаётся по цепочке |
Проверьте на знакомых примерах:
- обладает всеми тремя
- рефлексивно и транзитивно, но не симметрично
- транзитивно, но не рефлексивно и не симметрично
- «быть другом» симметрично, но обычно не транзитивно
Отношение эквивалентности
Отношение, обладающее всеми тремя свойствами, называется эквивалентностью и обозначается .
Смысл прост: эквивалентность — это «равенство с точностью до чего-то». Мы объявляем неразличимыми объекты, которые различаются только тем, что нас сейчас не интересует.
Примеры, которые пригодятся позже:
- сравнение по модулю:
- векторы, отличающиеся положительным множителем: — направления, а не векторы
- матрицы, подобные друг другу — один и тот же оператор в разных базисах (блок 1)
Классы и разбиения
Класс эквивалентности элемента — это все объекты, ему эквивалентные:
Дальше происходит вещь, которую стоит один раз осознать и потом использовать как факт:
Классы эквивалентности образуют разбиение. И наоборот: любое разбиение задаёт отношение эквивалентности («лежать в одной группе»).
Это два описания одной структуры. Транзитивность и симметричность — ровно то, что не даёт классам частично перекрываться: если у двух классов есть общий элемент, они совпадают целиком.
Практическое следствие: когда вы видите , можно сразу думать «groupby по
какому-то ключу». Множество классов обозначается и называется
фактормножеством.
Порядок — второй важный тип
Если отношение рефлексивно, транзитивно и антисимметрично (), оно называется частичным порядком. Пример — на подмножествах: два множества могут быть несравнимы, ни одно не включено в другое.
Частичный порядок понадобится, чтобы аккуратно говорить про sup и inf в следующем уроке.
Чего здесь нет
Решёток, вполне упорядоченных множеств, теоремы Цермело. Для чтения статей достаточно узнавать и понимать, что за ним стоит группировка.
Источники
- Hammack — Book of Proof, гл. 11 — Relations, equivalence relations, equivalence classes
- Jeremy Kun — A Programmer's Introduction to Mathematics — Изложение под профиль программиста
Проверки
0 из 2Какие отношения — эквивалентности
Отметьте все отношения, которые являются отношениями эквивалентности.
Классы эквивалентности
Реализуйте
equivalence_classes(items, pairs).На вход приходят элементы
itemsи список парpairs, объявленных эквивалентными. Само отношение при этом задано не полностью: пары нужно замкнуть по рефлексивности, симметричности и транзитивности.Верните разбиение — список классов, где каждый класс отсортирован по возрастанию, а сами классы отсортированы по своему первому элементу.
Например, для
items = [1, 2, 3, 4]иpairs = [[1, 2], [2, 3]]результат[[1, 2, 3], [4]]: элемент 4 ни с чем не связан, но образует собственный класс — рефлексивность обязывает.Загрузка редактора…
Ctrl/⌘ + Enter