我很难理解LZW算法。我正在检查维基百科(http://en.wikipedia.org/w/index.php?title=Lempel-Ziv-Welch&oldid=245292660)上提供的伪代码,在解压缩代码中有一部分我不明白:
else if (k == currSizeDict)
entry = w + w[0];有人能给我解释一下发生这种事的情景吗?
发布于 2015-03-28 18:44:36
这个问题在这里解释得很好:https://www.cs.duke.edu/csed/curious/compression/lzw.html。基本思想是,由于LZW只需要压缩字符串和包含字母表所有元素的字典(而不是包含所有编码模式的字典),所以在解码时有必要动态地重构更复杂模式的所有编码。这导致了一种情况,即有可能遇到字典中没有的编码。有趣的是,正如上面的链接所指出的,只有当编码的字符串以相同的字符开始和结束时,才会发生这种情况。
https://stackoverflow.com/questions/29320126
复制相似问题