<div class="notebook"> <div class="nb-cell markdown" name="md1"> La compresión de datos se basa fundamentalmente en buscar repeticiones en series de datos para después almacenar solo el dato junto al número de veces que se repite. Así, por ejemplo, si en un fichero aparece una secuencia como "AAAAAA", ocupando 6 bytes se podría almacenar simplemente "6A" que ocupa solo 2 bytes. </div> <div class="nb-cell markdown" name="md2"> Supongamos que se desea comprimir la siguiente cadena de números y se desea comprimir la secuencia de números contiguos, una **codificación de longitud de ejecución ( RLE )** ```sh Comprime(+Lista, -R) Es cierto si R unifica con una lista de la siguiente forma Comprime([1,1,1,2,2,2,3,4,4], R). ``` </div> <div class="nb-cell markdown" name="md3"> El resultado de la compresión es ```sh R=[(1,3), (2,3), 1, (4,2)] ``` </div> <div class="nb-cell markdown" name="md4"> Para este caso aplicando inducción se encuentra los casos - Lista vacía - Un único elemento - Cuando ambos elementos contiguos son iguales - Cuando ambos elementos contiguos no son iguales </div> <div class="nb-cell program" name="p1"> /* Lista vacia */ comprime([],[]). /* Un unico elemento */ comprime([E], [E]). /* V.2 Cuando tenga solo un elemento no contiguo con otro no se hara compresion */ comprime([C,C|Resto], [(C,2)|R] ):- comprime([C|Resto], [C|R]). /* Toma los 2 primeros, si ambos son iguales*/ comprime([C,C|Resto], [(C,N2)|R] ):- comprime([C|Resto], [(C,N)|R]), N2 is N+1. /* Toma los 2 primeros, si no son iguales */ comprime([C1,C2|Resto], [C1|R]):- C1 \= C2, comprime([C2|Resto], R). </div> <div class="nb-cell query" name="q1"> comprime([1,1,1,2,2,2,3,4,4], R). </div> <div class="nb-cell markdown" name="md5"> **Aplicaciones** </div> <div class="nb-cell markdown" name="md7"> Se emplearon de codificación (RLE) los sistemas de longitud de ejecución en la transmisión de señales de televisión analógicas. En 1983, de longitud ejecutar la codificación fue patentada por Hitachi. RLE se adapta particularmente bien a imágenes de mapa de bits basadas en paletas, como iconos de computadora, y era un método de compresión de imágenes popular en los primeros servicios en línea como CompuServe antes de la llegada de formatos más sofisticados como GIF </div> <div class="nb-cell html" name="htm1"> La codificación RLE realiza una compresión de datos sin pérdidas y es muy utilizado en imágenes de 8 bits indexadas (en un principio fue utilizado para imágenes en blanco y negro). No funciona tan bien en imágenes donde varía constantemente el color de los píxels como fotografías, aunque JPEG lo utiliza de forma efectiva en los coeficientes que quedan después de transformar y cuantificar bloques de imágenes. </div> <div class="nb-cell markdown" name="md6"> Notebook basado en: * Material de Programación Lógica y Funcional de la Universidad de Huelva * https://en.wikipedia.org/wiki/Run-length_encoding * Libro http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf * https://swish.swi-prolog.org/p/filia.pl </div> </div>