Cómo comprimir información para su uso posterior

Es imposible (incluso en principio) comprimir todo tipo de datos; los números verdaderamente aleatorios, por ejemplo, no se pueden comprimir en absoluto.

Los tipos de datos que PUEDEN comprimirse son aquellos que tienen patrones.

Entonces, si te di este número:

142857142857142857142857142857142857142857142857142857

Puede notar que los dígitos 142857 simplemente se repiten nueve veces. Entonces podría decir “El número 142857, repetido 9 veces”, que es bastante más corto.

Así que esto se trata de patrones, y cómo reconocerlos y recordar el patrón en lugar de la información original.

En una computadora, podemos explotar el poder de la máquina para buscar y explotar patrones, pero eso no es tan fácil de hacer “cognitivamente”.

Dicho esto, hacemos esto todo el tiempo. No sé dónde se almacena cada artículo en mi cocina. Hay cientos de artículos individuales allí. ¿Cómo encuentro una cosa particular que necesito? Bueno, yo * creo * patrones. Puse todas las especias en un estante de especias, todos los cuchillos, tenedores y cucharas en el cajón de los cubiertos, y así sucesivamente.

Lo que estoy haciendo inconscientemente allí es crear patrones. Si almacenaba cosas completamente al azar, entonces un cajón tenía dos cuchillos, un plato, una tapa de cacerola y el frasco de canela … y el siguiente cajón tenía un cuchillo, dos cucharas, una taza medidora, el salero y un paquete de hojas de menta … luego encontrar esa especia que necesito sería terriblemente difícil.

Entonces, la clave para memorizar la ubicación de todo es explotar patrones. En el caso de mi cocina, almaceno artículos por función. Todavía no puedo decirte la ubicación PRECISA del frasco de canela, pero puedo simplificar mi memoria de las ubicaciones precisas de todas mis especias con la memoria única “El estante de especias está en el tercer armario de la derecha”. Esto me da una ubicación aproximada para la canela. Si soy superorganizado, puedo colocar las especias en el estante alfabéticamente, ¡y eso hace que encontrarlo sea realmente fácil!

En una biblioteca, los libros se almacenan por materia, o alfabéticamente. Están explotando los patrones en el contenido o título del libro para agrupar las cosas en los estantes en un patrón que posteriormente puede ser explotado.

Entonces encontrar patrones en las cosas que estás tratando de aprender es bueno. En lugar de tratar de recordar los detalles exactos de todo, busque patrones que puedan actuar como un atajo. No todos los sujetos son susceptibles a eso. Si tiene que memorizar los primeros 43 presidentes de los EE. UU., Bueno, no hay atajos. Estos son datos aleatorios, y no se pueden comprimir, por lo que solo debe recordarlos todos. Pero recordar las propiedades químicas de los 96 elementos naturales puede simplificarse enormemente memorizando sus ubicaciones en “la tabla periódica” y sabiendo que sus propiedades se relacionan fuertemente con sus posiciones.

Busque patrones, intente recordar los patrones, y luego ajuste las cosas en ese patrón.

Hay varias formas de abordarlo, pero en su forma más básica se trata realmente de encontrar una forma de representar los datos de una manera más eficiente en el espacio a costa de tener que hacer más cálculos más adelante

Por ejemplo, supongamos que tenemos una cadena de números así:

134444480

Ahora podríamos almacenar eso en su forma no comprimida, o podríamos reconocer que hay un patrón explotable allí en esa larga cadena de cuatro patas. Entonces escribimos un programa para buscar secuencias repetidas, luego le decimos que las divida en algo como esto:

134 * 580

Y luego escriba otro programa que esté diseñado para buscar ese símbolo * y repita el dígito que apareció antes tantas veces como el dígito que vino después. Así que ahora pasamos de almacenar 9 caracteres a solo tener que almacenar 7.

La desventaja, por supuesto, es que antes de poder usar esos datos, primero debe ejecutar el programa de descompresión, lo que perjudica su eficiencia general (aunque no mucho para este método, ya que grandes porciones de datos permanecen sin comprimir). Además, no hay garantice que realmente podrá reducir el tamaño de cualquier conjunto de datos dado tanto si no hay mucha repetición.

Otra forma de abordarlo que le brinda resultados más repetibles consiste en dividir los datos, que en última instancia son solo una cadena de números, por un número primo para reducir la cantidad de bytes que necesita. Esto es mucho más predecible y potencialmente eficiente en cuanto al espacio, pero mucho más costoso en términos de tiempo de ejecución. También significa que podría terminar con un archivo más grande si los datos originales sin comprimir son sustancialmente más pequeños que el número primo a menos que cambie qué primo usa según el conjunto de datos, agregando más complejidad.