Teorema di Shannon per il campionamento
"San Valentino!"
Avrei in base alle frequenze 7 caratteri che compaiono una volta, un carattere che compare due volte, ed uno che compare 3 volte, quindi:
[tex]E=-[7*\frac{1}{14}\log_2(\frac{1}{14})+\frac{1}{7}\log_2(\frac{1}{7})+\frac{3}{14}\log_2(\frac{3}{14})][/tex]
per i primi due non passo alla base 10, orientativamente mi calcolo quando valgono, cambio di base solo per l' ultimo:
[tex]E=-[\frac{21}{14}-\frac{2}{7}-\frac{0.2}{0.3}]=3[/tex]
Quindi alla fine avrei il numero minimo di bit uguale a 42, però secondo uno script mi risulta 47, come faccio a sapere come arrotondare?
Avrei in base alle frequenze 7 caratteri che compaiono una volta, un carattere che compare due volte, ed uno che compare 3 volte, quindi:
[tex]E=-[7*\frac{1}{14}\log_2(\frac{1}{14})+\frac{1}{7}\log_2(\frac{1}{7})+\frac{3}{14}\log_2(\frac{3}{14})][/tex]
per i primi due non passo alla base 10, orientativamente mi calcolo quando valgono, cambio di base solo per l' ultimo:
[tex]E=-[\frac{21}{14}-\frac{2}{7}-\frac{0.2}{0.3}]=3[/tex]
Quindi alla fine avrei il numero minimo di bit uguale a 42, però secondo uno script mi risulta 47, come faccio a sapere come arrotondare?
Risposte
Le frequenze sono diverse, 9 caratteri compaiono una volta ('S', 'V', spazio, 'l', 'e', 't', 'i', 'o', '!') poi 'a' compare due volte e 'n' tre volte. Le probabilità da assumere sono quindi 1/14 (nove volte), 1/7 (una volta), 3/14 (una volta).
47 bit non può essere... se calcoli i bit necessari per una stringa di 14 caratteri, deve essere un multiplo di 14.
A me torna $H(X)=3.32486$ circa, quindi numero bit per carattere 4, quindi 52 bit. Ovviamente potrei aver sbagliato a calcolare, magari riprova.
47 bit non può essere... se calcoli i bit necessari per una stringa di 14 caratteri, deve essere un multiplo di 14.
A me torna $H(X)=3.32486$ circa, quindi numero bit per carattere 4, quindi 52 bit. Ovviamente potrei aver sbagliato a calcolare, magari riprova.
Hai ragione ma io non riesco a fare bene i conti è allucinante mi aiuteresti che ne ho davvero bisogno?
[tex]-[\frac{9}{4}(\frac{\log(\frac{1}{14})}{\log(2)}}+\frac{1}{7}(\frac{\log(\frac{1}{7})}{\log(2)}}+\frac{3}{14}(\frac{\log(\frac{3}{14})}{\log(2)}}][/tex]
Allora avrei arrotondando a due cifre decimali e cambiando nella base 10:
[tex]-[-2.25*\frac{-0.07}{-0.30}-0.14*\frac{0.14}{0.30}-0.21*\frac{-0.21}{0.30}][/tex]
Alla fine però ottengo [tex]0.74[/tex]
Mi faresti capire cosa non va?
Grazie.
[tex]-[\frac{9}{4}(\frac{\log(\frac{1}{14})}{\log(2)}}+\frac{1}{7}(\frac{\log(\frac{1}{7})}{\log(2)}}+\frac{3}{14}(\frac{\log(\frac{3}{14})}{\log(2)}}][/tex]
Allora avrei arrotondando a due cifre decimali e cambiando nella base 10:
[tex]-[-2.25*\frac{-0.07}{-0.30}-0.14*\frac{0.14}{0.30}-0.21*\frac{-0.21}{0.30}][/tex]
Alla fine però ottengo [tex]0.74[/tex]
Mi faresti capire cosa non va?
Grazie.
Io semplificherei un po' di più, semplicemente usando le proprietà dei logaritmi, prima di calcolare/arrotondare; hai 1/14 (nove volte), 1/7 (una volta), 3/14 (una volta).
$H(X)=-[9*(1/14)*(log(1/14)/log(2)) + 1*(1/7)*(log(1/7)/log(2)) + 1*(3/14)*(log(3/14)/log(2))]$
Semplifico:
$=-[ (-9*log(14) - 2*log(7) - 3*log(14)) / (14*log(2)) ]$
$=-[ (-12*log(14) - 2*log(7)) / (14*log(2)) ]$
volendo si può continuare, io mi fermo e
$=-[ (-12*2.639 -2*1.946)/(14*0.693)]=~3.665$ che conferma il 4 da me calcolato prima.
Ho fatto sicuramente almeno un errore, visto che i risultati che ho ottenuto sono diversi di qualche cifra decimale, ma fai te le riprove. Dal canto mio, scommetto 10 euro su 4 bit/cifra
$H(X)=-[9*(1/14)*(log(1/14)/log(2)) + 1*(1/7)*(log(1/7)/log(2)) + 1*(3/14)*(log(3/14)/log(2))]$
Semplifico:
$=-[ (-9*log(14) - 2*log(7) - 3*log(14)) / (14*log(2)) ]$
$=-[ (-12*log(14) - 2*log(7)) / (14*log(2)) ]$
volendo si può continuare, io mi fermo e
$=-[ (-12*2.639 -2*1.946)/(14*0.693)]=~3.665$ che conferma il 4 da me calcolato prima.
Ho fatto sicuramente almeno un errore, visto che i risultati che ho ottenuto sono diversi di qualche cifra decimale, ma fai te le riprove. Dal canto mio, scommetto 10 euro su 4 bit/cifra

Sono riuscito a calcolarlo sbagliavo ad usare la base, il risultato corretto è 47,
Ma come fa ad essere 47 se deve essere un multiplo di 14?!? Allora non ho capito cosa cerchi di calcolare.