open atlas
↑ К треку
Логика с нуля LOGIC · 03 · 02

Операции над множествами и диаграммы Венна: объединение, пересечение, разность, дополнение

Объединение, пересечение, разность, дополнение — четыре операции, которые суть ИЛИ, И, НЕ над принадлежностью. Диаграммы Венна — карты областей, де Морган превращает объединение в пересечение под дополнением, а включения-исключения объясняют, почему 1200 + 300 — это 1400 людей.

LOGIC Основы ◷ 15 min
Уровень
ОсновыJuniorMiddleSenior

В тикете значилось: «исключить всех, кто отписался или чей адрес отбился». Разработчик написал users.filter(u => !u.unsubscribed || !u.bounced) и выкатил. Следующая рассылка ушла на тысячи отбившихся адресов — включая людей, отписавшихся годы назад, — и домен отправителя попал в спам-блоклист. Прочитайте условие медленно: у пользователя, который отбился, но никогда не отписывался, !u.unsubscribed истинно, и ИЛИ пропускает его внутрь. Автор хотел «вне объединения двух групп», а написал «вне одной группы или вне другой» — а это разные области. Существует закон возрастом в сто семьдесят лет, который говорит точно, как отрицание распределяется по объединению, и картинка с двумя пересекающимися кругами, на которой баг виден с одного взгляда.

Цель

После этого урока ты можешь сформулировать правило принадлежности для каждой из четырёх операций над множествами, нарисовать и прочитать двухкружную диаграмму Венна, применить законы де Моргана к условию фильтра, воспользоваться включениями-исключениями для подсчёта объединения и понять, что разность направленна.

1

Существует четыре классических операции, соединяющих множества, каждая определяется правилом принадлежности. Возьмём A = {1, 2, 3} и B = {3, 4}:

  • Объединение A ∪ B — элементы из A или из B (или из обоих): {1, 2, 3, 4}.
  • Пересечение A ∩ B — элементы из A и из B: {3}.
  • Разность A ∖ B — элементы A, которых нет в B: {1, 2}. Направление важно: B ∖ A — это {4}, другое множество.
  • Дополнение — всё, что не в A, внутри объявленного универсума U. Без U «всё» неопределено и дополнение бессмысленно.

Это просто ИЛИ, И, И-НЕ и НЕ над утверждениями о принадлежности. Каждый закон логики высказываний — прежде всего де Морган — переносится дословно.

a = {1, 2, 3}
b = {3, 4}

a | b   # объединение   → {1, 2, 3, 4}
a & b   # пересечение  → {3}
a - b   # разность     → {1, 2}
b - a   # другое направление → {4}
2

Диаграмма Венна рисует каждое множество кругом внутри прямоугольника (универсума). Два пересекающихся круга режут прямоугольник ровно на четыре области: только A, обе, только B, ни одна. Каждая операция — выбор областей: объединение закрашивает три, пересечение — центральную линзу, разность A ∖ B — левый полумесяц, а дополнение A ∪ B — только наружную часть. Читайте диаграмму Венна как карту: не «что значит ∩?», а «какие области закрашены?»

3

Законы де Моргана переносятся с логики на множества дословно. Дополнение A ∪ B равно пересечению дополнений: не в (A ∪ B) означает не в A И не в B. Баговый фильтр хотел дополнение (отписавшиеся ∪ отбившиеся):

// Хотели: NOT (отписан OR отбит) = де Морган = (NOT отписан) AND (NOT отбит)
const eligible = users.filter((u) => !u.unsubscribed && !u.bounced); // правильно

// Выкатили: (NOT отписан) OR (NOT отбит) — три области Венна вместо одной
const buggy = users.filter((u) => !u.unsubscribed || !u.bounced);
4

Подсчёт объединения использует формулу включений-исключений. Сумма |A| + |B| считает линзу дважды — по разу на круг — поэтому вычтите перекрытие один раз: |A ∪ B| = |A| + |B| − |A ∩ B|. Рассылка 1 200, бета 300, перекрытие 100: 1 200 + 300 − 100 = 1 400, а не 1 500.

Разбор примера

Пользователи: A = активные, B = участники беты. Универсум U = все зарегистрированные аккаунты.

Примените правила принадлежности, чтобы классифицировать каждый фильтр.

  • users.filter(u => isActive(u) && isBeta(u)) — A ∩ B: пользователи в ОБЕИХ группах (линза).
  • users.filter(u => isActive(u) || isBeta(u)) — A ∪ B: пользователи в ЛЮБОЙ группе (три области).
  • users.filter(u => isActive(u) && !isBeta(u)) — A ∖ B: активные, но НЕ бета (левый полумесяц).
  • users.filter(u => !isActive(u) && !isBeta(u)) — дополнение(A ∪ B): ни активные, ни бета (наружная область).

Проверка де Моргана для последнего фильтра: NOT (активный OR бета) = (NOT активный) AND (NOT бета) — подтверждено, && корректен.

Частая ошибка

Надёжная проверка де Моргана на ревью: прогоните подозрительное условие через по одному конкретному представителю каждой области Венна — пользователя только в одном плохом множестве, в обоих, ни в одном. Четыре тестовых значения, четыре области — неверная связка всегда неправильно классифицирует хотя бы одного. Это быстрее и убедительнее, чем перевыводить алгебру в голове.

Практика 0 / 5

A = {1, 2, 3}, B = {3, 4}. Чему равно A ∪ B? Перечислите элементы в фигурных скобках.

A = {1, 2, 3}, B = {3, 4}. Чему равно A ∩ B? Перечислите элементы.

A = {1, 2, 3}, B = {3, 4}. Чему равно A ∖ B? Перечислите элементы.

В рассылке 500 подписчиков, в бете 200, 50 в обеих. Чему равно |рассылка ∪ бета|?

Нужно NOT (отписан OR отбит). Какой фильтр верен? Напишите A или B. A: !u.unsubscribed && !u.bounced B: !u.unsubscribed || !u.bounced

Проверь себя
Викторина

Внутри универсума U чему равно дополнение A ∪ B?

Итог

Множества соединяются четырьмя операциями, и каждая — логическая связка над принадлежностью: объединение A ∪ B — это ИЛИ, пересечение A ∩ B — И, разность A ∖ B — И-НЕ, а дополнение — НЕ, законное лишь внутри объявленного универсума U. Раз операции — связки, де Морган переносится дословно: дополнение A ∪ B — пересечение дополнений. Диаграмма Венна делает каждую операцию областью, на которую можно показать: два круга режут универсум на четыре области, каждое значение живёт ровно в одной. Подсчёт следует карте: |A ∪ B| = |A| + |B| − |A ∩ B|, потому что сумма размеров кругов считает линзу дважды. Разность направленна: A ∖ B и B ∖ A отвечают на разные вопросы.

Практика

Начни сверху. Задачи идут от простого к сложному: вспомнить факт, применить к случаю, затем senior-уровень. Открой, попробуй, потом открой ответ.

вспомнитьприменитьуглубить0 из 5 завершено

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

Примени это

Примени этот урок в реальном проекте.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources4
expand
  1. 01
  2. 02
  3. 03
  4. 04

Trademarks belong to their respective owners. Editorial reference only.