// Elias Delta – 더 큰 정수에 대해 Gamma보다 효율적인 범용 코드
n > 3인 정수에 대해 Elias Gamma보다 더 높은 압축 효율을 제공합니다.
추가 매개변수 없이 모든 양의 정수에 사용할 수 있습니다.
log₂(n) + 2log₂(log₂(n)) + 1 비트를 사용합니다.
Elias Delta는 양의 정수 n을 세 단계로 부호화합니다. 1) L = ⌊log₂(n)⌋ + 1 (비트 길이)을 계산합니다. 2) L을 Elias Gamma로 부호화합니다. 3) n의 마지막 L−1 비트를 뒤에 붙입니다. 이러한 이중 로그 성장 덕분에 큰 정수에 대해 Gamma보다 효율적이면서도 범용성을 유지합니다.
n=1: L=1, Gamma(1)='1', bits='', Delta='1' n=2: L=2, Gamma(2)='010', bits='0', Delta='0100' n=3: L=2, Gamma(2)='010', bits='1', Delta='0101' n=4: L=3, Gamma(3)='011', bits='00', Delta='01100' n=16: L=5, Gamma(5)='00101', bits='0000', Delta='001010000' 길이 비교: n | Gamma | Delta | 절약 1 | 1 | 1 | 0 16 | 9 | 9 | 0 100 | 13 | 12 | 1 1000 | 19 | 16 | 3
Elias Delta는 Elias Gamma를 개선한 부호입니다. 먼저 수의 비트 길이를 Gamma로 부호화한 뒤 나머지 비트를 이어 붙입니다. 대략 log₂(n) + 2log₂(log₂(n)) + 1 비트를 사용하므로 큰 정수에 대해 더 효율적입니다.
Gamma는 2⌊log₂(n)⌋ + 1 비트를 사용하고, Delta는 log₂(n) + 2log₂(log₂(n)) + 1 비트를 사용합니다. n > 3인 경우 Delta가 더 좋고, n이 커질수록 절약 효과가 커집니다. 1–3과 같은 작은 값에서는 두 방식이 비슷합니다.
데이터가 주로 n > 3인 정수로 구성되어 있다면 Delta를 선택하는 것이 좋습니다. 아주 작은 정수(1–2)에는 Gamma가 조금 더 나을 수 있습니다. 매우 큰 정수에 대해서는 Delta를 확장한 Elias Omega 사용을 고려할 수 있습니다.
Delta는 중간 지점에 있는 코드입니다. Gamma는 가장 단순하지만 효율이 낮습니다. Delta는 압축률을 개선합니다. Omega는 매우 큰 정수에서 가장 효율적이지만 구현이 가장 복잡합니다. 데이터 분포와 요구 사항에 따라 선택해야 합니다.