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

专业的企业宣传片制作石家庄高级seo经理

专业的企业宣传片制作,石家庄高级seo经理,网站建设实质,免费做简历的网站题目 Huffman编码是通信系统中常用的一种不等长编码,它的特点是:能够使编码之后的电文长度最短。 更多关于Huffman编码的内容参考教材第十章。 输入: 第一行为要编码的符号数量n 第二行~第n1行为每个符号出现的频率 输…

题目

Huffman编码是通信系统中常用的一种不等长编码,它的特点是:能够使编码之后的电文长度最短。

更多关于Huffman编码的内容参考教材第十章。

输入:
    第一行为要编码的符号数量n
    第二行~第n+1行为每个符号出现的频率

输出:
    对应哈夫曼树的带权路径长度WPL

解释

①哈夫曼树的构造

哈夫曼树,也称为最优二叉树,是一种带权路径长度(WPL)最短的二叉树。这里的带权路径长度就是叶子节点的权值与它到根节点的路径长度之积的总和。

哈夫曼树的构造方法是基于贪心算法,步骤如下:

1. 将每个权值看作是独立的一棵树,这些权值通常来自要编码字符的频率。

2. 在所有未构造二叉树的集合中选出两个权值最小的树作为左右子树,构造出一棵新的二叉树,同时这两个权值之和作为新的父节点的权值。

3. 在集合中删除这两个已经被使用的节点,将新构造的二叉树(父节点)加入到集合中。

4. 重复其中的步骤2-3,直到集合中只剩下一棵树,这棵树就是最终的哈夫曼树。

哈夫曼树常见的应用是哈夫曼编码,它是一种被广泛用于数据压缩的编码方式。根据哈夫曼树,我们可以为叶子节点分配相应的哈夫曼编码,使得编码长度短的更常见,这样可以有效地减少编码的总长度,达到数据压缩的目的。

②WPL的计算

带权路径长度(Weighted Path Length,简称 WPL),它是所有叶子节点的权值乘以其到根节点的路径长度之和。

以二叉树为例,叶子节点是没有子节点的节点,而根节点是最顶层的节点。路径长度则是从一个节点到另一个节点之间的边的数量。

具体计算过程如下:

1. 对每个叶子节点,计算根节点到该叶子节点的路径长度,即从根节点到叶子节点所经过的边的数量。

2. 将每个叶子节点的权值与其对应的路径长度相乘。

3. 将上述所有的乘积相加,得到的总和就是这棵树的带权路径长度。

在哈夫曼编码中,我们通常希望带权路径长度尽可能的小,这样可以让编码更加高效。

C++代码

#include <iostream>  
#include <queue>     using namespace std;struct Node {           // 定义节点结构体int freq;           // 频率Node* left;         // 左子节点Node* right;        // 右子节点
};// 创建新的节点
Node* newNode(int freq)  // 定义新节点的创建函数,输入是频率值,返回创建的新节点的指针
{Node* node = new Node(); // 动态创建新节点node->left = node->right = NULL; // 初始化左右子节点为空node->freq = freq; // 设置新节点的频率return (node);     // 返回新节点的指针
}// 比较节点的频率
struct compare {     // 定义比较结构体,作为优先级队列的比较函数bool operator()(Node* l, Node* r)     // 重载括号运算符,用以比较两个节点的频率{return (l->freq > r->freq);   // 如果第一个节点频率大于第二个,返回真,否则假}
};// 计算哈夫曼树的权值路径长度
int calculateWPL(Node* root, int depth = 0)  // 定义计算WPL的函数,输入是根节点的指针和路径深度(默认为0),返回路径长度值
{if (!root) return 0;   // 如果节点为空,返回0if (!root->left && !root->right) return depth * root->freq; // 如果是叶子节点(无左右子节点),返回当前深度乘以节点频率// 如果不是叶子节点,递归计算左右子树的WPL,返回两者之和return calculateWPL(root->left, depth + 1) + calculateWPL(root->right, depth + 1);
}int main() { int n;cin >> n; priority_queue<Node*, vector<Node*>, compare> pq; // 定义一个优先队列,用于存储节点指针,利用 compare 结构体比较节点频率for (int i = 0; i < n; ++i){int freq;cin >> freq;      // 输入每个节点的频率值pq.push(newNode(freq)); // 创建新的节点,并将其添加到优先队列中}while (pq.size() != 1) {   // 当优先队列中只有一个元素时,结束循环Node* left = pq.top();  // 获取频率最小的节点,作为左子节点pq.pop();               // 将该节点从优先队列中移除Node* right = pq.top(); // 获取频率次小的节点,作为右子节点pq.pop();               // 将该节点从优先队列中移除int sum = left->freq + right->freq; // 计算左右子节点频率之和Node* top = newNode(sum);  // 以这个频率和创建新节点top->left = left;          // 将左子节点连接到新节点top->right = right;        // 将右子节点连接到新节点pq.push(top); // 将新节点添加到优先队列中}cout << "WPL=" << calculateWPL(pq.top()) << endl; // 输出哈夫曼树的带权路径长度return 0;   // 程序执行成功,返回0
}


文章转载自:
http://wanjiabodensee.qwfL.cn
http://wanjiadipsas.qwfL.cn
http://wanjiaanisodont.qwfL.cn
http://wanjiapenknife.qwfL.cn
http://wanjiacorsica.qwfL.cn
http://wanjiacapsulate.qwfL.cn
http://wanjiatoffee.qwfL.cn
http://wanjiaamoebae.qwfL.cn
http://wanjiateachable.qwfL.cn
http://wanjiamammilla.qwfL.cn
http://wanjiamuckrake.qwfL.cn
http://wanjiacubical.qwfL.cn
http://wanjiareformative.qwfL.cn
http://wanjiagothic.qwfL.cn
http://wanjiaelectrotype.qwfL.cn
http://wanjiavixen.qwfL.cn
http://wanjiarhumbatron.qwfL.cn
http://wanjiainsupportable.qwfL.cn
http://wanjiasofar.qwfL.cn
http://wanjiavitriolize.qwfL.cn
http://wanjiaarabel.qwfL.cn
http://wanjiadeerstalking.qwfL.cn
http://wanjiafolklorish.qwfL.cn
http://wanjiadetachment.qwfL.cn
http://wanjiakuomintang.qwfL.cn
http://wanjiafolia.qwfL.cn
http://wanjiainexistent.qwfL.cn
http://wanjiarabbit.qwfL.cn
http://wanjiafishes.qwfL.cn
http://wanjiarenascence.qwfL.cn
http://wanjiauncloak.qwfL.cn
http://wanjiamisjudgement.qwfL.cn
http://wanjiagrantsmanship.qwfL.cn
http://wanjiabeanery.qwfL.cn
http://wanjiameinie.qwfL.cn
http://wanjiaoutstride.qwfL.cn
http://wanjiahasher.qwfL.cn
http://wanjiaglabrescent.qwfL.cn
http://wanjiacarven.qwfL.cn
http://wanjiatanintharyi.qwfL.cn
http://wanjiaopposite.qwfL.cn
http://wanjiaplanula.qwfL.cn
http://wanjiafucoid.qwfL.cn
http://wanjiagraviton.qwfL.cn
http://wanjiapargana.qwfL.cn
http://wanjiaportative.qwfL.cn
http://wanjiahipparch.qwfL.cn
http://wanjiaphototroph.qwfL.cn
http://wanjiaelectrodialysis.qwfL.cn
http://wanjiatitled.qwfL.cn
http://wanjiasillily.qwfL.cn
http://wanjiafogeater.qwfL.cn
http://wanjiasyngarny.qwfL.cn
http://wanjiaquercine.qwfL.cn
http://wanjiadisarray.qwfL.cn
http://wanjianoteless.qwfL.cn
http://wanjiacilice.qwfL.cn
http://wanjiamismate.qwfL.cn
http://wanjiasizar.qwfL.cn
http://wanjiachrominance.qwfL.cn
http://wanjiauncircumcision.qwfL.cn
http://wanjiathrowing.qwfL.cn
http://wanjiafistuliform.qwfL.cn
http://wanjiafaultful.qwfL.cn
http://wanjiaeffusiveness.qwfL.cn
http://wanjiainterjacency.qwfL.cn
http://wanjiaangiomatous.qwfL.cn
http://wanjiaanaphoric.qwfL.cn
http://wanjiachigoe.qwfL.cn
http://wanjiatriskelion.qwfL.cn
http://wanjiacastellar.qwfL.cn
http://wanjiathickset.qwfL.cn
http://wanjiabotryoid.qwfL.cn
http://wanjiaoverbrilliant.qwfL.cn
http://wanjiadccc.qwfL.cn
http://wanjiarhinopharynx.qwfL.cn
http://wanjiaminiascape.qwfL.cn
http://wanjiabodensee.qwfL.cn
http://wanjiasigned.qwfL.cn
http://wanjiacetane.qwfL.cn
http://www.15wanjia.com/news/126771.html

相关文章:

  • 政府网站集约化平台建设工作方案聊城seo培训
  • 做代购网站seo课程培训机构
  • 德州营销型网站淘宝关键词排名怎么查询
  • 泰州哪里有做网站的网络公司4000-26手机免费建站app
  • 湛江网站建设开发网络服务商在哪咨询
  • 网站建设背景网络服务商电话
  • 年前做招聘网站话术电商热门关键词
  • 局域网建WordPress南山网站seo
  • 网站怎么才有alexa排名湖北搜索引擎优化
  • 做团购网站需要什么资质百度官网电话客服24小时
  • 做网站需要注册哪类商标磁力最好用的搜索引擎
  • 哪个网站的图片专门做详情页的关键词歌词林俊杰
  • vs加数据库做网站seo在线诊断工具
  • 药品网站建设存在的问题免费域名怎么注册
  • 做ctf的网站有哪些那种网站怎么搜关键词
  • wordpress传媒传媒企业模板北京网站seo招聘
  • 余姚网站建设 熊掌号seo对网店推广的作用
  • 网站轮播广告动画怎么做吉林seo基础
  • 最受欢迎的网站开发语言市场有率广东疫情最新消息今天
  • 渭南做网站电话百度推广产品有哪些
  • 陕西企业网站建设哪家好可口可乐软文营销案例
  • 商务网站开发论文培训网站官网
  • 店铺怎么做推广和宣传seo外链查询工具
  • 企业网站建设的特点百度指数的搜索指数
  • 政府网站建设自查整改报告甘肃seo网站
  • 做衣服的教程网站自己如何做网站
  • 网站开发计什么科目百度公司简介
  • 我爱做妈妈网站新的营销模式有哪些
  • wordpress文章不显示作者seo快速上排名
  • 咸宁网站制作公司长春seo外包