¿Es posible el algoritmo de compresión que se muestra en Silicon Valley en realidad?

Llevo más de un año investigando sobre compresión de datos, y también soy un gran fanático de la serie de televisión “Silicon Valley”, por lo tanto, creo que puedo responder a su pregunta: En resumen, “NO, es simplemente ficticio” . Aunque la serie de televisión presta atención a los detalles técnicos del programa, es solo por diversión y así es como debe ser. Sigue una respuesta relativamente larga:

Richard Hendricks, el protagonista de la serie, presenta su increíble algoritmo de compresión, ” El algoritmo intermedio “, que gana el TechCrunch Disrupt y supera el límite teórico ficticio : un puntaje Weissman de 2.9 (creo que el intermedio) El algoritmo tiene una puntuación de Weissman de alrededor de 5.2) como se muestra en el programa. Ahora, Richard’s Company, ” Pied Piper ” utiliza este algoritmo de compresión no solo para la compresión de video en 2-D sino también para la compresión de video en 3-D, y su algoritmo permite una transmisión de datos súper rápida que de acuerdo con el programa no sería posible de otra manera. Una mirada más cercana al algoritmo y sus capacidades le dirá por qué prácticamente no es posible:

  1. El “algoritmo intermedio” es un algoritmo de compresión sin pérdidas , que se parece al algoritmo de compresión LZW (aunque el algoritmo exacto no se discute en el programa) generalmente utilizado en archivos zip.
  2. Puntuación de Weissman: la puntuación de Weissman es un límite de compresión ficticio formulado por Tsachy Weissman, profesor de la Universidad de Stanford y su ex alumna Vinith Misra. Tenga en cuenta que esto es solo un límite ficticio, que es solo la relación entre la cantidad de compresión lograda y la cantidad de tiempo necesario para la compresión, ambas normalizadas con respecto a algún algoritmo de compresión estándar conocido. El puntaje de Weissman, W, se define como: [matemáticas] W = \ alpha \ frac {r} {\ tilde {r}} \ log {\ frac {\ tilde {T}} {T}} [/ matemáticas] donde está [matemática] r [/ matemática], [matemática] T, [/ matemática] son ​​la relación de compresión y el tiempo necesario para la compresión por el algoritmo de interés respectivamente, y [matemática] \ tilde {r}, \ tilde {T} [ / math] son ​​los mismos factores para cualquier algoritmo de compresión estándar. Aunque esta puntuación proporciona una buena estimación del rendimiento de cualquier algoritmo de compresión en términos de la cantidad de compresión lograda y de la rapidez con la que se realiza, el único límite teórico de la compresión sin pérdida es la entropía de los datos . Cada dato tiene su propio límite de compresión sin pérdidas, y los algoritmos que alcanzan dichos límites para cualquier dato grande se denominan algoritmos de compresión universal, por ejemplo, LZW.
  3. El punto más importante sobre por qué es simplemente ficticio es el hecho de que Pied Piper, la compañía de Richard, lo usa para la compresión de video en 3-D porque nunca usamos algoritmos de compresión sin pérdida en datos perceptualmente activos como videos, imágenes o sonido. La razón es que la compresión sin pérdida asegura que no se pierda ni un solo bit de los datos (por lo tanto, sin pérdidas 🙂 y se puede usar mientras se envían mensajes cifrados o mensajes de texto, donde la pérdida de un solo bit puede cambiar todos los datos), sin embargo, para los enormes datos almacenados en forma de imágenes y sonidos, no es necesario almacenar todos los bits, ya que los seres humanos no pueden percibir la mayoría de los datos de sonido e imagen que se les presentan, por lo tanto, uno prefiere algoritmos de compresión con pérdida como JPG y MPEG, que proporciona valores de compresión altos sin generar demasiados diferencia a la percepción humana de los datos. Además, los algoritmos de compresión sin pérdida generalmente dan un tamaño comprimido de aproximadamente la mitad del tamaño de los datos (“generalmente”, también cada dato tiene un límite teórico que no puede ser superado sin pérdida), sin embargo, la compresión con pérdida prácticamente no tiene límite teórico, es altamente depende de la percepción humana, por ejemplo, una compresión con pérdida puede darle una compresión de 10-20x sin ningún efecto en la calidad de la percepción. Por lo tanto, tener un algoritmo de compresión sin pérdidas para comprimir un video 3-D y poder transmitir solo debido a dicho algoritmo es ilógico (pero el entretenimiento nunca debe ser lógico 😛).

Tsachy Weissman es profesora de Ingeniería Eléctrica.
Cátedra STMicroelectronics en la Escuela de Ingeniería
Director Fundador, Foro de Compresión de Stanford
Universidad Stanford.

La puntuación de Weissman del programa es un algoritmo ficticio utilizado para verificar la eficiencia de la compresión. El creador del exitoso programa, Mike Judge , quería hacer que el programa fuera lo más real posible con el profesor Weissman junto con Vinith Misra, una estudiante para trabajar en este algoritmo.

Aunque la compresión sin pérdida es posible, pero solo después de arrojar algunas partes del archivo, por lo tanto, cuando realiza ingeniería inversa, el archivo original se reconstruye aproximadamente (lo que significa que la calidad se degrada como antes). Pero un algoritmo real sin pérdida debe recrear toda la información del archivo original, lo que creo que es imposible (por ahora) .

Por lo tanto, el algoritmo de compresión que se muestra en Silicon Valley no es posible.

¡Espero que esto ayude! 🙂

No hay forma de saber realmente sin hacer algunos diagnósticos. He hecho algunas búsquedas yo mismo y la puntuación de Weissman que usan … sí, no es una métrica legítima. ¿Es el Weissman Score una métrica real como se muestra en Silicon Valley? ¿Qué representa el puntaje? Seguramente se podría decir que el puntaje de compresión de 5. lo que sea x veces mejor que el 2.89 inicial, pero no tenemos una idea de lo que realmente es 2.89. No creo que alguna vez nos hayan dado algunos tamaños de archivo y otra información para trabajar. Entonces, sin saber qué es, o mejor aún, qué tan bien funciona realmente, realmente no sabemos si podemos igualar ese nivel de compresión. A partir de ahora, no creo que estemos en ese nivel de compresión solo debido a todas las exageraciones que dieron las personas en el auditorio en el programa cuando vieron la puntuación de 5. lo que sea. Sin embargo, eche un vistazo a esto: ¿Cuál es el archivo más comprimido de la historia? En porcentaje de disminución. Publique el tamaño original y el tamaño de salida. Incluya también el algoritmo / proceso utilizado. El usuario de Quora dijo esto en su respuesta:

Hay una bomba zip llamada 42.zip
El archivo tiene 42.374 bytes cuando está comprimido,
y 4.503.599.626.321.920 bytes (4,5 petabytes) cuando se descomprime

Enlace al archivo zip: Página en http://www.unforgettable.dk (contraseña: 42) Solo tenga cuidado de que su antivirus pueda volverse loco y absorba todos los recursos en su computadora

Entonces sí, hemos logrado ese nivel de compresión en ALGUNAS instancias. Incluso en el programa, solo vimos la puntuación de 5. lo que sea Weissman con un archivo de video en 3D que el juez da.

TL; DR: No sabemos porque el programa no nos dijo lo suficiente. Las bombas Zip son geniales, aunque no las descargues.

Aquí en Fast Company hay un artículo sobre 10 desarrolladores que recrearon el algoritmo de compresión ficticio Pied Piper durante la Hack Week de Dropbox en 2015.

El código es de código abierto y puede reducir el tamaño de los archivos JPEG y de video hasta en un 22%.

More Interesting

¿Alguien puede explicar la solución del problema LabelMaker de Hacker Cup de Facebook?

¿Qué tan rápido se puede crear un algoritmo?

¿Cuál es la relación entre el índice de una matriz y el tamaño de una matriz?

Cómo construir un secuenciador de ADN

¿Cuáles son las cosas adicionales además de DS y Algo serían buenas para la entrevista?

Cómo calcular coeficientes binomiales para números muy grandes

¿Cómo uso cualquier biblioteca en Java que implemente la selección de funciones del algoritmo RELEIFF?

¿Qué necesitas saber para aprender algoritmos? Probé los algoritmos gratuitos de Coursera y el curso de estructuras de datos de Princeton y me perdí por completo.

¿Está bien tomar referencias de otras soluciones mientras se resuelve la programación competitiva para un principiante?

¿Cuáles son los usos de diferentes algoritmos de clasificación como burbuja, selección, inserción, shell, fusión, montón, rápido, árbol, raíz, conteo y clasificación de cubetas en escenarios de la vida real?

¿Cuáles son las diferencias entre Algorithmia y Amazon Lambda?

¿Cuál es la aplicación práctica de un gráfico no ponderado?

¿Cómo justificamos la selección de un algoritmo de aprendizaje particular para la clasificación?

¿Es el algoritmo y la metodología para corregir automáticamente las palabras mal escritas en las consultas de búsqueda de Google una "salsa secreta" o está abierto?

¿Cómo se programan y hacen los bots del juego (creados por jugadores) para conectarse con el juego y controlarlo?