Optimization 如何计算起始-停止编码方案的最佳参数?
开始步骤停止代码是一种数据压缩技术,用于压缩相对较小的数字 该代码的工作原理如下:它有三个参数,开始,步骤和停止。开始确定用于计算前几个数字的位数。步骤确定当我们用完时要添加到编码中的位数,并确定用于编码数字的最大位数 因此,编码的长度由l=开始+步骤*i给出 特定代码的“i”值使用一元编码。也就是说,一个1位的数字后跟一个终止的0位。如果我们已经到达停止,那么我们可以删除终止的0位。如果我是零,我们只写出0位 因此,(1,2,5)开始-步骤-停止代码的工作方式如下: 值0,编码为:0 0Optimization 如何计算起始-停止编码方案的最佳参数?,optimization,data-compression,Optimization,Data Compression,开始步骤停止代码是一种数据压缩技术,用于压缩相对较小的数字 该代码的工作原理如下:它有三个参数,开始,步骤和停止。开始确定用于计算前几个数字的位数。步骤确定当我们用完时要添加到编码中的位数,并确定用于编码数字的最大位数 因此,编码的长度由l=开始+步骤*i给出 特定代码的“i”值使用一元编码。也就是说,一个1位的数字后跟一个终止的0位。如果我们已经到达停止,那么我们可以删除终止的0位。如果我是零,我们只写出0位 因此,(1,2,5)开始-步骤-停止代码的工作方式如下: 值0,编码为:0 0 值1
值1,编码为:0 1
值2,编码为:10000
值9,编码为:10111
值10,编码为:11 00000
值41,编码为:11 11111
那么,给定一个包含多个数字的文件,我们如何计算该文件的最佳开始-步骤-停止代码?最佳参数定义为那些将导致最大压缩比的参数。我使用的方法是一个简单的蛮力解决方案。算法遵循以下基本步骤:
希望这能有所帮助。哈夫曼正是我在阅读这个问题时想到的+1.这让我想起了大二的数据结构课程:DHuffman代码不以其长度作为前缀,如开始、步骤和停止代码。因此,您的解决方案不适用。Hrm,我看到了区别。我没有注意到你的段落描述了导致代码的1位字符串。我在这些代码的作者的一篇文章中添加了一个链接来帮助您。我偶然看到了这篇文章,但由于某种原因找不到英文版本。谢谢停止可能高于log2(maxNumber)。您没有考虑可能导致歧义的前缀代码。此外,即使您的停止是正确的,运行时也将是异常的。任何要编码的符号数超过几个的文件都需要很长时间才能使这种方法可行。请再次查看。每个代码都以其长度的一元编码作为前缀。它们的属性是它们不是任何其他一元编码的前缀。为什么您认为运行时会非常重要?请激励。没有一个例子,超过log2(max)的停止会导致许多数字处于较低的级别,节省许多位,而只有少数大的数字需要额外的位吗?而且,当你有确切的数据时,使用概率是很奇怪的。除了兼频。对于每类元素的查找,我看不到/期望有任何改进