JPH05341953A - データ圧縮方法及び装置 - Google Patents

データ圧縮方法及び装置

Info

Publication number
JPH05341953A
JPH05341953A JP4152563A JP15256392A JPH05341953A JP H05341953 A JPH05341953 A JP H05341953A JP 4152563 A JP4152563 A JP 4152563A JP 15256392 A JP15256392 A JP 15256392A JP H05341953 A JPH05341953 A JP H05341953A
Authority
JP
Japan
Prior art keywords
dictionary
character string
character
search
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.)
Withdrawn
Application number
JP4152563A
Other languages
English (en)
Inventor
Yoshiyuki Okada
佳之 岡田
Shigeru Yoshida
茂 吉田
Yasuhiko Nakano
泰彦 中野
Hirotaka Chiba
広隆 千葉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP4152563A priority Critical patent/JPH05341953A/ja
Publication of JPH05341953A publication Critical patent/JPH05341953A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】辞書に登録した符号化済みの部分列により符号
化を行うデータ圧縮方法及び装置に関し、辞書検索、辞
書登録およびインデックス符号化を並列処理により高速
化する。 【構成】符号化済み文字列を例えば文字列の先頭文字別
に登録する複数の辞書16−1〜16−nを設け、辞書
並列検索手段10により複数の辞書16−1〜16−n
から入力文字列と最長一致する登録文字列を検索すると
共に検索を終了する以前に、次の文字から始まる入力文
字列と最長一致する登録文字列の検索を開始し、辞書並
列登録手段12で検索済みの最長一致する文字列に不一
致の最終文字を加えた文字列を、文字列の先頭文字別に
分けられた辞書に登録し、更にインデックス符号化手段
14で検索により最長一致した文字列のインデックス符
号化する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、辞書に登録した符号化
済みの部分列により符号化を行うデータ圧縮方法及び装
置に関する。近年、文字コード,ベクトル情報,画像な
ど様々な種類のデータがコンピュータで扱われるように
なっており、扱われるデータ量も急速に増加してきてい
る。大量のデータを扱うときは、データの中の冗長な部
分を省いてデータ量を圧縮することで、記憶容量を減ら
したり、速く伝送したりできるようになる。
【0002】様々なデータを1つの方式でデータ圧縮で
きる方法としてユニバーサル符号化が提案されている。
ここで、本発明の分野は、文字コードの圧縮に限らず、
様々なデータに適用できるが、以下では、情報理論で用
いられている呼称を踏襲し、データの1ワード単位を文
字と呼び、データが任意の複数ワードつながったものを
文字列と呼ぶことにする。
【0003】ユニバーサル符号の代表的な方法として、
ジブ−レンペル(Ziv-Lempel)符号がある(詳しくは、
例えば、宗像「Ziv-Lempelのデータ圧縮法」、情報処
理、Vo1.26,No.1,1985年を参照のこと)。 ジブ−レンペル符号では ユニバーサル型と、 増分分解型(Incremental parsing) の2つのアルゴリズムが提案されている。
【0004】さらに、ユニバーサル型アルゴリズムの改
良として、LZSS符号、(T.C.Bell,"Better OPM/L T
ext Compression",IEEE Trans. on Commun.,Vo1.COM-3
4,No.12 Dec.1986 参照)。また、増分分解型アルゴリ
ズムの改良としては、LZW(Lempel-Ziv-Welch) 符号
がある(T.A.Welch,"A Technique for High-Performanc
e Data Compression",Computer,June 1984参照)。
【0005】これらの符号の内、高速処理ができること
と、アルゴリズムの簡単さからLZW符号が記憶装置の
ファイル圧縮などで使われるようになっている。
【0006】
【従来の技術】図15にLZW符号の符号化アルゴリズ
ムの詳細を示し、また図16にLZW符号の復号化アル
ゴリズムの詳細を示す。LZW符号化は、書き替え可能
な辞書をもち、入力文字コードのデータ中を相異なる文
字列に分け、文字列の出現した順に番号を付けて辞書に
登録すると共に、現在入力している文字列を辞書に登録
してある最長一致する文字列の番号で表して、符号化す
るものである。
【0007】図15のLZW符号化処理では、ステップ
S1で予め全文字につき一文字からなる文字列を初期値
として登録してから符号化を始める。ステップS2では
入力した最初の文字Kを辞書検索する参照番号ωとし、
これを語頭文字列(prefix string)とする。次にステッ
プS3で入力データの次の文字Kを読み込み、ステップ
S4ではステップS2で求めた語頭文字列ωにステップ
S3で読み込んだ文字Kを加えた文字列ωKが現在の辞
書にあるか否か検索する。
【0008】ステップS4で文字列ωKが辞書にあれ
ば、ステップS5で文字列ωKを参照番号ωに置き換
え、ステップS5で入力データが終了かどうかを判断し
た後、再びステップS3に戻って文字列ωKが辞書から
探せなくなるまで最長一致する文字列の検索を続ける。
次にステップS4で文字列ωKが辞書になければ、ステ
ップS7に進んでステップS2で求めた文字Kの参照番
号ωを符号語code(ω)として出力し、また文字列ωK
に新たな参照番号を付加して辞書に登録し、さらにステ
ップS2の入力文字Kを参照番号ωに置き換えるととも
に、辞書アドレスNをインクリメントして、ステップS
5のチェックを受けた後、ステップS2に戻って次の文
字Kを読み込む。
【0009】図17および図18を参照してLZW符号
化を具体的に説明すると次にようになる。尚、図17,
図18では説明を簡単にするためabcの3文字の組合
せからなるデータを符号化する場合を取上げている。ま
ず図17の入力データは左から右へ読み込む。最初の文
字aを入力したとき、辞書にはaの他に一致する文字列
がないので、出力符号(参照番号ω)を符号語として出
力する。そして、拡張した文字列abに参照番号4をつ
けて辞書に登録する。実際の登録は文字列(1b)の形
となる。
【0010】続いて2番目のbが文字列の先頭になる。
辞書にはbの他に一致する文字列がないので、参照番号
2を符号語として出力し、拡張した文字列baを、実際
には2aの形で参照番号5をつけて辞書に登録する。3
番目のaが次の文字列の先頭になる。以下、同様にこの
処理を続ける。図16の復号化処理は図15の符号化処
理の逆の操作を行う。
【0011】図16の復号化では、ステップS1におい
て符号化と同様に予め辞書に全文字につき一文字からな
る文字列を初期値として登録してから復号を始める。ま
ずステップS2で最初の符号(参照番号)を読み込み、
現在の符号CODEをOLDcodeとし、最初の符号
は既に辞書に登録された一文字の参照番号いずれかに該
当することから、入力符号CODEに一致する文字co
de(K)を探し出し、文字Kを出力する。なお、出力
した文字(K)は後の例外処理のためcharにセットして
おく。
【0012】次にステップS3に進んで次の符号を読み
込んでCODEにNEWcodeとしてセットする。次
にステップS4に進み、ステップS3で入力された符号
CODEが辞書に定義(登録)されているか否かチェッ
クする。通常、入力した符号語は前回までの処理で辞書
に登録されているため、ステップS5に進んで符号CO
DEに対応する文字列code(ωK)を辞書から読み
出し、ステップS6で文字列Kを一時的にスタックし、
参照番号code(ω)を新たなCODEとして再度ス
テップS5に戻し、このステップS5,ステップS6の
手順を再帰的に参照番号ωが一文字に至るまで繰り返
し、最後にステップS7に進んでステップS6でスタッ
クした文字をLIFO(Last In Fast Out)形式でポッ
プアップして出力する。
【0013】同時にステップS7において、前回使った
符号ωと今回復元した文字列の最初の一文字Kを組
(ω,K)と表した文字列に、新たな参照番号を付加し
て辞書に登録する。なお、ステップS4において登録さ
れていない符号(符号化において直前の参照番号を参照
する場合に起きる)場合、ステップS9にて、OLDc
odeをCODEに、code(OLDcode,ch
ar)をNEWcodeに戻した後にステップS5に進
むようにする。
【0014】図19を参照して復号化処理を具体的に説
明すると次のようになる。尚、図19も説明を簡単にす
るためabcの3文字の組合せからなるデータを復号化
する場合を取上げている。まず、図19で最初の入力符
号は1であり、一文字a,b,cについては既に参照番
号1,2,3として図18に示すように辞書に登録され
ているため、辞書の参照により符号1に一致する参照番
号の文字列aに置き換えて出力する。次の符号2につい
ても同様にして文字bに置き換えて出力する。このとき
前回処理した符号と今回復号した最初の一文字bとを組
み合わせた(1b)に新たな参照番号4を付加して辞書
に登録する。
【0015】3番目の符号4は辞書の探索により1bか
らabと置き換えて文字列abを出力する。同時に前回
処理した符号2と今回復号した文字列の1番目の文字a
との組合せた文字列2a(=ba)を新たな参照番号5
を付加して辞書に登録する。以下同様に、この処理を繰
り返す。ただし、図19の復号化では次の例外処理があ
る。この例外処理は、第6番目の入力符号8の復号で生
ずる。符号8は復号時に辞書に定義されておらず、復号
できない。
【0016】この場合には、前回処理した符号5に前回
復号した文字列baの最初の一文字bを加えた文字列5
bを求め、さらに2ab,babと置き換えられて出力
される。そして、文字列の出力語に前回の符号語5に今
回復号した文字列の文字bを加えた文字列5bに参照番
号8を付加して辞書に登録する。この例外処理は図16
の復号化処理フローのステップS4,ステップS9の処
理を通じて行われ、最終的にステップS7で文字列の出
力と新たな文字列に参照番号を付加した辞書への登録が
行われる。
【0017】尚、図15,図16の符号化および復号化
処理は、同じ辞書を作り出しながら行う。 [分割辞書方式によるLZW符号化]さらに、本発明者
は、LZW符号化より高圧縮率が得られる分割辞書方式
を既に提案している(特願平2−275836号)。以
下、この分割辞書方式について、次に説明する。
【0018】従来のLZW符号では、入力文字コードの
データ中を相異なる文字列に分けて符号化するとき、現
在符号化中の各文字列は以前の文字列とは独立に出現す
るものとして符号化する形式を取っている。LZW符号
では、無記憶情報源の符号化には問題ない。しかし、実
際の文章等、多くのデータは記憶情報源と見なされ、L
ZW符号化では文字列が出現する履歴を十分利用できて
おらず、データ圧縮後も文字列の出現の従属関係につい
ては冗長性が残るという欠点があった。
【0019】ここで図15のアルゴリズムに従ってLZ
W符号化した場合には図20に示す木構造の辞書が作成
される。この場合、辞書の探索木の根(root) は空であ
り、LZW符号では符号化中の文字列に対して以前に出
現した文字列の履歴は考えられていない。従って図21
のように辞書から検索された最長一致する文字列を示す
符号としてのインデックスi1 ,i2 ,i3 は独立して
おり、相関関係はない。
【0020】分割辞書方式は、このような事情に鑑みて
なされたもので、符号化文字列に対して直前の文字列の
最終文字群(最終文字の1つ前、2つ前・・・の文字を
含めてもよい)との従属関係を辞書に取り込むことによ
って、文字列間の冗長性を削減し、圧縮率を高めようと
したものである。具体的には、図22に示すように辞書
を文字数256個に分けて索引(0)〜(255)をつ
け、直前の文字列の最終文字を索引にして個別の辞書を
選択することが考えられる。各辞書には、索引の最終文
字につながる文字列のみを格納しておく。
【0021】辞書の選択は図23に示すように、符号化
が済んだ文字列の最終文字P0,P1,P2により次の
文字列の検索に使用する辞書の木、即ち分割辞書を選択
して最長一致する文字列を検索し、検索に使用した分割
辞書のインデックスi1 (P0),i2 (P1),i3
(P2)、即ち分割辞書の参照番号で符号を表わす。こ
の結果、従来は辞書中の文字列を全体からみた参照番号
で指定していたのに対し、この方辞書分割方式を採れば
索引に繋がる系列の参照番号で指定できるので短く表現
でき、符号化率を向上させることができる。
【0022】図24は分割辞書方式によるLZW符号の
符号化アルゴリズムを詳細に示す。図24の分割辞書方
式の符号化処理では、ステップS1で初期設定として、
出現する文字の総数M、分割辞書の個数Aに対して、A
個の分割辞書DiにM個の文字を初期登録する。次に、
直前の文字列の最終文字で選択するA個の分割辞書の各
木iについて節点(インデックス)の個数をindc
(i)で管理する。また、初期化としてA個のindc
(i)をM+1にセットする。
【0023】更に、最初の文字Kを入力し、それをイン
デックス(語頭文字列)ωとすると共に直前文字列の最
終文字K1にも代入する。直前文字列の最終文字からの
履歴PKを定義し、直前文字列の最終文字K1から使用
する辞書番号に対応づけるLUT(ルックアップテーブ
ル)を設置する。ステップS2で次の文字Kを入力す
る。ステップS3において、文字列ωKが分割辞書Dpk
に存在するかどうかをチェックする。分割辞書Dpkに存
在する場合、ステップS4に進み、文字列ωKを新たな
ω、文字KをK1に置き換え、ステップS5を経てステ
ップS2に戻り、最長一致する文字列を検索する。
【0024】ステップS3において、文字列ωKが分割
辞書Dpkに存在せず、最長一致する文字列の検索を終
了した場合、ステップS5に進む。ステップS5では、
分割辞書Dpkのcode(ω)を出力すると共に、ア
ドレスindc(PK)の分割辞書Dpkに文字列ωK
を登録した後、文字Kをωに代入し、indc(PK)
をインクリメント、履歴PKをLUT(K1)としてス
テップS6に進む。
【0025】図26,図27を参照して分割辞書方式の
符号化を具体的に説明する。まず、分割辞書として、辞
書a,辞書b,辞書cを用意する。図26の入力データ
は左から右へ読み込む。最初の文字aを入力したとき、
前回符号化の最終文字aを仮定してそれに続く文字列と
して辞書aを検索し、aの他に一致する文字列がないの
で、出力符号(参照番号1)符号語として出力すると共
に、拡張した文字列abを参照番号4として辞書aに登
録する。
【0026】但し、実際の登録は文字列(1b)の形と
なる。続いて2番目のbが文字列の先頭になる。前回符
号化の最終文字がaであるので、辞書aから検索し、辞
書aにはbの他に一致する文字列がないので、参照番号
2を符号語として出力し、拡張した文字列baを実際に
は2aの形で参照番号5をつけて辞書aに登録する。
【0027】次に3番目のaが次の文字列の先頭にな
る。この場合、前回符号化の最終文字がbであるので、
辞書bから検索し、辞書bにはaの他に一致する文字列
がないので、参照番号1を符号語として出力し、拡張し
た文字列abを実際には1bの形で参照番号4をつけて
辞書bに登録する。以下、同様にこの処理を続ける。次
に、分割辞書方式の復号化アルゴリズムを図25に示
す。
【0028】図25において、まずステップS1の初期
設定は、図24のステップS1と同じである。続いてス
テップS2において、最初の符号CODEを読み、OL
Dcodeとする。符号CODEに対応する分割辞書D
pkから文字Kを復元して出力すると共に、文字Kをc
har、履歴PKをPK1に、LUT(K)をPKに代
入する。次にステップS3では次の符号CODEを読
み、NEWcodeとする。ステップS4では、分割辞
書Dpkに符号CODEが定義されていない場合はステ
ップS5に進み、定義されている場合はステップS6に
進む。
【0029】ステップS5では直前文字列の第1文字c
harを出力すると共に、符号CODEをOLDcod
eに戻し、またNEWcodeを分割辞書Dpk内のO
LDcodeとcharの組み合わせから得られるco
deに戻した後ステップS6に進む。ステップS6で
は、分割辞書DpkのインデックスCODEに対応する
文字列code(ωk)を辞書から読み出し、ステップ
S7で文字Kを一時的にスタックし、参照番号code
(ω)を新たな符号CODEとして再度ステップS6に
戻する。
【0030】このステップS6,ステップS7の手順を
再帰的に参照番号ωが一文字にいたるまで繰り返し、最
後にステップS8に進んでステップS7でスタックした
文字をLIFO(Last In Fast Out) 形式でホップアッ
プして出力する。ステップS9では、直前の符号OLD
codeと直前文字列の最終文字Kとの組合せをアドレ
スindc(PK1)の分割辞書Dpk1に登録する。
次にインデックスindc(PK1)の値をインクリメ
ントし、ステップS10に進む。ステップS10では、
復元文字列の第1文字をchar、復元文字列の最終文
字をK1に、履歴pkをpk1に、LUT(K1)をP
Kに、NEWcodeをOLDcodeに各々代入し、
ステップS11を経てステップS3に戻る。
【0031】図28を参照して分割辞書方式の復号化処
理を具体的に説明すると次のようになる。まず図28で
最初の入力符号は1であり、一文字a,b,cについて
は既に参照番号1,2,3として図27に示すように辞
書a,辞書b,辞書cの各辞書に登録されているため、
前回の復号化された最後の文字をaと仮定して、辞書a
の参照により符号1に一致する参照番号の文字列aに置
き換えて出力する。
【0032】次の符号2についても同様にして文字bに
置き換えて出力する。このとき前回処理した符号と今回
復号した最初の一文字bとを組み合わせた(1b)に新
たな参照番号4を付加して辞書aに登録する。以下同様
に、この処理を繰り返す。図29に従来のデータ圧縮方
式の回路ブロック図を示し、図30に辞書検索に外部ハ
ッシュ法を採用した場合の処理手順を示す。
【0033】図29のデータ圧縮回路は、入力される文
字列と最長一致する登録文字列を検索する辞書検索手段
100、検索後、最後の不一致データを加えた文字列を
登録する辞書登録手段102、最長一致の文字列を符号
化するインデックス符号化手段104および前記辞書検
索手段100と辞書登録手段102の要求に従い検索お
よび登録が行われる辞書メモリ106から構成される。
【0034】辞書検索に外部ハッシュ法のリスト構造を
利用したLZW符号化の処理フロー図を図31に示す。
また図32は外部ハッシュ法に従った辞書メモリの構成
を示したもので、図33に示す符号化済み文字列のツリ
ー構造を例にとってLZW符号化の検索手順と登録手順
を具体的に示している。まず図32において、辞書メモ
リは、ファーストメモリ(First Memory)1100、ネク
ストメモリ(Next Memory)120及びネクストメモリ1
20の拡張領域となる拡張メモリ(Extention Memory)1
30で構成される。ここでファーストメモリ110が外
部ハッシュ法の索引(ディレクトリ)に対応し、ネクス
トメモリ120が連結リストの「next」に対応し、更に
拡張メモリ130が「name」に対応する。
【0035】また図33のツリー構造は、文字K10,K
21,K22,・・・,K41が既に登録され、破線で示すK
42は新たに登録される場合を示している。このツリー構
造における階層は、図31の処理において、iカウンタ
で示され、同じ階層における文字の数はjカウンタで表
される。従って、各文字の登録アドレスはωijとして表
わされる。
【0036】いま図33の登録済みのツリー構造に含ま
れる文字列 「K10,K22,K32,K42」 が入力した時の図31の処理フローに従った辞書検索に
よるLZW符号化及び登録を説明すると次のようにな
る。図31において、まずステップS1で次の初期化処
理を行う。
【0037】第1番目の文字を含むように辞書を初期
化する。例えばアルファベット26文字であれば、文字
コードをそのままハッシュアドレスとして図31のファ
ーストメモリに登録する。図33の場合、ツリートップ
にある文字K10がアドレスω 10に登録された状態を意味
する。 辞書への現在文字登録数nを前記で登録した文字数
にセットする。アルファベット26文字の場合には、n
=26となる。
【0038】入力した最初の文字Kを語頭文字列iと
する。図31の場合、最初の入力文字はK10であること
から語頭文字列i=1とする。尚、以下の処理フロー中
では語頭文字列iをiカウンタとして説明する。 辞書検索用配列を0に初期化する。即ち、ファース
ト、ネクスト及び拡張のメモリの検索用配列はfirst[1,
Nmax],next[1,Nmax]、EXT [1,Nmax]で表わされるの
で、これを0に初期化する。
【0039】ステップS1の初期化処理が済んだなら
ば、ステップS2に進んで次の文字「K22」を読込む。
次にステップS3で未処理の文字があるか否かチェック
する。全ての処理が終ればステップS16に進んで符号
語code(ω)を出力して処理を終了する。このとき
未処理文字があるのでステップS5〜ステップS9に示
す辞書検索ステップに進む。
【0040】辞書検索ステップは、まずステップS5で
アドレスωijにそのときの語頭文字列i=1の値をセッ
トし、且つjカウンタをj=0にセットする。これによ
りファーストメモリのアドレスωij=ω10が生成され
る。次にステップS6でファーストメモリ100のアド
レスω10の内容を読むとアドレスωij=ω21が得られる
ので、iカウンタをi=2にセットする。
【0041】続いてステップS7に進み、i=0か否か
チェックし、このときi=2であることからステップS
8に進み、ステップS6のファーストメモリ100から
得られたアドレスω21の拡張メモリ300を参照して文
字「K21」を読出し、ステップS2で得ている入力文字
「K22」との一致を判別する。この場合、両者は不一致
であることからステップS9に進み、このときのiカウ
ンタの値i=2をjカウンタにセットしてj=2とし、
またネクストメモリ200のアドレスω21に格納されて
いるアドレスωij=ω22のiをiカウンタにi=2とし
てセットする。このため新たなアドレスωij=ω22が作
り出される。
【0042】続いてステップS7に戻り、i=0をチェ
ックし、このときi=2であることから再びステップS
8に進んでアドレスω22の拡張メモリ300の登録文字
「K 22」を読出して入力文字「K22」との一致を判別す
る。このとき両者は一致することからステップS2に戻
り、次の文字「K32」を読込む。以下同様にしてステッ
プS5〜ステップS9の処理の繰り返しにより順番に辞
書検索が行なわれ、既に登録済みの文字「K41」までの
検索処理が行われる。
【0043】登録文字「K41」の検索が終了してステッ
プS8で最後の入力文字「K42」で不一致が判別された
場合には、ステップS9でi=2にセットすると共に、
アドレスω41のネクストメモリ200の内容が0である
ことから、i=0にセットする。このためステップS7
に戻った時にi=0が判別され、辞書検索ステップを抜
け出してステップS10に進み、それまでの文字列「K
10,K22,K32」を示すアドレスω32を符号語code
(ω)として出力し、ステップS11〜14の辞書登録
ステップに進む。
【0044】辞書登録ステップにあっては、まずステッ
プS11で現在登録文字列nをn=i、即ちn=4にセ
ットし、更にnを1つインクリメントする。そして文字
「K 42」を拡張メモリ300のアドレスωij=ω42に登
録する。次にステップS12でj=0か否かをチェック
し、このときj=2であることからステップS14に進
み、ネクストメモリ200のアドレスω41に文字
「K42」を登録したアドレスω42を書込む。一方、ステ
ップS12でj=0であれば、即ち、ファーストメモリ
110への登録に移行した状態であれば、図32のファ
ーストメモリ110のアドレスω11,ω22,ω32に示す
ように、拡張メモリ130の文字登録アドレスを格納す
る。
【0045】この文字登録ステップにおける文字
「K42」の登録により、図32のネクストメモリ120
及び拡張メモリ130は、下部に破線で仕切って示すア
ドレスω41,ω42の登録状態となり、図33に示すツリ
ー構造に新たな文字「K42」のアドレスω42が追加され
たことになる。尚、図32では、アドレスω41について
は説明の都合上、検索と登録で重複して示している。
【0046】ステップS11〜ステップS14の辞書登
録ステップが終了すると、ステップS15で登録した文
字「K42」を新たな語頭文字列i、即ち、iカウンタの
値にセットし、再びステップS2に戻って文字「K42
をツリートップとして、その後に続く文字列の辞書検索
に移行する。
【0047】
【発明が解決しようとする課題】しかしながら、このよ
うな従来のデータ圧縮回路にあっては、図30の処理手
順に示すように、次の問題がある。 一組の文字列に対する辞書検索,辞書登録,インデッ
クス符号化の過程を一通り経過した後に、次の組の文字
列の処理を行うという、いわばバッチ・シリアル処理を
行っている(プロセッサによる通常のプログラム動作に
相当する)。
【0048】辞書検索として外部ハッシュによる検索
を採用した場合、1文字に対する検索に幾つかのサイク
ルを必要とする。 辞書メモリが1つのため、並列的に辞書検索を行った
り、辞書検索と登録を同時にアクセスすることが困難で
ある。 このため、結果として従来のデータ圧縮回路では検索、
登録、符号化を1つずつ順番に行うバッチ・シリアル処
理を余儀無くされており、高速処理に適さない問題があ
った。
【0049】本発明は、このような従来の問題点に鑑み
てなされたもので、辞書検索、辞書登録およびインデッ
クス符号化を並列処理により高速化できるようにしたデ
ータ圧縮方式を提供することを目的とする。
【0050】
【従来技術の問題点を解決するための手段】図1は本発
明の原理説明図である。まず本発明は、入力文字列に最
長一致する辞書に登録した符号化済みの部分列を検索し
て辞書の参照番号により符号化するデータ圧縮方法に於
いて、入力文字列と最長一致する辞書の登録文字列を検
索を終了する以前に、次に検索する入力文字列と最長一
致する登録文字列の検索を開始することを特徴とする。
【0051】ここで、次に検索する入力文字列として
は、現在検索している文字列の先頭文字の次の文字から
始まる入力文字列とする。また本発明は、符号化済み文
字列を異なる部分列に分けて、この部分列を辞書に登録
しておき、入力文字列に最長一致する辞書中の部分列を
検索して辞書の参照番号により符号化するデータ圧縮装
置を対象とする。
【0052】このようなデータ圧縮装置につき本発明
は、符号化済み文字列をその文字列の先頭文字別に登録
する複数の辞書16−1〜16−nと、複数の辞書16
−1〜16−nから入力文字列と最長一致する登録文字
列を検索すると共にその検索を終了する以前に、次の文
字から始まる入力文字列と最長一致する登録文字列の検
索を開始する辞書並列検索手段10と、辞書並列検索手
段10で検索された最長一致する文字列に次の入力一文
字を加えた文字列を、その文字列の先頭文字別に分けら
れた辞書に登録する辞書並列登録手段12と、辞書並列
検索手段10の検索により最長一致した文字列のインデ
ックスを符号化データとして出力するインデックス符号
化手段14とを備えたことを特徴とする。
【0053】また本発明のデータ圧縮装置は、符号化済
み文字列を直前文字列の最終文字の履歴に従って登録し
た複数の辞書16−1〜16−nの並列検索により符号
化することを特徴とする。このような本発明のデータ圧
縮装置に設けた、辞書並列検索手段10、辞書並列登録
手段12およびインデックス符号化手段14の間ではパ
イプライン処理を行う。
【0054】
【作用】このような構成を備えた本発明のデータ圧縮方
法及び装置では、同時にアクセスできる複数の辞書に対
して並列検索を行い、検索後に次の入力一文字を加えた
文字列を検索と並列して辞書に登録し、更に検索で得ら
れた最長一致する文字列をインデックス符号化すること
ができる。
【0055】このため本発明によれば、辞書検索,辞書
登録,インデックス符号化の各過程をパイプラインで並
列処理できる。特に辞書検索を並列に行うため、同時に
アクセスできる辞書メモリを複数個持つような木の構成
を採用する。具体的には、LZW符号化の場合は、文字
列の先頭文字別に複数辞書を構成することで、異なる辞
書に対して並列検索を行うことができる。また分割辞書
方式の場合には、直前文字列の最終文字別に複数辞書を
構成することで、異なる辞書に対して並列検索を行うこ
とができる。
【0056】
【実施例】図2は本発明のデータ圧縮方法が適用される
装置構成の一実施例を示した実施例構成図である。図2
において、16−1,16−2,・・・16−nは辞書
メモリであり、平行してメモリアクセスを行うことがで
きる。10は辞書並列検索回路であり、同時にアクセス
可能な辞書メモリ16−1〜16−nから入力文字列と
最長一致する登録文字列を検索すると共に、この検索を
終了する以前に、次の文字から始まる入力文字列と最長
一致する登録文字列の検索を開始することができる。1
2は辞書並列登録回路であり、辞書並列検索回路10で
検索された最長一致する文字列に次の入力一文字を加え
た文字列を辞書検索と並行して辞書メモリ16−1〜1
6−nのいずれかに登録することができる。
【0057】更に14はインデックス符号化回路であ
り、辞書並列検索回路10の検索により得られた最長一
致した文字列の辞書登録番号によりインデックス符号化
を行って符号データを出力する。具体的には、辞書並列
検索回路10、辞書並列登録回路12及びインデックス
符号化回路14はそれぞれの処理過程をパイプラインで
並列処理するようになる。
【0058】ここで、図2の実施例においてLZW符号
化を行う場合には図3に示すように文字列の先頭文字別
に辞書1〜256で示す複数の辞書メモリ16−1〜1
6−256を構成する。一方、分割辞書方式について本
発明を適用した場合には、図10に示すように直前文字
列の最終文字別に辞書1〜辞書256で示す複数の辞書
メモリ16−1〜16−256を構成し、異なる辞書に
対し並列検索をできるようにする。
【0059】次に図3の文字列の先頭文字別に複数の辞
書メモリ16−1〜16−256を構成することで、異
なる辞書に対し並列検索を可能とする場合の本発明によ
るAZW符号化における辞書検索及び登録のアルゴリズ
ムを図4のフローチャートに示す。図4のLZW符号化
処理にあっては、まずステップS1で予め全文字に付き
1文字からなる文字列を全ての辞書に初期値として登録
してから符号化を始める。ここで文字数をNとすると、
各辞書の先頭アドレスNはN=Mとなっている。
【0060】続いてステップ2に進み、入力した最初の
文字Kを第1番目の辞書検索を行う参照番号ω1 とする
と共に、同じく1番目の検索文字列の先頭文字をH1
する。また、次の文字Kを入力し、2番目の辞書検索を
行う参照番号をω1 とすると共に、2番目の検索文字列
の先頭文字をH2 とし、更に1番目の検索で一致、不一
致の対象となる文字をK1 とする。
【0061】次にステップS3で入力データの次の文字
(3番目の文字)を読み込み、この文字Kを第2番目の
辞書検索で一致または不一致の対象となる文字K2 とす
る。次のステップS4では、第1番目の検索文字列の先
頭文字Hと第2番目の検索文字列の先頭文字H2 を比較
し、H1 =H2 と同じであれば同じ辞書メモリをアクセ
スすることはできないので、並列検索なしとしてステッ
プS5のみに進む。
【0062】また、1番目と2番目の検索文字列の先頭
文字H1 とH2 が同じでない場合には、異なる辞書メモ
リをアクセスすることができるので、並列検索ありとし
てステップS5とS6の両方に進む。ステップS5にあ
っては、第1番目の辞書検索を行い、語頭文字列ω1
読み込んだ文字K1 を加えた文字列ω11 が辞書H1
にあるか否か検索する。ステップS6では第2番目の辞
書検索を行い、語頭文字列ω2 に読み込んだ文字K2
加えた文字列ω22 が辞書H2 にあるか否か検索す
る。
【0063】続いてステップS7に進み、ステップS5
及びS6の並列検索の結果に従って、図5に示すような
4つの条件〜に対し3つの処理(a)(b)(c)
のいずれかを選択する。 (1)文字列ω11 が辞書H1 にあるとして条件が
成立する場合、ステップS8に進む。この場合、他の条
件〜の成立の有無は問わない。
【0064】(2)文字列ω11 が辞書H1 に存在せ
ずに条件が成立し、且つ文字列ω 22 が辞書H2
存在するとして条件が成立する場合、処理(b)が選
択されてステップS9に進む。 (3)文字列ω11 が辞書H1 に存在せずに条件が
成立し、且つ文字列ω 22 の辞書H2 に存在しないと
して条件が成立する場合、処理(c)が選択されてス
テップS10に進む。
【0065】このような並列検索における処理(a)〜
(c)のいずれかに対応したステップS8,S9,S1
0の各処理は次のようになる。まず、並列検索で文字列
ω11 が辞書H1 に存在した場合のステップS8の処
理にあっては、文字列ω22 の検索がまだ続いている
場合にはこの検索を中止する。
【0066】そして文字列ω11 を参照番号ω1 に置
き換え、次の文字K2 を2番目の辞書検索を行う参照番
号ω2 に置き換え、更に第2番目の検索文字列の先頭文
字H 2 に置き換え、最終的に第1番目の検索で一致また
は不一致の対象となる文字K 1 としてステップS11に
進む。ステップS11にあっては、入力データが終了し
たかどうかを判断した後、再びステップS3に戻って文
字列ω11 が辞書から探せなくなるまで最長一致とな
る文字列の検索を続ける。
【0067】次に文字列ω11 が辞書H1 に存在せ
ず、文字列ω22 が辞書H2 に存在することで選択さ
れた処理(b)によるステップS9にあっては、文字列
ω1 1 が辞書H1 にないので、参照番号ω1 を符号語
code(ω1 )として出力し、また文字列ω11
新たな参照番号を付けてD(N)に登録する。続いて辞
書のアドレスNを1つインクリメントし、先頭文字H2
をH1 に置き換える。更に文字列ω22 が辞書H2
存在するので文字列ω22 を新たな参照番号ω1 とし
て置き換えると共に、次の文字Kを入力して、この入力
文字Kを2番目の辞書検索を行う参照番号ω2 に置き換
え、次いで第2番目の検索文字列の先頭文字H2 に置き
換え、更に第1番目の検索で一致または不一致の対象と
なる文字K1 としてステップS11に進む。
【0068】更に、文字列ω11 が辞書H1 に存在し
且つ文字列ω22 も辞書H2 に存在しないとして選択
された処理(b)によるステップS10にあっては、文
字列ω11 が辞書H1 にないので、参照番号ω1 を符
号語code(ω1 )として出力し、また文字列ω1
1 に新たな参照番号を付けて辞書D(N)に登録し、辞
書アドレスNを1つインクリメントする。
【0069】同時に文字列ω22 も辞書H2 にないの
で、参照番号ω2 を符号語code(ω2 )として出力
し、また文字列ω22 に新たな参照番号を付けて辞書
D(N)に登録し、辞書アドレスNを1つインクリメン
トする。次に文字Kを参照番号ω1 及び第1番目の検索
文字列の先頭文字H1 とし、次の文字Kを入力し、この
入力文字Kを第2番目の辞書検索を行う参照番号ω2
置き換え、次いで第2番目の検索文字列の先頭文字H2
に置き換え、更に第1番目の検索で一致または不一致の
対象となる文字K1 としてステップS11に進む。
【0070】以上の検索処理の途中で、ステップS11
でデータ終了を判別するとステップS12に進み、符号
語code(ω1 )を出力して一連のアルゴリズムを終
了する。一方、先頭文字H1 とH2 が等しい並列検索な
しにあっては、ステップS5,ステップS7を介して処
理(a)のみが選択され、ステップS8に進むことにな
る。
【0071】次に図6を参照して図4に示した本発明に
よるLZW符号化の辞書検索及び登録アルゴリズムを具
体的に説明する。尚、説明を簡単にするため、入力文字
a,b,cの3つの場合を例にとっている。ここで、図
7は図6のLZW符号化に使用される3つの辞書を示し
ており、文字a,b,c毎に辞書が設けられ、各辞書に
は文字a,b,cが初期登録されている。
【0072】この状態で、図8に示すように左側を先頭
とした文字列「ababcba,・・・」が入力したと
する。まず先頭の1文字aと2番目の文字bとを比較す
ると、両者は不一致であることから並列検索が可能であ
り、図7の辞書a及び辞書bの並列検索を行う。1番目
の文字aについては辞書aに既に登録されていることか
ら登録番号1を出力符号として出力する。また辞書bに
も2番目の文字bが既に登録されていることから登録番
号2を出力符号として出力する。
【0073】続いて1番目の文字aに次の文字bを加え
た文字列abが図7の辞書aに存在するか否か検索し、
この場合、文字列bは存在しないことから辞書検索を中
止し、文字列abに登録番号4を付けて辞書aに登録す
る。実際には1bの形で登録する。同時に2番目の文字
bに次の文字aを加えた文字列baが辞書bに存在する
か否か検索し、この時点では辞書bに文字列baは存在
しないことから登録番号5を付して辞書bに登録する。
実際には2aの形で登録する。
【0074】以上の処理で先頭から2番目までの文字a
bの符号化が終了する。次に3番目の文字aと4番目の
文字bを入力して一致、不一致を比較すると、不一致で
あることから並列検索が可能である。このため、入力デ
ータ1側にあっては、先頭文字aにより図7の辞書aを
参照し、文字aが存在することから次の文字bを加えた
文字列abが辞書aに存在するか検索し、文字列abも
存在することから次の文字cを加えた文字列abcが辞
書aに存在するか否か検索する。
【0075】しかし、文字列abcは辞書aには存在し
ないため、文字列abを最長文字列として登録番号4を
符号として出力する。そして、文字列abに次の1文字
cを加えた文字列abcを辞書aに登録番号6として登
録する。実際には4cの形で登録する。同時に、入力デ
ータ2側にあっては4番目の文字bにより辞書bを選択
して文字bが存在することを検索し、文字bに次の文字
cを加えた文字列bcの検索に入る。このとき入力デー
タ1側で文字列bcが最長文字列として検索され、且つ
文字列abcの登録が完了することから、入力データ2
側にあっては、この時点で辞書bの検索を中止し、次の
文字cを先頭文字として図7の辞書cを検索する。辞書
cには文字cが既に登録されていることから登録番号3
を符号として出力する。
【0076】以下同様に入力データ1側の文字に対し次
の文字を入力データ2側の文字として両者が一致するか
否か比較し、一致すれば並列検索を繰り返す。図8の1
1番目からは文字aが連続しており、この場合、入力デ
ータ1側と入力データ2側の文字は同一文字であり、並
列検索はできず、全て図7の辞書aを選択して検索する
ようになり、登録番号10,11,12に示すように文
字aを2つ,3つ,4つと順番に延ばした同一文字が連
続する文字列の辞書登録が行われる。
【0077】図9は辞書検索に外部ハッシュ法を用いた
場合の本発明のLZWの並列検索及び登録処理の手順を
示した説明図である。ここで・・・を(1)
(2)(3)・・・として説明すると次のようになる。 (1)1バイト目と2バイト目のファーストfが共に不
一致なので並列検索を開始する。
【0078】(2)1バイト目のネクストnは不一致、
2バイト目のネクストnは一致。 (3)1バイト目のネクストnが一致、2バイト目は既
に一致したので待機する。 (4)1バイト目の検索に成功したので2バイト目を現
在辞書メモリ側として検索開始する。同時に2バイト目
の次辞書メモリによる検索を中止し、次の3バイト目の
検索開始する。ここで2バイト目と3バイト目のファー
ストは不一致なので並列検索を開始する。
【0079】(5)2バイト目のネクストn不一致、3
バイト目のネクストnも不一致。 (6)2バイト目のネクストnが一致、3バイト目のネ
クストnは不一致。 (7)2バイト目の検索に成功したので3バイト目を現
在辞書メモリ側として検索開始する。同時に3バイト目
の次辞書メモリ側の検索を中止し、次の4バイト目の検
索を開始する。ここで3バイト目と4バイト目のファー
ストfは不一致なでの並列検索を開始する。
【0080】(8)3バイト目のネクストnは不一致、
4バイト目のネクストnは一致。 (9)3バイト目はネクストnが無しとなり検索終了、
4バイト目は検索成功につき待機する。 (10)1〜3バイト目の検索成功による辞書インデッ
クスに次の4バイト目を加えた文字列を現在辞書に登
録。同時に5バイト目と6バイト目のファーストfが不
一致なので並列検索開始する。
【0081】(11)1〜3バイト目の検索成功による
辞書インデックを符号として出力。同時に5バイト目は
ネクストn無しで検索終了。6バイト目はネクストnが
不一致。 (12)4〜5バイト目の検索成功による辞書インデッ
クスに次の6バイトを加えた文字列を現在辞書に登録。
同時に6バイト目の検索でネクストnは不一致。
【0082】(13)4〜5バイト目の検索成功による
辞書インデックスを符号として出力。同時に6バイト目
の検索でネクストnは一致となる。 図10は本発明の第2実施例における並列検索される複
数辞書の構成を示したもので、分割辞書方式の場合を例
にとっている。即ち、分割辞書方式を採用した場合に
は、図10に示すように直前文字列の最終文字別に辞書
1〜辞書256で示す複数辞書メモリ16−1〜16−
256で構成することで、異なる辞書に対し並列検索を
できるようにする。
【0083】図11は図10の分割辞書方式で直前文字
列の最終文字別に複数の辞書メモリ16−1〜16−2
56を構成した場合の本発明によるLZWの辞書検索及
び登録アルゴリズムを示す。図11の分割辞書方式の符
号化処理では、ステップS1で初期設定として出現する
文字Mで決まる分割辞書の個数aに対しa個の分割辞書
DiにM個の文字を初期登録する。
【0084】次に直前の文字列の最終文字で選択するa
個の分割辞書の各木i、即ち図10の破線で示す直前文
字列の最終文字で決まる接点(インデックス)の個数を
indc(i)で管理する。この場合、まず初期化とし
てa個のindc(i)をN+1にセットする。次にス
テップS2において最初の文字Kを入力し、この文字を
第1番目のインデックス(語頭文字列)ω1 とすると共
に、第1番目の直前文字列の最終文字K 1 に0を代入す
る。また、直前文字列の最終文字K1 からの履歴PK1
を定義し、直前文字列の最終文字K1 から使用する辞書
番号に対応付けるLUP(ルックアップテーブル)を設
置する。
【0085】更に、次の文字Kを入力し、この入力文字
Kを2番目のインデックス(語頭文字列)ω2 とすると
共に、1番目の検索の対象となる文字K1 とする。更に
2番目の直前文字列の最終文字K2 をK1 に代入する。
第2番目の直前文字列の最終文字からの履歴PK2 を定
義し、直前文字列の最終文字K2 から使用する辞書番号
に対応付けるLUTを設置する。
【0086】続いてステップS3で次の文字Kを入力
し、2番目の検索対象となる文字K2とする。次のステ
ップS4においては、1番目と2番目の直前文字列の最
終文字から履歴PK1 とPK2 が同じであれば並列検索
なしとしてステップS5のみに進み、第1番目と第2番
目の直前文字列の最終文字からの履歴PK1 とPK2
同じでない場合には並列検索ができることからステップ
S5とS6の両方に進む。
【0087】ステップS5では第1番目の検索として文
字列ω11 が分割辞書DPK1 に存在するかどうかをチ
ェックする。またステップS6では第2番目の検索とし
て文字列ω22 が分割辞書DPK2 に存在するかどうか
をチェックする。このステップS5及びS6の条件に基
づき、ステップS7において図12に従って次の(1)
〜(3)のいずれかの処理を選択する。 (1)文字列ω11 が分割辞書DPK1 に存在する条件
の場合、処理(a)となるステップS8に進む。 (2)文字列ω11 が分割辞書に存在せずに条件が
成立し且つ文字列ω2 2 が分割辞書DPK2 に存在して
条件が成立する場合、処理(b)を選択してステップ
S9に進む。 (3)文字列ω11 が分割辞書DPK1 に存在せずに条
件が成立し且つ文字列ω22 が分割辞書DPK2 に存
在しないことで条件が成立する場合、処理(c)を選
択してステップS10に進む。
【0088】ステップS8に進んだ場合には、文字列ω
22 の検索がまだ続いている場合にはこの検索を中止
する。そして文字列ω11 を参照番号ω1 に置き換
え、文字K1 をK2 とし、LUT(K2 )を履歴PK2
に代入する。更に文字K2 を2番目の辞書検索を行う参
照番号ω2 、このω2 を第1番目の直前文字列の最終文
字K1 、更に最終文字K1 を第1番目の検索で一致また
は不一致の対象となる文字K1 としてステップS11に
進む。
【0089】ステップS11では入力データが終了かど
うかを判断した後、再びステップS3に戻って文字列ω
11 が辞書DPK1 から探せなくなるまで最長一致の検
索を続ける。またステップS9では文字列ω11 が辞
書DPK1 にないので、参照番号ω1を符号語code
(ω1 )として出力し、また文字列ω11 に新たな参
照番号を付けて辞書DPK1 に登録する。次に辞書DPK1
のアドレスindc(PK1 )をインクリメントする。
【0090】また文字列ω22 が辞書DPK2 に存在す
るので文字列ω22 を新たな参照番号ω1 として置き
換えると共に、LUT(K1 )を履歴PK1 とし、次の
文字Kを入力してこの入力文字を2番目の辞書検索を行
う参照番号ω2 、第1番目の直前文字列の最終文字K1
及び第1番目の検索で一致または不一致の対象となる文
字K1 と置き換えてステップS11に進む。
【0091】更に、ステップS10にあっては文字列ω
11 が辞書DPK1 にないので参照番号ω1 を符号語c
ode(ω1 )として出力し、また文字列ω11 に新
たな参照番号を付けて辞書DPK1 に登録する。次に辞書
PK1 のアドレスindc(PK1 )を1つインクリメ
ントする。また、文字列ω22 も辞書DPK2 に存在し
ないので、参照番号ω2 を符号語code(ω2 )とし
て出力する。更に文字列ω22 に新たな参照番号を付
けて辞書に登録し、辞書DPK2 のアドレスindc(P
2 )を1つインクリメントする。
【0092】次に文字Kを参照番号ω1 とし、LUT
(K2 )を履歴PK1 に、また文字K 1 をK2 に、更に
LUT(K2 )を履歴PK2 に代入した後、次の文字K
を入力し、この入力文字Kを2番目の辞書検索を行う参
照番号ω2 、第1番目の直前文字列の最終文字K1 、及
び第1番目の検索で一致または不一致の対象となる文字
1 と置き換えてステップS11に進む。
【0093】ステップS11でデータ終了を判別した場
合にはステップS12に進み、符号語code(ω1
を出力して一連の処理を終了する。図13は図11の分
割辞書方式における本発明によるLZW符号化の辞書検
索及び登録アルゴリズムを具体的に示したもので、図8
の入力文字列の処理を例にとっている。
【0094】また、図14は図13の分割辞書方式のL
ZW符号化で作成された辞書構成を示し、符号化済みの
直前文字列の最終文字の履歴別、この実施例にあっては
最終文字そのものに対応して辞書a,辞書b,辞書cの
3つを設けている。図13の処理は次のようになる。 最初の履歴PKは、PK=a文字として検索を開始す
る。
【0095】入力データに1番目の文字aをセット
し、入力データbに2番目の文字bをセットして並列検
索を開始する。入力データ1側にある1番目の入力文字
aは初期値PK=aであることから図14の辞書aを選
択して検索する。文字aの登録番号1として存在するの
で、次の2番目の文字bを加えた文字列abを検索する
が存在しないため、文字列abを登録番号4として辞書
aに登録し、辞書aの登録番号1を符号(a)1として
出力する。
【0096】1番目の文字aの検索に成功したので、
入力データ1側に次の2番目の文字bをセットし、この
とき1つ前の文字はaであることからPK=aとして図
14の辞書aを選択して検索する。文字bは登録番号2
として存在するので、3文字目aを加えた文字列baを
検索する。しかし文字列baは存在しないため、文字列
baを登録番号5として辞書aに登録し、辞書aの登録
番号2を符号(a)2として出力する。
【0097】このとき入力データ2側については、入
力データ1側で1番目の文字aと2番目の文字bの検索
に成功しているので、3番目の文字aをセットしてお
り、1つ前の最終文字がbであることからPK=bとし
て図14の辞書bを選択して検索する。辞書bには3番
目の文字aが登録番号1として存在するので、次の4番
目の文字bを加えた文字列abを検索するが存在しない
ため、辞書bに登録番号4として文字列abを登録し、
辞書bの登録番号1を符号(b)1として出力する。
【0098】次に入力データ1側に4番目の文字bを
セットし、1つ前の文字がaであることからPK=aと
して辞書aを選択して検索する。辞書aには文字aが登
録番号1として存在することから、次の5番目の文字c
を加えた文字列bcを検索する。しかし文字列bcは存
在しないため、文字列bcを登録番号6として辞書aに
登録し、次に辞書aの登録番号2を符号(a)2として
出力する。
【0099】同時に入力データ2側には5番目の文字c
がセットされており、1つ前の文字はbであることから
PK=bとして辞書bを選択して並列検索する。辞書b
には文字cが登録番号3として存在する。そこで次の6
番目の文字bを加えた文字列bcを検索するが存在しな
い。このため文字列cbを辞書bに登録番号5によって
登録した後、文字cを示す辞書bの登録番号3を符号
(b)3として出力する。以下同様な処理を繰り返して
いく。
【0100】
【発明の効果】以上説明してきたように本発明によれ
ば、同時にアクセス可能な複数の辞書を備え、入力文字
と最長一致する登録文字列の検索を終了する以前に、次
に検索されると予想される入力文字列と最長一致する文
字列の検索を開始することで高速処理を達成することが
できる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明の実施例構成図
【図3】並列処理を可能とする本発明の辞書構成を示し
た説明図
【図4】図3の辞書構成を用いた本発明によるLZW符
号化アルゴリズムを示したフローチャート
【図5】図4の並列処理の選択条件を示した説明図
【図6】図3のLZW符号化における辞書検索と登録の
具体例を示した説明図
【図7】図6のLZW符号化で作成される辞書の説明図
【図8】図6のLZW符号化する入力文字列の説明図
【図9】図3のLZW符号化を外部ハッシュ法による辞
書検索を例にとって検索及び登録の手順を示した説明図
【図10】並列処理を可能とする分割辞書方式による本
発明の辞書構成を示した説明図
【図11】図10の分割辞書方式を対象とした本発明に
よるLZW符号化アルゴリズムを示したフローチャート
【図12】図11の並列処理の選択条件を示した説明図
【図13】図11のLZW符号化における辞書検索と登
録の具体例を示した説明図
【図14】図13のLZW符号化で作成される辞書の説
明図
【図15】従来のLZW符号化アルゴリズムを示したフ
ローチャート
【図16】従来のLZW復号化アルゴリズムを示したフ
ローチャート
【図17】図15のLZW符号化による辞書検索と登録
の具体例を示した説明図
【図18】図17のLZW符号化で作成する辞書の説明
【図19】図16のLZW復号化による辞書検索と登録
の具体例を示した説明図
【図20】従来のLZW符号化における辞書の木構成図
【図21】従来のLZW符号による文字列の符号化説明
【図22】辞書分割方式のLZW符号化における辞書の
木構成図
【図23】辞書分割方式のLZW符号による文字列の符
号化説明図
【図24】分割辞書方式によるLZW符号化アルゴリズ
ムを示したフローチャート
【図25】分割辞書方式によるLZW復号化アルゴリズ
ムを示したフローチャート
【図26】図20の辞書分割方式によるLZW符号化の
具体例を示した説明図
【図27】図26のLZW符号化で作成される辞書の説
明図
【図28】図21の辞書分割方式によるLZW復号化の
具体例を示した説明図
【図29】従来のデータ圧縮回路の構成図
【図30】従来のデータ圧縮回路による処理手順を示し
た説明図
【図31】外部ハッシュ法によるLZW符号化の辞書検
索と登録のアルゴリズムを示したフローチャート
【図32】外部ハッシュ法による辞書検索句と登録の手
順を示した説明図
【図33】図32の辞書登録と検索における辞書の木構
造を示した説明図
【符号の説明】
10:辞書弊決検索手段(辞書並列検索回路) 12:辞書並列登録手段(辞書並列登録回路) 14:分割辞書符号化手段(分割辞書符号化回路) 16−1〜16−n:辞書(辞書メモリ)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】入力文字列に最長一致する辞書に登録した
    符号化済みの部分列を検索して辞書の参照番号により符
    号化するデータ圧縮方法に於いて、 入力文字列と最長一致する辞書の登録文字列を検索を終
    了する以前に、次に検索する入力文字列と最長一致する
    登録文字列の検索を開始することを特徴とするデータ圧
    縮方法。
  2. 【請求項2】請求項1記載のデータ圧縮方法に於いて、
    次に検索する入力文字列を、現在検索している文字列の
    先頭文字の次の文字から始まる入力文字列とすることを
    特徴とするデータ圧縮方法。
  3. 【請求項3】符号化済み文字列を異なる部分列に分け
    て、該部分列を辞書に登録しておき、入力文字列に最長
    一致する前記辞書中の部分列を検索して辞書の参照番号
    により符号化するデータ圧縮装置に於いて、 符号化済み文字列を、該文字列の先頭文字別に登録する
    複数の辞書(16−1〜16−n)と、 前記複数の辞書(16−1〜16−n)から入力文字列
    と最長一致する登録文字列を検索すると共に該検索を終
    了する以前に、次の文字から始まる入力文字列と最長一
    致する登録文字列の検索を開始する辞書並列検索手段
    (10)と、 前記辞書並列検索手段(10)で検索された最長一致す
    る文字列に次の入力一文字を加えた文字列を、該文字列
    の先頭文字別に分けられた辞書に登録する辞書並列登録
    手段(12)と、 前記辞書並列検索手段(10)の検索により最長一致し
    た文字列のインデックスを符号化データとして出力する
    インデックス符号化手段(14)と、を備えたことを特
    徴とするデータ圧縮装置。
  4. 【請求項4】符号化済み文字列を異なる部分列に分け
    て、該部分列を辞書に登録しておき、入力文字列に最長
    一致する前記辞書中の部分列を検索して辞書の参照番号
    により符号化するデータ圧縮装置に於いて、 符号化済み文字列を直前文字列の最終文字の履歴に従っ
    て登録した複数の辞書(16−1〜16−n)と、 前記複数の辞書(16−1〜16−n)から入力文字列
    と最長一致する登録文字列を検索すると共に該検索を終
    了する以前に、次の文字から始まる入力文字列と最長一
    致する登録文字列の検索を開始する辞書並列検索手段
    (10)と、 前記辞書並列検索手段(10)により検索した最長一致
    する文字列に次の入力一文字を加えた文字列を該文字列
    の直前文字列の最終文字の履歴に従って分けられた辞書
    に登録する辞書並列登録手段(12)と、 前記辞書並列検索手段(10)の検索により最長一致し
    た文字列のインデックスを符号化データとしてするイン
    デックス符号化手段(14)と、を備えたことを特徴と
    するデータ圧縮装置。
  5. 【請求項5】請求項3,4記載のデータ圧縮装置に於い
    て、前記辞書並列検索手段(10)、前記辞書並列登録
    手段(12)および前記インデックス符号化手段(1
    4)の間でパイプライン処理を行うことを特徴とするデ
    ータ圧縮装置。
JP4152563A 1992-06-12 1992-06-12 データ圧縮方法及び装置 Withdrawn JPH05341953A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4152563A JPH05341953A (ja) 1992-06-12 1992-06-12 データ圧縮方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4152563A JPH05341953A (ja) 1992-06-12 1992-06-12 データ圧縮方法及び装置

Publications (1)

Publication Number Publication Date
JPH05341953A true JPH05341953A (ja) 1993-12-24

Family

ID=15543221

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4152563A Withdrawn JPH05341953A (ja) 1992-06-12 1992-06-12 データ圧縮方法及び装置

Country Status (1)

Country Link
JP (1) JPH05341953A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0997163A (ja) * 1995-09-29 1997-04-08 Nec Corp データ圧縮方法
US5936560A (en) * 1996-12-04 1999-08-10 Fujitsu Limited Data compression method and apparatus performing high-speed comparison between data stored in a dictionary window and data to be compressed

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0997163A (ja) * 1995-09-29 1997-04-08 Nec Corp データ圧縮方法
US5936560A (en) * 1996-12-04 1999-08-10 Fujitsu Limited Data compression method and apparatus performing high-speed comparison between data stored in a dictionary window and data to be compressed

Similar Documents

Publication Publication Date Title
US8659451B2 (en) Indexing compressed data
JP3241788B2 (ja) データ圧縮方式
JP3231105B2 (ja) データ符号化方式及びデータ復元方式
JP3038223B2 (ja) データ圧縮方式
JPH05341953A (ja) データ圧縮方法及び装置
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JP3350118B2 (ja) データ符号化方式及びデータ復元方式
JP3241787B2 (ja) データ圧縮方式
JP3132774B2 (ja) データ圧縮・復元装置
JP2774350B2 (ja) データ圧縮方法および圧縮データのデータ復元方法
JP3038234B2 (ja) データ圧縮装置の辞書検索方式
JP2825960B2 (ja) データ圧縮方法及び復元方法
JP3115066B2 (ja) 辞書検索方法
JPH05152971A (ja) データ圧縮・復元方法
JP3012677B2 (ja) Zl符号化方法
JP3388768B2 (ja) データ圧縮及び復元方式
JP3103172B2 (ja) 辞書検索方法
JPH09232967A (ja) データ圧縮装置及び復元装置
JP2535655B2 (ja) 辞書検索方式
JPH05341952A (ja) データ復元方法及び装置
JP2952068B2 (ja) データ圧縮及び復元方式
JPH0683574A (ja) データ圧縮及び復元方式
JP3058711B2 (ja) データ圧縮及び復元方法
JP3015483B2 (ja) データ圧縮及び復元方式
JP3100206B2 (ja) データ圧縮方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19990831