¿Es posible comprimir una gran cantidad de datos no redundantes, por ejemplo 1000 GB a 100 KB, sin perder ningún dato?

No.

La compresión se trata de encontrar la redundancia en los datos. Si no hay redundancia, entonces no puede comprimirla en absoluto.

Por ejemplo, la secuencia de números del 1 al 1 billón podría escribirse enumerándolos 1, 2, 3, 4, 5, 6,… 1000000000000. Puede escribirlo en ascii, en binario o en código

  • Si escribe eso en ASCII, tomará aproximadamente 11 TB (longitud promedio de número 9 caracteres más dos para la coma y el espacio, multiplicado por un billón).
  • Si escribe eso en binario, tomará aproximadamente 4 TB (4 bytes por número por billón).
  • Si lo escribe en código, tomará aproximadamente 20 bytes (dependiendo del lenguaje de programación).

Esa es una relación de compresión de casi un billón a uno entre la representación ingenua y más eficiente. Esta eficiencia solo es posible debido a la redundancia en el problema. Si baraja aleatoriamente los datos antes de pedir que se almacenen, ya no podrá comprimirlos.

1000 GB a 1000 KB es 1 millón de veces de compresión (o 1024 ^ 2 dependiendo de las unidades GB y KB que use) …

Si estás hablando de compresión sin pérdida, y en general, no.

Incluso si omitimos el escenario en el que el archivo de 100 GB ya se ha ejecutado a través de un algoritmo de compresión, puede construir fácilmente escenarios del mundo real en los que simplemente no puede obtener una compresión sin pérdida de 1 millón de veces, ya que tendría que perder información para lograr esto. mucha compresión