Entropia. X36022


Statement
 

pdf   zip   main.py

Feu la funció entropia(V) tal que, donat un vector V, que conté nombres naturals, en torni l’entropia de Shannon.

L’entropia de Shannon per a un conjunt 𝒳\mathcal{X} es calcula amb la fórmula:

H(X)=x𝒳p(x)logbp(x).\begin{equation} H(X) = -\sum_{x \in \mathcal{X}} p(x) \log_b p(x). \end{equation}

En el nostre cas, substitïm la probabilitat p(x)p(x) d’un element x𝒳x \in \mathcal{X} per la freqüència dins del vector v. D’aquesta manera, la fórmula que cal calcular és:

H(X)=x1:Nfreq(x,v)Nlog2(freq(x,v)N).\begin{equation} H(X) = -\sum_{x \in 1:N} \frac{freq(x,v)}{N} \log_2 (\frac{freq(x,v)}{N}). \end{equation}

on freq(x,v)freq(x,v) és la freqüència del nombre x al vector V.

Per a calcular el logaritme en base 2 en python podeu fer servir la funció math.log2(x). Abans, però, caldrà que afegiu import math a la vostra solució.

Entrada

Un vector V de naturals.

Sortida

L’entropia de Shannon de V.

Public test cases
  • Input

    1 2 3 4
    
    

    Output

    2.0
    
  • Input

    1 1 1 1 4 4 5 5
    
    

    Output

    1.5
    
  • Information
    Author
    Jaume Baixeries
    Language
    Catalan
    Official solutions
    Python
    User solutions
    Python