在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    Python算法之哈夫曼編碼

    Python算法之哈夫曼編碼

    問(wèn)題:哈夫曼編碼,英文名稱Huffman Coding,有時(shí)也翻譯為霍夫曼編碼,在1952年提出的,是最好的編碼方式。哈夫曼編碼在電子通訊方面有著重要的應(yīng)用,同時(shí)也廣泛應(yīng)用于數(shù)據(jù)壓縮,其壓縮率通常在20% 90%之間 赫夫曼碼是可變字長(zhǎng)編碼(VLC)的一種。哈夫曼樹是最優(yōu)二叉樹,帶權(quán)路徑長(zhǎng)度最小的二叉樹。

    原理:

    假設(shè)有幾個(gè)數(shù)字40,10,20,16,14。

    首先將這五個(gè)數(shù)字按照從小到大的順序排列:10, 14,16,20, 40。

    構(gòu)建哈夫曼樹:

    1.首先選取10,14

    2.重新排序:16,20,24,40

    3.重新排序24,36,40,60

    4.按照二叉樹左0右1,構(gòu)建哈夫曼樹

    所以最終得到數(shù)字10的編碼為100,數(shù)字14的編碼為101,數(shù)字16的編碼為110,數(shù)字20的編碼為111,數(shù)字40的編碼為0。

    代碼:

    from heapq import *inp = input(‘請(qǐng)輸入要構(gòu)建哈夫曼樹的字符串:’)# 統(tǒng)計(jì)每個(gè)字符出現(xiàn)的頻率并生成字典def generate_dict(s): dic = {} for i in s: if i not in dic: dic[i] = 1 else: dic[i] += 1 return dicdic = generate_dict(inp)# 節(jié)點(diǎn)類class Node: def __init__(self, name=None, weight=None): self.name = name self.weight = weight self.parent = None self.left = None self.right = None self.id = None # 自定義類的比較 def __lt__(self, other): return int(self.weight) < int(other.weight)# 按權(quán)值排序def sort(list): return sorted(list, key=lambda Node: Node.weight)def generate_node2(dic): lis = [] for i in dic: newNode = Node(i, dic[i]) heappush(lis, newNode) return lislis = generate_node2(dic)# Huffman編碼2使用堆的方式def HuffmanTree2(lis): global id while len(lis) != 1: a = heappop(lis) b = heappop(lis) new = Node() new.weight = a.weight + b.weight new.left, new.right = a, b a.parent = new b.parent = new heappush(lis, new) return lislis = HuffmanTree2(lis)node = lis[0]# 定義前序遍歷方法并執(zhí)行一定的操作def pre_order(root, code): if root is None: code = code[:-1] return pre_order(root.left, code + '0') if root.name is not None: print(root.name, '的權(quán)重為', root.weight, '編碼為', code) pre_order(root.right, code + '1')code = ''print('構(gòu)造的哈夫曼樹為:')pre_order(node, code)

    運(yùn)行結(jié)果:

    請(qǐng)輸入要構(gòu)建哈夫曼樹的字符串:12908755343298構(gòu)造的哈夫曼樹為:1 的權(quán)重為 1 編碼為 0007 的權(quán)重為 1 編碼為 0015 的權(quán)重為 2 編碼為 0109 的權(quán)重為 2 編碼為 0112 的權(quán)重為 2 編碼為 1000 的權(quán)重為 1 編碼為 10104 的權(quán)重為 1 編碼為 10118 的權(quán)重為 2 編碼為 1103 的權(quán)重為 2 編碼為 111

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月12日 14:44
    下一篇 2022年6月12日 14:44

    相關(guān)推薦

    • 閑魚無(wú)貨源怎么賺錢(閑魚無(wú)貨源賣什么好)

      如今電商平臺(tái)開店,無(wú)貨源模式已經(jīng)成為大家最普遍的開店方式了,而其中閑魚無(wú)貨源就是不少人的首選。閑魚無(wú)貨源是一個(gè)很適合普通人操作的暴利項(xiàng)目,如果你沒(méi)有知識(shí),技能,經(jīng)驗(yàn),資源,就先從閑…

      2022年11月25日
    • 百度關(guān)鍵詞快速排名的4大原理解析(百度怎么刷關(guān)鍵詞)

      近期百度公告驚雷算法2.0,升級(jí)之快還是第一次吧,看來(lái)百度對(duì)于刷點(diǎn)擊行為是零容忍了。之前尹華峰SEO技術(shù)博客介紹過(guò)一篇如何使用刷點(diǎn)擊工具,其實(shí)市面上有很多這類SEO快速排名的軟件,…

      2022年11月25日
    • 淘寶直播平臺(tái)抽成多少(淘寶直播平臺(tái)抽成比例)

      隨著時(shí)代的發(fā)展,現(xiàn)在直播帶貨已經(jīng)成為主要帶貨方式,其中淘寶是主流帶貨平臺(tái),不少人在上面直播帶貨賺錢,一些小伙伴也想加入,那么淘寶直播平臺(tái)抽成多少?下面小編為大家?guī)?lái)淘寶直播平臺(tái)抽成…

      2022年11月24日
    • 白襯衫搭配什么褲子好看,女生襯衫穿法圖片

      說(shuō)起白襯衫和長(zhǎng)褲的搭配組合,不知道大家有沒(méi)有發(fā)現(xiàn),雖然是很常見(jiàn)的造型,可不同年齡段慣用的穿搭方式卻不相同,從而也穿出了不同的味道。簡(jiǎn)直是現(xiàn)在這個(gè)季節(jié),時(shí)髦精們的必備造型之一~ 70…

      2022年11月24日
    • 劇情找找茬第九關(guān)怎么過(guò) 劇情找找茬第九關(guān)攻略技巧

      劇情找找茬第九關(guān)的劇情是鎖山傳人,許多小伙伴都還不太清楚要怎么通關(guān),下面小編就給大家?guī)?lái)了劇情找找茬第九關(guān)通關(guān)攻略,感興趣的小伙伴快來(lái)看看吧。 劇情找找茬第九關(guān)怎么過(guò) 第一步:點(diǎn)擊…

      2022年11月23日
    • seo宣傳推廣(SEO推廣)

      今天小編給各位分享seo宣傳推廣的知識(shí),其中也會(huì)對(duì)SEO推廣進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開始吧! 如何做seo網(wǎng)絡(luò)推廣? 做網(wǎng)絡(luò)推廣的方法: 1、…

      2022年11月20日
    • 繪制高質(zhì)量的業(yè)務(wù)流程圖的5個(gè)步驟詳解(業(yè)務(wù)邏輯流程圖解析)

      在日常工作中,產(chǎn)品經(jīng)理需要經(jīng)常和業(yè)務(wù)流程圖打交道。對(duì)于新手產(chǎn)品經(jīng)理來(lái)說(shuō),業(yè)務(wù)流程圖也是必須掌握的基本功之一。但是繪制流程圖并不是一件簡(jiǎn)單的事情,本文作者從自身工作實(shí)踐出發(fā),結(jié)合相關(guān)…

      2022年11月20日
    • 產(chǎn)品推廣渠道有哪些方式(推廣自己的產(chǎn)品)

      首先,需要做好產(chǎn)品定位和市場(chǎng)定位,這是最基礎(chǔ)的,然后是市場(chǎng)宣傳,可以考慮以下方式: 1,淘寶天貓京東等電商推廣 開通電商銷售渠道,做好運(yùn)營(yíng)。 2,社區(qū)論壇推廣 論壇和社區(qū)的發(fā)帖和回…

      2022年11月19日
    • 亞馬遜一般發(fā)什么物流(亞馬遜物流的特點(diǎn)有哪些)

      fba物流運(yùn)輸方式有哪些?都有哪些特點(diǎn)?我們熟知的fba物流運(yùn)輸方式有海運(yùn)、空運(yùn)、還有國(guó)際快遞,那么你知道它們都有哪些特點(diǎn)嗎? 一、空運(yùn)的方式 亞馬遜fba物流方式有很多,空運(yùn)只是…

      2022年11月18日
    • 3階魔方教程 1~7步驟(魔方教程一步一步圖解)

      基礎(chǔ)層先魔方復(fù)原法 by信手拈花 0. 魔方轉(zhuǎn)動(dòng)的公式表示和復(fù)原步驟 0. 1魔方轉(zhuǎn)動(dòng)的公式表示 魔方轉(zhuǎn)動(dòng)的公式表示 0. 2層先法魔方復(fù)原步驟 層先法魔方復(fù)原步驟 讓我開始魔方復(fù)…

      2022年11月18日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息