Cómo crear un algoritmo que comprima el código binario

¿Qué quiere decir exactamente con código binario y también con compresión? Si esto es solo una pregunta general, entonces todo es, de hecho, código binario, desde números a través de texto, imágenes, sonido y video, juegos, programas, códigos de seguridad, todo en una computadora se almacena en código binario. Entonces, cualquier compresión que esté operando en código binario. Simplemente haga una búsqueda web en algoritmos de compresión, todos ellos de hecho estarían trabajando en códigos binarios.

En algunas situaciones específicas, es posible que desee reducir el tamaño utilizado para almacenar un valor omitiendo bits innecesarios del código binario, mientras permite que se utilicen más bits cuando sea necesario. Una muestra de esto es un esquema de codificación como UTF8, en cuyo caso las primeras posibilidades de 127 caracteres solo ocupan un byte, pero para otros podría usar 2, 3 o incluso 6. Este tipo de idea generalmente se llama VLE (Longitud variable Codificación) y se usa a menudo para mantener bajo el tamaño de almacenamiento / comunicación, por ejemplo, la mayoría de los números usados ​​tienden a ser pequeños, por lo que a menudo significa que se puede almacenar un número de 64 bits en un byte (en lugar de 8) al omitir todos los 0 y usar un esquema VLE . Esta idea también se conoce a veces como compresión.

No tiene sentido, ya está hecho. La teoría de la información establece límites en la compresión sin pérdida de datos arbitrarios y todos los algoritmos actuales (LZW, etc.) alcanzan esos límites, por lo que no hay nuevos algoritmos por descubrir que sean mejores que estos.

Si los datos son de un tipo particular: imágenes, películas, audio, etc., existen técnicas de compresión con pérdida que obviamente funcionan mucho mejor que la compresión de tipo LZW. Esta sigue siendo un área de investigación activa, pero es muy compleja. Se podría descubrir un nuevo algoritmo que supera a los actuales más útiles, pero es muy poco probable que lo encuentre un codificador principiante promedio. No quiero decir que parezca despectivo, pero la forma en que se formula la pregunta sugiere que no está familiarizado con el dominio del problema.

More Interesting

Cómo implementar un algoritmo de programación de CPU del sistema operativo que evita que se produzcan puntos muertos

¿Cuál es el principio principal del algoritmo de búsqueda binaria?

En un algoritmo, ¿cuál es el significado real de la complejidad del espacio?

¿Puede alguien sin antecedentes de cálculo aprender estructuras de datos y algoritmos leyendo CLRS?

¿Por qué Lua está diseñado de tal manera que obtener el tamaño de una tabla es O (n) en el tamaño de la tabla?

Cómo representar el algoritmo de hash SHA256 en python

Cómo revertir un número promedio de números sin los números

¿Qué es Algoritmo, Diagrama de flujo y Pseudocódigo en la planificación de programas antes de escribir?

¿Las estructuras en lenguaje C son similares a los objetos en Java?

Tengo una pila masiva de más de 300 pares de calcetines. ¿Cuál es el algoritmo más rápido que puedo usar para extraer unos 25 pares coincidentes de la pila desordenada?

¿Cuál es una explicación intuitiva del algoritmo Metropolis-Hastings?

¿Cómo puede el paralelismo mejorar el algoritmo de fuerza bruta?

Imagine una cerradura de bicicleta combinada con 4 anillos que contienen 10 letras. ¿Cómo se puede calcular qué letras en cada anillo producirán las palabras más válidas?

¿Cómo inserta este código un nuevo nodo en un árbol binario?

Si hay una matriz de 101 números que consiste en números del 1 al 100 con el número repetido, ¿cómo encuentra el número repetido en el número mínimo de iteraciones (en el programa C)?