[OSASK 4164] Re: OSASK圧縮解凍ツール

  こんばんは、川合です。


ZAKKI さんは 2002/07/30 23:01:10 の「[OSASK 4163] Re: OSASK圧縮
解凍ツール」で書きました:

>やっぱりzipとlzhは強い...でも、rroseではほかの形式が勝っています。
>rroseのlzh(tar)は変化しなかったので省略しています。
>これは、OSASKアプリに関して共通なのかを、これからの調査の方針に
>します。

  おお、やっぱりtarすればlzhは上位に食い込んでくるわけですね。ta
rしておくかどうかで変化するかどうかは、それぞれのファイルに似た
部分があるかどうかです。zipは変化しています。lzhは変化しなかった
そうですが、どうして変化しなかったのか僕には分かりません。アセン
ブラのソース部分などは、同じ部分が各ファイルに有りそうなものです
が・・・。

  ここで、僕なりにデータを整理してみることにします。

・重ねがけも含めて、もっとも小さくなったサイズを1とする。これが
  このファイルのもつ情報エントロピーだと仮定する。
・そして一度がけに対してのみ、1からの過剰分をスコアとする。もち
  ろん、このスコアが0であるのが一番良い。

  CASE 1 - osa600k.bmp
    bz2.tek : 0.00 (4797) (min)
    bz2     : 0.01 (4824)
    gca     : 0.06 (5067)
    lzh     : 0.11 (5334)
    cab     : 0.17 (5592)
    gz      : 0.32 (6346)
    zip     : 0.34 (6436)
    tek     : 0.47 (7044)

  CASE 2 - tools-1
    gz     : 0.00 (7439) (min)
    lzh    : 0.01 (7530)
    zip    : 0.02 (7587)
    tek    : 0.02 (7591)
    bz2    : 0.07 (7938)
    gca    : 0.10 (8182)

  CASE 3 - osawall
    tek.gca : 0.00 (18937) (min)
    gz      : 0.02 (19264)
    zip     : 0.02 (19354)
    tek     : 0.04 (19719)
    bz2     : 0.07 (20249)
    lzh     : 0.11 (21049)
    gca     : 0.33 (25266)

  CASE 4 - rrose
    bz2.tek : 0.00 (19369) (min)
    bz2     : 0.00 (19388)
    tek     : 0.01 (19550)
    gz      : 0.04 (20177)
    zip     : 0.05 (20309)
    gca     : 0.11 (21483)
    lzh     : 0.18 (22787)

  CASE 5 - onkan
    gca     : 0.00 (3347) (min)
    lzh     : 0.00 (3353)
    tek     : 0.01 (3395)
    gz      : 0.02 (3421)
    cab     : 0.02 (3423)
    zip     : 0.05 (3510)
    bz2     : 0.12 (3762)

  total
    bz2 : 0.27 (0.01, 0.07, 0.07, 0.00, 0.12)
    gz  : 0.40 (0.32, 0.00, 0.02, 0.04, 0.02)
    lzh : 0.41 (0.11, 0.01, 0.11, 0.18, 0.00)
    zip : 0.48 (0.34, 0.02, 0.02, 0.05, 0.05)
    tek : 0.55 (0.47, 0.02, 0.04, 0.01, 0.01)
    gca : 0.60 (0.06, 0.10, 0.33, 0.11, 0.00)

(考察)
  tek0の考え方の基本は、得意なものと不得意なものがあって、得意な
ところで精いっぱい圧縮し不得意なところではほとんどそのまま通すと
いうことである。極端な例としては、得意なパターンが1MB続けば10バ
イト未満にできるが(圧縮率:10万分の一)、不得意な場合は1MBの前
に5バイト程度のヘッダをつけてそのまま出力する(参考:lzhの場合、
最高圧縮率は約1000分の一)。これは最大瞬間風速みたいなもので、ト
ータルの圧縮率ではない。

  この設計方針が、今回の結果に現れていると考えられる。すなわち、
osa600kでは得意なパターンが少なく、結果的に圧縮率が下がった。し
かしその他では得意なパターンに恵まれて、トップクラスのスコアであ
る(osa600kさえなければ、tekはgzに並んで総合一位になる)。これに
対し、bz2は非常に安定したスコアである。おそらく複数のアルゴリズ
ムを組み合わせて、弱点をなくしていると思われる。

  僕個人としては展開ルーチンがl2d3とtek0の両方をあわせて460バイ
トであることを踏まえれば、tek0はなかなか良いアルゴリズムだと思う
。今のところOSASKの標準として顔を利かせているが、それだけのこと
はあるだろう。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/


ML番号でジャンプ
ML単語検索