JP3132774B2 - データ圧縮・復元装置 - Google Patents
データ圧縮・復元装置Info
- Publication number
- JP3132774B2 JP3132774B2 JP34571191A JP34571191A JP3132774B2 JP 3132774 B2 JP3132774 B2 JP 3132774B2 JP 34571191 A JP34571191 A JP 34571191A JP 34571191 A JP34571191 A JP 34571191A JP 3132774 B2 JP3132774 B2 JP 3132774B2
- Authority
- JP
- Japan
- Prior art keywords
- dictionary
- character string
- registered
- data
- search
- 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.)
- Expired - Fee Related
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【0001】
【産業上の利用分野】本発明はデータ圧縮・復元装置に
関し、特にユニバーサル符号化及び復号化によるデータ
の圧縮及び復元を行うデータ圧縮・復元装置に関する。
関し、特にユニバーサル符号化及び復号化によるデータ
の圧縮及び復元を行うデータ圧縮・復元装置に関する。
【0002】近年、著しい技術開発によって、コンピュ
ータの処理速度及び記憶容量等は飛躍的な発展を遂げつ
つある。しかし、コンピュータでベクトル情報及び画像
情報等のデータを扱うようになってからは、従来以上に
取り扱うデータ量が増加しつつある。このようなデータ
量の大幅な増加に対処するため、データの内容を損なわ
ずにデータ量を減らす種々のデータ圧縮方式が提案され
ている。
ータの処理速度及び記憶容量等は飛躍的な発展を遂げつ
つある。しかし、コンピュータでベクトル情報及び画像
情報等のデータを扱うようになってからは、従来以上に
取り扱うデータ量が増加しつつある。このようなデータ
量の大幅な増加に対処するため、データの内容を損なわ
ずにデータ量を減らす種々のデータ圧縮方式が提案され
ている。
【0003】これらのデータ圧縮方式は、データに含ま
れる冗長な部分を省いて符号化することによって、デー
タを圧縮する方式である。データ圧縮方式によって、デ
ータ量を減らすことができ、結果的に記憶容量を減らす
ことができる。また、通信では圧縮したデータを伝送す
ることによって、同一内容の情報を速く伝送することが
できる。
れる冗長な部分を省いて符号化することによって、デー
タを圧縮する方式である。データ圧縮方式によって、デ
ータ量を減らすことができ、結果的に記憶容量を減らす
ことができる。また、通信では圧縮したデータを伝送す
ることによって、同一内容の情報を速く伝送することが
できる。
【0004】なお、「文字(Character )」及び「文字
列(Character String)」の定義はJIS−C6230
に従うほか、情報理論で用いられている呼称を踏襲し、
1ワード単位で構成されるデータを「文字」と呼び、任
意のワード単位で構成されるデータを「文字列」と呼ぶ
ことにする。
列(Character String)」の定義はJIS−C6230
に従うほか、情報理論で用いられている呼称を踏襲し、
1ワード単位で構成されるデータを「文字」と呼び、任
意のワード単位で構成されるデータを「文字列」と呼ぶ
ことにする。
【0005】
【従来の技術】従来、上記のようなデータを圧縮する一
例として、ユニバーサル符号化方式が提案されている。
ユニバーサル符号化方式の代表的な例として、LZ(Le
mpel-Ziv)符号化法と算術符号化法とがある。また、L
Z符号化法には、ユニバーサル型と増分分解型(Increm
ental persing )のアルゴリズムが提案されている。さ
らに、これらのアルゴリズムを改良した符号化法とし
て、ユニバーサル型に属するLZSS符号化法と、増分
分解型に属するLZW(Lempel-Ziv-Welch)符号化法と
がある。
例として、ユニバーサル符号化方式が提案されている。
ユニバーサル符号化方式の代表的な例として、LZ(Le
mpel-Ziv)符号化法と算術符号化法とがある。また、L
Z符号化法には、ユニバーサル型と増分分解型(Increm
ental persing )のアルゴリズムが提案されている。さ
らに、これらのアルゴリズムを改良した符号化法とし
て、ユニバーサル型に属するLZSS符号化法と、増分
分解型に属するLZW(Lempel-Ziv-Welch)符号化法と
がある。
【0006】なお、LZ符号化法は、例えば、宗像清治
著「Lempel-Zivデータ圧縮法」、情報処理、pp.2〜6, V
ol.26, No.1, 1985 に詳しく掲載されている。また、L
ZSS符号化法は、T.C. Bell, "Better OPM/L Text Co
mpression", IEEE Trans.onCommu., Vol.COM-34, No.1
2, Dec.1986 に詳しく掲載されている。さらに、LZW
符号化法は、T.A. Welch, "A Technique for High-Perf
ormance Data Compression", Computer, Jun.1984 に詳
しく掲載されている。そして、増分分解型の符号化法及
びLZW符号化法は、特開昭59−231683号、米国特許N
o. 4,558,302号において開示されている。
著「Lempel-Zivデータ圧縮法」、情報処理、pp.2〜6, V
ol.26, No.1, 1985 に詳しく掲載されている。また、L
ZSS符号化法は、T.C. Bell, "Better OPM/L Text Co
mpression", IEEE Trans.onCommu., Vol.COM-34, No.1
2, Dec.1986 に詳しく掲載されている。さらに、LZW
符号化法は、T.A. Welch, "A Technique for High-Perf
ormance Data Compression", Computer, Jun.1984 に詳
しく掲載されている。そして、増分分解型の符号化法及
びLZW符号化法は、特開昭59−231683号、米国特許N
o. 4,558,302号において開示されている。
【0007】これらの符号化法のうち、高速処理がで
き、アルゴリズムが簡単であるという利点から、一般的
にLZW符号化法が使用されてきた。LZW符号化法
は、書き換え可能な辞書をもち、以下に示す処理によっ
て符号化を行う方法である。まず、新規の入力文字列を
相異なる部分文字列に分割し、この部分文字列が辞書に
登録されてなければ、出現した順に識別番号を付して全
て辞書に登録する。同時に、現在入力している部分文字
列のうち、最長の部分文字列と一致する部分文字列を辞
書から選択し、選択した部分文字列に付されている識別
番号で符号化する。
き、アルゴリズムが簡単であるという利点から、一般的
にLZW符号化法が使用されてきた。LZW符号化法
は、書き換え可能な辞書をもち、以下に示す処理によっ
て符号化を行う方法である。まず、新規の入力文字列を
相異なる部分文字列に分割し、この部分文字列が辞書に
登録されてなければ、出現した順に識別番号を付して全
て辞書に登録する。同時に、現在入力している部分文字
列のうち、最長の部分文字列と一致する部分文字列を辞
書から選択し、選択した部分文字列に付されている識別
番号で符号化する。
【0008】以下、LZW符号化法を使用したデータ圧
縮回路及びデータ復元回路の詳細について説明する。図
15は、従来のデータ圧縮回路を示す図である。図にお
いて、従来のデータ圧縮回路は、辞書検索手段121、
辞書登録手段122、ユニバーサル符号化手段123及
び辞書D12から構成される。
縮回路及びデータ復元回路の詳細について説明する。図
15は、従来のデータ圧縮回路を示す図である。図にお
いて、従来のデータ圧縮回路は、辞書検索手段121、
辞書登録手段122、ユニバーサル符号化手段123及
び辞書D12から構成される。
【0009】辞書検索手段121は、辞書D12に登録
されている登録文字列のうち、入力された入力文字列と
一致する登録文字列を検索する。辞書登録手段122
は、辞書検索手段121によって検索できなかった入力
文字列に識別番号を付して辞書122に登録する。ユニ
バーサル符号化手段123は、辞書検索手段121によ
って検索された登録文字列に付された識別番号、あるい
は辞書登録手段122によって入力文字列に新たに付さ
れた識別番号を出力符号に符号化する。
されている登録文字列のうち、入力された入力文字列と
一致する登録文字列を検索する。辞書登録手段122
は、辞書検索手段121によって検索できなかった入力
文字列に識別番号を付して辞書122に登録する。ユニ
バーサル符号化手段123は、辞書検索手段121によ
って検索された登録文字列に付された識別番号、あるい
は辞書登録手段122によって入力文字列に新たに付さ
れた識別番号を出力符号に符号化する。
【0010】辞書検索手段121、辞書登録手段122
及びユニバーサル符号化手段123の符号化処理は、シ
ーケンシャルに行われる。この符号化処理手順の一例を
図16に示す。
及びユニバーサル符号化手段123の符号化処理は、シ
ーケンシャルに行われる。この符号化処理手順の一例を
図16に示す。
【0011】図16は、従来のデータ圧縮回路による処
理手順を示す図である。図には、処理文字数欄125、
辞書検索欄126、辞書登録欄127及び符号化欄12
8からなる表を示す。
理手順を示す図である。図には、処理文字数欄125、
辞書検索欄126、辞書登録欄127及び符号化欄12
8からなる表を示す。
【0012】処理文字数欄125には、入力文字列が符
号化される際に処理される先頭からの文字順位を示す。
辞書検索欄126は、図15の辞書検索手段121が処
理する内容を示す。辞書登録欄127は、辞書登録手段
122が処理する内容を示す。符号化欄128は、ユニ
バーサル符号化手段123が処理する内容を示す。な
お、円内の数字は処理手順の順番を示す。以下、「円内
の数字X」を「サイクルX」と表記する。
号化される際に処理される先頭からの文字順位を示す。
辞書検索欄126は、図15の辞書検索手段121が処
理する内容を示す。辞書登録欄127は、辞書登録手段
122が処理する内容を示す。符号化欄128は、ユニ
バーサル符号化手段123が処理する内容を示す。な
お、円内の数字は処理手順の順番を示す。以下、「円内
の数字X」を「サイクルX」と表記する。
【0013】まず、サイクル1〜サイクル3では、入力
された入力文字列の最初の1文字について、辞書登録手
段122が辞書D12を検索する過程を示す。具体的に
は、辞書検索の結果、入力文字列と登録文字列がサイク
ル1及びサイクル2では一致せず、サイクル3で一致し
たことを示す。
された入力文字列の最初の1文字について、辞書登録手
段122が辞書D12を検索する過程を示す。具体的に
は、辞書検索の結果、入力文字列と登録文字列がサイク
ル1及びサイクル2では一致せず、サイクル3で一致し
たことを示す。
【0014】次に、サイクル4〜サイクル6では、入力
された入力文字列の2文字目について、辞書登録手段1
22が辞書D12を検索する過程を示す。具体的には、
入力文字列と登録文字列がサイクル4及びサイクル5で
は一致せず、サイクル6では辞書に登録されている文字
が無いことを示す。
された入力文字列の2文字目について、辞書登録手段1
22が辞書D12を検索する過程を示す。具体的には、
入力文字列と登録文字列がサイクル4及びサイクル5で
は一致せず、サイクル6では辞書に登録されている文字
が無いことを示す。
【0015】このとき、辞書登録手段122が入力文字
列に識別番号を付して辞書D12に登録する。これがサ
イクル7に示す「登録」である。また、符号化するため
に、ユニバーサル符号化手段123が辞書登録の際に付
した識別番号を符号化する。これがサイクル8に示す
「符号化」である。以下、同様に符号化処理が行われ
る。
列に識別番号を付して辞書D12に登録する。これがサ
イクル7に示す「登録」である。また、符号化するため
に、ユニバーサル符号化手段123が辞書登録の際に付
した識別番号を符号化する。これがサイクル8に示す
「符号化」である。以下、同様に符号化処理が行われ
る。
【0016】また、図17は、従来のデータ復元回路を
示す図である。図において、従来のデータ復元回路は、
ユニバーサル復号化手段131、辞書検索手段132、
スタック蓄積手段133、辞書登録手段134及び辞書
D13から構成される。
示す図である。図において、従来のデータ復元回路は、
ユニバーサル復号化手段131、辞書検索手段132、
スタック蓄積手段133、辞書登録手段134及び辞書
D13から構成される。
【0017】ユニバーサル復号化手段131は、入力さ
れた入力符号を復号化する。辞書検索手段121は、辞
書D13に登録されている登録文字符号のうち、復号化
された文字符号と一致する文字符号を検索する。スタッ
ク蓄積手段133は、辞書検索手段121によって検索
された文字をスタックに蓄積し、検索が終了した時点で
蓄積した文字を全て出力する。辞書登録手段134は、
スタック蓄積手段133によって出力された復元文字列
が辞書D13に登録されていない場合に、この復元文字
列に新たな符号を付して辞書D13に登録する。
れた入力符号を復号化する。辞書検索手段121は、辞
書D13に登録されている登録文字符号のうち、復号化
された文字符号と一致する文字符号を検索する。スタッ
ク蓄積手段133は、辞書検索手段121によって検索
された文字をスタックに蓄積し、検索が終了した時点で
蓄積した文字を全て出力する。辞書登録手段134は、
スタック蓄積手段133によって出力された復元文字列
が辞書D13に登録されていない場合に、この復元文字
列に新たな符号を付して辞書D13に登録する。
【0018】これら、ユニバーサル復号化手段131、
辞書検索手段132、スタック蓄積手段133及び辞書
登録手段134の復号化処理は、シーケンシャルに行わ
れる。この復号化処理手順の一例を図18に示す。
辞書検索手段132、スタック蓄積手段133及び辞書
登録手段134の復号化処理は、シーケンシャルに行わ
れる。この復号化処理手順の一例を図18に示す。
【0019】図18は、従来のデータ復元回路による処
理手順を示す図である。図には、処理符号数欄136、
復号化欄137、検索・蓄積欄138、文字列出力欄1
39及び辞書登録欄140からなる表を示す。
理手順を示す図である。図には、処理符号数欄136、
復号化欄137、検索・蓄積欄138、文字列出力欄1
39及び辞書登録欄140からなる表を示す。
【0020】処理符号数欄136は、入力符号が復号化
される際に処理される符号数を示す。復号化欄137
は、図17のユニバーサル復号化手段131が処理する
内容を示す。検索・蓄積欄138は、辞書検索手段13
2が検索し、スタック蓄積手段133が検索された文字
を蓄積する処理を示す。文字列出力欄139は、スタッ
ク蓄積手段133が蓄積した文字を全て出力する処理を
示す。なお、円内の数字は処理手順の順番を示す。以
下、図16と同様に、「円内の数字X」を「サイクル
X」と表記する。
される際に処理される符号数を示す。復号化欄137
は、図17のユニバーサル復号化手段131が処理する
内容を示す。検索・蓄積欄138は、辞書検索手段13
2が検索し、スタック蓄積手段133が検索された文字
を蓄積する処理を示す。文字列出力欄139は、スタッ
ク蓄積手段133が蓄積した文字を全て出力する処理を
示す。なお、円内の数字は処理手順の順番を示す。以
下、図16と同様に、「円内の数字X」を「サイクル
X」と表記する。
【0021】まず、サイクル1〜サイクル8では、入力
された最初入力符号列について、復号化及び出力文字列
として出力するまでの過程を示す。具体的に、各処理手
順は次のようになっている。サイクル1では、ユニバー
サル復号化手段131が入力符号を復号化する。サイク
ル2〜サイクル4では、辞書検索手段132がサイクル
1で復号化された文字符号を再帰的に検索して、スタッ
ク蓄積手段133が検索された文字をスタックに蓄積す
る。サイクル5〜サイクル7では、スタック蓄積手段1
33が蓄積した文字を全て出力する。サイクル8では、
辞書登録手段134がスタック蓄積手段133によって
出力された出力文字列に新たな符号を付して辞書D13
に登録する。以下、同様に復号化処理が行われる。
された最初入力符号列について、復号化及び出力文字列
として出力するまでの過程を示す。具体的に、各処理手
順は次のようになっている。サイクル1では、ユニバー
サル復号化手段131が入力符号を復号化する。サイク
ル2〜サイクル4では、辞書検索手段132がサイクル
1で復号化された文字符号を再帰的に検索して、スタッ
ク蓄積手段133が検索された文字をスタックに蓄積す
る。サイクル5〜サイクル7では、スタック蓄積手段1
33が蓄積した文字を全て出力する。サイクル8では、
辞書登録手段134がスタック蓄積手段133によって
出力された出力文字列に新たな符号を付して辞書D13
に登録する。以下、同様に復号化処理が行われる。
【0022】
【発明が解決しようとする課題】しかし、従来のデータ
圧縮回路では、ある文字列に対して辞書検索、辞書登録
及び符号化を行なった後に、次の文字列を符号化する、
というようなバッチ・シリアル処理で圧縮処理を行なっ
ていた。また、データ復元回路でも同様に、ある符号に
対して復号化、辞書検索、スタック蓄積、辞書登録を行
なった後に、次の符号を復号化する、というようなバッ
チ・シリアル処理で復元処理を行なっていた。
圧縮回路では、ある文字列に対して辞書検索、辞書登録
及び符号化を行なった後に、次の文字列を符号化する、
というようなバッチ・シリアル処理で圧縮処理を行なっ
ていた。また、データ復元回路でも同様に、ある符号に
対して復号化、辞書検索、スタック蓄積、辞書登録を行
なった後に、次の符号を復号化する、というようなバッ
チ・シリアル処理で復元処理を行なっていた。
【0023】したがって、このようなバッチ・シリアル
処理では、符号化及び復号化処理の高速化が困難である
という問題点があった。本発明はこのような点に鑑みて
なされたものであり、入力データの圧縮処理を並列処理
により高速化するデータ圧縮回路を提供することを目的
とする。
処理では、符号化及び復号化処理の高速化が困難である
という問題点があった。本発明はこのような点に鑑みて
なされたものであり、入力データの圧縮処理を並列処理
により高速化するデータ圧縮回路を提供することを目的
とする。
【0024】また、本発明の他の目的は、入力符号の復
元処理を並列処理により高速化するデータ復元回路を提
供することである。さらに、本発明の他の目的は、入力
データの圧縮処理及び入力符号の復元処理を、並列処理
により高速化するデータ圧縮・復元装置を提供すること
である。
元処理を並列処理により高速化するデータ復元回路を提
供することである。さらに、本発明の他の目的は、入力
データの圧縮処理及び入力符号の復元処理を、並列処理
により高速化するデータ圧縮・復元装置を提供すること
である。
【0025】
【課題を解決するための手段】本発明では上記目的を達
成するために、図1に示すように、データ圧縮回路は第
1の辞書検索手段1、第1の辞書登録手段2、符号化手
段3、初期辞書アクセス手段4、通常辞書アクセス手段
5、初期辞書D1及び通常辞書D2から構成する。第1
の辞書検索手段1は、初期辞書アクセス手段4を介して
初期辞書D1に登録されている登録文字列のうち、入力
された入力文字列と一致する最長の登録文字列を検索す
る。初期辞書D1で検索できなかった場合は検索を終了
する。また、検索できた場合には通常辞書アクセス手段
5を介して通常辞書D2に登録されている登録文字列か
ら検索する。第1の辞書登録手段2は、第1の辞書検索
手段1によって検索された最長の登録文字列に一文字を
加えた文字列に識別番号を付し、通常辞書アクセス手段
5を介して通常辞書D2に登録する。符号化手段3は、
最長の登録文字列に付された識別番号を、出力符号とし
て符号化する。
成するために、図1に示すように、データ圧縮回路は第
1の辞書検索手段1、第1の辞書登録手段2、符号化手
段3、初期辞書アクセス手段4、通常辞書アクセス手段
5、初期辞書D1及び通常辞書D2から構成する。第1
の辞書検索手段1は、初期辞書アクセス手段4を介して
初期辞書D1に登録されている登録文字列のうち、入力
された入力文字列と一致する最長の登録文字列を検索す
る。初期辞書D1で検索できなかった場合は検索を終了
する。また、検索できた場合には通常辞書アクセス手段
5を介して通常辞書D2に登録されている登録文字列か
ら検索する。第1の辞書登録手段2は、第1の辞書検索
手段1によって検索された最長の登録文字列に一文字を
加えた文字列に識別番号を付し、通常辞書アクセス手段
5を介して通常辞書D2に登録する。符号化手段3は、
最長の登録文字列に付された識別番号を、出力符号とし
て符号化する。
【0026】また、初期辞書D1及び通常辞書D2は、
外部ハッシュによるデータ検索及びデータ登録を行うよ
うに構成する。さらに、初期辞書D1には第2文字まで
の文字列についてデータ検索及びデータ登録を行い、通
常辞書D2には第3文字以降の文字列についてデータ検
索及びデータ登録を行うように構成する。
外部ハッシュによるデータ検索及びデータ登録を行うよ
うに構成する。さらに、初期辞書D1には第2文字まで
の文字列についてデータ検索及びデータ登録を行い、通
常辞書D2には第3文字以降の文字列についてデータ検
索及びデータ登録を行うように構成する。
【0027】そして、初期辞書D1及び通常辞書D2
は、完全ハッシュによるデータ検索及びデータ登録を行
うように構成する。それから、第1の辞書検索手段1、
第1の辞書登録手段2及び符号化手段3は、パイプライ
ンで接続され並列処理される。
は、完全ハッシュによるデータ検索及びデータ登録を行
うように構成する。それから、第1の辞書検索手段1、
第1の辞書登録手段2及び符号化手段3は、パイプライ
ンで接続され並列処理される。
【0028】そのうえ、図3に示すように、データ復元
回路は、復号化手段11、第2の辞書検索手段12、第
1の蓄積手段13、第2の蓄積手段14、出力選択手段
15、第2の辞書登録手段16、辞書アクセス手段17
及び辞書D3から構成する。復号化手段11は、入力さ
れた入力符号を復号化する。第2の辞書検索手段12
は、辞書アクセス手段17を介して辞書D3に登録され
ている登録文字列のうち、復号化によって復元された文
字列と一致する文字列を検索する。第1の蓄積手段13
及び第2の蓄積手段14は、この検索によって復元され
た文字列を蓄積する。出力選択手段15は、蓄積された
文字列のうち、出力する復元文字列を選択する。第2の
辞書登録手段16は、選択された復元文字列のうち、辞
書D3に登録されていない文字列に、新たな符号を付し
て登録する。
回路は、復号化手段11、第2の辞書検索手段12、第
1の蓄積手段13、第2の蓄積手段14、出力選択手段
15、第2の辞書登録手段16、辞書アクセス手段17
及び辞書D3から構成する。復号化手段11は、入力さ
れた入力符号を復号化する。第2の辞書検索手段12
は、辞書アクセス手段17を介して辞書D3に登録され
ている登録文字列のうち、復号化によって復元された文
字列と一致する文字列を検索する。第1の蓄積手段13
及び第2の蓄積手段14は、この検索によって復元され
た文字列を蓄積する。出力選択手段15は、蓄積された
文字列のうち、出力する復元文字列を選択する。第2の
辞書登録手段16は、選択された復元文字列のうち、辞
書D3に登録されていない文字列に、新たな符号を付し
て登録する。
【0029】また、復号化手段11、第2の辞書検索手
段12、出力選択手段15及び第2の辞書登録手段16
は、パイプラインで接続され並列処理される。そして、
図5に示すように、データ圧縮・復元装置は、データ圧
縮回路及びデータ復元回路から構成する。データ圧縮回
路は第1の辞書検索手段1、第1の辞書登録手段2、符
号化手段3、初期辞書アクセス手段4、通常辞書アクセ
ス手段5、初期辞書D1及び通常辞書D2から構成す
る。また、データ復元回路は、復号化手段11、第2の
辞書検索手段12、第1の蓄積手段13、第2の蓄積手
段14、出力選択手段15、第2の辞書登録手段16、
辞書アクセス手段17及び辞書D3から構成する。
段12、出力選択手段15及び第2の辞書登録手段16
は、パイプラインで接続され並列処理される。そして、
図5に示すように、データ圧縮・復元装置は、データ圧
縮回路及びデータ復元回路から構成する。データ圧縮回
路は第1の辞書検索手段1、第1の辞書登録手段2、符
号化手段3、初期辞書アクセス手段4、通常辞書アクセ
ス手段5、初期辞書D1及び通常辞書D2から構成す
る。また、データ復元回路は、復号化手段11、第2の
辞書検索手段12、第1の蓄積手段13、第2の蓄積手
段14、出力選択手段15、第2の辞書登録手段16、
辞書アクセス手段17及び辞書D3から構成する。
【0030】
【作用】データ圧縮回路において、第1の辞書検索手段
1が初期辞書アクセス手段4を介して、入力された入力
文字列を初期辞書D1から検索する。初期辞書D1から
検索されなかった場合は、同様に通常辞書アクセス手段
5を介して通常辞書D2から検索する。そして、第1の
辞書登録手段2が検索された最長の登録文字列に一文字
を加えた文字列に識別番号を付し、通常辞書アクセス手
段5を介して通常辞書D2に登録する。符号化手段3は
検索された最長の登録文字列に付された識別番号を出力
符号に符号化する。
1が初期辞書アクセス手段4を介して、入力された入力
文字列を初期辞書D1から検索する。初期辞書D1から
検索されなかった場合は、同様に通常辞書アクセス手段
5を介して通常辞書D2から検索する。そして、第1の
辞書登録手段2が検索された最長の登録文字列に一文字
を加えた文字列に識別番号を付し、通常辞書アクセス手
段5を介して通常辞書D2に登録する。符号化手段3は
検索された最長の登録文字列に付された識別番号を出力
符号に符号化する。
【0031】また、初期辞書D1及び通常辞書D2は、
外部ハッシュによるデータ検索及びデータ登録を行う。
さらに、初期辞書D1には第2文字までの文字列につい
てデータ検索及びデータ登録を行い、通常辞書D2には
第3文字以降の文字列についてデータ検索及びデータ登
録を行う。
外部ハッシュによるデータ検索及びデータ登録を行う。
さらに、初期辞書D1には第2文字までの文字列につい
てデータ検索及びデータ登録を行い、通常辞書D2には
第3文字以降の文字列についてデータ検索及びデータ登
録を行う。
【0032】そして、初期辞書D1及び通常辞書D2
は、完全ハッシュによるデータ検索及びデータ登録を行
う。それから、第1の辞書検索手段1、第1の辞書登録
手段2及び符号化手段3は、パイプラインで接続して並
列処理する。
は、完全ハッシュによるデータ検索及びデータ登録を行
う。それから、第1の辞書検索手段1、第1の辞書登録
手段2及び符号化手段3は、パイプラインで接続して並
列処理する。
【0033】そのうえ、データ復元回路において、復号
化手段11が入力された入力符号を復号化し、第2の辞
書検索手段12が辞書アクセス手段17を介して辞書D
3のうち、復号化によって復元された文字列と一致する
文字列を検索し、第1の蓄積手段13及び第2の蓄積手
段14に復元された文字列を出力する。出力選択手段1
5は出力する復元文字列を選択し、第2の辞書登録手段
16が未登録の復元文字列に新たな符号を付し、辞書ア
クセス手段17を介して辞書D3に登録する。
化手段11が入力された入力符号を復号化し、第2の辞
書検索手段12が辞書アクセス手段17を介して辞書D
3のうち、復号化によって復元された文字列と一致する
文字列を検索し、第1の蓄積手段13及び第2の蓄積手
段14に復元された文字列を出力する。出力選択手段1
5は出力する復元文字列を選択し、第2の辞書登録手段
16が未登録の復元文字列に新たな符号を付し、辞書ア
クセス手段17を介して辞書D3に登録する。
【0034】また、復号化手段11、第2の辞書検索手
段12、出力選択手段15及び第2の辞書登録手段16
は、パイプラインで接続して並列処理する。そして、デ
ータ圧縮・復元装置において、データ圧縮回路では第1
の辞書検索手段1が初期辞書アクセス手段4を介して、
入力された入力文字列を初期辞書D1から検索する。初
期辞書D1から検索されなかった場合は、同様に通常辞
書アクセス手段5を介して通常辞書D2から検索する。
そして、第1の辞書登録手段2が検索された最長の登録
文字列に一文字を加えた文字列に識別番号を付し、通常
辞書アクセス手段5を介して通常辞書D2に登録する。
符号化手段3は検索された最長の登録文字列に付された
識別番号を出力符号に符号化する。また、データ復元回
路では復号化手段11が入力された入力符号を復号化
し、第2の辞書検索手段12が辞書アクセス手段17を
介して辞書D3のうち、復号化によって復元された文字
列と一致する文字列を検索し、第1の蓄積手段13及び
第2の蓄積手段14に復元された文字列を出力する。出
力選択手段15は出力する復元文字列を選択し、第2の
辞書登録手段16が未登録の復元文字列に新たな符号を
付し、辞書アクセス手段17を介して辞書D3に登録す
る。
段12、出力選択手段15及び第2の辞書登録手段16
は、パイプラインで接続して並列処理する。そして、デ
ータ圧縮・復元装置において、データ圧縮回路では第1
の辞書検索手段1が初期辞書アクセス手段4を介して、
入力された入力文字列を初期辞書D1から検索する。初
期辞書D1から検索されなかった場合は、同様に通常辞
書アクセス手段5を介して通常辞書D2から検索する。
そして、第1の辞書登録手段2が検索された最長の登録
文字列に一文字を加えた文字列に識別番号を付し、通常
辞書アクセス手段5を介して通常辞書D2に登録する。
符号化手段3は検索された最長の登録文字列に付された
識別番号を出力符号に符号化する。また、データ復元回
路では復号化手段11が入力された入力符号を復号化
し、第2の辞書検索手段12が辞書アクセス手段17を
介して辞書D3のうち、復号化によって復元された文字
列と一致する文字列を検索し、第1の蓄積手段13及び
第2の蓄積手段14に復元された文字列を出力する。出
力選択手段15は出力する復元文字列を選択し、第2の
辞書登録手段16が未登録の復元文字列に新たな符号を
付し、辞書アクセス手段17を介して辞書D3に登録す
る。
【0035】
【実施例】以下、本発明の一実施例を図面に基づいて説
明する。図1は、本発明のデータ圧縮回路の実施例を示
す図である。図において、データ圧縮回路は第1の辞書
検索手段1、第1の辞書登録手段2、符号化手段3、初
期辞書アクセス手段4、通常辞書アクセス手段5、初期
辞書D1及び通常辞書D2から構成される。
明する。図1は、本発明のデータ圧縮回路の実施例を示
す図である。図において、データ圧縮回路は第1の辞書
検索手段1、第1の辞書登録手段2、符号化手段3、初
期辞書アクセス手段4、通常辞書アクセス手段5、初期
辞書D1及び通常辞書D2から構成される。
【0036】第1の辞書検索手段1は、初期辞書アクセ
ス手段4を介して初期辞書D1に登録されている登録文
字列のうち、あるいは通常辞書アクセス手段5を介して
通常辞書D2に登録されている登録文字列のうち、情報
源から入力された入力文字列と一致する最長の登録文字
列を検索する。第1の辞書登録手段2は、検索された最
長の登録文字列に一文字を加えた文字列に、識別番号を
付して初期辞書アクセス手段4を介して初期辞書D1
に、あるいは通常辞書アクセス手段5を介して通常辞書
D2に登録する。初期辞書アクセス手段4は、初期辞書
D1とのアクセスを行うための手段であり、例えば第1
の辞書検索手段1及び第1の辞書登録手段2から指令さ
れた論理アドレスを物理アドレスに変換して、初期辞書
D1とのデータの入出力を行う。通常辞書アクセス手段
5は、通常辞書D2とのアクセスを行うための手段であ
り、例えば第1の辞書検索手段1及び第1の辞書登録手
段2から指令された論理アドレスを物理アドレスに変換
して、通常辞書D2とのデータの入出力を行う。符号化
手段3は、例えばLZW符号化手段が使用され、検索さ
れた最長の登録文字列に付された識別番号を出力符号と
して符号化する。
ス手段4を介して初期辞書D1に登録されている登録文
字列のうち、あるいは通常辞書アクセス手段5を介して
通常辞書D2に登録されている登録文字列のうち、情報
源から入力された入力文字列と一致する最長の登録文字
列を検索する。第1の辞書登録手段2は、検索された最
長の登録文字列に一文字を加えた文字列に、識別番号を
付して初期辞書アクセス手段4を介して初期辞書D1
に、あるいは通常辞書アクセス手段5を介して通常辞書
D2に登録する。初期辞書アクセス手段4は、初期辞書
D1とのアクセスを行うための手段であり、例えば第1
の辞書検索手段1及び第1の辞書登録手段2から指令さ
れた論理アドレスを物理アドレスに変換して、初期辞書
D1とのデータの入出力を行う。通常辞書アクセス手段
5は、通常辞書D2とのアクセスを行うための手段であ
り、例えば第1の辞書検索手段1及び第1の辞書登録手
段2から指令された論理アドレスを物理アドレスに変換
して、通常辞書D2とのデータの入出力を行う。符号化
手段3は、例えばLZW符号化手段が使用され、検索さ
れた最長の登録文字列に付された識別番号を出力符号と
して符号化する。
【0037】ここで、通常辞書D2に登録される「最長
の登録文字列に一文字を加えた文字列」は、次のような
文字列である。例えば、入力文字列が「abcd」であ
り、既に通常辞書D2に登録されている最長の登録文字
列が「ab」であるならば、入力文字列のうち最長の登
録文字列と一致している「ab」の次の一文字「c」を
加えた文字列「abc」である。
の登録文字列に一文字を加えた文字列」は、次のような
文字列である。例えば、入力文字列が「abcd」であ
り、既に通常辞書D2に登録されている最長の登録文字
列が「ab」であるならば、入力文字列のうち最長の登
録文字列と一致している「ab」の次の一文字「c」を
加えた文字列「abc」である。
【0038】なお、初期辞書アクセス手段4から初期辞
書D1へのアクセス、及び通常辞書アクセス手段5から
通常辞書D2へのアクセスは、後述する完全ハッシュ法
又は外部ハッシュ法によって行われる。
書D1へのアクセス、及び通常辞書アクセス手段5から
通常辞書D2へのアクセスは、後述する完全ハッシュ法
又は外部ハッシュ法によって行われる。
【0039】また、第1の辞書検索手段1、第1の辞書
登録手段2及び符号化手段3の各手段は、いずれも図示
されていないパイプラインで接続されており、並列に処
理することができる。このパイプライン並列処理によ
り、複数の手段での符号化処理が可能となり、高速に符
号化処理を行うことができる。
登録手段2及び符号化手段3の各手段は、いずれも図示
されていないパイプラインで接続されており、並列に処
理することができる。このパイプライン並列処理によ
り、複数の手段での符号化処理が可能となり、高速に符
号化処理を行うことができる。
【0040】このような並列処理において、例外となる
のは、第1の辞書検索手段1及び第1の辞書登録手段2
が同時に初期辞書D1又は通常辞書D2へのアクセスを
要求する場合である。例えば、第1の辞書検索手段1と
第1の辞書登録手段2とが同時に初期辞書D1にアクセ
スを要求する場合である。このように、二以上の手段か
ら同時にアクセス要求がある状態を「衝突」という。衝
突が起きた場合には、例えば第1の辞書登録手段2が初
期辞書アクセス手段4を介して初期辞書D1とアクセス
した後、第1の辞書検索手段1が同様に初期辞書D1と
アクセスする、というようにシーケンシャルに辞書とア
クセスすることになる。しかしながら、このような衝突
は全体の符号化処理から見れば、極めて稀な現象であ
る。したがって、全体の処理時間から見れば無視できる
程の処理時間に過ぎないので、シーケンシャルに辞書と
アクセス処理を行なっても問題はない。以下、この符号
化処理手順の一例を図2に示す。
のは、第1の辞書検索手段1及び第1の辞書登録手段2
が同時に初期辞書D1又は通常辞書D2へのアクセスを
要求する場合である。例えば、第1の辞書検索手段1と
第1の辞書登録手段2とが同時に初期辞書D1にアクセ
スを要求する場合である。このように、二以上の手段か
ら同時にアクセス要求がある状態を「衝突」という。衝
突が起きた場合には、例えば第1の辞書登録手段2が初
期辞書アクセス手段4を介して初期辞書D1とアクセス
した後、第1の辞書検索手段1が同様に初期辞書D1と
アクセスする、というようにシーケンシャルに辞書とア
クセスすることになる。しかしながら、このような衝突
は全体の符号化処理から見れば、極めて稀な現象であ
る。したがって、全体の処理時間から見れば無視できる
程の処理時間に過ぎないので、シーケンシャルに辞書と
アクセス処理を行なっても問題はない。以下、この符号
化処理手順の一例を図2に示す。
【0041】図2は、本発明のデータ圧縮回路による処
理手順を示す図である。図には、処理文字数欄6、辞書
検索欄7、辞書登録欄8及び符号化欄9からなる表を示
す。処理文字数欄6には、入力文字列が符号化される際
に処理される先頭からの文字順位を示す。辞書検索欄7
は、図1の第1の辞書検索手段1が処理する内容を示
す。辞書登録欄8は、第1の辞書登録手段2が処理する
内容を示す。符号化欄9は、符号化手段3が処理する内
容を示す。
理手順を示す図である。図には、処理文字数欄6、辞書
検索欄7、辞書登録欄8及び符号化欄9からなる表を示
す。処理文字数欄6には、入力文字列が符号化される際
に処理される先頭からの文字順位を示す。辞書検索欄7
は、図1の第1の辞書検索手段1が処理する内容を示
す。辞書登録欄8は、第1の辞書登録手段2が処理する
内容を示す。符号化欄9は、符号化手段3が処理する内
容を示す。
【0042】なお、円内の数字は処理手順の順番を示
す。以下、「円内の数字X」を「サイクルX」と表記す
る。また、同じ円内の数字がある場合には、同時に並列
して処理が行われることを示す。そして、初期辞書D1
とのアクセスは初期辞書アクセス手段4を介して行わ
れ、また、通常辞書D2とのアクセスは通常辞書アクセ
ス手段5を介して行われるものとして、この過程の表記
を省略する。
す。以下、「円内の数字X」を「サイクルX」と表記す
る。また、同じ円内の数字がある場合には、同時に並列
して処理が行われることを示す。そして、初期辞書D1
とのアクセスは初期辞書アクセス手段4を介して行わ
れ、また、通常辞書D2とのアクセスは通常辞書アクセ
ス手段5を介して行われるものとして、この過程の表記
を省略する。
【0043】まず、サイクル1では、情報源から入力さ
れた入力文字列の最初の第1文字に続く第2文字につい
て、第1の辞書検索手段1が初期辞書D1を検索する。
サイクル2は、入力文字列の第3文字について、第1の
辞書検索手段1が通常辞書D2を検索する。サイクル3
は、入力文字列の第4文字について、第1の辞書検索手
段1が通常辞書D2を検索する。このとき、サイクル3
では、入力文字列の第4文字が通常辞書D2に登録され
ていない場合を示す。これらのサイクル1〜サイクル3
の過程は、シーケンシャルに各処理が行われる。
れた入力文字列の最初の第1文字に続く第2文字につい
て、第1の辞書検索手段1が初期辞書D1を検索する。
サイクル2は、入力文字列の第3文字について、第1の
辞書検索手段1が通常辞書D2を検索する。サイクル3
は、入力文字列の第4文字について、第1の辞書検索手
段1が通常辞書D2を検索する。このとき、サイクル3
では、入力文字列の第4文字が通常辞書D2に登録され
ていない場合を示す。これらのサイクル1〜サイクル3
の過程は、シーケンシャルに各処理が行われる。
【0044】次に、辞書検索欄7のサイクル4では、入
力文字列の第4文字に続く第5文字について、第1の辞
書検索手段1が初期辞書D1を検索する。同時に、辞書
登録欄8のサイクル4では、辞書検索欄7のサイクル3
で通常辞書D2に登録されていなかった入力文字列の第
1文字〜第4文字の文字列に識別番号を付して、第1の
辞書登録手段2が通常辞書D2に登録する。
力文字列の第4文字に続く第5文字について、第1の辞
書検索手段1が初期辞書D1を検索する。同時に、辞書
登録欄8のサイクル4では、辞書検索欄7のサイクル3
で通常辞書D2に登録されていなかった入力文字列の第
1文字〜第4文字の文字列に識別番号を付して、第1の
辞書登録手段2が通常辞書D2に登録する。
【0045】そして、辞書検索欄7のサイクル5では、
入力文字列の第5文字に続く第6文字について、第1の
辞書検索手段1が通常辞書D2を検索する。同時に、符
号化欄9のサイクル5では、辞書登録欄8のサイクル4
で行なった登録文字列に付された識別番号を符号化す
る。以下、同様な処理が続けられる。
入力文字列の第5文字に続く第6文字について、第1の
辞書検索手段1が通常辞書D2を検索する。同時に、符
号化欄9のサイクル5では、辞書登録欄8のサイクル4
で行なった登録文字列に付された識別番号を符号化す
る。以下、同様な処理が続けられる。
【0046】このように、辞書検索欄7において初期辞
書D1又は通常辞書D2を検索した結果、入力文字列が
登録されていなかった場合には、辞書登録欄8における
文字列の登録、及び符号化欄9における符号化を、辞書
検索と並列して行う。このため、符号化処理を高速に行
うことができる。
書D1又は通常辞書D2を検索した結果、入力文字列が
登録されていなかった場合には、辞書登録欄8における
文字列の登録、及び符号化欄9における符号化を、辞書
検索と並列して行う。このため、符号化処理を高速に行
うことができる。
【0047】図3は、本発明のデータ復元回路の実施例
を示す図である。図において、データ復元回路は、復号
化手段11、第2の辞書検索手段12、第1の蓄積手段
13、第2の蓄積手段14、出力選択手段15、第2の
辞書登録手段16、辞書アクセス手段17及び辞書D3
から構成される。
を示す図である。図において、データ復元回路は、復号
化手段11、第2の辞書検索手段12、第1の蓄積手段
13、第2の蓄積手段14、出力選択手段15、第2の
辞書登録手段16、辞書アクセス手段17及び辞書D3
から構成される。
【0048】復号化手段11は、例えばLZW復号化手
段が使用され、情報源から入力された入力符号を復号化
する。第2の辞書検索手段12は、辞書アクセス手段1
7を介して辞書D3に登録されている登録文字列のう
ち、復号化によって復元された文字列と一致する文字列
を検索する。第1の蓄積手段13及び第2の蓄積手段1
4は、検索によって復元された文字列を蓄積する。出力
選択手段15は、蓄積された文字列のうち、出力する復
元文字列を選択する。第2の辞書登録手段16は、選択
された復元文字列のうち、辞書D3に登録されていない
文字列に、新たな符号を付して登録する。辞書アクセス
手段17は、辞書D3とのアクセスを行うための手段で
あり、例えば第2の辞書検索手段12及び第2の辞書登
録手段16から指令された論理アドレスを物理アドレス
に変換して、辞書D3とのデータの入出力を行う。
段が使用され、情報源から入力された入力符号を復号化
する。第2の辞書検索手段12は、辞書アクセス手段1
7を介して辞書D3に登録されている登録文字列のう
ち、復号化によって復元された文字列と一致する文字列
を検索する。第1の蓄積手段13及び第2の蓄積手段1
4は、検索によって復元された文字列を蓄積する。出力
選択手段15は、蓄積された文字列のうち、出力する復
元文字列を選択する。第2の辞書登録手段16は、選択
された復元文字列のうち、辞書D3に登録されていない
文字列に、新たな符号を付して登録する。辞書アクセス
手段17は、辞書D3とのアクセスを行うための手段で
あり、例えば第2の辞書検索手段12及び第2の辞書登
録手段16から指令された論理アドレスを物理アドレス
に変換して、辞書D3とのデータの入出力を行う。
【0049】なお、辞書アクセス手段17から辞書D3
へのアクセスは、後述する完全ハッシュ法又は外部ハッ
シュ法によって行うこともできる。また、図1のデータ
圧縮回路で説明した「衝突」は、このデータ復元回路で
も発生する。例えば、第2の辞書検索手段12が検索要
求を、第2の辞書登録手段16が登録要求を同時にする
場合である。この場合、例えば第2の辞書登録手段16
の登録処理後に、第2の辞書検索手段12の検索処理を
行うようにシーケンシャルに行われる。データ圧縮回路
の場合と同様に、衝突は全体の復号化処理から見れば極
めて稀な現象であるため、全体の処理時間から見れば無
視できる程の処理時間に過ぎないので、シーケンシャル
に辞書とアクセス処理を行なっても問題はない。
へのアクセスは、後述する完全ハッシュ法又は外部ハッ
シュ法によって行うこともできる。また、図1のデータ
圧縮回路で説明した「衝突」は、このデータ復元回路で
も発生する。例えば、第2の辞書検索手段12が検索要
求を、第2の辞書登録手段16が登録要求を同時にする
場合である。この場合、例えば第2の辞書登録手段16
の登録処理後に、第2の辞書検索手段12の検索処理を
行うようにシーケンシャルに行われる。データ圧縮回路
の場合と同様に、衝突は全体の復号化処理から見れば極
めて稀な現象であるため、全体の処理時間から見れば無
視できる程の処理時間に過ぎないので、シーケンシャル
に辞書とアクセス処理を行なっても問題はない。
【0050】そして、復号化手段11、第2の辞書検索
手段12、第1の蓄積手段13、第2の蓄積手段14、
出力選択手段15及び第2の辞書登録手段16の各手段
は、いずれも図示されていないパイプラインで接続され
ており、並列に処理することができる。このパイプライ
ン並列処理により、複数の手段での符号化処理が可能と
なり、高速に符号化処理を行うことができる。以下、こ
の復号化処理手順の一例を図4に示す。
手段12、第1の蓄積手段13、第2の蓄積手段14、
出力選択手段15及び第2の辞書登録手段16の各手段
は、いずれも図示されていないパイプラインで接続され
ており、並列に処理することができる。このパイプライ
ン並列処理により、複数の手段での符号化処理が可能と
なり、高速に符号化処理を行うことができる。以下、こ
の復号化処理手順の一例を図4に示す。
【0051】図4は、本発明のデータ復元回路による処
理手順を示す図である。図には、処理符号数欄21、復
号化欄22、検索・蓄積欄23、文字列出力欄24及び
辞書登録欄25からなる表を示す。
理手順を示す図である。図には、処理符号数欄21、復
号化欄22、検索・蓄積欄23、文字列出力欄24及び
辞書登録欄25からなる表を示す。
【0052】処理符号数欄21は、入力符号が復号化さ
れる際に処理される符号数を示す。復号化欄22は、図
3の復号化手段11が処理する内容を示す。検索・蓄積
欄23は、第2の辞書検索手段12が検索し、スタック
蓄積手段13,14が検索された文字を蓄積する処理を
示す。文字列出力欄24は、出力選択手段15がスタッ
ク蓄積手段13,14に蓄積した文字を全て出力する処
理を示す。辞書登録欄25は、第2の辞書登録手段16
が処理する内容を示す。
れる際に処理される符号数を示す。復号化欄22は、図
3の復号化手段11が処理する内容を示す。検索・蓄積
欄23は、第2の辞書検索手段12が検索し、スタック
蓄積手段13,14が検索された文字を蓄積する処理を
示す。文字列出力欄24は、出力選択手段15がスタッ
ク蓄積手段13,14に蓄積した文字を全て出力する処
理を示す。辞書登録欄25は、第2の辞書登録手段16
が処理する内容を示す。
【0053】なお、円内の数字は処理手順の順番を示
す。以下、図2と同様に、「円内の数字X」を「サイク
ルX」と表記する。また、同じ円内の数字がある場合に
は、同時に並列して処理が行われることを示す。そし
て、初期辞書D3とのアクセスは辞書アクセス手段17
を介して行われるものとして、この過程の表記を省略す
る。
す。以下、図2と同様に、「円内の数字X」を「サイク
ルX」と表記する。また、同じ円内の数字がある場合に
は、同時に並列して処理が行われることを示す。そし
て、初期辞書D3とのアクセスは辞書アクセス手段17
を介して行われるものとして、この過程の表記を省略す
る。
【0054】まず、サイクル1では、情報源から入力さ
れた最初の入力符号について、復号化手段11が復号化
する。復号化欄22のサイクル2は、2番目の入力符号
について、復号化手段11が復号化する。同時に、検索
・蓄積欄23のサイクル2は、第2の辞書検索手段12
が復号化した符号文字を辞書D3から検索する。また、
検索された復元文字は、スタック蓄積手段13によって
スタックに蓄積される。これらのサイクル2は、並列し
て処理が行われる。
れた最初の入力符号について、復号化手段11が復号化
する。復号化欄22のサイクル2は、2番目の入力符号
について、復号化手段11が復号化する。同時に、検索
・蓄積欄23のサイクル2は、第2の辞書検索手段12
が復号化した符号文字を辞書D3から検索する。また、
検索された復元文字は、スタック蓄積手段13によって
スタックに蓄積される。これらのサイクル2は、並列し
て処理が行われる。
【0055】次に、サイクル3及びサイクル4では、後
述する再帰的な復号により、第2の辞書検索手段12が
復号化した符号文字を辞書D3から検索し、スタック蓄
積手段13が検索された復元文字をスタックに蓄積す
る。
述する再帰的な復号により、第2の辞書検索手段12が
復号化した符号文字を辞書D3から検索し、スタック蓄
積手段13が検索された復元文字をスタックに蓄積す
る。
【0056】そして、復号化欄22のサイクル5では、
3番目の入力符号について、復号化手段11が復号化す
る。同時に、検索・蓄積欄23のサイクル5は、第2の
辞書検索手段12が復号化した符号文字を辞書D3から
検索し、スタック蓄積手段14が検索された復元文字を
スタックに蓄積する。さらに同時に、文字列出力欄24
のサイクル5では、サイクル3〜サイクル4で蓄積した
文字列の1文字目を出力する。これらのサイクル5は、
並列して処理が行われる。
3番目の入力符号について、復号化手段11が復号化す
る。同時に、検索・蓄積欄23のサイクル5は、第2の
辞書検索手段12が復号化した符号文字を辞書D3から
検索し、スタック蓄積手段14が検索された復元文字を
スタックに蓄積する。さらに同時に、文字列出力欄24
のサイクル5では、サイクル3〜サイクル4で蓄積した
文字列の1文字目を出力する。これらのサイクル5は、
並列して処理が行われる。
【0057】それから、検索・蓄積欄23のサイクル6
は、第2の辞書検索手段12が復号化した符号文字を辞
書D3から検索し、スタック蓄積手段14が検索された
復元文字をスタックに蓄積する。同時に、文字列出力欄
24のサイクル6では、サイクル3〜サイクル4で蓄積
した文字列の2文字目を出力する。これらのサイクル6
も、並列して処理が行われる。以下、同様な処理が続け
られる。
は、第2の辞書検索手段12が復号化した符号文字を辞
書D3から検索し、スタック蓄積手段14が検索された
復元文字をスタックに蓄積する。同時に、文字列出力欄
24のサイクル6では、サイクル3〜サイクル4で蓄積
した文字列の2文字目を出力する。これらのサイクル6
も、並列して処理が行われる。以下、同様な処理が続け
られる。
【0058】このように、復号化欄22で行う復号化と
並列して、一方のスタック蓄積手段が検索した文字を蓄
積し、他方のスタック蓄積手段が蓄積した文字列を復元
文字列として出力する処理を行うことができる。このた
め、復号化処理を高速に行うことができる。
並列して、一方のスタック蓄積手段が検索した文字を蓄
積し、他方のスタック蓄積手段が蓄積した文字列を復元
文字列として出力する処理を行うことができる。このた
め、復号化処理を高速に行うことができる。
【0059】図5は、本発明のデータ圧縮・復元装置の
実施例を示す図である。図において、データ圧縮・復元
装置はデータ圧縮回路及びデータ復元回路から構成され
る。データ圧縮回路は第1の辞書検索手段1、第1の辞
書登録手段2、符号化手段3、初期辞書アクセス手段
4、通常辞書アクセス手段5、初期辞書D1及び通常辞
書D2から構成される。また、データ復元回路は、デー
タ復元回路は、復号化手段11、第2の辞書検索手段1
2、第1の蓄積手段13、第2の蓄積手段14、出力選
択手段15、第2の辞書登録手段16、辞書アクセス手
段17及び辞書D3から構成される。
実施例を示す図である。図において、データ圧縮・復元
装置はデータ圧縮回路及びデータ復元回路から構成され
る。データ圧縮回路は第1の辞書検索手段1、第1の辞
書登録手段2、符号化手段3、初期辞書アクセス手段
4、通常辞書アクセス手段5、初期辞書D1及び通常辞
書D2から構成される。また、データ復元回路は、デー
タ復元回路は、復号化手段11、第2の辞書検索手段1
2、第1の蓄積手段13、第2の蓄積手段14、出力選
択手段15、第2の辞書登録手段16、辞書アクセス手
段17及び辞書D3から構成される。
【0060】なお、図1及び図3と同一の要素には同一
の番号を付し、説明を省略する。また、データ圧縮回路
及びデータ復元回路の作動は、それぞれ図1及び図3と
同じであるので説明を省略する。
の番号を付し、説明を省略する。また、データ圧縮回路
及びデータ復元回路の作動は、それぞれ図1及び図3と
同じであるので説明を省略する。
【0061】この装置により、データの圧縮処理及び復
元処理の処理速度が向上する。なお、図2及び図4で示
した処理手順のように、複数の手段が並列して処理を行
うことができるので、より装置全体の処理速度を向上さ
せることができる。
元処理の処理速度が向上する。なお、図2及び図4で示
した処理手順のように、複数の手段が並列して処理を行
うことができるので、より装置全体の処理速度を向上さ
せることができる。
【0062】次に、上記の各実施例における辞書検索手
順及び辞書登録手順について、まずハッシュ法について
説明する。ハッシュ法は、ハッシュ表(hash table)と
呼ばれる表を用いてデータの格納及びデータの検索を行
う方法の一つであり、データを登録するために検索キー
の内部コードωを用いて格納アドレスを決定する方法で
ある。このために、検索キーの内部コードωからアドレ
スを求める関数が必要となり、この関数は「ハッシュ関
数(hash function )」と呼ばれている。また、ハッシ
ュ関数Hによって得られたアドレスH(ω)は「ハッシ
ュアドレス(hash address)」と呼ばれている。なお、
検索も登録の場合と同様に、ハッシュ関数によりハッシ
ュアドレスを求めて目的のアドレスのデータを検索す
る。
順及び辞書登録手順について、まずハッシュ法について
説明する。ハッシュ法は、ハッシュ表(hash table)と
呼ばれる表を用いてデータの格納及びデータの検索を行
う方法の一つであり、データを登録するために検索キー
の内部コードωを用いて格納アドレスを決定する方法で
ある。このために、検索キーの内部コードωからアドレ
スを求める関数が必要となり、この関数は「ハッシュ関
数(hash function )」と呼ばれている。また、ハッシ
ュ関数Hによって得られたアドレスH(ω)は「ハッシ
ュアドレス(hash address)」と呼ばれている。なお、
検索も登録の場合と同様に、ハッシュ関数によりハッシ
ュアドレスを求めて目的のアドレスのデータを検索す
る。
【0063】このようなハッシュ法を使用した辞書検索
及び辞書登録では、ハッシュ関数Hをどのように選んで
も、相異なる検索キーの内部コードω1 ,ω2 に対し
て、ハッシュアドレスが H(ω1 )=H(ω2 ) となる場合が起こり得る。このような状態を「衝突」と
呼び、この衝突を回避するために外部ハッシュ法(「オ
ープンハッシュ法」又は「連鎖法」とも呼ばれている)
が用いられる。また、衝突が起こらないように、予め表
に検索キーの内部コードωにとり得る全ての値を用意す
る方法が完全ハッシュ法である。以下、外部ハッシュ法
による場合と完全ハッシュ法による場合とに分けて説明
する。
及び辞書登録では、ハッシュ関数Hをどのように選んで
も、相異なる検索キーの内部コードω1 ,ω2 に対し
て、ハッシュアドレスが H(ω1 )=H(ω2 ) となる場合が起こり得る。このような状態を「衝突」と
呼び、この衝突を回避するために外部ハッシュ法(「オ
ープンハッシュ法」又は「連鎖法」とも呼ばれている)
が用いられる。また、衝突が起こらないように、予め表
に検索キーの内部コードωにとり得る全ての値を用意す
る方法が完全ハッシュ法である。以下、外部ハッシュ法
による場合と完全ハッシュ法による場合とに分けて説明
する。
【0064】図6は、外部ハッシュ法のデータ構造を示
す図である。外部ハッシュ法では、まずハッシュ関数H
によって得られるアドレスに対応する表、すなわちバケ
ットヘッダ(Bucket Headder)BHと呼ばれる配列が用
意される。図では、このバケットヘッダBHにはハッシ
ュアドレスが0から(b−1)までのb個のリストヘッ
ダ(list headder)が用意されている。そして、リスト
ヘッダの一つと、同一のハッシュアドレスを有する一以
上のデータ要素、すなわちリストL、との間はリスト構
造によって結合される。ここで、一つのリストは、デー
タを格納するデータ格納域と、次のリストへのポインタ
を格納するポインタ格納域とから構成される。
す図である。外部ハッシュ法では、まずハッシュ関数H
によって得られるアドレスに対応する表、すなわちバケ
ットヘッダ(Bucket Headder)BHと呼ばれる配列が用
意される。図では、このバケットヘッダBHにはハッシ
ュアドレスが0から(b−1)までのb個のリストヘッ
ダ(list headder)が用意されている。そして、リスト
ヘッダの一つと、同一のハッシュアドレスを有する一以
上のデータ要素、すなわちリストL、との間はリスト構
造によって結合される。ここで、一つのリストは、デー
タを格納するデータ格納域と、次のリストへのポインタ
を格納するポインタ格納域とから構成される。
【0065】例えば、図6に示すように、ハッシュアド
レス「0」に示すリストヘッダにはリストL01へのポ
インタの設定によって、リストヘッダとリストL01と
が結合される。この関係を矢印A1で示す。また、リス
トL01にはリストL02へのポインタの設定によっ
て、リストL01とリストL02とが結合される。この
関係を矢印A2で示す。なお、リストL02以降がポイ
ンタによってリスト間が結合されない場合は、終端記号
「0」が設定される。以下、ハッシュアドレスが1から
(b−1)までのリストヘッダも同様に、リストLとは
リスト構造によって結合される。
レス「0」に示すリストヘッダにはリストL01へのポ
インタの設定によって、リストヘッダとリストL01と
が結合される。この関係を矢印A1で示す。また、リス
トL01にはリストL02へのポインタの設定によっ
て、リストL01とリストL02とが結合される。この
関係を矢印A2で示す。なお、リストL02以降がポイ
ンタによってリスト間が結合されない場合は、終端記号
「0」が設定される。以下、ハッシュアドレスが1から
(b−1)までのリストヘッダも同様に、リストLとは
リスト構造によって結合される。
【0066】なお、データの検索は次の手順で処理が行
われる。なお、ここではハッシュ関数Hにより求められ
るハッシュアドレスが「3」である場合を例に説明す
る。求められたハッシュアドレス「3」に対応するバケ
ットヘッダBHのリストヘッダから、最初のリストL3
1へのポインタを取得する。そして、最初のリストL3
1内のデータと照合する。もし、データが一致しなけれ
ば、次のリストL32へのポインタを取得し、次のリス
トL32のデータと照合する。もし、データが一致しな
ければ、所望のデータが見つからなかったことを示す。
なお、リストL32に次のリストへのポインタが設定さ
れているならば、同様の検索処理を経て、目的のデータ
を検索する。
われる。なお、ここではハッシュ関数Hにより求められ
るハッシュアドレスが「3」である場合を例に説明す
る。求められたハッシュアドレス「3」に対応するバケ
ットヘッダBHのリストヘッダから、最初のリストL3
1へのポインタを取得する。そして、最初のリストL3
1内のデータと照合する。もし、データが一致しなけれ
ば、次のリストL32へのポインタを取得し、次のリス
トL32のデータと照合する。もし、データが一致しな
ければ、所望のデータが見つからなかったことを示す。
なお、リストL32に次のリストへのポインタが設定さ
れているならば、同様の検索処理を経て、目的のデータ
を検索する。
【0067】また、データの登録は次の手順で処理が行
われる。データの検索と同様に、ハッシュ関数Hにより
求められるハッシュアドレスが「3」である場合を例に
説明する。求められたハッシュアドレス「3」に対応す
るバケットヘッダBHのリストヘッダから最初のリスト
L31へのポインタを取得する。そして、次のリストへ
のポインタが「0」になるまでリストをたどる。図6の
例ではリストL32が最後のリストであるから、ここで
新たなデータのリストを生成し、生成したリストへのポ
インタをリストL32内のポインタ格納域に設定する。
われる。データの検索と同様に、ハッシュ関数Hにより
求められるハッシュアドレスが「3」である場合を例に
説明する。求められたハッシュアドレス「3」に対応す
るバケットヘッダBHのリストヘッダから最初のリスト
L31へのポインタを取得する。そして、次のリストへ
のポインタが「0」になるまでリストをたどる。図6の
例ではリストL32が最後のリストであるから、ここで
新たなデータのリストを生成し、生成したリストへのポ
インタをリストL32内のポインタ格納域に設定する。
【0068】このようなデータ構造を有する辞書におい
て、データの検索及び登録処理は次のように行われる。
図7は、外部ハッシュ法による辞書検索手順及び辞書登
録手順の一例を示す図である。図において、辞書は検索
及び登録処理を速くするために firstメモリFM、next
メモリNM及び extentionメモリEMの3つの物理的な
メモリから構成されている。また、これらの3つのメモ
リは登録するデータの内容に応じて初期辞書と、通常辞
書とに分けられる。
て、データの検索及び登録処理は次のように行われる。
図7は、外部ハッシュ法による辞書検索手順及び辞書登
録手順の一例を示す図である。図において、辞書は検索
及び登録処理を速くするために firstメモリFM、next
メモリNM及び extentionメモリEMの3つの物理的な
メモリから構成されている。また、これらの3つのメモ
リは登録するデータの内容に応じて初期辞書と、通常辞
書とに分けられる。
【0069】まず、この辞書を使用したデータの検索
は、次の手順で処理が行われる。なお、ここでは検索す
る文字列が「K22K32K42」であり、この文字列のハッ
シュ関数Hにより求められるハッシュアドレスが
「ω1 」である場合を例に説明する。
は、次の手順で処理が行われる。なお、ここでは検索す
る文字列が「K22K32K42」であり、この文字列のハッ
シュ関数Hにより求められるハッシュアドレスが
「ω1 」である場合を例に説明する。
【0070】まず、ハッシュ関数Hによって得られるア
ドレスω1 から、初期辞書の firstメモリFMのアドレ
スω1 に格納されている次のリストへのポインタω21を
取得する。そして、次のリストへのポインタω21から、
extentionメモリEMのアドレスω21に格納されている
データK21と照合する。この場合、文字列K22K32K 42
の最初の文字K22とは一致しないため、nextメモリNM
のアドレスω21から次のリストへのポインタω22を取得
する。
ドレスω1 から、初期辞書の firstメモリFMのアドレ
スω1 に格納されている次のリストへのポインタω21を
取得する。そして、次のリストへのポインタω21から、
extentionメモリEMのアドレスω21に格納されている
データK21と照合する。この場合、文字列K22K32K 42
の最初の文字K22とは一致しないため、nextメモリNM
のアドレスω21から次のリストへのポインタω22を取得
する。
【0071】次に、次のリストへのポインタω22から、
通常辞書の firstメモリFMのアドレスω22に格納され
ている次のリストへのポインタω31を取得する。以下、
初期辞書の場合と同様な検索が行われる。そして、最後
は extentionメモリEMのアドレスω41に格納されてい
るデータK21と照合したが、一致する文字列が検索でき
ずに終了した。この過程を図7では矢印で示す。
通常辞書の firstメモリFMのアドレスω22に格納され
ている次のリストへのポインタω31を取得する。以下、
初期辞書の場合と同様な検索が行われる。そして、最後
は extentionメモリEMのアドレスω41に格納されてい
るデータK21と照合したが、一致する文字列が検索でき
ずに終了した。この過程を図7では矢印で示す。
【0072】また、この辞書を使用したデータの登録
は、次の手順で処理が行われる。なお、ここでは上記に
おいて検索できなかった文字列「K22K32K42」を登録
する場合を例に説明する。上記のデータの検索と同様の
処理によって、次のリストへのポインタが「0」になる
までリストをたどる。この場合、nextメモリNMのアド
レスがω41になる。ここで、文字K42を extentionメモ
リEMの他のアドレスに生成する。図7では、このアド
レスがω42であり、同じアドレスのnextメモリNMには
「0」が設定される。また、リストを連結するため、ne
xtメモリNMのアドレスω41には、新たに生成したリス
トへのポインタであるω42を登録する。こうして、新た
な文字列の登録が行われる。
は、次の手順で処理が行われる。なお、ここでは上記に
おいて検索できなかった文字列「K22K32K42」を登録
する場合を例に説明する。上記のデータの検索と同様の
処理によって、次のリストへのポインタが「0」になる
までリストをたどる。この場合、nextメモリNMのアド
レスがω41になる。ここで、文字K42を extentionメモ
リEMの他のアドレスに生成する。図7では、このアド
レスがω42であり、同じアドレスのnextメモリNMには
「0」が設定される。また、リストを連結するため、ne
xtメモリNMのアドレスω41には、新たに生成したリス
トへのポインタであるω42を登録する。こうして、新た
な文字列の登録が行われる。
【0073】なお、上記のデータ検索及びデータ登録を
行う初期辞書には第2文字までの文字列について行い、
通常辞書には第3文字以降の文字列について行う。こう
することにより、入力文字列が最適に分散されるため、
データ検索及びデータ登録を行う際の処理時間を抑える
ことができる。
行う初期辞書には第2文字までの文字列について行い、
通常辞書には第3文字以降の文字列について行う。こう
することにより、入力文字列が最適に分散されるため、
データ検索及びデータ登録を行う際の処理時間を抑える
ことができる。
【0074】また、初期辞書には第2文字までの文字
列、通常辞書は第3文字以降の文字列に限ることなく、
例えば初期辞書には第3文字までの文字列、通常辞書に
は第4文字以降の文字列というように、入力文字列の性
質に応じて変更してもよい。こうすることにより、様々
な入力文字列の性質に対応して最適な辞書を構成するこ
とができる。
列、通常辞書は第3文字以降の文字列に限ることなく、
例えば初期辞書には第3文字までの文字列、通常辞書に
は第4文字以降の文字列というように、入力文字列の性
質に応じて変更してもよい。こうすることにより、様々
な入力文字列の性質に対応して最適な辞書を構成するこ
とができる。
【0075】図8は、完全ハッシュ法による辞書検索手
順及び辞書登録手順の一例を示す図である。完全ハッシ
ュ法は、全く衝突が起こらないようなハッシュ関数によ
るキー検索法である。この完全ハッシュ法で構築される
辞書は、例えば後述する図14に示す木構造であって、
各「ノード」ごとに256本の「枝」を持つような構造
を有する。
順及び辞書登録手順の一例を示す図である。完全ハッシ
ュ法は、全く衝突が起こらないようなハッシュ関数によ
るキー検索法である。この完全ハッシュ法で構築される
辞書は、例えば後述する図14に示す木構造であって、
各「ノード」ごとに256本の「枝」を持つような構造
を有する。
【0076】図において、辞書は完全ハッシュメモリP
Mのみの物理的なメモリから構成され、登録するデータ
の内容に応じて初期辞書と、通常辞書とに分けられる。
また、完全ハッシュメモリPMのアドレスは、各文字列
のデータと一対一に対応させるため、ハッシュアドレス
ωとデータアドレスKとから構成される。
Mのみの物理的なメモリから構成され、登録するデータ
の内容に応じて初期辞書と、通常辞書とに分けられる。
また、完全ハッシュメモリPMのアドレスは、各文字列
のデータと一対一に対応させるため、ハッシュアドレス
ωとデータアドレスKとから構成される。
【0077】例えば、ハッシュアドレスωが20ビット
で表現されるアドレスであり、データアドレスKが8ビ
ットで表現されるアドレスならば、これらを合わせた2
8ビットのアドレスが完全ハッシュメモリPMのアドレ
スとして用いられる。すなわち、各ハッシュアドレスω
は、256個のデータアドレスKのブロックごとの先頭
アドレスを示す。なお、図8では完全ハッシュメモリP
Mのアドレスを「ωnn・Kxx」で表す。
で表現されるアドレスであり、データアドレスKが8ビ
ットで表現されるアドレスならば、これらを合わせた2
8ビットのアドレスが完全ハッシュメモリPMのアドレ
スとして用いられる。すなわち、各ハッシュアドレスω
は、256個のデータアドレスKのブロックごとの先頭
アドレスを示す。なお、図8では完全ハッシュメモリP
Mのアドレスを「ωnn・Kxx」で表す。
【0078】そして、この辞書を使用したデータの検索
は、次の手順で処理が行われる。なお、ここでは検索す
る文字列が「K2 K3 K4 K5 」であり、この文字列の
ハッシュ関数Hにより求められるハッシュアドレスが
「ω1 」である場合を例に説明する。
は、次の手順で処理が行われる。なお、ここでは検索す
る文字列が「K2 K3 K4 K5 」であり、この文字列の
ハッシュ関数Hにより求められるハッシュアドレスが
「ω1 」である場合を例に説明する。
【0079】まず、ハッシュ関数Hによって得られるア
ドレスω1 と、文字列の第1文字K 2 のデータから、初
期辞書のアドレスω1 ・K2 に格納されているフラグF
Lを取得する。フラグFLは、このアドレスが有効か無
効かを「1」又は「0」で示す。この場合、フラグFL
には「1」が設定されているので、文字K2 は有効であ
る。したがって、検索する文字列の第1文字が辞書と一
致したことを示す。
ドレスω1 と、文字列の第1文字K 2 のデータから、初
期辞書のアドレスω1 ・K2 に格納されているフラグF
Lを取得する。フラグFLは、このアドレスが有効か無
効かを「1」又は「0」で示す。この場合、フラグFL
には「1」が設定されているので、文字K2 は有効であ
る。したがって、検索する文字列の第1文字が辞書と一
致したことを示す。
【0080】次に、文字列の第2文字K3 が有効か否か
を検査するため、アドレスω1 ・K 2 に格納されている
次へのポインタω21を取得する。そして、アドレスω21
と、文字列の第2文字K3 のデータから、初期辞書のア
ドレスω21・K3 に格納されているフラグFLを取得す
る。以下、同様の処理によって検索が行われる。そし
て、最後はアドレスω41・K5 に格納されているフラグ
FLと照合して、一致する文字列が検索できずに終了し
ている。この過程を図8では矢印で示す。
を検査するため、アドレスω1 ・K 2 に格納されている
次へのポインタω21を取得する。そして、アドレスω21
と、文字列の第2文字K3 のデータから、初期辞書のア
ドレスω21・K3 に格納されているフラグFLを取得す
る。以下、同様の処理によって検索が行われる。そし
て、最後はアドレスω41・K5 に格納されているフラグ
FLと照合して、一致する文字列が検索できずに終了し
ている。この過程を図8では矢印で示す。
【0081】また、この辞書を使用したデータの登録
は、次の手順で処理が行われる。なお、ここでは上記に
おいて検索できなかった文字列「K2 K3 K4 K5 」を
登録する場合を例に説明する。上記のデータの検索と同
様の処理によって、次のリストへのポインタが「0」に
なるまでリストをたどる。この場合、完全ハッシュメモ
リPMのアドレスがω41・K5 になる。ここで、フラグ
FLを「1」に設定する。こうして、新たな文字列の登
録が行われる。
は、次の手順で処理が行われる。なお、ここでは上記に
おいて検索できなかった文字列「K2 K3 K4 K5 」を
登録する場合を例に説明する。上記のデータの検索と同
様の処理によって、次のリストへのポインタが「0」に
なるまでリストをたどる。この場合、完全ハッシュメモ
リPMのアドレスがω41・K5 になる。ここで、フラグ
FLを「1」に設定する。こうして、新たな文字列の登
録が行われる。
【0082】次に、上記の実施例で示したLZW符号化
手段及びLZW復号化手段について説明する。図9は、
入力文字列をLZW符号の符号化アルゴリズムによって
符号化する場合の具体例を示す図である。この入力文字
列は、a,b,cの3文字だけの組み合わせからなる文
字列である。まず、予め辞書に、1文字のa,b,cだ
けをそれぞれ符号1,2,3に対応づけて登録する初期
化を行う。
手段及びLZW復号化手段について説明する。図9は、
入力文字列をLZW符号の符号化アルゴリズムによって
符号化する場合の具体例を示す図である。この入力文字
列は、a,b,cの3文字だけの組み合わせからなる文
字列である。まず、予め辞書に、1文字のa,b,cだ
けをそれぞれ符号1,2,3に対応づけて登録する初期
化を行う。
【0083】まず、入力文字列71を左から右へ一字ず
つ読み込む。最初の文字aを読み込み、このaを語頭文
字(列)(prefix string) とする。次に、2番目の文字
bを読み込み、先の語頭文字aにこのbを加えたabを
辞書の登録文字列と照合する。このとき、abに一致す
る文字列が辞書にないので、先の語頭文字aの対応符号
1を符号化出力として出力する。この出力される符号
を、出力符号欄72に示す。同時に、文字列abを符号
4に対応させて辞書に登録する。この辞書に登録される
内容を、登録内容欄73に示す。ここで、改めて2番目
の入力文字bを語頭文字とする。
つ読み込む。最初の文字aを読み込み、このaを語頭文
字(列)(prefix string) とする。次に、2番目の文字
bを読み込み、先の語頭文字aにこのbを加えたabを
辞書の登録文字列と照合する。このとき、abに一致す
る文字列が辞書にないので、先の語頭文字aの対応符号
1を符号化出力として出力する。この出力される符号
を、出力符号欄72に示す。同時に、文字列abを符号
4に対応させて辞書に登録する。この辞書に登録される
内容を、登録内容欄73に示す。ここで、改めて2番目
の入力文字bを語頭文字とする。
【0084】次に、入力文字列71の3番目の文字aを
読み込み、語頭文字bにこのaを加えたbaを辞書の登
録文字列と照合する。このとき、baに一致する文字列
が辞書にはないので、語頭文字bの対応符号2を符号化
出力として出力するとともに、文字列baを符号5に対
応させて辞書に登録する。また、改めて3番目の入力文
字aを語頭文字とする。
読み込み、語頭文字bにこのaを加えたbaを辞書の登
録文字列と照合する。このとき、baに一致する文字列
が辞書にはないので、語頭文字bの対応符号2を符号化
出力として出力するとともに、文字列baを符号5に対
応させて辞書に登録する。また、改めて3番目の入力文
字aを語頭文字とする。
【0085】さらに、4番目の文字bを読み込み、語頭
文字aにこのbを加えたabを辞書の登録文字列と照合
する。このとき、辞書にはabに一致する文字列が登録
されているので、このときはabを語頭文字列とする。
さらに、5番目の入力文字cを読み込み、語頭文字列a
bにこのcを加えたabcを辞書の登録文字列と照合す
る。このとき、abcに一致する文字列が辞書にないの
で、語頭文字列abの対応符号4を符号化出力として出
力するとともに、文字列abcを符号6に対応させて辞
書に登録する。そして、改めて5番目の入力文字cを語
頭文字とする。
文字aにこのbを加えたabを辞書の登録文字列と照合
する。このとき、辞書にはabに一致する文字列が登録
されているので、このときはabを語頭文字列とする。
さらに、5番目の入力文字cを読み込み、語頭文字列a
bにこのcを加えたabcを辞書の登録文字列と照合す
る。このとき、abcに一致する文字列が辞書にないの
で、語頭文字列abの対応符号4を符号化出力として出
力するとともに、文字列abcを符号6に対応させて辞
書に登録する。そして、改めて5番目の入力文字cを語
頭文字とする。
【0086】以下、同様のアルゴリズムにより、符号化
と辞書登録を続ける。このアルゴリズムで入力文字列
a,b,a,b,c,・・・に対して符号化が行われ、
図9の出力符号欄72に示すような符号1,2,4,
3,・・・が符号化出力として出力される。そして、図
11(A)に示すような登録文字列91と対応符号92
との対応関係が辞書に登録される。
と辞書登録を続ける。このアルゴリズムで入力文字列
a,b,a,b,c,・・・に対して符号化が行われ、
図9の出力符号欄72に示すような符号1,2,4,
3,・・・が符号化出力として出力される。そして、図
11(A)に示すような登録文字列91と対応符号92
との対応関係が辞書に登録される。
【0087】図10は、以上に例示した符号化の処理手
順を示すフローチャートである。図において、Sに続く
数字はステップ番号を示す。 〔S101〕予め初期化によって、入力される可能性の
ある全一文字に対しそれぞれ符号を対応させて辞書に登
録する。また、辞書において次に登録すべきアドレスn
を、例えば256に設定する。ここで、nは辞書に登録
される文字列に対応して符号を0,1,2,・・・と付
した場合、登録文字列の総数に相当する。さらに、入力
文字列を読み込み、入力した最初の文字を語頭文字列
(prefix string )ωとする。
順を示すフローチャートである。図において、Sに続く
数字はステップ番号を示す。 〔S101〕予め初期化によって、入力される可能性の
ある全一文字に対しそれぞれ符号を対応させて辞書に登
録する。また、辞書において次に登録すべきアドレスn
を、例えば256に設定する。ここで、nは辞書に登録
される文字列に対応して符号を0,1,2,・・・と付
した場合、登録文字列の総数に相当する。さらに、入力
文字列を読み込み、入力した最初の文字を語頭文字列
(prefix string )ωとする。
【0088】〔S102〕次の入力文字Kを読み込む。 〔S103〕ステップS102において、入力文字デー
タが存在したか否かを判別する。もし、入力文字データ
が存在すればステップS105へ進み、存在しなければ
ステップS104へ進む。
タが存在したか否かを判別する。もし、入力文字データ
が存在すればステップS105へ進み、存在しなければ
ステップS104へ進む。
【0089】〔S104〕語頭文字列ωを辞書と照合
し、対応する符号code(ω)を読み出し、符号化出力と
して出力する。このとき、符号code(ω)のビット数が
〔log2n〕の2進数符号に変換して出力する。ここで、
記号〔x〕は、数値x以上の整数のうち、最小の整数を
表す。以下、この意味で記号〔x〕を用いることにす
る。なお、このステップでは処理すべき文字列がないた
め、本ステップを実行後、本処理手順を終了する。
し、対応する符号code(ω)を読み出し、符号化出力と
して出力する。このとき、符号code(ω)のビット数が
〔log2n〕の2進数符号に変換して出力する。ここで、
記号〔x〕は、数値x以上の整数のうち、最小の整数を
表す。以下、この意味で記号〔x〕を用いることにす
る。なお、このステップでは処理すべき文字列がないた
め、本ステップを実行後、本処理手順を終了する。
【0090】〔S105〕語頭文字列ωに、ステップS
102で読み込んだ文字Kを加えた文字列ωKを辞書と
照合し、文字列ωKが辞書に登録されているか否かを判
別する。もし、登録されていればステップS106に進
み、登録されていなければステップS107に進む。
102で読み込んだ文字Kを加えた文字列ωKを辞書と
照合し、文字列ωKが辞書に登録されているか否かを判
別する。もし、登録されていればステップS106に進
み、登録されていなければステップS107に進む。
【0091】〔S106〕文字列ωKを改めて語頭文字
列ωとする。そして、再びステップS102に戻る。こ
のように、ステップS102〜ステップS106を繰り
返すことにより、入力文字列と一致する文字列として、
辞書に登録された文字列のうちの最大長の文字列が検索
される。
列ωとする。そして、再びステップS102に戻る。こ
のように、ステップS102〜ステップS106を繰り
返すことにより、入力文字列と一致する文字列として、
辞書に登録された文字列のうちの最大長の文字列が検索
される。
【0092】〔S107〕語頭文字列ωを辞書と照合
し、対応する符号code(ω)を読み出し、符号化出力と
して出力する。このときの符号code(ω)のビット数
は、〔log2n〕となる。また、文字列ωKにnの値を対
応させて辞書に登録する。すなわち、辞書のアドレスn
に文字列ωKを記憶する。さらに、ステップS102で
読み込んだ文字Kを語頭文字列ωとするとともに、辞書
アドレスnをインクリメントして、つぎの新たな入力文
字列に対するステップS102以降の実行に備える。
し、対応する符号code(ω)を読み出し、符号化出力と
して出力する。このときの符号code(ω)のビット数
は、〔log2n〕となる。また、文字列ωKにnの値を対
応させて辞書に登録する。すなわち、辞書のアドレスn
に文字列ωKを記憶する。さらに、ステップS102で
読み込んだ文字Kを語頭文字列ωとするとともに、辞書
アドレスnをインクリメントして、つぎの新たな入力文
字列に対するステップS102以降の実行に備える。
【0093】図12は、図9に示した符号化出力を復元
する場合の具体例を示す図である。予め復元側の辞書
に、初期化によって、符号1,2,3だけがそれぞれ文
字a,b,cに対応づけられて登録されている。
する場合の具体例を示す図である。予め復元側の辞書
に、初期化によって、符号1,2,3だけがそれぞれ文
字a,b,cに対応づけられて登録されている。
【0094】まず、入力符号81を左から右へ一つずつ
読み込む。最初の符号1を読み、辞書を参照して文字列
aを復元する。このとき復元された文字列を、復元文字
列欄821に示す。最初の符号は、初期化によって必ず
辞書に登録されている。そして、2番目の符号2を読
み、辞書を参照して文字列bを復元する。このとき、前
回の入力符号1と今回復号した文字列の最初の一文字b
とを組み合わせた「1b」に符号4を対応させて辞書に
登録する。このときの登録された内容を、登録内容欄8
3に示す。
読み込む。最初の符号1を読み、辞書を参照して文字列
aを復元する。このとき復元された文字列を、復元文字
列欄821に示す。最初の符号は、初期化によって必ず
辞書に登録されている。そして、2番目の符号2を読
み、辞書を参照して文字列bを復元する。このとき、前
回の入力符号1と今回復号した文字列の最初の一文字b
とを組み合わせた「1b」に符号4を対応させて辞書に
登録する。このときの登録された内容を、登録内容欄8
3に示す。
【0095】次に、入力文字列81の3番目の符号4を
読み、辞書を参照して対応する「1b」を読み出す。さ
らに、「1b」の符号1を、辞書を参照して対応する文
字aを読み出す。このような一連の読み出し繰り返し動
作を「再帰的な復号」と呼ぶ。これを、再帰的復号欄8
2に示す。これによって、文字列abが復元され、復元
文字列として出力する。出力される文字列を、復元文字
列欄831に示す。同時に、前回の入力符号2と今回復
元した文字列の最初の一文字aとを組み合わせた「2
a」に、符号5を対応させて辞書に登録する。
読み、辞書を参照して対応する「1b」を読み出す。さ
らに、「1b」の符号1を、辞書を参照して対応する文
字aを読み出す。このような一連の読み出し繰り返し動
作を「再帰的な復号」と呼ぶ。これを、再帰的復号欄8
2に示す。これによって、文字列abが復元され、復元
文字列として出力する。出力される文字列を、復元文字
列欄831に示す。同時に、前回の入力符号2と今回復
元した文字列の最初の一文字aとを組み合わせた「2
a」に、符号5を対応させて辞書に登録する。
【0096】以下、同様のアルゴリズムにより文字列の
復元と辞書登録を続ける。このようにして入力符号1,
2,4,3,5,・・・に対して復元が行われ、図12
の復元文字列欄821に示すような文字列a,b,a
b,c,ba,・・・が復元文字列として出力される。
そして、図11(B)に示すような登録符号93と対応
文字列94との対応関係が辞書に登録される。
復元と辞書登録を続ける。このようにして入力符号1,
2,4,3,5,・・・に対して復元が行われ、図12
の復元文字列欄821に示すような文字列a,b,a
b,c,ba,・・・が復元文字列として出力される。
そして、図11(B)に示すような登録符号93と対応
文字列94との対応関係が辞書に登録される。
【0097】図13は、以上に例示した復号化の処理手
順を示すフローチャートである。図において、Sに続く
数字はステップ番号を示す。 〔S111〕予め初期化によって、入力される可能性の
ある符号に対しそれぞれ文字を対応させて辞書に登録す
る。また、辞書において次に登録すべきアドレスnを、
例えば256に設定する。ここで、nは辞書に登録され
る文字列に対応して符号を0,1,2,・・・と付した
場合、登録文字列の総数に相当する。次に、入力符号を
読み込み、最初の入力符号CODE(バイナリコード)を1
0進数の入力符号ωに変換する。この場合、図10の符
号化ではωは入力文字列であったが、この復号化ではω
は入力符号である点に注意されたい。そして、このωを
OLD ωとする。同時に、最初に入力する符号は既に辞書
に登録されているため、入力符号ωに対応する文字D
(ω)を辞書から検索し、復元された文字として出力す
る。なお、出力した文字を後述するステップS116の
例外処理のためにFINchar にセットしておく。
順を示すフローチャートである。図において、Sに続く
数字はステップ番号を示す。 〔S111〕予め初期化によって、入力される可能性の
ある符号に対しそれぞれ文字を対応させて辞書に登録す
る。また、辞書において次に登録すべきアドレスnを、
例えば256に設定する。ここで、nは辞書に登録され
る文字列に対応して符号を0,1,2,・・・と付した
場合、登録文字列の総数に相当する。次に、入力符号を
読み込み、最初の入力符号CODE(バイナリコード)を1
0進数の入力符号ωに変換する。この場合、図10の符
号化ではωは入力文字列であったが、この復号化ではω
は入力符号である点に注意されたい。そして、このωを
OLD ωとする。同時に、最初に入力する符号は既に辞書
に登録されているため、入力符号ωに対応する文字D
(ω)を辞書から検索し、復元された文字として出力す
る。なお、出力した文字を後述するステップS116の
例外処理のためにFINchar にセットしておく。
【0098】〔S112〕次の入力符号CODEを読み込
む。 〔S113〕ステップS112において入力符号データ
が存在したか否かを判別する。もし、存在すればステッ
プS115へ進み、存在しなければ本処理手順を終了す
る。
む。 〔S113〕ステップS112において入力符号データ
が存在したか否かを判別する。もし、存在すればステッ
プS115へ進み、存在しなければ本処理手順を終了す
る。
【0099】〔S114〕読み込んだ入力符号CODEから
入力符号ωに変換するとともに、この入力符号ωをINω
にセットする。 〔S115〕入力符号ωをnと比較する。すなわち、入
力符号が辞書に登録されているか否か(ω≧n)を判別
する。もし、ωがnより小さいときにはステップS11
7へ進み、ωがn以上のときにはステップS116へ進
む。なお、ωがn以上になるのは、例えば図12の入力
符号欄81が「8」のときである。
入力符号ωに変換するとともに、この入力符号ωをINω
にセットする。 〔S115〕入力符号ωをnと比較する。すなわち、入
力符号が辞書に登録されているか否か(ω≧n)を判別
する。もし、ωがnより小さいときにはステップS11
7へ進み、ωがn以上のときにはステップS116へ進
む。なお、ωがn以上になるのは、例えば図12の入力
符号欄81が「8」のときである。
【0100】〔S116〕ステップS111または前回
にステップS119で設定されたOLD ωおよびFINchar
の組(OLD ω,FINchar )をωKと置き換える。すなわ
ち、OLD ωにセットされた値をωに、FINchar にセット
された値をKにセットする。そして、Kをスタックにプ
ッシュ(PUSH)する。なお、ωはステップS117
で復号化される。
にステップS119で設定されたOLD ωおよびFINchar
の組(OLD ω,FINchar )をωKと置き換える。すなわ
ち、OLD ωにセットされた値をωに、FINchar にセット
された値をKにセットする。そして、Kをスタックにプ
ッシュ(PUSH)する。なお、ωはステップS117
で復号化される。
【0101】〔S117〕通常、入力符号ωは前回まで
の処理で辞書に登録されているため、入力符号ωに対応
する文字列D(ω)を辞書から読み出す。読み出した文
字列D(ω)をωi Kに分解する。ωi は符号、Kは復
号化文字である。そして、文字列D(ω)が、ωi Kに
分解できない1文字であるか否かを判別する。D(ω)
がωi Kに分解できるならばステップS118に進み、
D(ω)が1文字であるならばステップS119へ進
む。
の処理で辞書に登録されているため、入力符号ωに対応
する文字列D(ω)を辞書から読み出す。読み出した文
字列D(ω)をωi Kに分解する。ωi は符号、Kは復
号化文字である。そして、文字列D(ω)が、ωi Kに
分解できない1文字であるか否かを判別する。D(ω)
がωi Kに分解できるならばステップS118に進み、
D(ω)が1文字であるならばステップS119へ進
む。
【0102】〔S118〕文字Kを一時的にスタックに
プッシュし、また符号ωi を新たなωとし、再度ステッ
プS117に戻る。このステップS117およびステッ
プS118の実行を、D(ω)が1文字に至るまで繰り
返す。
プッシュし、また符号ωi を新たなωとし、再度ステッ
プS117に戻る。このステップS117およびステッ
プS118の実行を、D(ω)が1文字に至るまで繰り
返す。
【0103】〔S119〕ステップS118でスタック
にプッシュした各文字をLIFO(Last In Fast Out)
形式でポップ(POP)して復元文字列を出力する。例
えば、図12の入力符号欄81が「5」の場合ならば、
a,bの順でスタックにプッシュされ、baという復元
文字列が出力される。同時に、今回復元した文字列の最
初の一文字をFINchar とし、前回セットされた OLDωと
FINchar との組( OLDω,FINchar )からなる文字列
を、nの値に対応させて辞書に登録する。すなわち、こ
の文字列を辞書のアドレスnに記憶する。さらに、nを
インクリメントし、ステップS114でセットされたIN
ωをOLD ωにセットして、次のステップS112以降の
実行に備える。
にプッシュした各文字をLIFO(Last In Fast Out)
形式でポップ(POP)して復元文字列を出力する。例
えば、図12の入力符号欄81が「5」の場合ならば、
a,bの順でスタックにプッシュされ、baという復元
文字列が出力される。同時に、今回復元した文字列の最
初の一文字をFINchar とし、前回セットされた OLDωと
FINchar との組( OLDω,FINchar )からなる文字列
を、nの値に対応させて辞書に登録する。すなわち、こ
の文字列を辞書のアドレスnに記憶する。さらに、nを
インクリメントし、ステップS114でセットされたIN
ωをOLD ωにセットして、次のステップS112以降の
実行に備える。
【0104】上述のように復号化処理では、図13のス
テップS117〜ステップS119を繰り返し行うこと
によって符号化前のデータに復元する。すなわち、入力
符号ωは前回までの処理で辞書に登録されているため、
入力符号ωに対応する文字列D(ω)を辞書から読み出
す。また、読み出した文字列D(ω)をωi Kに分解
し、この文字Kを一時的にスタックに退避させる。そし
て、符号ωi を新たな入力符号ωとして、再度入力符号
ωに対応する文字列D(ω)を辞書から読み出す。これ
らの手順を、新たな入力符号ωが一文字になるまで再帰
的に繰り返す。そして、スタックに退避させた文字をL
IFO形式でポップして出力するという方式である。
テップS117〜ステップS119を繰り返し行うこと
によって符号化前のデータに復元する。すなわち、入力
符号ωは前回までの処理で辞書に登録されているため、
入力符号ωに対応する文字列D(ω)を辞書から読み出
す。また、読み出した文字列D(ω)をωi Kに分解
し、この文字Kを一時的にスタックに退避させる。そし
て、符号ωi を新たな入力符号ωとして、再度入力符号
ωに対応する文字列D(ω)を辞書から読み出す。これ
らの手順を、新たな入力符号ωが一文字になるまで再帰
的に繰り返す。そして、スタックに退避させた文字をL
IFO形式でポップして出力するという方式である。
【0105】図14は、上記処理手順等に使用した辞書
の木構造の一例を示す図である。この辞書の木構造は、
LZW符号化手段及びLZW復号化手段において実現さ
れるアルゴリズムによる符号化及び復号化の際に用いら
れる辞書の内部構造を図示したものである。図14にお
いて、円内の数字は識別番号を示し、この円内の数字が
付されている箇所を「ノード(node;節)」と呼ぶ。
の木構造の一例を示す図である。この辞書の木構造は、
LZW符号化手段及びLZW復号化手段において実現さ
れるアルゴリズムによる符号化及び復号化の際に用いら
れる辞書の内部構造を図示したものである。図14にお
いて、円内の数字は識別番号を示し、この円内の数字が
付されている箇所を「ノード(node;節)」と呼ぶ。
【0106】辞書50は、ルート(root;根)51を起
点とする。このルート51には、文字は割り当てられな
い。そして、ルート51の一階層下、すなわち第1階層
52には一文字目の文字が登録される。この一文字目の
文字の登録は、相異なる文字が登録され、主に辞書50
の初期化の時に行われる。図には「a」,「b」及び
「c」の3文字が登録されているが、実際には8ビット
のデータで表現可能な256文字が登録される。
点とする。このルート51には、文字は割り当てられな
い。そして、ルート51の一階層下、すなわち第1階層
52には一文字目の文字が登録される。この一文字目の
文字の登録は、相異なる文字が登録され、主に辞書50
の初期化の時に行われる。図には「a」,「b」及び
「c」の3文字が登録されているが、実際には8ビット
のデータで表現可能な256文字が登録される。
【0107】そして、第2階層53から下の階層は、情
報源から入力された文字列を学習することによって登録
される文字である。なお、一つ下の階層を有するノード
を「枝(branch)」と呼び、一つ下の階層を有するノー
ドを「葉(leaf)」と呼ぶ。したがって、図では円内の
数字の25,26,13,14,27,28,16,
6,・・・,22,23,24のノードが「葉」であ
り、その他のノードは「枝」である。
報源から入力された文字列を学習することによって登録
される文字である。なお、一つ下の階層を有するノード
を「枝(branch)」と呼び、一つ下の階層を有するノー
ドを「葉(leaf)」と呼ぶ。したがって、図では円内の
数字の25,26,13,14,27,28,16,
6,・・・,22,23,24のノードが「葉」であ
り、その他のノードは「枝」である。
【0108】なお、あるノードが現在は「葉」であって
も、学習により「枝」となる可能性がある。例えば、
「acd」という文字列を辞書50に登録する場合、文
字列「ac」は第1階層52が「a」(円内の数字
1)、第2階層53が「c」(円内の数字6)として登
録されているので、第2階層53の「c」の下の第3階
層54に、新たに「d」を登録することになる。このと
き、円内の数字6のノードは「葉」から「枝」に変わ
る。
も、学習により「枝」となる可能性がある。例えば、
「acd」という文字列を辞書50に登録する場合、文
字列「ac」は第1階層52が「a」(円内の数字
1)、第2階層53が「c」(円内の数字6)として登
録されているので、第2階層53の「c」の下の第3階
層54に、新たに「d」を登録することになる。このと
き、円内の数字6のノードは「葉」から「枝」に変わ
る。
【0109】上記の実施例の説明では、データ圧縮回路
において、符号はlog2n以上の最小の整数のビット数か
らなる出力符号で出力したが、本出願人が特願平3-1306
23号において開示したように、ビット端数補償、Phasin
g in Binary Codes 、あるいは多値算術符号からなる出
力符号で出力してもよい。
において、符号はlog2n以上の最小の整数のビット数か
らなる出力符号で出力したが、本出願人が特願平3-1306
23号において開示したように、ビット端数補償、Phasin
g in Binary Codes 、あるいは多値算術符号からなる出
力符号で出力してもよい。
【0110】また、初期辞書D1、通常辞書D2及び辞
書D3は外部ハッシュ又は完全ハッシュに基づき構築
し、辞書50は木構造に基づき構築したが、他の構築法
に基づき辞書を構築してもよい。例えば、二進分木(バ
イナリ・ツリー)法によって辞書を構築し、辞書に登録
された文字列等のデータを二進検索(バイナリ・サー
チ)により検索するようにしてもよい。
書D3は外部ハッシュ又は完全ハッシュに基づき構築
し、辞書50は木構造に基づき構築したが、他の構築法
に基づき辞書を構築してもよい。例えば、二進分木(バ
イナリ・ツリー)法によって辞書を構築し、辞書に登録
された文字列等のデータを二進検索(バイナリ・サー
チ)により検索するようにしてもよい。
【0111】なお、上記の各実施例は、ワークステーシ
ョン等における文字コード、ベクトル情報、画像データ
などの圧縮及び復元に応用され、必要な記憶容量を大幅
に削減することができる。
ョン等における文字コード、ベクトル情報、画像データ
などの圧縮及び復元に応用され、必要な記憶容量を大幅
に削減することができる。
【0112】また、通信回線を利用したデータ送受信に
おいても応用でき、通信時間の短縮を図ることができ
る。例えば、モデム、ファクシミリ等の通信機器に応用
することができる。
おいても応用でき、通信時間の短縮を図ることができ
る。例えば、モデム、ファクシミリ等の通信機器に応用
することができる。
【0113】
【発明の効果】以上説明したように本発明では、データ
圧縮回路において、第1の辞書検索手段が初期辞書又は
通常辞書から、入力文字列と一致する最長の登録文字列
を検索し、同時に第1の辞書検索手段が最長の登録文字
列に一文字を加えた文字列に識別番号を付して通常辞書
に登録し、符号化手段が最長の登録文字列に付された識
別番号を出力符号に符号化するので、符号化処理を速く
行うことができる。
圧縮回路において、第1の辞書検索手段が初期辞書又は
通常辞書から、入力文字列と一致する最長の登録文字列
を検索し、同時に第1の辞書検索手段が最長の登録文字
列に一文字を加えた文字列に識別番号を付して通常辞書
に登録し、符号化手段が最長の登録文字列に付された識
別番号を出力符号に符号化するので、符号化処理を速く
行うことができる。
【0114】また、データ圧縮回路において、初期辞書
及び通常辞書は外部ハッシュによるデータ検索及びデー
タ登録を行うように構成したので、データ検索及びデー
タ登録が速くなり、符号化処理をより速く行うことがで
きる。
及び通常辞書は外部ハッシュによるデータ検索及びデー
タ登録を行うように構成したので、データ検索及びデー
タ登録が速くなり、符号化処理をより速く行うことがで
きる。
【0115】さらに、データ圧縮回路において、初期辞
書には第2文字までの文字列についてデータ検索及びデ
ータ登録を行い、通常辞書には第3文字以降の文字列に
ついてデータ検索及びデータ登録を行うように構成した
ので、データ検索及びデータ登録に係る処理時間を抑え
ることができる。
書には第2文字までの文字列についてデータ検索及びデ
ータ登録を行い、通常辞書には第3文字以降の文字列に
ついてデータ検索及びデータ登録を行うように構成した
ので、データ検索及びデータ登録に係る処理時間を抑え
ることができる。
【0116】そして、データ圧縮回路において、初期辞
書及び通常辞書は完全ハッシュによるデータ検索及びデ
ータ登録を行うように構成したので、データ検索及びデ
ータ登録が速くなり、符号化処理をより速く行うことが
できる。
書及び通常辞書は完全ハッシュによるデータ検索及びデ
ータ登録を行うように構成したので、データ検索及びデ
ータ登録が速くなり、符号化処理をより速く行うことが
できる。
【0117】それから、第1の辞書検索手段、第1の辞
書登録手段及び符号化手段は、パイプラインにより並列
処理するので、高速に符号化処理を行うことができる。
そのうえ、データ復元回路において、復号化手段が入力
符号を復号化し、同時に第2の辞書検索手段が辞書から
復号化によって復元された文字列を検索し、第1の蓄積
手段及び第2の蓄積手段が復元された文字列を蓄積し、
出力選択手段が出力する復元文字列を選択し、第2の辞
書登録手段が未登録の復元文字列に新たな符号を付して
辞書に登録するので、復号化処理を速く行うことができ
る。
書登録手段及び符号化手段は、パイプラインにより並列
処理するので、高速に符号化処理を行うことができる。
そのうえ、データ復元回路において、復号化手段が入力
符号を復号化し、同時に第2の辞書検索手段が辞書から
復号化によって復元された文字列を検索し、第1の蓄積
手段及び第2の蓄積手段が復元された文字列を蓄積し、
出力選択手段が出力する復元文字列を選択し、第2の辞
書登録手段が未登録の復元文字列に新たな符号を付して
辞書に登録するので、復号化処理を速く行うことができ
る。
【0118】また、復号化手段、第2の辞書検索手段、
出力選択手段及び第2の辞書登録手段は、パイプライン
により並列処理するので、高速に復号化処理を行うこと
ができる。
出力選択手段及び第2の辞書登録手段は、パイプライン
により並列処理するので、高速に復号化処理を行うこと
ができる。
【0119】そして、データ圧縮・復元装置において、
データ圧縮回路では第1の辞書検索手段が初期辞書又は
通常辞書から、入力文字列と一致する最長の登録文字列
を検索し、同時に第1の辞書検索手段が最長の登録文字
列に一文字を加えた文字列に識別番号を付して通常辞書
に登録し、符号化手段が最長の登録文字列に付された識
別番号を出力符号に符号化する。また、データ復元回路
では復号化手段が入力符号を復号化し、同時に第2の辞
書検索手段が辞書から復号化によって復元された文字列
を検索し、第1の蓄積手段及び第2の蓄積手段が復元さ
れた文字列を蓄積し、出力選択手段が出力する復元文字
列を選択し、第2の辞書登録手段が未登録の復元文字列
に新たな符号を付して辞書に登録するので、符号化処理
及び復号化処理を速く行うことができる。
データ圧縮回路では第1の辞書検索手段が初期辞書又は
通常辞書から、入力文字列と一致する最長の登録文字列
を検索し、同時に第1の辞書検索手段が最長の登録文字
列に一文字を加えた文字列に識別番号を付して通常辞書
に登録し、符号化手段が最長の登録文字列に付された識
別番号を出力符号に符号化する。また、データ復元回路
では復号化手段が入力符号を復号化し、同時に第2の辞
書検索手段が辞書から復号化によって復元された文字列
を検索し、第1の蓄積手段及び第2の蓄積手段が復元さ
れた文字列を蓄積し、出力選択手段が出力する復元文字
列を選択し、第2の辞書登録手段が未登録の復元文字列
に新たな符号を付して辞書に登録するので、符号化処理
及び復号化処理を速く行うことができる。
【0120】したがって、各回路及び装置全体の処理速
度を向上させることができる。
度を向上させることができる。
【図1】本発明のデータ圧縮回路の原理説明図である。
【図2】本発明のデータ圧縮回路による処理手順を示す
図である。
図である。
【図3】本発明のデータ復元回路の原理説明図である。
【図4】本発明のデータ復元回路による処理手順を示す
図である。
図である。
【図5】本発明のデータ圧縮・復元装置の原理説明図で
ある。
ある。
【図6】外部ハッシュ法のデータ構造を示す図である。
【図7】外部ハッシュ法による辞書検索手順及び辞書登
録手順の一例を示す図である。
録手順の一例を示す図である。
【図8】完全ハッシュ法による辞書検索手順及び辞書登
録手順の一例を示す図である。
録手順の一例を示す図である。
【図9】符号化の具体例を示す図である。
【図10】符号化の処理手順を示す図である。
【図11】文字列と符号との対応関係図である。
【図12】復号化の具体例を示す図である。
【図13】復号化の処理手順を示す図である。
【図14】辞書の木構造の一例を示す図である。
【図15】従来のデータ圧縮回路を示す図である。
【図16】従来のデータ圧縮回路による処理手順を示す
図である。
図である。
【図17】従来のデータ復元回路を示す図である。
【図18】従来のデータ復元回路による処理手順を示す
図である。
図である。
【符号の説明】 1 辞書検索手段 2 辞書登録手段 3 符号化手段 4 初期辞書 5 通常辞書 11 復号化手段 12 辞書検索手段 13 第1の蓄積手段 14 第2の蓄積手段 15 出力選択手段 16 辞書登録手段 17 辞書
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 平3−247167(JP,A) 特開 昭62−263529(JP,A) 特開 平4−267630(JP,A) 特開 平4−129429(JP,A) 特開 平4−123619(JP,A) 特開 平4−76727(JP,A) 特開 平3−262331(JP,A) 特開 昭61−13340(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 5/00 H03M 7/30 - 7/46
Claims (8)
- 【請求項1】 情報源から入力された入力文字列を、符
号化することにより圧縮するデータ圧縮回路において、文字列を登録する初期辞書(D1)と、 前記初期辞書に登録された文字列及び前記初期辞書に含
まれる文字列よりも長い文字列を登録する通常辞書(D
2)と、 前記 初期辞書(D1)又は前記通常辞書(D2)に登録
されている登録文字列のうち、入力された入力文字列と
一致する最長の登録文字列を検索する第1の辞書検索手
段(1)と、 前記初期辞書(D1)とのアクセスを行う初期辞書アク
セス手段(4)と、 前記通常辞書(D2)とのアクセスを行う通常辞書アク
セス手段(5)と、 前記最長の登録文字列に一文字を加えた文字列に、識別
番号を付して前記通常辞書(D2)に登録する第1の辞
書登録手段(2)と、 前記最長の登録文字列に付された識別番号を、出力符号
に符号化する符号化手段(3)と、を有し、 前記第1の辞書検索手段(1)の前記初期辞書(D1)
への検索と、前記第1の辞書登録手段(2)の前記通常
辞書(D2)への登録は同時に行うように構成した こと
を特徴とするデータ圧縮回路。 - 【請求項2】 前記初期辞書(D1)及び前記通常辞書
(D2)は、外部ハッシュによるデータ検索及びデータ
登録を行うように構成したことを特徴とする請求項1記
載のデータ圧縮回路。 - 【請求項3】 前記初期辞書(D1)及び前記通常辞書
(D2)は、完全ハッシュによるデータ検索及びデータ
登録を行うように構成したことを特徴とする請求項1記
載のデータ圧縮回路。 - 【請求項4】 前記初期辞書(D1)には第2文字まで
の文字列についてデータ検索及びデータ登録を行い、前
記通常辞書(D2)には第3文字以降の文字列について
データ検索及びデータ登録を行うように構成したことを
特徴とする請求項1記載のデータ圧縮回路。 - 【請求項5】 前記第1の辞書検索手段(1)、前記第
1の辞書登録手段(2)及び前記符号化手段(3)は、
パイプラインにより並列処理されることを特徴とする請
求項1,2,3又は4記載のデータ圧縮回路。 - 【請求項6】 情報源から入力された入力符号を、復号
化することにより復元するデータ復元回路において、 入力された入力符号を復号化する復号化手段(11)
と、 辞書(D3)に登録されている登録文字列のうち、前記
復号化によって復元された文字列と一致する登録文字列
を検索する第2の辞書検索手段(12)と、 前記登録文字列を蓄積する第1の蓄積手段(13)と、 前記登録文字列を蓄積する第2の蓄積手段(14)と、 前記第1の蓄積手段(13)又は前記第2の蓄積手段
(14)に蓄積された登録文字列のうち、いずれかの蓄
積された登録文字列を選択し、復元文字列として出力す
る出力選択手段(15)と、 前記辞書(D3)に登録されている登録文字列のうち、
前記復元文字列と一致する登録文字列を検索し、登録さ
れていない前記復元文字列に新たな符号を付して前記辞
書(D3)に登録する第2の辞書登録手段(16)と、 前記辞書(D3)とのアクセスを行う辞書アクセス手段
(17)と、 を有することを特徴とするデータ復元回路。 - 【請求項7】 前記復号化手段(11)、前記第2の辞
書検索手段(12)、前記出力選択手段(15)及び前
記第2の辞書登録手段(16)は、パイプラインにより
並列処理されることを特徴とする請求項6記載のデータ
復元回路。 - 【請求項8】 情報源から入力された入力文字列又は入
力符号を、符号化又は復号化することにより圧縮及び復
元を行うデータ圧縮・復元装置において、文字列を登録する初期辞書(D1)と、 前記初期辞書に登録された文字列及び前記初期辞書に含
まれる文字列よりも長い文字列を登録する通常辞書(D
2)と、 前記 初期辞書(D1)又は前記通常辞書(D2)に登録
されている登録文字列のうち、入力された入力文字列と
一致する最長の登録文字列を検索する第1の辞書検索手
段(1)と、前記初期辞書(D1)とのアクセスを行う
初期辞書アクセス手段(4)と、前記通常辞書(D2)
とのアクセスを行う通常辞書アクセス手段(5)と、前
記最長の登録文字列に一文字を加えた文字列に、識別番
号を付して前記通常辞書(D2)に登録する第1の辞書
登録手段(2)と、前記最長の登録文字列に付された識
別番号を、出力符号に符号化する符号化手段(3)とか
らなり、前記第1の辞書検索手段(1)の前記初期辞書
(D1)への検索と、前記第1の辞書登録手段(2)の
前記通常辞書(D2)への登録は同時に行うように構成
したデータ圧縮回路と、 入力された入力符号を復号化する復号化手段(11)
と、辞書(D3)に登録されている登録文字列のうち、
前記復号化によって復元された文字列と一致する登録文
字列を検索する第2の辞書検索手段(12)と、前記登
録文字列を蓄積する第1の蓄積手段(13)と、前記登
録文字列を蓄積する第2の蓄積手段(14)と、前記第
1の蓄積手段(13)又は前記第2の蓄積手段(14)
に蓄積された登録文字列のうち、いずれかの蓄積された
登録文字列を選択し、復元文字列として出力する出力選
択手段(15)と、前記辞書(D3)に登録されている
登録文字列のうち、前記復元文字列と一致する登録文字
列を検索し、登録されていない前記復元文字列に新たな
符号を付して前記辞書(D3)に登録する第2の辞書登
録手段(16)と、前記辞書(D3)とのアクセスを行
う辞書アクセス手段(17)とからなるデータ復元回路
と、 を有することを特徴とするデータ圧縮・復元装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34571191A JP3132774B2 (ja) | 1991-12-27 | 1991-12-27 | データ圧縮・復元装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34571191A JP3132774B2 (ja) | 1991-12-27 | 1991-12-27 | データ圧縮・復元装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05181641A JPH05181641A (ja) | 1993-07-23 |
JP3132774B2 true JP3132774B2 (ja) | 2001-02-05 |
Family
ID=18378449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34571191A Expired - Fee Related JP3132774B2 (ja) | 1991-12-27 | 1991-12-27 | データ圧縮・復元装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3132774B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5523144B2 (ja) * | 2010-02-25 | 2014-06-18 | キヤノン株式会社 | 情報処理装置及びその制御方法及びプログラム及び記憶媒体 |
WO2013079999A1 (en) * | 2011-12-02 | 2013-06-06 | Canon Kabushiki Kaisha | Methods and devices for encoding and decoding messages |
JP6613669B2 (ja) | 2015-07-14 | 2019-12-04 | 富士通株式会社 | 圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法 |
-
1991
- 1991-12-27 JP JP34571191A patent/JP3132774B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH05181641A (ja) | 1993-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3278297B2 (ja) | データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置 | |
US5406278A (en) | Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique | |
JP3541930B2 (ja) | 符号化装置及び復号化装置 | |
US5151697A (en) | Data structure management tagging system | |
US5585793A (en) | Order preserving data translation | |
JP3241788B2 (ja) | データ圧縮方式 | |
JPS6356726B2 (ja) | ||
US5610603A (en) | Sort order preservation method used with a static compression dictionary having consecutively numbered children of a parent | |
JP3132774B2 (ja) | データ圧縮・復元装置 | |
JP3241787B2 (ja) | データ圧縮方式 | |
JP2774350B2 (ja) | データ圧縮方法および圧縮データのデータ復元方法 | |
JP3117760B2 (ja) | データ復元方式 | |
JPH05152971A (ja) | データ圧縮・復元方法 | |
JP3038233B2 (ja) | データ圧縮及び復元装置 | |
JPH05241775A (ja) | データ圧縮方式 | |
JP3053656B2 (ja) | データ圧縮における辞書登録方式 | |
JP2825960B2 (ja) | データ圧縮方法及び復元方法 | |
JP3012677B2 (ja) | Zl符号化方法 | |
JP2999561B2 (ja) | データ圧縮及び復元装置 | |
JP3088740B2 (ja) | データ圧縮及び復元方式 | |
JP3388768B2 (ja) | データ圧縮及び復元方式 | |
JP3100206B2 (ja) | データ圧縮方法 | |
JPH05341953A (ja) | データ圧縮方法及び装置 | |
JP3038234B2 (ja) | データ圧縮装置の辞書検索方式 | |
JPH0683574A (ja) | データ圧縮及び復元方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20001108 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081124 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081124 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091124 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |