Um wieviel Prozent sollte man etwas komprimieren können



  • Hoi,

    Wir hatten heute die Hausaufgabe auf ein Programm zu schreiben womit man Dateien komprimieren kann. Als erstes möchte ich es erstmal alleine versuchen
    ohne fremde Beispiele durchzulesen.
    Meine Frage ist, um wieviel Prozent man Dateien heute so komprimieren kann?
    Bin ich gut wenn ichs um 50%,60%,70% komprimiere oder was ist so der standart ohne zu viel Aufwand.

    mdf



  • Das kann man so pauschal nicht beantworten. Das hängt stark vom Dateityp ab und letzten Endes natürlich auch vom Inhalt der Datei. Stell Dir doch einfach mal ein paar Dateien mit verschiedenen Typen zusammen und packe die mit zip oder so. Dann kriegste ne Schätzung für das was im Schnitt so machbar ist.

    Textdateien lassen sich extrem gut packen, Bilder etwa als jpg fast. Sind die Bilder als normale Bitmaps (bmp) abgespeichert hängt die erreichbare Kompression stark vom Bild ab, ist aber üblicherweise recht groß.



  • Datenkompression ist ein sehr anspruchsvolles Thema, wenn man das ganze theoretisch aufbereiten will. Mit einigen mathematischen Überlegungen kann man sogar Obergrenzen für den Kompressionsfaktor angeben - und die ganzen zip-Programme kommen da schon ziemlich dicht dran. Diese Obergrenze ist allerdings immer von den Eingangsdaten abhängig.

    Grundsätzlich gilt: Wenn eine Datei schon kompremiert ist, kann man sie nur schwer noch kleiner machen.

    Was für vorgaben habt ihr denn bekommen? Irgendwelche Algorithmen, die ihr benutzen sollt bzw. die ihr im Unterricht behandelt habt? Sollen beliebige Dateien kompremiert werden?

    Für spezielle Datentypen (z.b. Bilder, Musik) kann man noch eine ganze Menge mehr herausholen, dafür braucht es aber wieder eine ganze Menge Mathe. Hab über das Thema inzwischen zwei und eine halbe Vorlesung drüber gehört 🙂



  • Wieso nimmst du nicht einfach irgendein File (oder besser: ein paar Files), und zippst die? Dann siehste ja was ZIP daraus macht. Wenn du willst kannst du dann noch RAR und 7Zip probieren. Dann solltest du ne Vorstellung haben. Dann verwendest du einfach genau die Dateien für Tests mit deinem Compressor, und fertig.

    Ansonsten gibts hier den enwik8 corpus:

    http://prize.hutter1.net/

    Der ist 100 MB gross. ZIP macht da 33MB draus, der beste (auf diesen corpus spezialisierte) Compressor macht im Moment etwa 16,7MB draus.



  • Taurin schrieb:

    Mit einigen mathematischen Überlegungen kann man sogar Obergrenzen für den Kompressionsfaktor angeben

    Dazu muß man aber sicher einiges an Annahmen machen. So allgemein wie hier formuliert kriegt man erstmal garnix raus.



  • Jester schrieb:

    Dazu muß man aber sicher einiges an Annahmen machen. So allgemein wie hier formuliert kriegt man erstmal garnix raus.

    Ok, war von mir etwas schwabbelig formuliert. Auf der einen Seite kann man Einschränkungen für das Verfahren machen, auf der anderen Seite kann man sich Eigenschaften der Eingangsdaten (insb. Korrelation) zu nutze machen.
    Ich hab beim Schreiben an den Entropie-Begriff gedacht. Wenn du nur Codierungen zulässt, die jedes Zeichen des Eingangsalphabets einzelnd Codieren und du nur die statistische Verteilung des Eingangsalphabets zu nutze machst (also keine bedingten Wahrscheinlichkeiten), bildet die Entropie der Eingangsdaten eine obere Schranke für die Bitrate (mittlere Bitanzahl pro Symbol)



  • Äh. Untere Schranke würde ich sagen 🙂
    BTW zum Thema anspruchsvoll: die "guten alten Verfahren" ala LZW sind garnicht sehr anspruchsvoll. Huffman und arithmetic coding im übrigen auch nicht 🙂
    Die Implementierung ist bei beiden etwas heikel, vor allem wenn mans schnell UND richtig hinbekommen will, aber schwer zu behirnen sind die nicht.
    Andere Verfahren bzw. "Teilverfahren" mögen zugegebenermassen komplizierter sein.



  • Mathematisch ist nachgewiesen, dass jede beliebige Zahlensequenz im Nachkommabereich von pi vorhanden ist. Wenn du dies als Grundlage nimmst, brauchst du eigentlich nur einen Offset und eine Länge angeben.. Dann musst du noch nen PC finden, der dir das ausrechnen kann und keine 10 Millionen Jahre dazu braucht..
    Fragt sich, wie lang der Offset ist...



  • Das ist auch eine Möglichkeit - allerdings ist nicht gesagt, ob dieser Index eventuell größer wird als der Wert, den du eigentlich kodieren willst.



  • DocJunioR schrieb:

    Fragt sich, wie lang der Offset ist...

    das ist genau so effektiv wie eine wave-datei in ein bild umzuwandeln und als png zu speichern.



  • DocJunioR schrieb:

    Mathematisch ist nachgewiesen, dass jede beliebige Zahlensequenz im Nachkommabereich von pi vorhanden ist.

    Meines wissens ist nichtmal bekannt, ob jede Ziffer unendlich oft vorkommt. Und du willst gleich jede beliebige Sequenz drinhaben? -- Quelle bitte.



  • ich hab nie gesagt, dass es effektiv ist 😉 aber interessant wäre es schon mal..



  • Jester schrieb:

    Meines wissens ist nichtmal bekannt, ob jede Ziffer unendlich oft vorkommt.

    Im Binärsystem schon 😉

    BTW das ist doch ein Trollthread hier oder?



  • Komprimierer schrieb:

    Meine Frage ist, um wieviel Prozent man Dateien heute so komprimieren kann?

    In den nächsten Jahren wird man Bilder bis zu 96% komprimieren können



  • KennerDerZukunft schrieb:

    In den nächsten Jahren wird man Bilder bis zu 96% komprimieren können

    Ich finde, man kann es mit dem XML-Hype auch übertreiben ...



  • Bashar schrieb:

    KennerDerZukunft schrieb:

    In den nächsten Jahren wird man Bilder bis zu 96% komprimieren können

    Ich finde, man kann es mit dem XML-Hype auch übertreiben ...

    *looool* 😃



  • 👍 😃



  • Brilliant!

    👍 😃


Anmelden zum Antworten