范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Python算法之哈夫曼编码

  问题:哈夫曼编码,英文名称Huffman Coding,有时也翻译为霍夫曼编码,在1952年提出的,是最好的编码方式。哈夫曼编码在电子通讯方面有着重要的应用,同时也广泛应用于数据压缩,其压缩率通常在20% 90%之间 赫夫曼码是可变字长编码(VLC)的一种。哈夫曼树是最优二叉树, 带权路径长度最小的二叉树。
  原理:
  假设有几个数字40,10,20,16,14。
  首先将这五个数字按照从小到大的顺序排列:10, 14,16,20, 40。
  构建哈夫曼树:
  1.首先选取10,14
  2.重新排序:16,20,24,40
  3.重新排序24,36,40,60
  4.按照二叉树左0右1,构建哈夫曼树
  所以最终得到数字10的编码为100,数字14的编码为101,数字16的编码为110,数字20的编码为111,数字40的编码为0。
  代码:from heapq import *  inp = input("请输入要构建哈夫曼树的字符串:")   # 统计每个字符出现的频率并生成字典 def generate_dict(s):     dic = {}     for i in s:         if i not in dic:             dic[i] = 1         else:             dic[i] += 1     return dic   dic = generate_dict(inp)   # 节点类 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)   # 按权值排序 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 lis   lis = 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 lis   lis = HuffmanTree2(lis) node = lis[0]   # 定义前序遍历方法并执行一定的操作 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, "的权重为", root.weight, "编码为", code)     pre_order(root.right, code + "1")   code = "" print("构造的哈夫曼树为:") pre_order(node, code)
  运行结果:请输入要构建哈夫曼树的字符串:12908755343298 构造的哈夫曼树为: 1 的权重为 1 编码为 000 7 的权重为 1 编码为 001 5 的权重为 2 编码为 010 9 的权重为 2 编码为 011 2 的权重为 2 编码为 100 0 的权重为 1 编码为 1010 4 的权重为 1 编码为 1011 8 的权重为 2 编码为 110 3 的权重为 2 编码为 111

联盛LsCFD薇娅两年多收入57亿,普通人如何获取人生第一桶金?前些日子,顶流网红主播薇娅因偷漏税被罚款13。41亿元的消息刷爆网络,引发国人关注。然而,吃瓜群众莫只知道看热闹,我们更应该做的是如何赚到自己的第一桶金,早日实现财务自由,这才是正GameBoy恶魔城Special我是德古拉KidDraculaGB恶魔城Special我是德古拉游戏封面KidDracula(悪魔城,AkumajSupesharuBokuDorakyurakun,DemonCastleSpecialKidD密室剧本杀行业需要法律监管引导乔宇飞密室逃脱剧本杀已经形成了一条涵盖创作发行运营消费等环节的完整产业链,有游戏加加免费领游戏白嫖古墓丽影三部曲白嫖党宗旨可以不玩,不能没有。今天年末最后一天12月31日,Epic喜加一公开了圣诞庆典活动的最后免费游戏,与此前网上消息以及图片预测的结果相同,正是古墓丽影三部曲,原价为468元VR头显MeganeX发布!与SteamVR兼容1月4日,ShiftallCo。,Ltd。发布了VR头显MeganeX,预定发售价格不到870美元,暂定于2022年春季发售。据了解,MeganeX是一款兼容SteamVR的6Do原神2。4版本武器池解析大家好,明天就将迎来2。4版本的更新了,大家是不是已经等不及了呢?在12月26日的前瞻直播中公布了2。4版本卡池的信息,上半部分角色up为申鹤还有魈,近日,官方也公布了2。4版本的TikTok娱乐直播,场观几百万,打赏几十万是怎么做到的不管对于跨境卖家还是普通的tk玩家而言,TikTok的价值,实质上在于流量。但是对于现在刚或是已经入局tiktok的玩家而言,小航猜想大家还是挺犹豫的。大家既然已经入局tk,想必就这可能是10年来最好看的手机机哥我可能是上头了下面进入正题不知道是不是机圈的竞争,越来越激烈的缘故。机哥最近有种感觉,现在大家连预热这件事,都逐渐开始不讲武德了。比如,realmeGT2系列,这发布会还没开。不吃主食和水果,多吃苦瓜和南瓜?小心你在无效控糖控血糖对糖尿病患者和普通人都很重要,今天观察君总结了关于降血糖的误区,让我们一起看看!血糖高主食越少吃越好?答案错误!虽然吃太多精制米面等主食,确实会使血糖升高,但并不意味着不吃主不吃主食和水果,多吃苦瓜和南瓜?小心你在无效控糖控血糖对糖尿病患者和普通人都很重要,今天观察君总结了关于降血糖的误区,让我们一起看看!血糖高主食越少吃越好?答案错误!虽然吃太多精制米面等主食,确实会使血糖升高,但并不意味着不吃主陈好复工拍大片!久违穿挂脖衫配挂肩睡袍,43岁万人迷美得太高级没有女性会对露肤单品,产生抗拒的心理,当然除了那些胖子之外,时下的潮流圈,不带点露肤真的很难展现女性的魅力,但是露肤也讲究细节,不是一味地露肤就能展现出不俗的魅力,而是要有目的地选
1911!怀斯曼发展联盟也不行,20分被逆转,勇士可以放弃他了NBA发展联盟的一场比赛中,圣克鲁兹勇士在一度领先20分的情况下被南湾湖人逆转。本场比赛之所以被关注,是因为这是勇士榜眼怀斯曼在发展联盟的首秀,为了能够鼓励他,老板拉科布带着女友来世界杯巡礼之西班牙年轻斗牛士初踏征程,巴萨帮是成是败?斗牛士军团西班牙对于世界足坛有着特殊的意义,从各个方面来看,西班牙都算开启了国家队层面上的一个新时代。2008年,西班牙在欧洲杯上的夺冠标志着控球打法登峰造极无人能敌,随后,西班牙用友vs金蝶产品分析(云星空与YonSuite)产品定位用友与金蝶二者面对的客户群体是相同的都是为成长型企业提供一体化服务,由于金蝶云星空发展较早,在部分产品功能上具备一定的先发优势在产品的架构上,由于YS采用目前最先进的云原生骁龙8Gen2已发布,高达17个品牌将会发布新机,竟然还有魅族一年一度的高通骁龙峰会已经结束了,而骁龙8Gen2这款旗舰芯片也终于上市了,毫无疑问这是一款真正的顶级旗舰芯。依旧是台积电4nm工艺制程,CPU架构使用143的组合,功耗减少了40你还没真的努力过,就轻易输给了懒惰我们周围有些人总是喜欢为自己设定一个很大的目标。没错,有个大理想是好的,但这些人在设定目标的时候,还不忘给自己留一条后路,说什么目标这么高,不完成也没人说我啊,然后一边叫苦叫累,一世界从不平等你有多努力就有多特殊。克劳斯莫瑟爵士说过一句富有哲理的话,教育需要花费钱,而无知也是一样。这句话把我们带到了一个新的维度去思考这个问题在这种不可避免的冲突下,我们必须解决这个问题。总结的来说,在这种困难正能量人生奋斗心语,激励自己加油努力的文案,写给自己的一段话高质量5万条经典文案资料库,关注我,让发朋友圈配文案,写动态,写心情,上热门更简单。如果有那句话触动你,就复制下来,粘贴到评论区,释放你的心声吧,任何尝试勇敢迈出第一步都是艰难的,只要坚持地努力,不懈地奋斗,就没有征服不了的东西头条创作挑战赛其实很多东西,都贵在坚持,只要你坚持下去了,最后的结果肯定不会差。人活一辈子,都想取得成功,可成功却不是那么容易的,它需要的不仅是智慧,更多的是一种锲而不舍的精神。而说话晚真的是孩子聪明吗?抓住3个敏感时期,让孩子变身小话痨2022育儿季育儿这条路上,我们家长都是无证上岗的司机。我家的金刚葫芦娃九月也是我一路摸爬滚打,掉坑无数带出来的,我儿子现在2岁1个月,基本的对话都能实现,古诗词歌曲也有了自己的知中国男篮新阵容前瞻!最强3塔齐聚张宁林葳受期待洋帅比杜锋幸运中国男篮在此前的世预赛当中取得了七胜二负的战绩,目前已经锁定了世界杯的出线资格。接下来中国男篮还有两场世预赛即将征战,对手分别是哈萨克斯坦队以及伊朗队。本次世预赛基本上确定将在家门情感文学中秋之恋作者蒋文龙缘分就像天边的一朵云霞,她从天际飘来,悄悄地君临了我的世界,她伸出纤纤小手,与我相约婚姻的殿堂。题记生在改革开放的时代,我早早就出去打工了。我在矿山上挑过矿,在煤窑里挖过