トップページ⇒tech
992コメント329KB

【2ch】圧縮アルゴリズム【オリジナル】

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
おい、おまえら圧縮ソフト作ってみませんか?
中途半端に圧縮されて拡張子が.2ch
0175 NGNG
>>169
そんなことも知らない奴には発明なんて無理
0176デフォルトの名無しさんNGNG
>165-166 ワラタ
0177デフォルトの名無しさんNGNG
>169
とりあえず2chにアルゴリズムをUP汁。そして各所からリンクを張られろ。
どこかの香具師が勝手に特許とっても申請前に既に一般に知られていれば
特許を無効にできると思われ。
0178デフォルトの名無しさんNGNG
           ___
    .      |(・∀・)|
     .      | ̄ ̄ ̄   ジサクジエン民主主義人民共和国
         △
        △l |
   __△|_.田 |△_____
      |__|__門_|__|_____|_____

0179デフォルトの名無しさんNGNG
>>177
>>とりあえず2chにアルゴリズムをUP汁。
これが一番危険と思うんですよね
2chに書き込んだのはすべて2chのものってことになってますから。
まずどっかのサーバーにウプした時点で著作権だけは保持できるはずなんですので
そのあとここに書き込むかもしれません。(まぁ無理かな、いちをおテスト中です)
0180177NGNG
>179
>2chに書き込んだのはすべて2chのものってことになってますから。
そうなのか、知らなかったよ。
じゃあジオとかを避けて適当にUPしてそのURLを2chに晒すのがいい鴨な。

以前、会社でPGやってる香具師が、退職時に自分の作ったコードを
自由に使えるようにする為に、会社で使う前に自分のHPにUPしてた
という話を聞いたことがあるよ。
0181デフォルトの名無しさんNGNG
>2chに書き込んだのはすべて2chのものってことになってますから。

んなわけねーだろ。というわけで晒しあげ。
0182デフォルトの名無しさんNGNG
掲示板の書き込みの著作権は管理人に帰属するとか。
0183デフォルトの名無しさんNGNG
そんな訳ねーだろ、って判例出てなかったっけ?>>182
0184デフォルトの名無しさんNGNG
著作権は作った時点でお前のものだアフォ。中学からやりなおして来い。

それに今話してるのは特許の話しだろ。小学生からやりなおして来い。
0185デフォルトの名無しさんNGNG
確認したいんですが
圧縮アルゴリズムが違うものでの圧縮は一回は効果ありますよね?
たとえばlzh形式をbzip2で圧縮できたりとか、、。
0186デフォルトの名無しさんNGNG
>>185
圧縮に関するすべての勉強をやり直せ。話はそれからだ。
0187デフォルトの名無しさんNGNG
ん〜
あほばっか

指摘されてるほうねw
0188デフォルトの名無しさんNGNG
>>178
タモンって誰よ?
0189EXE系の人NGNG
>>185
確かに効果あるが
その効果はバイト単位(一部を除き)でしか確認できないと思う
逆に増えることもある思う

0190デフォルトの名無しさんNGNG
>>189
オマエも勉強を…
0191デフォルトの名無しさんNGNG
$ md5sum.exe xyzzy-0.2.2.230.lzh
9ca53116f068eed6de59ac6540f1a036 xyzzy-0.2.2.230.lzh
$ bzip2 xyzzy-0.2.2.230.lzh
$ ls -l xyzzy-0.2.2.230.lzh.bz2
-rw-r--r-- 1540494 xyzzy-0.2.2.2lzh.bz2
$ bunzip2 xyzzy-0.2.2.230.lzh.bz2
$ md5sum.exe xyzzy-0.2.2.230.lzh
9ca53116f068eed6de59ac6540f1a036 xyzzy-0.2.2.230.lzh
$ ls -l xyzzy-0.2.2.230.lzh
-rw-r--r-- 1544223 xyzzy-0.2.2.230.lzh

>>190
んじゃこれをわかりやすいように馬鹿に説明してみてください。
0192デフォルトの名無しさんNGNG
>>191
KB単位で効果があるように見受けられるが?
ってゆーか何でわざわざMD5?
0193デフォルトの名無しさんNGNG
LZHはヘッダ部分が随分冗長な構成になっている。
そのため、SOLID圧縮が有効であることからわかるように、
bzip2などで再圧縮すると、そのヘッダ部分でわずかながら圧縮される。

しかし圧縮部分自体は、LZSS+Huffmanという構成で、
特にHuffmanがエントロピー符号であることから、再圧縮効果は期待できない。
0194193じゃないけどNGNG
>>191は、>>193でわかったのだろうか
0195デフォルトの名無しさんNGNG
わかりました。
サンクスです。理論的に意味がないというわけですね
0196デフォルトの名無しさんNGNG
脳みそが圧縮されてる人の集うスレ
0197デフォルトの名無しさんNGNG
俺の脳は8bit
0198デフォルトの名無しさんNGNG
俺の脳は140億ビット(人間はこれぐらいだって言われてなかったっけ?
0199デフォルトの名無しさんNGNG
脳みそなんて2bitあれば十分なんです。偉い人にはそれがわかるのです。
0200デフォルトの名無しさんNGNG
>>198
記憶容量と処理能力は別物だと思われ。
もし、しなぷすの結合のオンオフが1ビットに等価ならば、
2^140億の組み合わせがあるわけで・・・
0201デフォルトの名無しさんNGNG
それなりの会社にはimidasが置いてある筈です。
imidas2002のパソコンカテゴリに答えが書いてあったはず
0202デフォルトの名無しさんNGNG
ところで本題に戻すけど、

AAの圧縮なら、その絵のキャラクタインデックスとポーズを符号化するのはどう?
意味が通じればいいので、非可逆でよいわけだし、
キャラクタインデックスに20ビット、ポーズに12ビットもあれば十分。
セリフ部分やその他の特殊効果に費やすビット数を除けば、
32ビットから48ビットもあれば、AAを表現できそうだ。

例:
(ギコ猫、左向き、セリフ「逝ってよし」)
とか、
(モナー、上半身と下半身分離、ポインタ>>1)+(斬鉄剣モナー、左右、擬音「ザシュッ」)
とか。
0203デフォルトの名無しさんNGNG
大体誰が、非可逆でいいって言ったんだ?
0204デフォルトの名無しさんNGNG
>>193
エントロピー符号という用語は初めて知ったよ。

ちょっとぐぐってみたんだけど定義が良く分からないので
もしよければ教えて下さい。
0205デフォルトの名無しさんNGNG
>>204
エントロピーを達成するような符号を、エントロピー符号という。
エントロピーとは、理論的に達成可能な圧縮限界のこと。
確率 p[i] が与えられているときに H(P) = -Σp[i] log p[i] がエントロピー。

エントロピーレートを漸近的に達成する符号で、
a priori な知識なしに達成するものを、ユニバーサル符号という。
エントロピーレートとは、1記号当たりの漸近的なエントロピー。

Shannon情報理論を扱った本なら、一番最初に書いてあるから読むべし。
つーか、圧縮を知りたいなら、まずエントロピーありきだから、
エントロピーを知らないと、「1/100圧縮」や「何でも圧縮」といった、
とんでも圧縮法を提案してたたかれることになる。
0206知ったか厨NGNG
エントロピーは常に増大する
0207デフォルトの名無しさんNGNG
>>206
それは物理学の方だね!
局所的にエントロピーを減らすことは出来ても、
系全体では必ず単調非現象にあるんだね!
0208デフォルトの名無しさんNGNG
もしかしてここは学生さんしかいませんか?
0209デフォルトの名無しさんNGNG
>>205
サンクスコ

でもハフマン法の平均符号長(L)ってエントロピー(H)に対して
H≦L<H+1
だからエントロピーを達成できない場合もあるのでは?
0210デフォルトの名無しさんNGNG
>>209
対象が無限長なら大丈夫。
0211デフォルトの名無しさんNGNG
>>210
対象が無限長、という条件だけでは不十分と思われ。
例えばAとBという二つの記号からなる情報源を符号化すると
0と1になって圧縮しようがない罠。
0212デフォルトの名無しさんNGNG
昨日、講義でエントロピーを習ったよ! 情報理論だっけかな?
そんときは -p*log_2 p は情報量みたいな言い方してた.

まだ,勉強してないからあれだけど
「エントロピーとは、理論的に達成可能な圧縮限界のこと。」
なんていわれると激しく違和感を感じる.


0213デフォルトの名無しさんNGNG
世界を震撼させるかもしれない圧縮アルゴリズム
をあと一週間で発表します、今デコーダーの作成中です
期待してください。
0214デフォルトの名無しさんNGNG
>>211
Huffman符号は整数長の符号しか構成できないので、
メール欄にある通り、アルファベット拡大が必要ですな。こりゃまた失礼。
0215デフォルトの名無しさんNGNG
あげ
0216デフォルトの名無しさんNGNG
どんなの?良かったらすぽんさーになるよー

>>213
0217デフォルトの名無しさんNGNG
>>213
単語に分割して重み付けによって符号化する手法ですか?
それって、LZ77とLZ78まぜた方法LZFG,LZYGとは違うのですか?
(LZ77の一致位置を、単語の区切りにしか設定できない制限を置くというやつ?)
0218デフォルトの名無しさんNGNG
どんなデータでも1バイトに収まります。
0219学生NGNG
すべてのデータを1バイトで納めた人間は
天才をはるかに超えた存在だ
0220デフォルトの名無しさんNGNG
この40年で、人類が生みだしたデータは18エクサバイトになるらしい。
しかし、後18ヶ月もするとさらに18エクサバイト増えるらしい。

>>219
「天才をはるかに超えた存在」・・・つまり馬鹿ってことだな
0221デフォルトの名無しさんNGNG
>>218
但し、復元できません……ですか?
0222デフォルトの名無しさんNGNG
>>221 いや、
「あらゆるデータをまるで乱数のように復号しますので、
必要なデータを見つけるまで復号しつづけてください」
って感じだろ・・・
0223デフォルトの名無しさんNGNG
GCAで使われとるらしい
RangeEncoderってなんじゃらほい
0224デフォルトの名無しさんNGNG
>>223
マイクロ波で加熱する圧縮方法
0225デフォルトの名無しさんNGNG
>>224
なるほど、GCAってすごいですね。
だから糞重いのか
0226213 ◆2m/csy02kQ NGNG
圧縮したものを圧縮するとか、
むちゃくちゃ圧縮とかいう話ではありません。
むしろ圧縮率は極端にわるいです。
ただハフマンかブロックソーティングと組み合わせれば
使いものになるかもしれません。
私は科学畑の人間でないので
既出の概念かどうかをここで確認させてもらおうという話です。
0227デフォルトの名無しさんNGNG
>>226
圧縮の基礎だけでも勉強しておいた方が良い。
圧縮は、「圧縮 = モデル化 + 確率統計(確率推定) + 符号化」で構成される。
算術符号やHuffman符号は、(それ単体が「圧縮」を構成するものだが)符号化。
モデルはn次マルコフ連鎖とか、実装で言えばPPMやMTF、ブロックソーティングも該当する。
確率推定はモデル化や符号化に統合されていることが多いが、
次に a の出る確率は 1/2 である、と計算すること。

>>226の何かを X としよう。>>226が考えているのは、

「X + 符号化」あるいは「モデル化 + X」となる。
上記の「圧縮」の概念図に照らし合わせると、Xは確率推定を含む部分に相当する、
と推測される。

・・・で、>>226のアイデアって何?
0228デフォルトの名無しさんNGNG
>>223
rangecoder は算術符号の一種で、
Jonesの考案した整数による算術符号を改善したものに相当する・・・のか?

参考にしたところ:
ttp://www.compressconsult.com/rangecoder/
ttp://www.tomozo.ne.jp/yamazaki/download/doc_basic_compression.htm#RangeCoder
ttp://www.isl.cs.gunma-u.ac.jp/~shingo/labo/algo.html
0229デフォルトの名無しさんNGNG
ウワーン
0230デフォルトの名無しさんNGNG
先生
暗記しておくってのはダメですか?
0231デフォルトの名無しさんNGNG
不可逆圧縮でよければ

意見、賛成、反対、AA、get、煽り、荒らし、長文、吉野家

くらいに圧縮できるな。

例:
1 名前:デフォルトの名無しさん 投稿日:01/01/01 01:01
意見
2 名前:デフォルトの名無しさん 投稿日:01/01/01 01:02
2get
3 名前:デフォルトの名無しさん 投稿日:01/01/01 01:03
>>1 反対
意見
4 名前:デフォルトの名無しさん 投稿日:01/01/01 01:04
>>3 荒らし

こんな感じじゃだめか?
0232デフォルトの名無しさんNGNG
不可逆でいいんならレスを自動生成しろよ。データは1のレスだけにできるぜw
0233デフォルトの名無しさんNGNG
どうして2chは、こうもアフォばかりが集うのか…。
まぁ、アフォを社会から隔離しておくにはちょうど良いシステムかもな。

おまいら、もっと学習しる!!データ圧縮に関してあまりにも無知すぎる。
まずは、ぐぐれ!
0234デフォルトの名無しさんNGNG
レスを茶筅(or案山子)で分割
↓
使用頻度の高い単語を文字コードで使われていないコードに置換
※例. 逝って→0x7743(コードは適当)
↓
2chのスレを解析して作った頻度表を初期状態として
動的レンジコーダで圧縮。
↓
(゜Д゜)ウー
0235デフォルトの名無しさんNGNG
>>234
それはLZ77+78から派生するアルゴリズムとか、
7bit-ASCII(0-127)の単語を(128-255)に割り当てる手法などで、
すでに提案されている。
0236デフォルトの名無しさんNGNG
>>234
言葉遣いが滅茶苦茶なので、形態素解析が満足に出来ない罠。
「うつだしのう」ひとつとっても、変換がばらばらなので統計情報も偏らない・・・
0237デフォルトの名無しさんNGNG
>>212
>まだ,勉強してないからあれだけど
>「エントロピーとは、理論的に達成可能な圧縮限界のこと。」
>なんていわれると激しく違和感を感じる.

なぜ? まさかお前はエントロピー以上に圧縮できるとでも主張する気か?
0238デフォルトの名無しさんNGNG
思うに計算機の0101の概念を作った人が
言ってる理論を覆すのは無理と思われ。
0239デフォルトの名無しさんNGNG
>>237
エントロピーは無記憶情報源モデルとして求めた値なので
それ以外のモデルを使って圧縮すればエントロピー以上に圧縮できる。
0240しぃ豆 ◆hGFTP/i/.A NGNG
山奥のしぃ先生を見てると
ランレングスも効きそうな気がする。
0241デフォルトの名無しさんNGNG
>>239
お前もうちょっと勉強してから発言しろよな。
無記憶情報源以外のモデルを使ったら、そのモデルの上での
エントロピーがあるだろうが。
0242デフォルトの名無しさんNGNG
某大学のデンパ中間発表
ttp://isweb43.infoseek.co.jp/art/dempzone/up/2002101123025890.pdf
0243デフォルトの名無しさんNGNG
やめろってのw
0244デフォルトの名無しさんNGNG
>>240
ここでそのスレタイを聞くとは
0245デフォルトの名無しさんNGNG
>>237
うまく言えないんだが, 212 は例えば 205 の
>エントロピーを達成するような符号を
のような言葉の使い方に違和感を覚えてるんだと思う.

俺も知りたいんだけど, こういう言い方ってするんだっけ ?
0246デフォルトの名無しさんNGNG
>245
するよ。
0247デフォルトの名無しさんNGNG
>>245
俺の周辺だけ?と思ったのでぐぐってみた。「エントロピー 達成する 符号」
あ、大丈夫そうだ。
誤り率とか、冗長度についても「〜を達成する符号」ということが確認できた。
0248デフォルトの名無しさんNGNG
すると未知のモデルを発明(発見?)すれば、既知のモデルによるエントロピーを上回って圧縮できるのか。
究極のモデルを使えばどんなデータも0bitに圧縮できるな。
0249デフォルトの名無しさんNGNG
>>233
いうだけいって、何も説明できない
アホの大将

こいつ以上のアホは、そうは居ない
0250デフォルトの名無しさんNGNG
どうして2chは、こうもアフォばかりが集うのか…っ…!
まぁ、アフォを社会から隔離しておくにはちょうど良いシステムかもなっ…!

おまいら、もっと…!もっと…!学習しる!!データ圧縮に関してあまりにも無知すぎるっ…!
まずは、ぐぐれ!
0251デフォルトの名無しさんNGNG
つーかさ、いくらでも小さく圧縮することは可能なんだよ。問題は

ち ゃ ん と 元 に 戻 せ る か ど う か

だということに気づけ。そうすれば、元に戻せるためには
もともと持っていた情報量(エントロピー)より小さくできない
こともわかるだろ。
0252213 ◆2m/csy02kQ NGNG
かなり中途半端ですが
手元のエンコーダー、デコーダーでデータの整合性がとれたので公開します。
わからないところがあれば説明します。
http://www61.tok2.com/home/jnc/

サンプルのjnc.plはまだ4Kバイトを越えたファイルを処理できません。
使い方は、
jnc.pl -e filename エンコード->*.jncファイル生成
jnc.pl -d *.jnc デコード ->D*ファイル生成

エラー吐きまくりますが処理に問題はないはずです。
0253213 ◆2m/csy02kQ NGNG
ぶっちゃげて言うと
8バイト(64bit)のかたまりを、
65bit/59bit/52bit/45bit/38bit/31bit/24bit/17bit
にしてしまおう、ということです。
0254デフォルトの名無しさんNGNG
>>213
ついでにこのスレを圧縮した場合の圧縮率を教えて please
0255デフォルトの名無しさんNGNG
>>213
8byte分取り出して、各bitの0/1が全8byteで一致した列を省く
というところまでは分かったが、その後が分からん

あああ今分かった。イメージ図と説明のところのデータって違うのか...
0256213 ◆2m/csy02kQ NGNG
>>255
そうです、説明のところは
#!/usr/b (64bit)をどのように59bitに圧縮してるかの説明です。
ちょっとWEBぺージはいいかげんなのでそのうち書き直します。
0257デフォルトの名無しさんNGNG
全8byteで一致しないとまったく圧縮されないというのが痛いぞ
ASCII文字列かUTF16文字列かのっぺりとした画像ぐらいしか思いつかない
0258213 ◆2m/csy02kQ NGNG
そうですね、
ただ8バイトのうち縦2列のビット[16bit]がそろえば圧縮はできるんですが。
圧縮できる8バイトブロックと、圧縮できない8バイトブロック
にバッファを分けて、それぞれにハフマンなりなんなりをかける、、、
とかまぁいろいろ考えているのですが。
0259デフォルトの名無しさんNGNG
>>213いくつか気になった部分のひとつ。本題じゃないところばかりだけど
>これまでのバイト(単語)レベルでの圧縮と違いビットレベルでの圧縮

ほとんどの圧縮手法がバイト入力にしているのは、
別に手法としてバイト入力でなくちゃいかん、というわけではなく、
単にプログラム上の処理の面倒さや、動作速度の向上が理由といえる。
論理的な理由としては、アルファベット拡大を行うと最適になるからということもある。

事実、論文ではバイナリ入力で説明し、実装ではバイト入力というのが普通。
0260213 ◆2m/csy02kQ NGNG
テストプログラムはエンコード部分が間違ってるみたいです
1010Byteを越えたファイルでは処理が失敗します。
0261デフォルトの名無しさんNGNG
これ…だめだめじゃない?
0262デフォルトの名無しさんNGNG
>261
最初からうまくいくわけないYO!

みなさんがんば
0263デフォルトの名無しさんNGNG
新しい圧縮方式は・・・

1) 圧縮率が既存のものより格段に優れている  例)PPM
2) 理論的に面白い  例)CTW
3) 新しい概念に基づいている  例)ブロックソート法、文法による圧縮

のどれかが成立しないと、評価されないよ。
たとえば、○○法を改良して圧縮率を向上させました、というのは認められないことが多い。
これから圧縮を考える人は注意してね。
0264オレは天才だと分かりましたNGNG
1バイトのデータを圧縮する場合は、
1バイトは、256通りのデータ表現が限度だから、
どっかに256通りのデータを記録しておけば、
1バイトの圧縮結果のデータサイズは、
256通りあるデータの、どれかを示すだけでよいから、
サイズは、1ビットから8ビットになる。

よって、
4Gバイトのデータを圧縮する場合は、
4Gバイトは、2の8×4G乗 通りのデータ表現が限度だから、
どっかに 2の8×4G乗 通りのデータを記録しておけば、
4Gバイトの圧縮結果のデータサイズは、
2の8×4G乗 通りあるデータの、どれかを示すだけでよいから、
サイズは、1ビットから 2の8×4G乗バイト になる。
0265デフォルトの名無しさんNGNG
>>264
で、4G+1バイトのデータはどうやって圧縮すんの?
0266オレは天才だと分かりましたNGNG
この手法だと、どんなサイズのデータ(宇宙大のデータ)であっても、
圧縮結果は、1ビットになる可能性がある。
この素晴らしさは、たとえようがなく、
DQNには分かりようが無いのが残念だが、
我等が国王は、大いに喜び給うであろうことは、断言して誤りがないのである。
0267デフォルトの名無しさんNGNG
概ねハフマンと同じじゃん。
0268デフォルトの名無しさんNGNG
まぁなんか書いてくれるとたすかるよ。
ちょっと俺にはわからんが。
みなさんは圧縮するテストファイルってのは何つかってます?
圧縮してないファイルってBMPかWAVかTXTぐらいしか思い浮かびませんが。
0269デフォルトの名無しさんNGNG
どっかに 2の8×4G乗 通りのデータを記録しておかなければいけないぶんハフマンよりはるかに劣る
0270デフォルトの名無しさんNGNG
で、2の8×4G乗 通りのデータの大きさは具体的に
どれぐらいになるんだ?
027157NGNG
>268
とりあえず俺の使った事のあるテストデータ。

・その圧縮ソフトのソースコード(@>>85)
・ゲームの吸出し画像(@自作画像用非可逆圧縮形式開発時)
0272デフォルトの名無しさんNGNG
>>268
普通は Calgary とか Canterbury のコーパスを使う。
画像や音声の場合は、別のセットを使うこともある。
0273デフォルトの名無しさんNGNG
いっそ元のファイルサイズより大きくなるつーのはどうだい?
0274デフォルトの名無しさんNGNG
>>273
ファイルの先頭に非圧縮であることを示すフラグ「0x00」を付加する圧縮?法。
もし完全復号可能であることを求めるなら、もう少し工夫が必要だが。
■ このスレッドは過去ログ倉庫に格納されています