// Elias Delta – codice universale più efficiente di Gamma per interi più grandi
Più efficiente di Elias Gamma per interi > 3.
Funziona con qualsiasi intero positivo senza parametri aggiuntivi.
Usa log₂(n) + 2log₂(log₂(n)) + 1 bit.
Elias Delta codifica un intero positivo n in tre parti: 1) si calcola L = ⌊log₂(n)⌋ + 1 (lunghezza in bit), 2) si codifica L usando Elias Gamma, 3) si aggiungono gli ultimi L−1 bit di n. Questa crescita doppiamente logaritmica lo rende più efficiente di Gamma per numeri più grandi, mantenendo la natura universale del codice.
n=1: L=1, Gamma(1)='1', bit='', Delta='1' n=2: L=2, Gamma(2)='010', bit='0', Delta='0100' n=3: L=2, Gamma(2)='010', bit='1', Delta='0101' n=4: L=3, Gamma(3)='011', bit='00', Delta='01100' n=16: L=5, Gamma(5)='00101', bit='0000', Delta='001010000' Confronto delle lunghezze: n | Gamma | Delta | Risparmio 1 | 1 | 1 | 0 16 | 9 | 9 | 0 100 | 13 | 12 | 1 1000 | 19 | 16 | 3
Elias Delta è un miglioramento di Elias Gamma: codifica innanzitutto la lunghezza della rappresentazione binaria con Gamma e poi aggiunge i bit rimanenti. Usa circa log₂(n) + 2log₂(log₂(n)) + 1 bit, risultando più efficiente per interi più grandi.
Gamma utilizza 2⌊log₂(n)⌋ + 1 bit, mentre Delta utilizza log₂(n) + 2log₂(log₂(n)) + 1 bit. Delta è migliore per n > 3 e il risparmio cresce con numeri più grandi. Per valori molto piccoli (1–3) i due codici sono comparabili.
Usa Delta quando i tuoi dati contengono principalmente interi > 3. Per interi molto piccoli (1–2), Gamma può essere leggermente migliore. Per interi molto grandi considera Elias Omega, che migliora ulteriormente Delta.
Delta è una via di mezzo. Gamma è il più semplice ma il meno efficiente. Delta migliora la compressione. Omega è il migliore per interi molto grandi ma anche il più complesso. Scegli in base alla distribuzione dei dati e ai vincoli di implementazione.