Algorithm 改进这种压缩算法?

Algorithm 改进这种压缩算法?,algorithm,Algorithm,我正在压缩8位字节,只有当在数据上找到的唯一单个字节数小于等于128时,该算法才有效 我接受所有唯一的字节。首先,我存储一个表,每个表包含一个唯一的字节。如果它们是120,我存储120字节 然后,我不再将每个项目存储在8位的空间中,而是将每个项目一个接一个地存储在7位中。这7位包含项目在表中的位置 问题:如何通过在代码中存储可能的表来避免在开始时存储这120个字节?我不知道确切的算法,但压缩算法的想法可能是你不能。它必须存储这些值,以便为数据中的所有其他字节编写快捷方式 有一种方法可以避免写入这

我正在压缩8位字节,只有当在数据上找到的唯一单个字节数小于等于128时,该算法才有效

我接受所有唯一的字节。首先,我存储一个表,每个表包含一个唯一的字节。如果它们是120,我存储120字节

然后,我不再将每个项目存储在8位的空间中,而是将每个项目一个接一个地存储在7位中。这7位包含项目在表中的位置


问题:如何通过在代码中存储可能的表来避免在开始时存储这120个字节?

我不知道确切的算法,但压缩算法的想法可能是你不能。它必须存储这些值,以便为数据中的所有其他字节编写快捷方式


有一种方法可以避免写入这120个字节:当您事先知道这些字节的内容时。例如,当您知道要发送的任何内容都只包含这些字节时。然后,您可以简单地让表的两边都知道,并简单地存储除120字节以外的所有内容。

我不知道确切的算法,但压缩算法的想法可能是您不能。它必须存储这些值,以便为数据中的所有其他字节编写快捷方式


有一种方法可以避免写入这120个字节:当您事先知道这些字节的内容时。例如,当您知道要发送的任何内容都只包含这些字节时。然后你可以简单地让桌子两边的人都知道,只需存储120个字节以外的所有内容。

您尝试的是哈夫曼编码的特例您只考虑唯一字节,而不是它们的频率,因此给出每个字节的固定长度代码,但您可以更好地使用它们的频率,使用哈夫曼编码给出可变长度代码,并获得更多压缩

但是如果你打算使用相同的算法,那么考虑这样的方式:-< /P> 不存储120字节存储256位(32字节),其中1表示值是否存在 因为它会给你所有的信息。您可以使用bit来获取 在文件中找到,并再次构造映射表


您正在尝试的是哈夫曼编码的特殊情况,您只考虑唯一字节,而不是它们的频率,因此给出每个字节的固定长度代码,但您可以更好地使用它们的频率,使用哈夫曼编码给出可变长度代码,并获得更多压缩

但是如果你打算使用相同的算法,那么考虑这样的方式:-< /P> 不存储120字节存储256位(32字节),其中1表示值是否存在 因为它会给你所有的信息。您可以使用bit来获取 在文件中找到,并再次构造映射表


你不能,你的算法是基于这个表的。您可能会对哈夫曼编码感兴趣,它与您的编码非常相似:我可以通过两种方式减小表的大小:a)压缩表b)在我的代码中存储可能的表。b可能吗?不,你会有120个!(6.7e198)可存储的表格。如果您总是创建同一个表,您不需要发送它,如果顺序不重要(也不应该,您可以对该表进行排序),您可以将其存储为32字节(位数组),您不能,您的算法基于该表。您可能会对哈夫曼编码感兴趣,它与您的编码非常相似:我可以通过两种方式减小表的大小:a)压缩表b)在我的代码中存储可能的表。b可能吗?不,你会有120个!(6.7e198)可存储的表格。如果您总是创建同一个表,您不需要发送它,如果顺序不重要(也不应该,您可以对该表进行排序),您可以将其存储为32字节(位数组)事实上,我上面描述的是第二次压缩。就是这样:我压缩压缩数据,所以我没有办法知道可能的字符。有没有办法在代码中存储可能的组合?如果你试图存储所有可能的组合,你仍然必须有办法识别所有可能的组合。其中有2^(8*128),恰好与您正在存储的字节的存储空间量完全相同。如果您尝试存储所有可能的组合,如果您将其存储在代码中,当然这是可能的。但这并不意味着它会改变任何事情。你仍然需要存储128字节来确定确切的组合。我可以利用这个事实,我相信如果可能的话,但另一个人说:“(6.7e198)可能的表”?事实是,我上面描述的是第二次压缩。就是这样:我压缩压缩数据,所以我没有办法知道可能的字符。有没有办法在代码中存储可能的组合?如果你试图存储所有可能的组合,你仍然必须有办法识别所有可能的组合。其中有2^(8*128),恰好与您正在存储的字节的存储空间量完全相同。如果您尝试存储所有可能的组合,如果您将其存储在代码中,当然这是可能的。但这并不意味着它会改变任何事情。你仍然需要存储128个字节来确定确切的组合。我可以利用这个事实,我相信如果可能的话,但另一个人说:“(6.7e198)可能的表”?