Vor langer Zeit las ich einen Zeitungsartikel, in dem ein Professor sagte, dass wir in Zukunft Daten auf nur zwei Bits komprimieren können (oder so ähnlich).
Dies ist natürlich nicht korrekt (und es könnte sein, dass meine Erinnerung an das, was er genau sagte, nicht korrekt ist). Verständlicherweise wäre es nicht praktikabel, eine Folge von 0en und 1en auf nur zwei Bits zu komprimieren, da (selbst wenn dies technisch möglich wäre) zu viele verschiedene Arten von Folgen auf die gleichen zwei Bits komprimiert würden (da wir nur '01 haben) 'und' 10 'zur Auswahl).
Wie auch immer, dies brachte mich dazu, über die Machbarkeit nachzudenken, eine Zeichenfolge mit beliebiger Länge von Nullen und Einsen nach einem Schema zu komprimieren. Gibt es für diese Art von Zeichenfolge eine bekannte Beziehung zwischen der Zeichenfolgenlänge (das Verhältnis zwischen 0 und 1 spielt wahrscheinlich keine Rolle) und der maximalen Komprimierung?
Mit anderen Worten, gibt es eine Möglichkeit zu bestimmen, auf welche minimale (kleinstmögliche) Länge eine Zeichenfolge aus Nullen und Einsen komprimiert werden kann?
(Hier interessiert mich die mathematische Maximalkompression, nicht das, was derzeit technisch möglich ist.)
quelle
Antworten:
Die Komplexität von Kolmogorov ist ein Ansatz, um dies mathematisch zu formalisieren. Leider ist die Berechnung der Kolmogorov-Komplexität eines Strings ein unberechenbares Problem. Siehe auch: Approximation der Kolmogorov-Komplexität .
Es ist möglich, bessere Ergebnisse zu erzielen, wenn Sie die Quelle der Zeichenfolge und nicht die Zeichenfolge selbst analysieren . Mit anderen Worten, oft kann die Quelle als probabilistischer Prozess modelliert werden, der eine Zeichenfolge nach einer gewissen Verteilung zufällig auswählt. Die Entropie dieser Verteilung gibt dann Auskunft über die mathematisch bestmögliche Komprimierung (bis zu einer kleinen additiven Konstante).
Da eine perfekte Komprimierung nicht möglich ist, könnte Sie auch Folgendes interessieren.
quelle
In vielen Fällen kümmern wir uns auch nicht um die exakte Rekonstruktion. Dies wird als verlustbehaftete Komprimierung bezeichnet und beschreibt, wie Musik und Videos komprimiert werden. In diesem Fall gilt die oben angegebene Untergrenze nicht, Sie können jedoch andere Untergrenzen festlegen.
quelle
Hier ist ein einfaches Schema, mit dem beliebige Bitfolgen verlustfrei komprimiert werden können, wobei das kleinste Ergebnis nur ein Bit ist:
WENN die Saite für die Aufnahme von Beethovens 9. Symphonie, vierter Satz, im AAC-Format, das auf der Festplatte meines Computers gespeichert ist, identisch ist, ist die Ausgabe ein einzelnes Bit '0'.
WENN die Zeichenfolge etwas anderes ist, ist die Ausgabe ein einzelnes Bit '1', gefolgt von einer identischen Kopie der ursprünglichen Zeichenfolge.
Dieses Schema reduziert eine mögliche Eingabe auf genau ein Bit und verlängert jede andere Eingabe. Es gibt ein allgemeines Prinzip: Wenn ein Komprimierungsalgorithmus eine Eingabezeichenfolge auf eine komprimierte Zeichenfolge abbilden kann, und es einen passenden Dekomprimierungsalgorithmus gibt, der eine komprimierte Zeichenfolge wieder auf die ursprüngliche Zeichenfolge abbildet, und der Komprimierungsalgorithmus eine Eingabe auf eine kürzere Zeichenfolge abbildet , dann müssen einige Eingabezeichenfolgen längeren Zeichenfolgen zugeordnet werden.
quelle
Für jedes Komprimierungsschema, das Sie erstellen können, können Daten erstellt werden, die von diesen nicht komprimiert werden können. Selbst wenn Ihr Komprimierungsschema bei einigen Datentypen sehr effizient ist, wird es niemals konsistent auf ein bestimmtes Verhältnis komprimiert.
Die Erstellung eines Beispiels für nicht komprimierbare Daten für einen bestimmten Komprimierungsalgorithmus ist einfach: Nehmen Sie beliebige Daten und führen Sie sie wiederholt durch, bis die Größe nicht mehr abnimmt.
Die Komprimierbarkeit einer Bitfolge hängt also nicht wirklich von der Länge der Zeichenfolge ab, sondern von ihrer Komplexität im Verhältnis zum Komprimierungsalgorithmus.
quelle
Es gibt einen interessanten und völlig anderen Algorithmus, der von Unternehmenssicherungssystemen verwendet wird. Die Idee ist, dass, wenn Sie ein Unternehmen mit 10.000 Computern haben, viele, viele dieser Computer viele identische Dateien enthalten. Beispielsweise wird eine E-Mail, die an alle Mitarbeiter des Unternehmens gesendet wird, möglicherweise auf jeder einzelnen Festplatte als identische Datei gespeichert.
Ein Backup-System, das versucht, eine Datei zu sichern, sollte natürlich versuchen, die Datei zu komprimieren, um Speicherplatz zu sparen. Zuerst prüft das Backup-System jedoch, ob bereits eine absolut identische Datei gespeichert ist! Anstatt also irgendetwas zu sichern, merkt sich das Backup-System zum Beispiel nur, dass Sie die Dateinummer 1.487.578 auf dem Backup-System auf Ihrer Festplatte haben.
Dies ist beispielsweise dann besonders effizient, wenn 10.000 Benutzer dasselbe Betriebssystem und dieselben Anwendungen installiert haben. Für einzelne Benutzer ist es überhaupt nicht sehr nützlich.
quelle