/ / L'algoritmo di compressione può "apprendere" sul set di file e comprimerli meglio? - compressione

L'algoritmo di compressione può "apprendere" sul set di file e comprimerli meglio? - compressione

Esiste una libreria di compressione che supporta "l'apprendimento" su alcuni set di file o l'utilizzo di alcuni file come base per la compressione di altri file?

Questo può essere utile se vogliamo comprimere molti file simili mantenendo un accesso rapido a ciascuno di essi.

Qualcosa di simile a:

# compression:
compressor.learn_on_data(standard_data);
compressor.compresss(data, data_compressed);

# decompression:
decompressor.learn_on_data(the_same_standard_data);
decompressor.decompress(data_compressed, data);

Come si chiama (penso che "deltala compressione "è un po 'altra cosa)? Ci sono implementazioni di questo nelle librerie di compressione popolari? Mi aspetto che funzioni, ad esempio, pre-compilando dizionari con dati standard.

risposte:

2 per risposta № 1

Sì funziona. Sebbene ci siano molte tecniche per questo, la più semplice che trovi è chiamata "pre-riempimento del dizionario". In breve, stai fornendo un file, da cui l'ultima parte è "digerita" (fino alla dimensione massima della finestra, che può essere ovunque da 4K a 64 MB a seconda dell'algoritmo) e può quindi essere utilizzato per comprimere meglio il prossimo file.

In pratica, è simile alla "modalità solida",quando all'interno di un archivio tutti i file di tipo identico sono raggruppati insieme, in modo che il file precedente possa essere usato come dizionario per il prossimo, il che migliora il rapporto di compressione.

Lato negativo: lo stesso dizionario deve essere fornito sia per il compressore che per il decompressore.