I dati possono essere compressi con dimensioni inferiori al limite di compressione dei dati di Shannon?


17

Stavo leggendo degli algoritmi di compressione dei dati e il limite teorico per la compressione dei dati. Recentemente ho incontrato un metodo di compressione chiamato "Codifica di entropia combinatoria", l'idea principale di questo metodo è di codificare il file come i caratteri presentati nel file, le loro frequenze e l'indice di permutazione di questi caratteri rappresentato dal file.

Questi documenti possono aiutare a spiegare questo metodo:

https://arxiv.org/pdf/1703.08127

http://www-video.eecs.berkeley.edu/papers/vdai/dcc2003.pdf

https://www.thinkmind.org/download.php?articleid=ctrq_2014_2_10_70019

Tuttavia, nel primo documento ho letto che usando questo metodo potevano comprimere un po 'di testo a meno del limite di Shannon (Non consideravano lo spazio necessario per salvare la frequenza dei caratteri e lo spazio necessario per salvare il meta dati del file). Ci ho pensato e ho scoperto che questo metodo non sarà molto efficiente per file molto piccoli, ma d'altra parte potrebbe funzionare bene con file di grandi dimensioni. In realtà non capisco molto bene questo algoritmo o il limite di Shannon, so solo che è la somma della probabilità di ciascun carattere moltiplicata per del reciproco della probabilità.log2

Quindi ho alcune domande:

  1. Questo metodo di compressione comprime davvero i file a dimensioni inferiori al limite di Shannon?

  2. Esiste un algoritmo di compressione che comprime i file al di sotto del limite di Shannon (la risposta a questa domanda per quanto ne so è no)?

  3. Può mai esistere un metodo di compressione che comprime file di dimensioni inferiori al limite di Shannon?

  4. Se la codifica combinatoria comprime davvero i file oltre il limite di Shannon, non è possibile comprimere il file più e più volte fino a raggiungere le dimensioni desiderate?


26
Shannon ha dimostrato che non puoi comprimere al di sotto del limite di Shannon.
Yuval Filmus,

11
Puoi andare al di sotto del limite di Shannon con una compressione con perdita . Shannon ha solo mostrato che non puoi comprimere al di sotto del limite senza perdere informazioni . @YuvalFilmus. Ad esempio, su un'immagine RGB, è possibile eliminare i bit di ordine inferiore dei componenti R, G, B.
smci,


6
@smci Questo è in gran parte irrilevante in qualsiasi discussione sulla teoria della compressione. Ovviamente posso buttare via ogni bit e chiamarlo compressione.
pipe

1
Diciamo che ho un file di grandi dimensioni come un'immagine. Ora nel modello ho mappato l'intera immagine su "1" ha..Ho compresso al di sotto del limite di Shannon poiché l'intera immagine è compressa su "1" ......
Pieter B

Risposte:


34

In realtà non capisco molto bene questo algoritmo o il limite di Shannon, so solo che è la somma della probabilità di ciascun personaggio moltiplicata per log2 del reciproco della probabilità.

Qui sta il nocciolo. Il limite di Shannon non è una proprietà universale di una stringa di testo. È la proprietà di una stringa di testo più un modello che fornisce probabilità (eventualmente dipendenti dal contesto) di simboli. Ci dice quanto bene quel modello potrebbe comprimere il testo, supponendo che il modello sia accurato .

Se usi un modello per calcolare il limite di Shannon e poi un modello diverso da comprimere, se il secondo modello è più preciso puoi battere il limite di Shannon originale che avevi calcolato, ma non è rilevante.


4
Per fare un esempio pratico, se sai che i tuoi dati consistono in una singola lettera ripetuta N volte, puoi ottenere tassi di compressione arbitrariamente grandi (cioè passando da 10 miliardi 'a' a una tupla ('a', 10000000))
Ant

12

È banalmente semplice dimostrare che è possibile comprimere al di sotto del limite di Shannon: prendere un compressore cheat che ha un sacco di file comuni assegnati ai token. Detti file sono memorizzati come quei token. (Ovviamente, il compressore deve essere molto grande o disegnare su una libreria molto grande.)

Il compressore sarà intrinsecamente meno efficiente nel gestire qualsiasi file che non si trova nella sua libreria, poiché deve in qualche modo distinguere un token da una normale compressione.

Quello che non puoi fare è avere un compressore che superi il limite di Shannon su tutti i file .


11

1/21/31/6plog2(1/p)

Ma se applichi un altro modello, otterrai un'altra sequenza di probabilità. Perché la lettera "u" è piuttosto rara, quindi la sua probabilità sull'intero testo può essere del 3%, ed è la probabilità che devi assegnare a questa lettera usando un modello Markov ordine-0 .

Ma nei testi inglesi, dopo "q" di solito arriva una "u", quindi usando un modello di ordine 1, è possibile assegnare una probabilità molto più elevata a "u" dopo "q", migliorando così il rapporto di compressione.

Inoltre, alcuni modelli generano meno simboli di quanti ce ne siano di input, poiché LZ77 sostituisce le ripetizioni di testo con riferimenti a ritroso, quindi "abababab" si trasforma in "ab [2,8]".

Quando qualcuno parla dell'entropia di Shannon di alcuni dati piuttosto che dei dati compressi da un particolare modello, di solito indica l'entropia di Shannon prodotta da un modello di ordine 0, ovvero assegnando a ciascun simbolo la sua probabilità sull'intero testo. Ovviamente, puoi battere questo margine applicando un modello più sofisticato ai dati.


3

Un'altra possibile interpretazione del testo: l'algoritmo di compressione dato ti darà una migliore compressione di alcuni testi e una compressione peggiore su altri. Tuttavia, gli utenti in genere si preoccupano di alcuni tipi di file (pagine HTML in inglese, codice macchina 80386) più di altri (tabelle di numeri veramente casuali, rumore insignificante selezionato per ridurre al minimo la ripetizione). Qualsiasi schema di compressione comprometterà la capacità di comprimere i dati del mondo reale con l'essere peggio che inutile nel comprimere altri tipi di stringhe.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.