链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3143 题目大意是说:给出一张无向图,找出一种加权值的方式,使得从1到n期望带权路径长度最短,输出最短路长度。 首先,根据基本常识,走的次数多的边,权值越小越好(废话)。 于是问题转变为:找出每条 ...
分类:
其他好文 时间:
2017-07-15 13:55:08
阅读次数:
193
带权路径最小的二叉树称为最优二叉树或Huffman(哈夫曼树)。 Huffman树的构造 将节点的权值存入数组中,由数组开始构造Huffman树。初始化指针数组,指针指向含有权值的孤立节点。 数组b中的指针可以理解为二叉树的根指针。 进行n - 1次循环建立Huffman树 选择b中根节点权值最小的 ...
分类:
其他好文 时间:
2017-06-05 23:57:09
阅读次数:
422
代码实现: 第六章 树:赫夫曼树 赫夫曼树定义与原理 从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称作路径长度。 树的路径长度就是从树根到每一结点的路径长度之和。 对于带权的结点,结点的带权路径长度为从该结点到树根之间的路径长度与结点上权的乘积。 树的带权路径长度为树 ...
分类:
其他好文 时间:
2017-05-20 11:12:55
阅读次数:
165
赫夫曼树: 如果有n个权值{w1,w2,w3....},试构造一棵具有n个叶子节点的二叉树,每一个叶子节点带权为wi。则当中带权路径长度最小的二叉树称为最优二叉树或者叫赫夫曼树。 构造赫夫曼树: 如果有n个权值,则构造出的赫夫曼树有n个叶子节点,n个权值分别设置为w1,w2,....wn,则赫夫曼树 ...
分类:
其他好文 时间:
2017-05-19 12:17:18
阅读次数:
229
赫夫曼(Huffman)树,由发明它的人物命名,又称最优树,是一类带权路径最短的二叉树,主要用于数据压缩传输。 赫夫曼树的构造过程相对比较简单,要理解赫夫曼数,要先了解赫夫曼编码。 对一组出现频率不同的字符进行01编码,如果设计等长的编码方法,不会出现混淆的方法,根据规定长度的编码进行翻译,有且只有 ...
分类:
编程语言 时间:
2017-04-22 09:48:52
阅读次数:
328
最短路径:带权图中从一个结点到另外一个结点可能会有多个路径,但是将带权路径长度值最小的一条路径成为最短路径。 1:(Dijkastra)迪克斯特拉算法: 迪克斯特拉算法用于最短路径的方法和prim用于最小生成树的方法类似都是按照路径权值由小到大的顺序来产生最短路径。 主要思想:设置两个集合的结点S和 ...
分类:
其他好文 时间:
2017-04-06 19:26:41
阅读次数:
170
哈弗曼树定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。 哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 ...
分类:
其他好文 时间:
2016-11-17 00:49:32
阅读次数:
239
一.背景介绍: 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 二.实现步骤: 1.构造一棵哈夫曼树 2.根据创建好的哈夫曼树创建一张哈夫曼编码表 ...
分类:
编程语言 时间:
2016-11-15 07:37:37
阅读次数:
283
一、概念 几个与哈夫曼树有关的概念【路径】树中一个结点到另一个结点之间的分支构成这两个结点之间的路径【路径长度】路径上的分枝数目称作路径长度【树的路径长度】从树根到每一个结点的路径长度之和【权值】指重要程度,在这里指出现的频率。如在一篇文章中“我”字比“朕”字出现频率要高,可权重大【结点的带权路径长 ...
分类:
其他好文 时间:
2016-10-19 13:47:42
阅读次数:
199
哈夫曼树与哈夫曼编码 术语: i)路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。 路径中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。 ii)结点的权及带权路径长度 若对树中的每个结点赋给一个有着某种含义的数值,则 ...
分类:
其他好文 时间:
2016-09-17 23:37:06
阅读次数:
272