Entropia di Shannon di 0,922, 3 valori distinti


14

Data una stringa di valori , l'entropia di Shannon nella base di log  arriva a . Da quanto ho capito, nella base  l'entropia di Shannon arrotondata per eccesso è il numero minimo di bit in binario per rappresentare un singolo dei valori.AAAAAAAABC20.9222

Tratto dall'introduzione su questa pagina di Wikipedia:

https://en.wikipedia.org/wiki/Entropy_%28information_theory%29

Quindi, come possono essere rappresentati tre valori da un bit?  potrebbe essere  ,A1B  potrebbe essere 0 ; ma come hai potuto rappresentare C ?

Grazie in anticipo.

Risposte:


16

L'entropia che hai calcolato non è in realtà per la stringa specifica ma, piuttosto, per una fonte casuale di simboli che genera A con probabilità  810 eBCcon probabilità 110 ciascuno, senza correlazione tra simboli successivi. L'entropia calcolata per questa distribuzione,0.922significa che non puoi rappresentare stringhe generate da questa distribuzione usandoin mediameno di0.922bit per carattere.

Potrebbe essere abbastanza difficile sviluppare un codice che raggiungerà questo tasso. * Ad esempio, la codifica di Huffman assegnerebbe i codici 0 , 1011 a A , BC , rispettivamente, per una media di 1.2  bit per carattere. È abbastanza lontano dall'entropia, anche se ancora molto meglio della codifica ingenua di due bit per personaggio. Qualsiasi tentativo di una migliore codifica probabilmente sfruttare il fatto che anche una corsa di dieci consecutivi A è più probabile s (probabilità 0.107 ) di una singola  B .


* Si scopre che non è difficile avvicinarsi quanto vuoi - vedi le altre risposte!


18

Ecco una codifica concreta che può rappresentare ogni simbolo in media in meno di 1 bit:

Innanzitutto, dividere la stringa di input in coppie di caratteri successivi (ad esempio AAAAAAAABC diventa AA | AA | AA | AA | BC). Quindi codifica AA come 0, AB come 100, AC come 101, BA come 110, CA come 1110, BB come 111100, BC come 111101, CB come 111110, CC come 111111. Non ho detto cosa succede se c'è uno strano numero di simboli, ma puoi semplicemente codificare l'ultimo simbolo usando una codifica arbitraria, non importa davvero quando l'input è lungo.

Questo è un codice Huffman per la distribuzione di coppie indipendenti di simboli e corrisponde alla scelta di n=2 nella risposta di Yuval. n più grande porterebbe a codici ancora migliori (avvicinandosi all'entropia di Shannon nel limite, come ha detto).

Il numero medio di bit per coppia di simboli per la codifica precedente è

8108101+38101103+1108104+41101106=1.92
ovvero1.92/2=0.96bit per simbolo, non molto lontano dall'entropia di Shannon in realtà per una codifica così semplice.


13

Lasciate che D sia la seguente distribuzione su {A,B,C} : se XD poi Pr[X=A]=4/5 e Pr[X=B]=Pr[X=C]=1/10 .

Per ogni n possiamo costruire codici prefisso Cn:{A,B,C}n{0,1} tale che

limnEX1,,XnD[Cn(X1,,Xn)]n=H(D).

In parole, se codifichiamo un gran numero di campioni indipendenti da D , allora in media abbiamo bisogno di H(D)0.922 bit per campione. Intuitivamente, la ragione per cui possiamo fare a meno di un bit è che ogni singolo campione è molto probabile che sia A .

Questo è il vero significato di entropia e mostra che calcolare "entropia" di una stringa A8BC è un esercizio piuttosto inutile.

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.