Comment éviter d'avoir à stocker des informations supplémentaires sur le rembourrage (pour l'alignement de la taille des octets) avec le codage de Huffman

cs.stackexchange https://cs.stackexchange.com/questions/100159

  •  05-11-2019
  •  | 
  •  

Question

Lors du stockage du flux de bits Huffman codé en octets, en général, soit

  1. le dernier octet est rembourré ou
  2. Un pseudo symbole de fin de fichier est utilisé

Dans le premier cas, le nombre de bits rembourrés doit être stocké quelque part, nécessitant 3 autres bits. Dans ce dernier, vous perdrez une certaine efficacité en raison du pseudo symbole supplémentaire.

Alors, comment puis-je éviter le coût supplémentaire d'un pseudo symbole, et éviter également la nécessité de stocker / transmettre des bits supplémentaires pour contenir le nombre de bits de pad?


NB, d'une part, je suis intéressé à comprimer les chaînes courtes, donc économiser 3 bits en moyenne peut raser environ 1% environ des données.

Mais plus important encore, se débarrasser de la nécessité d'envoyer les informations de rembourrage (qui n'est connue qu'après avoir compressé toute la chaîne) avant de Les données codées signifient que je peux plus facilement effectuer l'algorithme d'une manière en streaming. Ce n'est pas vraiment nécessaire pour les chaînes courtes, où tout peut être gardé en mémoire, mais parfois mes cordes deviennent beaucoup plus longtemps, et je ne veux pas avoir à garder cela en mémoire (étant donné qu'il y a des centaines d'encodages simultanés en cours ).

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top