yo hice un algoritmo de compresion medio choto que funciono, solo funciona para texto.
es asi:
el programa lee el archivo de texto, se fija los caracteres que no se usan y hace una tabla.
luego lee el archivo buscando las combinaciones de dos letras que mas se repiten y selecciona las N mas repetidas, elije los N primeros caracteres sin usar y remplaza esas duplas por estos caracteres, luego escribe una cabecera con la asignacion de caracteres y duplas.
si lo haces recursivamente sobre un archivo aleatorio ( yo usaba los man de linux

), podes llegar a comprimir un archivo al 60% de su tamaño.
eso es todo.
(no se mucho de algoritmos de compresion ese se me ocurrio y funciono)