Wie oft kann eine Datei komprimiert werden?
Ich dachte über die Kompression, und wie es scheint, müsste es irgendeine Art von Grenze für die Kompression, die angewandt werden könnten, ansonsten wäre es ein einzelnes byte.
Meine Frage ist also, wie oft kann ich eine Datei komprimieren vor:
- Geht es nicht kleiner?
- Die Datei beschädigt wird?
Sind diese beiden Punkte dasselbe oder Verschieden?
Wo ist der Punkt des abnehmenden Ertrags erscheinen?
Wie können diese Punkte gefunden werden?
Ich spreche nicht von irgendeinem bestimmten Algorithmus oder einer bestimmten Datei, nur im Allgemeinen.
InformationsquelleAutor der Frage samoz | 2009-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die verlustfreie Kompression, nur so können Sie wissen, wie viele Male Sie können gewinnen, indem Sie recompressing eine Datei ist, indem Sie versuchen. Es wird abhängig von der Kompressions-Algorithmus, und die Datei, die Sie komprimieren.
Beiden Dateien können nie zu komprimieren, um die gleiche Ausgabe, so kann man nicht nach unten gehen, um ein byte. Wie konnte ein byte repräsentieren alle Dateien, die Sie könnte beim Dekomprimieren?
Dem Grund, dass die zweite Kompression manchmal funktioniert, ist, dass ein Kompressions-Algorithmus kann nicht allwissend perfekte Kompression. Es gibt einen trade-off zwischen der Arbeit hat es zu tun, und die Zeit, die es dauert, es zu tun. Ihre Datei wird geändert, von allen Daten, die auf einer Kombination von Daten über Ihre Daten und die Daten selbst.
Beispiel
Nehmen, run-length-encoding (wohl die einfachste nützlich Kompression) als ein Beispiel.
04 04 04 04 43 43 43 43 51 52 11 bytes
Reihe von bytes, könnte komprimiert werden wie:
[4] 04 [4] 43 [-2] 51 52 7 bytes (ich setze meta-Daten in Klammern)
Wo die positive Zahl in Klammern ist die Anzahl der Wiederholungen und die negative Zahl in Klammern ist ein Befehl zum aussenden des nächsten n Zeichen, wie Sie fand.
In diesem Fall könnten wir versuchen, eine weitere Komprimierung:
[3] 04 [-4] 43 fe 51 52 7 bytes (fe ist Eure -2 betrachtet als Zweierkomplement-Daten)
Wir nichts gewonnen, und wir werden zu wachsen beginnen für die nächste iteration:
[-7] 03 04 fc 43 fe 51 52 8 bytes
Wir werden wachsen, indem ein byte pro iteration für eine Weile, aber es wird eigentlich noch schlimmer. Ein byte kann nur die negativen zahlen -128. Wir werden wachsen beginnen, indem zwei bytes, wenn die Datei übertrifft 128 Byte Länge. Das Wachstum wird erhalten noch schlimmer, da die Datei größer wird.
Gibt es Gegenwind bläst die Kompression Programm--die meta-Daten. Und auch für real Kompressoren, die Kopf geheftet an den Anfang der Datei. Das bedeutet, dass letztendlich die Datei zu wachsen beginnen wird, mit jedem zusätzlichen Kompression.
RLE ist ein Ausgangspunkt. Wenn Sie mehr erfahren möchten, schauen Sie auf LZ77 (sieht wieder in die Datei ein Muster zu finden) und LZ78 (die baut ein Wörterbuch). Kompressoren wie zip versuchen oft mehrere algorithmen und verwenden das beste.
Hier sind einige Fälle, die ich vorstellen kann, wo mehrere Kompression gearbeitet hat.
InformationsquelleAutor der Antwort
In der Regel die Grenze ist eine Kompression. Einige algorithmen, die Ergebnisse in eine höhere Verdichtung, und mit einem schlechten Algorithmus, gefolgt von einem guten Algorithmus wird oft zu Verbesserungen führen. Aber mit einem guten Algorithmus in Erster Linie ist die richtige Sache zu tun.
Gibt es eine theoretische Grenze, wie viel eine bestimmte Datenmenge komprimiert werden kann. Erfahren Sie mehr über diese haben Sie zu studieren Informationstheorie.
InformationsquelleAutor der Antwort Martin Liversage
Im Allgemeinen für die meisten algorithmen, die Komprimierung mehr als einmal ist das nicht sinnvoll. Es ist ein besonderer Fall, obwohl.
Wenn Sie eine große Anzahl von doppelten Dateien, die zip-format zip jeweils unabhängig voneinander, und Sie können dann die zip die erste zip-Datei zu entfernen, doppelte Reißverschluss-Informationen. Speziell für 7 identische Excel-Dateien-Größe von 108kb, zippen mit 7-zip Ergebnisse in einem 120kb Archiv. Zipping Ergebnisse wieder in eine 18kb-Archiv. Gehen Vergangenheit, die Sie erhalten Wirkungskraft.
InformationsquelleAutor der Antwort CoderTao
Nehmen wir an, wir haben eine Datei N bits lang, und wir wollen zu komprimieren, verlustfrei, so dass wir können wieder die original-Datei. Es gibt 2^N möglichen Dateien N bits lang, und so unseren Kompressions-Algorithmus hat zu ändern, eine dieser Dateien auf eine der 2^N mögliche andere. Allerdings können wir nicht sagen 2^N verschiedene Dateien in weniger als N bits.
Daher, wenn, die wir nehmen können einige Dateien und komprimieren Sie, wir haben einige Dateien, die Länge unter Kompression auszugleichen diejenigen, die verkürzen.
Dies bedeutet, dass ein Kompressions-Algorithmus kann nur komprimieren, bestimmte Dateien, und es hat tatsächlich zu verlängern, einige. Dies bedeutet, dass, durchschnittlich, wird für das komprimieren einer random-Datei kann nicht verkürzen, sondern verlängern könnte.
Praktischen Kompressions-algorithmen arbeiten, weil wir don T in der Regel verwenden Sie zufällige Dateien. Die meisten Dateien, die wir verwenden, haben eine Art von Struktur oder andere Eigenschaften, ob Sie text-oder Programm-ausführbare Dateien oder aussagekräftige Bilder. Durch die Verwendung eines guten Kompressions-Algorithmus, können wir drastisch kürzen Dateien der Typen, die wir normalerweise benutzen.
Jedoch die komprimierte Datei ist nicht einer dieser Typen. Wenn der Kompressionsalgorithmus ist gut, die meisten von der Struktur und Redundanz wurden ausgepresst, und was übrig bleibt, sieht ziemlich viel wie Zufälligkeit.
Kein Kompressions-Algorithmus, wie wir gesehen haben, kann effektiv komprimieren einer random-Datei, und das gilt für eine random-Suche die Datei auch. Also, versuchen Sie zu re-komprimieren Sie eine komprimierte Datei lässt sich nicht verkürzen, ist es deutlich, und vielleicht auch verlängern es einige.
So, die normale Anzahl der Zeiten, die ein Kompressions-Algorithmus gewinnbringend laufen wird.
Korruption geschieht nur, wenn wir reden über die verlustbehaftete Kompression. Sie können zum Beispiel nicht unbedingt die Wiederherstellung eines Bildes präzise aus einer JPEG-Datei. Dies bedeutet, dass ein JPEG-Kompressor zuverlässig zu verkürzen, eine image-Datei, aber nur auf Kosten der nicht in der Lage, sich zu erholen es genau. Wir sind oft bereit, dies zu tun für die Bilder, aber nicht für text, und vor allem nicht ausführbare Dateien.
In diesem Fall gibt es keine Stufe, auf der die Korruption beginnt. Es beginnt, wenn Sie beginnen, sich zu verdichten, und wird schlimmer als Sie es komprimieren mehr. Das ist der Grund, warum gute Bild-processing Programme können Sie angeben, wie viel Kompression Sie wollen, wenn Sie eine JPEG: so können Sie balance Qualität von Bild gegen die Dateigröße. Finden Sie die Haltestelle unter Berücksichtigung der Kosten der Dateigröße (das ist mehr wichtig für net-verbindungen als Speicher, im Allgemeinen) im Vergleich zu den Kosten von reduzierter Qualität. Es gibt keine eindeutig richtige Antwort.
InformationsquelleAutor der Antwort David Thornley
In der Regel einmal komprimieren ist gut genug, wenn der Algorithmus gut ist.
In der Tat, komprimieren mehrere Male konnte führen zu einem Anstieg in der Größe
Ihre zwei Punkte Verschieden sind.
ist eine zu erwartende theoretische Bedingung
ist wahrscheinlich ein Fehler in der Umsetzung (oder vielleicht auch der Algorithmus selbst)
Nun lässt Blick auf einige Ausnahmen oder Abweichungen,
(in der Tat in Zeiten erhöhen, in der Größe) für den Zweck der erhöhten Sicherheit
verlieren Daten (effektiv 'beschädigt' in einem Sinn)
InformationsquelleAutor der Antwort nik
Können Sie eine Datei komprimieren, so viele Male, wie Sie möchten. Aber für die meisten Kompressions-algorithmen die daraus resultierende Komprimierung ab dem zweiten mal wird vernachlässigbar sein.
InformationsquelleAutor der Antwort Matthew Vines
Kompression (ich denke lossless) im Grunde bedeutet der Ausdruck etwas prägnanter. Zum Beispiel
könnte mehr consisely ausgedrückt als
Dies nennt man run-length-encoding). Eine andere Methode, die ein computer verwenden können, ist zu finden, ein Muster, das regelmäßig wiederholt, in eine Datei.
Es ist ganz klar ein limit, wie viel diese Techniken können verwendet werden, zum Beispiel run-length-Kodierung, das ist nicht zu Auswirkungen auf
da es keine sich wiederholenden Muster. Ebenso, wenn das Muster Ersatz-Methoden konvertiert langes Muster 3 char diejenigen, die erneute Anwendung es wenig Wirkung, weil der einzige, noch sich wiederholenden mustern wird 3-Länge oder kürzer. In der Regel Anwendung von Kompression, um eine bereits komprimierte Datei macht es etwas größer, weil verschiedene Gemeinkosten. Anwendung gute Kompression, um eine schlecht komprimierte Datei ist in der Regel weniger effektiv als die Anwendung nur die gute Kompression.
InformationsquelleAutor der Antwort Peter
Im Allgemeinen, nicht einmal ein. Was auch immer-Kompressions-Algorithmus, die Sie verwenden, es muss immer existiert eine Datei, die nicht komprimiert alle, sonst könnten Sie immer komprimieren wiederholt, bis Sie bei 1-byte, die durch Ihre gleiche argument.
Wenn das Programm, das Sie verwenden, die Datei zu komprimieren macht seinen job, die Datei wird nie beschädigt (natürlich bin ich denken, um lossless Kompression).
InformationsquelleAutor der Antwort Federico A. Ramponi
Können Sie komprimieren, unendlich oft. Doch auch die zweite und weitere Kompressionen in der Regel wird nur dann eine Datei, die größer als die Vorherige. So gibt es keinen Punkt in der Komprimierung mehr als einmal.
InformationsquelleAutor der Antwort
Es ist eine sehr gute Frage. Sie können die Ansicht in einer Datei aus anderer Sicht. Vielleicht haben Sie von vornherein wissen, dass diese Datei enthalten arithmetische Reihe.
Lässt Blick auf es wie datastream von "bytes", "Symbole", oder "Proben".
Einige Antworten geben können, die Sie "Informationstheorie" und "mathematische Statistik"
Bitte überprüfen Sie, Monographie der, dass die Forscher für full-tiefes Verständnis:
A. Kolmogorov
S. Kullback
С. Shannon
N. Wiener
Einer der wichtigsten Begriff in der Informationstheorie ist Entropie.
Wenn Sie einen stream von "bytes"....Entropie der bytes hängt nicht von den Werten deiner "bytes" oder "Proben"...
Wenn definiert wurde, nur durch die Frequenzen, mit denen bytes ermittelt werden unterschiedliche Werte.
Maximale Entropie hat Platz für vollständige zufällige datastream.
Minimale Entropie gleich null ist, hat Ort, um für den Fall, wenn Ihre "bytes" hat die identische Wert.
Also die Entropie die minimale Anzahl von bits pro Ihre "byte", die Sie verwenden müssen, beim schreiben von Informationen auf die Festplatte. Natürlich ist es so, wenn Sie Gottes Algorithmus. Real-life-Komprimierung verlustfrei heuristische algorithmen sind nicht so.
Ich verstehe nicht Sinn der Frage. Sie können schreiben, keine bits auf der Festplatte und schreiben Sie eine beschädigte Datei auf der Festplatte mit der Größe gleich 0 bits. Natürlich ist es beschädigt, aber seine Größe ist null-bits.
InformationsquelleAutor der Antwort bruziuz
Hier ist die ultimative Kompression Algorithmus (in Python), die durch wiederholten Gebrauch komprimiert einen string von Ziffern, die Sie auf die Größe 0 (es bleibt als übung dem Leser, wie man anwenden, um einen string von bytes).
Programm-Ausgänge 12 11 10 09 08 07 06 05 04 03 02 01 00 9 8 7 6 5 4 3 2 1 0 dann leeren string. Es muss nicht komprimieren Sie den string bei jedem Durchgang wird es aber mit genug Pässe komprimiert jede stellige Zeichenfolge ab, die eine null-Länge-Zeichenfolge. Stellen Sie sicher, dass Sie notieren, wie viele Male Sie es zu senden, durch den Kompressor sonst werden Sie nicht in der Lage, es wieder zu bekommen.
InformationsquelleAutor der Antwort paperhorse
Beispiel für eine erweiterte Kompression, die mit "Doppel-Tabelle, oder cross-matrix"
Auch elimiates extrenous unnessacry Symbole in Algorithmus
[VORIGE BEISPIEL]
Nehmen Sie run-length encoding (wohl die einfachste nützlich Kompression) als ein Beispiel.
04 04 04 04 43 43 43 43 51 52 11 bytes
Reihe von bytes, könnte komprimiert werden wie:
[4] 04 [4] 43 [-2] 51 52 7 bytes (ich setze meta-Daten in Klammern)
[VERWANDELT]
04.43.51.52 WERTE
4.4.**-2 KOMPRESSION
Weitere Verdichtung Mit Zusätzlichen Symbolen als Ersatz Werte
04.Ein.B.C-WERTE
4.4.**-2 KOMPRESSION
InformationsquelleAutor der Antwort C.L.U.
In der Theorie, werden wir nie wissen, es ist eine nie endende Sache:
(Quelle)
InformationsquelleAutor der Antwort ajax333221
Kommt es auf den Algorithmus. In anderen Worten kann die Frage, wie oft eine Datei komprimiert werden kann mit diesem Algorithmus zuerst, dann die nächste...
InformationsquelleAutor der Antwort FlashDictionary