Sulla mia grande ricerca per la compressione / decompressione di file con un'implementazione Java della codifica di Huffman ( link ) per un incarico scolastico , Ora sono al punto di creare un elenco di codici prefisso . Tali codici vengono utilizzati durante la decompressione di un file. Fondamentalmente, il codice è composto da zero e uno, che sono usati per seguire un percorso in un albero di Huffman (a sinistra oa destra) per, in definitiva, trovare un byte.
In questa immagine di Wikipedia, per raggiungere il carattere m il codice prefisso sarebbe 0111

L'ideaèchequandocomprimiilfile,inpraticaconvertituttiibytedelfileinprefissi(tendonoadesserepiùpiccolidi8bit,quindic'èunguadagno).
Quindiognivoltacheilcaratteremappareinunfile(cheinbinarioèinrealtà1101101),saràsostituitoda0111(seabbiamousatol'alberosopra).
Pertanto,1101101110110111011011101101diventa0111011101110111nelfilecompresso.
Stobeneconquello.Macosasuccedesesuccede:
- Nelfiledacomprimereesisteunsolobyteunivoco,adesempio
1101101. - Cisono1000ditalebyte.
Tecnicamente,ilcodiceprefissoditalebytesarebbe...nessuno,perchénonc'èalcunpercorsodaseguire,giusto?Vogliodire,esistecomunqueunsolouniquebyte,quindil'alberohaunsolonodo.
Pertanto,seilcodiceprefissoènessuno,nonsareiingradodiscrivereilcodiceprefissonelfilecompresso,perché,beh,nonc'ènientedascrivere.
Cheportaquestoproblema:comecomprimere/decomprimeretalefileseèimpossibilescrivereuncodiceprefissodurantelacompressione?(usandolacodificadiHuffman,acausadelleregolediassegnazionedellascuola)
Questotutorialsembraspiegareunpo'meglioicodiciprefisso: