質問するログイン新規登録

回答編集履歴

5

概念説明を追記

2015/02/18 08:28

投稿

yohhoy
yohhoy

スコア6196

answer CHANGED
@@ -9,5 +9,10 @@
9
9
 
10
10
  たとえば [データ圧縮法概説](http://www.snap-tck.com/room03/c02/comp/comp.html) では、かなり丁寧にアルゴリズムを解説しています。
11
11
 
12
+ 残念ながらいずれのアルゴリズムも”簡単”とは言えませんが、超概念的な説明だけしておきます。
13
+ - エントロピー符号系:データの統計的な偏りを調べて、何度も登場する値には短い符号長(=出力するビットの長さ)を、あまり出てこない値には長い符号長を割り当てる。
14
+ - 辞書式符号系:データ自身を”辞書”つまり値並びのカタログとみなして、既出の値並びと一致したらそれを指す短いインデクス値を、新出の値並びならばそのまま出力する。
15
+
16
+
12
17
  いずれも数学的な考え方(情報理論)に基づいたアルゴリズムなので、既に実装されているコードだけ追いかけても、アルゴリズムの本質を理解するのは困難かと思います。結果的には、基礎的な理論から学習したほうが近道かもしれません。単に利用したいだけならば、既存ライブラリの活用を強くお勧めします。
13
18
 

4

refine

2015/02/18 08:28

投稿

yohhoy
yohhoy

スコア6196

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  > 簡単なアルゴリズムの名称と、簡単な処理の流れをご教授いただけないでしょうか。
6
6
  > また、実用的なアルゴリズムの名称も教えていただけたら幸いです。
7
7
 
8
- 古典かつ簡単なところでは「ランレングス圧縮(Run-Length encoding)」や、「ハフマン符号(Huffman coding)」「算術符号(Arithmetic coding)」から調べるのがよいと思います。また、本質的な方法論が異なる「LZ77, LZ78アルゴリズム」あたりが入門向けでしょうか。前者はエントロピー符号(Entropy coding)に、後者は辞書式符号(Dictionary coding)/ユニバーサル符号(Universal coding)に区分されます。
8
+ 古典かつ簡単なところでは「ランレングス圧縮(Run-Length encoding)」や、「ハフマン符号(Huffman coding)」「算術符号(Arithmetic coding)」から調べるのがよいと思います。また、本質的な方法論が異なる「LZ77, LZ78アルゴリズム」あたりが入門向けでしょうか。前者はエントロピー符号(Entropy coding)に、後者は辞書式符号(Dictionary coding)に区分されます。
9
9
 
10
10
  たとえば [データ圧縮法概説](http://www.snap-tck.com/room03/c02/comp/comp.html) では、かなり丁寧にアルゴリズムを解説しています。
11
11
 

3

いろいろついき

2015/02/18 08:16

投稿

yohhoy
yohhoy

スコア6196

answer CHANGED
@@ -5,10 +5,9 @@
5
5
  > 簡単なアルゴリズムの名称と、簡単な処理の流れをご教授いただけないでしょうか。
6
6
  > また、実用的なアルゴリズムの名称も教えていただけたら幸いです。
7
7
 
8
- 古典かつ簡単なところでは「ランレングス(run length)」「ハフマン符号(Huffman coding)」「算術符号(Arithmetic coding)」から調べるのがよいと思います。
8
+ 古典かつ簡単なところでは「ランレングス圧縮(Run-Length encoding)」や、「ハフマン符号(Huffman coding)」「算術符号(Arithmetic coding)」から調べるのがよいと思います。また、本質的な方法論が異なる「LZ77, LZ78アルゴリズム」あたりが入門向けでしょうか。前者はエントロピー符号(Entropy coding)に、後者は辞書式符号(Dictionary coding)/ユニバーサル符号(Universal coding)に区分されます。
9
9
 
10
- [データ圧縮法概説](http://www.snap-tck.com/room03/c02/comp/comp.html)で、かなり丁寧にアルゴリズムを解説しています。
10
+ たとえば [データ圧縮法概説](http://www.snap-tck.com/room03/c02/comp/comp.html) 、かなり丁寧にアルゴリズムを解説しています。
11
11
 
12
+ いずれも数学的な考え方(情報理論)に基づいたアルゴリズムなので、既に実装されているコードだけ追いかけても、アルゴリズムの本質を理解するのは困難かと思います。結果的には、基礎的な理論から学習したほうが近道かもしれません。単に利用したいだけならば、既存ライブラリの活用を強くお勧めします。
12
13
 
13
- いずれも数学的な考え方(情報理論)に基づいたアルゴリズムなので、既に実装されているコードだけ追いかけても、アルゴリズムの本質を理解するのは困難かと思います。結果的には、基礎的な理論から学習したほうが近道かもしれません。(単に利用したいだけなら、既存ライブラリの活用を強くお勧めします)
14
-

2

fix link

2015/02/18 08:14

投稿

yohhoy
yohhoy

スコア6196

answer CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  古典かつ簡単なところでは、「ランレングス法(run length)」「ハフマン符号(Huffman coding)」「算術符号(Arithmetic coding)」から調べるのがよいと思います。
9
9
 
10
- こちら http://www.snap-tck.com/room03/c02/comp/comp.html のページでかなり丁寧に解説しています。
10
+ [データ圧縮法概説](http://www.snap-tck.com/room03/c02/comp/comp.html)かなり丁寧にアルゴリズムを解説しています。
11
11
 
12
12
 
13
13
  いずれも数学的な考え方(情報理論)に基づいたアルゴリズムなので、既に実装されているコードだけ追いかけても、アルゴリズムの本質を理解するのは困難かと思います。結果的には、基礎的な理論から学習したほうが近道かもしれません。(単に利用したいだけなら、既存ライブラリの活用を強くお勧めします)

1

参考リンク追加

2015/02/18 07:51

投稿

yohhoy
yohhoy

スコア6196

answer CHANGED
@@ -7,5 +7,8 @@
7
7
 
8
8
  古典かつ簡単なところでは、「ランレングス法(run length)」「ハフマン符号(Huffman coding)」「算術符号(Arithmetic coding)」から調べるのがよいと思います。
9
9
 
10
+ こちら http://www.snap-tck.com/room03/c02/comp/comp.html のページでかなり丁寧に解説しています。
11
+
12
+
10
13
  いずれも数学的な考え方(情報理論)に基づいたアルゴリズムなので、既に実装されているコードだけ追いかけても、アルゴリズムの本質を理解するのは困難かと思います。結果的には、基礎的な理論から学習したほうが近道かもしれません。(単に利用したいだけなら、既存ライブラリの活用を強くお勧めします)
11
14