Ich weiß, dass ich etwas spät bin, aber ich fand dies über Google und jemand anderes könnte das gleiche tun, also werde ich meine Antwort posten: die offensichtliche Lösung ist a) impossible
, auch von Jon Skeet (und Übrigens gibt es im Internet viele Beweise. Ich stelle nicht die Unmöglichkeit in Frage, zufällige Daten zu komprimieren, nur um von Anfang an klar zu sein; Ich habe die Theorie verstanden, die dahinter steckt, und - wenn Sie mich fragen - ich vertraue der Mathematik. : D
Aber wenn wir think laterally dürfen, könnten wir definitiv die Tatsache nutzen, dass die Frage nicht gut definiert ist, was bedeutet, dass es keine strenge Definition von "Kompressionsalgorithmus" und der Eigenschaften, die es haben sollte (aber einige Dateien zu reduzieren, ohne jemand anderen zu erweitern).
Es stellt auch keine Bedingung für die komprimierten Dateien, das einzige, das es interessiert, ist ", um einige Dateien kleiner und keine Dateien größer".
Das heißt, wir jetzt mindestens zwei Möglichkeiten haben zu zeigen, dass in der Tat, es einen solchen Algorithmus existiert:
Wir haben den Namen der Datei von einigen der Informationen speichern ausnutzen können die Datei (oder sogar die gesamte Datei, wenn das Dateisystem dies zulässt, wodurch jede Datei auf 0 Bit reduziert wird). Trivialerweise könnten wir einfach entscheiden, jede Datei bis auf eine unverändert zu belassen, sie auf 0 Bit zu reduzieren und sie mit einem vordefinierten Namen umzubenennen. Ich bin damit einverstanden, dass dieser Betrug in Betracht gezogen werden könnte, aber dann wieder, gibt es keine Einschränkungen in der anfänglichen Frage und dieser Algorithmus würde den Zweck effektiv erreichen (solange niemand die Datei umbenennt, das ist, warum dies eine sehr schlechtes Design Wahl wäre außer sinnlos sein).
Wir können die Anzahl der zu komprimierenden Dateien auf mindestens X
Bits begrenzen. Noch einmal, eine triviale Lösung wäre, jede Datei unberührt zu lassen, aber eine, die wir reduzieren können, so dass sie mit einer Datei übereinstimmt, die kleiner als X
Bits ist. Jetzt wir haben einen Algorithmus, der unter Angabe wörtlich, größer einige Dateien kleiner und keine Dateien macht; es führt jedoch eine Beschränkung für alle möglichen Eingaben durch (d. h. es kann nicht alle Dateien verarbeiten).
Für diejenigen, die argumentieren, dass dies keine praktische Verwendung haben würde, sage ich, dass ich mit Ihnen einverstanden ... aber hey, das ist Theorie, und das war nur eine theoretische Dissertation. ;)
Offensichtlich, wenn ich einen Test machen und diese Frage stellen würde, würde ich ein fettes X auf das a)
setzen, und dann weitergehen, ohne zu viel darüber nachzudenken.
Trotzdem ist es durchaus möglich ist, zu zeigen, dass da in natürlicher Sprache an mich nicht eindeutig ist und die Frage ist nicht formell ausgedrückt, jeder der anderen möglichen Antworten ist nicht unbedingt falsch: die richtigen Bedingungen platzieren und schließlich klare Angabe, was Mit bestimmten Begriffen gemeint, können wir legal in der Lage sein, das Ziel einer der anderen aufgelisteten Optionen zu erreichen, eine Art von Trickserei zu machen und das Programm zu zwingen, das gewünschte Verhalten zu erreichen.
Diese Spekulation ist, gerecht zu sein. Ich bin kaum ein Experte dafür, wollte nur sehen, was andere über meine Antwort denken. Vielen Dank! – RJFalconer
@BlueNovember: Mach dir keine Sorgen: * jeder * Benutzer, der auf einen Archiver stößt, fragt sich schließlich, ob es möglich ist, eine solche Komprimierung zu machen :-) –
Hmm. Ich nicht, Pavel. – spender