zoukankan      html  css  js  c++  java
  • 哈夫曼树(Huffman Tree)与哈夫曼编码

    【哈夫曼树的定义】

    假设有n个权值{w1,w2,...,wn},构造一颗有n个叶子结点的二叉树,每个叶子结点带权Wk,每个叶子的路径长度为Lk,则其中带权路径长度WPL最小的二叉树称做哈夫曼树

    【一些定义】

    从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径长度

    树的路径长度就是从树根到每一结点的路径长度之和。

    如果考虑到带权的结点,结点的带权的路径长度为从结点到树根之间的路径长度与结点上权的乘积。

    树的带权路径长度为树中所有叶子结点的带权路径长度之和。

    【哈夫曼编码】

    一般地,设需要编码的字符集为{d1,d2,...,dn},各个字符在电文中出现的次数或频率集合为{w1,w2,...,wn},以d1,d2,...,dn作为叶子结点,以w1,w2,...,wn作为相应叶子结点的权值来构造一颗哈夫曼树。规定哈夫曼树的左分支代表0,右分支代表1,则从根结点到叶子结点所经过的路径分支组成的0和1序列便为该结点对应字符的编码,这就是哈夫曼编码

  • 相关阅读:
    重载和重写的定义
    方法的重载与重写有什么区别?
    java: while 和do while区别
    java中的运算符
    java 8种基本数据类型
    java.面向对象特征
    java语言的特点
    java.注释类型
    char 和 varchar2 区别
    使用sql对数据库进行简单的增删改查
  • 原文地址:https://www.cnblogs.com/utank/p/4288481.html
Copyright © 2011-2022 走看看