LHA Library for Java

jp.gr.java_conf.dangan.util.lha
クラス HashAndBinaryTreeSearch

java.lang.Object
  拡張jp.gr.java_conf.dangan.util.lha.HashAndBinaryTreeSearch
すべての実装インタフェース:
LzssSearchMethod

public class HashAndBinaryTreeSearch
extends Object
implements LzssSearchMethod

ハッシュと二分木を使った LzssSearchMethod の実装。

 データ圧縮ハンドブック[改定第二版]
        M.ネルソン/J.-L.ゲィリー 著
                萩原剛志・山口英 訳
                  ISBN4-8101-8605-9
                             5728円(税抜き,当方の購入当時の価格)
 
を参考にした。
二分木では、最長一致を見つけることはできるが、 最も近い一致を見つけられるとは限らないため、 LZSSで 一致位置が近い場所に偏る事を 利用するような -lh5- のような圧縮法では、 圧縮率はいくらか低下する。
 -- revision history --
 $Log: HashAndBinaryTreeSearch.java,v $
 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [change]
     LzssSearchMethod のインタフェイス変更にあわせてインタフェイス変更
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 

バージョン:
$Revision: 1.0 $
作成者:
$Author: dangan $

コンストラクタの概要
HashAndBinaryTreeSearch(int DictionarySize, int MaxMatch, int Threshold, byte[] TextBuffer)
          ハッシュと二分木を使用した検索機構を構築する。
HashAndBinaryTreeSearch(int DictionarySize, int MaxMatch, int Threshold, byte[] TextBuffer, String HashMethodClassName)
          ハッシュと二分木を使用した LzssSearchMethod を構築する。
 
メソッドの概要
 void put(int position)
          position から始まるデータパタンを ハッシュと二分木を使用した検索機構に登録する。
 int putRequires()
          put() または searchAndPut() を使用して データパタンを二分木に登録する際に 必要とするデータ量を得る。
 int search(int position, int lastPutPos)
          ハッシュと二分木を使用した検索機構に登録されたデータパタンを検索し position から始まるデータパタンと最長の一致を持つものを得る。
 int searchAndPut(int position)
          ハッシュと二分木を使用した検索機構に登録された データパタンから position から始まるデータパタンと 最長の一致を持つものを検索し、 同時に position から始まるデータパタンを ハッシュと二分木を使用した検索機構に登録する。
 void slide()
          TextBuffer内の position までのデータを前方へ移動する際、 それに応じて ハッシュと二分木を使用した検索機構を構成するデータも TextBuffer内のデータと矛盾しないように前方へ移動する処理を行う。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

HashAndBinaryTreeSearch

public HashAndBinaryTreeSearch(int DictionarySize,
                               int MaxMatch,
                               int Threshold,
                               byte[] TextBuffer)
ハッシュと二分木を使用した検索機構を構築する。
ハッシュ関数はデフォルトのものを使用する。

パラメータ:
DictionarySize - 辞書サイズ
MaxMatch - 最長一致長
Threshold - 圧縮、非圧縮の閾値
TextBuffer - LZSS圧縮を施すためのバッファ

HashAndBinaryTreeSearch

public HashAndBinaryTreeSearch(int DictionarySize,
                               int MaxMatch,
                               int Threshold,
                               byte[] TextBuffer,
                               String HashMethodClassName)
ハッシュと二分木を使用した LzssSearchMethod を構築する。

パラメータ:
DictionarySize - 辞書サイズ
MaxMatch - 最長一致長
Threshold - 圧縮、非圧縮の閾値
TextBuffer - LZSS圧縮を施すためのバッファ
HashMethodClassName - Hash関数を提供するクラス名
例外:
NoClassDefFoundError - HashMethodClassName で与えられたクラスが 見つからない場合。
InstantiationError - HashMethodClassName で与えられたクラスが abstract class であるためインスタンスを生成できない場合。
NoSuchMethodError - HashMethodClassName で与えられたクラスが コンストラクタ HashMethod( byte[] ) を持たない場合
メソッドの詳細

put

public void put(int position)
position から始まるデータパタンを ハッシュと二分木を使用した検索機構に登録する。

定義:
インタフェース LzssSearchMethod 内の put
パラメータ:
position - TextBuffer内のデータパタンの開始位置

searchAndPut

public int searchAndPut(int position)
ハッシュと二分木を使用した検索機構に登録された データパタンから position から始まるデータパタンと 最長の一致を持つものを検索し、 同時に position から始まるデータパタンを ハッシュと二分木を使用した検索機構に登録する。

定義:
インタフェース LzssSearchMethod 内の searchAndPut
パラメータ:
position - TextBuffer内のデータパタンの開始位置。
戻り値:
一致が見つかった場合は LzssOutputStream.createSearchReturn によって生成された一致位置と一致長の情報を持つ値、 一致が見つからなかった場合は LzssOutputStream.NOMATCH。
関連項目:
LzssOutputStream.createSearchReturn(int,int), LzssOutputStream.NOMATCH

search

public int search(int position,
                  int lastPutPos)
ハッシュと二分木を使用した検索機構に登録されたデータパタンを検索し position から始まるデータパタンと最長の一致を持つものを得る。
TextBuffer.length < position + MaxMatch となるような position では、 二分木を完全に走査しないため最長一致を得られるとは限らない。

定義:
インタフェース LzssSearchMethod 内の search
パラメータ:
position - TextBuffer内のデータパタンの開始位置。
lastPutPos - 最後に登録したデータパタンの開始位置。
戻り値:
一致が見つかった場合は LzssOutputStream.createSearchReturn によって生成された一致位置と一致長の情報を持つ値、 一致が見つからなかった場合は LzssOutputStream.NOMATCH。
関連項目:
LzssOutputStream.createSearchReturn(int,int), LzssOutputStream.NOMATCH

slide

public void slide()
TextBuffer内の position までのデータを前方へ移動する際、 それに応じて ハッシュと二分木を使用した検索機構を構成するデータも TextBuffer内のデータと矛盾しないように前方へ移動する処理を行う。

定義:
インタフェース LzssSearchMethod 内の slide

putRequires

public int putRequires()
put() または searchAndPut() を使用して データパタンを二分木に登録する際に 必要とするデータ量を得る。
二分木は登録の際にデータパタンを構成する 全て(MaxMatchバイト)のデータを必要とする。

定義:
インタフェース LzssSearchMethod 内の putRequires
戻り値:
コンストラクタで与えた MaxMatch

LHA Library for Java

バグやドキュメントの誤りの報告は作者宛てにお願いします。
ドキュメント内に含まれる社名、製品名については一般に各社の商標または登録商標です。
Copyright © 2001-2002 Michel Ishizuka. All Rights Reserved.