算法导论 第三版 第16章 16.3-6和16.3-9两道题怎么做?

li_x1979 2015-06-18 10:15:01
16.3-6 假定我们有字母表C = {0,1,...,n - 1}上的一个最优编码,我们希望用最少的二进制位传输此编码。说明如何仅用2n - 1 + n[lgn]([]表示上取整)位表示C上的任意最优前缀码。(提示:通过对树的遍历,用2n - 1位说明编码树的结构)

疑问:不清楚题目问的是不是怎么用最少的位来表示编码树?如果是,怎么表示呢?

16.3-9 证明:对于一个由随机生成的8位字符组成的文件,没有任何压缩方法可以将其压缩,哪怕只是压缩一位。(提示:比较可能的文件数量和可能的编码文件数量。)

疑问:算法导论第二版里有该题的答案,原文如下:
Show that we cannot expect to compress a le of randomly chosen bits. Notice that the number of possible source les S using n bits and compressed les E using n bits is 2n+1 - 1. Since any compression algorithm must assign each element s 2 S to a distinct element e 2 E the algorithm cannot hope to actually compress the source le.

我理解就是所有可能的源文件和压缩后的文件数量相同,又因为源文件不同,压缩后的文件也不同,且压缩方法不可能使文件更大,所以源文件和压缩后的文件只能相同,所以无法压缩。

但是我认为哈弗曼算法是针对每个文件有不同的编码树,即使压缩后文件相同,但是因为编码树不同还是可以还原的啊。如果按照题目的结论,岂不任何文件都无法压缩了?
...全文
834 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
FancyMouse 2015-06-24
  • 打赏
  • 举报
回复
是不是随着数据变化压缩方案并不影响结论
li_x1979 2015-06-24
  • 打赏
  • 举报
回复
16.3-6明白了,关键是用递归的方法生成的0,1编码与满二叉树是一一对应的关系对吧。 16.3-9的解答我大致理解你的意思,但还是不清楚你说的“压缩算法”是指对所有文件都用一套固定的编码方案,还是针对不同的文件用不同的编码方案。比如源文件是X,编码方案Y,压缩后的文件是Z,则有: f(X,Y) → Z (f是编码过程) g(Z,Y) → X (g是解码过程) 如果固定Y,我相信肯定不能压缩,但是如果Y随着X变,那还是可以压缩的。
FancyMouse 2015-06-24
  • 打赏
  • 举报
回复
16.3-6 先做2n-1位表示树:

void write(tree* node)
{
  if (node)
  {
    write(1);
    write(node->l);
    write(node->r);
  }
  else
    write(0);
}
所以2n-1位可以表示出树结构。然后再用nlogn位来依次表示树上每一个叶子分别是0~n-1哪个数,这就做完了。 16.3-9 压缩的本质是对一小部分特定的感兴趣的数据用更少的长度来表示。任何压缩算法都会使得其他某些数据得表示方法更长,只是那些数据人们用不上。
多无人机协同航迹规划的约束处理与进化优化一体化框架:从几何可修复性建模到多种群种群多样性维持策略(Matlab代码实现)内容概要:本文提出了一种针对多无人机协同航迹规划的约束处理与进化优化一体化框架,重点解决了复杂三维战场环境中多无人机协同飞行的路径规划问。该框架创新性地结合了几何可修复性建模方法,以处理飞行过程中的各种硬性和软性约束,如障碍物规避、飞行高度限制、燃料消耗等,确保所规划航迹的安全性与可行性。同时,引入多种群种群多样性维持策略,有效增强了进化算法在全局搜索过程中的多样性和避免早熟收敛的能力,从而提高了优化效率与解的质量。整个框架通过Matlab代码实现了完整的仿真验证,展示了其在复杂场景下生成高效、安全、协同飞行路径的有效性与实用性。; 适合人群:具备一定编程基础和优化算法知识,从事无人机路径规划、智能优化算法研究或相关领域工作的研究生、科研人员及工程技术人员。; 使用场景及目标:① 解决复杂三维环境中多无人机协同路径规划问,确保飞行安全与任务效率;② 提升进化算法在高维、多约束优化问中的搜索能力和稳定性;③ 为相关领域的研究人员提供一套完整的Matlab代码实现方案,便于进一步研究与应用开发。; 阅读建议:此资源不仅提供了理论框架的设计思路,还配套了详细的Matlab代码实现,建议读者在学习过程中结合理论部分与代码实践,深入理解几何可修复性建模与多种群策略的具体实现方式,并尝试调整参数或应用场景以加深理解和促进创新。

33,025

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧