8강 / 20강
집합 연산 — 겹치는 부분, 합친 부분, 빼는 부분
벤 다이어그램은 진리표의 그림 버전입니다
집합 두 개가 있으면 그 사이에서 새 집합을 만들 수 있습니다. 놀랍게도 2강에서 배운 논리 연산과 하나씩 짝이 맞습니다.
| 연산 | 기호 | 뜻 | 논리로 보면 | 파이썬 |
|---|---|---|---|---|
| 교집합 | A ∩ B | 둘 다에 있는 것 | x∈A ∧ x∈B | A & B |
| 합집합 | A ∪ B | 하나라도에 있는 것 | x∈A ∨ x∈B | A | B |
| 차집합 | A − B | A에는 있고 B에는 없는 것 | x∈A ∧ ¬(x∈B) | A - B |
| 여집합 | Ac | A 밖의 모든 것 | ¬(x∈A) | U - A |
| 대칭차 | A △ B | 한쪽에만 있는 것 | x∈A ⊕ x∈B | A ^ B |
파이썬 기호가 &, |, ^ 인 것도 우연이 아닙니다 —
비트 연산과 같은 기호예요. 논리·집합·비트는 같은 것의 세 얼굴입니다.
학생 명단으로 다섯 연산을 한 번에 확인합니다.
Python
브라우저에서 실행
🎮 벤 다이어그램을 직접 칠해 보세요
영역을 클릭하면 색이 칠해지고, 그 영역에 해당하는 집합 식과 원소 목록이 함께 나옵니다. ∩, ∪, − 를 눈으로 익혀 보세요.
집합의 법칙 = 논리의 법칙
2강에서 배운 드모르간 법칙이 집합에서도 그대로 성립합니다.
(A ∩ B)c = Ac ∪ Bc(A ∪ B)c = Ac ∩ Bc
"둘 다에 속하지 않는다" = "A에 없거나 B에 없다". 논리에서 참·거짓으로 했던 이야기를 원소의 소속으로 바꿔 말한 것뿐이에요. 같은 구조를 두 번 배우는 것이 아니라, 한 구조를 두 언어로 배우는 것입니다.
논리에서 참이었던 법칙이 집합에서도 그대로 참입니다.
Python
브라우저에서 실행
A × B 는 (A의 원소, B의 원소) 짝을 모두 모은 집합입니다.
Python
브라우저에서 실행
🤔 확인 문제
A = {1,2,3,4}, B = {3,4,5} 일 때 A − B 는?해설 차집합은 A에는 있고 B에는 없는 것입니다. 3과 4는 B에도 있으니 빠지고 {1, 2}만 남아요. {1,2,5}는 대칭차
A △ B입니다.🤔 확인 문제
30명 반에서 축구를 좋아하는 학생 18명, 농구를 좋아하는 학생 15명, 둘 다 좋아하는 학생이 7명일 때 적어도 하나를 좋아하는 학생 수는?
해설
|A ∪ B| = 18 + 15 − 7 = 26명입니다. 그냥 더한 33은 둘 다 좋아하는 7명을 두 번 센 값이에요. 참고로 아무것도 안 좋아하는 학생은 30 − 26 = 4명입니다.🤔 확인 문제
(A ∪ B)c 와 같은 것은?해설 드모르간 법칙입니다 — 합집합의 여집합은 여집합의 교집합. "A에도 B에도 속하지 않는다"는 "A 밖에 있고 동시에 B 밖에 있다"는 뜻이니까요. 2강의
¬(p ∨ q) ≡ ¬p ∧ ¬q 와 같은 문장입니다.