LHA Library for Java

jp.gr.java_conf.dangan.util.lha
Class DynamicHuffman

java.lang.Object
  extended by jp.gr.java_conf.dangan.util.lha.DynamicHuffman
All Implemented Interfaces:
java.lang.Cloneable

public class DynamicHuffman
extends java.lang.Object
implements java.lang.Cloneable

動的ハフマンを扱うクラス。

 -- revision history --
 $Log: DynamicHuffman.java,v $
 Revision 1.0  2002/07/24 00:00:00  dangan
 add to version control
 [bug fix]
     addLeaf() で葉の数が 1 から 2へと増加するときに
     最初からあった葉の重さが 1 だと決め付けていた。
 [change]
     コンストラクタ DynamicHuffman( int, int ) で
     開始時のハフマン木のサイズでなく 開始時の葉の数を渡すように変更。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の変更

 

Version:
$Revision: 1.0 $
Author:
$Author: dangan $

Field Summary
static int ROOT
          ハフマン木のルートを示す。
 
Constructor Summary
DynamicHuffman(int count)
          コンストラクタ
DynamicHuffman(int max, int first)
          コンストラクタ
 
Method Summary
 void addLeaf(int code)
          ハフマン木に code を示す葉を追加する。
 int childNode(int node)
          ノードが葉でないノードなら子ノードのノード番号、 ノードが葉ならノードの持つデータを全ビット反転したものを得る。 子ノードのノード番号は兄弟特性と利用するため、
node の 0 の子ノードの場合 childNode( node )
node の 1 の子ノードの場合 childNode( node ) - 1
となる。
 java.lang.Object clone()
          このオブジェクトの現在の状態を持つコピーを作成して返す。
 int codeToNode(int code)
          データからノード番号を得る。
 int parentNode(int node)
          node の親ノードのノード番号を得る。
 void update(int code)
          code の重みが増すようにハフマン木を更新する。
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ROOT

public static final int ROOT
ハフマン木のルートを示す。

See Also:
Constant Field Values
Constructor Detail

DynamicHuffman

public DynamicHuffman(int count)
コンストラクタ

Parameters:
count - 葉の数

DynamicHuffman

public DynamicHuffman(int max,
                      int first)
コンストラクタ

Parameters:
max - 葉の最大数
start - 開始時の葉の数
Method Detail

clone

public java.lang.Object clone()
このオブジェクトの現在の状態を持つコピーを作成して返す。

Overrides:
clone in class java.lang.Object
Returns:
このオブジェクトの現在の状態を持つコピー

codeToNode

public int codeToNode(int code)
データからノード番号を得る。

Parameters:
code - データ
Returns:
codeのノード番号

childNode

public int childNode(int node)
ノードが葉でないノードなら子ノードのノード番号、 ノードが葉ならノードの持つデータを全ビット反転したものを得る。 子ノードのノード番号は兄弟特性と利用するため、
node の 0 の子ノードの場合 childNode( node )
node の 1 の子ノードの場合 childNode( node ) - 1
となる。

Parameters:
node - ノード
Returns:
node の子ノードのノード番号

parentNode

public int parentNode(int node)
node の親ノードのノード番号を得る。

Parameters:
node - ノード
Returns:
node の親ノードのノード番号。

update

public void update(int code)
code の重みが増すようにハフマン木を更新する。

Parameters:
code - 重みを増やす葉

addLeaf

public void addLeaf(int code)
ハフマン木に code を示す葉を追加する。

Parameters:
code - 葉の示す符号
Throws:
java.lang.IllegalStateException - ハフマン木が十分に大きいため 葉が追加できない場合

LHA Library for Java

When you found typographical errors or omissions, Please mail to cqw10305@nifty.com
The company name and product name which are used in this document, it is the trademark or registered trademark of each company generally.
Copyright © 2001-2002 Michel Ishizuka. All Rights Reserved.