JPH0997163A - データ圧縮方法 - Google Patents
データ圧縮方法Info
- Publication number
- JPH0997163A JPH0997163A JP27665195A JP27665195A JPH0997163A JP H0997163 A JPH0997163 A JP H0997163A JP 27665195 A JP27665195 A JP 27665195A JP 27665195 A JP27665195 A JP 27665195A JP H0997163 A JPH0997163 A JP H0997163A
- Authority
- JP
- Japan
- Prior art keywords
- data
- dictionary
- data string
- registration
- registered
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】
【課題】 辞書を使用したデータ圧縮方法に於いて、圧
縮処理に1回も使用されないデータが辞書に登録されな
いようにすると共に、辞書作成初期段階に於いて長いデ
ータ列を登録できるようにする。 【解決手段】 辞書登録データ作成手段10は、入力デ
ータ列90中の前回辞書40に登録したデータ列の次の
データをスタートポジションとするデータ列の内、辞書
40に登録済みのデータ列との一致部分の長さが最も長
い最長一致データ列をサーチする。最長一致データ列の
所定の長さよりも長い場合は、最長一致データ列と、そ
の後に連続して存在する、前記辞書に登録済みのデータ
列との一致長が所定の長さよりも長い全てのデータ列
と、その直後に存在する所定長のデータとを結合したデ
ータを辞書登録データとする。圧縮手段30は、辞書登
録データ作成手段10がスタートポジションとしたデー
タから辞書40を使用した圧縮処理を行う。
縮処理に1回も使用されないデータが辞書に登録されな
いようにすると共に、辞書作成初期段階に於いて長いデ
ータ列を登録できるようにする。 【解決手段】 辞書登録データ作成手段10は、入力デ
ータ列90中の前回辞書40に登録したデータ列の次の
データをスタートポジションとするデータ列の内、辞書
40に登録済みのデータ列との一致部分の長さが最も長
い最長一致データ列をサーチする。最長一致データ列の
所定の長さよりも長い場合は、最長一致データ列と、そ
の後に連続して存在する、前記辞書に登録済みのデータ
列との一致長が所定の長さよりも長い全てのデータ列
と、その直後に存在する所定長のデータとを結合したデ
ータを辞書登録データとする。圧縮手段30は、辞書登
録データ作成手段10がスタートポジションとしたデー
タから辞書40を使用した圧縮処理を行う。
Description
【0001】
【発明の属する技術分野】本発明は、入力データ列を圧
縮するデータ圧縮方法に関し、特に、Lempel−Z
iv方式の静的辞書法によるデータ圧縮方法に関する。
縮するデータ圧縮方法に関し、特に、Lempel−Z
iv方式の静的辞書法によるデータ圧縮方法に関する。
【0002】
【従来の技術】入力データ列を圧縮するデータ圧縮方法
としては、従来から種々のものが提案されており、その
中の1つにLempel−Zivが提案したLZ78
(静的辞書法)がある。
としては、従来から種々のものが提案されており、その
中の1つにLempel−Zivが提案したLZ78
(静的辞書法)がある。
【0003】この方法は、入力データ列に対し、辞書に
登録済みのデータ列が存在するか否かをチェックし、登
録済みのデータ列が存在しない場合には、入力データ列
自身と非圧縮を示す1ビットの識別子とを圧縮データと
して出力する。一方、辞書中に登録済みのデータ列が存
在する場合には、一致が検出されたデータ列については
それに対応する辞書のエントリ番号と圧縮を示す1ビッ
トの識別子とを圧縮データとして出力する。そして、上
記した圧縮のステップ完了後に、辞書登録のステップを
実行し、圧縮の対象となった入力データ列と次の1バイ
トとからなるデータ列を辞書のデータエントリ部に登録
する。辞書に登録されるデータ列は、一回の圧縮動作実
行の度に1バイトずつ長くなっていく。
登録済みのデータ列が存在するか否かをチェックし、登
録済みのデータ列が存在しない場合には、入力データ列
自身と非圧縮を示す1ビットの識別子とを圧縮データと
して出力する。一方、辞書中に登録済みのデータ列が存
在する場合には、一致が検出されたデータ列については
それに対応する辞書のエントリ番号と圧縮を示す1ビッ
トの識別子とを圧縮データとして出力する。そして、上
記した圧縮のステップ完了後に、辞書登録のステップを
実行し、圧縮の対象となった入力データ列と次の1バイ
トとからなるデータ列を辞書のデータエントリ部に登録
する。辞書に登録されるデータ列は、一回の圧縮動作実
行の度に1バイトずつ長くなっていく。
【0004】図14,図15は上記したLZ78(静的
辞書法)による圧縮動作及び辞書登録動作の一例を示し
た図である。この例は、入力データ列を“perfor
manceperformance”とし、辞書には既
に“per”,“for”,“man”,“ce”の4
つのデータ列が登録されているとしている。
辞書法)による圧縮動作及び辞書登録動作の一例を示し
た図である。この例は、入力データ列を“perfor
manceperformance”とし、辞書には既
に“per”,“for”,“man”,“ce”の4
つのデータ列が登録されているとしている。
【0005】図14は“per”というデータ列が処理
された後、次に“for”というデータ列が、辞書に登
録済みのデータ列“for”と一致することが検出され
たときを説明したものである。図14に示すように、圧
縮のステップに於いて入力データ中の“for”という
データ列と、辞書のエントリ番号101のエントリに登
録されているデータ列“for”との一致を検出する
と、圧縮データとして“1・101”を出力する。最初
の“1”は、圧縮が行われたことを示す1ビットの識別
子であり、それに続く“101”は辞書のエントリ番号
である。
された後、次に“for”というデータ列が、辞書に登
録済みのデータ列“for”と一致することが検出され
たときを説明したものである。図14に示すように、圧
縮のステップに於いて入力データ中の“for”という
データ列と、辞書のエントリ番号101のエントリに登
録されているデータ列“for”との一致を検出する
と、圧縮データとして“1・101”を出力する。最初
の“1”は、圧縮が行われたことを示す1ビットの識別
子であり、それに続く“101”は辞書のエントリ番号
である。
【0006】その後、辞書への新規データ列の登録を行
う。圧縮したデータ列“for”に、その隣の1バイト
データ“m”を結合して辞書登録データ“form”を
作成し、作成した辞書登録データ“form”を辞書に
登録する。図14の例では、辞書登録データ“for
m”は、辞書のエントリ番号105のエントリに登録さ
れている。ここで登録されたデータ列“form”は、
引き続き実行される圧縮のステップで使用される。勿
論、以後、“form”というデータ列が出現しなけれ
ば、圧縮動作には使用されず、辞書に登録されたままと
なる。このような動作を繰り返して入力データ列“pe
rformanceperformance”を圧縮す
ると共に、辞書に新たなデータ列を登録する。入力デー
タ列“performanceperformanc
e”に対する圧縮動作,辞書登録動作が終了した時点に
於ける圧縮データ,辞書の内容は、図15に示すものと
なる。
う。圧縮したデータ列“for”に、その隣の1バイト
データ“m”を結合して辞書登録データ“form”を
作成し、作成した辞書登録データ“form”を辞書に
登録する。図14の例では、辞書登録データ“for
m”は、辞書のエントリ番号105のエントリに登録さ
れている。ここで登録されたデータ列“form”は、
引き続き実行される圧縮のステップで使用される。勿
論、以後、“form”というデータ列が出現しなけれ
ば、圧縮動作には使用されず、辞書に登録されたままと
なる。このような動作を繰り返して入力データ列“pe
rformanceperformance”を圧縮す
ると共に、辞書に新たなデータ列を登録する。入力デー
タ列“performanceperformanc
e”に対する圧縮動作,辞書登録動作が終了した時点に
於ける圧縮データ,辞書の内容は、図15に示すものと
なる。
【0007】また、辞書を使用してデータ圧縮を行う方
法としては、米国特許第4814746号明細書に記載
されているものも知られている。
法としては、米国特許第4814746号明細書に記載
されているものも知られている。
【0008】この方法の場合、圧縮動作に関しては、上
記したLZ78(静的辞書法)と同じで、入力データ列
に対し、辞書に登録済みのデータ列が存在するか否かを
チェックし、登録済みのデータ列が存在しない場合に
は、入力データ列を非圧縮を示す識別子と共に出力す
る。一方、登録済みのデータが存在する場合には、一致
が検出された辞書のエントリ番号と圧縮を示す識別子と
を圧縮データとして出力する。そして、上記した圧縮の
ステップ後に行う辞書へのデータ列の登録動作に於いて
は、前回の圧縮対象のデータ列と今回の圧縮対象のデー
タ列とを結合することにより辞書登録データを作成し、
作成した辞書登録データを辞書に登録する。この方法に
よれば、頻出するデータ列自身の登録を早期に行うこと
ができる。
記したLZ78(静的辞書法)と同じで、入力データ列
に対し、辞書に登録済みのデータ列が存在するか否かを
チェックし、登録済みのデータ列が存在しない場合に
は、入力データ列を非圧縮を示す識別子と共に出力す
る。一方、登録済みのデータが存在する場合には、一致
が検出された辞書のエントリ番号と圧縮を示す識別子と
を圧縮データとして出力する。そして、上記した圧縮の
ステップ後に行う辞書へのデータ列の登録動作に於いて
は、前回の圧縮対象のデータ列と今回の圧縮対象のデー
タ列とを結合することにより辞書登録データを作成し、
作成した辞書登録データを辞書に登録する。この方法に
よれば、頻出するデータ列自身の登録を早期に行うこと
ができる。
【0009】図16,図17は上記米国特許第4814
746号明細書に記載されている方法に従った圧縮動作
及び辞書登録動作の一例を示した図である。この例は、
入力データ列を“performanceperfor
mance”とし、辞書には既に“per”,“fo
r”,“man”,“ce”の4つのデータ列が登録さ
れているとしている。
746号明細書に記載されている方法に従った圧縮動作
及び辞書登録動作の一例を示した図である。この例は、
入力データ列を“performanceperfor
mance”とし、辞書には既に“per”,“fo
r”,“man”,“ce”の4つのデータ列が登録さ
れているとしている。
【0010】図16は“per”というデータ列が処理
された後、次に“for”というデータ列が、辞書に登
録済みのデータ列“for”と一致することが検出され
たときを説明したものである。図16に示すように、圧
縮のステップに於いて入力データ中の“for”という
データ列と、辞書のエントリ番号101のエントリに登
録されているデータ列“for”との一致を検出する
と、圧縮データとして“1・101”を出力する。最初
の“1”は、圧縮が行われたことを示す1ビットの識別
子であり、それに続く“101”は辞書のエントリ番号
である。
された後、次に“for”というデータ列が、辞書に登
録済みのデータ列“for”と一致することが検出され
たときを説明したものである。図16に示すように、圧
縮のステップに於いて入力データ中の“for”という
データ列と、辞書のエントリ番号101のエントリに登
録されているデータ列“for”との一致を検出する
と、圧縮データとして“1・101”を出力する。最初
の“1”は、圧縮が行われたことを示す1ビットの識別
子であり、それに続く“101”は辞書のエントリ番号
である。
【0011】その後、辞書への新規データ列の登録を行
う。圧縮したデータ列“for”の左端に、その1回前
に圧縮処理の対象としたデータ列“per”を結合して
辞書登録データ“perfor”を作成し、作成した辞
書登録データ“perfor”を辞書に登録する。図1
6の例では、辞書登録データ“perfor”は、辞書
のエントリ番号105のエントリに登録されている。こ
こで登録されたデータ列“perfor”は、引き続き
実行される圧縮のステップで使用される。勿論、以後、
“perfor”というデータ列が出現しなければ、圧
縮動作には使用されず、辞書に登録されたままとなる。
このような動作を繰り返して、入力データ列“perf
ormanceperformance”を圧縮すると
共に、辞書に新たなデータ列を登録する。入力データ列
“performanceperformance”に
対する圧縮動作,辞書登録動作が終了した時点に於ける
圧縮データ,辞書の内容は、図17に示すものとなる。
う。圧縮したデータ列“for”の左端に、その1回前
に圧縮処理の対象としたデータ列“per”を結合して
辞書登録データ“perfor”を作成し、作成した辞
書登録データ“perfor”を辞書に登録する。図1
6の例では、辞書登録データ“perfor”は、辞書
のエントリ番号105のエントリに登録されている。こ
こで登録されたデータ列“perfor”は、引き続き
実行される圧縮のステップで使用される。勿論、以後、
“perfor”というデータ列が出現しなければ、圧
縮動作には使用されず、辞書に登録されたままとなる。
このような動作を繰り返して、入力データ列“perf
ormanceperformance”を圧縮すると
共に、辞書に新たなデータ列を登録する。入力データ列
“performanceperformance”に
対する圧縮動作,辞書登録動作が終了した時点に於ける
圧縮データ,辞書の内容は、図17に示すものとなる。
【0012】
【発明が解決しようとする課題】上述した従来の技術
は、入力データ列と辞書に登録されているデータ列とを
比較し、最も一致長が長いデータ列が登録されている辞
書中のエントリの番号を圧縮データとして取得した後、
入力データ列中の今回圧縮対象としたデータ列にその次
の1バイト分のデータを結合することにより、或いは今
回圧縮対象としたデータ列の左端に前回圧縮対象とした
データ列を結合することにより、辞書登録データ列を作
成し、作成した辞書登録データを辞書に登録するように
しているため、一度も圧縮処理に使用されないデータ列
が辞書に登録される可能性がある。このような圧縮処理
に使用されない無駄なデータ列が辞書に登録されると、
辞書が早期に満杯となり、圧縮に有効になるデータ列を
辞書に登録できなくなってしまうという事態が発生しや
すくなってしまう。
は、入力データ列と辞書に登録されているデータ列とを
比較し、最も一致長が長いデータ列が登録されている辞
書中のエントリの番号を圧縮データとして取得した後、
入力データ列中の今回圧縮対象としたデータ列にその次
の1バイト分のデータを結合することにより、或いは今
回圧縮対象としたデータ列の左端に前回圧縮対象とした
データ列を結合することにより、辞書登録データ列を作
成し、作成した辞書登録データを辞書に登録するように
しているため、一度も圧縮処理に使用されないデータ列
が辞書に登録される可能性がある。このような圧縮処理
に使用されない無駄なデータ列が辞書に登録されると、
辞書が早期に満杯となり、圧縮に有効になるデータ列を
辞書に登録できなくなってしまうという事態が発生しや
すくなってしまう。
【0013】また、辞書登録データを、(前回の圧縮対
象データ列)+(今回の圧縮対象データ列)、或いは
(今回の圧縮対象データ列)+(1バイトデータ)とし
ているため、辞書作成初期段階では、辞書には長いデー
タ列が登録されず、好ましい圧縮率(=圧縮データ長/
入力データ列長)を得らないという問題が生じる。
象データ列)+(今回の圧縮対象データ列)、或いは
(今回の圧縮対象データ列)+(1バイトデータ)とし
ているため、辞書作成初期段階では、辞書には長いデー
タ列が登録されず、好ましい圧縮率(=圧縮データ長/
入力データ列長)を得らないという問題が生じる。
【0014】そこで、本発明の目的は、圧縮処理に1回
も使用されないデータが辞書に登録されないようにする
ことができ、且つ、辞書作成初期段階に於いて長いデー
タ列を登録することにより、圧縮率を高めることができ
るデータ圧縮方法を提供することにある。
も使用されないデータが辞書に登録されないようにする
ことができ、且つ、辞書作成初期段階に於いて長いデー
タ列を登録することにより、圧縮率を高めることができ
るデータ圧縮方法を提供することにある。
【0015】
【課題を解決するための手段】本発明は、圧縮処理に1
回も使用されないデータが辞書に登録されないようにす
るため、入力データ列中の前回辞書に登録したデータ列
の次のデータをスタートポジションとするデータ列の
内、前記辞書に登録済みのデータ列との一致部分の長さ
が最も長い最長一致データ列をサーチし、サーチした最
長一致データ列とそれに続く予め定められた規則によっ
て定められるデータとを結合したデータ列を辞書登録デ
ータとする辞書登録データ作成処理を、入力データ列の
先頭部分から末尾部分に向かって順次行い、前記辞書登
録データ作成処理によって辞書登録データが作成される
毎に、作成された辞書登録データを前記辞書に登録する
登録処理を行い、前記登録処理によって辞書登録データ
が前記辞書に登録される毎に、その辞書登録データを作
成する際のスタートポジションとなった前記入力データ
列中のデータをスタートポジションにして前記辞書を使
用した圧縮処理を行う。
回も使用されないデータが辞書に登録されないようにす
るため、入力データ列中の前回辞書に登録したデータ列
の次のデータをスタートポジションとするデータ列の
内、前記辞書に登録済みのデータ列との一致部分の長さ
が最も長い最長一致データ列をサーチし、サーチした最
長一致データ列とそれに続く予め定められた規則によっ
て定められるデータとを結合したデータ列を辞書登録デ
ータとする辞書登録データ作成処理を、入力データ列の
先頭部分から末尾部分に向かって順次行い、前記辞書登
録データ作成処理によって辞書登録データが作成される
毎に、作成された辞書登録データを前記辞書に登録する
登録処理を行い、前記登録処理によって辞書登録データ
が前記辞書に登録される毎に、その辞書登録データを作
成する際のスタートポジションとなった前記入力データ
列中のデータをスタートポジションにして前記辞書を使
用した圧縮処理を行う。
【0016】また、本発明は、辞書の成長速度を速く
し、データの圧縮率を向上させるため、前記辞書登録デ
ータ作成処理に於いて辞書登録データを作成する際、前
記最長一致データ列の長さが所定の長さ未満の場合は、
前記スタートポジションとしたデータから前記所定の長
さ分のデータを辞書登録データとし、前記最長一致デー
タ列の長さが前記所定の長さと等しい場合は、前記最長
一致データ列と次の1バイト分のデータとを結合したデ
ータを辞書登録データとし、前記最長一致データ列の長
さが前記所定の長さよりも長い場合は、前記最長一致デ
ータ列と、その後に連続して存在する、前記辞書に登録
済みのデータ列との一致長が前記所定の長さよりも長い
全てのデータ列と、その直後に存在する所定長のデータ
とを結合したデータを辞書登録データとする。
し、データの圧縮率を向上させるため、前記辞書登録デ
ータ作成処理に於いて辞書登録データを作成する際、前
記最長一致データ列の長さが所定の長さ未満の場合は、
前記スタートポジションとしたデータから前記所定の長
さ分のデータを辞書登録データとし、前記最長一致デー
タ列の長さが前記所定の長さと等しい場合は、前記最長
一致データ列と次の1バイト分のデータとを結合したデ
ータを辞書登録データとし、前記最長一致データ列の長
さが前記所定の長さよりも長い場合は、前記最長一致デ
ータ列と、その後に連続して存在する、前記辞書に登録
済みのデータ列との一致長が前記所定の長さよりも長い
全てのデータ列と、その直後に存在する所定長のデータ
とを結合したデータを辞書登録データとする。
【0017】
【発明の実施の形態】次に本発明の実施の形態について
図面を参照して詳細に説明する。
図面を参照して詳細に説明する。
【0018】図1は本発明のデータ圧縮方法を実施する
データ圧縮装置1の構成例を示すブロック図である。
データ圧縮装置1の構成例を示すブロック図である。
【0019】データ圧縮装置1は、辞書登録データ作成
手段10と、登録手段20と、圧縮手段30と、辞書4
0と、制御手段50と、予測停止フラグ60と、辞書入
力スタック70と、圧縮データファイル80とを備えて
いる。
手段10と、登録手段20と、圧縮手段30と、辞書4
0と、制御手段50と、予測停止フラグ60と、辞書入
力スタック70と、圧縮データファイル80とを備えて
いる。
【0020】辞書登録データ作成手段10は、辞書40
に登録する辞書登録データを作成する機能を有するもの
であり、予測スタートポインタ11と、予測エンドポイ
ンタ12と、第1登録候補データレジスタ13と、第2
登録候補データレジスタ14と、予測継続フラグ15
と、予測ヒットカウンタ16と、予測フラグ17と、処
理部18とから構成されている。
に登録する辞書登録データを作成する機能を有するもの
であり、予測スタートポインタ11と、予測エンドポイ
ンタ12と、第1登録候補データレジスタ13と、第2
登録候補データレジスタ14と、予測継続フラグ15
と、予測ヒットカウンタ16と、予測フラグ17と、処
理部18とから構成されている。
【0021】登録手段20は、辞書登録データ作成手段
10が作成した辞書登録データを辞書40に登録する機
能を有し、辞書登録用エントリ番号レジスタ21と、処
理部22とから構成されている。
10が作成した辞書登録データを辞書40に登録する機
能を有し、辞書登録用エントリ番号レジスタ21と、処
理部22とから構成されている。
【0022】圧縮手段30は、入力データ列90を圧縮
した圧縮データを作成する機能を有し、圧縮スタートポ
インタ31と、圧縮エンドポインタ32と、辞書ヒット
フラグ33と、辞書エントリ番号レジスタ34と、処理
部35とから構成されている。
した圧縮データを作成する機能を有し、圧縮スタートポ
インタ31と、圧縮エンドポインタ32と、辞書ヒット
フラグ33と、辞書エントリ番号レジスタ34と、処理
部35とから構成されている。
【0023】辞書40は、エントリ番号部41と、デー
タエントリ部42とから構成されている。
タエントリ部42とから構成されている。
【0024】制御手段50は、辞書登録データ作成手段
10,登録手段20,圧縮手段30の動作を制御する機
能を有する。
10,登録手段20,圧縮手段30の動作を制御する機
能を有する。
【0025】次に、本実施例の動作について簡単に説明
する。
する。
【0026】圧縮対象とする入力データ列90が入力さ
れると、制御手段50が辞書登録データ作成手段10を
起動する。
れると、制御手段50が辞書登録データ作成手段10を
起動する。
【0027】これにより、辞書登録データ作成手段10
は、入力データ列90中の前回辞書40に登録したデー
タ列の次のデータをスタートポジションとするデータ列
の内、辞書40に登録済みのデータ列との一致部分が最
も長い最長一致データ列をサーチする。尚、最初の起動
時には、辞書登録データ作成手段10は、入力データ列
90中の最初のデータをスタートポジションとする。
は、入力データ列90中の前回辞書40に登録したデー
タ列の次のデータをスタートポジションとするデータ列
の内、辞書40に登録済みのデータ列との一致部分が最
も長い最長一致データ列をサーチする。尚、最初の起動
時には、辞書登録データ作成手段10は、入力データ列
90中の最初のデータをスタートポジションとする。
【0028】そして、サーチした最長一致データ列の長
さが2バイト未満の場合は、スタートポジションにした
データから2バイト分のデータを辞書登録データとして
辞書入力スタック70に格納し、その後、制御手段50
に対して終了通知を行う。
さが2バイト未満の場合は、スタートポジションにした
データから2バイト分のデータを辞書登録データとして
辞書入力スタック70に格納し、その後、制御手段50
に対して終了通知を行う。
【0029】また、サーチした最長一致データ列の長さ
が2バイトの場合は、最長一致データ列とその次の1バ
イト分のデータとを結合したデータを辞書登録データと
して辞書入力スタック70に格納し、その後、制御手段
50に対して終了通知を行う。
が2バイトの場合は、最長一致データ列とその次の1バ
イト分のデータとを結合したデータを辞書登録データと
して辞書入力スタック70に格納し、その後、制御手段
50に対して終了通知を行う。
【0030】また、サーチした最長一致データ列の長さ
が3バイト以上の場合は、サーチした最長一致データ列
と、その後に連続して存在する、辞書40に登録済みの
データ列との一致長が3バイト以上の全てのデータ列
と、その直後に存在する2バイト或いは3バイト分のデ
ータとを結合したデータを辞書登録データとして辞書入
力スタック70に格納し、その後、制御手段50に対し
て終了通知を行う。但し、一致長が3バイト以上のデー
タ列の数が、予め設定された数以上になる場合は、最長
一致データ列と、その後に連続して存在する一致長が3
バイト以上のデータ列とを結合したデータを辞書登録デ
ータとする。
が3バイト以上の場合は、サーチした最長一致データ列
と、その後に連続して存在する、辞書40に登録済みの
データ列との一致長が3バイト以上の全てのデータ列
と、その直後に存在する2バイト或いは3バイト分のデ
ータとを結合したデータを辞書登録データとして辞書入
力スタック70に格納し、その後、制御手段50に対し
て終了通知を行う。但し、一致長が3バイト以上のデー
タ列の数が、予め設定された数以上になる場合は、最長
一致データ列と、その後に連続して存在する一致長が3
バイト以上のデータ列とを結合したデータを辞書登録デ
ータとする。
【0031】制御手段50は、辞書登録データ作成手段
10から終了通知を受けると、登録手段20を起動す
る。
10から終了通知を受けると、登録手段20を起動す
る。
【0032】これにより、登録手段20は、辞書入力ス
タック70に格納されている辞書登録データを辞書40
に登録し、その後、制御手段50に対して終了通知を行
う。
タック70に格納されている辞書登録データを辞書40
に登録し、その後、制御手段50に対して終了通知を行
う。
【0033】制御手段50は、登録手段20から終了通
知を受けると、圧縮手段30を起動する。
知を受けると、圧縮手段30を起動する。
【0034】これにより、圧縮手段30は、辞書登録デ
ータ作成手段10がスタートポジションとした入力デー
タ列中のデータをスタートポジションにして辞書40を
使用した圧縮処理を行い、その後、制御手段50に終了
通知を行う。
ータ作成手段10がスタートポジションとした入力デー
タ列中のデータをスタートポジションにして辞書40を
使用した圧縮処理を行い、その後、制御手段50に終了
通知を行う。
【0035】終了通知を受けると、制御手段50は、辞
書登録データ作成手段10を再度起動する。以下、入力
データ列90に未処理のデータがなくなるまで、前述し
たと同様の処理が繰り返し行われる。
書登録データ作成手段10を再度起動する。以下、入力
データ列90に未処理のデータがなくなるまで、前述し
たと同様の処理が繰り返し行われる。
【0036】今、例えば、辞書40にデータが全く登録
されていない状態に於いて、圧縮処理の対象とする入力
データ列90として図2に示す“performanc
e□performance□performance
□performance□performance
□”が入力されたとする。尚、□は、空白を示してい
る。
されていない状態に於いて、圧縮処理の対象とする入力
データ列90として図2に示す“performanc
e□performance□performance
□performance□performance
□”が入力されたとする。尚、□は、空白を示してい
る。
【0037】入力データ列90が入力されると、制御手
段50が、辞書登録データ作成手段10を起動する。
段50が、辞書登録データ作成手段10を起動する。
【0038】これにより、辞書登録データ作成手段10
は、入力データ列90中の最初のデータ“p”をスター
トポジションとするデータ列の内、辞書40に登録済み
のデータ列との一致部分が最も長い最長一致データ列を
サーチする。
は、入力データ列90中の最初のデータ“p”をスター
トポジションとするデータ列の内、辞書40に登録済み
のデータ列との一致部分が最も長い最長一致データ列を
サーチする。
【0039】この例の場合、辞書40には、データが全
く登録されていないので、辞書登録データ作成手段10
は、スタートポジション「p」から2バイト分のデータ
“pe”を辞書登録データとして辞書入力スタック70
に格納し、制御手段50に対して終了通知を行う。
く登録されていないので、辞書登録データ作成手段10
は、スタートポジション「p」から2バイト分のデータ
“pe”を辞書登録データとして辞書入力スタック70
に格納し、制御手段50に対して終了通知を行う。
【0040】辞書登録データ作成手段10からの終了通
知を受けると、制御手段50は、登録手段20を起動す
る。これにより、登録手段20は、辞書入力スタック7
0に格納されている辞書登録データ“pe”を図3に示
すように、辞書40のエントリ番号0のエントリに登録
し、その後、制御手段50に終了通知を行う。
知を受けると、制御手段50は、登録手段20を起動す
る。これにより、登録手段20は、辞書入力スタック7
0に格納されている辞書登録データ“pe”を図3に示
すように、辞書40のエントリ番号0のエントリに登録
し、その後、制御手段50に終了通知を行う。
【0041】登録手段20からの終了通知を受けると、
制御手段50は、圧縮手段30を起動する。これによ
り、圧縮手段30は、辞書40をサーチして、入力デー
タ列90中のデータ“p”をスタートポジションとする
データ列と最も一致部分が長い登録データを探し出し、
探し出した登録データが格納されているエントリ番号及
び圧縮データであることを示す識別子“1”から構成さ
れる圧縮データを圧縮データファイル80に格納する。
この例の場合は、一致部分が最も長い登録データとし
て、エントリ番号0のエントリに登録されているデータ
列“pe”が探し出されるので、図2に示すように、デ
ータ列“pe”が圧縮データ“1・0”に変換される。
制御手段50は、圧縮手段30を起動する。これによ
り、圧縮手段30は、辞書40をサーチして、入力デー
タ列90中のデータ“p”をスタートポジションとする
データ列と最も一致部分が長い登録データを探し出し、
探し出した登録データが格納されているエントリ番号及
び圧縮データであることを示す識別子“1”から構成さ
れる圧縮データを圧縮データファイル80に格納する。
この例の場合は、一致部分が最も長い登録データとし
て、エントリ番号0のエントリに登録されているデータ
列“pe”が探し出されるので、図2に示すように、デ
ータ列“pe”が圧縮データ“1・0”に変換される。
【0042】“performance”の第1回目の
出現時には、前述したと同様の処理が繰り返し行われ、
図3に示すように、辞書40のエントリ番号「0」〜
「5」のエントリに、“pe”,“rf”,“or”,
“ma”,“nc”,“e□”が登録され、図2に示す
ように、圧縮データ“1・0”,“1・1”,“1・
2”,“1・3”,“1・4”,“1・5”が出力され
る。
出現時には、前述したと同様の処理が繰り返し行われ、
図3に示すように、辞書40のエントリ番号「0」〜
「5」のエントリに、“pe”,“rf”,“or”,
“ma”,“nc”,“e□”が登録され、図2に示す
ように、圧縮データ“1・0”,“1・1”,“1・
2”,“1・3”,“1・4”,“1・5”が出力され
る。
【0043】“performance”の第2回目の
出現時には、辞書登録データ作成手段10は、辞書40
に登録済みのデータ列との一致部分が最も長い最長一致
データ列として“pe”を探し出し、探し出した最長一
致データ列“pe”とその次の1バイト分のデータ
“r”とを結合したデータ“per”を辞書登録データ
として辞書入力スタック70に格納する。
出現時には、辞書登録データ作成手段10は、辞書40
に登録済みのデータ列との一致部分が最も長い最長一致
データ列として“pe”を探し出し、探し出した最長一
致データ列“pe”とその次の1バイト分のデータ
“r”とを結合したデータ“per”を辞書登録データ
として辞書入力スタック70に格納する。
【0044】登録手段20は、辞書登録データ作成手段
10が辞書入力スタック70に格納した辞書登録データ
“per”を、図3に示すように、辞書40のエントリ
番号「6」のエントリに格納し、圧縮手段30は、図2
に示すように、入力データ列90中の“per”を圧縮
データ“1・6”に変換して圧縮データファイル80に
出力する。“performance”の第2回目,第
3回目の出力時には、前述したと同様の処理が行われ、
図3に示すように、辞書40のエントリ番号「6」〜
「15」のエントリに、“per”〜“ce□”が登録
され、図2に示すように、圧縮データ“1・6”〜“1
・15”が出力される。
10が辞書入力スタック70に格納した辞書登録データ
“per”を、図3に示すように、辞書40のエントリ
番号「6」のエントリに格納し、圧縮手段30は、図2
に示すように、入力データ列90中の“per”を圧縮
データ“1・6”に変換して圧縮データファイル80に
出力する。“performance”の第2回目,第
3回目の出力時には、前述したと同様の処理が行われ、
図3に示すように、辞書40のエントリ番号「6」〜
「15」のエントリに、“per”〜“ce□”が登録
され、図2に示すように、圧縮データ“1・6”〜“1
・15”が出力される。
【0045】“performance”の第4回目の
出現時には、辞書登録データ作成手段10は、辞書40
に登録済みのデータ列との一致部分が最も長い最長一致
データ列として“per”を探し出す。この場合、探し
出した最長一致データ列“per”の長さが3バイト以
上であるので、辞書登録データ作成手段10は探し出し
た最長一致データ列“per”と、その後に連続して存
在する、辞書40に登録済みのデータ列との一致長が3
バイト以上の予め定められた個数までのデータ列“fo
r”,“man”,“ce□”とを結合したデータ“p
erformance□”を辞書登録データとして辞書
入力スタック70に格納する。
出現時には、辞書登録データ作成手段10は、辞書40
に登録済みのデータ列との一致部分が最も長い最長一致
データ列として“per”を探し出す。この場合、探し
出した最長一致データ列“per”の長さが3バイト以
上であるので、辞書登録データ作成手段10は探し出し
た最長一致データ列“per”と、その後に連続して存
在する、辞書40に登録済みのデータ列との一致長が3
バイト以上の予め定められた個数までのデータ列“fo
r”,“man”,“ce□”とを結合したデータ“p
erformance□”を辞書登録データとして辞書
入力スタック70に格納する。
【0046】登録手段20は、図3に示すように、辞書
入力スタック70に格納された辞書登録データ“per
formance□”を辞書40のエントリ番号16の
エントリに格納し、圧縮手段30は、図3に示すよう
に、“performance□”を圧縮データ“1・
16”に変換して圧縮手段30に格納する。
入力スタック70に格納された辞書登録データ“per
formance□”を辞書40のエントリ番号16の
エントリに格納し、圧縮手段30は、図3に示すよう
に、“performance□”を圧縮データ“1・
16”に変換して圧縮手段30に格納する。
【0047】制御手段50は、入力データ列90に対す
る圧縮処理が完了すると、圧縮データファイル80の内
容及び辞書40の内容を受信側に転送する。
る圧縮処理が完了すると、圧縮データファイル80の内
容及び辞書40の内容を受信側に転送する。
【0048】次に、本発明の実施例の動作を詳細に説明
する。実施例の詳細な動作を理解するためには、データ
圧縮装置1内に設けられているフラグ,ポインタ,レジ
スタ類の機能を理解することが必要になるので、先ず、
フラグ,ポインタ,レジスタ類について説明する。
する。実施例の詳細な動作を理解するためには、データ
圧縮装置1内に設けられているフラグ,ポインタ,レジ
スタ類の機能を理解することが必要になるので、先ず、
フラグ,ポインタ,レジスタ類について説明する。
【0049】予測スタートポインタ11:辞書40への
データ列登録に関し、入力データ列のスタートポジショ
ンを指定する。尚、初期値は「0」であり、長さは、入
力データ列のバイト長を表示可能なビット数である。
データ列登録に関し、入力データ列のスタートポジショ
ンを指定する。尚、初期値は「0」であり、長さは、入
力データ列のバイト長を表示可能なビット数である。
【0050】予測エンドポインタ12:辞書40へのデ
ータ列登録に関し、入力データ列のエンドポジションを
指定する。尚、初期値は「0」であり、長さは、入力デ
ータ列のバイト長を表示可能なビット数である。
ータ列登録に関し、入力データ列のエンドポジションを
指定する。尚、初期値は「0」であり、長さは、入力デ
ータ列のバイト長を表示可能なビット数である。
【0051】第1登録候補データレジスタ13:予測ス
タートポインタ11と予測エンドポインタ12とで指定
されるデータ列を一時的に保持しておく。予測フラグ1
7がOFFにセットされ、且つ予測継続フラグ15がO
FFにセットされると、第1登録候補データレジスタ1
3の内容が辞書入力スタック70に格納される。
タートポインタ11と予測エンドポインタ12とで指定
されるデータ列を一時的に保持しておく。予測フラグ1
7がOFFにセットされ、且つ予測継続フラグ15がO
FFにセットされると、第1登録候補データレジスタ1
3の内容が辞書入力スタック70に格納される。
【0052】第2登録候補データレジスタ14:予測フ
ラグ17がONになった時、第1登録候補データレジス
タ13の内容が格納される。予測フラグ17がOFFに
セットされ、且つ予測継続フラグ15がONにセットさ
れた時、第2登録候補データレジスタ14の内容が辞書
入力スタック70へ格納される。
ラグ17がONになった時、第1登録候補データレジス
タ13の内容が格納される。予測フラグ17がOFFに
セットされ、且つ予測継続フラグ15がONにセットさ
れた時、第2登録候補データレジスタ14の内容が辞書
入力スタック70へ格納される。
【0053】予測フラグ17:辞書40をサーチするこ
とにより、予測スタートポインタ11と予測エンドポイ
ンタ12とによって指定されるデータ列と一致するデー
タ列が辞書40中に存在することが検出された場合はO
Nにセットされ、検出できなかった場合はOFFにセッ
トされる。
とにより、予測スタートポインタ11と予測エンドポイ
ンタ12とによって指定されるデータ列と一致するデー
タ列が辞書40中に存在することが検出された場合はO
Nにセットされ、検出できなかった場合はOFFにセッ
トされる。
【0054】予測継続フラグ15:予測フラグ17がO
Nの状態の時に、辞書40をサーチすることにより、予
測スタートポインタ11と予測エンドポインタ12とに
よって指定されるデータ列と一致するデータ列が辞書4
0中に存在することが検出された場合はONにセットさ
れ、検出できなかった場合はOFFにセットされる。
Nの状態の時に、辞書40をサーチすることにより、予
測スタートポインタ11と予測エンドポインタ12とに
よって指定されるデータ列と一致するデータ列が辞書4
0中に存在することが検出された場合はONにセットさ
れ、検出できなかった場合はOFFにセットされる。
【0055】予測ヒットカウンタ16:初期値が「0」
で、予測フラグ17がOFFの時に予測継続フラグ15
がONになった時、“+1”され、辞書登録データ作成
手段10の終了時、再び「0」にリセットされる。予測
ヒットカウンタ16の値が或る一定値を越えると、辞書
登録データ作成手段10は、終了する。
で、予測フラグ17がOFFの時に予測継続フラグ15
がONになった時、“+1”され、辞書登録データ作成
手段10の終了時、再び「0」にリセットされる。予測
ヒットカウンタ16の値が或る一定値を越えると、辞書
登録データ作成手段10は、終了する。
【0056】辞書入力スタック70:第1登録候補デー
タレジスタ13または第2登録候補データレジスタ14
の内容がロードされ、辞書入力スタック70の内容が辞
書40に登録される。予測継続フラグ15がONにセッ
トされていると、第2登録候補データレジスタ14から
のデータを蓄積し続ける。
タレジスタ13または第2登録候補データレジスタ14
の内容がロードされ、辞書入力スタック70の内容が辞
書40に登録される。予測継続フラグ15がONにセッ
トされていると、第2登録候補データレジスタ14から
のデータを蓄積し続ける。
【0057】辞書登録用エントリ番号レジスタ21:辞
書40にデータ列を登録する際のエントリ番号を示す。
書40にデータ列を登録する際のエントリ番号を示す。
【0058】圧縮スタートポインタ31:圧縮手段30
の動作時、入力データ列のスタートポジションを指定す
る。尚、初期値は「0」である。
の動作時、入力データ列のスタートポジションを指定す
る。尚、初期値は「0」である。
【0059】圧縮エンドポインタ32:圧縮手段30の
動作時、入力データ列のエンドポジションを指定する。
尚、初期値は「0」である。
動作時、入力データ列のエンドポジションを指定する。
尚、初期値は「0」である。
【0060】予測停止フラグ60:初期状態はOFF
で、辞書40に未使用のデータエントリ部42が存在し
なくなった時、ONにセットされる。
で、辞書40に未使用のデータエントリ部42が存在し
なくなった時、ONにセットされる。
【0061】辞書ヒットフラグ33:辞書40をサーチ
することにより、圧縮スタートポインタ31と圧縮エン
ドポインタ32とによって指定されるデータ列と同一の
データ列が辞書40中に存在することが検出された場合
はONにセットされ、検出できなかった場合はOFFに
セットされる。
することにより、圧縮スタートポインタ31と圧縮エン
ドポインタ32とによって指定されるデータ列と同一の
データ列が辞書40中に存在することが検出された場合
はONにセットされ、検出できなかった場合はOFFに
セットされる。
【0062】辞書エントリ番号レジスタ34:圧縮スタ
ートポインタ31と圧縮エンドポインタ32とによって
指定されたデータ列と一致するデータ列が登録されてい
る辞書40のエントリ番号がセットされる。
ートポインタ31と圧縮エンドポインタ32とによって
指定されたデータ列と一致するデータ列が登録されてい
る辞書40のエントリ番号がセットされる。
【0063】図4は制御手段50の処理例を示す流れ
図、図5は辞書登録データ作成手段10内の処理部18
の処理例を示す流れ図、図6は登録手段20内の処理部
22の処理例を示す流れ図、図7は圧縮手段30内の処
理部35の処理例を示す流れ図であり、以下各図を参照
して実施例の詳細な動作を説明する。
図、図5は辞書登録データ作成手段10内の処理部18
の処理例を示す流れ図、図6は登録手段20内の処理部
22の処理例を示す流れ図、図7は圧縮手段30内の処
理部35の処理例を示す流れ図であり、以下各図を参照
して実施例の詳細な動作を説明する。
【0064】制御手段50は、入力データ列90が入力
されると、予測スタートポインタ11,予測エンドポイ
ンタ12,予測ヒットカウンタ16,圧縮スタートポイ
ンタ31,圧縮エンドポインタ32に「0」をセット
し、予測継続フラグ15,予測フラグ17,辞書ヒット
フラグ33,予測停止フラグ60をOFFにする(S
1)。
されると、予測スタートポインタ11,予測エンドポイ
ンタ12,予測ヒットカウンタ16,圧縮スタートポイ
ンタ31,圧縮エンドポインタ32に「0」をセット
し、予測継続フラグ15,予測フラグ17,辞書ヒット
フラグ33,予測停止フラグ60をOFFにする(S
1)。
【0065】その後、制御手段50は、辞書登録データ
作成手段10を起動する(S3)。
作成手段10を起動する(S3)。
【0066】辞書登録データ作成手段10は、起動され
ると、先ず、図5のS21〜S23から構成される最短
一致長検出のステップAを実行する。
ると、先ず、図5のS21〜S23から構成される最短
一致長検出のステップAを実行する。
【0067】最短一致長検出のステップAでは、入力デ
ータ列90中の予測スタートポインタ11と予測エンド
ポインタ12によって指定される2バイト分のデータ列
を第1登録候補データレジスタ13に格納し(S2
1)、次いで、辞書40をサーチすることにより上記2
バイト分のデータ列と一致するデータ列が辞書40に登
録済みであるか否かを調べ(S22)、登録済みである
場合は、予測フラグ17をONとし、登録されていない
場合は予測フラグ17をOFFにする(S23)。
ータ列90中の予測スタートポインタ11と予測エンド
ポインタ12によって指定される2バイト分のデータ列
を第1登録候補データレジスタ13に格納し(S2
1)、次いで、辞書40をサーチすることにより上記2
バイト分のデータ列と一致するデータ列が辞書40に登
録済みであるか否かを調べ(S22)、登録済みである
場合は、予測フラグ17をONとし、登録されていない
場合は予測フラグ17をOFFにする(S23)。
【0068】その後、予測フラグ17に基づいて上記し
た2バイト分のデータ列が辞書40に登録されていない
と判断した場合(S24がNO)は、S25〜S27か
ら構成される予測終了のステップBを実行し、登録され
ていると判断した場合(S24がYES)は、S29〜
S32から構成される最長一致長検出のステップCを実
行する。
た2バイト分のデータ列が辞書40に登録されていない
と判断した場合(S24がNO)は、S25〜S27か
ら構成される予測終了のステップBを実行し、登録され
ていると判断した場合(S24がYES)は、S29〜
S32から構成される最長一致長検出のステップCを実
行する。
【0069】予測終了のステップBでは、先ず、第1登
録候補データレジスタ13に格納されている2バイト分
のデータ列を辞書入力スタック70に格納し(S2
5)、次いで、予測スタートポインタ11の内容を、今
回のエンドポジションとしたデータの次のデータを示す
ものにすると共に、予測エンドポインタ12の内容を圧
縮エンドポインタ32にロードする(S26)。その
後、予測継続フラグ15をOFF、予測ヒットカウンタ
16を「0」にし(S27)、更に、制御手段50に対
して終了通知を行う(S28)。
録候補データレジスタ13に格納されている2バイト分
のデータ列を辞書入力スタック70に格納し(S2
5)、次いで、予測スタートポインタ11の内容を、今
回のエンドポジションとしたデータの次のデータを示す
ものにすると共に、予測エンドポインタ12の内容を圧
縮エンドポインタ32にロードする(S26)。その
後、予測継続フラグ15をOFF、予測ヒットカウンタ
16を「0」にし(S27)、更に、制御手段50に対
して終了通知を行う(S28)。
【0070】また、最長一致長検出のステップCでは、
先ず、第1登録候補データレジスタ13に格納されてい
るデータ列を第2登録候補データレジスタ14に格納し
(S29)、次いで、最短一致長検出のステップAで一
致を検出した2バイトのデータ列に、その次の1バイト
分のデータを結合した3バイト分のデータを第1登録候
補データレジスタ13に格納する(S30)。その後、
辞書40をサーチすることにより、上記した3バイト分
のデータ列と一致するデータ列が既に辞書40に登録済
みであるか否かを調べ(S31)、登録済みである場合
は、予測フラグ17をONとし、登録されていない場合
は予測フラグ17をOFFにする(S32)。
先ず、第1登録候補データレジスタ13に格納されてい
るデータ列を第2登録候補データレジスタ14に格納し
(S29)、次いで、最短一致長検出のステップAで一
致を検出した2バイトのデータ列に、その次の1バイト
分のデータを結合した3バイト分のデータを第1登録候
補データレジスタ13に格納する(S30)。その後、
辞書40をサーチすることにより、上記した3バイト分
のデータ列と一致するデータ列が既に辞書40に登録済
みであるか否かを調べ(S31)、登録済みである場合
は、予測フラグ17をONとし、登録されていない場合
は予測フラグ17をOFFにする(S32)。
【0071】その後、予測フラグ17に基づいて上記し
た3バイト分のデータ列が辞書40に登録されていない
と判断した場合は(S33がNO)、前述した予測終了
のステップBを実行し、登録されていると判断した場合
は(S33がYES)は、S35を含む最長一致長検出
繰り返しのステップDを実行する。
た3バイト分のデータ列が辞書40に登録されていない
と判断した場合は(S33がNO)、前述した予測終了
のステップBを実行し、登録されていると判断した場合
は(S33がYES)は、S35を含む最長一致長検出
繰り返しのステップDを実行する。
【0072】最長一致長検出繰り返しのステップDで
は、予測継続フラグ15をONにした後(S35)、前
記した最長一致長検出のステップCを実行することによ
り、上記した3バイトのデータ列とその次の1バイト分
のデータとを結合した4バイト分のデータ列が既に辞書
40に登録されているか否かを調べる。このように、一
致が検出されなくなるまで、1バイトずつ入力データ列
が追加,サーチされ、辞書40に登録済みのデータ列の
中で最も一致長が長い最長一致データ列が検出される。
は、予測継続フラグ15をONにした後(S35)、前
記した最長一致長検出のステップCを実行することによ
り、上記した3バイトのデータ列とその次の1バイト分
のデータとを結合した4バイト分のデータ列が既に辞書
40に登録されているか否かを調べる。このように、一
致が検出されなくなるまで、1バイトずつ入力データ列
が追加,サーチされ、辞書40に登録済みのデータ列の
中で最も一致長が長い最長一致データ列が検出される。
【0073】最長一致長検出繰り返しのステップDで最
長一致データ列を検出すると(S33がNO,S34が
YES)、S36〜S40を含む予測継続のステップE
を実行する。
長一致データ列を検出すると(S33がNO,S34が
YES)、S36〜S40を含む予測継続のステップE
を実行する。
【0074】予測継続のステップEでは、第2登録候補
データレジスタ14に格納されている最長一致データ列
を辞書入力スタック70に格納し(S36)、次いで最
長一致長検出繰り返しのステップDで検出された最長一
致データ列の次のデータをスタートポジションとし(S
38)、更に、予測継続フラグ15をOFF,予測ヒッ
トカウンタ16の内容を+1する(S39,S40)。
その後、最長一致長検出繰り返しのステップDで検出さ
れた最長一致データ列の次の2バイト分のデータ列に対
して最短一致長検出のステップAを実行し、一致が検出
された場合は先と同様に最長一致長検出のステップCを
実行する。
データレジスタ14に格納されている最長一致データ列
を辞書入力スタック70に格納し(S36)、次いで最
長一致長検出繰り返しのステップDで検出された最長一
致データ列の次のデータをスタートポジションとし(S
38)、更に、予測継続フラグ15をOFF,予測ヒッ
トカウンタ16の内容を+1する(S39,S40)。
その後、最長一致長検出繰り返しのステップDで検出さ
れた最長一致データ列の次の2バイト分のデータ列に対
して最短一致長検出のステップAを実行し、一致が検出
された場合は先と同様に最長一致長検出のステップCを
実行する。
【0075】そして、最短一致長検出のステップA或い
は最長一致長検出のステップCのサーチ処理S22,S
23に於いて、処理対象とするデータ列と一致するデー
タ列を検出できなかった場合は、予測継続のステップE
は終了し、前述した予測終了のステップBが実行され
る。また、予測継続のステップEのS37に於いて、予
測ヒットカウンタ16のカウント値がN(本実施例では
N=3とする)の場合は、S41,S42から構成され
る予測強制終了のステップFが実行される。
は最長一致長検出のステップCのサーチ処理S22,S
23に於いて、処理対象とするデータ列と一致するデー
タ列を検出できなかった場合は、予測継続のステップE
は終了し、前述した予測終了のステップBが実行され
る。また、予測継続のステップEのS37に於いて、予
測ヒットカウンタ16のカウント値がN(本実施例では
N=3とする)の場合は、S41,S42から構成され
る予測強制終了のステップFが実行される。
【0076】予測強制終了のステップFでは、予測エン
ドポインタ12の内容を予測スタートポインタ11にロ
ードし(S41)、予測継続フラグ15,予測ヒットカ
ウンタ16にそれぞれ「OFF」,「0」をセットする
(S42)。予測強制終了のステップFの終了後、S2
8の処理が行われる。
ドポインタ12の内容を予測スタートポインタ11にロ
ードし(S41)、予測継続フラグ15,予測ヒットカ
ウンタ16にそれぞれ「OFF」,「0」をセットする
(S42)。予測強制終了のステップFの終了後、S2
8の処理が行われる。
【0077】制御手段50は、辞書登録データ作成手段
10からの終了通知を受け取ると(図4,S4)、登録
手段20を起動する(S5)。
10からの終了通知を受け取ると(図4,S4)、登録
手段20を起動する(S5)。
【0078】登録手段20は起動されると、図6の流れ
図に示すように、辞書入力スタック70に格納されてい
る辞書登録データが既に辞書40に登録されているかを
サーチし(S51)、登録されている場合(S52がY
ES)は、制御手段50に対して終了通知を行う(S5
7)。また、登録されていない場合(S52がNO)
は、辞書入力スタック70に格納されている辞書登録デ
ータを、辞書登録用エントリ番号レジスタ21の内容に
よって示される辞書40中のエントリに登録する(S5
3)。その後、辞書登録用エントリ番号レジスタ21の
内容を+1し(S54)、辞書登録用エントリ番号レジ
スタ21の内容が辞書40の最大エントリ数を越えてい
るか否かを調べる(S55)。そして、越えていない場
合は制御手段50に対して終了通知を行い(S57)、
越えている場合は予測停止フラグ60をONにした後
(S56)、制御手段50に対して終了通知を行う(S
57)。
図に示すように、辞書入力スタック70に格納されてい
る辞書登録データが既に辞書40に登録されているかを
サーチし(S51)、登録されている場合(S52がY
ES)は、制御手段50に対して終了通知を行う(S5
7)。また、登録されていない場合(S52がNO)
は、辞書入力スタック70に格納されている辞書登録デ
ータを、辞書登録用エントリ番号レジスタ21の内容に
よって示される辞書40中のエントリに登録する(S5
3)。その後、辞書登録用エントリ番号レジスタ21の
内容を+1し(S54)、辞書登録用エントリ番号レジ
スタ21の内容が辞書40の最大エントリ数を越えてい
るか否かを調べる(S55)。そして、越えていない場
合は制御手段50に対して終了通知を行い(S57)、
越えている場合は予測停止フラグ60をONにした後
(S56)、制御手段50に対して終了通知を行う(S
57)。
【0079】制御手段50は、登録手段20からの終了
通知を受け取ると(図4,S6)、圧縮手段30を起動
する(S7)。
通知を受け取ると(図4,S6)、圧縮手段30を起動
する(S7)。
【0080】圧縮手段30は、制御手段50から起動さ
れると、図7の流れ図に示すように、予測停止フラグ6
0がONになっているか否かを調べる(S61)。
れると、図7の流れ図に示すように、予測停止フラグ6
0がONになっているか否かを調べる(S61)。
【0081】そして、予測停止フラグ60がOFFにな
っている場合は、S62〜S66から構成される辞書登
録を伴う圧縮のステップGを実行する。
っている場合は、S62〜S66から構成される辞書登
録を伴う圧縮のステップGを実行する。
【0082】辞書登録を伴う圧縮のステップGに於いて
は、先ず、圧縮スタートポインタ31と圧縮エンドポイ
ンタ32とによって示される入力データ列90中のデー
タ列と一致するデータ列が格納されている辞書40のエ
ントリを求め、そのエントリのエントリ番号を辞書エン
トリ番号レジスタ34にセットする(S62〜S6
4)。ここで、予測停止フラグ60がOFFの場合は、
辞書登録データ作成手段10,登録手段20の処理が実
行されているので、圧縮スタートポインタ31と圧縮エ
ンドポインタ32とによって示される入力データ列90
中のデータ列は、必ず、辞書40に登録されている。従
って、圧縮スタートポインタ31と圧縮エンドポインタ
32とによって指定されているデータ列が格納されてい
るエントリを求めるだけで良く、最長一致データ列を検
出する場合と比較して処理が簡単なものになる。
は、先ず、圧縮スタートポインタ31と圧縮エンドポイ
ンタ32とによって示される入力データ列90中のデー
タ列と一致するデータ列が格納されている辞書40のエ
ントリを求め、そのエントリのエントリ番号を辞書エン
トリ番号レジスタ34にセットする(S62〜S6
4)。ここで、予測停止フラグ60がOFFの場合は、
辞書登録データ作成手段10,登録手段20の処理が実
行されているので、圧縮スタートポインタ31と圧縮エ
ンドポインタ32とによって示される入力データ列90
中のデータ列は、必ず、辞書40に登録されている。従
って、圧縮スタートポインタ31と圧縮エンドポインタ
32とによって指定されているデータ列が格納されてい
るエントリを求めるだけで良く、最長一致データ列を検
出する場合と比較して処理が簡単なものになる。
【0083】その後、圧縮手段30は、圧縮データであ
ることを示す1ビットの識別子“1”と辞書エントリ番
号レジスタ34にセットされているエントリ番号とから
構成される圧縮データを作成して圧縮データファイル8
0に格納し(S65)、更に、入力データ列90中の圧
縮処理のスタートポジションを示す圧縮スタートポイン
タ31の内容を、圧縮エンドポインタ32の内容に
「1」を加えたものにする(S66)。辞書登録を伴う
圧縮のステップGの処理が終了すると、圧縮手段30
は、制御手段50に対して終了通知を行う(S67)。
尚、制御手段50に対して終了通知を行う際、入力デー
タ列90中に未処理のデータが存在しない場合は、その
ことも制御手段50に対して通知する。
ることを示す1ビットの識別子“1”と辞書エントリ番
号レジスタ34にセットされているエントリ番号とから
構成される圧縮データを作成して圧縮データファイル8
0に格納し(S65)、更に、入力データ列90中の圧
縮処理のスタートポジションを示す圧縮スタートポイン
タ31の内容を、圧縮エンドポインタ32の内容に
「1」を加えたものにする(S66)。辞書登録を伴う
圧縮のステップGの処理が終了すると、圧縮手段30
は、制御手段50に対して終了通知を行う(S67)。
尚、制御手段50に対して終了通知を行う際、入力デー
タ列90中に未処理のデータが存在しない場合は、その
ことも制御手段50に対して通知する。
【0084】また、予測停止フラグ60がONになって
いる場合(S61がYES)は、S68〜S71から構
成される登録完了済み辞書使用による圧縮のステップH
を実行する。
いる場合(S61がYES)は、S68〜S71から構
成される登録完了済み辞書使用による圧縮のステップH
を実行する。
【0085】登録完了済み辞書使用による圧縮のステッ
プHに於いては、圧縮手段30は、圧縮エンドポインタ
32の内容を“+2”した後(S68)、辞書40をサ
ーチし、圧縮スタートポインタ31と圧縮エンドポイン
タ32とによって示される入力データ列90中のデータ
列と一致するデータ列が辞書40に登録されているか否
かを調べる(S69,S70)。そして、登録されてい
る場合は、辞書ヒットフラグ33をONとすると共に一
致の検出された辞書40のエントリ番号を辞書エントリ
番号レジスタ34にセットし、登録されていない場合は
辞書ヒットフラグ33をOFFにする(S71)。
プHに於いては、圧縮手段30は、圧縮エンドポインタ
32の内容を“+2”した後(S68)、辞書40をサ
ーチし、圧縮スタートポインタ31と圧縮エンドポイン
タ32とによって示される入力データ列90中のデータ
列と一致するデータ列が辞書40に登録されているか否
かを調べる(S69,S70)。そして、登録されてい
る場合は、辞書ヒットフラグ33をONとすると共に一
致の検出された辞書40のエントリ番号を辞書エントリ
番号レジスタ34にセットし、登録されていない場合は
辞書ヒットフラグ33をOFFにする(S71)。
【0086】その後、圧縮手段30は、圧縮スタートポ
インタ31と圧縮エンドポインタ32によって示される
データ列と一致するデータが辞書40に登録されている
場合(S72がYES)は、S73〜S77から構成さ
れる登録完了済み辞書使用による圧縮率向上のステップ
I及びS73〜S80から構成される登録完了済み辞書
使用による圧縮のステップJを実行し、登録されていな
い場合(S72がNO)は、S81〜S83から構成さ
れる非圧縮のステップKを実行する。
インタ31と圧縮エンドポインタ32によって示される
データ列と一致するデータが辞書40に登録されている
場合(S72がYES)は、S73〜S77から構成さ
れる登録完了済み辞書使用による圧縮率向上のステップ
I及びS73〜S80から構成される登録完了済み辞書
使用による圧縮のステップJを実行し、登録されていな
い場合(S72がNO)は、S81〜S83から構成さ
れる非圧縮のステップKを実行する。
【0087】非圧縮のステップKに於いては、圧縮エン
ドポインタ32の内容を“−1”した後(S81)、圧
縮スタートポインタ31と圧縮エンドポインタ32とに
よって指定される入力データ列90中のデータ列の左端
に非圧縮を示す1バイトの識別子“0”を付加した圧縮
データを作成し、作成した圧縮データを圧縮データファ
イル80に格納する(S82)。その後、圧縮手段30
は、圧縮スタートポインタ31の内容を圧縮エンドポイ
ンタ32の内容とし(S83)、S67の処理を行う。
ドポインタ32の内容を“−1”した後(S81)、圧
縮スタートポインタ31と圧縮エンドポインタ32とに
よって指定される入力データ列90中のデータ列の左端
に非圧縮を示す1バイトの識別子“0”を付加した圧縮
データを作成し、作成した圧縮データを圧縮データファ
イル80に格納する(S82)。その後、圧縮手段30
は、圧縮スタートポインタ31の内容を圧縮エンドポイ
ンタ32の内容とし(S83)、S67の処理を行う。
【0088】また、登録完了済み辞書使用による圧縮率
向上のステップI,登録完了済み辞書使用による圧縮の
ステップJに於いては、圧縮スタートポインタ31と圧
縮エンドポインタ32とによって指定される入力データ
列90中のデータ列に対し、辞書40に登録されている
データ列の中で最も一致長の長いデータ列が登録されて
いるエントリを検出し(S73〜S78)、そのエント
リのエントリ番号の左端に圧縮を示す1ビットの識別子
“1”を接合した圧縮データを圧縮データファイル80
に格納する(S79)。
向上のステップI,登録完了済み辞書使用による圧縮の
ステップJに於いては、圧縮スタートポインタ31と圧
縮エンドポインタ32とによって指定される入力データ
列90中のデータ列に対し、辞書40に登録されている
データ列の中で最も一致長の長いデータ列が登録されて
いるエントリを検出し(S73〜S78)、そのエント
リのエントリ番号の左端に圧縮を示す1ビットの識別子
“1”を接合した圧縮データを圧縮データファイル80
に格納する(S79)。
【0089】制御手段50は、圧縮手段30からの終了
通知を受けると(図4,S8でYES)、再び予測停止
フラグ60がONになっているか否かを調べ(図4,S
2)、OFFになっている場合、即ち辞書40に空きエ
ントリが存在する場合は辞書登録データ作成手段10を
起動し、ONになっている場合、即ち辞書40に空きエ
ントリが存在しない場合は、圧縮手段30を起動する。
また、制御手段50は、圧縮手段30からの終了通知を
受けた時に未処理のデータ列が残っていない場合は(S
9でYES)、圧縮データファイル80中に格納された
圧縮データ及び辞書40の内容を受信側に送信する(S
10)。
通知を受けると(図4,S8でYES)、再び予測停止
フラグ60がONになっているか否かを調べ(図4,S
2)、OFFになっている場合、即ち辞書40に空きエ
ントリが存在する場合は辞書登録データ作成手段10を
起動し、ONになっている場合、即ち辞書40に空きエ
ントリが存在しない場合は、圧縮手段30を起動する。
また、制御手段50は、圧縮手段30からの終了通知を
受けた時に未処理のデータ列が残っていない場合は(S
9でYES)、圧縮データファイル80中に格納された
圧縮データ及び辞書40の内容を受信側に送信する(S
10)。
【0090】次に、以上説明した実施例をより理解しや
すくするために、先に説明した図2に示す入力データ列
の場合について各図を用いてより詳細に説明する。
すくするために、先に説明した図2に示す入力データ列
の場合について各図を用いてより詳細に説明する。
【0091】辞書登録データ作成手段10は、制御手段
50から起動されると、入力データ列90の最初の2バ
イト“pe”を第1登録候補データレジスタ13に格納
した後、上記2バイト“pe”が辞書40に既に登録さ
れているか否かを調べる(図5,S21,S22)。
50から起動されると、入力データ列90の最初の2バ
イト“pe”を第1登録候補データレジスタ13に格納
した後、上記2バイト“pe”が辞書40に既に登録さ
れているか否かを調べる(図5,S21,S22)。
【0092】この例の場合、辞書40にはデータが全く
登録されていないので、辞書登録データ作成手段10
は、第1登録候補データレジスタ13に格納されている
“pe”を辞書入力スタック70に格納する(S2
5)。
登録されていないので、辞書登録データ作成手段10
は、第1登録候補データレジスタ13に格納されている
“pe”を辞書入力スタック70に格納する(S2
5)。
【0093】その後、制御手段50によって登録手段2
0が起動されると、辞書入力スタック70に格納されて
いる辞書登録データ“pe”が図3に示すように、辞書
40のエントリ番号「0」のエントリに登録される(S
51)。
0が起動されると、辞書入力スタック70に格納されて
いる辞書登録データ“pe”が図3に示すように、辞書
40のエントリ番号「0」のエントリに登録される(S
51)。
【0094】その後、制御手段50によって圧縮手段3
0が起動されると、入力データ列90の最初の2バイト
のデータが、図2に示すように、圧縮データ“1・0”
に変換され、圧縮データファイル80に登録される(図
7,S62〜S65)。
0が起動されると、入力データ列90の最初の2バイト
のデータが、図2に示すように、圧縮データ“1・0”
に変換され、圧縮データファイル80に登録される(図
7,S62〜S65)。
【0095】“performance”の1回目の出
現時には、前述したと同様の処理が繰り返し行われ、図
3に示すように、辞書40のエントリ番号「0」〜
「5」のエントリに、“pe”,“rf”,“or”,
“ma”,“nc”,“e□”が登録され、図2に示す
ように、圧縮データ“1・0”,“1・1”,“1・
2”,“1・3”,“1・4”,“1・5”が出力され
る。
現時には、前述したと同様の処理が繰り返し行われ、図
3に示すように、辞書40のエントリ番号「0」〜
「5」のエントリに、“pe”,“rf”,“or”,
“ma”,“nc”,“e□”が登録され、図2に示す
ように、圧縮データ“1・0”,“1・1”,“1・
2”,“1・3”,“1・4”,“1・5”が出力され
る。
【0096】“performance”の第2回目の
出現時には、辞書登録データ作成手段10は、前回辞書
40に登録したデータ列“e□”の次の2バイト分のデ
ータ列“pe”を第1登録候補データレジスタ13に格
納した後、上記2データ列“pe”が辞書40に登録さ
れているかを調べる(図5,S21,S22)。
出現時には、辞書登録データ作成手段10は、前回辞書
40に登録したデータ列“e□”の次の2バイト分のデ
ータ列“pe”を第1登録候補データレジスタ13に格
納した後、上記2データ列“pe”が辞書40に登録さ
れているかを調べる(図5,S21,S22)。
【0097】この例の場合、データ列“pe”は、辞書
40のエントリ番号「0」のエントリに登録されている
ので、辞書登録データ作成手段10は、第1登録候補デ
ータレジスタ13に格納されているデータ列“pe”を
第2登録候補データレジスタ14に格納した後、上記デ
ータ列“pe”に次の1バイト“r”を結合した3バイ
ト分のデータ列“per”を第1登録候補データレジス
タ13に格納し、更に、上記3バイト分のデータ列“p
er”が辞書40に登録されているか否かを調べる(S
29〜S31)。
40のエントリ番号「0」のエントリに登録されている
ので、辞書登録データ作成手段10は、第1登録候補デ
ータレジスタ13に格納されているデータ列“pe”を
第2登録候補データレジスタ14に格納した後、上記デ
ータ列“pe”に次の1バイト“r”を結合した3バイ
ト分のデータ列“per”を第1登録候補データレジス
タ13に格納し、更に、上記3バイト分のデータ列“p
er”が辞書40に登録されているか否かを調べる(S
29〜S31)。
【0098】この例の場合、データ列“per”は、辞
書40に登録されていないので、辞書登録データ作成手
段10は、第1登録候補データレジスタ13に格納され
ている3バイト分のデータ列“per”を辞書入力スタ
ック70に格納する(S25)。
書40に登録されていないので、辞書登録データ作成手
段10は、第1登録候補データレジスタ13に格納され
ている3バイト分のデータ列“per”を辞書入力スタ
ック70に格納する(S25)。
【0099】その後、登録手段20が制御手段50によ
って起動されると、辞書入力スタック70に格納されて
いる3バイト分のデータ列“per”が、図3に示すよ
うに、辞書40のエントリ番号「6」のエントリに登録
される(図6,S51)。
って起動されると、辞書入力スタック70に格納されて
いる3バイト分のデータ列“per”が、図3に示すよ
うに、辞書40のエントリ番号「6」のエントリに登録
される(図6,S51)。
【0100】その後、制御手段50によって圧縮手段3
0が起動されると、図2に示すように、データ列“pe
r”が圧縮データ“1・6”に変換されて、圧縮データ
ファイル80に出力される(図7,S62〜S66)。
0が起動されると、図2に示すように、データ列“pe
r”が圧縮データ“1・6”に変換されて、圧縮データ
ファイル80に出力される(図7,S62〜S66)。
【0101】“performance”の第2回目,
第3回目の出現時には、前述したと同様の処理が繰り返
し行われ、図3に示すように、辞書40のエントリ番号
「6」〜「15」のエントリに“per”〜“ce□”
が登録され、図2に示すように、圧縮データ“1・6”
〜“1・15”が出力される。
第3回目の出現時には、前述したと同様の処理が繰り返
し行われ、図3に示すように、辞書40のエントリ番号
「6」〜「15」のエントリに“per”〜“ce□”
が登録され、図2に示すように、圧縮データ“1・6”
〜“1・15”が出力される。
【0102】“performance”の第4回目の
出現時には、辞書登録データ作成手段10は、辞書40
に前回登録したデータ列“ce□”の次の2バイト分の
データ列“pe”を第1登録候補データレジスタ13に
格納した後、上記2バイト分のデータ列“pe”が辞書
40に登録されているか否かを調べる(図5,S21,
S22)。
出現時には、辞書登録データ作成手段10は、辞書40
に前回登録したデータ列“ce□”の次の2バイト分の
データ列“pe”を第1登録候補データレジスタ13に
格納した後、上記2バイト分のデータ列“pe”が辞書
40に登録されているか否かを調べる(図5,S21,
S22)。
【0103】この例の場合、上記したデータ列“pe”
は、辞書40のエントリ番号「0」のエントリに登録さ
れているので、辞書登録データ作成手段10は、第1登
録候補データレジスタ13に格納されているデータ列
“pe”を第2登録候補データレジスタ14に格納した
後、上記データ列“pe”に次の1バイト“r”を結合
した3バイト分のデータ列“per”を第1登録候補デ
ータレジスタ13に格納し、更に、上記3バイト分のデ
ータ列“per”が辞書40に登録されているか否かを
調べる(S29〜S31)。
は、辞書40のエントリ番号「0」のエントリに登録さ
れているので、辞書登録データ作成手段10は、第1登
録候補データレジスタ13に格納されているデータ列
“pe”を第2登録候補データレジスタ14に格納した
後、上記データ列“pe”に次の1バイト“r”を結合
した3バイト分のデータ列“per”を第1登録候補デ
ータレジスタ13に格納し、更に、上記3バイト分のデ
ータ列“per”が辞書40に登録されているか否かを
調べる(S29〜S31)。
【0104】この例の場合、データ列“per”は、辞
書40のエントリ番号「6」のエントリに登録されてい
るので、辞書登録データ作成手段10は、予測継続フラ
グをONにする(S32,S33,S35)。その後、
第1登録候補データレジスタ13に格納されているデー
タ列“per”を第2登録候補データレジスタ14に格
納した後、上記データ列“per”に次の1バイト
“f”を結合した4バイト分のデータ列“perf”を
第1登録候補データレジスタ13に格納し、更に、上記
4バイト分のデータ列“perf”が辞書40に登録さ
れているか否かを調べる(S29〜S31)。
書40のエントリ番号「6」のエントリに登録されてい
るので、辞書登録データ作成手段10は、予測継続フラ
グをONにする(S32,S33,S35)。その後、
第1登録候補データレジスタ13に格納されているデー
タ列“per”を第2登録候補データレジスタ14に格
納した後、上記データ列“per”に次の1バイト
“f”を結合した4バイト分のデータ列“perf”を
第1登録候補データレジスタ13に格納し、更に、上記
4バイト分のデータ列“perf”が辞書40に登録さ
れているか否かを調べる(S29〜S31)。
【0105】この例の場合、上記したデータ列“per
f”は、辞書40に登録されておらず予測継続フラグは
ONになっているので、辞書登録データ作成手段10
は、第2登録候補データレジスタ14に格納されている
データ列“per”を辞書入力スタック70に格納し
(S36)、その後、上記データ列“per”の次の2
バイト分のデータ列“fo”を第1登録候補データレジ
スタ13に格納し、更に、上記データ列“fo”が辞書
40に登録されているか否かを調べる(S21,S2
2)。
f”は、辞書40に登録されておらず予測継続フラグは
ONになっているので、辞書登録データ作成手段10
は、第2登録候補データレジスタ14に格納されている
データ列“per”を辞書入力スタック70に格納し
(S36)、その後、上記データ列“per”の次の2
バイト分のデータ列“fo”を第1登録候補データレジ
スタ13に格納し、更に、上記データ列“fo”が辞書
40に登録されているか否かを調べる(S21,S2
2)。
【0106】この例の場合、データ列“fo”は、辞書
40のエントリ番号「7」のエントリに登録されている
ので、辞書登録データ作成手段10は、前述したと同様
に、第1登録候補データレジスタ13に格納されている
データ列“fo”を第2登録候補データレジスタ14に
格納した後、上記データ列“fo”に次の1バイト分の
データ“r”を付加した3バイト分のデータ列“fo
r”を第1登録候補データレジスタ13に登録し、更
に、上記3バイト分のデータ列“for”が辞書40に
登録されているか否かを調べる(S29〜S31)。
40のエントリ番号「7」のエントリに登録されている
ので、辞書登録データ作成手段10は、前述したと同様
に、第1登録候補データレジスタ13に格納されている
データ列“fo”を第2登録候補データレジスタ14に
格納した後、上記データ列“fo”に次の1バイト分の
データ“r”を付加した3バイト分のデータ列“fo
r”を第1登録候補データレジスタ13に登録し、更
に、上記3バイト分のデータ列“for”が辞書40に
登録されているか否かを調べる(S29〜S31)。
【0107】この例の場合、データ列“for”は、辞
書40のエントリ番号13のエントリに登録されている
ので、辞書登録データ作成手段10は、データ列“fo
r”に次の1バイト“m”を付加した4バイト分のデー
タ“form”に対して前述したと同様の処理を行う。
この例の場合、“form”は、辞書40に登録されて
いないので、辞書登録データ作成手段10は、第2登録
候補データレジスタ14に登録されているデータ列“f
or”を辞書入力スタック70に格納する(S36)。
この時点に於ける辞書入力スタック70の内容は、前回
格納したデータ列“per”に今回格納した“for”
を追加したもの、即ち“perfor”となる。
書40のエントリ番号13のエントリに登録されている
ので、辞書登録データ作成手段10は、データ列“fo
r”に次の1バイト“m”を付加した4バイト分のデー
タ“form”に対して前述したと同様の処理を行う。
この例の場合、“form”は、辞書40に登録されて
いないので、辞書登録データ作成手段10は、第2登録
候補データレジスタ14に登録されているデータ列“f
or”を辞書入力スタック70に格納する(S36)。
この時点に於ける辞書入力スタック70の内容は、前回
格納したデータ列“per”に今回格納した“for”
を追加したもの、即ち“perfor”となる。
【0108】以下、予測ヒットカウンタ16の値が
「3」となり、S37がNOとなるまで、前述したと同
様の処理が行われ、辞書入力スタック70に“perf
ormance□”が格納される。
「3」となり、S37がNOとなるまで、前述したと同
様の処理が行われ、辞書入力スタック70に“perf
ormance□”が格納される。
【0109】その後、制御手段50によって登録手段2
0が起動されると、図3に示すように、辞書40のエン
トリ番号「16」のエントリに、データ列“perfo
rmance□”が登録される。
0が起動されると、図3に示すように、辞書40のエン
トリ番号「16」のエントリに、データ列“perfo
rmance□”が登録される。
【0110】更に、その後、制御手段50によって圧縮
手段30が起動されると、図2に示すように、入力デー
タ列90中のデータ列“performance□”が
圧縮データ“1・16”に変換されて、圧縮データファ
イル80に出力される。
手段30が起動されると、図2に示すように、入力デー
タ列90中のデータ列“performance□”が
圧縮データ“1・16”に変換されて、圧縮データファ
イル80に出力される。
【0111】このように、本実施例では、辞書40への
最小登録単位を2バイトとし、既に辞書40に登録済み
のデータ列を組み合わせることにより、より長く、ヒッ
ト率の高いデータ列を辞書40に登録するようにしてい
る。本実施例のようにすると、ヒット率が高くなるとい
うのは、本実施例に於ける圧縮動作,辞書内容を示す図
2,図3と、従来の技術(米国特許第4814746号
明細書に記載されている技術)の圧縮動作,辞書内容を
示す図8,図9とを比較することにより明らかである。
最小登録単位を2バイトとし、既に辞書40に登録済み
のデータ列を組み合わせることにより、より長く、ヒッ
ト率の高いデータ列を辞書40に登録するようにしてい
る。本実施例のようにすると、ヒット率が高くなるとい
うのは、本実施例に於ける圧縮動作,辞書内容を示す図
2,図3と、従来の技術(米国特許第4814746号
明細書に記載されている技術)の圧縮動作,辞書内容を
示す図8,図9とを比較することにより明らかである。
【0112】図2,図3及び図8,図9はデータ圧縮開
始直後の状態を想定している。入力データ列“perf
ormance□performance□perfo
rmance□performance□perfor
mance□”が入力された場合、データ圧縮開始直後
であるので、辞書にはデータ列がほとんど登録されてい
ない。
始直後の状態を想定している。入力データ列“perf
ormance□performance□perfo
rmance□performance□perfor
mance□”が入力された場合、データ圧縮開始直後
であるので、辞書にはデータ列がほとんど登録されてい
ない。
【0113】図8,図9に示す従来の技術の場合は、図
9に示すように、“performance”という入
力データ列が登録されるまでに、21個の辞書のデータ
エントリ部が必要になる。一方、本実施例の場合は、図
3に示すように、16個の辞書のデータエントリ部で
“performance”という入力データ列を登録
できる。また、従来の技術に於いて辞書に登録された
“rfor”,“mance”,“ormance”等
のデータ列は、“performance”というデー
タ列とは異なる別の入力データ列に対するデータ圧縮時
には、ほとんど使用されないと予想される。このよう
に、本実施例によれば、辞書のエントリを無駄に使用す
ることが少なくなる。
9に示すように、“performance”という入
力データ列が登録されるまでに、21個の辞書のデータ
エントリ部が必要になる。一方、本実施例の場合は、図
3に示すように、16個の辞書のデータエントリ部で
“performance”という入力データ列を登録
できる。また、従来の技術に於いて辞書に登録された
“rfor”,“mance”,“ormance”等
のデータ列は、“performance”というデー
タ列とは異なる別の入力データ列に対するデータ圧縮時
には、ほとんど使用されないと予想される。このよう
に、本実施例によれば、辞書のエントリを無駄に使用す
ることが少なくなる。
【0114】更に、この“performance”と
いうデータ列のみに限って圧縮率を概算すると、従来の
技術では次のようになる。長さが12バイトの“per
formance□”というデータ列が4回出現した時
の非圧縮データのビット数は、12×4×8=384ビ
ットとなり、これに対する圧縮データのビット数は、図
8に示すように、圧縮データの個数が23個で、各圧縮
データは圧縮,非圧縮を示す1ビットの識別子と1バイ
ト分のデータとから構成されるので、23ビット+23
バイト=23ビット+8×23ビット=207ビットと
なる。従って、圧縮率は、207÷384≒0.54と
なる。
いうデータ列のみに限って圧縮率を概算すると、従来の
技術では次のようになる。長さが12バイトの“per
formance□”というデータ列が4回出現した時
の非圧縮データのビット数は、12×4×8=384ビ
ットとなり、これに対する圧縮データのビット数は、図
8に示すように、圧縮データの個数が23個で、各圧縮
データは圧縮,非圧縮を示す1ビットの識別子と1バイ
ト分のデータとから構成されるので、23ビット+23
バイト=23ビット+8×23ビット=207ビットと
なる。従って、圧縮率は、207÷384≒0.54と
なる。
【0115】これに対して、実施例の場合は、圧縮デー
タのビット数は、図2に示すように、圧縮データの個数
が17個で、各非圧縮データは圧縮,非圧縮を示す1ビ
ットの識別子と1バイト分のデータとから構成されるの
で、17ビット+17バイト=17ビット+8×17=
153となる。従って、圧縮率は、153÷384≒
0.40となる。このように、本実施例によれば、圧縮
率を従来の技術に比較して優れたものにすることができ
る。
タのビット数は、図2に示すように、圧縮データの個数
が17個で、各非圧縮データは圧縮,非圧縮を示す1ビ
ットの識別子と1バイト分のデータとから構成されるの
で、17ビット+17バイト=17ビット+8×17=
153となる。従って、圧縮率は、153÷384≒
0.40となる。このように、本実施例によれば、圧縮
率を従来の技術に比較して優れたものにすることができ
る。
【0116】図10及び図11は、従来の技術に於いて
データ圧縮が開始されてからある程度時間が経過した時
の辞書内容及び圧縮データを示した図であり、図12及
び図13は、実施例に於いてデータ圧縮が開始されてか
らある程度時間が経過した時の辞書内容及び圧縮データ
を示した図である。図10,図12に示すように、辞書
には、既に、“performance□”というデー
タ列の部分列である“per”,“for”,“ma
n”,“ce□”が登録されているとする。
データ圧縮が開始されてからある程度時間が経過した時
の辞書内容及び圧縮データを示した図であり、図12及
び図13は、実施例に於いてデータ圧縮が開始されてか
らある程度時間が経過した時の辞書内容及び圧縮データ
を示した図である。図10,図12に示すように、辞書
には、既に、“performance□”というデー
タ列の部分列である“per”,“for”,“ma
n”,“ce□”が登録されているとする。
【0117】従来の技術に於いては、図10に示すよう
に、“performance□”という入力データ列
を含めて、更に辞書のデータエントリ部が6エントリ必
要になり、“performance□”というデータ
列が2回出現しないと、辞書のデータエントリ部に“p
erformance□”というデータ列が登録されな
い。この場合にも、“forman”という使用頻度が
低いと思われるデータ列が辞書のデータエントリ部に余
分に登録されてしまう欠点がみられる。
に、“performance□”という入力データ列
を含めて、更に辞書のデータエントリ部が6エントリ必
要になり、“performance□”というデータ
列が2回出現しないと、辞書のデータエントリ部に“p
erformance□”というデータ列が登録されな
い。この場合にも、“forman”という使用頻度が
低いと思われるデータ列が辞書のデータエントリ部に余
分に登録されてしまう欠点がみられる。
【0118】これに対して、本実施例では、図5に示し
た予測継続のステップEにより、辞書に登録済みの“p
er”,“for”,“man”,“ce□”という4
個のデータ列を組み合わせて辞書登録データを作成する
ので、辞書のデータエントリ部に追加されるデータ列
は、“performance□”の1個のみである。
このように、本実施例によれば、辞書のエントリを無駄
に使用することが少なくなる。
た予測継続のステップEにより、辞書に登録済みの“p
er”,“for”,“man”,“ce□”という4
個のデータ列を組み合わせて辞書登録データを作成する
ので、辞書のデータエントリ部に追加されるデータ列
は、“performance□”の1個のみである。
このように、本実施例によれば、辞書のエントリを無駄
に使用することが少なくなる。
【0119】更に、この“performance□”
というデータ列のみに限って圧縮率を概算すると、従来
の技術では次のようになる。長さが12バイトの“pe
rformance□”というデータ列が2回出現した
時の非圧縮データのビット数は、12×2×8=192
ビットとなり、これに対する圧縮データのビット数は、
図11に示すように、圧縮データの個数が6個で、各圧
縮データは各圧縮データは圧縮,非圧縮を示す1ビット
の識別子と1バイト分のデータとから構成されるので、
6ビット+8×6ビット=54ビットとなる。従って、
圧縮率は、54÷192≒0.28となる。
というデータ列のみに限って圧縮率を概算すると、従来
の技術では次のようになる。長さが12バイトの“pe
rformance□”というデータ列が2回出現した
時の非圧縮データのビット数は、12×2×8=192
ビットとなり、これに対する圧縮データのビット数は、
図11に示すように、圧縮データの個数が6個で、各圧
縮データは各圧縮データは圧縮,非圧縮を示す1ビット
の識別子と1バイト分のデータとから構成されるので、
6ビット+8×6ビット=54ビットとなる。従って、
圧縮率は、54÷192≒0.28となる。
【0120】これに対して、実施例の場合は、圧縮デー
タのビット数は、図13に示すように、圧縮データの個
数が2個で、各非圧縮データは圧縮,非圧縮を示す1ビ
ットの識別子と1バイト分のデータとから構成されるの
で、2ビット+8×2ビット=18ビットとなる。従っ
て、圧縮率は、18÷192≒0.09となる。このよ
うに、本実施例によれば、圧縮率を従来の技術に比較し
て優れたものにすることができる。
タのビット数は、図13に示すように、圧縮データの個
数が2個で、各非圧縮データは圧縮,非圧縮を示す1ビ
ットの識別子と1バイト分のデータとから構成されるの
で、2ビット+8×2ビット=18ビットとなる。従っ
て、圧縮率は、18÷192≒0.09となる。このよ
うに、本実施例によれば、圧縮率を従来の技術に比較し
て優れたものにすることができる。
【0121】
【発明の効果】以上説明したように本発明は、入力デー
タ列中の前回辞書に登録したデータ列の次のデータをス
タートポイントにした辞書登録データ作成処理を行い、
次いで、作成した辞書登録データを辞書に登録する登録
処理を行い、その後、辞書登録データを作成する際のス
タートポイントとなった入力データ列中のデータをスタ
ートポイントにして辞書を使用した圧縮処理を行うもの
であり、入力データ列に対する圧縮処理を実行する前
に、必ず、圧縮対象となるデータ列が辞書に登録される
ので、1回も圧縮処理に使用されない無駄なデータが辞
書に登録されることはない。従って、本発明によれば、
限られたサイズの辞書に、圧縮処理に使用されるデータ
列を数多く登録することが可能になるので、入力データ
列の圧縮効率を高いものにすることができる。
タ列中の前回辞書に登録したデータ列の次のデータをス
タートポイントにした辞書登録データ作成処理を行い、
次いで、作成した辞書登録データを辞書に登録する登録
処理を行い、その後、辞書登録データを作成する際のス
タートポイントとなった入力データ列中のデータをスタ
ートポイントにして辞書を使用した圧縮処理を行うもの
であり、入力データ列に対する圧縮処理を実行する前
に、必ず、圧縮対象となるデータ列が辞書に登録される
ので、1回も圧縮処理に使用されない無駄なデータが辞
書に登録されることはない。従って、本発明によれば、
限られたサイズの辞書に、圧縮処理に使用されるデータ
列を数多く登録することが可能になるので、入力データ
列の圧縮効率を高いものにすることができる。
【0122】また、本発明は、辞書登録データ作成処理
に於いて、最長一致データ列の長さが予め定められてい
る長さ以上の場合は、その最長一致データ列の後に連続
して存在する辞書に登録済みのデータとの一致長が所定
長以上のデータ列と、その直後に存在する所定長のデー
タとしたので、辞書作成初期段階に於いても比較的長い
データ列を辞書に登録することが可能になるので、圧縮
初期の段階に於いても高い圧縮効率を得ることができ
る。
に於いて、最長一致データ列の長さが予め定められてい
る長さ以上の場合は、その最長一致データ列の後に連続
して存在する辞書に登録済みのデータとの一致長が所定
長以上のデータ列と、その直後に存在する所定長のデー
タとしたので、辞書作成初期段階に於いても比較的長い
データ列を辞書に登録することが可能になるので、圧縮
初期の段階に於いても高い圧縮効率を得ることができ
る。
【図1】本発明のデータ圧縮方法を実施する装置の構成
例を示すブロック図である。
例を示すブロック図である。
【図2】実施例に於ける圧縮データを示した図である。
【図3】実施例に於ける辞書内容を示した図である。
【図4】制御手段50の処理例を示す流れ図である。
【図5】辞書登録データ作成手段10内の処理部18の
処理例を示す流れ図である。
処理例を示す流れ図である。
【図6】登録手段20内の処理部22の処理例を示す流
れ図である。
れ図である。
【図7】圧縮手段30内の処理部35の処理例を示す流
れ図である。
れ図である。
【図8】従来の技術に於ける圧縮データを示した図であ
る。
る。
【図9】従来の技術に於ける辞書内容を示した図であ
る。
る。
【図10】従来の技術に於ける圧縮データを示した図で
ある。
ある。
【図11】従来の技術に於ける辞書内容を示した図であ
る。
る。
【図12】実施例に於ける圧縮データを示した図であ
る。
る。
【図13】実施例に於ける辞書内容を示した図である。
【図14】従来の技術に於ける辞書登録動作,圧縮動作
を説明するための図である。
を説明するための図である。
【図15】従来の技術に於ける辞書登録動作,圧縮動作
を説明するための図である。
を説明するための図である。
【図16】他の従来の技術に於ける辞書登録動作,圧縮
動作を説明するための図である。
動作を説明するための図である。
【図17】上記した他の従来の技術に於ける辞書登録動
作,圧縮動作を説明するための図である。
作,圧縮動作を説明するための図である。
1…データ圧縮装置 10…辞書登録データ作成手段 11…予測スタートポインタ 12…予測エンドポインタ 13…第1登録候補データレジスタ 14…第2登録候補データレジスタ 15…予測継続フラグ 16…予測ヒットカウンタ 17…予測フラグ 18…処理部 20…登録手段 21…辞書登録用エントリ番号レジスタ 22…処理部 30…圧縮手段 31…圧縮スタートポインタ 32…圧縮エンドポインタ 33…辞書ヒットフラグ 34…辞書エントリ番号レジスタ 35…処理部 40…辞書 41…エントリ番号部 42…データエントリ部 50…制御手段 60…予測停止フラグ 70…辞書入力スタック 80…圧縮データファイル
Claims (4)
- 【請求項1】 入力データ列中の前回辞書に登録したデ
ータ列の次のデータをスタートポジションとするデータ
列の内、前記辞書に登録済みのデータ列との一致部分の
長さが最も長い最長一致データ列をサーチし、サーチし
た最長一致データ列とそれに続く予め定められた規則に
よって定められるデータとを結合したデータ列を辞書登
録データとする辞書登録データ作成処理を、入力データ
列の先頭部分から末尾部分に向かって順次行い、 前記辞書登録データ作成処理によって辞書登録データが
作成される毎に、作成された辞書登録データを前記辞書
に登録する登録処理を行い、 前記登録処理によって辞書登録データが前記辞書に登録
される毎に、その辞書登録データを作成する際のスター
トポジションとなった前記入力データ列中のデータをス
タートポジションにして前記辞書を使用した圧縮処理を
行うことを特徴とするデータ圧縮方法。 - 【請求項2】 前記辞書登録データ作成処理に於いて辞
書登録データを作成する際、 前記最長一致データ列の長さが所定の長さ未満の場合
は、前記スタートポジションとしたデータから前記所定
の長さ分のデータを辞書登録データとし、 前記最長一致データ列の長さが前記所定の長さと等しい
場合は、前記最長一致データ列と次の1バイト分のデー
タとを結合したデータを辞書登録データとし、 前記最長一致データ列の長さが前記所定の長さよりも長
い場合は、前記最長一致データ列と、その後に連続して
存在する、前記辞書に登録済みのデータ列との一致長が
前記所定の長さよりも長い全てのデータ列と、その直後
に存在する所定長のデータとを結合したデータを辞書登
録データとすることを特徴とする請求項1記載のデータ
圧縮方法。 - 【請求項3】 前記所定の長さは2バイトであることを
特徴とする請求項2記載のデータ圧縮方法。 - 【請求項4】 前記辞書が満杯になった後は、 前記辞書登録データ作成処理及び前記登録処理は行わ
ず、 前記圧縮処理に於いては、前回圧縮対象としたデータ列
の次のデータをスタートポジションにした圧縮処理を行
うことを特徴とする請求項3記載のデータ圧縮方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7276651A JP2746228B2 (ja) | 1995-09-29 | 1995-09-29 | データ圧縮方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7276651A JP2746228B2 (ja) | 1995-09-29 | 1995-09-29 | データ圧縮方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0997163A true JPH0997163A (ja) | 1997-04-08 |
JP2746228B2 JP2746228B2 (ja) | 1998-05-06 |
Family
ID=17572431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7276651A Expired - Lifetime JP2746228B2 (ja) | 1995-09-29 | 1995-09-29 | データ圧縮方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2746228B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013197850A (ja) * | 2012-03-19 | 2013-09-30 | Fujitsu Ltd | 符号化方法、符号化装置及びコンピュータプログラム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05341953A (ja) * | 1992-06-12 | 1993-12-24 | Fujitsu Ltd | データ圧縮方法及び装置 |
-
1995
- 1995-09-29 JP JP7276651A patent/JP2746228B2/ja not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05341953A (ja) * | 1992-06-12 | 1993-12-24 | Fujitsu Ltd | データ圧縮方法及び装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013197850A (ja) * | 2012-03-19 | 2013-09-30 | Fujitsu Ltd | 符号化方法、符号化装置及びコンピュータプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP2746228B2 (ja) | 1998-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2986319B2 (ja) | 準静的データを圧縮し展開する方法 | |
Williams | An extremely fast Ziv-Lempel data compression algorithm | |
US6215906B1 (en) | Data compression and restoration system for encoding an input character on the basis of a conditional appearance rate obtained in relation to an immediately preceding character string | |
JP2000505968A (ja) | 即時辞書更新がストリング探索とインターリーブされたデータ圧縮解凍システム | |
JP2534465B2 (ja) | デ―タ圧縮装置および方法 | |
JPH0756955A (ja) | 圧縮データをサーチする方法及びシステム | |
JP2006262462A (ja) | データ圧縮方法及びシステム | |
JP2746228B2 (ja) | データ圧縮方法 | |
JPH10261969A (ja) | データ圧縮方法および装置 | |
JP4726046B2 (ja) | 文字列検索装置及びコンピュータプログラム及び文字列検索方法 | |
JP4600342B2 (ja) | データ圧縮プログラム | |
JP2699965B2 (ja) | データ圧縮方式及びデータ復元方式 | |
JPH06290021A (ja) | ソースプログラム圧縮方法 | |
JP3186530B2 (ja) | コンピュータデータの圧縮・伸長方法 | |
JP2564749B2 (ja) | データ圧縮方法 | |
JP2003152548A (ja) | データ圧縮における文字列検索方法 | |
JP2772125B2 (ja) | 辞書検索方式 | |
JP3058931B2 (ja) | データ圧縮・復元における辞書登録方式 | |
JPH05265416A (ja) | 画像情報伝送方式 | |
JP2003318739A (ja) | データシーケンスを圧縮するシステム、方法、およびコンピュータ読み取り可能媒体 | |
JPH06274311A (ja) | データ圧縮装置及びデータ復元装置 | |
JP2772124B2 (ja) | 辞書検索方式 | |
JPH06291677A (ja) | データ圧縮装置及びデータ復元装置 | |
JP2769056B2 (ja) | デ−タ圧縮装置 | |
JPS62169273A (ja) | 言語処理プログラムにおけるラベル情報の登録・参照方式 |