¿Alguien de ustedes conoce un algoritmo de compresión sin pérdida, que produce salidas sin cabeza? Por ejemplo, ¿no almacena el árbol huffman utilizado para comprimirlo? No hablo de árboles huffman codificados, pero me gustaría saber si hay algún algoritmo que pueda comprimir y descomprimir la entrada sin almacenar algunos metadatos en su salida. ¿O esto es teóricamente imposible?¿Dónde puedo encontrar un algoritmo de compresión sin pérdida, que produce salidas sin encabezado?
¿Dónde puedo encontrar un algoritmo de compresión sin pérdida, que produce salidas sin encabezado?
Respuesta
Adaptive Huffman coding hace exactamente eso. De manera más general, el término adaptive coding se usa para describir entropy codes con esta propiedad. Algunos dictionary codes tienen esta propiedad también, p. run-length encoding (RLE) y Lempel-Ziv-Welch (LZW).
Run Length Encoding sería un ejemplo
Por supuesto, es posible. Entre otros, la familia de compresores LZ no necesita producir nada aparte de los datos comprimidos en sí, ya que el diccionario se construye en línea como progreso de compresión (o descompresión). Tienes muchas implementaciones de referencia para esos algoritmos de tipo LZ. Por ejemplo, LZMA, componente de 7zip.
lzo resortes a la mente. se usa en OpenVPN, con excelentes resultados
¿Por qué está buscando algoritmos de compresión con salida comprimida sin cabeza?
Quizás (a) tenga un sistema como telefonía bidireccional que necesita compresión/descompresión de transmisión de baja latencia. La categoría de codificación adaptativa de los algoritmos de compresión mencionados por Zach Scrivena y la familia LZ de los algoritmos dictionary compression mencionados por Diego Sevilla y Javier son excelentes para este tipo de aplicación. Implementaciones prácticas de estos algoritmos generalmente do tienen un byte o dos de metadatos al principio (haciéndolos inútiles para (b) aplicaciones), pero eso tiene poco o ningún efecto sobre la latencia.
Quizás (b) le interese principalmente la criptografía, y oye que comprimir antes de cifrar proporciona algunas propiedades de seguridad mejoradas, siempre que el texto comprimido no tenga el encabezado de metadatos fijo "cuna". Los algoritmos de encriptación modernos no son (hasta donde sabemos) vulnerables a tales "cunas", pero si usted es paranoico, podría estar interesado en "compresión bijectivo" (a, b, c, etc.). No es posible detectar errores en la transmisión (bits volteados, bits insertados, bits eliminados, etc.) cuando un receptor obtiene dicha salida comprimida (lo que hace que estos algoritmos no sean especialmente útiles para aplicaciones (a)).
Quizás (c) esté interesado en la compresión sin cabeza por alguna otra razón. Suena fascinante, ¿cuál es esa razón?
Quiere decir que los algoritmos "modernos * de encriptación * no son vulnerables", ¿verdad? –
@ PeterCordes: tienes razón. Fijo. –
- 1. ¿Dónde puedo encontrar el algoritmo diff?
- 2. JPEG sin pérdida: no se pueden encontrar imágenes de muestra, archivos DICOM
- 3. Sin memoria Problema de pérdida de memoria
- 4. ¿Hay una compresión con pérdida más rápida que JPEG?
- 5. ¿Cómo funciona la compresión de imagen sin pérdida de velocidad de página de Google?
- 6. ¿Dónde puedo descargar un instalador sin conexión de Cygwin?
- 7. ¿Forma y/o biblioteca de imágenes sin pérdida más pequeña?
- 8. Conversión de secuencia de imágenes a película sin pérdida
- 9. ./configure sin ver/encontrar archivos de encabezado boost
- 10. Algoritmo de división sin restaurar
- 11. jqGrid sin encabezado
- 12. Algoritmo para generación de laberinto sin callejones sin salida?
- 13. JTable sin encabezado
- 14. C#: buscando algoritmo de compresión PNG/biblioteca
- 15. ¿Dónde puedo encontrar GACUtil?
- 16. XDocument.Save() sin encabezado
- 17. Transformación sin pérdida de RGB a Y'CbCr
- 18. Rails Paperclip compresión de imagen en comparación con lo que Page Speed produce
- 19. Dónde encontrar el conversor de html to wiki "sin errores"
- 20. Necesito elegir un algoritmo de compresión
- 21. Un sueño en el hilo produce pérdida de memoria
- 22. Algoritmo de permutaciones sin repetición?
- 23. Algoritmo de muestreo sin reemplazo?
- 24. ¿dónde puedo encontrar un tutorial rápido neo4j?
- 25. ¿Dónde puedo obtener un archivo YUV sin procesar?
- 26. ¿Qué es un buen códec de video sin pérdida?
- 27. ¿Dónde puedo encontrar "j_security_check"?
- 28. ¿Cómo juntar 2 jpegs juntos sin pérdida sin decodificación usando un editor hexadecimal?
- 29. ¿Dónde puedo encontrar TableDiff.exe?
- 30. ¿Cómo puedo redireccionar en PHP sin errores de encabezado?
Incluso RLE requiere algún conocimiento de qué son los datos y cómo se codifica el RLE. El algoritmo de descompresión necesita saber si estaba contando bits, o bytes, colores o muestras de sonido, etc. –
Eso está codificado de forma rígida en el algoritmo de compresión/descompresión en sí mismo o en los encabezados. –
Sí, pero en general está codificado en el algoritmo, mientras que las tablas para la codificación huffman generalmente se almacenan con los datos comprimidos. –