fbpx
维基百科

斐波那契编码

斐波那契編碼(Fibonacci coding)是一種僅使用兩種符號(0和1)表達數值的通用編碼英语Universal code (data compression)[1]。這種編碼是基於斐波那契數來表達整數的一個例子。這種編碼皆以「11」為結尾,並且在結尾之前不會出現連續2個1。

斐波那契編碼與齊肯多夫表述法密切相關。齊肯多夫表述法是一種基於齊肯多夫定理的进制系統,並且也具有不連續使用兩個1的特性。特定整數的斐波那契編碼正是數字順序顛倒的齊肯多夫表述法,並在末尾附加了一個額外的“1”。

定義

對於一個數字 ,若 代表 在斐波那契編碼中的碼字英语code word,則有:

 

其中F(i)為第i斐波那契數,因此F(i+2)是第i個相異的斐波那契數 。最後一位 為始終是1的附加位,並且不攜帶位置值。

可以看出,這樣的編碼是唯一的,並且在任何碼字中唯一出現的“11”是在末尾,即d(k−1)和d(k)。倒數第二位是最高有效位,第一位是最低有效位。許多进制可以省略前導零,如十进制,然而斐波那契編碼的前導零不能省略。

下面顯示了前幾個斐波那契編碼,以及其所謂的隱含概率,即對所有在斐波那契編碼中有最小碼值的數字而言的值。

數字 斐波那契表述法 斐波那契編碼 隱含概率
1   11 1/4
2   011 1/8
3   0011 1/16
4   1011 1/16
5   00011 1/32
6   10011 1/32
7   01011 1/32
8   000011 1/64
9   100011 1/64
10   010011 1/64
11   001011 1/64
12   101011 1/64
13   0000011 1/128
14   1000011 1/128

將一個整數N編碼為斐波那契編碼的方法為:

  1. 找到小於或等於N的最大斐波那契數,並且用N減去這個斐波那契數,並記錄剩餘的數
  2. 如果減去的這個數為為第i斐波那契數F(i),置1到i−2的位置(將最左邊的數字視為位置0)。
  3. N替換為剩餘的數,並重複步驟1~2直到剩餘的數為0
  4. 在最右邊加一個「1」

要解碼斐波那契編碼,請刪除最後的「1」,將剩餘的位數分配給1,2,3,5,8,13...(斐波那契數),並將位數為「1」的斐波那契數加總。

與其他通用編碼的比較

斐波那契編碼有一個有用的特性,有時它與其他通用編碼英语Universal code (data compression)相比更具吸引力:斐波那契編碼是自同步編碼英语Self-synchronizing code的一個示例,可以更容易地從損壞的資料流中恢復數據。對於大多數其他通用編碼英语Universal code (data compression),如果單個位元被更改,則其後的任何數據可能無法被正確讀取。另一方面,對於斐波那契編碼,更改位元可能會導致一個字詞(token)被讀取為兩個,或者導致兩個字詞被錯誤地讀取為一個,但從資料流中讀取“0”能阻止錯誤進一步傳播。由於唯一沒有“0”的資料流是“11”字詞的資料流,因此單個位元錯誤損壞的資料流與原始資料流之間的總編輯距離最多為3。

在這種使用符號序列進行編碼的方法中,可以自由推廣其中某些不允許存在的模式(如“11”)。[2]

例子

下表展示了整數65編碼到斐波那契编码為0100100011的具體內容,表示 。不使用前兩個斐波那契數F(0)=0F(1)=1,且末尾必定會加上一個「1」。

 

斐波那契进制

斐波那契进制(Fibonaccimal Base)是與黃金进制關係緊密的計數系統。它只用0和1表示數,每個數位的位值對應斐波那契數[3]。和黃金进制一樣,其標準形也不連續使用兩個1。如:

30 = 1×21 + 0×13 + 1×8 + 0×5 + 0×3 + 0×2 + 1×1 + 0×1 = 10100010fib

斐波那契进制與齊肯多夫表述法非常接近,斐波那契进制僅比齊肯多夫表述法末尾附加了一個額外的“0”。

由於最末位始終為零,因此有時會將之省去[3],而省去後的結果則與齊肯多夫表述法相同[4]

參見

  • 進位制
  • 黃金進制
  • 负斐波那契编码英语Negafibonacci coding
  • 奧斯特洛夫斯基记数系统英语Ostrowski numeration
  • 通用編碼英语Universal code (data compression)
  • 齊肯多夫定理

参考资料

  1. ^ Ayse Nalli, Cagla Ozyilmaz. The third order variations on the Fibonacci universal code. Journal of Number Theory. 2015-04, 149: 15–32 [2022-10-06]. doi:10.1016/j.jnt.2014.07.010. (原始内容于2018-06-29) (英语). 
  2. ^ Duda, Jarek. Optimal encoding on discrete lattice with translational invariant constrains using statistical algorithms. 2007. arXiv:0710.3861  [cs.IT]. 
  3. ^ 3.0 3.1 Fibonaccimal Base. onlinejudge.org. [2022-10-06]. (原始内容于2022-10-09). 
  4. ^ Sloane, N.J.A. (编). Sequence A014417 (Representation of n in base of Fibonacci numbers (the Zeckendorf representation of n)). The On-Line Encyclopedia of Integer Sequences. OEIS Foundation. 
  • Allouche, Jean-Paul; Shallit, Jeffrey. Automatic Sequences: Theory, Applications, Generalizations . Cambridge University Press. 2003: 105. ISBN 978-0-521-82332-6. Zbl 1086.11015. 
  • Fraenkel, Aviezri S.; Klein, Shmuel T. Robust universal complete codes for transmission and compression. Discrete Applied Mathematics. 1996, 64 (1): 31–55. CiteSeerX 10.1.1.37.3064 . ISSN 0166-218X. Zbl 0874.94026. doi:10.1016/0166-218X(93)00116-H. 

斐波那契编码, 斐波那契編碼, fibonacci, coding, 是一種僅使用兩種符號, 0和1, 表達數值的通用編碼, 英语, universal, code, data, compression, 這種編碼是基於斐波那契數來表達整數的一個例子, 這種編碼皆以, 為結尾, 並且在結尾之前不會出現連續2個1, 斐波那契編碼與齊肯多夫表述法密切相關, 齊肯多夫表述法是一種基於齊肯多夫定理的进制系統, 並且也具有不連續使用兩個1的特性, 特定整數的斐波那契編碼正是數字順序顛倒的齊肯多夫表述法, 並在末尾附加了一個額. 斐波那契編碼 Fibonacci coding 是一種僅使用兩種符號 0和1 表達數值的通用編碼 英语 Universal code data compression 1 這種編碼是基於斐波那契數來表達整數的一個例子 這種編碼皆以 11 為結尾 並且在結尾之前不會出現連續2個1 斐波那契編碼與齊肯多夫表述法密切相關 齊肯多夫表述法是一種基於齊肯多夫定理的进制系統 並且也具有不連續使用兩個1的特性 特定整數的斐波那契編碼正是數字順序顛倒的齊肯多夫表述法 並在末尾附加了一個額外的 1 目录 1 定義 2 與其他通用編碼的比較 3 例子 4 斐波那契进制 5 參見 6 参考资料定義 编辑對於一個數字N displaystyle N 若d 0 d 1 d k 1 d k displaystyle d 0 d 1 ldots d k 1 d k 代表N displaystyle N 在斐波那契編碼中的碼字 英语 code word 則有 N i 0 k 1 d i F i 2 and d k 1 d k 1 displaystyle N sum i 0 k 1 d i F i 2 text and d k 1 d k 1 其中F i 為第i 個斐波那契數 因此F i 2 是第i 個相異的斐波那契數1 2 3 5 8 13 displaystyle 1 2 3 5 8 13 ldots 最後一位d k displaystyle d k 為始終是1的附加位 並且不攜帶位置值 可以看出 這樣的編碼是唯一的 並且在任何碼字中唯一出現的 11 是在末尾 即d k 1 和d k 倒數第二位是最高有效位 第一位是最低有效位 許多进制可以省略前導零 如十进制 然而斐波那契編碼的前導零不能省略 下面顯示了前幾個斐波那契編碼 以及其所謂的隱含概率 即對所有在斐波那契編碼中有最小碼值的數字而言的值 數字 斐波那契表述法 斐波那契編碼 隱含概率1 F 2 displaystyle F 2 11 1 42 F 3 displaystyle F 3 011 1 83 F 4 displaystyle F 4 0011 1 164 F 2 F 4 displaystyle F 2 F 4 1011 1 165 F 5 displaystyle F 5 00011 1 326 F 2 F 5 displaystyle F 2 F 5 10011 1 327 F 3 F 5 displaystyle F 3 F 5 01011 1 328 F 6 displaystyle F 6 000011 1 649 F 2 F 6 displaystyle F 2 F 6 100011 1 6410 F 3 F 6 displaystyle F 3 F 6 010011 1 6411 F 4 F 6 displaystyle F 4 F 6 001011 1 6412 F 2 F 4 F 6 displaystyle F 2 F 4 F 6 101011 1 6413 F 7 displaystyle F 7 0000011 1 12814 F 2 F 7 displaystyle F 2 F 7 1000011 1 128將一個整數N編碼為斐波那契編碼的方法為 找到小於或等於N 的最大斐波那契數 並且用N 減去這個斐波那契數 並記錄剩餘的數 如果減去的這個數為為第i 個斐波那契數F i 置1到i 2 的位置 將最左邊的數字視為位置0 將N 替換為剩餘的數 並重複步驟1 2直到剩餘的數為0 在最右邊加一個 1 要解碼斐波那契編碼 請刪除最後的 1 將剩餘的位數分配給1 2 3 5 8 13 斐波那契數 並將位數為 1 的斐波那契數加總 與其他通用編碼的比較 编辑斐波那契編碼有一個有用的特性 有時它與其他通用編碼 英语 Universal code data compression 相比更具吸引力 斐波那契編碼是自同步編碼 英语 Self synchronizing code 的一個示例 可以更容易地從損壞的資料流中恢復數據 對於大多數其他通用編碼 英语 Universal code data compression 如果單個位元被更改 則其後的任何數據可能無法被正確讀取 另一方面 對於斐波那契編碼 更改位元可能會導致一個字詞 token 被讀取為兩個 或者導致兩個字詞被錯誤地讀取為一個 但從資料流中讀取 0 能阻止錯誤進一步傳播 由於唯一沒有 0 的資料流是 11 字詞的資料流 因此單個位元錯誤損壞的資料流與原始資料流之間的總編輯距離最多為3 在這種使用符號序列進行編碼的方法中 可以自由推廣其中某些不允許存在的模式 如 11 2 例子 编辑下表展示了整數65編碼到斐波那契编码為0100100011的具體內容 表示65 2 8 55 displaystyle 65 2 8 55 不使用前兩個斐波那契數F 0 0 和F 1 1 且末尾必定會加上一個 1 0 1 1 2 3 5 8 13 21 34 55 F 0 F 1 F 2 F 3 F 4 F 5 F 6 F 7 F 8 F 9 F 10 additional 0 1 0 0 1 0 0 0 1 1 displaystyle begin array ccccccccccc c hline 0 amp 1 amp 1 amp 2 amp 3 amp 5 amp 8 amp 13 amp 21 amp 34 amp 55 amp hline F 0 amp F 1 amp F 2 amp F 3 amp F 4 amp F 5 amp F 6 amp F 7 amp F 8 amp F 9 amp F 10 amp scriptstyle text additional hline amp amp 0 amp 1 amp 0 amp 0 amp 1 amp 0 amp 0 amp 0 amp 1 amp 1 hline end array 斐波那契进制 编辑斐波那契进制 Fibonaccimal Base 是與黃金进制關係緊密的計數系統 它只用0和1表示數 每個數位的位值對應斐波那契數 3 和黃金进制一樣 其標準形也不連續使用兩個1 如 30 1 21 0 13 1 8 0 5 0 3 0 2 1 1 0 1 10100010fib dd 斐波那契进制與齊肯多夫表述法非常接近 斐波那契进制僅比齊肯多夫表述法末尾附加了一個額外的 0 由於最末位始終為零 因此有時會將之省去 3 而省去後的結果則與齊肯多夫表述法相同 4 參見 编辑進位制 黃金進制 负斐波那契编码 英语 Negafibonacci coding 奧斯特洛夫斯基记数系统 英语 Ostrowski numeration 通用編碼 英语 Universal code data compression 齊肯多夫定理参考资料 编辑 Ayse Nalli Cagla Ozyilmaz The third order variations on the Fibonacci universal code Journal of Number Theory 2015 04 149 15 32 2022 10 06 doi 10 1016 j jnt 2014 07 010 原始内容存档于2018 06 29 英语 Duda Jarek Optimal encoding on discrete lattice with translational invariant constrains using statistical algorithms 2007 arXiv 0710 3861 cs IT 3 0 3 1 Fibonaccimal Base onlinejudge org 2022 10 06 原始内容存档于2022 10 09 Sloane N J A 编 Sequence A014417 Representation of n in base of Fibonacci numbers the Zeckendorf representation of n The On Line Encyclopedia of Integer Sequences OEIS Foundation Allouche Jean Paul Shallit Jeffrey Automatic Sequences Theory Applications Generalizations Cambridge University Press 2003 105 ISBN 978 0 521 82332 6 Zbl 1086 11015 Fraenkel Aviezri S Klein Shmuel T Robust universal complete codes for transmission and compression Discrete Applied Mathematics 1996 64 1 31 55 CiteSeerX 10 1 1 37 3064 ISSN 0166 218X Zbl 0874 94026 doi 10 1016 0166 218X 93 00116 H 取自 https zh wikipedia org w index php title 斐波那契编码 amp oldid 75591975, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。