Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C#] Entropia e Informazione

    Buonasera...

    Ho preparato per la tesina un bel programma che comprime i dati, e adesso (sinceramente un po' in ritardo) ho incominciato a pensare che fosse meglio anche sviluppare una parte teorica che riguardasse l'informazione e l'entropia. Premetto che nn ho ancora capito bene la differenza tra entropia e informazione (o autoinformazione), e già che ci sono vi chiedo se sapreste spiegarmelo in parole semplici...

    Inoltre mi chiedevo se fosse giusto questo codice che ho scritto per calcolare l'entropia di una sorgente (supposta senza memoria, anche se in realtà lo è perchè il mio input può essere un file di testo, cioè ogni simbolo dipende dal precedente):

    Codice PHP:
    Hashtable h = new Hashtable();
                
    string s //sorgente
                
    for (int i 0s.Lengthi++)
                {
                    if (
    h.ContainsKey(s[i]))
                        
    h[s[i]] = (double)h[s[i]] + 1;
                    else
                        
    h.Add(s[i], 1.0);
                }
                
    double sum 0;
                for (
    char c =(char)0<= (char)255c++)
                {
                    if (
    h.ContainsKey(c))
                        
    sum += ((double)h[c] / (double)s.Length)*(-Math.Log((double)h[c] / (double)s.Length2)) ;
                }
                
    MessageBox.Show("L'entropia vale: " sum); 

    grazie a tutti
    Programmazione .NET
    http://www.samueletosatto.tk

  2. #2

  3. #3
    Grazie, molto simpatico il primo link...

    Ok, ora ho capito meglio il concetto di entropia, grazie al tuo link, sinceramente però ho capito l'esatto significato con:

    http://pil.phys.uniroma1.it/~baronka...ea/node17.html

    L'entropia è la quantità di bit necessaria a rappresentare mediamente un carattere del testo.
    Ad esempio, noi usiamo rappresentare in un file di testo ogni carattere con un byte poichè
    Log(1/P) = 8bit (la probabilità di un byte è 1/256, il logaritmo è in base 2). Ma questo è un calcolo errato, perchè i byte in un file di testo non sono equiprobabili: usiamo solo le lettere dell'alfabeto e alcuni caratteri di punteggiatura spazi e invii... e tra questi, inoltre usiamo con maggior frequenza vocali e spazi piuttosto delole q e delle z che capitano con meno frequenza.

    Essendo l'entropia la media dell'autoinformazione associata a un carattere, scopriamo a quanti bit mediamente servono per rappresentare un carattere, moltiplicando per il numero di caratteri l'entropia, possiamo ricavare il numero di bit che servono pre rappresentare il testo ( che al massimo potranno essere il numero di bit utilizati realmente)... dividendo per otto questo risultato scopriamo quanti byte sono necessari per rappresentare il testo...

    Calcolando questo risultato, possiamo sapere in anticipo quanto comprimerà un file la compressione di Huffman

    Programmazione .NET
    http://www.samueletosatto.tk

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.