los compresores lo que hacen es buscar cadenas repetidas en los archivos, o sea lo sustituyen cuando ven que se repiten mucho, por ejemplo ha algunos compresores que buscan cadenas repetidas, strings, buscan una longitud mínima de 3 bytes(algunos compresores, la mayoria) y las guarda en una tabla hash, así si pilla dos strigns que van a la misma tabla de entrada, es por que son iguales(obvio) y tras un intervalo del archivo que van a comprimir, algo de 32kb, revisa la tabla y busca la parte común que sea mas larga, los strings que se repiten se cambian por marcas a la tabla hash y los que no se repiten, se guardan tal como venían. Al final de todas estas operaciones se almacena el comprimido haciendo uso del árbol Huffman, uno para tener como referencia los strings y otro para la tabla(esto lo uza winzip, formato gráfico PNG que se llama lz77)
el arbol Huffman es una de las técnicas mas básicas para comprimir, y tiene por objetivo hacer que los simbolos que aparescan se representen en forma mas corta, así el largo medio del mensaje debe ser lo menor posible