導入
ゼータ符号化またはボルディ・ヴィーニャ符号化は、2003 年にパオロ・ボルディとセバスティアーノ・ヴィーニャによって発明され、主にグラフ圧縮に使用されるエントロピー符号化です。
生成されるゼータ コードはプレフィックスおよびユニバーサルコードです。

原理
自然数Nのゼータ コーディングはパラメーターkに依存し、次の 2 つのステップで行われます。
- 単項コーディングを使用して、 N以下の2 kの最大累乗の指数をコーディングします。
- Nとこの最大累乗の差を切り捨てバイナリ コーディングでコーディングします。
数学的には、整数をエンコードするには
$$ {N, N \in \left [ (2^k)^h .. (2^k)^{h + 1} \right ]} $$
、最初にコーディングします$$ {h = \Big \lfloor \dfrac {\lfloor log_2 N \rfloor} k \Big \rfloor} $$
単項の場合は、サイズ(2 k ) h + 1 − (2 k ) hのアルファベットの切り捨てられたバイナリのN − (2 k ) hkによってパラメータ化されたゼータコードを自然整数に関連付ける関数を ζ k と呼びます。
パラメータ 1 のゼータ コーディング ( ζ 1関数を使用) はガンマ コーディングと同等であり、まったく同じコードを生成します。

相対整数のコーディング
ガンマ、デルタ、オメガ エンコードと同様に、実際のエンコードの前に全単射を使用して負またはゼロの数値を厳密に正の数に変換するゼータ エンコードで相対整数をエンコードすることができます。デコード後、元の相対整数を見つけるために逆の演算を実行する必要があります。

例
| 10進数 | バイナリ | ガンマコード | ゼータコード k = 1 | ゼータコード k = 2 | ゼータコード k = 3 | ゼータコード k = 4 |
|---|---|---|---|---|---|---|
| 1 | 00001 | 0 | 0 | 0 0 | 0 00 | 0 000 |
| 2 | 00010 | 10 0 | 10 0 | 0 10 | 0 010 | 0 0010 |
| 3 | 00011 | 10 1 | 10 1 | 0 11 | 0 011 | 0 0011 |
| 4 | 00100 | 110 00 | 110 00 | 10,000 | 0 100 | 0 0100 |
| 5 | 00101 | 110 01 | 110 01 | 10,001 | 0 101 | 0 0101 |
| 6 | 00110 | 110 10 | 110 10 | 10,010 | 0 110 | 0 0110 |
| 7 | 00111 | 110 11 | 110 11 | 10,011 | 0 111 | 0 0111 |
| 8 | 01000 | 1110 000 | 1110 000 | 10 1000 | 1000000 | 0 1000 |

