【离散数学】树(一)哈夫曼编码基本原理

作者&投稿:逮曼 (若有异议请与网页底部的电邮联系)
~

本节我们将介绍以下内容:

给定 n 个叶子结点,每个结点带权值,构造一棵二叉树,如果带权路径长度最短,则称为哈夫曼树(最优二叉树),权值最大的结点最接近根结点

给定一组符号S及其权值W(出现的概率)

根据这张表格,我们来构造一棵哈夫曼树

哈夫曼压缩是一种能够大幅度压缩自然语言文件空间的数据压缩技术,不再使用8位二进制数表示每一个字符,而是用较少的比特表示出现频率高的字符,而用较多的比特表示出现频率低的字符

在我们构造出哈夫曼树后,将所有的权值删去,并给每条边赋值0或1
在此我们定义 左 0 右 1

据此,我们尝试解码一个短串:

011011111

从根结点开始,遇到 0 ,向左下移动一次,得到字符 A

开始解码下一个字符,从根结点开始,遇到2个 1 ,向右下移动2次,遇到 0 ,向左下移动一次,得到字符 C

开始解码下一个字符,从根结点开始,遇到5个 1 ,向右下移动5次,得到字符 E

所以我们解码得到的字符为 ACE

关于哈夫曼编码的基本原理就介绍到此了,谢谢大家!




离散数学问题~~G为树,那么G中至少有两片树叶对吗
对的,设树有N个顶点,那么则有n-1条边,提供2(n-1)个度数,假设这个树有x片树叶,那么他的度数最少为x+2(n-x),根据握手定理2(n-1)大于等于x+2(n-x),解得x大于等于2

求学霸解决两道离散数学关于树的题目
过程如图

离散数学 设树T有6片树叶,3个2度结点,其余都是4度结点,求4度结点的...
6+3*2+4*x = (6+3+x-1)*2 x = 2 4度结点的个数为:2个

大学离散数学:设无向树T有3个3度,2个2度顶点,其余顶点都是树叶,问T...
3*3+2*2+x = (3+2+x-1)*2 x = 5 T有5片树叶

离散数学 设树T有3个3度结点,7片树叶,其余都是4度结点,问 T中有多 ...
3*3+7+4*x = (3+7+x-1)*2 x = 1 T中有1个4度结点

一个有向树T,其中结点数为N,分叉数为Q,则其中的叶子数为
因为此题是数据结构中的问题:一般情况下都是有向树,所以叶子节点的度数为0,要区分于离散数学中的无向树叶子节点度为一。在数据结构中一般常用的公式为:二叉树:度为0的节点数=度为2的节点数+1(n0=n2+1)此公式可由上述计算思想推导(一般在二叉树那里的公式多一些,树中只要你明确定义,画出...

怎么求最小生成树 (离散数学 图论)
1) 树是无回路的连通图。2)对于某个图,求它的最小生成树,比较简单的方法,先画出图中所有节点,从权值最小的边开始依次连接顶点,注意不要形成回路,最后得到的图就是最小生成树。

离散数学题:所有不同构的一,二,三,四,五,六阶树怎么画?
一,二,三阶树仅有1个,四阶树有2个,五阶树3个,六阶树4个。

离散数学那章中 树 什么是权 谢谢
权对树本身没意义,但对实际应用却很有用,比如说信息传送中,文章都是用码表示的,我们当然是要码长越短,发送时间越短.若字母A,B,Z,C出现的概率为0.75,0.54,0.28,0.43;如何编码使发送的文章码长最短呢?这时权就有用了.设相应的权值为:75,54,28,43.构造一棵树,求出结点的带权路径...

树的连通分支数是多少???
对于一个无向图而言,它的一个极大连通子图即为一连通支。比如说,一个图由三部分构成,其中每一部分都是连通的,但三个部分之间互相不连通,那么每一部分即为无向图的一个连通分支。此图的连通分支数为3。更形象些,你把教学楼附近的几棵树合起来看做是一个无向图,树叶和树枝分叉点为图的结点...

磐安县19323723726: 哈夫曼编码原理 -
厨人兴达芬: 原发布者:a2420092945 Huffman树及其应用一、最优二叉树(霍夫曼树)预备知识:若干术语路d径:由一结点到另一结点间的分支所构成a→e的路径长度=2beacfg路径长度:路径上的分支数目树长度=10树的路径长度:从树根到每一结点的...

磐安县19323723726: 1、二叉树的应用 - 哈夫曼树(电文的编码和译码)哈夫曼编码/译码器 问题描述:设计一个哈夫曼编码/译码系统,对字符串进行编码/译码 基本要求: (1)... -
厨人兴达芬:[答案] #include int n; int m=2*n-1; struct tree { float weight; int parent; int lch,rch; }; struct codetype { int bits[100]; int start; char ch; }; tree hftree[100]; codetype code[99]; void creathuffmantree(int n,int m) { int i,j ,p1,p2; float s1,s2; for(i=1;i {hftree[i].parent=0; hftree[...

磐安县19323723726: 哈夫曼编码压缩概念的基本思想?如何回答(精简的说) -
厨人兴达芬: A,e的出现概率很高,而z的出现概率则最低,该方法完全依据字符出现概率来构造异字头的平均长 度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)...

磐安县19323723726: 有谁知道Huffman编码的详细编码 -
厨人兴达芬: 为了便于说明,我们先进行一些定义. 原始数据:需要被压缩的数据 压缩数据:被压缩过的数据 n:字母表的长度 a〔,j〕:字母表中第j个字符 t:已处理的原始数据中字符的总个数 k:已处理数据中各不相同字符的个数 显然1„j,k„n 在压缩开始...

磐安县19323723726: 赫夫曼编码/解码
厨人兴达芬: #include "string.h" #include "stdio.h" #define MAXVALUE 1000 /*定义最大权值*/ #define MAXLEAF 30 /*定义哈夫曼树叶结点个数*/ #define MAXNODE MAXLEAF*2-1 #define MAXBIT 30 /*定义哈夫曼编码的最大长度*/ typedef struct { int bit...

磐安县19323723726: 二叉树的应用 - 哈夫曼树(电文的编码和译码)
厨人兴达芬: #include <iostream.h>#include<iomanip.h> int n; int m=2*n-1; struct tree { float weight; int parent; int lch,rch; }; struct codetype {int bits[100]; int start; char ch; }; tree hftree[100]; codetype code[99]; void creathuffmantree(int n,int m) {int i,j ,p1,p2; float...

磐安县19323723726: 哈夫曼编码与译码的算法思想 -
厨人兴达芬: 基本思想就是概率,用得越多的编码长度越短,最终就会导致最优编码.如果有兴趣,可以看看数据压缩方面的书请查看如下网页: http://zh.wikipedia.org/zh-cn/%E9%9C%8D%E5%A4%AB%E6%9B%BC%E7%BC%96%E7%A0%81 霍夫曼编...

磐安县19323723726: 对于给定的8个实数W={8,6,23,15,4,20,35,10};试构造huffman树,并求出每个叶子结点的哈夫曼编码 -
厨人兴达芬: 我自己用ppt给你做了个演示.Huffman编码的基本规则你肯定懂的,我就简略了.现在规定树枝的左侧都为1,右侧都为0 可以构造Huffman树如下:按顺序从根节点到叶子知:4对应的Huffman编码为:111116的为:111108的为:111020的为:11035的为:1010的为:01115的为:01023的为:00

磐安县19323723726: 哈夫曼树的建立 -
厨人兴达芬: ..作业吧,运行可用,自己再试试.//huffman_h.h 哈夫曼树的头文件#include"iostream.h"#include "stdio.h"#include "stdlib.h"#include "string.h" typedef char ElemType; typedef struct{ ElemType elem; unsigned int weight; unsigned int ...

磐安县19323723726: 如何证明每一个信源都有哈夫曼编码 -
厨人兴达芬: 哈夫曼编码一般我们理解为将字符用01表示,由于不同字符出现的次数不一样,我们将出现次数多的字符编码短一些,次数少的编码长一些.哈夫曼编码的设计原理是先构造哈夫曼树,哈夫曼树构造规则是选择两个权值最小的结点构造为树,递归这一过程直到一棵树位置,所有信源对应的结点都是叶子结点.然后根据哈夫曼树,构造编码的时候,为每一个叶子结点设计编码.往左默认为0,往右默认为1,所以每个叶子结点都有一个编码,当然信源都有哈夫曼编码.这个证明题不知道要考什么.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网