【2ch】圧縮アルゴリズム【オリジナル】
■ このスレッドは過去ログ倉庫に格納されています
00011
NGNG中途半端に圧縮されて拡張子が.2ch
0488デフォルトの名無しさん
NGNGこんばんは、厨房その1です。
恥ずかしながら、仰るとおりです。
0489デフォルトの名無しさん
NGNGsuffix-tree と パトリシアトライの区別がつかないんだけど…
0490デフォルトの名無しさん
NGNG同じです。
派閥(?)によって呼び方が違うだけのようです。
0491デフォルトの名無しさん
NGNGさんきゅ
0492零細リーマソ ◆eXL7Vooglk
NGNG今HDDにあるファイルで手当たり次第テストしてるが、MAXでも元サイズの12%にしかならない。
(しかもlzhやzip,jpgなどのファイルでも!)
ちょっと怖くなってきた。。
(当然可逆圧縮。)
詳しくはいえないので簡単に言うと複素数平面を使用した圧縮。(+Zオーダー)
辞書とかは持たずにほぼ数式のみで成り立ってる。
こんなんになるとは夢にも思わんかった・・。
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNGそのネタは1年ほど前に見たことがあるような…
0495デフォルトの名無しさん
NGNGソースあげれ.もしくはバイナリ.
0496零細リーマソ ◆eXL7Vooglk
NGNG(バイナリ解析されると怖いんで)
改善点はスピード。
これが今のところかなり遅い。(同種系の3〜5倍くらい遅い)
0497デフォルトの名無しさん
NGNG特許つったって公開されるんだから
ソース出したって変わらんと思うがな。
0498デフォルトの名無しさん
NGNG中途半端なネタは最悪。
お前の頭で理解できるようなアルゴリズムか、
このスレの誰も理解できないような複雑なアルゴリズムを出せ。
0499デフォルトの名無しさん
NGNG複雑なアルゴリズムは圧縮にはむかないとおもわれ。
0500デフォルトの名無しさん
NGNGこのサイトでもう少し圧縮について基本的なことを勉強したほうがいいですよ。
ttp://www.ingnet.or.jp/~kojif/mu/comp/
0501デフォルトの名無しさん
NGNGな罠
0502 ◆SIA81xrZRg
NGNG0503デフォルトの名無しさん
NGNGタワラ
0504デフォルトの名無しさん
NGNGソース公開すると(下手したらバイナリ公開も)特許は取れなくなるかと。
0505デフォルトの名無しさん
NGNG伊藤家の食卓にハガキだしとけ
0506デフォルトの名無しさん
NGNGですね。
学会発表なら特許取得もできるので、すぐさま
情報処理学会、電子情報通信学会、情報理論とその応用学会、IEEE、ACM
のどれかに投稿しる!
レターの形でもいいから。
0507デフォルトの名無しさん
NGNG従って、単なるネタ。
0508デフォルトの名無しさん
NGNG○算術圧縮
0509デフォルトの名無しさん
NGNG特定のデータに対してなら劇的に圧縮率を上げることができると思う。
たとえば、実行ファイルなら実行ファイルの特徴があり、
その構造を整理することで大幅な圧縮が可能だろう。
つまり、圧縮・解答ソフト自身がMFCやglibなどを持っていて、
それを辞書として使えば、そのライブラリを使って作られた
ファイルは圧縮データにライブラリを含まなくても良くなる。
また、ループや関数呼び出しなどの制御構造を解析すれば、jmp文と
目的アドレスデータを大幅に削除できる。
また、画像や音楽の圧縮もJPEGやMPEGよりフラクタル理論を使った方が
圧縮率が高くなることが知られている。
0510デフォルトの名無しさん
NGNGデータの種別に応じて圧縮法をチューニングするのは、
あるいは専用の圧縮法を使うのは、ツールとしては確かに有効です。
しかし、圧縮理論で最も重視される性質の一つである、
ユニバーサル性を失うことになるため、拒絶する人は多いかもしれません。
>フラクタル理論を使った方が
これは現在のところ、どちらとも言えない状態です。
というのも、たとえば画像データは有限画素値で有限画素数であるため、
フラクタル変換した場合の情報の相似がいまいちだからです。
そのため、計算機上のデータに対してはフラクタル圧縮はそこそこにしかなりません。
しかし、フラクタル発見の効率はよいため、
・画素の類似性を計測するためにフラクタルを使う(文脈として使う)
・線形走査法(ヒルベルト走査など)に組み合わせて、1次元上でのフラクタル圧縮を行う
などの研究が行われているようです。
0511デフォルトの名無しさん
NGNG寒いですよ。ネタバレバレ。頭が悪いこともバレてます。
もっと圧縮の勉強をしてから書いてください。
0512デフォルトの名無しさん
NGNG0513デフォルトの名無しさん
NGNGおまえばかだな。
0514デフォルトの名無しさん
NGNGlzhやzipが、さらに圧縮できていることを考えると、
ファイル名が
00000000000000000000000000000000000000000.txt
のようなものだったと思われる。
0515デフォルトの名無しさん
NGNG新圧縮キタ━━━━━━(゚∀゚)━━━━━━ !!
0KByteのファイルを作り、ファイル内容をBASE64でエンコードして名前に設定
完璧!!
0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG圧縮カコイイ!
0518デフォルトの名無しさん
NGNGttp://homepage2.nifty.com/rohizuka/ka/pa_003_a.htm
0519デフォルトの名無しさん
NGNGぐはっ、これでひっかかったの4回目です。宇都田。
0520デフォルトの名無しさん
NGNG一生、呪ってやる。
0521デフォルトの名無しさん
NGNG1つの文字を1,2バイトまで圧縮できるんだから。
究極のモデル化だね。
解凍するために必要なデータは膨大だけどね(フォントデータ)。
但し、ない文字は使えない、または外字を入れると
サイズが膨大になるという欠点も持っている。
さらに圧縮かけると最強。
実はテキストって凄いのですよ。
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGおまい、それ静的辞書法っていうってこと知ってます?
0524デフォルトの名無しさん
NGNGするとUnicodeはごく僅かに劣化する非可逆圧縮でつかね?
0525アフォ
NGNG640x400の時代にね。
画面を8bitx8bitで区切る。
同じ図形に同じ番号ふる。
最大で4096パターン。
頻繁に出現する番号に小さいのを当てる。
・図形個数出力。
・図形データ出力。
・マップ出力。
・ハフマンライブラリを経由してファイル出力。
2画面目では変化のある部分だけについて上の
パターンを適用する。
って動いた時、これは静的辞書法?動的辞書法?
0526デフォルトの名無しさん
NGNGネタにマジレス(プ
0527アフォ
NGNG0528デフォルトの名無しさん
NGNG0529デフォルトの名無しさん
NGNGsample.txt
Rシナd儁eキ。h"; I J喨
↓
圧縮後
Uu+9vO++hQVk5YSBZe+9txnvvaFoBSI7IAIgSSAgICDCgAEBSgHllqg=.txt
sample
0530デフォルトの名無しさん
NGNGちがいます。保健体育だけ中途半端に知ってる厨房の集まりです。ここは。
0531デフォルトの名無しさん
NGNGああああああああ
というのがあったら
8あ
と圧縮する
0532デフォルトの名無しさん
NGNGランレングスがどうかしましたか?
その方式だと
Boooooooooooooooom!
位だと思われ。圧縮できるのは。
まぁ、辞書の話になるんだろうな。
0533デフォルトの名無しさん
NGNG↓
3うへ4へ
こうなっていくのか。辞書か。そうか。
0534デフォルトの名無しさん
NGNGRLEって辞書必要だったのか…
0535デフォルトの名無しさん
NGNGいや、いろいろ突き詰めていくとそっちの方向に向かうなってこと。
0536デフォルトの名無しさん
NGNGで、結局 LZ77 か LZ78 の類似品になるわけですね…
0537デフォルトの名無しさん
NGNGそこから、2バイトのCRC値を得る。
そのCRC値を元に、それが得られるようなデータを複数求め、
元のデータがその何番目に当たるかを求める。
もし、256番目以前であれば、元のデータは、CRC値と番号の合計3バイトで表す
ことができる。
256を超えた場合、9バイトで試してみる。それでもダメな場合、8バイトで試してみる。
どうしてもダメな場合、ダメであったことを表す1ビットのフラグをつけ、
元のデータをそのまま保存する。
0538デフォルトの名無しさん
NGNG時間がやたらとかかるよーな…
あとさぁ 00 00 00 00 00 00 00 00 00 00 から
そのCRC値になるまでインクリメントして256個だけ、
っつー事であれば 圧縮できるのは
00 00 00 00 00 00 00 00 ?? ?? みたいな並びばっかにならんか?
0539デフォルトの名無しさん
NGNG他の圧縮方法で圧縮できそうなデータは故意に飛ばせば良い。
入力データの先頭から順番に出力していく
という感じのモデルって既にあるでしょうか。
性能はイマイチ。
例えば、記号を{ a, b, c }の3種類として
入力データを{ abcacacabca }とする。
まず、a の次に出現する記号を順番に出力すると
bccb
となる。b, c についても同様に出力すると
bccb cc aaaa
となる。以上。
説明の為に多少簡略化してあり、
この出力だけでは当然復元できません。
(このやり方なら入力データの頭と尻の記号が必要になる)
速度・メモリを無視すれば、オーダーを増やしていっても復元可能です。
(aaの次の記号を出力、baの次の記号を出力・・・)
0541デフォルトの名無しさん
NGNGデータ量が減ってない気がするんですが。
0542デフォルトの名無しさん
NGNGモデルだからな。
0544デフォルトの名無しさん
NGNGまた、アルファベットのみの場合には妙に効果があるってヤツ?
0546デフォルトの名無しさん
NGNG漏れの少ない脳みそを検索した結果だな……(・∀・)イイ!。行けると思う。
マジで。
0547デフォルトの名無しさん
NGNG>>540 を実装してみた。符号化してないのでサイズ増えるけどw
復元の為の付加情報は符号化のときに一緒に折り込むのがいいかな?
0548デフォルトの名無しさん
NGNG>符号化してないのでサイズ増えるけどw
その処理を通す前と通した後のデータをそれぞれLZHか何かで適当に圧縮してみそ。
それで圧縮率が変わるようならモデルとしては優秀なんじゃない。
なるべく大きなデータがいいね。当然jpegやmp3はダメだぞ。
0549デフォルトの名無しさん
NGNG0550540
NGNGコンパイルしてないけど、
入力データの最初と最後に記号a を付加して、
それごとエンコードすれば、復元の為の付加情報は必要なくなると思う。
どっちがいいのか分からないけど。
...aaa abcacacabca a
0551デフォルトの名無しさん
NGNG0552540
NGNG<エンコード>
入力:a abcacacabca a
aの次:abccba
bの次:cc
cの次:aaaa
出力:abccbaccaaaa
<デコード>
入力:abccbaccaaaa
aの数:6個、bの数:2個、cの数:4個より、
abccba cc aaaa
とわかり、aから始まるので、順にたどれば、
aabcacacabcaa
となり、先頭と最後を取り除けば、
出力:abcacacabca
ダメかな…。
0553デフォルトの名無しさん
NGNGよーわからんが 最後の a って付加する必要ある?
055457
NGNGいいんじゃない?
その方法なら先頭にa(実際の実装なら'\0'か?)を付けるだけで良いと思う。
あと、その方法、なんかBlockSortingの復号みたいだな
#自分でも>>540を実装してみたけど逆に圧縮率落ちた。鬱。
0555540
NGNGたぶんない。
デコードの際、各記号の数を数えるときに都合がよかったのかな。
>>554
大量の文脈を使えばある程度効果はあると思うけど、
力不足で実装できませんでした。
0556デフォルトの名無しさん
NGNG>aの数:6個、bの数:2個、cの数:4個より、
なぜ「cの数:4個」とわかるのか?と小一時間問い詰めたい。
0557デフォルトの名無しさん
NGNGcという文字の前に来ている文字が4個、また最初の文字はaなので、cは4個
じゃないのかなぁ・・・
0558デフォルトの名無しさん
NGNG逆転文字列をブロックソートした状態になるんじゃないか?
0559540
NGNG「aの数:6個、bの数:2個、cの数:4個より」
というのは、デコード時の入力データ「abccbaccaaaa」
の各記号の個数を数えただけです。
エンコード時、最初と最後にaを付け加えることにより、
上のように単純に数えることができると考えたんだと思いますが、
余計だったかもしれません。
理屈は>>557の通り。
> 逆転文字列をブロックソートした状態になるんじゃないか?
ですね。
出力結果がブロックソート法より良くなることは無いです。
0560デフォルトの名無しさん
NGNG新しい発想でかんがえようよ!
定石やあるゴリ図無なんてクソ倉枝よ!
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG符号化はもうほとんど算術符号になってるよ。
一部の分野でGolomb符号などが使われているくらい。
今問題にしているのはモデル化の話。
0563デフォルトの名無しさん
NGNG算術符号は特許問題がやっかいなので使わぬが吉。
RangeCoderにしとけ。
0564デフォルトの名無しさん
NGNGRangeCoderも白っぽいけど灰色という罠
0565デフォルトの名無しさん
NGNG0566これでええやんけ
NGNG// 希望の圧縮率にできる限り近い圧縮をおこなっちゃうよっ
bool compresser(void *soce //圧縮対象メモリ
,int soce_size //圧縮対象メモリサイズ
,void *dest //展開先メモリ
,int dest_size //展開先メモリサイズ
,int compress_rate) //希望の圧縮率
{
if( compress_rate<1 || 99<compress_rate ){
printf("1〜99 の間で指定しろや!");
return false;
}
for(int i=0,w=0; i<soce_size; i++){
if( (rand()%100) > compress_rate ) continue;
if( dest_size>=w ){
ptinrf("展開先ちゃんと確保しろや!");
retunr false;
}
dest[w++] = soce[i];
}
print("%d%に圧縮しますた[ハート]",w*100/soce_size);
return true;
}
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG99を指定すると無圧縮に…
0569デフォルトの名無しさん
NGNGfile.open();String content = file.readAll();file.close();
file.rename(Base64.encode(content));
file.open();file.write(filename);file.close();
0570デフォルトの名無しさん
NGNG_( ´∀`) (´∀` )
三(⌒), ノ⊃ ( >>1 .) 糞スレは
 ̄/ /) ) | | |
. 〈_)\_) (__(___)
∧_∧ .∧_∧
( ´∀) (´∀` )
≡≡三 三ニ⌒) >>1 .) 立てるなって
/ /) )  ̄.| | |
〈__)__) (__(___)
∧_∧ ,__ ∧_∧
( ´)ノ ):;:;)∀`)
/  ̄,ノ'' >>1 . ) 言ってるだろうが
C /~ / / /
/ / 〉 (__(__./
\__)\)
ヽ l //
∧_∧(⌒) ―― ☆ ―――
( ) /|l // | ヽ ヴォケがーー!
(/ ノl|ll / / | ヽ
(O ノ 彡'' / .|
/ ./ 〉
\__)_)
0571566
NGNGおお、そだな。 0-99の乱数発生だな。
rand関数 滅多につかわんので、まちがえちまった。 % 演算把握の問題って向きもあるが。
> if( ((rand()%100)+1) > compress_rate ) continue;
こんな感じでかんべんしてくれ。
0572デフォルトの名無しさん
NGNGBlockSortingみたいにMoveToFrontにして前の出力との
位置の差を算術符号かstart-step-stop符号で符号化す
れば圧縮できるだろう。
たぶん、素の(0次の)MTFよりは良くて、BlockSortよりは
悪い、実に中途半端な圧縮率が得られてスレの主旨に
ぴったりでは。速度も中間になる(BSよりはだいぶ速い)
はず。
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNG圧縮は当然できるだろ。
0次のMTFと比べてどうかはわからんが。
0575デフォルトの名無しさん
NGNGなんでできると思うんだ?
0576540
NGNG1次に限らずとも可能ですよ。
おっしゃるとおり、2次程度の540 → MTF → 算術でそれなりに縮みます。
大量の文脈を使用する場合、>>547のソースでいう code_count の
扱いが問題になると思います。
0577デフォルトの名無しさん
NGNGいや、これ次数を高くしたらつまんないと思う。
普通のPPMコーダとかの、高次混合モデルを
作るやつの方が良くなっちゃう。
単にバッファを1MBくらいに大きくしてみれば?
0578540
NGNGそうかもしれませんね。
ただ、1次と2次の性能の差はかなり大きかったです。
バッファは8Mでテストしたと思いますが、
これを増やしてもそれほど意味は無いはず。
0579デフォルトの名無しさん
NGNG>>572
0次と1次じゃなくて、1次と2次では? 540のアルゴリズムは2次の
エントロピーコーダですよね。
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNGこんなのがあった…。
0582デフォルトの名無しさん
NGNG>>572を実装しますた。頻度表も>>552と同じような方法で追い出し。
SSS符号はイマイチな予感(LZFGで使ってるの位しか知らない…)。
次のアプローチとしてはSSSの代わりに連長+RangeCoderを導入するか
二次化なんだろうけど、さて。
0584デフォルトの名無しさん
NGNGでは次のネタどうぞ。
0585デフォルトの名無しさん
NGNGなんでこれで圧縮できると思うの?
0586デフォルトの名無しさん
NGNGMTFとは違う特徴をもったアルゴリズムを作りたかったからだろう。
実際、MTFでは理論的・実践的にいまいちな場面というものが存在する。
普通の定常無記憶情報源での比較ではなく、
特殊な状況で役に立つアルゴリズムというのを考えてみるのもよい。
オレは上の関連で論文を一本書いた。
0587デフォルトの名無しさん
NGNG情報理論の分かるヤツと
分からないけどとりあえずコードを書いて分かったつもりになってるヤツと
分からないのでひたすら煽るだけのヤツがいゐ…
■ このスレッドは過去ログ倉庫に格納されています