当前位置: 首页 > news >正文

2023/2/13总结

今天主要学习了哈夫曼树。

哈夫曼树

哈夫曼树是二叉树的一种,它是一种WPL最优二叉树。

叶子结点(也称叶节点):指的是自己下面不再连接有节点的节点(即末端),称为叶子节点(又称为终端结点)

WPL是二叉树的带权路径长度,是指所有叶节点的路径长度乘以当前叶节点的权值之和,打一个比方:

下面有一个字符串,我们以字母出现次数作为权值,a所对应的权值4,我们需要构造一个二叉树,最优WPL的二叉树。 

这是最优的哈夫曼树了,你再也找不到一个比这更优的了,那么它的WPL值为

1*3+1*3+2*2+3*2+4*2=24

还有一个更简洁的计算方法就是将图中的非叶结点值相加,11+4+7+2=24.

存储元素的结点为2*n-1,我们原来有5个结点,最后变成了9个结点

这很巧妙了,接下来讲解如何构建一个哈夫曼树。

在表中找俩个最小值作为结点的左右孩子

很明显是d e所代表的权值,新结点的权值为俩孩子的权值之和,即是2

 

我们需要更新权值的数组,就是删除数组中c d的权值,把新节点的权值写入数组

 

再继续找俩最小值,是c代表的2和另外一个没名字的结点,从下往上插入哦。

重复这些操作知道权值数组没有数值,最后就会变成开篇讲的那样子。

构建哈夫曼树,主要是为了满足哈夫曼编码。

哈夫曼编码是编码的一种,它是用来压缩文本的,主要压缩一段较长并且重复率较高的代码。

之所以那样子建立树,是为了将出现次数多的字符放在前面,出现次数少的字符放在后面,保证访问率的快慢。

 

如上面所示将左边赋值为0,右边为1,我们可以发现一个特性,叶节点所构成的值,是不会有重复前缀的。(当然末尾俩个端点是会有一样的前缀,我们通常按照大小将其左右,左边是较小的,右边的较大的)

 

继而会变成上面那样子,我写的时候带了空格为了美观,实际存储时不带的,我们只需要根据哈夫曼树,按顺序找第一次出现的叶节点的编码,就可以凑成以上的字符串,(你可以自己试一试)。

哈夫曼编码是不等长编码。在一段长的重复率较高的文章特别适用。

相关文章:

2023/2/13总结

今天主要学习了哈夫曼树。 哈夫曼树 哈夫曼树是二叉树的一种,它是一种WPL最优二叉树。 叶子结点(也称叶节点):指的是自己下面不再连接有节点的节点(即末端),称为叶子节点(又称为终…...

webSock前端

1.什么是webSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。允许服务端主动向客户端推送数据。 2.如何使用webSocket WebSocket 构造函数WebSocket 对象作为一个构造函数,用于新建 WebSocket 实例。 代码如下: let ws = new WebSocket(网址); 2.websock事件: …...

AcWing 3956. 截断数组(每日一题)

AcWing 3956. 截断数组 题目描述 给定一个长度为 nnn 的数组 a1,a2,…,ana_1, a_2, …, a_na1​,a2​,…,an​ 。 现在,要将该数组从中间截断,得到三个非空子数组。 要求,三个子数组内各元素之和都相等。 请问,共有多少种不同…...

Android 一体机研发之修改系统设置————屏幕亮度

Android 一体机研发之修改系统设置————屏幕亮度 Android 一体机研发之修改系统设置————声音 Android 一体机研发之修改系统设置————自动锁屏 前言 最近工作略微有点儿空闲,抽空给大家总结一下:近期一直搞得一体机app研发,适用…...

C++通用算法

1.概述根据名字就知道如何使用相关算法&#xff0c;比如copy函数&#xff0c;就是复制的意思&#xff0c;它需要一个范围&#xff0c;以及要复制的位置copy(begin, end, container_begin);#include <iostream> #include<vector> #include<algorithm> #includ…...

Springboot停机方式

1. 介绍 简单的说&#xff0c;就是向应用进程发出停止指令之后&#xff0c;能保证正在执行的业务操作不受影响&#xff0c;直到操作运行完毕之后再停止服务。应用程序接收到停止指令之后&#xff0c;会进行如下操作&#xff1a; 1.停止接收新的访问请求 2.正在处理的请求&…...

Linux perf_event_open 简介

文章目录前言一、简介二、struct perf_event_attr2.1 type2.2 size2.3 config2.3.1 PERF_TYPE_HARDWARE2.3.2 PERF_TYPE_SOFTWARE2.3.3 PERF_TYPE_TRACEPOINT2.3.4 PERF_TYPE_HW_CACHE2.3.5 其他类型三、sample相关参数3.1 sample_period3.2 sample_freq3.3 sample_type四、其他…...

Java给定两组起止日期,求交集

/*** 判断2个时间段是否有重叠&#xff08;交集&#xff09;* param startDate1 时间段1开始时间戳* param endDate1 时间段1结束时间戳* param startDate2 时间段2开始时间戳* param endDate2 时间段2结束时间戳* param isStrict 是否严格重叠&#xff0c;true 严格&#xff0…...

数组的复制与二维数组的用法

今天学习的主要内容有 数组的复制 数组的复制 利用循环进行数组的复制 import java.util.Arrays; public class Main3 {public static void main(String[] args) {int []arr new int[]{1,2,3,4,5,6};int []arr1 new int[arr.length];for (int i 0; i < arr.length; i…...

JS判断两个table数据是否完全相等(判断两个数组对象是否完全相等)

需求 现有的table为tableA&#xff0c;有多个要做对比的table为一个数组 CompareArray 涉及到的问题 外层是数组&#xff0c;但是内部数据都是对象&#xff0c;对象属性名的排序不一样外层数组也涉及到 顺序不一样的问题 思路 对compareArray做长度筛选 filter 得到 同长度…...

关于小程序,你想知道的这些

近年来&#xff0c;各大平台纷纷上架小程序&#xff0c;迎来了小程序的爆发式增长。今天就来跟大家简单分享一下小程序基本的运行机制和安全机制。 小程序的由来 在小程序没有出来之前&#xff0c;最初微信WebView逐渐成为移动web重要入口&#xff0c;微信发布了一整套网页开…...

WuThreat身份安全云-TVD每日漏洞情报-2023-02-13

漏洞名称:THORSTEN PHPMYFAQ 跨站点脚本 漏洞级别:高危 漏洞编号:CVE-2023-0791 相关涉及:THORSTEN PHPMYFAQ 3.1.10 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-03506 漏洞名称:TENDA AC23 越界写入 漏洞级别:高危 漏洞编号:CVE-2023-078…...

【Linux】软件安装(三分钟教会你如何在linux下安装软件)

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️小林爱敲代码       &#x1f6f0;️博客专栏&#xff1a;✈️Linux之路       &#x1f6f0;️社区&#xff1a;✈️进步学堂 目录&…...

Fluent Python 笔记 第 10 章 序列的修改、散列和切片

本章将以第 9 章定义的二维向量 Vector2d 类为基础&#xff0c;向前迈出一大步&#xff0c;定义表示多维向量的 Vector 类。这个类的行为与 Python 中标准的不可变扁平序列一样。 10.3 协议和鸭子类型 在 Python 中创建功能完善的序列类型无需使用继承&#xff0c;只需实现符…...

在中国程序员工作是青春饭吗?

上个月公司告诉我毕业了。 我打开boss直聘&#xff0c;一溜溜的外包公司和我打招呼。 我寻思我说不定啥时候就离开深圳了&#xff0c;外包不外包也无所谓钱到位就行。&#xff08;大公司学历不够格也进不去&#xff09; 结果华为、平安的外包告诉我&#xff0c;不好意思呀&a…...

Linux tcpdump

tcpdump - 转储网络上的数据流 是不是感觉很懵&#xff1f;全方位描述tcpdump: 通俗&#xff1a;tcpdump是一个抓包工具&#xff0c;用于抓取网络中传输的数据包形象&#xff1a;tcpdump如同国家海关&#xff0c;凡是入境和出境的货物&#xff0c;海关都要抽样检查&#xff0…...

redis知识汇总(部署、高可用、集群)

文章目录一、redis知识汇总什么是redisredis的优缺点&#xff1a;为什么要用redis做缓存redis为什么这么快什么是持久化redis持久化机制是什么&#xff1f;各自优缺点&#xff1f;AOF和RDB怎么选择redis持久化数据和缓存怎么做扩容什么是事务redis事务的概念ACID概念主从复制re…...

【手写 Vuex 源码】第十篇 - Vuex 命名空间的实现

一&#xff0c;前言 上一篇&#xff0c;主要介绍了 Vuex 响应式数据和缓存的实现&#xff0c;主要涉及以下几个点&#xff1a; Vuex 的响应式实现原理&#xff1b;响应式核心方法 resetStoreVM&#xff1b;commit 和 dispatch 的处理&#xff1b; 本篇&#xff0c;继续介绍 …...

面试腾讯测试岗后感想,真的很后悔这5年一直都干的是基础测试....

前两天&#xff0c;我的一个朋友去大厂面试&#xff0c;跟我聊天时说&#xff1a;输的很彻底… 我问她&#xff1a;什么情况&#xff1f;她说&#xff1a;很后悔这5年来一直都干的是功能测试… 相信许多测试人也跟我朋友一样&#xff0c;从事了软件测试很多年&#xff0c;却依…...

知识图谱 方法、实践与应用 王昊奋 读书笔记(下)

最近读了这本书&#xff0c;在思路上很有启发&#xff0c;对知识图谱有了初步的认识&#xff0c;以下是原书后半部分的内容&#xff0c;可以购买实体书获取更多内容。 知识图谱推理 结合已有规则&#xff0c;推出新的事实&#xff0c;例如持有股份就能控制一家公司&#xff0…...

瑞萨RA6E2评估板Keil MDK5开发全攻略:从RA Smart Configurator到烧录调试

瑞萨RA6E2评估板Keil MDK5开发全流程实战指南 对于嵌入式开发者而言&#xff0c;瑞萨RA6E2系列MCU凭借其高性能和丰富外设正成为工业控制、物联网终端设备的优选方案。而Keil MDK5作为Arm生态中最成熟的开发环境之一&#xff0c;与瑞萨官方工具链的深度整合为开发者提供了高效…...

探索二维非常规态型近场动力学代码

非常规态型近场动力学代码 纬度&#xff1a;二维&#xff1b; 时间积分&#xff1a;自适应动态松弛 or verlet-velocity; 零能抑制模式&#xff1a;silling method or Li pan method; 语言&#xff1a;MATLAB 代码注释详细&#xff0c;可适当在数值模拟领域&#xff0c;近场动力…...

Kali 2023最新版安装Fluxion避坑指南:从git clone到镜像源全流程

Kali 2023最新版安装Fluxion避坑指南&#xff1a;从git clone到镜像源全流程 如果你正在学习网络安全渗透测试&#xff0c;Fluxion绝对是一个值得掌握的Wi-Fi安全审计工具。作为Kali Linux生态中最受欢迎的无线网络测试套件之一&#xff0c;它通过智能化的交互界面让复杂的攻击…...

从Solidworks到Simulink:避开ADAMS“雷区”的机电联合仿真实践

1. 为什么机电联合仿真总在ADAMS上栽跟头&#xff1f; 第一次用ADAMS做机电联合仿真时&#xff0c;我对着满屏的线框图发呆了半小时——这玩意儿怎么连个像样的实体显示都要手动切换&#xff1f;更崩溃的是&#xff0c;好不容易导入的Solidworks装配体&#xff0c;所有配合关系…...

5分钟掌握Axure RP多版本语言包管理:从部署到定制全流程

5分钟掌握Axure RP多版本语言包管理&#xff1a;从部署到定制全流程 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn …...

这次终于选对了!高效论文写作全流程AI论文写作软件推荐(2026 最新)

2026年AI论文写作软件已全面升级&#xff0c;论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节&#xff0c;以下工具按环节精准匹配&#xff0c;兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求&#xff…...

【实战教程】OpenClaw从零开始配置指南:从边界到稳定的分层配置策略

本文适合从零开始&#xff0c;慢慢养、安全的养小龙虾的达人们。 更深入的调优配置请参考&#xff1a;Openclaw高阶调优之配置篇、OpenClaw高阶调优之模型&#xff08;tokens&#xff09;篇 核心理念 OpenClaw 配置的核心不是堆砌字段&#xff0c;而是对系统边界的精准管控。…...

别再只用交叉熵了!医疗AI中疾病分级任务,试试PyTorch实现这个序数回归损失函数

医疗AI中的序数回归&#xff1a;超越交叉熵的疾病分级新范式 在医疗人工智能领域&#xff0c;我们经常遇到需要预测疾病严重程度分级的任务——从轻度到中度再到重度&#xff0c;这些类别之间存在明确的递进关系。传统做法是直接套用交叉熵损失函数&#xff0c;但这就像用尺子测…...

告别Mac!在Windows电脑上用HBuilder X和Appuploader搞定iOS测试包(附7天免费证书申请)

在Windows平台实现iOS应用打包测试的全流程指南 对于Windows平台的开发者而言&#xff0c;iOS应用打包测试一直是个令人头疼的问题。传统方式需要依赖Mac电脑和复杂的Xcode工具链&#xff0c;不仅成本高昂&#xff0c;学习曲线也陡峭。但如今&#xff0c;借助HBuilder X和Appup…...

怎样快速管理Windows预览版:离线注册工具完整使用手册

怎样快速管理Windows预览版&#xff1a;离线注册工具完整使用手册 【免费下载链接】offlineinsiderenroll 项目地址: https://gitcode.com/gh_mirrors/of/offlineinsiderenroll 想要体验Windows最新功能但又不想绑定微软账户&#xff1f;OfflineInsiderEnroll为你提供了…...