回覆列表
  • 1 # 使用者1702726579279

    一段文字中會出現重複的字,這些字的頻率是不一樣的。比如說這個詞hello我們統計一下它的字母的頻率h 1e 1l 2o 1我們可以根據出現次數,對其排序,從大到小l o h e2 1 1 1我們每次都從中選出最小的兩個,我們先選出h和e,他們的總和是2,把他們作為一個整體代替h和e現在這個序列是這樣的了 l (h,e) o2 2 1現在再選出最小的兩個,重複和剛才一樣的操作((h,e),o) l 3 2再執行一次(((h,e),o),l)這樣就生成了一顆二叉樹 # l # o # h e#表示沒有編碼的節點我們給左枝編碼上0,右枝編碼上1這樣結果是l 0o 10h 110e 111這樣的編碼考慮了出現頻率,也不會出現歧義,能起到無失真壓縮的作用解碼就是它的反向過程,你可以透過這張表或者哈夫曼樹生成的表來進行解碼需要注意的是,由於寫入檔案最小單位是位元組,所以bit都是8的整數倍,如果沒到8的整數倍就需要用0填充,但是這樣解碼的時候就需要注意了,可以獲得有幾個填充0或者原檔案長度,壓縮或者檔案長度來知道哈夫曼編碼的結束位置,防止多出的0被解碼

  • 中秋節和大豐收的關聯?
  • 你的另一半有哪些愛好讓你覺得,你愛他/她比他/她愛你多?