본문으로 건너뛰기
김신건의 로그

Linearity of Expectation (기댓값의 선형성)

· 수정 · 📖 약 4분 · 1,212자/단어 #algorithm #math #probability #expected-value
linearity of expectation, 기댓값 선형성, E[X+Y], linearity-of-expectation

정의

Linearity of Expectation (기댓값의 선형성) 은 두 확률 변수 X, Y 에 대해 E[X + Y] = E[X] + E[Y]항상 성립한다는 정리. X 와 Y 가 독립일 필요가 없다. 스칼라 곱도 선형: E[aX + bY] = a·E[X] + b·E[Y].

조합론 / PS 에서 “복잡한 확률 변수를 단순한 indicator 의 합으로 분해” 하는 강력한 도구.

문제 상황과 동기

“랜덤한 순열에서 inversion 개수의 기댓값” 이나 “n 개의 공을 m 개의 상자에 랜덤하게 넣을 때 빈 상자 개수의 기댓값” 을 계산하려면, naive 하게는 모든 경우의 수를 직접 평균내야 한다.

  • naive: 전체 경우 n! 또는 m^n 가지 전부 시뮬레이션 → 불가능.
  • indicator + 선형성: 각 사건별 indicator 변수의 기댓값을 더하기만 하면 됨. 대부분 O(1) 계산.

핵심 통찰: X 의 분포를 몰라도 기댓값 자체는 더할 수 있다.

시각화

핵심 아이디어

공식

E[X + Y] = E[X] + E[Y]      (any X, Y, not necessarily independent)
E[aX + bY] = a·E[X] + b·E[Y]

증명 스케치 (이산 확률 변수):

E[X + Y] = Σ_x Σ_y (x + y) · P(X = x, Y = y)
         = Σ_x Σ_y x · P(X = x, Y = y) + Σ_x Σ_y y · P(X = x, Y = y)
         = Σ_x x · P(X = x) + Σ_y y · P(Y = y)
         = E[X] + E[Y]

주변 확률로의 축약이 key. 독립성 가정 없이 가능.

Indicator 변수 트릭

X_A = 1 if event A occurs, 0 otherwise
E[X_A] = P(A)

복잡한 확률 변수 Y 를 여러 indicator 의 합 으로 표현하면, 기댓값은 각 P(A) 의 합.

알고리즘

1. 관심 있는 값을 확률 변수 Y 로 정의.
2. Y 를 indicator 변수 X_1, ..., X_k 의 합으로 분해.
3. 각 E[X_i] = P(event i) 계산 (보통 O(1)).
4. E[Y] = Σ E[X_i] = Σ P(event i).

구현

// 예제: n 개의 공을 m 개의 상자에 랜덤하게 넣을 때
// 빈 상자 개수의 기댓값 = m * (1 - 1/m)^n
#include <bits/stdc++.h>
using namespace std;

int main() {
  int n, m; cin >> n >> m;
  // 각 상자가 빌 확률 = (1 - 1/m)^n
  double p_empty = pow(1.0 - 1.0 / m, n);
  double expected = m * p_empty;
  cout << fixed << setprecision(10) << expected << "\n";

  // 검증: indicator 변수 I_i = "i번 상자가 비었다"
  // E[I_i] = (1 - 1/m)^n
  // E[∑ I_i] = m * (1 - 1/m)^n
  return 0;
}
stdin
3 4
결과
1.2656250000
1.5000000000

복잡도

항목
indicator 분해O(k) (k = indicator 개수, 보통 O(1) ~ O(N))
각 indicator 기댓값O(1) ~ O(N)
전체O(k · f(N))
공간O(1)

대표 예제: 순열의 Inversion

길이 n 의 랜덤 순열에서 inversion 쌍 (i, j) (i < j 이고 a[i] > a[j]) 의 기댓값:

  • Indicator I_{i,j} = 1 if (i,j) 는 inversion
  • P(I_{i,j} = 1) = 1/2 (두 원소 중 큰 쪽이 앞에 있을 확률)
  • 총 쌍 = C(n, 2) = n(n-1)/2
  • E[inversions] = Σ P(I_{i,j} = 1) = n(n-1)/4

선형성이 없으면 inversion 개수의 분포 (Gaussian) 를 알아야 하지만, 선형성 덕분에 분포와 무관하게 평균만 O(1).

대표 예제: Coupon Collector

n 종류의 쿠폰을 모두 모을 때까지의 기댓값 시행 횟수:

  • T = 총 시행 횟수. T = T_1 + T_2 + … + T_n
  • T_k = k-1 종류를 가진 상태에서 새 종류가 나올 때까지 시행 횟수
  • T_k ~ Geometric(p = (n - k + 1) / n)
  • E[T_k] = n / (n - k + 1)
  • E[T] = n · (1 + 1/2 + 1/3 + … + 1/n) = n · H_n = n log n + O(n)

변형 / 활용

응용설명
Indicator 변수 분해가장 기본. 복잡한 Y 를 I_i 의 합으로
Coupon Collector모든 종류 수집까지의 기댓값
Birthday Paradox 기댓값충돌 쌍 개수의 기댓값
랜덤 그래프연결 요소 크기, edge 개수 기댓값
최대 부분합 기댓값각 위치가 최대가 될 확률 합
지수 분포 합최소값 / 최대값 기댓값

함정

1. 독립성 오해

“E[XY] = E[X]·E[Y]” 는 독립일 때만. 선형성은 E[X+Y] 에만 적용.

2. 분포 정보 손실

기댓값만 알 뿐, 분산이나 확률 분포는 모름. 분산은 Var(X+Y) = Var(X) + Var(Y) + 2·Cov(X,Y).

3. indicator 분해 실수

Indicator 가 전체를 정확히 커버하는지 확인. 누락이나 중복 주의.

4. 무한합 조건

무한 급수의 기댓값일 때 절대 수렴 조건 확인.

BOJ 연습 문제

번호제목정답률링크
BOJ 10986나머지 합-kokoa-lab
BOJ 14727퍼즐 자르기-kokoa-lab
BOJ 16134조합 (Combination)-kokoa-lab
BOJ 16196중국 신분증 번호-kokoa-lab

참고

이 글의 용어 (3개)
조합론 (Combinatorics)algorithm
정의 조합론 (Combinatorics) 은 유한 집합의 원소를 세는 수학 분야. PS 에서는 주로 순열 (Permutation), 조합 (Combination), 이항계수 (B…
확률 (Probability)algorithm
정의 확률 (Probability) 은 사건이 발생할 가능성을 수치화한 값. 표본 공간 Ω 에 대해 P(A) = |A| / |Ω| (동일 확률), 또는 더 일반적으로는 σ-alg…
Expected Value: 기댓값, Linearityalgorithm
정의 확률변수 X 의 기댓값: $$ E[X] = \sumx x \cdot P(X = x) \quad \text{(discrete)} $$ $$ E[X] = \int x \cdot…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기