Hallo Leute,
ich habe da eine Aufgabe, die die Entropie von Dateien berechnen soll. Hier mal die genaue Formulierung dessen was gemacht werden soll:
Ich komme da irgendwie nicht mehr Weiter. Ich weiß nicht, wie ich die Formel zur Berechnung der Entropie in Java umsetzen kann:
Mein Code sieht bisher wie folgt aus:
ich habe da eine Aufgabe, die die Entropie von Dateien berechnen soll. Hier mal die genaue Formulierung dessen was gemacht werden soll:
Schreiben Sie eine Anwendung, um den Informationsgehalt von Dateien zu messen.
Die Anwendung soll als Argument einen Namen für entweder eine Datei oder
ein Verzeichnis übernehmen. Handelt es sich um ein Verzeichnis, so werden im
weiteren alle Dateien in diesem Verzeichnis betrachtet. Berechnen Sie für jede
Datei die Entropie H. Betrachten Sie dabei jeweils Bytes als Einheit, d. h. der
Zeichenvorrat sind die 256 verschiedenen Bytes. Messen Sie die Häufigkeit der
einzelnen Bytes und berechnen daraus die Entropie. Testen Sie die Anwendung
für verschiedene Dateiarten:
- Text
- Bilder (Bitmap und JPEG)
- ausführbare Dateien (.exe)
Ich komme da irgendwie nicht mehr Weiter. Ich weiß nicht, wie ich die Formel zur Berechnung der Entropie in Java umsetzen kann:
He = log 1=p(X) = ¡log p(X)
Mein Code sieht bisher wie folgt aus:
Code:
mport java.io.*;
/**
* Beschreiben Sie hier die Klasse Entropie.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Entropie
{
// Definieren Sie ab hier die Klassenvariablen für Entropie
long[] zaehler;
// Definieren Sie ab hier die Objektvariablen für Entropie
// Definieren Sie ab hier die KOnstruktoren für Entropie
/**
* Konstruktor für Objekte der Klasse Entropie
*/
public Entropie()
{
// Objektvariable initialisieren
}
// Definieren Sie ab hier die Methoden für Entropie
void entropie()
{
int i;
try {
DataInputStream quelle = new DataInputStream( new FileInputStream( "test.dat" ) );
for (i=0;i<=256;i++);
zaehler = new long[256];
quelle.readUnsignedByte();
}
catch (EOFException e)
{
// Dateiende
System.exit(0);
}
catch (IOException e) {
// Fehler beim Lesen
System.out.println(e.getMessage());
}
/**
* Diese Methode leistet....
*
* @param Parameter...
* @return Rückgabewert...
*/
}
void readUnsignedByte()
{
double entropie;
}
}