JP3117760B2 - データ復元方式 - Google Patents
データ復元方式Info
- Publication number
- JP3117760B2 JP3117760B2 JP03275292A JP27529291A JP3117760B2 JP 3117760 B2 JP3117760 B2 JP 3117760B2 JP 03275292 A JP03275292 A JP 03275292A JP 27529291 A JP27529291 A JP 27529291A JP 3117760 B2 JP3117760 B2 JP 3117760B2
- Authority
- JP
- Japan
- Prior art keywords
- dictionary
- character string
- input code
- code
- 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.)
- Expired - Fee Related
Links
Landscapes
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【0001】
【産業上の利用分野】本発明は圧縮されたデータを復号
化するデータ復元方式に関し、特にユニバーサル符号化
の一種である増分分解型の改良としてのLZW符号によ
る圧縮されたデータのデータ復元方式に関する。
化するデータ復元方式に関し、特にユニバーサル符号化
の一種である増分分解型の改良としてのLZW符号によ
る圧縮されたデータのデータ復元方式に関する。
【0002】近年、文字コード、ベクトル情報、画像デ
ータなど各種のデータがコンピュータで扱われるように
なっており、扱われるデータ量も急速に増加してきてい
る。大量のデータを扱うときは、データの中の冗長な部
分を省いてデータ量を圧縮することで、記憶容量を減ら
したり、速く伝送したりすることが望まれる。
ータなど各種のデータがコンピュータで扱われるように
なっており、扱われるデータ量も急速に増加してきてい
る。大量のデータを扱うときは、データの中の冗長な部
分を省いてデータ量を圧縮することで、記憶容量を減ら
したり、速く伝送したりすることが望まれる。
【0003】このような様々なデータを1つの方式でデ
ータ圧縮する方法をしてユニバーサル符号化が提案され
ている。ユニバーサル符号化の代表的な方法として、Zi
v-Lempel符号を用いた方法が知られている(例えば、宗
像清治著、「Ziv-Lempelデータ圧縮法」、情報処理、p
p.2〜6 , Vol.26,No.1,1985を参照のこと)。Ziv-Lempe
l符号では、ユニバーサル型と、増分分解型(Increment
al persing )の2つのアルゴリズムが提案されてい
る。
ータ圧縮する方法をしてユニバーサル符号化が提案され
ている。ユニバーサル符号化の代表的な方法として、Zi
v-Lempel符号を用いた方法が知られている(例えば、宗
像清治著、「Ziv-Lempelデータ圧縮法」、情報処理、p
p.2〜6 , Vol.26,No.1,1985を参照のこと)。Ziv-Lempe
l符号では、ユニバーサル型と、増分分解型(Increment
al persing )の2つのアルゴリズムが提案されてい
る。
【0004】本発明は増分分解型アルゴリズムを改良し
たLZW(Lempel-Ziv-Welch)符号によって圧縮されたデ
ータの復号化をさらに改善したものに関わるものであ
る。なお、「文字(Character )」及び「文字列(Char
acter String)」の定義はJIS−C6230に従うほ
か、情報理論で用いられている呼称を踏襲し、1ワード
単位で構成されるデータを「文字」と呼び、任意のワー
ド単位で構成されるデータを「文字列」と呼んで、本発
明を圧縮されたデータの復号化に関わるものとして説明
する。
たLZW(Lempel-Ziv-Welch)符号によって圧縮されたデ
ータの復号化をさらに改善したものに関わるものであ
る。なお、「文字(Character )」及び「文字列(Char
acter String)」の定義はJIS−C6230に従うほ
か、情報理論で用いられている呼称を踏襲し、1ワード
単位で構成されるデータを「文字」と呼び、任意のワー
ド単位で構成されるデータを「文字列」と呼んで、本発
明を圧縮されたデータの復号化に関わるものとして説明
する。
【0005】
【従来の技術】従来のLZW符号の符号化アルゴリズム
によれば、入力文字列を互いに異なる部分文字列に分け
て符号化し、これらの部分文字列と符号との対応を辞書
に登録するとともに、入力文字列を、辞書中に登録され
た部分文字列と比較し、入力文字列と一致する部分文字
列の内、最大長の部分文字列を選択し、選択された部分
文字列に対応する符号によって入力文字列を符号化し、
これによってデータを圧縮することが行われている。
によれば、入力文字列を互いに異なる部分文字列に分け
て符号化し、これらの部分文字列と符号との対応を辞書
に登録するとともに、入力文字列を、辞書中に登録され
た部分文字列と比較し、入力文字列と一致する部分文字
列の内、最大長の部分文字列を選択し、選択された部分
文字列に対応する符号によって入力文字列を符号化し、
これによってデータを圧縮することが行われている。
【0006】図7は、例えばa,b,cの3文字だけの
組み合わせからなる入力文字列71を、LZW符号の符
号化アルゴリズムによって符号化する場合の具体例を示
す図である。予め辞書に、初期化によって、1文字の
a,b,cだけをそれぞれ符号1,2,3に対応づけて
登録しておく。
組み合わせからなる入力文字列71を、LZW符号の符
号化アルゴリズムによって符号化する場合の具体例を示
す図である。予め辞書に、初期化によって、1文字の
a,b,cだけをそれぞれ符号1,2,3に対応づけて
登録しておく。
【0007】まず、入力文字列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を語頭文字とする。
【0008】次に、入力文字列71の3番目の文字aを
読み、語頭文字bにこのaを加えたbaを辞書の登録文
字列と照合する。辞書にはbaに一致する文字列がない
から、このときも辞書から語頭文字bの対応符号2を符
号化出力として出力するとともに、文字列baを符号5
に対応させて辞書に登録する。そして今度は3番目の入
力文字aを語頭文字とする。
読み、語頭文字bにこのaを加えたbaを辞書の登録文
字列と照合する。辞書にはbaに一致する文字列がない
から、このときも辞書から語頭文字bの対応符号2を符
号化出力として出力するとともに、文字列baを符号5
に対応させて辞書に登録する。そして今度は3番目の入
力文字aを語頭文字とする。
【0009】さらに、4番目の文字bを読み、語頭文字
aにこのbを加えたabを辞書の登録文字列と照合す
る。辞書にはabに一致する文字列があるから、このと
きはabを語頭文字列とし、続けて、5番目の入力文字
cを読み、語頭文字列abにこのcを加えたabcを辞
書の登録文字列と照合する。辞書にはabcに一致する
文字列がないから、このときは辞書から語頭文字列ab
の対応符号4を符号化出力として出力するとともに、文
字列abcを符号6に対応させて辞書に登録する。そし
て、今度はcを語頭文字とする。
aにこのbを加えたabを辞書の登録文字列と照合す
る。辞書にはabに一致する文字列があるから、このと
きはabを語頭文字列とし、続けて、5番目の入力文字
cを読み、語頭文字列abにこのcを加えたabcを辞
書の登録文字列と照合する。辞書にはabcに一致する
文字列がないから、このときは辞書から語頭文字列ab
の対応符号4を符号化出力として出力するとともに、文
字列abcを符号6に対応させて辞書に登録する。そし
て、今度はcを語頭文字とする。
【0010】以下、同様にこうしたアルゴリズムにより
符号化と辞書登録を続ける。このようにして入力文字列
a,b,a,b,c・・・に対して符号化が行われ、図
7の出力符号欄72に示すような符号1,2,4,3・
・・が符号化出力として出力される。そして、図9
(A)に示すような登録文字列91と対応符号92との
対応関係が辞書に登録される。
符号化と辞書登録を続ける。このようにして入力文字列
a,b,a,b,c・・・に対して符号化が行われ、図
7の出力符号欄72に示すような符号1,2,4,3・
・・が符号化出力として出力される。そして、図9
(A)に示すような登録文字列91と対応符号92との
対応関係が辞書に登録される。
【0011】図10は、以上に例示したLZW符号の符
号化の処理手順を示すフローチャートである。図中、S
に続く数字はステップ番号を示す。 〔S101〕予め初期化によって、入力される可能性の
ある全一文字に対しそれぞれ符号を対応させて辞書に登
録する。また、辞書において次に登録すべきアドレスn
を例えば256に設定する(図7の例では4)。nは、
辞書に登録される文字列に対応して符号を0,1,2・
・・と付した場合、登録文字列の総数に相当する。さら
に、入力文字列を読み込み、入力した最初の文字を語頭
文字列(prefix string )ωとする。
号化の処理手順を示すフローチャートである。図中、S
に続く数字はステップ番号を示す。 〔S101〕予め初期化によって、入力される可能性の
ある全一文字に対しそれぞれ符号を対応させて辞書に登
録する。また、辞書において次に登録すべきアドレスn
を例えば256に設定する(図7の例では4)。nは、
辞書に登録される文字列に対応して符号を0,1,2・
・・と付した場合、登録文字列の総数に相当する。さら
に、入力文字列を読み込み、入力した最初の文字を語頭
文字列(prefix string )ωとする。
【0012】〔S102〕次の入力文字Kを読み込む。 〔S103〕ステップS102において入力文字データ
が存在したか否かを判別する。存在すればステップS1
05へ進み、存在しなければステップS104へ進む。
が存在したか否かを判別する。存在すればステップS1
05へ進み、存在しなければステップS104へ進む。
【0013】〔S104〕語頭文字列ωを辞書と照合
し、対応する符号code(ω)を読み出し、符号化出力と
して出力する。このときの符号code(ω)のビット数
は、log2n以上の最小の整数に相当する。このステップ
では文字列が入力しないから、本ステップを実行後、本
処理手順を終了する。
し、対応する符号code(ω)を読み出し、符号化出力と
して出力する。このときの符号code(ω)のビット数
は、log2n以上の最小の整数に相当する。このステップ
では文字列が入力しないから、本ステップを実行後、本
処理手順を終了する。
【0014】〔S105〕語頭文字列ωに、ステップS
102で読み込んだ文字Kを加えた文字列ωKを辞書と
照合し、文字列ωKが辞書に登録されているか否かを判
別する。登録されていればステップS106に進み、登
録されていなければステップS107に進む。
102で読み込んだ文字Kを加えた文字列ωKを辞書と
照合し、文字列ωKが辞書に登録されているか否かを判
別する。登録されていればステップS106に進み、登
録されていなければステップS107に進む。
【0015】〔S106〕文字列ωKを改めて語頭文字
列ωとする。そして、再びステップS102に戻る。ス
テップS102乃至ステップS106を繰り返すことに
より、入力文字列と一致する文字列として、辞書に登録
された文字列のうちの最大長の文字列が探索される。
列ωとする。そして、再びステップS102に戻る。ス
テップS102乃至ステップS106を繰り返すことに
より、入力文字列と一致する文字列として、辞書に登録
された文字列のうちの最大長の文字列が探索される。
【0016】〔S107〕語頭文字列ωを辞書と照合
し、対応する符号code(ω)を読み出し、符号化出力と
して出力する。このときの符号code(ω)のビット数
は、log2n以上の最小の整数に相当する。また、文字列
ωKにnの値を対応させて辞書に登録する(実際には辞
書のアドレスnに文字列ωKを記憶する)。さらに、ス
テップS102で読み込んだ文字Kを語頭文字列ωとす
るとともに、辞書アドレスnをインクリメントして、つ
ぎの新たな入力文字列に対するステップS102以降の
実行に備える。
し、対応する符号code(ω)を読み出し、符号化出力と
して出力する。このときの符号code(ω)のビット数
は、log2n以上の最小の整数に相当する。また、文字列
ωKにnの値を対応させて辞書に登録する(実際には辞
書のアドレスnに文字列ωKを記憶する)。さらに、ス
テップS102で読み込んだ文字Kを語頭文字列ωとす
るとともに、辞書アドレスnをインクリメントして、つ
ぎの新たな入力文字列に対するステップS102以降の
実行に備える。
【0017】図8は、図7に例示された符号化出力を今
度は復号化する場合の具体例を示す図である。予め復号
化側の辞書に、初期化によって、符号1,2,3だけが
それぞれ文字a,b,cに対応づけられて登録されてい
る。
度は復号化する場合の具体例を示す図である。予め復号
化側の辞書に、初期化によって、符号1,2,3だけが
それぞれ文字a,b,cに対応づけられて登録されてい
る。
【0018】まず、入力符号81を左から右へ一つずつ
読み込む。最初の符号1を読み、辞書を参照して文字列
aを復元する(復元文字列欄821)。最初の符号は、
初期化によって必ず辞書に登録されている。次に、2番
目の符号2を読み、辞書を参照して文字列bを復元す
る。このとき、前回の入力符号1と今回復号した文字列
の最初の一文字b(今回の復号文字列は単に文字bのみ
であるが)とを組み合わせた(1b)に符号4を対応さ
せて辞書に登録する(登録内容欄83)。
読み込む。最初の符号1を読み、辞書を参照して文字列
aを復元する(復元文字列欄821)。最初の符号は、
初期化によって必ず辞書に登録されている。次に、2番
目の符号2を読み、辞書を参照して文字列bを復元す
る。このとき、前回の入力符号1と今回復号した文字列
の最初の一文字b(今回の復号文字列は単に文字bのみ
であるが)とを組み合わせた(1b)に符号4を対応さ
せて辞書に登録する(登録内容欄83)。
【0019】次に、入力文字列81の3番目の符号4を
読み、辞書を参照して対応する1bを読み出し、さらに
1bの符号1を、辞書を参照して対応する文字aを読み
出す(この一連の読み出し繰り返し動作を「再帰的な復
号化」と呼ぶ。再帰的復号化欄82を参照)。これによ
って、文字列abを復号化された文字列として出力する
(復元文字列欄831)。同時に、前回の入力符号2と
今回復号した文字列の最初の一文字aとを組み合わせた
(2a)に符号5を対応させて辞書に登録する(登録内
容欄83)。
読み、辞書を参照して対応する1bを読み出し、さらに
1bの符号1を、辞書を参照して対応する文字aを読み
出す(この一連の読み出し繰り返し動作を「再帰的な復
号化」と呼ぶ。再帰的復号化欄82を参照)。これによ
って、文字列abを復号化された文字列として出力する
(復元文字列欄831)。同時に、前回の入力符号2と
今回復号した文字列の最初の一文字aとを組み合わせた
(2a)に符号5を対応させて辞書に登録する(登録内
容欄83)。
【0020】以下、同様にこうしたアルゴリズムにより
復号化と辞書登録を続ける。このようにして入力符号
1,2,4,3,5・・・に対して復号化が行われ、図
8の復元文字列欄821に示すような文字列a,b,a
b,c,ba・・・が復号化出力として出力される。そ
して、図9(B)に示すような登録符号93と対応文字
列94との対応関係が辞書に登録される。
復号化と辞書登録を続ける。このようにして入力符号
1,2,4,3,5・・・に対して復号化が行われ、図
8の復元文字列欄821に示すような文字列a,b,a
b,c,ba・・・が復号化出力として出力される。そ
して、図9(B)に示すような登録符号93と対応文字
列94との対応関係が辞書に登録される。
【0021】図11は、以上に例示した復号化の処理手
順を示すフローチャートである。図中、Sに続く数字は
ステップ番号を示す。 〔S111〕予め初期化によって、入力される可能性の
ある符号に対しそれぞれ文字を対応させて辞書に登録す
る。また、辞書において次に登録すべきアドレスnを例
えば256に設定する(図8の例では4)。nは、辞書
に登録される文字列に対応して符号を0,1,2・・・
と付した場合、登録文字列の総数に相当する。次に、入
力符号を読み込み、最初の入力符号CODE(バイナリコー
ド)を10進数の入力符号ωに変換する(図10の符号
化ではωは入力文字列であったが、復号化ではωは入力
符号である点に注意されたい)。このωをOLDωとする
とともに、最初に入力する符号は既に辞書に登録されて
いるから、入力符号ωに対応する文字D(ω)を辞書か
ら探し出し、復号化された文字として出力する。なお、
出力した文字を後述のステップS116の例外処理のた
めにFINchar にセットしておく。
順を示すフローチャートである。図中、Sに続く数字は
ステップ番号を示す。 〔S111〕予め初期化によって、入力される可能性の
ある符号に対しそれぞれ文字を対応させて辞書に登録す
る。また、辞書において次に登録すべきアドレスnを例
えば256に設定する(図8の例では4)。nは、辞書
に登録される文字列に対応して符号を0,1,2・・・
と付した場合、登録文字列の総数に相当する。次に、入
力符号を読み込み、最初の入力符号CODE(バイナリコー
ド)を10進数の入力符号ωに変換する(図10の符号
化ではωは入力文字列であったが、復号化ではωは入力
符号である点に注意されたい)。このωをOLDωとする
とともに、最初に入力する符号は既に辞書に登録されて
いるから、入力符号ωに対応する文字D(ω)を辞書か
ら探し出し、復号化された文字として出力する。なお、
出力した文字を後述のステップS116の例外処理のた
めにFINchar にセットしておく。
【0022】〔S112〕次の入力符号CODEを読み込
む。 〔S113〕ステップS112において入力符号データ
が存在したか否かを判別する。存在すればステップS1
15へ進み、存在しなければ本処理手順を終了する。
む。 〔S113〕ステップS112において入力符号データ
が存在したか否かを判別する。存在すればステップS1
15へ進み、存在しなければ本処理手順を終了する。
【0023】〔S114〕読み込んだ入力符号CODEから
入力符号ωに変換するとともに、この入力符号ωをINω
にセットする。 〔S115〕入力符号ωをnと比較する。このステップ
は、入力符号が辞書に登録されているか否か(ω≧n)
を判別するものである。ωがnより小さい場合が通常で
あり、このときにはステップS117へ進み、ωがn以
上のときには(図8の入力符号欄81が「8」のときが
これに相当する)ステップS116へ進む。
入力符号ωに変換するとともに、この入力符号ωをINω
にセットする。 〔S115〕入力符号ωをnと比較する。このステップ
は、入力符号が辞書に登録されているか否か(ω≧n)
を判別するものである。ωがnより小さい場合が通常で
あり、このときにはステップS117へ進み、ωがn以
上のときには(図8の入力符号欄81が「8」のときが
これに相当する)ステップS116へ進む。
【0024】〔S116〕ステップS111または前回
にステップS119で設定されたOLD ωおよびFINchar
の組(OLD ω,FINchar )をωKと置き換える。すなわ
ち、OLD ωにセットされた値をωに、FINchar にセット
された値をKにセットする。そして、Kをスタックにプ
ッシュ(PUSH)する。ωはステップS117で復号
化される。(図8の入力符号欄81が「8」のとき、OL
D ω(ω)は5であり、FINchar (K)はbである。) 〔S117〕通常、入力符号ωは前回までの処理で辞書
に登録されているため、入力符号ωに対応する文字列D
(ω)を辞書から読み出す。読み出した文字列D(ω)
をωi Kに分解する。ωi は符号、Kは復号化文字であ
る。そして、文字列D(ω)が、ωi Kに分解できない
1文字であるか否かを判別する。D(ω)がωi Kに分
解できるならばステップS118に進み、D(ω)が1
文字であるならばステップS119へ進む。
にステップS119で設定されたOLD ωおよびFINchar
の組(OLD ω,FINchar )をωKと置き換える。すなわ
ち、OLD ωにセットされた値をωに、FINchar にセット
された値をKにセットする。そして、Kをスタックにプ
ッシュ(PUSH)する。ωはステップS117で復号
化される。(図8の入力符号欄81が「8」のとき、OL
D ω(ω)は5であり、FINchar (K)はbである。) 〔S117〕通常、入力符号ωは前回までの処理で辞書
に登録されているため、入力符号ωに対応する文字列D
(ω)を辞書から読み出す。読み出した文字列D(ω)
をωi Kに分解する。ωi は符号、Kは復号化文字であ
る。そして、文字列D(ω)が、ωi Kに分解できない
1文字であるか否かを判別する。D(ω)がωi Kに分
解できるならばステップS118に進み、D(ω)が1
文字であるならばステップS119へ進む。
【0025】〔S118〕文字Kを一時的にスタックに
プッシュし、また符号ωi を新たなωとし、再度ステッ
プS117に戻る。このステップS117およびステッ
プS118の実行を、D(ω)が1文字に至るまで繰り
返す。ステップS117およびステップS118の処理
を前述のように「再帰的復号化」と呼ぶ。
プッシュし、また符号ωi を新たなωとし、再度ステッ
プS117に戻る。このステップS117およびステッ
プS118の実行を、D(ω)が1文字に至るまで繰り
返す。ステップS117およびステップS118の処理
を前述のように「再帰的復号化」と呼ぶ。
【0026】〔S119〕ステップS118でスタック
にプッシュした各文字をLIFO(Last In Fast Out)
形式でポップ(POP)して復元文字列を出力する。例
えば、図8の入力符号欄81が「5」の場合ならば、
a,bの順でスタックにプッシュされ、baという復元
文字列が出力される。同時に、今回復元した文字列の最
初の一文字をFINchar とし、前回セットされた OLDωと
FINchar との組( OLDω,FINchar )からなる文字列
を、nの値に対応させて辞書に登録する(実際には、こ
の文字列を辞書のアドレスnに記憶する)。さらに、n
をインクリメントし、ステップS114でセットされた
INωをOLD ωにセットして、次のステップS112以降
の実行に備える。
にプッシュした各文字をLIFO(Last In Fast Out)
形式でポップ(POP)して復元文字列を出力する。例
えば、図8の入力符号欄81が「5」の場合ならば、
a,bの順でスタックにプッシュされ、baという復元
文字列が出力される。同時に、今回復元した文字列の最
初の一文字をFINchar とし、前回セットされた OLDωと
FINchar との組( OLDω,FINchar )からなる文字列
を、nの値に対応させて辞書に登録する(実際には、こ
の文字列を辞書のアドレスnに記憶する)。さらに、n
をインクリメントし、ステップS114でセットされた
INωをOLD ωにセットして、次のステップS112以降
の実行に備える。
【0027】上述のように従来の復号化では、図11の
ステップS117〜ステップS119を繰り返し行うこ
とによって符号化前のデータに復元していた。すなわ
ち、入力符号ωは前回までの処理で辞書に登録されてい
るため、入力符号ωに対応する文字列D(ω)を辞書か
ら読み出す。また、読み出した文字列D(ω)をωi K
に分解し、この文字Kを一時的にスタックに退避させ
る。そして、符号ωi を新たな入力符号ωとして、再度
入力符号ωに対応する文字列D(ω)を辞書から読み出
す。これらの手順を、新たな入力符号ωが一文字になる
まで再帰的に繰り返す。そして、スタックに退避させた
文字をLIFO形式でポップして出力するという方式で
あった。
ステップS117〜ステップS119を繰り返し行うこ
とによって符号化前のデータに復元していた。すなわ
ち、入力符号ωは前回までの処理で辞書に登録されてい
るため、入力符号ωに対応する文字列D(ω)を辞書か
ら読み出す。また、読み出した文字列D(ω)をωi K
に分解し、この文字Kを一時的にスタックに退避させ
る。そして、符号ωi を新たな入力符号ωとして、再度
入力符号ωに対応する文字列D(ω)を辞書から読み出
す。これらの手順を、新たな入力符号ωが一文字になる
まで再帰的に繰り返す。そして、スタックに退避させた
文字をLIFO形式でポップして出力するという方式で
あった。
【0028】
【発明が解決しようとする課題】しかし、このような方
式では、何度も復元される同一の文字列でも、上述のよ
うに再帰的な処理をその都度行わなければならない。し
たがって、辞書からの読み出し、一時的なスタックへの
退避及び退避させた文字のポップといった一連の処理が
必要であり、この処理のために無駄な時間が費やされる
という問題点があった。
式では、何度も復元される同一の文字列でも、上述のよ
うに再帰的な処理をその都度行わなければならない。し
たがって、辞書からの読み出し、一時的なスタックへの
退避及び退避させた文字のポップといった一連の処理が
必要であり、この処理のために無駄な時間が費やされる
という問題点があった。
【0029】本発明はこのような点に鑑みてなされたも
のであり、一度再帰的な復号化処理によって復元された
文字列を有効に利用し、復号化処理時間を短縮するデー
タ復元方式を提供することを目的とする。
のであり、一度再帰的な復号化処理によって復元された
文字列を有効に利用し、復号化処理時間を短縮するデー
タ復元方式を提供することを目的とする。
【0030】
【課題を解決するための手段】本発明では上記目的を達
成するために、図1に示すように、入力符号を第1の辞
書を用いて再帰的に復号化する第1の復号化手段2と、
前回入力符号と今回復号化された文字列の第1文字とを
組にし、この組に新たな符号を対応させて第1の辞書に
登録する第1の辞書登録手段1とを備え、入力符号に基
づき復号化された文字列を、入力符号とともに第2の辞
書に登録する第2の辞書登録手段4と、第2の復号化手
段3とを備える。
成するために、図1に示すように、入力符号を第1の辞
書を用いて再帰的に復号化する第1の復号化手段2と、
前回入力符号と今回復号化された文字列の第1文字とを
組にし、この組に新たな符号を対応させて第1の辞書に
登録する第1の辞書登録手段1とを備え、入力符号に基
づき復号化された文字列を、入力符号とともに第2の辞
書に登録する第2の辞書登録手段4と、第2の復号化手
段3とを備える。
【0031】第2の復号化手段3は、検索手段3aと文
字列出力手段3bとを有する。すなわち、検索手段3a
は第1の復号化手段2に基づき復号化を行う前に、入力
符号を第2の辞書から検索する。また、文字列出力手段
3bは検索手段3aにより入力符号が検出された場合、
第2の辞書から入力符号に対応する復号化された文字列
を出力する。
字列出力手段3bとを有する。すなわち、検索手段3a
は第1の復号化手段2に基づき復号化を行う前に、入力
符号を第2の辞書から検索する。また、文字列出力手段
3bは検索手段3aにより入力符号が検出された場合、
第2の辞書から入力符号に対応する復号化された文字列
を出力する。
【0032】また、第1の辞書に登録されている入力符
号を参照した頻度を表す参照頻度をさらに設け、第2の
辞書登録手段4は新たに新規入力符号が入力されるごと
に、この新規入力符号に対応する参照頻度をカウントす
るカウント手段を有し、文字列出力手段3bは、参照頻
度が所定値を超えた場合は、第2の辞書から入力符号に
対応する復号化された文字列を出力する選択手段を有す
る。
号を参照した頻度を表す参照頻度をさらに設け、第2の
辞書登録手段4は新たに新規入力符号が入力されるごと
に、この新規入力符号に対応する参照頻度をカウントす
るカウント手段を有し、文字列出力手段3bは、参照頻
度が所定値を超えた場合は、第2の辞書から入力符号に
対応する復号化された文字列を出力する選択手段を有す
る。
【0033】さらに、検索手段3aは入力符号を第2の
辞書から一度だけ検索し、第1の辞書から検索する。そ
して、第2の辞書登録手段4、検索手段3a及び文字列
出力手段3bは、いずれもハッシュ関数に基づいて、第
2の辞書とアクセスする。
辞書から一度だけ検索し、第1の辞書から検索する。そ
して、第2の辞書登録手段4、検索手段3a及び文字列
出力手段3bは、いずれもハッシュ関数に基づいて、第
2の辞書とアクセスする。
【0034】それから、第2の辞書登録手段4は、入力
符号に対応する文字列が第2の辞書に既に存在し、か
つ、第2の辞書に登録されている文字列よりも今回復号
化された文字列のほうが長い文字列である場合、今回復
号化された文字列を第2の辞書に登録する。
符号に対応する文字列が第2の辞書に既に存在し、か
つ、第2の辞書に登録されている文字列よりも今回復号
化された文字列のほうが長い文字列である場合、今回復
号化された文字列を第2の辞書に登録する。
【0035】
【作用】第1の復号化手段2は、入力符号を第1の辞書
を用いて再帰的に復号化する。第1の辞書登録手段1
は、前回入力符号と今回復号化された文字列の第1文字
とを組にし、この組に新たな符号を対応させて第1の辞
書に登録する。
を用いて再帰的に復号化する。第1の辞書登録手段1
は、前回入力符号と今回復号化された文字列の第1文字
とを組にし、この組に新たな符号を対応させて第1の辞
書に登録する。
【0036】一方、第2の辞書登録手段4は、入力符号
に基づき復号化された最終的に文字列を、入力符号とと
もに第2の辞書に登録する。第2の復号化手段3は、検
索手段3aと文字列出力手段3bとを有し、第1の復号
化手段2による復号化前に入力符号に対応する文字列が
第2の辞書に登録されている場合、この文字列を出力す
る。すなわち、検索手段3aは第1の復号化手段2に基
づき復号化を行う前に、入力符号を第2の辞書から検索
する。そして、文字列出力手段3bは検索手段3aによ
り入力符号が検出された場合、第2の辞書から入力符号
に対応する復号化された文字列を出力する。
に基づき復号化された最終的に文字列を、入力符号とと
もに第2の辞書に登録する。第2の復号化手段3は、検
索手段3aと文字列出力手段3bとを有し、第1の復号
化手段2による復号化前に入力符号に対応する文字列が
第2の辞書に登録されている場合、この文字列を出力す
る。すなわち、検索手段3aは第1の復号化手段2に基
づき復号化を行う前に、入力符号を第2の辞書から検索
する。そして、文字列出力手段3bは検索手段3aによ
り入力符号が検出された場合、第2の辞書から入力符号
に対応する復号化された文字列を出力する。
【0037】また、第1の辞書に登録されている入力符
号を参照した頻度を表す参照頻度をさらに設け、第2の
辞書登録手段4は新たに新規入力符号が入力されるごと
に、この新規入力符号に対応する参照頻度をカウントす
るカウント手段を設ける。文字列出力手段3bは、参照
頻度が所定値を超えた場合は、第2の辞書から入力符号
に対応する復号化された文字列を出力する選択手段を設
けて、第2の辞書の検索を最小限度に抑える。
号を参照した頻度を表す参照頻度をさらに設け、第2の
辞書登録手段4は新たに新規入力符号が入力されるごと
に、この新規入力符号に対応する参照頻度をカウントす
るカウント手段を設ける。文字列出力手段3bは、参照
頻度が所定値を超えた場合は、第2の辞書から入力符号
に対応する復号化された文字列を出力する選択手段を設
けて、第2の辞書の検索を最小限度に抑える。
【0038】さらに、検索手段3aは、入力符号を第2
の辞書から一度だけ検索し、その後に第1の辞書から検
索するようにして、第1の辞書に蓄積された文字列を有
効に活用する。
の辞書から一度だけ検索し、その後に第1の辞書から検
索するようにして、第1の辞書に蓄積された文字列を有
効に活用する。
【0039】そして、第2の辞書登録手段4、検索手段
3a及び文字列出力手段3bに、いずれもハッシュ関数
に基づいて、第2の辞書とアクセスするようにして、第
2の辞書への登録及び検索の処理速度を短縮する。
3a及び文字列出力手段3bに、いずれもハッシュ関数
に基づいて、第2の辞書とアクセスするようにして、第
2の辞書への登録及び検索の処理速度を短縮する。
【0040】それから、第2の辞書登録手段4は、入力
符号に対応する文字列が第2の辞書に既に存在し、か
つ、第2の辞書に登録されている文字列よりも今回復号
化された文字列のほうが長い文字列である場合、今回復
号化された文字列を第2の辞書に登録するようにして、
復号化の効率を上げる。
符号に対応する文字列が第2の辞書に既に存在し、か
つ、第2の辞書に登録されている文字列よりも今回復号
化された文字列のほうが長い文字列である場合、今回復
号化された文字列を第2の辞書に登録するようにして、
復号化の効率を上げる。
【0041】
【実施例】以下、本発明の一実施例を図面に基づいて説
明する。図2は復号化の第1の実施例の処理手順を示す
フローチャートである。図において、図11に示したス
テップと同一の内容を持つステップには図11のステッ
プ番号と同じ番号を付し、その説明も省略する。ただ
し、図11の説明にある辞書は全て第1の辞書とする。
なお、Sに続く数字はステップ番号を示す。
明する。図2は復号化の第1の実施例の処理手順を示す
フローチャートである。図において、図11に示したス
テップと同一の内容を持つステップには図11のステッ
プ番号と同じ番号を付し、その説明も省略する。ただ
し、図11の説明にある辞書は全て第1の辞書とする。
なお、Sに続く数字はステップ番号を示す。
【0042】〔S21〕ハッシュ関数に基づいて入力符
号ωに対応するハッシュアドレスH(ω)を求め、第2
の辞書に入力符号ωが登録されているか否かを判別す
る。もし、入力符号ωが登録されている(YES)なら
ばステップS22に進み、入力符号ωが登録されていな
い(NO)ならばステップS117に進む。なお、ハッ
シュアドレスH(ω)は入力符号ωを第2の辞書の最大
登録可能数で割った余りで演算される。
号ωに対応するハッシュアドレスH(ω)を求め、第2
の辞書に入力符号ωが登録されているか否かを判別す
る。もし、入力符号ωが登録されている(YES)なら
ばステップS22に進み、入力符号ωが登録されていな
い(NO)ならばステップS117に進む。なお、ハッ
シュアドレスH(ω)は入力符号ωを第2の辞書の最大
登録可能数で割った余りで演算される。
【0043】〔S22〕入力符号ωに対応する復元文字
列を第2の辞書から読み出す。すなわち、ステップS2
1で求めたハッシュアドレスH(ω)に登録されている
登録文字列を読み出す。読み出し後、ステップS24に
進む。
列を第2の辞書から読み出す。すなわち、ステップS2
1で求めたハッシュアドレスH(ω)に登録されている
登録文字列を読み出す。読み出し後、ステップS24に
進む。
【0044】〔S23〕ステップS118でスタックに
プッシュした各文字をLIFO形式でポップして復元文
字列を出力する。また、第2の辞書上のステップS21
で求めたハッシュアドレスH(ω)に、この復元文字列
を入力符号ωとともに、第2の辞書に登録する。すなわ
ち、後述する図6において、入力符号ωは符号code(H
(ω))として、復元文字列は str(H(ω))として
登録される。
プッシュした各文字をLIFO形式でポップして復元文
字列を出力する。また、第2の辞書上のステップS21
で求めたハッシュアドレスH(ω)に、この復元文字列
を入力符号ωとともに、第2の辞書に登録する。すなわ
ち、後述する図6において、入力符号ωは符号code(H
(ω))として、復元文字列は str(H(ω))として
登録される。
【0045】〔S24〕今回復元した文字列の最初の一
文字をFINcharとし、前回セットされた OLDωとFINchar
との組( OLDω,FINchar )からなる文字列を、nの
値に対応させて第1の辞書に登録する(実際には、この
文字列を第1の辞書のアドレスnに登録する)。さら
に、nをインクリメントし、ステップS114でセット
されたINωをOLD ωにセットして、次のステップS11
2以降の実行に備える。
文字をFINcharとし、前回セットされた OLDωとFINchar
との組( OLDω,FINchar )からなる文字列を、nの
値に対応させて第1の辞書に登録する(実際には、この
文字列を第1の辞書のアドレスnに登録する)。さら
に、nをインクリメントし、ステップS114でセット
されたINωをOLD ωにセットして、次のステップS11
2以降の実行に備える。
【0046】ただし、図11ではステップS118の次
のステップがステップS117であるのに対して、本第
1の実施例ではステップS118の次のステップはステ
ップS21である。これにより、逐次的にハッシュ関数
に基づき第2の辞書にアクセスされ、従来の復号化と比
べて速く得ることができる。
のステップがステップS117であるのに対して、本第
1の実施例ではステップS118の次のステップはステ
ップS21である。これにより、逐次的にハッシュ関数
に基づき第2の辞書にアクセスされ、従来の復号化と比
べて速く得ることができる。
【0047】図3は復号化の第2の実施例の処理手順を
示すフローチャートである。図において、図2及び図1
1に示したステップと同一の内容を持つステップには図
2及び図11のステップ番号と同じ番号を付し、その説
明も省略する。ただし、図11の説明にある辞書は全て
第1の辞書とする。なお、Sに続く数字はステップ番号
を示す。
示すフローチャートである。図において、図2及び図1
1に示したステップと同一の内容を持つステップには図
2及び図11のステップ番号と同じ番号を付し、その説
明も省略する。ただし、図11の説明にある辞書は全て
第1の辞書とする。なお、Sに続く数字はステップ番号
を示す。
【0048】図2の第1の実施例と異なるのは、図2で
はステップS118の次のステップがステップS21で
あるのに対して、本第2の実施例ではステップS118
の次のステップはステップS117である。これによ
り、第2の辞書へのアクセスは最初の入力符号ωに対し
てのみ行われる。このステップS21に要する処理時間
は第2の辞書の登録数が増加するごとに長くなる。した
がって、ステップS21を排除することによって復元化
の処理時間が抑えられ、第1の実施例と比べて速く復元
文字列を得ることができる。
はステップS118の次のステップがステップS21で
あるのに対して、本第2の実施例ではステップS118
の次のステップはステップS117である。これによ
り、第2の辞書へのアクセスは最初の入力符号ωに対し
てのみ行われる。このステップS21に要する処理時間
は第2の辞書の登録数が増加するごとに長くなる。した
がって、ステップS21を排除することによって復元化
の処理時間が抑えられ、第1の実施例と比べて速く復元
文字列を得ることができる。
【0049】図4は復号化の第3の実施例の処理手順を
示すフローチャートである。図において、図3及び図1
1に示したステップと同一の内容を持つステップには図
3及び図11のステップ番号と同じ番号を付し、その説
明も省略する。ただし、図11の説明にある辞書は全て
第1の辞書とする。なお、Sに続く数字はステップ番号
を示す。
示すフローチャートである。図において、図3及び図1
1に示したステップと同一の内容を持つステップには図
3及び図11のステップ番号と同じ番号を付し、その説
明も省略する。ただし、図11の説明にある辞書は全て
第1の辞書とする。なお、Sに続く数字はステップ番号
を示す。
【0050】〔S41〕ステップS118でスタックに
プッシュした各文字をLIFO形式でポップして復元文
字列を出力する。そして、文字出力後はステップS42
に進む。
プッシュした各文字をLIFO形式でポップして復元文
字列を出力する。そして、文字出力後はステップS42
に進む。
【0051】〔S42〕2種の判別を行う。すなわち、
一つは入力符号ωと、後述する図6に示す第2の辞書の
内容において、ステップS21で求めたハッシュアドレ
スH(ω)に登録されている参照番号の符号code(H
(ω))とが同じか否かの判別である。もう一つは、今
回復元した文字列の長さが、同じく入力符号ωに対応す
るハッシュアドレスH(ω)に登録されている登録文字
列str(H(ω))の長さよりも長いか否かの判別であ
る。もし、入力符号ωと符号code(H(ω))が同じで
なく、かつ、今回復元した文字列の長さが第2の辞書に
登録されている登録文字列 str(H(ω))の長さより
も長い(YES)ならばステップS43に進み、短い
(NO)ならばステップS24に進む。
一つは入力符号ωと、後述する図6に示す第2の辞書の
内容において、ステップS21で求めたハッシュアドレ
スH(ω)に登録されている参照番号の符号code(H
(ω))とが同じか否かの判別である。もう一つは、今
回復元した文字列の長さが、同じく入力符号ωに対応す
るハッシュアドレスH(ω)に登録されている登録文字
列str(H(ω))の長さよりも長いか否かの判別であ
る。もし、入力符号ωと符号code(H(ω))が同じで
なく、かつ、今回復元した文字列の長さが第2の辞書に
登録されている登録文字列 str(H(ω))の長さより
も長い(YES)ならばステップS43に進み、短い
(NO)ならばステップS24に進む。
【0052】〔S43〕ステップS21で求めたハッシ
ュアドレスH(ω)に、今回復元した文字列を復元文字
列として入力符号ωとともに第2の辞書に登録する。す
なわち、後述する図6において、入力符号ωは符号code
(H(ω))にとして、復元文字列は str(H(ω))
として登録される。辞書登録後、ステップS24に進
む。
ュアドレスH(ω)に、今回復元した文字列を復元文字
列として入力符号ωとともに第2の辞書に登録する。す
なわち、後述する図6において、入力符号ωは符号code
(H(ω))にとして、復元文字列は str(H(ω))
として登録される。辞書登録後、ステップS24に進
む。
【0053】したがって、ハッシュ関数に基づき第2の
辞書への登録する場合、第2の辞書内においては同一の
登録箇所に、より長い文字列を登録することになるた
め、効率よく復元文字列を得ることができる。
辞書への登録する場合、第2の辞書内においては同一の
登録箇所に、より長い文字列を登録することになるた
め、効率よく復元文字列を得ることができる。
【0054】図5は復号化の第4の実施例の処理手順を
示すフローチャートである。図において、図2及び図1
1に示したステップと同一の内容を持つステップには図
2及び図11のステップ番号と同じ番号を付し、その説
明も省略する。ただし、図11の説明にある辞書は全て
第1の辞書とする。なお、Sに続く数字はステップ番号
を示す。そして、第1の辞書には、既に登録されている
入力符号ωを参照した頻度を表す参照頻度c(ω)をさ
らに設ける。
示すフローチャートである。図において、図2及び図1
1に示したステップと同一の内容を持つステップには図
2及び図11のステップ番号と同じ番号を付し、その説
明も省略する。ただし、図11の説明にある辞書は全て
第1の辞書とする。なお、Sに続く数字はステップ番号
を示す。そして、第1の辞書には、既に登録されている
入力符号ωを参照した頻度を表す参照頻度c(ω)をさ
らに設ける。
【0055】〔S51〕第1の辞書から入力符号ωに対
応する参照頻度c(ω)を読み出し、所定値Tより大き
いか否か判別する。もし、参照頻度c(ω)が所定値T
より大きい(YES)ならばステップS21に進み、参
照頻度c(ω)が所定値Tより小さい(NO)ならばス
テップS117に進む。
応する参照頻度c(ω)を読み出し、所定値Tより大き
いか否か判別する。もし、参照頻度c(ω)が所定値T
より大きい(YES)ならばステップS21に進み、参
照頻度c(ω)が所定値Tより小さい(NO)ならばス
テップS117に進む。
【0056】〔S52〕入力符号ωに対応する参照頻度
c(ω)をインクリメントする。その後、ステップS5
1に戻る。ただし、図11ではステップS118の次の
ステップがステップS117であるのに対して、本第4
の実施例ではステップS118の次のステップはステッ
プS52である。したがって、参照頻度の高い入力符号
ωのみに対応して第2の辞書にアクセスされるため、効
率よく第2の辞書とアクセスすることができ、復号化処
理も速くなる。
c(ω)をインクリメントする。その後、ステップS5
1に戻る。ただし、図11ではステップS118の次の
ステップがステップS117であるのに対して、本第4
の実施例ではステップS118の次のステップはステッ
プS52である。したがって、参照頻度の高い入力符号
ωのみに対応して第2の辞書にアクセスされるため、効
率よく第2の辞書とアクセスすることができ、復号化処
理も速くなる。
【0057】図6は第2の辞書の内容の一例を示す図で
ある。第2の辞書は、ハッシュアドレスH(ω)に基づ
いて、参照番号および登録文字列から構成される。参照
番号は入力符号ωに相当し、登録文字列は復号化処理に
よって復号された文字列が登録される。なお、ハッシュ
アドレスH(ω)は入力符号ωを辞書最大登録可能数
(図6では1000)で割った余りで求められる。
ある。第2の辞書は、ハッシュアドレスH(ω)に基づ
いて、参照番号および登録文字列から構成される。参照
番号は入力符号ωに相当し、登録文字列は復号化処理に
よって復号された文字列が登録される。なお、ハッシュ
アドレスH(ω)は入力符号ωを辞書最大登録可能数
(図6では1000)で割った余りで求められる。
【0058】上記の説明では、第2の辞書はハッシュ関
数に基づき構築したが、他の構築法に基づき構築しても
よい。例えば、二進分木(バイナリ・ツリー)法によっ
て第2の辞書を構築し、二進探索(バイナリ・サーチ)
により復元文字列の探索を行なってもよい。
数に基づき構築したが、他の構築法に基づき構築しても
よい。例えば、二進分木(バイナリ・ツリー)法によっ
て第2の辞書を構築し、二進探索(バイナリ・サーチ)
により復元文字列の探索を行なってもよい。
【0059】上述の各実施例は、ワークステーション等
における文字コード、ベクトル情報、画像データなどを
圧縮したデータの復元に応用され、記憶容量を大幅に削
減することができる。また、通信回線を利用したデータ
送受信(例えば、モデム、ファックス等)においても応
用でき、通信時間の短縮を図ることができる。
における文字コード、ベクトル情報、画像データなどを
圧縮したデータの復元に応用され、記憶容量を大幅に削
減することができる。また、通信回線を利用したデータ
送受信(例えば、モデム、ファックス等)においても応
用でき、通信時間の短縮を図ることができる。
【0060】
【発明の効果】以上説明したように本発明では、第2の
復号化手段の検索手段によって入力符号を第2の辞書か
ら検索し、検出されたときは文字列出力手段が第2の辞
書から入力符号に対応する復号化文字列を出力し、検出
されない場合は第1の復号化手段が入力符号を第1の辞
書を用いて再帰的に復号化して出力し、その後第2の辞
書登録手段がこの復号化された文字列に所定の処理を施
して第2の辞書に登録して次の復号化処理に備えるよう
に構成したので、入力符号に対応する復元文字列を大幅
に速く得ることができる。
復号化手段の検索手段によって入力符号を第2の辞書か
ら検索し、検出されたときは文字列出力手段が第2の辞
書から入力符号に対応する復号化文字列を出力し、検出
されない場合は第1の復号化手段が入力符号を第1の辞
書を用いて再帰的に復号化して出力し、その後第2の辞
書登録手段がこの復号化された文字列に所定の処理を施
して第2の辞書に登録して次の復号化処理に備えるよう
に構成したので、入力符号に対応する復元文字列を大幅
に速く得ることができる。
【0061】また、第2の辞書に最終的な復元文字列を
登録するので、再帰的な復号化処理をその都度行うこと
なく復元文字列を得ることができる。しかも、第2の辞
書の登録をハッシュ関数に基づき行うので、さらに速く
復元文字列を得ることができる。
登録するので、再帰的な復号化処理をその都度行うこと
なく復元文字列を得ることができる。しかも、第2の辞
書の登録をハッシュ関数に基づき行うので、さらに速く
復元文字列を得ることができる。
【図1】本発明の原理説明図である。
【図2】第1の復号化の処理手順を示す図である。
【図3】第2の復号化の処理手順を示す図である。
【図4】第3の復号化の処理手順を示す図である。
【図5】第4の復号化の処理手順を示す図である。
【図6】第2の辞書の内容の一例を示す図である。
【図7】LZW符号化の具体例を示す図である。
【図8】復号化の具体例を示す図である。
【図9】文字列と符号との対応関係を示す図である。
【図10】従来の符号化の処理手順を示す図である。
【図11】従来の復号化の処理手順を示す図である。
1 第1の辞書登録手段 2 第1の復号化手段 3 第1の復号化手段 3a 検索手段 3b 文字列出力手段 4 第2の辞書登録手段
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 昭60−116228(JP,A) 特開 平3−68219(JP,A) 特開 平3−179520(JP,A) 特開 平3−204233(JP,A) 特開 平3−204235(JP,A) (58)調査した分野(Int.Cl.7,DB名) H03M 7/40
Claims (5)
- 【請求項1】 入力符号を第1の辞書を用いて再帰的に
復号化する第1の復号化手段(2)と、前回入力符号と
今回復号化された文字列の第1文字とを組にし、この組
に新たな符号を対応させて前記第1の辞書に登録する第
1の辞書登録手段(1)とを備え、入力符号の復号化を
行うデータ復元方式において、 前記入力符号に基づき復号化された文字列を、前記入力
符号とともに第2の辞書に登録する第2の辞書登録手段
(4)と、 前記第1の復号化手段(2)に基づき復号化を行う前
に、前記入力符号を前記第2の辞書から検索する検索手
段(3a)と、前記検索手段(3a)により前記入力符
号が検出された場合、前記第2の辞書から前記入力符号
に対応する前記復号化された文字列を出力する文字列出
力手段(3b)とを有する第2の復号化手段(3)と、 を有することを特徴とするデータ復元方式。 - 【請求項2】 前記第1の辞書には登録されている入力
符号を参照した頻度を表す参照頻度をさらに設け、前記
第2の辞書登録手段(4)は新たに入力される新規入力
符号が入力されるごとに、前記新規入力符号に対応する
前記参照頻度をカウントするカウント手段を有し、 前記文字列出力手段(3b)は、前記参照頻度が所定値
を超えた場合は、前記第2の辞書から前記入力符号に対
応する前記復号化された文字列を出力する選択手段を有
することを特徴とする請求項1記載のデータ復元方式。 - 【請求項3】 前記検索手段(3a)は、前記入力符号
を前記第2の辞書から一度だけ検索し、前記第1の辞書
から検索することを特徴とする請求項1記載のデータ復
元方式。 - 【請求項4】 前記第2の辞書登録手段(4)、前記検
索手段(3a)及び前記文字列出力手段(3b)は、い
ずれもハッシュ関数に基づいて、前記第2の辞書とアク
セスすることを特徴とする請求項1,2又は3記載のデ
ータ復元方式。 - 【請求項5】 前記第2の辞書登録手段(4)は、前記
入力符号に対応する文字列が前記第2の辞書に既に存在
し、かつ、前記第2の辞書に登録されている文字列より
も今回復号化された文字列のほうが長い文字列である場
合、前記今回復号化された文字列を前記第2の辞書に登
録することを特徴とする請求項4記載のデータ復元方
式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP03275292A JP3117760B2 (ja) | 1991-10-23 | 1991-10-23 | データ復元方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP03275292A JP3117760B2 (ja) | 1991-10-23 | 1991-10-23 | データ復元方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05113998A JPH05113998A (ja) | 1993-05-07 |
JP3117760B2 true JP3117760B2 (ja) | 2000-12-18 |
Family
ID=17553401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP03275292A Expired - Fee Related JP3117760B2 (ja) | 1991-10-23 | 1991-10-23 | データ復元方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3117760B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4586633B2 (ja) * | 2005-05-25 | 2010-11-24 | ソニー株式会社 | デコーダ回路、デコード方法及びデータ記録装置 |
JP5523144B2 (ja) * | 2010-02-25 | 2014-06-18 | キヤノン株式会社 | 情報処理装置及びその制御方法及びプログラム及び記憶媒体 |
-
1991
- 1991-10-23 JP JP03275292A patent/JP3117760B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH05113998A (ja) | 1993-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3541930B2 (ja) | 符号化装置及び復号化装置 | |
US5406278A (en) | Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique | |
JP3241788B2 (ja) | データ圧縮方式 | |
JP3117760B2 (ja) | データ復元方式 | |
JP3038223B2 (ja) | データ圧縮方式 | |
JPH0764765A (ja) | データ圧縮装置及びデータ復元装置 | |
JP3127016B2 (ja) | データ圧縮及び復元方法 | |
JP3241787B2 (ja) | データ圧縮方式 | |
JP3132774B2 (ja) | データ圧縮・復元装置 | |
JP2954749B2 (ja) | データ圧縮方式 | |
JP3105598B2 (ja) | ユニバーサル符号を用いたデータ圧縮方式 | |
JPH05152971A (ja) | データ圧縮・復元方法 | |
JP2774350B2 (ja) | データ圧縮方法および圧縮データのデータ復元方法 | |
JP3130324B2 (ja) | データ圧縮方式 | |
JPH05241775A (ja) | データ圧縮方式 | |
JP3038233B2 (ja) | データ圧縮及び復元装置 | |
JPH06168097A (ja) | データ符号化方式及びデータ復元方式 | |
JPH05113869A (ja) | データ圧縮符号化及び復号化方式 | |
JP3384813B2 (ja) | データ圧縮方式 | |
JP3053656B2 (ja) | データ圧縮における辞書登録方式 | |
JP3051501B2 (ja) | データ圧縮方法 | |
JP3088740B2 (ja) | データ圧縮及び復元方式 | |
JP2799228B2 (ja) | 辞書初期化方式 | |
JP3100206B2 (ja) | データ圧縮方法 | |
JP3388768B2 (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: 20000912 |
|
LAPS | Cancellation because of no payment of annual fees |