EliasDelta編碼
Elias Delta 編碼、Elias delta code是一種用佇正整數之通用編碼。該碼由那個得 ・ 埃利亞斯發明。
編碼
著蹛咧編碼正整數 _ X _ ≥ 一:
一 . 令 _ N _=⌊log 二 _ X _ ⌋,故二 N ≤ _ X _ < 二 N + 一二 . 令 _ L _=⌊log 二 _ N _ + 一 ⌋,故二 L ≤ _ N _ + 一 < 二 L + 一三 . 輸出 _ L _ 個零位元,紲落去輸出四 . _ N _ + 一之 _ L _ + 一位元二進位數,來輸出五 . _ X _ 的最後 _ N _ 個位元。
另外一个等價的編碼方式為:
一 . 將 _ X _ 分割是小於其之上大二的次方 ( 二 N ) 佮下跤的 _ N _ 個位元之佮二 . 將 _ N _ + 一走以編碼三 . 共下跤的 _ N _ 個位元接著述了後。
愛對 $ x $ 進行編碼,以利亞戴爾達碼必須愛使用 $ \ lfloor \ log _ { 二 } ( x ) \ rfloor + 二 \ lfloor \ log _ { 二 } ( \ lfloor \ log _ { 二 } ( x ) \ rfloor + 一 ) \ rfloor + 一 $ 個位元。
以下為一編碼對照表:
解碼
用利亞戴爾達碼之解碼遵循下列步驟:
一 . 讀計數零位元到第一个一位元出現,假使有 L 出現兩 . 對頭一个一位元了後,閣讀取 L 個位元,並且共讀予取之二 L + 一塊位元還原成十進位正整數。假使講這正整數做 _ N _ + 一三 . 閣讀取 _ N _ 個位元並將之還原成十進位正整數,令之為 _ M _ 四 . 最終解碼為二 N + _ M _
舉例:
` ` ` 一百空一孵空一十一一 . 上左方有兩个零位元一二 . 閣讀取兩个位元一百空一三 . 還原一百空一=五四 . 閣讀取 N=五 − 一=四个位元十一=三五 . 解碼為=二十四 + 三=十九 ` ` `
範例程式碼
編碼
解碼
一般化
以利亞戴爾達碼並無適用佇零或者是負整數。一个一般化的方式是佇上倒爿先加一个一位元,解碼的時陣閣再行扣掉。另外一个方法是咧編碼前將所有整數對映至正整數,比如講:( 零 , 一 , − 一 , 二 , − 二 , 三 , − 三 , . . . ) 對應至 ( 一 , 二 , 三 , 四 , 五 , 六 , 七 , . . . )。
來參考項目
- Elias , Peter ( March 一千九百七十五 ) . " Universal codeword sets and representations of the integers " . IEEE Transactions on Information Theory 二十一 ( 二 ) : 一百九十四–兩百空三 .
- Classical and Quantum Information Theory : An Introduction for the Telecom . . .
- Database Systems for Advanced Applications : 十五 th International Conference . . .
- Web Data Mining : Exploring Hyperlinks , Contents , and Usage Data