// Elias Delta – universele code die efficiënter is dan Gamma voor grote gehele getallen
Efficiënter dan Elias Gamma voor n > 3.
Werkt voor elk positief geheel getal zonder extra parameters.
Gebruikt log₂(n) + 2log₂(log₂(n)) + 1 bits.
Elias Delta codeert een positief geheel getal n in drie delen: 1) bepaal L = ⌊log₂(n)⌋ + 1 (bitlengte), 2) codeer L met Elias Gamma, 3) plak de laatste L−1 bits van n eraan vast. Deze dubbel-logaritmische groei maakt Delta efficiënter dan Gamma voor grotere getallen, terwijl het een universele code blijft.
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' Lengtes vergelijken: n | Gamma | Delta | Besparing 1 | 1 | 1 | 0 16 | 9 | 9 | 0 100 | 13 | 12 | 1 1000 | 19 | 16 | 3
Elias Delta is een verbetering op Elias Gamma: eerst wordt de lengte van de binaire representatie met Gamma gecodeerd, daarna worden de resterende bits toegevoegd. Het gebruikt ongeveer log₂(n) + 2log₂(log₂(n)) + 1 bits en is daardoor efficiënter voor grote gehele getallen.
Gamma gebruikt 2⌊log₂(n)⌋ + 1 bits, terwijl Delta log₂(n) + 2log₂(log₂(n)) + 1 bits gebruikt. Delta is beter voor n > 3 en de winst neemt toe voor grotere waarden. Voor zeer kleine waarden (1–3) zijn de codes vergelijkbaar.
Gebruik Delta wanneer je data vooral uit gehele getallen > 3 bestaat. Voor zeer kleine gehele getallen (1–2) kan Gamma iets beter zijn. Voor zeer grote waarden kun je Elias Omega overwegen, dat verder bouwt op Delta.
Delta is het compromis. Gamma is het eenvoudigst maar het minst efficiënt. Delta verbetert de compressie. Omega is het beste voor zeer grote getallen, maar ook het meest complex. Kies op basis van je gegevensverdeling en implementatie-eisen.