인코딩 | 디코딩 | 압축

> elias | delta | optimal <

// Elias Delta – 더 큰 정수에 대해 Gamma보다 효율적인 범용 코드

0 문자
0 문자

>> 기능

[효율적]

Gamma보다 효율적

n > 3인 정수에 대해 Elias Gamma보다 더 높은 압축 효율을 제공합니다.

[범용]

범용 코드

추가 매개변수 없이 모든 양의 정수에 사용할 수 있습니다.

[점근적]

우수한 점근적 특성

log₂(n) + 2log₂(log₂(n)) + 1 비트를 사용합니다.

>> 기술 정보

Elias Delta 동작 방식

Elias Delta는 양의 정수 n을 세 단계로 부호화합니다. 1) L = ⌊log₂(n)⌋ + 1 (비트 길이)을 계산합니다. 2) L을 Elias Gamma로 부호화합니다. 3) n의 마지막 L−1 비트를 뒤에 붙입니다. 이러한 이중 로그 성장 덕분에 큰 정수에 대해 Gamma보다 효율적이면서도 범용성을 유지합니다.

Delta 부호화 예시

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를 사용할 이유

  • n > 3일 때 Gamma보다 더 효율적
  • 조정할 매개변수가 없음
  • 프리픽스‑프리이면서 단일 복호화가 가능한 코드
  • 중간 크기 정수에 적합
  • Elias Omega로 이어지는 중간 단계

>> 자주 묻는 질문

Elias Delta 부호화란 무엇인가요?

Elias Delta는 Elias Gamma를 개선한 부호입니다. 먼저 수의 비트 길이를 Gamma로 부호화한 뒤 나머지 비트를 이어 붙입니다. 대략 log₂(n) + 2log₂(log₂(n)) + 1 비트를 사용하므로 큰 정수에 대해 더 효율적입니다.

Delta와 Gamma의 차이는 무엇인가요?

Gamma는 2⌊log₂(n)⌋ + 1 비트를 사용하고, Delta는 log₂(n) + 2log₂(log₂(n)) + 1 비트를 사용합니다. n > 3인 경우 Delta가 더 좋고, n이 커질수록 절약 효과가 커집니다. 1–3과 같은 작은 값에서는 두 방식이 비슷합니다.

Gamma 대신 Delta를 언제 사용해야 하나요?

데이터가 주로 n > 3인 정수로 구성되어 있다면 Delta를 선택하는 것이 좋습니다. 아주 작은 정수(1–2)에는 Gamma가 조금 더 나을 수 있습니다. 매우 큰 정수에 대해서는 Delta를 확장한 Elias Omega 사용을 고려할 수 있습니다.

Delta가 최고의 Elias 코드인가요?

Delta는 중간 지점에 있는 코드입니다. Gamma는 가장 단순하지만 효율이 낮습니다. Delta는 압축률을 개선합니다. Omega는 매우 큰 정수에서 가장 효율적이지만 구현이 가장 복잡합니다. 데이터 분포와 요구 사항에 따라 선택해야 합니다.