Теория множеств: основы и базовые операции над множествами
Мы знаем довольно много о структурах данных, понимаем их устройство, разбираемся, какие структуры работают быстро и помогают решать конкретные задачи. Но эти знания бесполезны, если мы не понимаем, как это использовать в реальной жизни. Это похоже на изучение геометрии в школе. Вы долго считаете предмет бесполезным, пока однажды не появляется необходимость рассчитать площадь пола, чтобы заказать новое ковровое покрытие. Впрочем, пользу геометрии можно почувствовать, даже если вы никогда не считали площадь пола в комнате самостоятельно.
Сегодня поговорим о структуре данных, которая в теории очень догматична, а на практике очень популярна. На самом деле вы так или иначе уже сталкивались с этой структурой, а также слышали о ней на уроках математики в школе. Вы уже догадались, что речь идёт о множествах.
Теория множеств без страха
Прежде чем разбирать устройство множеств, давайте поймём, откуда они появляются. То есть давайте сразу погрузимся в теорию — да-да, в теорию множеств! Не бойтесь сложностей — высока вероятность того, что вы уже так или иначе использовали эту теорию. Возможно, вы сталкивались с теорией множеств, когда проходили в школе диаграмму Венна. Диаграмму Венна включили в программу изучения множеств, так как она хорошо иллюстрирует отношения подмножеств.
Мы выяснили, что теория множеств не должна никого пугать. Теперь пришло время разобраться, что это за теория на самом деле. Множество — математическая концепция. Теорией множеств описывают отношения множеств.
Множество — ни что иное, как неупорядоченная коллекция, в которой нет дублирующихся элементов.
В этом определении есть три важных слова: «неупорядоченная», «дублирующихся» и «элементов». Эти слова точно передают суть и устройство множества. Если мы это запомним, то будем знать основную информацию о том, как работает эта структура данных.
Нужно понять, почему это важно. Для начала давайте посмотрим на множества в действии. Как сказано выше, отношения множеств удачно иллюстрирует диаграмма Венна. Давайте взглянем на два множества: книги, которые есть у человека дома, и книги, которые этот человек прочитал.
Если вы знакомы с диаграммой Венна, то понимаете, что в центре в зелёном круге находятся книги, которыми человек владеет, и которые он прочитал. Здесь множества пересекаются. Также вы понимаете, что два множества — прочитанные человеком книги и книги, которые есть у человека — существуют внутри другого множества. Это все существующие в мире книги.
Диаграмма Венна — хорошая база для понимания теории множеств, так как с её помощью легче понять более сложные вещи. Допустим, вы хотите представить два множества книг в какой-то структуре данных. Вы уже знаете, что книги надо разделить на два множества: которые человек прочитал и которые есть у него дома. Для удобства назовём первое множество Set X, а второе Set Y. Эти множества после реконфигурации в структуры данных можно представить с помощью диаграммы Венна.
Можно заметить, что множества Set X и Set Y стали похожи на объекты или хэши: элементы внутри них не имеют индексов или других элементов, позволяющих их упорядочить. В них также нет повторяющихся элементов, что делает эти структуры данных множествами. Как вы уже знаете, множество — это коллекция неупорядоченных элементов, которые не повторяются.
Начните изучать разработку с бесплатного курса «Основы современной вёрстки». Вы научитесь создавать статические веб-страницы, стилизовать элементы, использовать редакторы кода с полезными расширениями. В конце курса вы опубликуете свой первый сайт на GitHub Pages.
Об операциях с множествами без боли
Какие возможности открывает представление множеств в формате структур данных? С ними теперь можно выполнять разные операции. Две самые важные операции, которые выполняются над множествами — это пересечение и объединение.
Пересечение множеств часто записывается с помощью такой нотации: X ∩ Y. Пересечение определяет, где два множества пересекаются. Другими словами, эта операция возвращает все элементы, которые входят в два множества. В нашем примере пересечение Set X и Set Y возвращает все книги, которые человек читал и которые есть у него дома. Хороший ключ к пониманию пересечения — ключевое слово «и». Мы получаем книги, которые человек читал и которые есть у него дома. Несмотря на то, что полученные с помощью пересечения книги существуют в двух множествах, мы не повторяем их, так как в множестве могут быть только уникальные элементы.
Объединение двух множеств обозначается так: X ∪ Y. Объединение возвращает общность двух множеств или объединённое множество. Иными словами, с помощью объединения множеств можно получить новое множество элементов, которые существуют хотя бы в одном исходном множестве. В нашем случае объединение вернёт все книги, которые человек читал, а также все книги, которые есть у него дома. Обратите внимание, если книга входит одновременно в Set X и Set Y, она не может дублироваться в новом множестве после объединения, так как в множества входят только уникальные элементы.
С помощью диаграммы Венна пересечение и объединение можно представить так:
Теперь давайте рассмотрим более сложные вещи. Объединение и пересечение — важные операции над множествами, но это только азы теории. Нам надо познакомиться с другими операциями, чтобы решать более серьёзные задачи. Важно понимать разность множеств и относительные дополнения множеств. Ниже мы разберём, почему это важные операции, но сначала нужно понять, как они работают.
Как понятно из названия, разность множеств определяет разницу между множествами. Иными словами, мы определяем, какие элементы останутся в множестве X, если удалить из него все элементы, которые содержатся в множестве Y. Это действие можно обозначить так: X — Y. В примере на иллюстрации ниже разница между множеством X и множеством Y — это элементы, которые существуют в Set X, но не существуют в Set Y. Они обозначены буквами C, Z и W.
Относительное дополнение — противоположность разности множеств. Например, относительное дополнение Y по сравнению с X возвращает все элементы множества Y, которые не входят в множество X. Относительное дополнение можно обозначить так: X \ Y. Относительное дополнение X \ Y фактически возвращает такой же набор элементов, как разность Y — X. В нашем примере множество Y меньше множества X. Единственный элемент, который входит в Set Y, но не входит в Set X — число 2.
По сути, мы просто вычитаем множество X из множества Y и отвечаем на вопрос: что существует в Y, чего нет в X?
Вы могли заметить, что в части примеров мы имеем дело со строками, в другой части в качестве элементов выступают буквы и числа. Здесь надо подчеркнуть важный момент: множество может включать любой тип элементов или объектов. Вы можете рассматривать множества как хэши: они включают любые сущности, если те встречаются во множестве только один раз.
Теперь давайте рассмотрим ещё одну операцию, она самая сложная из всех. Но не пугайтесь, с ней тоже можно разобраться.
В некоторых случаях требуется найти противоположность пересечению множеств. Иными словами, речь идёт о книгах, которые есть у человека, и книгах, которые он прочитал, но которые не входят одновременно в оба множества. Как назвать это подмножество? И как найти его?
Правильное название для этого кейса — симметрическая разность множеств. Также употребляют термины «дизъюнктивное объединение» и «несвязное объединение». Симметрическая разность возвращает все элементы, которые входят в одно из множеств, но не входят в пересечение этих множеств. Пример на иллюстрации поможет разобраться с дизъюнктивным объединением.
В примере выше симметрическая разность похожа на поиск относительного дополнения множества X и множества Y. Если подходить к этому с позиции математики, поиск симметричной разницы — то же самое, что и объединение относительных дополнений множества X и множества Y. Эту операцию можно записать так: X △ Y= (X ∖ Y) ∪ (Y ∖ X).
Но не дайте сбить себя с толку!
Всё, что нужно для поиска симметрической разности — найти элементы, которые есть в множестве X, но отсутствуют в множестве Y, и какие элементы есть в множестве Y, но отсутствуют в множестве X. Иными словами, надо найти уникальные элементы в каждом множестве.
В примере выше числа 1, 2 и 3 входят в множества X и Y одновременно. А буквы A, B, C, X, Y, Z входят только в множества X или Y. Поэтому они представляют симметрическую разность множеств X и Y.
Мы рассмотрели теоретические вопросы. Теперь можно посмотреть, как теория множеств работает на практике.
Множества вокруг нас
К этому моменту вы наверняка задумались, зачем надо изучать теорию множеств. Это хороший вопрос, и пришло время ответить на него.
Уже догадались? Множества повсюду. Это структуры данных, которые мы можем использовать при работе с разными языками программирования, например, Python, Java, Ruby, JavaScript и так далее. Если вы знакомы с этими или другими языками программирования, то уже вспомнили методы, которые позволяют работать с множествами.
Вот пример на JavaScript.
Очевидно, что имена методов могут меняться в зависимости от языка. Например, метод has из примера выше в Ruby называется include?, но эти методы работают практически одинаково. А в Python при работе с множествами можно использовать методы intersection, union и symmetric_difference.
Но в чём именно польза множеств? Понятно, что с ними можно работать в разных языках программирования, но зачем это нужно на практике?
Один из моментов — множества могут сэкономить вам много времени. Помните все эти сложные операции — intersection, union, difference? Уже догадались? Продолжительность выполнения этих операций зависит от размера множеств. Это связано с тем, что для выполнения операций нам надо обойти все элементы множества. Обычно даже гигантские множества можно обойти достаточно быстро.
Но как насчёт основных операций? Как насчёт добавления элементов в одно из множеств, удаления элементов, поиска конкретного элемента в множестве? Все эти операции выполняются за константное время или 0(1). Это очень мощный инструмент, и это значит, что множества могут быть даже более удобной структурой данных, чем словарь или хэш.
Но подождите, почему все операции с множествами выполняются так быстро? Как это возможно? Как оказалось, под капотом множества представляют собой хэши. Теперь вся информация собирается воедино. С хэш-таблицами знакомо большинство программистов, но почему с их помощью так удобно реализовывать множества?
Это возможно благодаря нескольким факторам. Первый: в хэш-таблицах каждый элемент всегда имеет уникальный индекс. Это очень хорошо с точки зрения реализации множеств, так как множества могут включать только уникальные элементы. Второй фактор: в хэш-таблицах порядок элементов не имеет значения. В множествах порядок элементов тоже не имеет значения. Наконец, хэш-таблицы обеспечивют константное время доступа 0(1). Это идеально для выполнения базовых операций с множествами.
Заключение
Теория множеств используется в разных областях computer science. Это важная для программистов концепция, понимание которой помогает разработчикам эффективно работать с данными.
Адаптированный перевод статьи Set Theory: the Method To Database Madness by Vaidehi Joshi.
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях.
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Что значит объединение множеств
Объединение множеств X и Y — это множество, состоящее из всех тех и только тех элементов, которые принадлежат хотя бы одному из множеств X или Y, т.е. принадлежат X или принадлежат Y.
Объединение X и Y обозначается через X∪Y
Формально x∈X∪Y ⇔ x∈X или x∈Y
Пример 3. Если X — множество точек левого круга и Y — множество точек правого круга, то
X∪Y — заштрихованная область, ограниченная обоими кругами.
представляет собой множество, состоящее из всех тех и только тех элементов, которые принадлежат хотя бы одному из множеств данной системы М.
Для объединенных множеств справедливы:
справедливость которых вытекает из того, что левая и правая части равенств состоят из одних и тех же элементов.
Очевидно, что X∪∅ = X. Отсюда можно видеть, что ∅ играет роль нуля в алгебре множеств.
2. Пересечение множеств
Пересечение множеств X и Y — это множество, состоящее из всех тех и только тех элементов, которые принадлежат как множеству X, так и множеству Y.
Пересечение множеств обозначается X∩Y.
Формально x∈X∩Y ⇔ x∈X и x∈Y
Пример 5. Если Х — множество точек левого круга, а Y — множество точек правого круга, то X∩Y представляет собой заштрихованную область, являющуюся общей частью обоих кругов.
Множества X и Y называются непересекающимися (дизъюнктными), если они не имеют общих элементов, то есть если X∩Y=∅.
Частный случай: кортеж длины 1 —
кортеж длины 0 — или ∧ — пустой кортеж.
Отличие кортежа и обыкновенного множества: в кортеже могут быть одинаковые элементы.
Упорядоченные множества, элементами которых являются вещественные числа, будем называть векторами или точками пространства (n-мерного).
Два вектора равны, если они имеют одинаковую длину и соответствующие координаты их равны.
Компонентами кортежа (вектора) могут быть также компоненты кортежи (векторы):
Пример. Слова в предложении,
Прямое произведение множеств
Прямым (декартовым) произведением множеств X и Y называется множество, состоящее из всех тех и только тех упорядоченных пар, первая компонента которых принадлежит множеству X, а вторая принадлежит множеству Y.
Пример 3. Пусть X и Y — отрезки вещественной оси. Прямое произведение X*Y изображается заштрихованным прямоугольником. См. рис. б).
Прямое произведение изменяется при изменении порядка сомножителей т.е.
Очевидно X*Y = ∅ ⇔ X = ∅ или Y = ∅.
Частным случаем прямого произведения является понятие степеней (декартовых) множества — прямое произведение одинаковых множеств
M s =M*M*. *M, M 1 =M, M 0 =∧.
Обычно R — множество вещественных чисел, тогда R 2 =R*R — вещественная плоскость и R 3 =R*R*R — трехмерное вещественное пространство.
Проекция множества.
Операция программирования множества тесно связана с операцией проектирования кортежа и может применяться лишь к таким множествам, элементами которых являются кортежи одинаковой длины.
Пусть M — множество, состоящее из кортежей длины S. Тогда пролинией множества M будем называть множество пролиний всех кортежей из М
Очевидно что если М=Х*Y то Пр1М=Х, Пр2М=Y
и если Q⊆Х*Y то Пр1Q⊆Х и Пр2Q⊆Y
Пусть V — множество векторов одинаковой длины S.
В общем случае ПрiV — вовсе не обязательно прямое произведение: оно может быть подмножеством.
Лекция 4. Объединение множеств.
Лекция 4. Объединение множеств. Свойства объединения множеств.
Определение. Объединением множеств А и В называется множество, содержащее все элементы, которые принадлежат множеству А или множеству В.
Объединение множеств А и В обозначают А ∪ В. Таким образом, по определению, А ∪ В = < х | х ∈ А или х ∈ В>.
Если изобразить А и В при помощи кругов Эйлера-Венна, то объединением данных множеств является заштрихованная область (рис. 4).
Для объединения множеств выполняются следующие свойства.
1) Переместительное или коммутативное свойство: А ∪ В = В ∪ А.
2) Сочетательное или ассоциативное свойство:(А ∪ В) ∪ С = А ∪ (В ∪ С).
3) А ∪ ∅ = А (пустое множество является нейтральным элементом).
4) А ∪ U = U (универсальное множество является поглощающим элементом).
5) Если В ⊂ А, то А ∪ В = В
Операции объединения и пересечения множеств связаны законами дистрибутивности или иначе распределительными свойствами:
(А ∪ В) ∩С = (А∩С) ∪ (В∩С) и (А∩В) ∪ С = (А ∪ С) ∩(В ∪ С).
П р и м е р 1. Пусть А – множество различных букв в слове «математика», а В – множество различных букв в слове «стереометрия». Найти пересечение и объединение множеств А и В.
Р е ш е н и е. Запишем множества А и В, перечислив их элементы: А = < м, а, т, е, и, к >, В = < с, т, е, р, о, м, и, я >. Буквы м, т, е, и принадлежат и множеству А, и множеству В, поэтому они войдут в пересечение этих множеств: А∩В = < м, т, е, и >. В объединение этих множеств войдут все элементы множества А и несовпадающие с ними элементы из множества В: А ∪ В = < м, а, т, е, и, к, с, р, о, я >.
П р и м е р 2 . В классе английский язык изучают 25 человек, а немецкий – 27 человек, причем 18 человек изучают одновременно английский и немецкий языки. Сколько всего человек в классе изучают эти иностранные языки? Сколько человек изучают только английский язык? Только немецкий язык?
Р е ш е н и е. Через А обозначим множество школьников, изучающих английский язык, через В – множество школьников, изучающих немецкий язык. Изобразим эту ситуацию с помощью диаграммы. Два языка изучают 18 школьников, поставим это число в пересечение множеств А и В. Английский язык изучают 25 человек, но среди них 18 человек изучают и немецкий язык, значит, только английский язык изучают 7 человек, укажем это число на диаграмме. Рассуждая аналогично, получим, что только немецкий язык изучают 27 – 18 = 9 человек. Поместим и это число на диаграмму. Теперь известно количество элементов в каждой части множеств, изображенных на диаграмме. Чтобы ответить на главный вопрос задачи, нужно сложить все числа: 7 + 18 + 9 = 34. Ответ: 34 человека в классе изучают иностранные языки.
Задания для самостоятельной работы по теме:
1.Найдите объединение множеств А и В, если:
Пересечение и объединение множеств — свойства, операции и примеры решения
Математика часто оперирует абстрактными объектами, для задания связи между которыми существуют различные операции, такие как пересечение и объединение множеств.
Понятие множества является интуитивным, не определяемым. Оно обычно ассоциируется с набором чего-либо, группой каких-то предметов или живых объектов, совокупностью некоторых условий, рассматривается как класс, семейство в некоторой классификации, промежуток числовой прямой. Например, в геометрии рассматриваются линии как множества точек.
То, из чего состоит множество, называется его элементами.
Графическим изображением, служащим для наглядности рассматриваемых объектов, является круг Эйлера.
Что такое пересечение множеств
Для любого набора множеств их пересечением называется множество, состоящее из всех элементов, принадлежащих одновременно каждому из заданных. Другими словами, это совокупность всех общих элементов.
С помощью кругов Эйлера-Венна пересечение можно изобразить так:
Часто применяется для определения решений систем уравнений и неравенств.
Ассоциируется с обычным умножением двух числовых объектов.
Что такое объединение множеств
Для любого набора множеств, их объединением называется множество, состоящее из всех элементов, принадлежащих хотя бы одному из заданных.
Изображение кругами Эйлера выглядит следующим образом:
Часто используется при решении уравнений и неравенств, подчёркивая наличие серий корней и решений, нескольких используемых промежутков числовой прямой.
В обычной математике близко по смыслу с операцией, называемой «сложение».
Свойства пересечения и объединения множеств
Для решения задач нужно знать о следующих свойствах:
1. Коммутативность (перестановочность):
Эти свойства распространяются на любое количество компонентов. Следуют из определения операций.
2. Ассоциативность (расстановка скобок):
Данные свойства также применимы к большому количеству компонентов. Позволяют опускать скобки и упрощать запись.
3. Дистрибутивность (раскрытие скобок):
(A ∪ B) ∩ C = (A ∩ C) ∪ (B ∩ C);
(A ∩ B) ∪ C = (A ∪ C) ∩ (B ∪ C).
4. Закон идемпотентности (идентичности):
Множество, не содержащее ни одного элемента, называется пустым. Обозначается перечёркнутым нулём: Ø
Выполнение операций с Ø:
Прослеживается аналог со сложением и умножением на ноль.
Операции над множествами
Помимо объединения и пересечения существуют другие операции:
Для двух множеств A и B можно определить их разность как набор элементов, входящих в A и не содержащихся в B:
Рассматривая некоторое множество в качестве содержащего все остальные, можно прийти к понятию «дополнение», как к совокупности всех элементов, не входящих в A:
Благодаря этой операции свойства объединения и пересечения можно расширить/
Примеры решения задач
Задача №1
Выписать все элементы множества
При поиске M операции выполняются последовательно.
B A состоит из всех элементов B, которые не принадлежат A, поэтому:
B ∪ A включает в себя все элементы, принадлежащие хотя бы одному из множеств A или B. Таким образом:
M = (B A) (B ∪ A) состоит из всех элементов B A, которые не принадлежат B ∪ A, следовательно, M = Ø.
Задача №2
Доказать методом включений тождество:
Необходимо доказать выполнение включений:
Выбирается произвольный x из (A ∩ B) ∪ C. По определению операции объединения x ∈ B ∩ A или x ∈ C.
Если x ∈ B ∩ A, то по определению пересечения x ∈ B и x ∈ A.
Так как x ∈ A, то x ∈ C ∪ A; так как x ∈ B, то x ∈ C ∪ B, следовательно, x ∈ (A ∪ C) ∩ (B ∪ C).
Если x ∈ C, то x ∈ C ∪ A и x ∈ C ∪ B, а значит: x ∈ (A ∪ C) ∩ (B ∪ C).
Поскольку x ∈ (A ∩ B) ∪ C был выбран произвольно, утверждается, что любой элемент этого множества содержится в (A ∪ C) ∩ (B ∪ C), то есть:
Выбирается произвольный y из (A ∪ C) ∩ (B ∪ C).
По определению операции пересечения y ∈ C ∪ A и y ∈ C ∪ B.
Так как y ∈ C ∪ A, то y ∈ A или y ∈ C; так как y ∈ C ∪ B, то y ∈ C или y ∈ B. Таким образом, y ∈ C или y ∈ A и y ∈ B.
Если y ∈ A и y ∈ B, то y ∈ B ∩ A, а, следовательно, y ∈ (A ∩ B) ∪ C; если y ∈ C, то также y ∈ (A ∩ B) ∪ C.
Поскольку y из (A ∪ C) ∩ (B ∪ C) выбирался произвольно, утверждается, что любой элемент этого множества содержится в (A ∩ B) ∪ C, то есть
Из пунктов 1 и 2 вытекает, что
































