비둘기 13마리가 집 12개에 들어가면 어떤 집에는 두 마리 이상이 있습니다. 이렇게 당연해 보이는 원리가 의외로 강력한 증명 도구가 됩니다. 이 강에서는 비둘기집 원리와, 겹치는 부분을 더하고 빼서 정확히 세는 포함배제 원리를 다룹니다.
7강의 법칙은 “정확히 몇 개”를 셉니다. 이 강의 두 도구는 조금 다릅니다. 비둘기집 원리는 정확한 수 없이도 “적어도 하나는 있다”를 보이고, 포함배제 원리는 겹치는 부분을 더하고 빼서 정확히 셉니다.
8.1 비둘기집 원리
정리 8.1 (비둘기집 원리). n+1마리 이상의 비둘기가 n개의 집에 들어가면, 두 마리 이상이 들어간 집이 있습니다.
증명. 모든 집에 한 마리 이하가 있다면 비둘기는 n마리 이하입니다. 대우입니다. □
함수로 말하면, ∣A∣>∣B∣이면 f:A→B는 단사가 아닙니다(5강의 정리 5.4).
예제 8.2. 13명이 있으면 생일이 같은 달인 두 사람이 있습니다(달이 12개).
예제 8.3. {1,2,…,2n}에서 n+1개를 고르면 그중 합이 2n+1인 두 수가 있습니다. 집을 {1,2n},{2,2n−1},…,{n,n+1}의 n쌍으로 잡으면 n+1개 중 두 수가 같은 쌍에 들어갑니다.
예제 8.4. 정수 n+1개 중에는 차가 n의 배수인 두 수가 있습니다. n으로 나눈 나머지(n가지)를 집으로 잡습니다.
8.2 일반화된 비둘기집 원리
정리 8.5. N마리가 k개의 집에 들어가면, 적어도 ⌈N/k⌉마리가 들어간 집이 있습니다.
증명. 모든 집에 ⌈N/k⌉−1마리 이하가 있다면 전체는 k(⌈N/k⌉−1)<k⋅N/k=N마리 이하이므로 모순입니다. □
예제 8.6. 100명 가운데 같은 달에 태어난 사람은 적어도 ⌈100/12⌉=9명 있습니다.
예제 8.7. 카드 52장(무늬 4개)에서 같은 무늬 3장을 반드시 얻으려면 2⋅4+1=9장을 뽑으면 됩니다. 8장으로는 무늬마다 2장씩일 수 있습니다.
8.3 포함배제 원리
4강의 ∣A∪B∣=∣A∣+∣B∣−∣A∩B∣를 셋 이상으로 늘립니다.
정리 8.8 (세 집합의 포함배제).
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣A∩C∣−∣B∩C∣+∣A∩B∩C∣
정리 8.9 (포함배제 원리).
i=1⋃nAi=i∑∣Ai∣−i<j∑∣Ai∩Aj∣+i<j<k∑∣Ai∩Aj∩Ak∣−⋯+(−1)n+1∣A1∩⋯∩An∣
증명. 원소 x가 정확히 m≥1개의 Ai에 들어 있다고 합시다. 우변에서 x는 (1m)−(2m)+(3m)−⋯=1−∑k=0m(−1)k(km)=1−0=1번 세어집니다(7강의 따름정리 7.13). □
예제 8.10. 1부터 1000까지 2, 3, 5 가운데 어느 것의 배수: 500+333+200−166−100−66+33=734개. 어느 것의 배수도 아닌 수는 1000−734=266개입니다.
8.4 교란순열
정의 8.11 (교란순열). 1,2,…,n을 늘어놓을 때 어느 i도 i번째 자리에 오지 않는 순열을 교란순열(derangement)이라 하고 그 수를 Dn으로 씁니다.
n명이 모자를 맡겼다가 무작위로 돌려받을 때 아무도 자기 모자를 받지 못하는 경우입니다.
정리 8.12. Dn=n!k=0∑nk!(−1)k.
증명. Ai를 “i가 제자리에 있는 순열”이라 하면 ∣Ai1∩⋯∩Aik∣=(n−k)!입니다. 포함배제로 제자리인 것이 하나라도 있는 순열은 ∑k=1n(−1)k+1(kn)(n−k)!개이고, Dn=n!− 그것 =∑k=0n(−1)kk!n!입니다. □
D1=0, D2=1, D3=2, D4=9, D5=44입니다. Dn/n!은 e−1≈0.3679로 갑니다. 사람이 많아져도 아무도 자기 모자를 못 받을 확률은 약 37%로 거의 일정합니다.
8.5 전사함수의 수
정리 8.13. ∣A∣=m, ∣B∣=n일 때 전사함수 A→B의 수는
k=0∑n(−1)k(kn)(n−k)m.
증명. B의 원소 bk가 치역에 없는 함수의 집합을 Ak라 하면, k개의 원소를 빼먹는 함수는 (n−k)m개입니다. 전체 nm에서 포함배제로 하나라도 빼먹는 함수를 뺍니다. □
예제 8.14. 6명을 3개 팀에 배정하되 빈 팀이 없게 하는 방법: 36−3⋅26+3⋅16=729−192+3=540가지입니다.
쓰이는 곳. 해시 충돌이 반드시 생긴다는 증명, 압축 알고리즘의 한계(모든 파일을 줄일 수는 없다), 오류 정정 부호의 한계가 비둘기집 원리입니다. 포함배제는 확률 계산과 데이터베이스 질의 최적화에서 쓰입니다.
8.6 이 장의 요약
- 비둘기집: 무엇이 비둘기이고 무엇이 집인지 정하는 것이 전부입니다. ⌈N/k⌉.
- 포함배제: 홀수 개의 교집합은 더하고 짝수 개는 뺍니다.
- 교란순열 Dn≈n!/e, 전사함수의 수.
문제
8.1 [계산] · 확인 문제
양말 서랍에 빨강, 파랑, 검정, 흰색 양말이 많이 섞여 있습니다. 눈을 감고 꺼낼 때 같은 색 양말 한 켤레(2짝)를 반드시 얻으려면 최소 몇 짝을 꺼내야 할까요?
정답
풀이
색이 4가지이므로 4짝은 모두 다른 색일 수 있고, 5짝이면 비둘기집 원리로 같은 색 두 짝이 있습니다.
8.2 [계산] · 확인 문제
1부터 1000까지의 정수 가운데 2, 3, 5 어느 것의 배수도 아닌 수는 몇 개일까요?
정답
풀이
예제 8.10과 같이 1000−734=266개입니다.
8.3 [계산] · 확인 문제
교란순열의 수를 씁니다.
| n |
Dn |
| 4 |
[?] |
| 5 |
[?] |
| 6 |
[?] |
정답
풀이
정리 8.12로 D4=24(1−1+21−61+241)=9, D5=44, D6=265입니다. 점화식 Dn=(n−1)(Dn−1+Dn−2)로도 확인할 수 있습니다.
8.4 [계산]
5개의 서로 다른 공을 3개의 서로 다른 상자에 넣되 빈 상자가 없게 하는 방법은?
정답
풀이
정리 8.13으로 35−3⋅25+3⋅15=243−96+3=150가지입니다.
8.5 [계산]
어떤 반 학생 40명이 모두 1월부터 12월 사이에 태어났습니다. 같은 달에 태어난 학생이 적어도 몇 명 있다고 보장할 수 있을까요?
정답
풀이
⌈40/12⌉=4명입니다.
8.6 [증명]
한 변이 2인 정삼각형 안에 점 5개를 찍으면, 그중 거리가 1 이하인 두 점이 있음을 보입니다.
힌트 1
각 변의 중점을 이어 정삼각형을 한 변이 1인 작은 정삼각형 4개로 나눕니다.
풀이
세 변의 중점을 이으면 한 변이 1인 정삼각형 4개가 생깁니다. 점 5개를 이 4개의 조각(집)에 넣으면 두 점이 같은 조각에 들어갑니다. 한 변이 1인 정삼각형 안의 두 점 사이 거리는 1 이하입니다.