net.wasamon.mjlib.util
クラス Huffman

java.lang.Object
  上位を拡張 net.wasamon.mjlib.util.Huffman

public class Huffman
extends java.lang.Object

ハフマン符号のエンコード/デコードを行う

バージョン:
$Id: Huffman.java,v 1.8 2004/05/24 00:59:45 miyo Exp $
作成者:
Takefumi MIYOSHI

入れ子のクラスの概要
(package private)  class Huffman.Code
           
(package private)  class Huffman.CodeTable
           
(package private)  class Huffman.Node
          unit単位毎のデータとその出現回数を保持するクラス ハフマン木の単位となる
(package private)  class Huffman.NodeArrayList
          パターンの集合を保持するクラス
 
フィールドの概要
private  int originaldata
          元のデータの大きさ
private  Huffman.Node root
          ハフマン木のルートとなるノードを保持
private  Huffman.CodeTable table
          変換テーブル
private  int wordunit
          与えるデータの単位(何バイトを一つの単語としてみるか)
 
コンストラクタの概要
Huffman(int unit)
          Huffman符号を構成するコンストラクタ
 
メソッドの概要
 void decode()
          デコードを行う
 java.lang.String encode(byte[] data)
          エンコードを行う
private  Huffman.NodeArrayList getRepetition(byte[] data)
           
static void main(java.lang.String[] args)
          ハフマン符号を用いたテストを行う.
private  Huffman.Node makeHuffmanTree(Huffman.NodeArrayList ptn)
          ハフマン木をつくる
private  void maketable(Huffman.Node root)
           
private  void maketable(Huffman.Node root, java.lang.String code)
           
 void print()
          生成されたハフマン符号のコードを表示する
private  Huffman.NodeArrayList sort(Huffman.NodeArrayList ptn)
          与えられたパターンリストを出現頻度で降順にソートする とりあえず,単純なソート
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

wordunit

private int wordunit
与えるデータの単位(何バイトを一つの単語としてみるか)


root

private Huffman.Node root
ハフマン木のルートとなるノードを保持


originaldata

private int originaldata
元のデータの大きさ


table

private Huffman.CodeTable table
変換テーブル

コンストラクタの詳細

Huffman

public Huffman(int unit)
Huffman符号を構成するコンストラクタ

パラメータ:
unit - データの単位(unit*8bit)ずつパーズする
メソッドの詳細

getRepetition

private Huffman.NodeArrayList getRepetition(byte[] data)

sort

private Huffman.NodeArrayList sort(Huffman.NodeArrayList ptn)
与えられたパターンリストを出現頻度で降順にソートする とりあえず,単純なソート

パラメータ:
ptn - NodeArrayList
戻り値:
降順でソートしたパターンの集合

makeHuffmanTree

private Huffman.Node makeHuffmanTree(Huffman.NodeArrayList ptn)
ハフマン木をつくる

パラメータ:
ptn_orig - 出現頻度とそのデータのパターンの集合
戻り値:
ハフマン木のルートノード

encode

public java.lang.String encode(byte[] data)
                        throws HuffmanException
エンコードを行う

パラメータ:
data - 入力データの列
戻り値:
エンコード後のデータ.二進文字列
例外:
HuffmanException

maketable

private void maketable(Huffman.Node root)

maketable

private void maketable(Huffman.Node root,
                       java.lang.String code)

decode

public void decode()
デコードを行う


print

public void print()
生成されたハフマン符号のコードを表示する


main

public static void main(java.lang.String[] args)
                 throws HuffmanException
ハフマン符号を用いたテストを行う. args[0] ワード単位の指定. args[1] 符号化したい文字列.

例外:
HuffmanException