Lay (LZW) é um algoritmo de compressão de dados sem perdas, desenvolvido por Abraham Lempel e Jacob Ziv em jogar jogos de azar 7️⃣ 1984. A sigla "Lay" significa "Lempel-Ziv-Welch", em jogar jogos de azar homenagem a seu criador e o cientista de computação Terry Welch, que 7️⃣ desenvolveu uma implementação eficiente do algoritmo.
O algoritmo funciona construindo uma tabela de cadeias de caracteres à medida que lê a 7️⃣ entrada. Inicialmente, a tabela contém apenas as cadeias de caracteres vazias e os caracteres individuais. Para cada caractere lido, o 7️⃣ algoritmo procura a cadeia de caracteres mais longa na tabela que é um prefixo da cadeia de entrada atual e 7️⃣ em jogar jogos de azar seguida, emite a próxima entrada como um par (comprimento da cadeia prefixo, novo caractere). Em seguida, a tabela 7️⃣ é atualizada adicionando a nova cadeia de caracteres formada pelo prefixo e o novo caractere.
O processo continua até que a 7️⃣ entrada seja esgotada, momento em jogar jogos de azar que o algoritmo emite o último par e termina. O resultado é uma sequência 7️⃣ de pares (comprimento, caractere) que representam a entrada original comprimida.
A descompressão funciona basicamente da mesma forma, construindo a tabela à 7️⃣ medida que lê a entrada. Inicialmente, a tabela contém apenas as cadeias de caracteres vazias e os caracteres individuais. Para 7️⃣ cada par (comprimento, caractere) lido, o algoritmo constrói a cadeia de caracteres prefixada pelo comprimento lido e adiciona o caractere 7️⃣ ao final da cadeia. Em seguida, a tabela é atualizada adicionando a nova cadeia de caracteres formada.