LZW-解压缩器算法

LZW-decompressor algorithm

我很难理解 LZW 算法。我正在检查维基百科 (http://en.wikipedia.org/w/index.php?title=Lempel-Ziv-Welch&oldid=245292660) 上提供的伪代码,解压缩程序代码中有一部分我不明白:

      else if (k == currSizeDict)
          entry = w + w[0];

谁能给我解释一下会发生这种情况的场景?

这个问题在这里解释得很好:https://www.cs.duke.edu/csed/curious/compression/lzw.html。基本思想是,由于 LZW 只需要压缩字符串和包含所有字母表元素的字典(而不是包含所有编码模式的字典),因此有必要在解码时即时重建更复杂模式的所有编码。这导致可能 运行 进入不在字典中的编码的情况。有趣的是,正如上面的 link 所指出的,这只有在编码字符串以相同字符开头和结尾时才会发生。