Added max entropy calculator

This commit is contained in:
2020-10-05 09:11:13 +02:00
parent b41b13589d
commit d3c98442a9

View File

@@ -4,38 +4,36 @@ import math
# Calculates the entropy of a given string
# Returns the entropy and an alphabet with the calculated probabilities
def calculateEntropy(input_string):
alphabet, alphabet_size, entropy = {}, 0, 0
alphabet, alphabet_size, entropy = {}, len(input_string), 0
for char in input_string:
if char in alphabet:
alphabet[char] += 1
else:
alphabet[char] = 1
alphabet_size += 1
for char in alphabet:
alphabet[char] = alphabet[char] / alphabet_size
entropy -= alphabet[char] * math.log(alphabet[char], 2)
return entropy, alphabet
max_entropy = - len(alphabet) * (1 / len(alphabet) * math.log(1 / len(alphabet), 2))
return entropy, alphabet, max_entropy
# Calculates the entropy of a given string
# Returns only the entropy in bits as this is the minimal function
def calculateEntropyMin(input_string):
alphabet, alphabet_size, entropy = {}, 0, 0
alphabet, alphabet_size, entropy = {}, len(input_string), 0
for char in input_string:
if char in alphabet:
alphabet[char] += 1
else:
alphabet[char] = 1
alphabet_size += 1
for char in alphabet:
i = alphabet[char] / alphabet_size
entropy -= i * math.log(i, 2)
return entropy