Dateikomprimierungsprogramme reduzieren die Größe der Dateien, indem verschiedene Algorithmen verwendet werden, um Redundanz zu entfernen und die Daten effizienter darzustellen. Sie "löschen" keine Informationen; Stattdessen finden sie clevere Möglichkeiten, es mit weniger Bits zu codieren. Es gibt zwei Hauptkategorien:verlustfreie und verletzte Komprimierung.
1. Verlustlose Komprimierung:
Diese Art von Komprimierung garantiert, dass die Originaldatei perfekt aus der komprimierten Version rekonstruiert werden kann. Es wird für Textdateien, Quellcode, Tabellenkalkulationen und andere Daten verwendet, bei denen selbst ein kleiner Teil des Informationsverlusts inakzeptabel ist. Gemeinsame Techniken umfassen:
* Kodierung von Run-Länge (RLE): Diese einfache Methode ersetzt aufeinanderfolgende wiederholende Zeichen oder Bytes durch eine einzelne Instanz des Zeichens und die Anzahl der Wiederholungen. Zum Beispiel wird "aaabbbcc" "3A3b2c". Es ist sehr effektiv für Daten mit langen Läufen identischer Werte.
* Huffman -Codierung: Dies weist kürzere Codes an häufig vorkommende Symbole und längere Codes zu weniger häufigen zu. Durch die Nutzung der Wahrscheinlichkeitsverteilung von Symbolen in den Daten erreicht es eine signifikante Komprimierung. Zum Beispiel ist im englischen Text der Buchstabe "E" sehr häufig, sodass er einen kurzen Code erhält, während weniger häufige Buchstaben wie "z" längere Codes erhalten würden.
* lempel-ziv (lz) algorithmen: Dies sind ausgefeiltere Methoden, die wiederholte Muster innerhalb der Daten identifizieren. Anstatt jedes Symbol einzeln zu codieren, erstellen sie ein Wörterbuch mit wiederkehrenden Mustern und codieren sie mit kurzen Referenzen. Häufige Variationen umfassen LZ77, LZ78 und LZW (Lempel-Ziv-welch), wobei letztere im GIF-Bildformat verwendet werden. Das Wörterbuch wird typischerweise dynamisch erstellt, da die Daten komprimiert und dekomprimiert werden.
* Dictionary-basierte Komprimierung: Diese Methoden (einschließlich LZ -Algorithmen) erzeugen ein Wörterbuch mit wiederholenden Sequenzen und ersetzen sie durch Kurzcodes. Sie funktionieren gut für Daten, die viele Wiederholungen enthalten.
* Burrows-Wheeler-Transformation (BWT): Diese Technik stellt die Daten erneut, um ähnliche Zeichen zusammenzuschließen, was es anderen Komprimierungsmethoden erleichtert, effektiv zu arbeiten. Es wird häufig in Verbindung mit anderen Algorithmen wie der Transformation von Move-to-Front und der Kodierung der Lauflänge verwendet.
2. Verlustige Komprimierung:
Diese Art der Komprimierung erreicht höhere Komprimierungsverhältnisse, indem einige Daten, die als weniger wichtig erachtet werden, verworfen werden. Dies ist für Multimedia -Daten (Bilder, Audio, Video) akzeptabel, bei denen ein gewisser Verlust der Treue tolerierbar ist. Beispiele sind:
* jpeg (Bilder): Verwendet eine diskrete Cosinus -Transformation (DCT), um die Datenmenge zu verringern, die zur Darstellung eines Bildes erforderlich ist. Es verwirft einige hochfrequente Informationen, die für das menschliche Auge weniger spürbar sind.
* mp3 (Audio): Verwendet eine psychoakustische Modellierung, um Frequenzen zu verwerfen, die von lauteren Klängen maskiert werden. Dies ermöglicht eine erhebliche Verringerung der Dateigröße ohne einen großen wahrgenommenen Verlust der Audioqualität.
* mpeg (Video): Verwendet Techniken wie Bewegungskompensation, um nur Veränderungen zwischen Frames zu codieren und die Redundanz erheblich zu verringern.
Zusammenfassend:
Dateikomprimierungsprogramme verwenden eine Kombination von Algorithmen, um Redundanzen in Daten zu identifizieren und zu nutzen. Verlustlose Methoden garantieren eine perfekte Rekonstruktion, während Verlustmethoden einige Daten für höhere Komprimierungsverhältnisse opfern. Die Auswahl des Algorithmus hängt von der Art der komprimierten Daten und dem akzeptablen Datenverlust ab. Viele moderne Komprimierungsprogramme verwenden eine Kombination dieser Techniken, um die Kompressionseffizienz zu optimieren.