[주의!] 문서의 이전 버전(에 수정)을 보고 있습니다. 최신 버전으로 이동
분류
1. collision probability research

1. collision probability research[편집]

유니코드 기준 현대 한글의 모든 완성형 글자는 총 19×21×28=11,17219 \times 21 \times 28 = 11,172자이며, 44개의 문자가 연달아 사용되므로 표본 공간의 크기는
11,1724=15,578,430,750,925,0561.5578430751×101611,172^4 = 15,578,430,750,925,056 \approx 1.5578430751 \times 10^{16}

입니다. 편의상 이를 NN이라고 하겠습니다.

하나의 작업에서 xx개의 식별자를 생성했을 때, 이중 '적어도 하나의 식별자 충돌이 발생할 확률'을 구하고자 합니다. 이 확률을 pp로 둡시다. 예를 들어 p=30%p = 30\%라면 대략 30%30\%의 확률로 충돌이 발생할 가능성이 있다는 뜻입니다.

이어서 실제로 나무위키 모든 문서를 대상으로 하는 1회의 작업을 수행하였을 때, 동일 작업 내에서 식별자 충돌이 발생할 실제 확률 pp를 구하고자 합니다. 단순한 비교를 위해 테일러 전개로 적절한 하한을 찾아 근사하도록 합니다. 일단 자명하게
p=1NPxNx\displaystyle p = 1 - \frac{_N\mathrm P_x}{N^x}

이므로 우변의 NPxNx\frac{_N\mathrm P_x}{N^x} 부분을 근사하는 어떤 함수 f(x)f(x)를 찾은 후 1f(x)1 - f(x)를 구하면 pp의 근사값을 얻을 수 있습니다. 우선 NPxNx\frac{_N\mathrm P_x}{N^x} 수식을 곱의 형태로 정리해 봅시다.
1p=k=1x11kN\displaystyle 1 - p = \prod^{x-1}_{k = 1} 1 - \frac kN

이어서 expkN\exp -\frac kN을 테일러 전개하고 선형 근사를 구하면
expkN=i=0(kN)ii!1kN\displaystyle \exp -\frac kN = \sum_{i = 0} \frac{\left(-\frac kN\right)^i}{i!} \approx 1 - \frac kN

이 근사를 적용해서 '어떤 함수' f(x)f(x)1p1 - p를 근사하도록 조립해 봅시다.
f(x)=expx(x1)2N=expk=1x1kN=k=1x1expkNk=1x11kN=1p\displaystyle f(x) = \exp -\frac{x(x-1)}{2N} = \exp \sum^{x - 1}_{k = 1} -\frac kN = \prod^{x - 1}_{k = 1} \exp -\frac kN \approx \prod^{x - 1}_{k = 1} 1 - \frac kN = 1 - p

나무위키:통계에 따르면 2025-05-08 20:04:05-0400 기준 나무위키의 모든 문서는 7,149,0877,149,087개 가량입니다. 앞서 구한 f(x)f(x)에 이 값을 집어넣으면 나무위키의 모든 문서를 대상으로 하는 작업을 수행했을 해당 작업 내에서 식별자 충돌이 발생할 확률 pp를 구할 수 있습니다.
p=1f(7,149,087)=1exp7,149,087×7,149,0862×15,578,430,750,925,056=10.9983609536=0.00163904640.1639%\displaystyle\begin{aligned} p &= 1 - f(7,149,087) \\ &= 1 - \exp -\frac{7,149,087 \times 7,149,086}{2 \times 15,578,430,750,925,056} \\ &= 1 - 0.9983609536 \\ &= 0.0016390464 \\ &\approx 0.1639\% \\ \end{aligned}

이는 다시 말해 한 작업 내에서 나무위키의 모든 문서를 편집한다 하더라도, 식별자 충돌이 발생할 가능성이 0.2%0.2\%보다 적다는 것을 의미합니다. 현실적으로 개별 작업이 한번에 다루는 문서 범위는 이보다 훨씬 좁으므로 충돌 가능성은 더욱 하락합니다. 일례로 2025-05-08 23:03:00-0400 기준 역링크가 120,827120,827개에 달하는 틀:상세 내용 등 고빈도 틀의 대규모 매개변수 작업 등을 진행한다 하여도 충돌 발생 가능성은 0.0000468566%0.0000468566\%에 지나지 않습니다.