エンコード | デコード | 圧縮

> elias | delta | optimal <

// Elias Delta – 大きな整数に対してGammaより高効率な汎用符号

0 文字
0 文字

>> 特長

[効率的]

Gammaより高効率

n > 3 の整数に対してElias Gammaより高い圧縮効率を実現します。

[汎用]

汎用コード

追加パラメータなしで任意の正の整数に適用できます。

[漸近性]

良好な漸近特性

log₂(n) + 2log₂(log₂(n)) + 1 ビットを使用します。

>> 技術情報

Elias Deltaの仕組み

Elias Deltaは正の整数 n を3つのステップで符号化します。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は非常に大きな整数に対して最も高効率ですが、その分実装が複雑です。データ分布と要件に応じて選択してください。