Zstd/Zlib 压缩是双射的吗?
Is Zstd/Zlib compression bijective?
这更像是一个概念性问题,但如果我有一个文件 A 和一个文件 B,
如果 A != B,Compressed(A) 是否有可能等于 Compressed(B)。此外,如果 A 和 B 的压缩表示匹配,A 和 B 是否保证匹配?
问题似乎与双射无关。
如果对于给定的File A
,这些算法可能是双射的,如果只有一个Compressed(A)
可能。
显然不是这样的:只是玩压缩级别,你有多个不同版本的 Compressed(A)
,它们解压缩回相同的 File A
。所以它不是 bijection.
然而,另一个方向是有保证的:一个给定的 Compressed(something)
可以重新生成一个并且只有一个 something
。并且由于压缩是无损的,它保证如果Compressed(A) == Compressed(B)
,那么必然A == B
。
但不要将其与双射混淆。当 A == B
时,它不会遵循 Compressed(A) == Compressed(B)
,因为它们可能被不同地压缩(使用不同的压缩级别或其他高级参数)。
这更像是一个概念性问题,但如果我有一个文件 A 和一个文件 B, 如果 A != B,Compressed(A) 是否有可能等于 Compressed(B)。此外,如果 A 和 B 的压缩表示匹配,A 和 B 是否保证匹配?
问题似乎与双射无关。
如果对于给定的File A
,这些算法可能是双射的,如果只有一个Compressed(A)
可能。
显然不是这样的:只是玩压缩级别,你有多个不同版本的 Compressed(A)
,它们解压缩回相同的 File A
。所以它不是 bijection.
然而,另一个方向是有保证的:一个给定的 Compressed(something)
可以重新生成一个并且只有一个 something
。并且由于压缩是无损的,它保证如果Compressed(A) == Compressed(B)
,那么必然A == B
。
但不要将其与双射混淆。当 A == B
时,它不会遵循 Compressed(A) == Compressed(B)
,因为它们可能被不同地压缩(使用不同的压缩级别或其他高级参数)。