Entropía de Shannon

"El hombre más importante del que probablemente no hayas oído hablar jamás."



En el ámbito de la teoría de la información la entropía, también llamada entropía de la información y entropía de Shannon (en honor a Claude E. Shannon), mide la incertidumbre de una fuente de información.

La entropía también se puede considerar como la cantidad de información promedio que contienen los símbolos usados. Los símbolos con menor probabilidad son los que aportan mayor información; por ejemplo, si se considera como sistema de símbolos a las palabras en un texto, palabras frecuentes como «que», «el», «a» aportan poca información, mientras que palabras menos frecuentes como «corren», «niño», «perro» aportan más información. Si de un texto dado borramos un «que», seguramente no afectará a la comprensión y se sobreentenderá, no siendo así si borramos la palabra «niño» del mismo texto original. Cuando todos los símbolos son igualmente probables (distribución de probabilidad plana), todos aportan información relevante y la entropía es máxima.

El concepto entropía es usado en termodinámica, mecánica estadística y teoría de la información. En todos los casos la entropía se concibe como una «medida del desorden» o la «peculiaridad de ciertas combinaciones». La entropía puede ser considerada como una medida de la incertidumbre y de la información necesarias para, en cualquier proceso, poder acotar, reducir o eliminar la incertidumbre. Resulta que el concepto de información y el de entropía están básicamente relacionados entre sí, aunque se necesitaron años de desarrollo de la mecánica estadística y de la teoría de la información antes de que esto fuera percibido.

Claude Elwood Shannon (30 de abril de 1916 – 24 de febrero de 2001) fue un matemático, ingeniero eléctrico y criptógrafo estadounidense recordado como «el padre de la teoría de la información».

Shannon es reconocido por haber fundado el campo de la teoría de la información con la publicación Una teoría matemática de la comunicación, que supuso un hito en 1948. Es quizás igualmente conocido por haber sentado las bases de la teoría del diseño del ordenador digital y el circuito digital en 1937. Con 21 años, mientras realizaba su maestría en el Massachusetts Institute of Technology (MIT), demostró con su tesis, que las aplicaciones electrónicas de álgebra booleana podrían construir cualquier relación lógico-numérica. Shannon contribuyó asimismo al campo del criptoanálisis para la defensa de Estados Unidos durante la Segunda Guerra Mundial, con trabajos sobre el descifrado de códigos y la seguridad en las telecomunicaciones.

Claude Elwod Shannon definió una forma de medir la cantidad de información que contiene una variable aleatoria, es lo que se conoce como Entropía de Shannon y su formula es la siguiente:


Esta obra está bajo una: Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional. Autor: Ondiz Zarraga
 https://ondahostil.wordpress.com/2015/04/16/lo-que-he-aprendido-entropia-de-shannon/




                       The Man Who Turned Paper Into Pixels from Adam Westbrook on Vimeo.


La entropía definida por Shannon , referida a la teoría de la información, hace referencia a la cantidad media de información que contiene una variable aleatoria (psicológica) o, en particular, una fuente transmisión binaria. La información que aporta un determinado valor, xi, de una variable aleatoria discreta X, se define como:

I(xi) = log2(1/p(xi))

cuya unidad es el bit si se utiliza el logaritmo en base 2 (por ejemplo, cuando se emplea el logaritmo neperiano o natural se habla de nats).

La entropía o información media de la variable aleatoria discreta, X, se determina como la información media del conjunto de valores discretos que puede adoptar (también medida en bits):

H(x) = Σip(xi) •log2(1/p(xi))



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace EntropíaShannon_I
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        public static double logaritmo(double num)
        {
            return Math.Log(num) / Math.Log(2);
        }
        private void button2_Click(object sender, EventArgs e)
        {

            string entrada = textBox1.Text;
            double entropia = 0;
            Dictionary<char, double> tabla = new Dictionary<char, double>();


Números Catalán del Triangulo de Pascal





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CatalanNumberTrianguloPascal_I
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int limite;

        private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int n = limite;

            limite = int.Parse(textBox1.Text);

            List<int> t = new List<int>() { 0, 1 };

            for (int i = 1; i <= n; i++)
            {
                for (var j = i; j > 1; j--) t[j] += t[j - 1];

                t.Add(t[i]);

                for (var j = i + 1; j > 1; j--) t[j] += t[j - 1];
                {
                    listBox1.Items.Add((((i == 1) ? "                  " : "                  ") + (t[i + 1] - t[i])) + "\r\n");
                }

            }

        }
    }
}


Número de Munchausen




Un número de Munchausen (o Münchhausen) es un número natural n el cual la suma de sus dígitos (en base 10), elevados a la misma potencia de ellos mismos es el mismo número es decir n. En otras palabras, si el número tiene la representación decimal:




Entonces:





El término fue acuñado por el ingeniero de software y matemático holandés Daan van Berkel en 2009. El nombre se debe a que cada dígito está "elevado" por si mismo, esto evoca la historia de Barón Munchausen que se elevo a si mismo hacia arriba jalando su propia coleta. Los números narcisistas siguen una regla similar, pero en el caso de los números narcisistas la potencia de los dígitos es fija, siendo elevados a la potencia del número de dígitos en el número. Esto es una explicación adicional para el nombre, dado que el Barón Münchhausen era un conocido narcisista.

Pensando rápido, posiblemente encontréis el primer número Münchhausen, el 1. Pero si seguís probando, estaréis mucho tiempo hasta encontrar el siguiente número Münchhausen. De hecho, si no os valéis de un ordenador, posiblemente pasarían días y mucho aburrimiento hasta que llegaseis al número 3435 (siempre hablando en base 10).

Estos números en muchas ocasiones se considera un grupo dentro de los números narcisistas, agrupándolos con los números de Armstrong (los que normalmente son llamados narcisistas), los números de Dudeney o los números de Friedman.

Un ejemplo es:







using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MunchausenForms_I
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int limite;

        private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

Reloj / progressBar / trackBar




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace Reloj_I
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            progressBar1.Minimum = 0;
            progressBar1.Maximum = 23;
            progressBar1.Style = ProgressBarStyle.Continuous;
            progressBar2.Minimum = 0;
            progressBar2.Maximum = 59;
            progressBar2.Style = ProgressBarStyle.Continuous;
            progressBar3.Minimum = 0;
            progressBar3.Maximum = 59;
            progressBar3.Style = ProgressBarStyle.Continuous;
            trackBar1.Minimum = 0;
            trackBar1.Maximum = 23;
            trackBar2.Minimum = 0;
            trackBar2.Maximum = 59;
            trackBar3.Minimum = 0;
            trackBar3.Maximum = 59;
            timer1.Interval = 10;
            timer1.Enabled = true;
        }