Что такое разность двух множеств
Пересечение, объединение и разность множеств
Пересечение множеств
Пересечением множеств A и B называют множество, содержащее те и только те элементы, которые входят одновременно как в множество A, так и в множество B:
Объединение множеств
Объединением – множеств A и B называют множество, содержащее те и только те элементы, которые входят хотя бы в одно из множеств, A или B:
Универсум и отрицание
Универсум (универсальное множество) – множество, включающее в себя все множества, рассматриваемые в данной задаче.
В литературе универсум обозначают U.
На диаграммах Эйлера универсум изображают как множество точек прямоугольника, в котором лежат остальные множества:
При рассмотрении целочисленных задач, универсум – это множество целых чисел.
При построении двумерных графиков, универсум – это множество всех точек координатной плоскости.
При решении вероятностных задач, универсум – это множество всех возможных исходов цепочек событий.
Свойства операций пересечения и объединения
$(A \cap B) \cap C = A \cap (B \cap C)$
$(A \cup B) \cap C = (A \cap C) \cup (B \cap C)$
Взаимодействие с отрицанием, пустым множеством и универсумом
$A \cap \varnothing = \varnothing$
$A \cup \varnothing = A$
Разность множеств
Разностью двух множеств A и B называют множество, в которое входят все элементы из множества A, не принадлежащие множеству B:
На диаграммах Эйлера разности для пересекающихся множеств выглядят так:
Формулы включений и исключений
Рассмотрим два конечных пересекающихся множества A и B.
Сумма n(A)и n(B) даст нам больше, чем общее количество, потому что мы два раза посчитаем то, что попадает в пересечение. Значит, если отнять одно пересечение, получится как раз то, что ищем:
$$n(A \cup B) = n(A)+ n(B)-n(A \cap B)$$
Выведем аналогичную формулу для трёх пересекающихся конечных множеств.
Примеры
Пример 1. Найдите пересечение данных множеств:
Лекция 5. Вычитание множеств.
Онлайн-конференция
«Современная профориентация педагогов
и родителей, перспективы рынка труда
и особенности личности подростка»
Свидетельство и скидка на обучение каждому участнику
Лекция 4. Вычитание множеств, дополнение подмножества.
Определение. Разностью множеств А и В называется множество, содержащее те и только те элементы, которые принадлежат множеству А и не принадлежат множеству В.
Разность множеств А и В обозначают А \ В. Таким образом, по определению разности А \ В = < х | х ∈ А и х ∉ В>.
Если изобразить А и В при помощи кругов Эйлера-Венна, то разность данных множеств является заштрихованная область (рис. 5).
Определение. Пусть В является подмножеством множества А. В этом случае разность множеств А и В называют дополнением подмножества В до множества А и обозначают В’ А. Дополнение можно изобразить как показано на рис. 5. Если В – подмножество универсального множества U, то дополнение подмножества В до U обозначают В’.
Например, если В – множество однозначных натуральных чисел, то В’– множество неоднозначных натуральных чисел, если С – множество равнобедренных треугольников, то С’ – множество треугольников, у которых все стороны имеют разную длину.
Разность множеств и дополнение к подмножеству обладают рядом свойств.
1) (А \ В) \ С = (А \ С) \ В.
2) (А ∪ В) \ С = (А \ С) ∪ (В \ С).
3) (А \ В) ∩ С = (А ∩С) \ (В ∩ С).
Задания для самостоятельной работы по теме:
1. Найдите разность множеств А и В, если
2. В каких случаях, выполняя упражнение 1, вы находили дополнение множества В до множества А?
3. Из каких чисел состоит дополнение:
а) множества натуральных чисел до множества целых;
б) множества целых чисел до множества рациональных;
в) множества рациональных чисел до множества действительных.
Что такое разность двух множеств
Объединение множеств 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 — вовсе не обязательно прямое произведение: оно может быть подмножеством.
Бинарные операции над упорядоченными множествами
В предыдущей статье я писал о бинарных операциях над неупорядоченными множествами. В этой статье мы рассмотрим алгоритмы с меньшей сложностью выполнения, для упорядоченных множеств.
I. Пересечение упорядоченных множеств
Пересечение двух упорядоченных множеств A и B — это множество только с теми элементами A и B, которые одновременно принадлежат обоим множествам, без дублей. Сложность алгоритма O(m+n), где m и n — длины входных множеств A и B соответственно.
Сделал небольшую анимацию, чтобы показать как работает алгоритм.
Пример реализации на javascript:
Обращение к функции:
II. Разность упорядоченных множеств
Разность двух упорядоченных множеств A и B — это множество с элементами A, не совпадающими с элементами B, без дублей. Сложность алгоритма O(m+n), где m и n — длины входных упорядоченных множеств A и B соответственно.
III. Объединение упорядоченных множеств
Объединение двух упорядоченных множеств A и B — это множество с элементами A и элементы множества B, без дублей. Сложность алгоритма O(m+n), где m и n — длины входных упорядоченных множеств A и B соответственно.
IV. Симметрическая разность упорядоченных множеств
Симметрическая разность двух упорядоченных множеств A и B — это такое множество, куда входят все те элементы первого упорядоченного множества, которые не входят во второе упорядоченное множество, а также те элементы второго упорядоченного множества, которые не входят в первое упорядоченное множество. Сложность алгоритма O(2(m+n)), где m и n — длины входных упорядоченных множеств A и B соответственно.
По сути это вычитание множеств, сначала A из B, затем B из A.
Теория множеств: основы и базовые операции над множествами
Мы знаем довольно много о структурах данных, понимаем их устройство, разбираемся, какие структуры работают быстро и помогают решать конкретные задачи. Но эти знания бесполезны, если мы не понимаем, как это использовать в реальной жизни. Это похоже на изучение геометрии в школе. Вы долго считаете предмет бесполезным, пока однажды не появляется необходимость рассчитать площадь пола, чтобы заказать новое ковровое покрытие. Впрочем, пользу геометрии можно почувствовать, даже если вы никогда не считали площадь пола в комнате самостоятельно.
Сегодня поговорим о структуре данных, которая в теории очень догматична, а на практике очень популярна. На самом деле вы так или иначе уже сталкивались с этой структурой, а также слышали о ней на уроках математики в школе. Вы уже догадались, что речь идёт о множествах.
Теория множеств без страха
Прежде чем разбирать устройство множеств, давайте поймём, откуда они появляются. То есть давайте сразу погрузимся в теорию — да-да, в теорию множеств! Не бойтесь сложностей — высока вероятность того, что вы уже так или иначе использовали эту теорию. Возможно, вы сталкивались с теорией множеств, когда проходили в школе диаграмму Венна. Диаграмму Венна включили в программу изучения множеств, так как она хорошо иллюстрирует отношения подмножеств.
Мы выяснили, что теория множеств не должна никого пугать. Теперь пришло время разобраться, что это за теория на самом деле. Множество — математическая концепция. Теорией множеств описывают отношения множеств.
Множество — ни что иное, как неупорядоченная коллекция, в которой нет дублирующихся элементов.
В этом определении есть три важных слова: «неупорядоченная», «дублирующихся» и «элементов». Эти слова точно передают суть и устройство множества. Если мы это запомним, то будем знать основную информацию о том, как работает эта структура данных.
Нужно понять, почему это важно. Для начала давайте посмотрим на множества в действии. Как сказано выше, отношения множеств удачно иллюстрирует диаграмма Венна. Давайте взглянем на два множества: книги, которые есть у человека дома, и книги, которые этот человек прочитал.
Если вы знакомы с диаграммой Венна, то понимаете, что в центре в зелёном круге находятся книги, которыми человек владеет, и которые он прочитал. Здесь множества пересекаются. Также вы понимаете, что два множества — прочитанные человеком книги и книги, которые есть у человека — существуют внутри другого множества. Это все существующие в мире книги.
Диаграмма Венна — хорошая база для понимания теории множеств, так как с её помощью легче понять более сложные вещи. Допустим, вы хотите представить два множества книг в какой-то структуре данных. Вы уже знаете, что книги надо разделить на два множества: которые человек прочитал и которые есть у него дома. Для удобства назовём первое множество 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.
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях.
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.