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

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

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
おい、おまえら圧縮ソフト作ってみませんか?
中途半端に圧縮されて拡張子が.2ch
0751デフォルトの名無しさんNGNG
>>748
だから最初にランレングスしたり
ブロックのバイト列の終端にどの数よりも必ず大きく(小さく)なる値を割り当てて
比較長を短くしたりする、いろいろな工夫があるんだろ?
0752デフォルトの名無しさんNGNG
ちなみに、限定ソートはメリットが無いと言うが、
ブロックサイズを(完全と比べて)果てしなく大きく取ることが出来るので
ある種のデータではブロックが小さい完全ソートより
良好な結果を得ることが出来ると思うんだが。
0753デフォルトの名無しさんNGNG
>>751
だから単純なソートだと遅いから高速化に苦労してたって、>>748が言ってるだろ?
0754デフォルトの名無しさんNGNG
>>753
それならば、すでに先人が苦労した成果があるんだから
後からそれを利用するだけなら大した苦労も無いだろう。
0755デフォルトの名無しさんNGNG
>>754
話の筋を追えんやつだな(w
0756SYN ◆8smMJ0UaoA NGNG
>>750
SFXにそんな要望があるとは知らなかった。スマソ。
次のソフトで改善します。ありがとう。
0757SYN ◆8smMJ0UaoA NGNG
>>752
そうなんですか?どうやったら出来るのでしょうか…。
完全も限定も、必要なバッファサイズはO(n)になりませんか?
0758デフォルトの名無しさんNGNG
限定ソートの利点:コードが小さい。
80行で完全ソート書いてみて >>SYN
0759デフォルトの名無しさんNGNG
7行スレに持ってけば7行未満で書いてくれそうだな(w
0760デフォルトの名無しさんNGNG
コテハンが嫌われる理由がわかったようなきがする

0761デフォルトの名無しさんNGNG
>>757
オーダーにするとその通りだけど、限定ソートなら 1(n/2)+ちょっと で出来るでしょ。
0762デフォルトの名無しさんNGNG
なんかこっちではコテハン不評なのでやめます。

>>758
限定ソートほどじゃないけど、速度を気にしなければ、
普通に書いても2,30行ぐらいでいけます。
ちなみに展開の方は普通に10行ぐらいで書けます。

>>761
確かにバッファは減らせるけど、それによって確保できるブロックサイズは
精々数倍程度で、果てしなく大きくってほどじゃないと思うけど…
それにブロックサイズは無闇に大きくするとデータの揺らぎに対応できずに、
結果が悪くなることが多いです。
0763デフォルトの名無しさんNGNG
ホラでなく、昨年のクリスマスに
「540+MTF+ハフマン」
で圧縮ソフト組んだのですが。
MTFとハフマンはそこらへんから拾ってきたソース組み込んだだけだったけど。

いや、別にいいんだけどさ。
0764デフォルトの名無しさんNGNG
>>762
2〜30行ならうpしてみろや
可変長符号だけで10行やそこらはかかると思うんだが
まさか最密充填コード?
0765デフォルトの名無しさんNGNG
ひかえおろうひかえおろう七行プログラマーじゃー
0766ふトンカ ◆wX94FutoNg NGNG
素人考えですが、圧縮率最強なら、たとえば
DVD-ROM片面2層の辞書を持っている、
有名な曲とか、定番の発言とか、全部入っている
そうしたらすごい圧縮できるんてじゃないでしょうか。

10MBのMP3が10KBに!、とか…
まぁそこまでは行かなくともですが、、まぁ多分、原理的に無理だから誰もしないんですよね、、失礼。
0767デフォルトの名無しさんNGNG
そういうアカシックレコード理論は狂おしいほどガイシュツ。
0768デフォルトの名無しさんNGNG
>>SYN
ソース公開しろとまでは言わんが、
GCAのMAC版、Unix版が無いのはいかがなものか?
自分でGCAがヘボイと言っているのならそれは自分でゴミを垂れ流してることになるだろ
0769デフォルトの名無しさんNGNG
自分の作ったものに自信持てや
0770デフォルトの名無しさんNGNG
>>763
クリスマスに、ってのが泣ける。
・゚・(ノД`)・゚・。
0771デフォルトの名無しさんNGNG
>>768
身内用に作ったものを勝手に使用しているようなものなのに、なんでえらそうなんですか
もともと趣味で作ったもの。MacやLinux版をわざわざ出すわけないでしょう
圧縮方法もまだしっかり確立していないのに

今のはテスト版のようなもの。圧縮方法がしっかりときまったらソース公開や他OS版も考えるでしょう
0772デフォルトの名無しさんNGNG
きっとゴミかもしれないけど垂れ流してみたい年頃なんだよ。
0773デフォルトの名無しさんNGNG
ほら早く2、30行で完全ソート圧縮かいてみせろや!
0774デフォルトの名無しさんNGNG
身内用なら身内だけに公開しろ
それだけだ
0775デフォルトの名無しさんNGNG
>>773
ブロックソート関連のWebページ逝けば30行くらいで普通に載ってるぞ。

それに、bzip2のソースも実質そんなていど、といってみるテスト。
0776☆南幸☆NGNG
http://www5e.biglobe.ne.jp/~nanko-m/index.htm
0777751NGNG
>>775
最後の符号化も入れてか?
0778デフォルトの名無しさんNGNG
>>777
MTFが3〜4行、算術符号は5行くらいでかけるから、
qsort使ってよいなら、かなり短くなると思うよ。
0779デフォルトの名無しさんNGNG
>>778
もったいぶらずに早く書いてよ。
0780デフォルトの名無しさんNGNG
>>764
>>773
>>777
普通BWTは圧縮とは言わないから、符号化までは入れないでしょう。
後段の符号化をやらないで、ベタで垂れ流してもBWTであることには変わりないですし。
0781デフォルトの名無しさんNGNG
>>780
なあんだ。ホラかよ。
限定ソートが80行に対して2、30行で書けるとかほざいときながら。
0782778!=780NGNG
>>781
完全ソートなら30行で書けますよね?
限定ソートの方が、工程が多い分だけ長くなるということで。

>>780
始めは俺もBWTだけを書くという話だと思ってたよ。
もしかして>>777>>781はBWTを知らないんじゃないかと・・・
0783デフォルトの名無しさんNGNG
漏れがまだ学生だった頃の糞コードを見たら、
半数が空行やコメントのプログラムが、73行だった。実質30行台。
うはっ、われながらひどいプログラムだ。
0784デフォルトの名無しさんNGNG
>>768
スマソ。それは遅れていただけで、やる気が無いわけではないです。
確かに今のUIがヘボイことは認めざるを得ません。
ただ、UIの発展をどういう方向に進ませるべきか意見を聞きたかったのです。
結果はDGCAで出せると思います。
同時ではないですが、MAC、Linuxの予定もあります。
0785デフォルトの名無しさんNGNG
>>782
いや、bzip2のソースもBurrowsとWheelerの論文も読んでるけどさ。
限定ソートの高速なソースは現に80行かそこらであるわけよ。>>649に。
んで、SYNは限定ソートのメリットなんて無いとほざいたわけよ。
たった2、30行で書けると。
ホラ吹くんじゃねーよ(w
0786デフォルトの名無しさんNGNG
速度の差も極小と言ったよな。
30行で高速なブロックソート圧縮プログラム早くうpして見せろや。
0787デフォルトの名無しさんNGNG
>>785
確かに>>649はそれはそれですごいが、
あれをBWTの限定ソートと呼ぶのはどうかと。
そんなことをいったら1次モデルもBWTの限定版になってしまうがな。
0788デフォルトの名無しさんNGNG
>>785
SYNの言うこといちいち真に受けるなよ(w
だからコテハンなんてろくな香具師じゃないって。
0789デフォルトの名無しさんNGNG
>>787
じゃああんたのいう限定ソートって何?
0790デフォルトの名無しさんNGNG
>>785 お初です。
限定ソートにメリットが無いことは、各種論文でも言われていると思うけど。
本当にブロックソート関連の論文読んだの?
0791デフォルトの名無しさんNGNG
>>789
bzip2みたいに、せめて100kバイト程度のブロックであって欲しいな。
0792デフォルトの名無しさんNGNG
ごちゃごちゃ言い訳してないで
2-30行のソースとやら晒して見せろや
嘘つきヤロウ
0793デフォルトの名無しさんNGNG
>>791
bzip2のブロックと、限定ソートの長さ制限は意味が違う。
0794デフォルトの名無しさんNGNG
>>791
それだけかよ(w
じゃあ#define直せば限定ソートになるのか?
0795デフォルトの名無しさんNGNG
>>785
あー、それなら私が悪かった。申し訳ない。
ソースコードが小さいというがメリットになると思っていなかったので。
ただ、速度を気にしないBWTは異様なほど小さく出来る。
選択ソートやバブルソート使ったら( ゚Д゚)ゴルァ!かもしれませんが。
しかし、ここはIDも出ないのですね。自分の発言がどれかわからなくなりそう。
0796デフォルトの名無しさんNGNG
ttp://member.nifty.ne.jp/DO/algorithm/blocksorting.htm
ここに載っているのにqsort使うと30行くらいじゃないか?
0797デフォルトの名無しさんNGNG
>>792
まてまて、焦ってはいけない。
>>540から>>649が登場するまでだって、あれだけ時間がかかったのだ。
せめて1〜2日はまってやろうじゃないか。
0798デフォルトの名無しさんNGNG
>>762では速度が遅くても良いと書いてあるけど、
本当に速度を気にしなくても良いなら、qsortつかって7行プログラミングできそう。
0799デフォルトの名無しさんNGNG
>>798
がいしゅつです。
すでにBWTは7行プログラミングされてます。
0800デフォルトの名無しさんNGNG
800!
なんだもう7行で概出か・・・俺が間違ってたよ。
0801デフォルトの名無しさんNGNG
>>800
お前誰だよw

>>799
無かったぞ。それともたまたまdat落ちしているpart2にあったとでも?
都合がいいな。
0802デフォルトの名無しさんNGNG
ちゃんと圧縮まで出来ねーと無価値。
0803デフォルトの名無しさんNGNG
>>802
んなこたーない。
BWTに限らずデータ圧縮モデルは遺伝子解析や言語解析などでも使われている。
0804デフォルトの名無しさんNGNG
正直、短いだけのBWTなんてどうでもいいと思う。
0805デフォルトの名無しさんNGNG
>>804
J. Seward のオリジナルの実装や、Larrson-Sadakaneの実装、二段階ソート法は、
速い上にそこそこ短い(実質50-60行くらいか)。
0806760NGNG
その「実質」とかいう言い訳は見飽きた。
0807デフォルトの名無しさんNGNG
>>806
まったくだ。
いくら互換性や大量のコメントがあるからといって、実質を持ち出されてもね。
アルゴリズムそのものは単純なのにね。
0808デフォルトの名無しさんNGNG
いまさらブロックソーティングなんてどうでもいいと思う。
10年近くも前のアルゴリズムじゃないか。
0809デフォルトの名無しさんNGNG
>>806
アルゴリズムが同じでも、コーディング能力によって倍くらいコード長が違う。
ま、>>795,>>808と同じでいまさらBWTがどうしたなんかどうでもいいが。
0810デフォルトの名無しさんNGNG
「実質〜行」なんていう言い訳は見飽きたから、
さっさと30行で書いて見せろっつーの。
0811デフォルトの名無しさんNGNG
>>810
7行プログラミングスレにありましたよ
0812デフォルトの名無しさんNGNG
>>811
圧縮できる完動品が?
0813デフォルトの名無しさんNGNG
>>812
MTFとレンジエンコーダーもあるから、自分で組み合わせてみたら。

つーか、そもそもの発言は符号化までは含まない単体のBWTについてだったのでは?
0814デフォルトの名無しさんNGNG
あのな。540から延々「実際に圧縮できる」限定ソート(もどき)の
話してて、実際に完動するソースが出てて、
ソースのサイズ比べる話が出て、なんでそこだけ「符号化までは含まない
単体」の話になるんだよ。
0815デフォルトの名無しさんNGNG
>>814
知るかYo
0816デフォルトの名無しさんNGNG
>>815
そうかYo
0817デフォルトの名無しさんNGNG
>>815-816
も前らに聞いてないYo
0818デフォルトの名無しさんNGNG
>>814
それなら、その限定ソートの部分を完全ソートに置き換えればいいだけでは?
BWTは速度を気にしなければ、
・読み込んだバッファを2倍にして同じものをコピー(2行)
・インデックス生成(1行)
・ソート(qsortでも何でもいい)(1行)
・比較関数(2,3行)
・FirstIndexとソート結果のインデックスから文字を出力(4,5行)
で書けます。マルチで書けば、ほとんどが一行に収まります。
0819デフォルトの名無しさんNGNG
能書きはいいからさっさとやって見せろって。
0820デフォルトの名無しさんNGNG
>>819
7行スレのBWTを分解して>>649に組み込めYo
0821デフォルトの名無しさんNGNG
>>820
面倒だYo
お前がやってくれYo
0822デフォルトの名無しさんNGNG
書きたいものは何ですか  難しいものですか?
スレの中もログの中も  探したけど見つからないのに
まだまだ探す気ですか  それより自分で書いてみませんか?
BWTを BWTを 書いてみたいと思いませんか?
ウフッフー  ウフッフー  ウフッフー  さーあー!
0823デフォルトの名無しさんNGNG
>>822
BWTは7行スレpart2にあったはず。現在dat中。
0824デフォルトの名無しさんNGNG
あーもう、ごまかすなよ
0825デフォルトの名無しさんNGNG
>>786みろよ。
なんでqsortつかったトロいソート書くんだよ?

七行part2のブロックソートって

#include <stdlib.h>
typedef unsigned char b;e(b*s,b*d,int c){unsigned*o,i=0,r;o=calloc(65536,4);c--
;for(i;i<c;i++)o[s[i]<<8|s[i+1]]++;o[s[c]<<8|*s]++;for(i=1;i<65536;i++)o[i]+=o[
i-1];d[--o[s[c]<<8|*s]]=s[i=c-1];for(;i;i--)d[--o[s[i]<<8|s[i+1]]]=s[i-1];r=--o
[*s<<8|s[1]];d[r]=s[c];free(o);return r;}

これと

#include <stdlib.h>
typedef unsigned char B;void d(B*s,B*d,int c,unsigned x){unsigned*o,i,a=0,t[256
];memset(t,0,1024);for(i=--c;i;i--)t[s[i]]++;o=calloc(65536,4);for(;i<256;i++){
memset(d+a,i,t[i]);a+=t[i];}for(i=0;i<=c;i++)o[(s[i]<<8)+d[i]]++;for(i=1;i<
65536;i++)o[i]+=o[i-1];*d=d[x];d[c]=s[x];d[c-1]=s[--o[(d[c]<<8)+*d]];for(i=c;i>
2;i--)d[i-2]=s[--o[d[i-1]<<8|d[i]]];free(o);}

これと

#include <stdlib.h>
enum{S=256};typedef unsigned char UC;int cmp(void*a,void*b){return memcmp(a,b,S
);}UC*bs(UC*s,UC*d){UC*p,**t,i;p=malloc(S*2);t=malloc(S);for(i=0;i<S;i++)p[i]=p
[i+S]=s[i],t[i]=p+i;qsort(t,S,S,cmp);for(i=0;i<size;i++)if(p== t[i])break;*d++=
i;for(i=0;i<S;i++)d[i]=t[i][S-1];free(p);free(t);return --d;}

これくらいだぞ
0826デフォルトの名無しさんNGNG
限定ソートって、なんかメリットあるの?
デコるときの複雑さと遅さを考えると、使う気になれない。
0827デフォルトの名無しさんNGNG
別に複雑でもないみたいだが。
ケツから復元していけば良いだけだろ?
まぁ、キャッシュは外れまくりそうだが…
0828デフォルトの名無しさんNGNG
>>827
デコードは完全ソートの方がシンプルで高速だよね。
0829デフォルトの名無しさんNGNG
このスレの伸び具合はネタがあるかどうかじゃなくて
必死なヤツがいるかどうかだったのか…

おまいら必死だな(藁
0830デフォルトの名無しさんNGNG
BrainFuck <[+-.,]>
http://pc3.2ch.net/test/read.cgi/tech/1036013915/

圧縮してくれ
0831デフォルトの名無しさんNGNG
なんか物凄くどうでも良いことで言い争ってるように見える…
0832デフォルトの名無しさんNGNG
>>830
pc3.2ch.net/test/r.i/tech/1036013915

少し短くしますた。
0833デフォルトの名無しさんNGNG
結論:S Y N 逝 っ て よ し
糸冬 了
0834デフォルトの名無しさんNGNG
never
never
uzeee
0835shinnetNGNG
DGCAのソースは七行です
0836デフォルトの名無しさんNGNG
もうちょい実のある話をしなさい
0837デフォルトの名無しさんNGNG
でもまぁ、叩かれるだけマシだよなー。

話題にも上らないよりかは。。

0838デフォルトの名無しさんNGNG
そ、そんなことないですよっ!
ボクは、僕はyz2も大好きです!!
0839yz2NGNG
叩かれるのはイヤでつ。
0840デフォルトの名無しさんNGNG
っていうか、いつまでアルファなんだよ!>yz2
0841デフォルトの名無しさんNGNG
Cマガの記事によれば もーすぐ新しいバージョン出るらしいけど。
ベータになるのか、アルファのまんまか、はたまた出ないのか?
0842デフォルトの名無しさんNGNG
yz3のアルファ版
0843デフォルトの名無しさんNGNG
yz3とDGCAは統合されます。
0844デフォルトの名無しさんNGNG
HSP 最高
0845デフォルトの名無しさんNGNG
>>844
初耳です。

> HSP(High Speed signal Processor)
> 各種圧縮/伸張フォーマット(*2)に対応した高速DSPです。
うーん。アルゴリズムと関係あるのか?
0846デフォルトの名無しさんNGNG
>>540みたいのってAAのアシュークにイインジャネーノ?
同じ全角文字はたくさん出てくるだろうし
半角文字2つの同じ並びもたくさん出てくるだろうし。
0847デフォルトの名無しさんNGNG
まぁ、その、なんだ。
人様の作ったものに対して色々文句言ってるやつがいるが、
文句があるなら自分で作ればよかろう。
それも出来もしないなら、おとなしくいていろってこった。
0848デフォルトの名無しさんNGNG
>>847
激しく同意
0849デフォルトの名無しさんNGNG
>>847
同意。
0850デフォルトの名無しさんNGNG
>>847
まったく同意
■ このスレッドは過去ログ倉庫に格納されています