日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

哈夫曼的构造过程

發布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 哈夫曼的构造过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

哈夫曼樹


哈夫曼構造過程(其實就是4個步驟)

我們先給定前提:給定N個權值分別為w1, w2, …, Wn的節點。
算法定義如下:

  • 將這N個結點分別作為N棵樹僅含一個結點的二叉樹,構成森林F。
  • 從F中選取兩棵根結點權值最小的樹作為新節點的左、右子樹,并且將新節點的權值置為左、右子樹上根結點的權值之和。
  • 從F中刪除剛才選出的兩棵樹,同時將新得到的樹加入F中。
  • 重復步驟2和3,直至F中只剩下一棵樹為止。
  • 解釋每一個步驟:

  • 也就是說 F 是集合{w1,w2,…,w3}(高中數學的集合的概念),每一個w是一個元素。
  • 選2個元素,一個是集合F中值最小的元素,另一個是集合F中次小的元素。(這里,我們不妨設最小的是a,次小的是b)
  • 將a和b**相加**,得到一個新的結果(我們將新的結果設為c)。將c這個元素添加到集合F中,并且刪除集合F中的a和b。
  • 重復2、3步驟,直到F的元素數量為1。
  • 其實只要理解2、3步驟的過程,就可以明白整個哈夫曼構造過程了。


    一個實例:

    前提:如圖{7,5,2,4}分別對應{a,b,c,d},下面我們設F= { a=7 , b=5 , c=2 , d=4 }來描述構造。

    第一步:F= { a=7 , b=5 , c=2 , d=4 }

    第二步:從F中選2個元素,分別是最小c=2次小d=4的;并且得到一個新的元素,這里設新的元素為new1。

    第三步:由于需要將兩者相加,所以new1 = c+d = 6;然后將new1添加到F中,并且將c和d從F中刪除。得到F = {a=7 , b=5 , new1=6}。

    第四步:由于元素數量不為1,所以重復第二步的過程。

    那我們進入第二步的構造過程:選出 b 和 new1,設新元素為new2。

    第三步構造過程:new2 = b + new1,F={a = 7, new2 = 11}

    第四步:元素數量不為1,再進入第二步。

    第二步:選出 a 和 new2,設新元素為new3。

    第三步構造過程:new2 = b + new1,F={new3 = 18}。

    第四步:此時元素數量為1,構造完畢。

    總結

    以上是生活随笔為你收集整理的哈夫曼的构造过程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。