also... haltet euch fest, das kann jetzt länger werden.
bei den handelsüblichen programmen zur datenkomprimierung werden verschiedene algorithmen benutzt, die eine verlustfreie verringerung der daten möglich machen. die beiden wichtigsten davon sind wohl die sogenannte
lauflängencodierung (auch run-length-encoding oder rle) und der
huffman-algorithmus, der von der gleichnamigen person entworfen wurde.
die lauflängencodierung findet z.b. bei gif-dateien verwendung, und wurde auch schon von neurodaemon angeschnitten. dabei werden sich wiederholende muster von zeichen zusammengefasst und als summe interpretiert. schliesslich verbraucht die information "9xA" weniger speicher als "AAAAAAAAA", aber der inhalt ist der gleiche. wenn man das ganze erweitert, kann man auch wiederholte muster erzeugen, wodurch die komprimierungsrate meistens etwas schwindet, beispielsweise ist "2xABCD" gleichwertig mit "ABCDABCD", aber nicht mehr so kurz wie das erste beispiel.
als zweites hatte ich den huffman-algorithmus angesprochen. der bedient sich der relativen häufigkeit von bestimmten zeichen im gesamten text, und komprimiert danach. das hört sich zuerst vielleicht ziemlich konfus an, aber ist sehr logisch. wenn man mal von normalen buchstaben ablässt, und sich den text auf binärer ebene vorstellt, wird deutlich, dass jedes zeichen aus einer achtstelligen folge von einsen und nullen besteht.
nach dem huffman-algorithmus wird jedem zeichen ein eindeutiger code zugeordnet, der aus einsen und nullen besteht - das häufigste zeichen kriegt dabei eine einfache 1 zugewiesen und jedes vorkommen dieses zeichens im gesamten text wird durch ein achtel-byte (also ein achtel seiner ursprünglichen grösse) ersetzt.
um die informationen allerdings verlustfrei wieder herstellen zu können, wird eine baumstruktur benötigt, anhand der man ablesen kann, welche bitfolge welchem zeichen zugeordnet ist. dadurch wird das komprimierte archiv leider wieder etwas grösser. das merkt man z.b. wenn man eine textdatei von 50 byte grösse komprimiert, und ein 100kb grosses archiv kriegt.
daneben gibt es natürlich noch verlustbehaftete komprimierungsarten, wie bei dem jpeg-format. dabei wird aus der zweidimensionalen pixelmatrix ein feld von z.b. 4 mal 4 pixeln genommen und der durchschnittswert aus den farbwerten dieses feldes genommen. dabei wird die schärfe verringert, aber die farbwerte wiederholen sich und können daher mit der rle-komprimierung gepackt werden.
andererseits gibt's zur komprimierung von mp3's noch methoden, die alles rausfiltern, was das durchschnittliche menschliche gehör sowieso nicht wahrnehmen kann. zusätzlich sind die dann aber noch mit den beiden obigen methoden verkleinert worden.
ich hoffe, das hat jetzt jeder verstanden.
kurz zusammengefasst kann man auch sagen, dass eine komprimierung auf ein zehntel der originalgrösse schon mehr als ausreichend ist. das mit einem prozent der originalgrösse halte ich für ein gerücht.