398MBのディレクトリは、7Zおよび通常のZIP圧縮を使用して393MBにのみ圧縮されました。これは正常ですか?もしそうなら、なぜ人々はWindowsでZIPを使い続けるのですか?
398MBのディレクトリは、7Zおよび通常のZIP圧縮を使用して393MBにのみ圧縮されました。これは正常ですか?もしそうなら、なぜ人々はWindowsでZIPを使い続けるのですか?
回答:
圧縮は、圧縮するアイテム内の反復パターンを探すことで機能します。また、ファイルの圧縮中にデータを失いたくないので、圧縮は無損失(*)でなければなりません。
次に、頭の後ろに置いて、ファイル(アイテム)をコンピューターに保存する方法を考えます。最下位レベルでは、それらはすべて0と1の単なる束です。
したがって、質問は「1と0の束を元の表現よりもコンパクトな方法で表現するにはどうすればよいですか?」
では、最初から始めましょう。どのようにして、単一ビット(単一の1または単一の0)の通常の表現を圧縮できますか?
答えは本当に簡単です。できません!...単一ビットが可能な限りコンパクトな方法で表されます。
それでは、もっと大きな例を見てみましょう。01110111 0100 0111のようなバイナリ文字列をどのように圧縮しますか?
個々のビットを見てもまったく役に立たないことは既にわかっているので、より大きなスケールを調べる必要があることはわかっています。たとえば、一度に4ビットを使用してみましょう。この例では、バイナリ文字列"0111"が3回出現することがわかりました。それで、なぜそれを1ビットで表現しないのですか?0?しかし、これはまだ暗闇の中で0100を離れるので、私たちは「1」とすることを表すもの
:私たちは知っているにオリジナルを圧縮している「0010」
それはすごくいいね!ただし、これは「ハフマンエンコーディングアルゴリズム」の基本の基本に過ぎず、実際にはそれよりも少し複雑になります(また、エンコーディング情報を含むテーブルを保存する必要がありますが、それはこの質問に答えるために少し))。
さて、本当にあなたの質問に答えるために:なぜすべてのデータをそれほど圧縮できないのでしょうか?別の例を見てみましょう: "0001 0110 1000 1111"、上記と同じ手法を使用する場合、データを圧縮できません(繰り返しは見つかりません)、したがって圧縮の恩恵を受けません...
(*)もちろんこれには例外があります。最もよく知られている例は、MP3ファイルに使用される圧縮です。ここで、サウンドに関するいくつかの情報は、生の元のファイルからMP3形式に変換するときに失われるため、この圧縮は損失を伴います。別の例は、画像の.JPG形式です
ロスレス圧縮に関するウィキペディアの記事の制限セクションから:
ロスレスデータ圧縮アルゴリズムは、すべての入力データセットの圧縮を保証することはできません。言い換えると、(ロスレス)データ圧縮アルゴリズムには、アルゴリズムによって処理されたときに小さくならない入力データセットがあります。これは、カウント引数を使用した初等数学で簡単に証明されます。...
基本的に、すべての可能な入力データをロスレスで圧縮することは理論的に不可能です。
これは正常ですか?
いいえ。「通常の」ファイルではありません。どのような種類のファイルを圧縮していましたか?JPG、GIF、PNG、ビデオ、またはその他のzipファイルなど、すでに圧縮されている場合は、アルゴリズムによってあまり圧縮されません。テキスト、XML、非圧縮BMP、ソースコードなどのファイルを圧縮しようとすると、zipは十分な圧縮を提供しますが、おそらく最良の圧縮ではありません。
なぜ人々はWindowsでZIPを使い続けるのですか?
1つの理由は、システムに組み込まれた優れたzip処理があることです。どこでも右クリックして新しいzipファイルを作成し、そこにデータをドロップできます。zipファイルをダブルクリックするだけで、フォルダーのように開きます。あなたはそこからものをコピーすることができ、時にはそれをその場で使うことさえできます。WinZipや7z、その他のプログラムをインストールする必要はありません。私は通常、人々はしないことをお勧めします。