JP3103172B2 - 辞書検索方法 - Google Patents

辞書検索方法

Info

Publication number
JP3103172B2
JP3103172B2 JP32470591A JP32470591A JP3103172B2 JP 3103172 B2 JP3103172 B2 JP 3103172B2 JP 32470591 A JP32470591 A JP 32470591A JP 32470591 A JP32470591 A JP 32470591A JP 3103172 B2 JP3103172 B2 JP 3103172B2
Authority
JP
Japan
Prior art keywords
character
address
characters
input
dictionary
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
Application number
JP32470591A
Other languages
English (en)
Other versions
JPH05158652A (ja
Inventor
佳之 岡田
茂 吉田
泰彦 中野
広隆 千葉
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 JP32470591A priority Critical patent/JP3103172B2/ja
Publication of JPH05158652A publication Critical patent/JPH05158652A/ja
Application granted granted Critical
Publication of JP3103172B2 publication Critical patent/JP3103172B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ圧縮における辞書
検索方法に係わり、特に既に符号化済みの文字列を相異
なる部分文字列に分け、該部分文字列を辞書に登録して
おき、入力文字列と最長に一致する部分文字列を辞書か
ら検索し、該最長一致文字列の番号を指定して符号化す
るデータ圧縮における辞書検索方法に関する。
【0002】近年、文字コード、ベクトル情報、画像な
どの様々な種類のデータがコンピュータで扱われるよう
になっており、扱われるデータ量も急速に増加してきて
いる。大量のデータを扱う時は、データの中の冗長な部
分を省いてデータ量を圧縮することで、記憶容量を減ら
したり、速く伝送したりできるようになる。様々なデー
タを1つの方式でデータ圧縮できる方法としてユニバー
サル符号化が提案されている。
【0003】
【従来の技術】このユニバーサル符号は、情報保存型の
データ圧縮方法であり、データ圧縮時に情報源の統計的
な性質を予め仮定しないため、種々のタイプ(文字コー
ド、オブジェクトコードなど)のデータに適用すること
ができる。文書画像では、文字の輪郭等や文字間隔に類
似性があり、又、網点画像は網点周期性、網点形状の同
一性等が類似している。この類似性の持つ冗長性をユニ
バーサル符号により削減し、有効な圧縮を行うことがで
きる。尚、以下では、情報理論で用いられている呼称を
踏襲し、データの1ワード単位を文字と呼び、データが
任意ワードつながったものを文字列と呼ぶことにする。
【0004】ユニバーサル符号の代表的な方法として、
ジブ−レンペル(Ziv-Lempel)符号がある。例えば、宗像
「Ziv-Lempelのデータ圧縮法」、情報処理、Vol.26,No.
1,1985年参照。このZiv-Lempel符号では、ユニバーサ
ル型と、増分分解型(Incremental parsing) の2つの
アルゴリズムが提案されており、ユニバーサル型アルゴ
リズムを用いた実用的な方法として、LZSS符号(T.
C. Bell,"Better OMP/LText Compression", IEEE Tran
s. on Commun., Vol. COM-34, No.12, Dec.1986)があ
り、又、増分分解型アルゴリズムを用いた実用的な方法
として、LZW(Lempel- Ziv- Welch)符号がある(T.A.
Welch, " A Technique for High-Performance Data Co
mpression" , Computer, June 1984)。これらの符号の
内、高速処理できることと、アルゴリズムの簡単さから
LZW符号が記憶装置のファイル圧縮などで使われるよ
うになっている。
【0005】LZW符号化 LZW符号化においては、書き換え可能な辞書を設け、
入力文字列を相異なる文字列に分け、この文字列を出現
した順に番号を付けて辞書に登録すると共に、現在入力
している文字列を辞書に登録してある最長一致文字列の
辞書番号だけで表して符号化する。
【0006】図16はLZW符号化説明図、図17は辞
書構成の説明図、図18はLZW符号化処理の流れ図で
ある。尚、説明を簡単にするために、a,b,c3文字
からなる文字列をLZW符号化してデータ圧縮するもの
とする。予め、全文字につき一文字からなる文字列
(a,b,c)に登録番号を付して辞書に初期登録する
と共に、辞書の登録数Nを文字種数Mとする(M→
N)。・・ステップ101
【0007】かかる状態で、最初の文字Kを入力し、該
文字の登録番号を参照番号ωとし、これを語頭文字列(p
refix string)とする(ステップ102)。ついで、入
力データの次の文字Kを読み込み(ステップ103)、
ステップ102で求めた語等文字列ωにステップ103
で読み込んだ文字Kを加えた文字列(ωK)が現在の辞
書にあるか否かを検索する(ステップ104)。
【0008】文字列(ωK)が辞書に存在すれば、文字
列(ωK)をωに置き換え(ステップ105)、しかる
後、入力データが終了したか判断し(ステップ10
6)、データが終了してなければステップ103に戻り
以降の処理を繰返し、文字列(ωK)が辞書から捜せな
くなるまで最大一致長文字列の検索を続ける。一方、ス
テップ106において、入力データが終了していれば、
参照番号ωを符号語 code(ω)として出力して(ステ
ップ107)、符号化処理を終了する。
【0009】最長一致文字列の検索が続行して、ステッ
プ104において、文字列(ωK)が辞書に存在しなく
なれば、参照番号ωを符号語 code(ω)として出力
し、又、文字列(ωK)に新たな登録番号Nを付加して
辞書に登録し、更にステップ103で読み込んだ文字K
の登録番号を参照番号ωに置き換えると共に、辞書アド
レスNを1インクリメントする(ステップ108)。次
いで、ステップ106により入力データが終了したか判
断し、判断結果に応じて以降の処理を繰り返す。
【0010】図16及び図17を参照してLZW符号化
を具体的に説明すると、以下のようになる。すなわち、
図16の入力データを左から右に向けて1文字づつ読み
込む。最初の文字aを読み込んだ時、辞書にはaの他に
一致する文字列はないから、aの登録番号「1」(参照
番号ω=1)を符号語(code(ω))として出力する。
そして、拡張した文字列abに登録番号4を付けて辞書
に登録する。実際の登録は文字列「1b」の形となる。
続いて、2番目の文字bが入力文字列の先頭になる。辞
書にはbの他に一致する文字列がないので、bの登録番
号(参照番号)2を符号語として出力し、拡張した文字
列baを実際には2aの形で登録番号5を付けて辞書に
登録する。
【0011】以上により、3番目の文字aが入力文字列
の先頭になる。辞書には先頭文字aが存在するから、該
文字の登録番号1に次の文字bを付した文字列「1b」
が存在するか調べる。文字列「1b」が存在するから、
該文字列の登録番号4に次の文字cを付した文字列「4
c」が存在するか調べる。文字列「4c」は存在しない
から、最長一致文字列「1b」の登録番号「4」を符号
語として出力し、拡張した文字列「4c」に登録番号6
を付して辞書部登録し、以後同様に符号化と辞書登録を
繰り返して全入力文字のLZW符号化処理を実行する。
【0012】図19はLZW復号化処理の流れ図であ
り、復号化処理では、符号化の逆の操作が行われる。す
なわち、復号化に際しては、符号化と同様に、全文字に
つき一文字からなる文字列(a,b,c)に登録番号を
付して辞書に初期登録すると共に、辞書の登録数Nを文
字種数Mとする(M→N)。・・ステップ201 ついで、最初の符号CODEを読み込み、該符号CODEをOLDc
odeとする。又、最初の符号は既に辞書に登録された一
文字の登録番号のいずれかに該当することから、入力符
号CODE(=登録番号)が示す文字Kを出力する。又、出力
した文字Kは後の例外処理のためにcharとして設定す
る。・・以上ステップ202
【0013】しかる後、次の符号CODEを読み込んでNEWc
odeとしてセットすると共に(ステップ203)、符号CO
DE(=登録番号)が辞書に定義(登録)されているか否かを
チェックする(ステップ204)。通常、入力した符号C
ODE(=登録番号)は前回までの処理で辞書に登録されて
いるから、ステップ204において「NO」となるか
ら、次に、符号CODE(=登録番号)が指示する辞書の登録
文字列が(ωK)か判断する。すなわち、符号CODEが指
示する辞書の登録文字列が(ωK)のように、参照番号
ωと文字Kの結合文字列であるか判断する(ステップ2
05)。
【0014】参照番号ωと文字Kの結合文字列であれ
ば、文字Kを一時的にスタックし、参照番号ωの符号語
code(ω)(実際にはcode(ω)=ω)を新たなCODEと
し、かつ文字数Cを1カウントアップし(ステップ20
6)、ステップ205に戻る。以後、ステップ205、
206の処理をCODEが示す登録文字列が一文字に至るま
で再帰的に繰り返す。
【0015】ステップ205において、CODEが示す文字
列が一文字の場合には、すなわち、符号CODEが指示する
辞書の登録文字列が(K)の場合には、Kを出力し、し
かる後、スタックしたC個の文字列をLIFO(Last i
n Fast Out)形式でポップアップして出力する。又、前
回の復号化において使用した符号OLDcodeに、今回復号
した文字列の先頭文字Kを付加した文字列(OLDcode,
K)を登録番号Nを付して辞書に登録し、Nを1インク
リメントする(N+1→N)。更に、復号文字列の先頭
文字Kをcharとし、かつNEWcodeをOLDcodeとする。・・
以上ステップ207
【0016】以後、符号入力が終了したか判断し(ステ
ップ208)、終了してなければステップ203に戻り
次の符号を読み込んで復号処理を繰り返す。ところで、
符号化処理においては、ある文字列の符号化と、該文字
列に次の先頭文字を付加した文字列の辞書登録とを同時
に行うため、次の符号化処理において直前に符号化した
文字列の符号語を使用できる。しかし、復号化処理にお
いては、直前に復号した文字列に、今回復号した文字列
の先頭文字列を付加した文字列を辞書登録するため、辞
書登録が符号化処理に比べて1回遅れる。このため、符
号化処理において、直前に符号化した文字列の符号語を
使用すると、復号化処理において、該符号語が登録(定
義)されていない場合を生じる。この場合がステップ2
04においてCODEが定義されていない状態になり、「Y
ES」となる。
【0017】例えば、図20に示すように符号化に際し
て、文字列「a・・・z」に対してOLDcodeを出力する
と共に、文字列「a・・・za」をNEWcodeとして辞書
登録し、次の文字列「a・・・za」をNEWcodeで出力
し、文字列「a・・・zab」を辞書登録する。さて、
復号側で符号語NEWcodeを読み込んだ時、該符号語は復
号側で辞書登録されていないので、復号ができない。し
かし、NEWcodeとOLDcodeを比較すると、以下の関係 NEWcodeの文字列=OLDcodeの文字列+OLDcodeの文字列
の先頭文字(char) がある。このため、ステップ204で「NO」となれ
ば、セットされているcharをスタックすると共に、OLDc
odeをCODEとみなし、かつ、OLDcodeにcharを付加した文
字列をNEWcodeとし(ステップ209)、以後CODEを用い
てステップ205以降の処理を行う。
【0018】図21を参照して復号化処理を具体的に説
明すると以下のようになる。最初の入力符号は「1」で
あり、一文字a,b,cについては既に登録番号1、
2、3として辞書登録されているから(図17と同
様)、辞書の参照により符号「1」に一致する登録番号
の文字列aに置き換えて出力する。次に、符号「2」に
ついても同様にして文字bに置き換えて出力する。この
時、前回処理した符号「1」と今回復号した最初の一文
字bとを組み合わせた「1b」に新たな登録番号4を付
加して辞書に登録する。
【0019】3番目の符号「4」は辞書の検索により、
「1b」から「ab」と置き換えて文字列「ab」を出
力する。同時に、前回処理した符号「2」と今回復号し
た1番目の文字aとを組み合わせた文字列「2a(=a
b)」に新たな登録番号5を付加して辞書に登録する。
以下、同様に、復号処理を繰り返す。尚、図19のステ
ップ209の例外処理は、第6番目の入力符号「8」の
復号で生じる。符号「8」は復号時に辞書に定義されて
おらず、復号できない。この場合には、前回処理した符
号「5」に前回復号した文字列「ba」の最初の一文字
bを加えた文字列「5b」を求め、更に「2ab」、
「bab」と置き換えられて出力される。そして、前回
の符号語「5」に今回復号した文字列の文字bを加えた
文字列「5b」に登録番号「8」を付加して辞書登録す
る。
【0020】以上のように、ユニバーサル符号は、符号
化対象の性質が未知でも、それを学習しながら符号化し
てゆく圧縮法であり、既出のデータ列を辞書に登録して
行き、同じデータ列が表れた時には、その登録番号を符
号化データ(符号語)として送出するというシンプルな
ものである。しかし、図18の流れ図に従って符号化す
ると、1つの文字列を辞書検索する際、最悪、辞書全体
をサーチしなければならず、このため、符号化処理に時
間がかかる問題があった。そこで、従来は、辞書検索に
外部ハッシュ法(open hashingまたはchaining)を用い
て処理速度を上げている(例えば、オーム社刊、情報処
理学会編、情報処理ハンドブック参照)。
【0021】外部ハッシュ法 文字列からなる集合Sを考えた時、集合Sにおける文字
列xの格納位置のアドレスを文字列xより直接計算でき
る仕組になっていると高速の検索ができる。これを実現
するのがハッシュ法である。記憶場所(ハッシュ表)に
0〜(m-1)までのアドレスが付加されているとすると、
ハッシュ法では、関数 h:S→[0,1,2,・・・(m-1)] を1つ定めて、Sの文字列xのアドレスをh(x)で求め
る。関数hをハッシュ関数、値h(x)をxのハッシュ・
アドレスといっている。ハッシュ法は、通常、文字列の
集合Sの大きさがアドレス数mに比べて遥かに大きい場
合に用いられる。そこで、ハッシュ関数hをどのように
選んだとしても、集合Sにおける相異なる文字列x1
2に対してh(x1)=h(x2)となる場合が起こり得る。
これを衝突と呼び、衝突に対する対策の一つとして外部
ハッシュ法が用いられる。外部ハッシュ法は、図22に
示すように、ハッシュアドレスi毎に連結リスト(name
next)LSTを用意し、h(x)=iとなるxはその連結リ
ストの先頭から順に格納する。尚、同じハッシュアドレ
スを有するそれぞれのリストはバケット(bucket)と呼ば
れる。
【0022】図23はLZW符号の辞書作成及び辞書検
索に外部ハッシュ法を採用した時のハッシュ表(辞書)
のデータ構造であり、ある文字列xにより指定されるハ
ッシュアドレスiに、文字列xに続く文字K(イクステ
ンションextension)と、文字列xに続く文字K以外の文
字を格納するアドレス(nextアドレス)と、文字Kに更
に続く文字の格納アドレス(firstアドレス)が記憶さ
れるようになっている。尚、firstアドレスは図22の
索引dictionaryに対応し、nextアドレスは連結リスト(n
ame next) に対応する。
【0023】図24は外部ハッシュ法による辞書構造説
明図で、(a)は従来のLZW符号化による辞書、(b)は外
部ハッシュ法による辞書、(c)は外部ハッシュ法を用い
た辞書の木構造図であり、それぞれ図16に示す順序
で、a,b,cの3文字よりなる入力文字列が発生した
場合である。図24(b)のアドレスiにはfirst欄、next
欄、extension欄が対応付けされており、図23で示し
た構造でデータを記憶するようになっている。すなわ
ち、アドレスiのextension欄にはアドレスiを指示す
る文字列xに連結する文字Kが書き込まれ、next欄には
文字列xに連結する文字K以外の文字を格納するアドレ
スが書き込まれ、first欄には文字Kに更に連結する文
字の格納アドレス(firstアドレス)が記憶されるよう
になっている。例えば、アドレス4の文字bに着目する
と、該アドレス4はアドレス1の文字(1文字からなる
文字列)aのfirstアドレスにより指示され、アドレス
4のextension欄には文字列aに連結する文字bが書き
込まれ、next欄には文字列aに連結する別の文字aを格
納するアドレス10が書き込まれ、first欄には文字b
に更に続く文字cのアドレス6が書き込まれている。
【0024】初期時、アドレス1、2、3のextension
欄には全1文字列a,b,cが初期登録され、その他の
欄は「空(=0)」になっており、以後、後述する外部ハ
ッシュ法による符号処理が行われ、図24(c)に示す木
構造状に辞書(図24(b))が作成される。尚、(c)におい
て、□で囲んだ番号はアドレスである。以上により、例
えば、アドレス1の文字aを参照すると、該文字aに
は、アドレス4の文字bがfirst方向に連結し、該文字
bにはfirst方向に更にアドレス6の文字cが連結し、
更に、前記文字aにはアドレス10の文字aが連結し、
アドレス10の文字aには順次アドレス11、12の文
字aが順次連結していることが示される。また、アドレ
ス2の文字bに着目すると、該文字bにはアドレス5の
文字aがfirst方向に連結し、以後、アドレス8、9の
文字b,aが順次連結していることが示される。更に、
アドレス3の文字cに着目すると、該文字cにはアドレ
ス7の文字bがfirst方向に連結していることが示され
る。
【0025】外部ハッシュ法による符号化処理 図25は外部ハッシュ法によるLZW符号化処理の流れ
図である。この符号化処理においては、外部ハッシュ法
により参照番号iの文字列に一文字を付加した文字列の
アドレスをハッシュアドレス(索引)として引く。連結
リストには、参照番号iの文字列に付加される文字を格
納するfirst,nextアドレスが格納してあり、該文字と入
力文字Kの一致を検査し、不一致ならば逐次連結リスト
を手繰ることによって、これまで出現した全ての一文字
付加文字列を検索することができる。もし、バケット中
に付加した文字列が存在しない場合には、最終的にリス
トの連結アドレスから0が得られ、該当する文字列が登
録されていないことを知ることができる。
【0026】予め、全文字につき一文字からなる文字列
(a,b,c,・・・)を、辞書アドレス1〜Mのextension欄に初
期登録すると共に(Mは文字種数)、辞書の先頭アドレ
スnを文字種数M+1とする(M+1→n)。また、最
初の文字Kを入力して該文字を記憶するアドレス(参照
番号)をiとし、これを語頭文字列(prefix string)と
する。更に、辞書における全アドレスのfirst欄の内容f
irst[1,NMAX]、next欄の内容next[1,NMAX]及びアドレス
M+1〜NMAXのextension欄の内容を全て0に初期
化する。・・ステップ301
【0027】かかる状態で、次の文字Kを入力し(ステ
ップ302)、ωにiを代入すると共に(i→ω、Kの
直前までの文字列の参照番号をωとする)、j=0とす
る(ステップ303)。また、現アドレスiの候補文字
ext(i)にfirst方向に連結する候補文字を格納するアド
レスを示すデータfirst(i)をiとする(ステップ30
4)。尚、現アドレスiの候補文字ext(i)にfirst方向
に連結する文字がなければfirst(i)=0であり、i=0
となる。
【0028】ついで、i=0であるか判断し、換言すれ
ば、first方向に連結する候補文字が存在するかチェッ
クし(ステップ305)、存在しなければステップ30
3で保存した参照番号(アドレス)ωを符号語 code
(ω)として出力する(ステップ306)。
【0029】しかる後、i=nとすると共に、nを1イ
ンクリメントし(n+1→n)、更にステップ302で
入力した文字Kをアドレスiのexstension欄に書き込む
(K→ext(i))。すなわち、続き文字Kを辞書登録する
(ステップ307)。次いで、j=0であるかチェック
し(ステップ308)、j=0であれば、i→first
(ω)とする(ステップ309)。これにより、Kの直前
に入力した文字を記憶するアドレス(=Kの直前に入力
した文字迄の参照番号ωが指示するアドレス)のfirst欄
にi(今回の文字Kを格納するアドレス)が書き込まれ
ることになる。
【0030】以後、ステップ302で入力した文字Kの
アドレスをiとし(ステップ310)、データが終了し
たかチェックし(ステップ311)、終了していればi
→ωとした後、ωを符号語 code(ω)として出力して
(ステップ312)、符号化処理を終了し、データが終
了してなければステップ302に戻り以降の処理を繰り
返す。
【0031】一方、ステップ305においてi≠0であ
れば、換言すればfirst方向に連結する候補文字が存在
すれば、該文字(アドレスiのextension欄に書き込ま
れている文字ext(i))がステップ302で入力した文字
Kと一致するか調べる(ステップ313)。一致してい
ればステップ311に飛び、データ終了していれば、i
→ωとした後、ωを符号語 code(ω)として出力して
(ステップ312)、符号化処理を終了し、データが終
了してなければステップ302に戻り、更に次の文字を
入力して以降の最長一致文字列の検索処理を繰り返す。
【0032】ステップ313において、first方向に連
結する候補文字がステップ302で入力した文字Kと一
致してなければ、jにiを代入すると共に、アドレスi
のnext欄に書き込まれているアドレスデータnext(i)を
新たなiとし(ステップ314)、ステップ305に戻
る。尚、next方向に連結する文字がなければアドレスi
のnext欄には0が書き込まれており、i=0となる。
【0033】以後、i≠0であればステップ313に移
行し同様の最長一致文字列の検索処理が繰り返えされ、
最早一致文字が存在しなくなるとステップ305におい
てi=0となり、ステップ303で保存した参照番号
(アドレス)ωを符号語 code(ω)として出力し、前
述の処理を繰り返す。尚、ステップ314の処理の直後
のステップ305でi=0が判断されると、ステップ3
08においてj≠0となり、i→next(ω)とされる(ス
テップ315)。これにより、Kの直前に入力した文字
迄の参照番号ωが指示するアドレスのnext欄にi(今回
の文字Kを格納するアドレス)が書き込まれることにな
る。
【0034】以上要約すれば、新たな文字Kを入力した
時、それ迄の文字列に連結する候補文字をfirst方向に
求め、見つかればfirst方向に同様に求めて行き、見つ
からなくなればnext方向に調べ、見つかれば、再びfirs
t方向に調べて行き、以後同様な処理を繰り返して見つ
からなくなった時の参照番号iをωとして最長一致文字
列の符号語code(ω)を出力すると共に、アドレスiに最
新の入力文字についてのfirst, next, extension等を登
録するものである。以上の流れ図に従って、図16の最
上段に示す文字列を符号化出力してゆくと、最下段の如
く文字列が辞書登録されて行き、図26、図27、図2
8の斜線で示すように辞書登録量が増加して行く。尚、
図26(a)は初期化された後の状態である。
【0035】図29は従来の外部ハッシュ法による辞書
検索回路の構成図である。MPU(マイクロ・プロセッ
サ・ユニット)1は入力文字Kを読み込んで一致検査部
2のレジスタ2aに格納すると共に、辞書メモリ3より
候補文字K′とそれに繋がるfirstアドレスfωとnext
アドレス nωを読み出し、それぞれ読み込み部4のレ
ジスタ4a,4b,4cにラッチする。一致検査部2の
比較回路2bは入力文字Kとレジスタ4aにラッチされ
た候補文字K′が一致するか比較検査を行う。一致しな
い場合には、コントローラ5をしてマルチプレクサ(M
PX)4dにより、レジスタ4cにラッチされているne
xtアドレスnωを選択させる。これにより、MPU1は
nextアドレスnωで辞書検索を行い、新たな候補文字
K′とそれに繋がるfirstアドレスfωとnextアドレス
nωを読み出し、それぞれ読み込み部4のレジスタ4
a,4b,4cにラッチして比較検査を行う。
【0036】一方、比較回路2bにおいて、入力文字K
と候補K′が一致した場合には、コントローラ5をして
マルチプレクサ4dにより、レジスタ4bにラッチされ
ているfirstアドレスfω選択させる。これにより、M
PU1はfirstアドレスfωで辞書検索を行い、新たな
候補文字K′とそれに繋がるfirstアドレスfωとnext
アドレスnωを読み出し、それぞれ読み込み部4のレジ
スタ4a,4b,4cにラッチすると共に、次の入力文
字Kを読み取ってレジスタ2aに格納し、以後上記の比
較検査を行う。
【0037】以後、上記処理が行われ、比較回路2bで
一致が取れず、しかも、マルチプレクサ4dの出力が0
となれば、換言すれば連結検出部6において検索すべき
firstアドレスfωとnextアドレスnωがもうないと確
認されると、最長一致文字列の検索が終了し、この時点
で辞書検索をストップし、以後次の入力文字に対して最
長一致文字列の検索を行う。
【0038】
【発明が解決しようとする課題】以上のように、外部ハ
ッシュ法によるLZW符号化処理においては、ある文字
列の末尾に連結する候補文字K′のアドレスが指定さ
れ、該アドレスに候補文字K′とfirstアドレスとnext
アドレスが格納されているため、従来の外部ハッシュ法
によらないLZW符号化に比べて辞書検索を高速に行え
る利点がある。しかし、上記外部ハッシュ法による辞書
検索では、1度の辞書アクセスに対して1つの候補文字
K′と1組のfirstアドレスとnextアドレスしか読み出
すことができないため、候補文字が多い場合検索一致に
時間が掛かる問題がある。
【0039】以上から本発明の目的は、外部ハッシュ法
による辞書検索を高速に行える辞書検索方法を提供する
ことである。本発明の別の目的は、外部ハッシュ法によ
るLZW符号化の辞書検索において、一度の辞書検索に
より複数の候補文字を読み出し、複数の候補文字と複数
の入力文字とを一度に照合して辞書検索を高速に行える
辞書検索方法を提供することである。
【0040】本発明の更に別の目的は、一度の辞書検索
により複数の候補文字と共に、複数のアドレスを読み出
し、複数の候補文字と複数の入力文字との比較照合結果
(全部一致、先頭不一致、一部一致等)に基づいて次に
参照すべき候補文字を直ちに前記所定アドレスから読み
出して比較照合して辞書検索を高速に行える辞書検索方
法を提供することである。
【0041】
【課題を解決するための手段】図1は本発明の原理説明
図である。11は検索済文字列に連結する複数の候補文
字が検索可能となるように複数のデータ要素を前記所定
文字が指定するアドレスに格納して符号化済みの部分文
字列を記憶する辞書メモリ、12は入力文字列を読み込
んだり、辞書メモリより候補文字等を読み出したり、新
規文字列を辞書メモリに登録するMPU(プロセッ
サ)、13は辞書メモリより同時に読み出した複数のデ
ータを記憶するレジスタ部、14は複数の入力文字と複
数の候補文字との一致照合を行う比較照合部、15は比
較結果に基づいて次の候補文字のアドレスを選択するア
ドレス選択部(マルチプレクサMPX)である。前記複
数のデータ要素は、例えば、 (1) 検索済文字列に連結する第1文字と、(2) 第1文字
迄の文字列の番号(ω1)と、(3) 前記検索済文字列に
連結する文字であって第1文字とは別の文字の格納アド
レス(next1)と、(4) 第1文字に連結する第2文字と、
(5) 第2文字までの文字列の番号(ω2)と、(6) 前記
第1文字と連結する文字であって第2文字とは別の文字
の格納アドレス(next2)と、(7) 前記第2文字に連結す
る第3文字の格納アドレス(first2)と、(8) 第1、第2
文字のうち幾つ記憶されているかを示すフラグ(flag)を
有している。
【0042】
【作用】検索済文字列に連結する複数の候補文字が検索
可能となるように複数のデータ要素を前記検索済文字列
が指定する辞書メモリ11のアドレスに記憶して辞書を
作成し、最長一致文字列の検索に際してMPU12は検
索済文字列以降の複数の入力文字を読み込むと共に、検
索済文字列に連結する複数の候補文字を含むデータ要素
を辞書メモリ11より一括して読み出してレジスタ部1
3に格納する。比較照合部14は、複数個の候補文字と
複数の入力文字とを比較して一致照合を行い、一致する
場合には、次の複数の入力文字を読み込むと共に、次の
複数の候補文字を含むデータ要素を辞書メモリから読み
出してレジスタ部13に格納し、以後同様の最長一致検
索処理を続行する。このように、一度の辞書検索により
複数の候補文字を読み出し、複数の候補文字と複数の入
力文字とを一度に照合して辞書検索を行うようにしたか
ら、辞書検索を高速に行うことができる。
【0043】また、比較照合により、全て一致した場合
には、候補文字を含む所定文字列における以降の複数の
候補文字を前記データ要素に含まれるfirstアドレスが
示す辞書メモリから読み出して、次の複数の入力文字と
の一致照合を行い、複数の候補文字のうち第1番目の入
力文字が一致する場合には、該第1番目の入力文字から
分岐する別の文字列の複数の候補文字を、前記データ要
素に含まれるnextアドレスが示す辞書メモリから読み出
して、複数の入力文字との一致照合を行う。このよう
に、一度の辞書検索により複数の候補文字と共に、複数
のアドレスを読み出し、複数の候補文字と複数の入力文
字との比較照合結果(全部一致、先頭不一致、一部一致
等)に基づいて次に参照すべき候補文字を直ちに所定の
アドレスから読み出して比較照合するから、辞書検索を
高速に行うことができる。
【0044】更に、前記データ要素は、検索済文字列に
連結する第1文字と、第1文字迄の文字列の番号
(ω1)と、前記検索済文字列に連結する文字であって
第1文字とは別の文字の格納アドレス(next1)と、第1
文字に連結する第2文字と、第2文字までの文字列の番
号(ω2)と、前記第1文字と連結する文字であって第
2文字とは別の文字の格納アドレス(next2)と、前記第
2文字に連結する第3文字の格納アドレス(first2)と、
第1、第2文字のうち幾つ記憶されているかを示すフラ
グ(flag)を有するようにすれば、2つの入力文字と2つ
の候補文字である前記第1、第2文字の一致照合に際し
て、第1入力文字と第1候補文字が異なる場合にはアド
レス(next1)に基づい次のデータ要素を読み出して一致
照合を行い、第1入力文字と第1文字が一致して第2入
力文字と第2候補文字が異なる場合には、アドレス(ne
xt2)に基づいて次のデータ要素を読み出し、該第2入力
文字以降の2つの入力文字と2つの候補文字との一致照
合を行い、2つの入力文字と前記第1、第2候補文字が
共に一致する場合には、アドレス(first2)に基づいて次
の2つの入力文字に対するデータ要素を読み出して最長
一致検索処理を続行でき、辞書検索を高速に行うことが
できる。
【0045】また、前記データ要素は、該検索済文字列
に連結する第1文字と、第1文字迄の文字列の番号(ω
1)と、前記検索済文字列に連結する文字であって第1
文字とは別の文字と該文字迄の番号(ω1)を格納する
アドレスを指定するデータ(listn1)と、第1文字に連
結する第2文字と、第2文字までの文字列の番号
(ω2)と、前記第1文字と連結する文字であって第2
文字とは別の文字と該文字迄の番号(ω1)を格納する
アドレスを指定するデータ(listn2)と、前記第2文字
に連結する第3文字と該第3文字迄の番号(ω1)を格納
するアドレスを指定するデータ(listf2)と、第1、第2
文字のうち幾つ記憶されているかを示すフラグ(flag)を
有するようにすれば、2つの入力文字と2つの候補文字
である前記第1、第2文字の一致照合に際して、第1入
力文字と第1候補文字が異なる場合にはアドレス(listn
1)に基づい次のデータ要素を読み出して一致照合を行
い、第1入力文字と第1候補文字が一致して第2入力文
字と第2候補文字が異なる場合には、アドレス(list
n2)に基づいて次のデータ要素を読み出し、該第2入力
文字以降の2つの入力文字と2つの候補文字との一致照
合を行い、2つの入力文字と前記第1、第2候補文字が
共に一致する場合には、アドレス(listf2)に基づいて次
の2つの入力文字に対するデータ要素を読み出して最長
一致検索処理を続行でき、辞書検索を高速に行うことが
できる。
【0046】
【実施例】
(a) 本発明の第1の実施例 図2は本発明に係わる辞書メモリの1つのアドレスに格
納されるデータの構造説明図である。ある文字列xによ
り指定されるアドレスi(=ω1)には、 (1) 文字列xの最終文字に連結する第1文字(ext1)と、
(2) 第1文字迄の文字列の参照番号(ω1)と、(3) 前
記最終文字に連結する文字であって第1文字とは別の文
字の格納アドレス(next1)と、(4) 第1文字に連結する
第2文字(ext2)と、(5) 第2文字までの文字列の参照番
号(ω2)と、(6) 前記第1文字と連結する文字であっ
て第2文字とは別の文字の格納アドレス(next2)と、
(7) 前記第2文字に連結する第3文字の格納アドレス(f
irst2)と、(8) 第1、第2文字のうち幾つ記憶されてい
るかを示すフラグ(flag)が記憶されて、辞書が作成され
る。
【0047】図3は本発明による辞書メモリの内容説明
図であり、(a)は符号化説明図、(b)は本発明の辞書であ
り、辞書メモリの各アドレスにはにはflag欄、first
2欄、next1欄、next2欄、ext1欄、ext2欄、ω1欄、ω2
欄が設けられている。図3(a)の上段に示す順序でa,
b,cの3文字よりなる入力文字列が発生すると、後述
する符号化処理により符号語が中段に示すように出力さ
れ、又、下段に示すように文字列が辞書登録される。こ
の辞書登録において、文字列は図2のデータ構造で辞書
メモリの各アドレスに登録され、その内容は図3(b)に
示すようになり、図2の表記法により表現すると図3
(c)に示す木構造状になる。
【0048】例えば、アドレス1の文字a(ext1)を参
照すると、該文字aにはfirst方向に文字b(ext2)が連
結し、該文字bには更にfirst方向にアドレス6(first
2アドレス)に格納された文字が連結し、又、前記文字
aにはアドレス10(next2アドレス)に格納された文字
が連結することが示され、文字aまでの文字列(1文字
列a)の参照番号(=1)がω1欄に格納され、文字b
迄の文字列(2文字列ab)の参照番号(=4)がω2
欄に格納されていることが示される。
【0049】又、アドレス1のfirst2欄で指示された第
6アドレスのext1欄には、アドレス1のext2欄の文字b
(2文字列abの最終文字)に連結する文字cが書き込
まれ、該文字cにはfirst方向に文字が連結していない
ことが示され、又、文字cまでの文字列(3文字列ab
c)の参照番号(=6)がω1欄に格納されていること
が示される。
【0050】更に、アドレス1のnext2欄で指示された
第10アドレスのext1欄には、アドレス1のext1欄の文
字a(1文字列aの最終文字)に連結する文字a(2番
目のa)が書き込まれ、該文字aにはfirst方向に文字
a(3番目のa)が連結し、又、該文字aには更にfirs
t方向にアドレス12(first2アドレス)に格納された
文字が連結していることが示され、2番目のaまでの文
字列(2文字列aa)の参照番号(=10)がω1欄に
格納され、3番目のa迄の文字列(3文字列aaa)の
参照番号(=11)がω2欄に格納されていることが示
される。以下同様に、アドレス2の文字b,アドレス3
の文字cに連結する文字列が辞書登録される。
【0051】図4及び図5は本発明による符号化処理の
流れ図である。予め、辞書メモリのアドレス1〜Mのex
t1欄(ext1[1,M])に文字コード(a,b,c,・・・)を初期登録
すると共に(Mは文字種数)、ω1欄(ω1[1,M])に文
字コードに対応するアドレス (参照番号)を初期登録
し、更に、flag欄(flag[1,M])に1-0(ext1欄のみに文
字が登録されいることを示す)を初期登録する。
【0052】又、辞書の先頭アドレスnをM+1とする
(M+1→n)。更に、辞書における全アドレスの (1)next1欄の内容next1[1,NMAX]、(2)next2欄の内容nex
t2[1,NMAX]、(3)first2欄の内容first2[1,NMAX]、(4)ex
t2欄の内容ext2[1,NMAX]、(5)ω2欄の内容ω2[1,NMAX]
を全て0に初期化すると共に、アドレスM+1〜NMAX
の (6)ext1欄の内容ext1[M+1,NMAX]、(7)ω1欄の内容ω1[N
+1,NMAX]を全て0に初期化し、又、(8)flag欄flag[N+1,
NMAX]を全て0-0(ext1欄、ext2欄に文字が登録されいな
いことを示す)に初期化する。
【0053】更に、検索切り替えパラメータT、登録切
り替えパラメータU及び入力文字数選択パラメータSを
それぞれ0にする。尚、T=0の場合には次の1つの入
力文字を読むことを、T=1の場合には次の2つの入力
文字を読むことを意味し、S=1の場合には既に2つの
入力文字を読み込んであることを意味し、U=0の場合
には辞書登録時に文字をext1欄に登録することを、U=
1の場合にはext2欄に登録することを意味する。
【0054】又、最初の入力文字を第1文字K1を入力
して該文字を記憶するアドレス(参照番号)をiとし、
これを語頭文字列(prefix string)とする。・・以上ス
テップ401 かかる状態で、ωにiを代入すると共に(i→ω、第1
文字K1までの文字列の参照番号をωとする)、j=0
とする(ステップ402)。ついで、S=0かチェック
し(ステップ403)、S=0であればT=0であるか
チェックし(ステップ404)、T=0であれば、次の
入力文字を第2文字K2として入力する(ステップ40
5)。
【0055】しかる後、i=0であるかチェックする
(ステップ406)。i≠0であれば、第iアドレスの
ext1欄の第1候補文字ext1(i)が第1文字K1と一致する
かチェックし(ステップ407)、一致すればT=0と
すると共に(0→T)、第2文字K2を次の第1文字K1
とし(K2→K1)、更にiをωに代入すると共に(i→
ω)、j=0とする(ステップ408)。尚、一致しな
い場合には後述するステップ435に飛ぶ。
【0056】ついで、第iアドレスのflag(i)が1-0か、
すなわち、first方向に連結する文字が存在するかチェ
ックする(ステップ409)。first方向に連結する文字
が存在しなければ、最長一致文字列の検索を終了して以
後ステップ410以降の処理により符号語出力と辞書登
録処理を行う。一方、first方向に連結する文字が存在
すれば、以後ステップ431以降の処理により最長一致
文字列の検索を続行する。
【0057】ステップ407において、flag(i)が1-0で
あれば、第2文字K2をext2欄に格納するためにU=1
とし(ステップ410)、ついで、T=0かチェック
し、T=0であればステップ408で保存した第1文字
1迄の文字列の参照番号ωを符号語 code(ω)として
出力する(ステップ412)。・・・第1入力文字K1
のみが辞書の第1候補文字と一致する場合
【0058】符号語を出力後、iをpに代入し、又、n
をiに代入し、更にnを1インクリメントし(ステップ
413)、U=0であるかチェックする(ステップ41
4)。尚、第1入力文字K1のみが辞書の第1候補文字
と一致し、かつ、flagが1-0の場合、ステップ410で
U=1とされるから「NO」となり、その他の場合には
U=0であり「YES」となる。
【0059】ステップ414でU=1であれば、第2文
字K2を第pアドレス(今回の第1文字K1が記憶されて
いたアドレス)のext2欄に書き込み(K2→ext2(p))、そ
のflag欄に1-1を書き込む(1-1→flag(p))。これによ
り、今回の第1文字K1に第2文字K2が連結しているこ
とが登録される。・・・ステップ415 ついで、iを第pアドレス(今回の第1文字K1が記憶さ
れていたアドレス)のω2欄に書き込み(i→ω2(p))、
かつ、入力文字数選択パラメータSを0にする(ステッ
プ416)。これにより、第2文字K2迄の文字列の参
照番号がω2欄に登録されたことになる。
【0060】以後、次の第1文字K1(今回の第2文字
である)の参照番号をiにし、又、iをωに代入し、更
に、T,Uを0にし(ステップ417)、しかる後、デ
ータが終了したチェックする(ステップ418)。デー
タが終了してなければステップ402に戻り以降の処理
を繰り返す。一方、データが終了していれば、T=0か
チェックし(ステップ419)、T=0であればステッ
プ417で保持した最終文字のωを符号語 code(ω)
として出力して(ステップ420)、符号化処理を終了
する。
【0061】データが終了しておらなければ、ステップ
402以降の処理が行われる。この場合、ステップ40
9においてflag(i)≠1-0でなければ、first方向に連結
する第2候補文字がext2欄に存在するから、該文字ext2
(i)が第2文字K2に一致するかチェックする(ステップ
431)。一致しなければ、すなわち、第2候補文字が
一致しなければ、iをjに代入すると共に、T=1と
し、かつ、第1候補文字に連結する別の候補文字の格納
アドレスをアドレスiのnext2欄から読み出してiとす
る(next2(i)→i)。尚、別の候補文字(next2方向に
連結する候補文字)が存在しない場合にはnext2(i)=0
となり、i=0となる。・・ステップ432
【0062】以後、ステップ405に戻って次の入力文
字を第2文字K2として読み込み、次いでステップ40
6においてi≠0であれば、next2方向に連結する候補
文字が存在するから、ステップ407において第iアド
レスのext1欄の第1候補文字ext1(i)が第1文字K1(ス
テップ408でK2→K1とされている点に注目)と比較
され、比較結果に基づいて以降の処理が行われる。すな
わち、一致すれば、前述のステップ408以降の処理が
行われ、一致しなければ、後述するステップ435以降
の処理が行われて最長一致文字列の検索を続行する。
【0063】一方、ステップ431において、first方
向に連結する第2候補文字ext2(i)が第2文字K2に一致
すれば、すなわち、第1、第2入力文字K1、K2が辞書
の第1、第2候補文字と一致すれば、T=1,S=0と
して(ステップ433)、ステップ418に飛び、デー
タが終了したかチェックする(ステップ418)。デー
タが終了してなければステップ402に戻り以降の処理
を繰り返す。一方、データが終了していれば、T=0か
チェックし(ステップ419)、T=1であれば第2候
補文字までの文字列の参照番号ω2(ω)を符号語 code
(ω2(ω))として出力して(ステップ420′)、符
号化処理を終了する。
【0064】データが終了してなければ、ステップ40
2以降の処理が繰り返されるが、T=1であるから、ス
テップ404で「NO」となり、次の2つの入力文字を
第1、第2文字K1,K2として読み取ると共に、前回の
第2候補文字にfirst方向に連結する候補文字の格納ア
ドレスをアドレスiのfirst2欄から読み出してiとする
(first2(i)→i)。尚、first方向に連結する候補文字
が存在しない場合にはfirst2(i)=0となり、i=0と
なる。・・・ステップ434
【0065】以後、ステップ406に飛び、以降の処理
が繰り返されて最長一致文字列の検索が行われる。ステ
ップ407において、第iアドレスのext1欄の第1候補
文字ext1(i)が第1文字K1と一致しなければ、iをjに
代入すると共に、T=0とし、かつ、前回の第2文字に
next1方向に連結する候補文字の格納アドレスを、アド
レスiのnext1欄から読み出してiとする(next1(i)→
i)。尚、next1方向に連結する文字が存在しない場合
にはnext1(i)=0となり、i=0となる。・・・ステッ
プ435
【0066】以後、ステップ406に飛び、i≠0であ
れば、next方向に連結する候補文字が存在するから、ス
テップ407以降の処理を繰り返して、最長一致文字列
の検索を行う。ステップ432又はステップ434又は
ステップ435の処理後、i=0となれば、すなわち、
next2方向に連結する候補文字、又はfirst2方向に連結
する候補文字、又はnext1方向に連結する候補文字が存
在しない場合には、ステップ411に飛びTの値に応じ
た符号語が出力される。すなわち、T=0の場合には、
第1入力文字K1が辞書よりの第1候補文字と一致して
おり(第2入力文字K2は一致していない)、該第1候補
文字までの文字列の参照番号ωを符号語code(ω)として
出力する(ステップ412)。しかし、T=1の場合に
は、前回の第1、第2入力文字が第1、第2候補文字と
一致しているため、前回の第2候補文字までの文字列の
参照番号ω2(ω)を符号語code(ω2(ω))としてが出力す
る(ステップ412′)。尚、このステップ411、4
12、412′の状況は、ステップ419でTの値に応
じて符号語code(ω)を出力する場合(ステップ420)
と、符号語code(ω2(ω))を出力する場合(ステップ4
20′)と同様である。
【0067】符号語を出力後、iをpに代入し、又、n
をiに代入し、更にnを1インクリメントし(ステップ
413)、U=0であるかチェックする(ステップ41
4)。尚、ステップ406においてi=0の場合には、
ステップ410の処理が行われないから、U=0となっ
ている。ステップ414でU=0であれば、第1文字K
1を第iアドレス(何も記憶されていない新たなアドレ
ス)のext1欄に書き込み(K1→ext1(i))、そのflag欄に
1-0を書き込む(1-0→flag(i))。これにより、それ迄の
文字列の最終文字(前回の第2文字)に今回の第1文字
1を連結した文字列が登録される。・・・ステップ4
51
【0068】ついで、j=0かチェックする(ステップ
452)。ステップ434の処理後にi=0となれば、
すなわち、first2方向に連結する文字が存在しない場合
にはj=0である。又、ステップ432又はステップ4
35の処理後にi=0となれば、すなわち、next2方向
に連結する文字、又はnext1方向に連結する文字が存在
しない場合には、j≠0である。従って、j=0の場合
には、i(今回の第1文字K1の格納アドレス)を、前
回の第1候補文字の格納アドレスωのfirst2欄に書き込
むと共に(i→fitst2(ω))、既に第1、第2入力文字を
読み込んであるから、S=1とし(ステップ453)、
以後ステップ417以降の処理を繰り返す。尚、S=1
の場合には、ステップ403で「NO」となり、次の入
力文字を読み込むことなく直ちにステップ406以降の
処理が行われる。
【0069】一方、ステップ452においてj≠0であ
れば、T=0かチェックし(ステップ453)、T=0
であれば、ステップ435の処理後にi=0となったも
のであるから、i(今回の第1文字K1の格納アドレ
ス)を、前回の第1候補文字の格納アドレスjのnext1
欄に書き込むと共に(i→next1(j))、S=0とし(ステ
ップ454)、以後ステップ417以降の処理を繰り返
す。又、ステップ453において、T=1であれば、ス
テップ432の処理後にi=0となったものであるか
ら、i(今回の第1文字K1の格納アドレス)を、前回
の第1候補文字の格納アドレスjのnext2欄に書き込む
と共に(i→next2(j))、S=0とし(ステップ45
5)、以後ステップ417以降の処理を繰り返す。
【0070】以上要約すれば、一度の辞書検索により複
数(2つの)の候補文字ext1、ext2と共に、複数の次に
参照すべき候補文字が格納されているアドレスnext1,ne
xt2,first2を読み出しておき、全部一致した場合にはfi
rst2アドレスより次に参照すべき候補文字を直ちに読み
出して比較照合して辞書検索を行い、第1文字のみが一
致した場合には、next2アドレスより次に参照すべき候
補文字を直ちに読み出して比較照合して辞書検索を行
い、第1文字が一致しない場合には、next1アドレスよ
り次に参照すべき候補文字を直ちに読み出して比較照合
して辞書検索を行い、first,next方向に一致文字が見つ
からなくなると、辞書検索を終了して最長一致文字列の
符号語を出力し、ついで辞書登録し、しかる後、次の入
力文字から再び辞書検索を開始する。
【0071】以上の流れ図に従って、図3(a)の最上段
に示す文字列を符号化出力してゆくと(中段参照)、最
下段の如く文字列が辞書登録されて行き、図6〜図12
に示すように辞書が作成されて行く。尚、図6はステッ
プ401における初期登録状態(空欄は0)であり、図
7〜図12において、斜線で示すように辞書登録量が増
加し、又斜線で示す参照番号が順に符号語として辞書登
録されて行くことが理解される。
【0072】図13は本発明に係わる辞書検索回路の構
成図である。MPU(マイクロ・プロセッサ・ユニッ
ト)12は図示しないDMA回路を介して第1、第2入
力文字K1,K2を読み込んで比較照合部14の第1、第
2レジスタ14a,14bに格納すると共に、第1文字
1の参照番号をアドレスとして辞書メモリ11をアク
セスし、以下のデータ (1)所定文字に連結する第1候補文字ext1、(2)第1候補
文字迄の文字列の参照番号(ω1)、(3)前記所定文字に
連結する候補文字であって第1候補文字とは別の文字K
の格納アドレス(next1)、(4)第1候補文字に連結する
第2候補文字、(5)第2候補文字までの文字列の番号
(ω2)、(6)第1候補文字と連結する文字であって第2
候補文字とは別の候補文字の格納アドレス(next2)、
(7)第2候補文字に連結する第3候補文字の格納アドレ
ス(first2)、(8)第1、第2候補文字のうち幾つ記憶さ
れているかを示すフラグ(flag)を取り込むと共にコント
ローラ16に辞書検索の命令を出す。これにより、コン
トローラ16は、上記データのうち、flagデータをレジ
スタ13aに、next1アドレスをレジスタ13bに、nex
t2アドレスをレジスタ13cに、first2アドレスをレジ
スタ13dに、第1候補文字ext1(=K1′)をレジス
タ13eに、第2候補文字ext2(=K2′)をレジスタ
13fに一度にラッチする。
【0073】ついで、コントローラ16の制御で、比較
照合部14の第1、第2比較回路14c,14dは、第
1、第2の候補文字K1′,K2′とレジスタ14a,1
4bにラッチしてある第1、第2入力文字K1,K2を同
時に比較照合する。尚、比較回路14c,14dは、fl
agデータが入力されており、(1)第1、第2候補文字の
両方が共に存在するか、(2)第1候補文字のみが存在す
るか、(3)第1、第2候補文字の両方共存在しないかを
認識している。
【0074】比較照合の結果、第1、第2の入力文字と
第1、第2の候補文字が共に一致する場合には、コント
ローラ16はアドレス選択部(マルチプレクサ)15に
より、レジスタ13dに記憶されているfirst2アドレス
を選択・出力させる。尚、比較回路14c,14dはカ
スケードの構成になっており、第1入力文字と第1候補
文字が一致した時のみ、第2入力文字と第2候補文字と
の一致が有効になるようになっている。
【0075】連結検出部17はfirst2アドレスが0であ
るかどうかを判断し、0であれば最早first方向に候補
文字は存在しないから、候補文字無しをMPU12に通
知し、first2アドレスが0でなければ、該アドレスをM
PU12に通知する。MPU12はfirst2アドレスが通
知されれば、次の2つの入力文字を第1、第2文字
1,K2として読み取って第1、第2レジスタ14a,
14bに格納すると共に、前記first2アドレスを用いて
辞書メモリ11をアクセスし、読み取ったデータをコン
トローラ16の制御でレジスタ部13に格納し、以後前
述の比較照合動作を繰り返す。
【0076】一方、MPU12は連結検出部17より、
候補文字無しを受信すれば、コントローラ16に最長一
致文字列の検索が終了した旨を通知すると共に、符号語
を作成して図示しないI/Oポートより出力し、又、辞
書メモリ11に辞書登録を行う。しかる後、入力データ
が終了してなければ、コントローラ16に辞書検索を指
令して次の入力文字列に対して同様の動作を繰り返す。
【0077】以上は、比較照合部14による比較動作に
おいて、第1、第2入力文字と第1、第2候補文字が一
致した場合であるが、第1入力文字と第1候補文字のみ
が一致して第2入力文字と第2候補文字が異なる場合に
は、コントローラ16はアドレス選択部15をしてレジ
スタ13cに記憶されているnext2アドレスを選択・出
力させる。又、第2入力文字K2を第1レジスタ14a
に移しK1とし、第1レジスタ14bに次の入力文字を
第2文字K2として格納する。
【0078】連結検出部17はnext2アドレスが0であ
るかどうかを判断し、0であれば最早next2方向に候補
文字は存在しないから、候補文字無しをMPU12に通
知し、next2アドレスが0でなければ、該next2アドレス
をMPU12に通知する。MPU12はnext2アドレス
が通知されれば、該アドレスを用いて辞書メモリ11を
アクセスし、読み取ったデータをコントローラ16の制
御でレジスタ部13に格納し、以後前述の動作を繰り返
す。一方、MPU12は連結検出部17より、候補文字
無しを受信すれば、コントローラ16に最長一致文字列
の検索が終了した旨を通知すると共に、符号語を作成・
出力し、又、辞書メモリ11に辞書登録を行う。しかる
後、入力データが終了してなければ、コントローラ16
に辞書検索を指令して以上の動作を繰り返す。
【0079】又、比較照合の結果、第1入力文字と第1
候補文字が一致しない場合には、コントローラ16はア
ドレス選択部15をしてレジスタ13bに記憶されてい
るnext1アドレスを選択・出力させる。連結検出部17
はnext1アドレスが0であるかどうかを判断し、0であ
れば最早next1方向に候補文字は存在しないから、候補
文字無しをMPU12に通知し、next1アドレスが0で
なければ、該next1アドレスをMPU12に通知する。
MPU12はnext1アドレスが通知されれば、該アドレ
スを用いて辞書メモリ11をアクセスし、読み取ったデ
ータをコントローラ16の制御でレジスタ部13に格納
し、以後前述の照合動作を繰り返す。一方、MPU12
は連結検出部17より、候補文字無しを受信すれば、コ
ントローラ16に最長一致文字列の検索が終了した旨を
通知すると共に、符号語を作成・出力し、又、辞書メモ
リ11に辞書登録を行う。しかる後、入力データが終了
してなければ、コントローラ16に辞書検索を指令して
以上の動作を繰り返す。
【0080】(b) 本発明の別の実施例 図2のデータ構造にすると、図3(b)に示すように、使
用されないアドレスが発生し辞書メモリの使用効率が低
下する。図14は辞書メモリの使用効率を向上できる本
発明の別のデータ構造説明図である。ある文字列xによ
り指定されるアドレスi(=ω1)には、図14(a)に示
すように、 (1) 文字列xの最終文字に連結する第1文字(ext1)と、
(2) 第1文字迄の文字列の参照番号(ω1)と、(3) 前
記最終文字に連結する文字であって第1文字とは別の文
字の格納アドレスを指定するデータ(listn1)と、(4)
第1文字に連結する第2文字(ext2)と、(5) 第2文字ま
での文字列の参照番号(ω2)と、(6) 前記第1文字と
連結する文字であって第2文字とは別の文字の格納アド
レスを指定するデータ(listn2)と、(7) 前記第2文字
に連結する第3文字の格納アドレスを指定するデータ(l
istf2)と、(8) 第1、第2文字のうち幾つ記憶されてい
るかを示すフラグ(flag)が記憶されて、辞書が作成され
る。
【0081】尚、図2に示すデータと図3のデータには
以下の関係がある。すなわち、(1)listn1欄に書き込ま
れているデータ(listn1アドレス)が示すアドレスのω1
欄の参照番号(アドレス)が図2のデータ構造におけるne
xt1アドレスと一致し、(2)listn2欄に書き込まれている
データ(listn2アドレス)が示すアドレスのω1欄の参照
番号(アドレス)が図2のデータ構造におけるnext2アド
レスと一致し、(3)listf2欄に書き込まれているデータ
(listf2アドレス)が示すアドレスのω1欄の参照番号(ア
ドレス)が図2のデータ構造におけるfirst2アドレスと
一致するようになっている。・・・対応関係A
【0082】図14(b)は図3(a)の上段に示す順序で
a,b,cの3文字列が入力された時の辞書メモリのデ
ータ構造を示す木構造図であり、図14(c)は本発明の
データ構造により作成した辞書内容説明図であり、辞書
メモリの各アドレスにはflag欄、listn1欄、listn2欄、
listf2欄、ext1欄、ext2欄、ω1欄、ω2欄が設けられて
いる。図14(a)に示す構造にすると、辞書メモリの各
アドレスに順にデータが格納されて行くため、図14
(c)に示すように、使用されないアドレスがなくなり、
メモリの使用効率が向上する。
【0083】符号化処理は、データを辞書メモリの空ア
ドレスから順に格納し、しかる後、上記対応関係が満た
されるようにlistn1、listn2、first2を決定して辞書メ
モリに登録する点が異なるだけで、他は図4及び図5の
処理と略同様である。
【0084】図15は本発明の辞書検索回路の別の実施
例構成図であり、図13の構成図と殆ど同様の構成にな
っている。図13と異なる点は、レジスタ13bにlist
n1アドレスをラッチし、レジスタ13cにlistn2アドレ
スをラッチし、レジスタ13dにlistf2アドレスをラッ
チする点、及びMPU12の辞書登録処理の相違であ
る。
【0085】以上、本発明を実施例により説明したが、
本発明は請求の範囲に記載した本発明の主旨に従い種々
の変形が可能であり、本発明はこれらを排除するもので
はない。
【0086】
【発明の効果】以上本発明によれば、一度の辞書検索に
より複数の候補文字を読み出し、複数の候補文字と複数
の入力文字とを一度に照合して辞書検索を行うように構
成したから、辞書検索を高速に行うことができる。ま
た、本発明によれば、一度の辞書検索により複数の候補
文字と共に、複数のアドレスを読み出し、複数の候補文
字と複数の入力文字との比較照合結果(全部一致、先頭
不一致、一部一致等)に基づいて次に参照すべき候補文
字を直ちに所定のアドレスから読み出して比較照合する
ように構成したから、辞書検索を高速に行うことができ
る。
【0087】更に、本発明によれば、検索済文字列に連
結する第1文字と、第1文字迄の文字列の番号(ω1
と、前記検索済文字列に連結する文字であって第1文字
とは別の文字の格納アドレス(next1)と、第1文字に連
結する第2文字と、第2文字までの文字列の番号
(ω2)と、前記第1文字と連結する文字であって第2
文字とは別の文字の格納アドレス(next2)と、前記第2
文字に連結する第3文字の格納アドレス(first2)と、第
1、第2文字のうち幾つ記憶されているかを示すフラグ
(flag)を辞書メモリ記憶するように構成したから、2つ
の入力文字と2つの候補文字である第1、第2文字の一
致照合に際して、第1入力文字と第1候補文字が異なる
場合にはアドレス(next1)に基づい次のデータ要素を読
み出して一致照合を行い、第1入力文字と第1候補文字
が一致して第2入力文字と第2候補文字が異なる場合に
は、アドレス(next2)に基づいて次のデータ要素を読み
出し、該第2入力文字以降の2つの入力文字と2つの候
補文字との一致照合を行い、2つの入力文字と前記第
1、第2候補文字が共に一致する場合には、アドレス(f
irst 2)に基づいて次の2つの入力文字に対するデータ要
素を読み出して最長一致検索処理を続行でき、辞書検索
を高速に行うことができる。
【0088】また、本発明によれば、検索済文字列に連
結する第1文字と、第1文字迄の文字列の番号(ω1
と、前記検索済文字列に連結する文字であって第1文字
とは別の文字と該文字迄の番号(ω1)を格納するアド
レスを指定するlistn1アドレスと、第1文字に連結する
第2文字と、第2文字までの文字列の番号(ω2)と、
前記第1文字と連結する文字であって第2文字とは別の
文字と該文字迄の番号(ω1)を格納するアドレスを指
定するlistn2アドレスと、前記第2文字に連結する第3
文字と該第3文字迄の番号(ω1)を格納するアドレスを
指定するlistf2アドレスと、第1、第2文字のうち幾つ
記憶されているかを示すフラグ(flag)を辞書メモリに記
憶するように構成したから、2つの入力文字と2つの候
補文字である前記第1、第2文字の一致照合に際して、
第1入力文字と第1候補文字が異なる場合にはアドレス
(listn1)に基づい次のデータ要素を読み出して一致照合
を行い、第1入力文字と第1候補文字が一致して第2入
力文字と第2候補文字が異なる場合には、アドレス(li
stn2)に基づいて次のデータ要素を読み出し、該第2入
力文字以降の2つの入力文字と2つの候補文字との一致
照合を行い、2つの入力文字と前記第1、第2候補文字
が共に一致する場合には、アドレス(listf2)に基づいて
次の2つの入力文字に対するデータ要素を読み出して最
長一致検索処理を続行でき、辞書検索を高速に行うこと
ができる。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】本発明による辞書メモリの構造説明図である。
【図3】本発明による辞書内容説明図である。
【図4】本発明の符号化処理の第1の流れ図である。
【図5】本発明の符号化処理の第2の流れ図である。
【図6】辞書作成の過程を示す第1の図表である。
【図7】辞書作成の過程を示す第2の図表である。
【図8】辞書作成の過程を示す第3の図表である。
【図9】辞書作成の過程を示す第4の図表である。
【図10】辞書作成の過程を示す第5の図表である。
【図11】辞書作成の過程を示す第6の図表である。
【図12】辞書作成の過程を示す第7の図表である。
【図13】本発明による辞書検索回路の構成図である。
【図14】本発明の別のデータ構造説明図である。
【図15】本発明による辞書検索回路の別の構成図であ
る。
【図16】LZW符号化説明図である。
【図17】辞書構成の説明図である。
【図18】LZW符号化のフローチャートである。
【図19】LZW復号化のフローチャートである。
【図20】LZW復号化の例外時における説明図であ
る。
【図21】LZW復号化説明図である。
【図22】外部ハッシュ法の説明図
【図23】外部ハッシュ法によるデータ構造説明図であ
る。
【図24】外部ハッシュ法による辞書構造説明図であ
る。
【図25】外部ハッシュ法によるLZW復号化の辞書検
索、辞書登録のフローチャートである。
【図26】辞書登録の様子を示す第1の説明図表であ
る。
【図27】辞書登録の様子を示す第2の説明図表であ
る。
【図28】辞書登録の様子を示す第3の説明図表であ
る。
【図29】従来の外部ハッシュ法による辞書検索回路の
構成図である。
【符号の説明】
11 辞書メモリ 12 MPU 13 レジスタ部 14 比較照合部 15 アドレス選択部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 平4−123619(JP,A) 特開 平4−96868(JP,A) 特開 平4−96174(JP,A) 特開 平4−95161(JP,A) 特開 平3−179562(JP,A) 特開 昭61−13340(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 5/00 H03M 7/30 - 7/46

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 既に符号化済みの文字列を相異なる部分
    文字列に分け、該部分文字列を辞書に登録しておき、入
    力文字列と最長に一致する部分文字列を辞書から検索
    し、該最長一致文字列の番号を指定して符号化するデー
    タ圧縮における辞書検索方法において、 検索済文字列に連結する複数の文字列における先頭から
    の複数の候補文字が検索可能となるように複数のデータ
    要素を前記検索済文字列が指定する記憶域に記憶して部
    分文字列を辞書に登録し、 最長一致文字列の検索に際して、検索済文字列に応じた
    前記データ要素を辞書より一括して読み出し、 前記データ要素に含まれる検索済文字列に連結する複数
    個の候補文字と複数の入力文字とを比較して一致照合を
    行い、 一致している場合には、最後の一致文字の検索文字列に
    応じたデータ要素を読み出して最長一致検索処理を続行
    することを特徴とする辞書検索方法。
  2. 【請求項2】 前記検索済文字列に連結する複数の候補
    文字と複数の入力文字とを先頭より同時に比較し、全て
    一致した場合には、以降の複数の候補文字と次の複数の
    入力文字との一致照合を行い、 先の入力文字が一致し、後の入力文字が一致しない場合
    には、該先の入力文字から分岐する別の文字列の複数の
    候補文字と、後の複数の入力文字との一致照合を行うこ
    とを特徴とする請求項1記載の辞書検索方法。
  3. 【請求項3】 前記データ要素は、検索済文字より連結
    する第1文字と、第1文字迄の文字列の番号(ω1
    と、前記検索済文字列に連結する文字であって第1文字
    とは別の文字の格納アドレス(next1)と、第1文字に連
    結する第2文字と、第2文字までの文字列の番号
    (ω2)と、前記第1文字と連結する文字であって第2
    文字とは別の文字の格納アドレス(next2)と、前記第2
    文字に連結する第3文字の格納アドレス(first2)と、第
    1、第2文字のうち幾つ記憶されているかを示すフラグ
    (flag)を有し、 第1、第2の2つの入力文字と2つの候補文字である前
    記第1、第2文字の一致照合に際して、第1入力文字と
    第1候補文字が異なる場合にはアドレス(next 1)に基づ
    き次のデータ要素を読み出して一致照合を行い、第1入
    力文字と第1候補文字が一致して第2入力文字と第2候
    補文字が異なる場合には、アドレス(next2)に基づいて
    次のデータ要素を読み出し、該第2入力文字以降の2つ
    の入力文字と2つの候補文字との一致照合を行い、2つ
    の入力文字と前記第1、第2候補文字が共に一致する場
    合には、アドレス(first2)に基づいて次の2つの入力文
    字に対するデータ要素を読み出して最長一致検索処理を
    続行することを特徴とする請求項1記載の辞書検索方
    法。
  4. 【請求項4】 前記データ要素は、検索済文字列に連結
    する第1文字と、第1文字迄の文字列の番号(ω1
    と、前記検索済文字列に連結する文字であって第1文字
    とは別の文字と該文字迄の番号(ω1)を格納するアド
    レスを指定するデータ(listn1)と、第1文字に連結す
    る第2文字と、第2文字までの文字列の番号(ω2
    と、前記第1文字と連結する文字であって第2文字とは
    別の文字と該文字迄の番号(ω1)を格納するアドレス
    を指定するデータ(listn2)と、前記第2文字に連結す
    る第3文字と該第3文字迄の番号(ω1)を格納するアド
    レスを指定するデータ(listf2)と、第1、第2文字のう
    ち幾つ記憶されているかを示すフラグ(flag)を有し、 第1、第2の2つの入力文字と2つの候補文字である前
    記第1、第2文字の一致照合に際して、第1入力文字と
    第1候補文字が異なる場合にはアドレスデータ(listn1)
    に基づき次のデータ要素を読み出して一致照合を行い、
    第1入力文字と第1候補文字が一致して第2入力文字と
    第2候補文字が異なる場合には、アドレスデータ(list
    n2)に基づいて次のデータ要素を読み出し、該第2入力
    文字以降の2つの入力文字と2つの候補文字との一致照
    合を行い、2つの入力文字と前記第1、第2候補文字が
    共に一致する場合には、アドレスデータ(listf2)に基づ
    いて次の2つの入力文字に対するデータ要素を読み出し
    て最長一致検索処理を続行することを特徴とする請求項
    1記載の辞書検索方法。
JP32470591A 1991-12-09 1991-12-09 辞書検索方法 Expired - Fee Related JP3103172B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP32470591A JP3103172B2 (ja) 1991-12-09 1991-12-09 辞書検索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP32470591A JP3103172B2 (ja) 1991-12-09 1991-12-09 辞書検索方法

Publications (2)

Publication Number Publication Date
JPH05158652A JPH05158652A (ja) 1993-06-25
JP3103172B2 true JP3103172B2 (ja) 2000-10-23

Family

ID=18168793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32470591A Expired - Fee Related JP3103172B2 (ja) 1991-12-09 1991-12-09 辞書検索方法

Country Status (1)

Country Link
JP (1) JP3103172B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6834327B2 (ja) 2016-10-06 2021-02-24 富士通株式会社 符号化プログラム、符号化装置および符号化方法

Also Published As

Publication number Publication date
JPH05158652A (ja) 1993-06-25

Similar Documents

Publication Publication Date Title
US5151697A (en) Data structure management tagging system
US6876774B2 (en) Method and apparatus for compressing data string
JPH05233212A (ja) データを圧縮するための装置及び方法並びにデータ処理システム
US5815096A (en) Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure
JP3103172B2 (ja) 辞書検索方法
JP3038223B2 (ja) データ圧縮方式
JP3115066B2 (ja) 辞書検索方法
JPH10261969A (ja) データ圧縮方法および装置
JP3038234B2 (ja) データ圧縮装置の辞書検索方式
JP3053656B2 (ja) データ圧縮における辞書登録方式
JP3038233B2 (ja) データ圧縮及び復元装置
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JP2952067B2 (ja) データ圧縮方式
JP3236747B2 (ja) データ伸長方式
JP2952068B2 (ja) データ圧縮及び復元方式
JPH05152971A (ja) データ圧縮・復元方法
JP2825960B2 (ja) データ圧縮方法及び復元方法
JP3132774B2 (ja) データ圧縮・復元装置
JP2535655B2 (ja) 辞書検索方式
JP3012677B2 (ja) Zl符号化方法
JP2774350B2 (ja) データ圧縮方法および圧縮データのデータ復元方法
JPH05341953A (ja) データ圧縮方法及び装置
JPH05252049A (ja) データ圧縮処理方式及びデータ復元処理方式
JP3054183B2 (ja) データ圧縮装置の辞書書き替え方式
JP3088740B2 (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: 20000815

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080825

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090825

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees