StringTools
Entropy
compute the Entropy of a string
Calling Sequence
Parameters
Description
Examples
Entropy( s )
s
-
Maple string
The Entropy(s) command returns the Shannon entropy of the string s. A floating-point number, the entropy of the string, is returned.
Shannon's entropy is defined as -add( P( ch ) * log[ 2 ]( P( ch ) ), ch = Support( s ) ), where Pch=CountCharacterOccurrencess,chlengths. It is a measure of the information content of the string, and can be interpreted as the number of bits required to encode each character of the string given perfect compression. The entropy is maximal when each character is equally likely. For arbitrary non-null characters, this maximal value is log2255=7.99435.
(The null byte, with code point 0, cannot appear in a Maple string. If all 256 single byte code points could appear, then the maximal entropy would be log2256=8, which is the number of bits per byte).
Note that the entropy is computed as a floating-point number, at hardware (double) precision.
All of the StringTools package commands treat strings as (null-terminated) sequences of 8-bit (ASCII) characters. Thus, there is no support for multibyte character encodings, such as unicode encodings.
useStringToolsinEntropyMathematicsend use
3.09579525500093355
withStringTools:
Entropyaaaaaaaaaaaaaaaaaaaaaaaaaa
−0.
EntropyaaaaaaaaaaaaaaaaaaaaaaaaaaB
0.228538143953528006
Entropy( Iota( 1, 255 ) );
7.99435343685886934
EntropyRandom1000000
7.99417106407216149
evalflog2255
7.994353436
EntropyRandom1000000,lower
4.70042263084046397
evalflog226
4.700439718
EntropyRepeatab,100
1.
EntropyRepeatabc,100
1.58496250072115585
EntropyRepeatabcde,100
2.32192809488736218
EntropyRepeatRandom10,10000
3.32192809488736218
The following steps illustrate the definition of Entropy.
s≔Random30,lower
s≔rbygsggdjijjtiqelzxehfnojeorwr
occ≔seqCountCharacterOccurrencess,ch,ch=Supports
occ≔1,1,3,1,3,1,2,4,1,1,2,1,3,1,1,1,1,1,1
L≔map`/`,occ,lengths
L≔130,130,110,130,110,130,115,215,130,130,115,130,110,130,130,130,130,130,130
U≔mapp↦−evalfp⋅log2p,L
U≔0.1635630199,0.1635630199,0.3321928095,0.1635630199,0.3321928095,0.1635630199,0.2604593730,0.3875854127,0.1635630199,0.1635630199,0.2604593730,0.1635630199,0.3321928095,0.1635630199,0.1635630199,0.1635630199,0.1635630199,0.1635630199,0.1635630199
convertU,`+`
4.031401848
Entropys
4.03140184539217117
See Also
add
convert
evalf
length
log
map
seq
string
StringTools[CountCharacterOccurrences]
StringTools[Iota]
StringTools[Random]
StringTools[Repeat]
StringTools[Support]
with
Download Help Document