JPS6356726B2 - - Google Patents

Info

Publication number
JPS6356726B2
JPS6356726B2 JP59075935A JP7593584A JPS6356726B2 JP S6356726 B2 JPS6356726 B2 JP S6356726B2 JP 59075935 A JP59075935 A JP 59075935A JP 7593584 A JP7593584 A JP 7593584A JP S6356726 B2 JPS6356726 B2 JP S6356726B2
Authority
JP
Japan
Prior art keywords
dictionary
symbol
data stream
string
symbol string
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
Application number
JP59075935A
Other languages
English (en)
Other versions
JPS59231683A (ja
Inventor
Sooru Miraa Bikutaa
Enu Ueguman Maaku
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS59231683A publication Critical patent/JPS59231683A/ja
Publication of JPS6356726B2 publication Critical patent/JPS6356726B2/ja
Granted legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Character Discrimination (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はデータ処理方法、特に伝送又は記憶の
ためのデータの圧縮方法に関する。
〔従来技術〕
先行技術において、多くのデータ圧縮法があ
る。下記の方法はその代表的なものである。
IEEE Transactions on Information Theory
IT―24、pp.530〜536に掲載されたZiv及び
Lempelによる論文“Compression of
Individual Sequences via Variable Rate
Coding”は、本発明が改良を与えている所の基
本的なアルゴリズムを開示している。
Lempel及びZiv(LZ)は、従来の確率に基づい
た方式ではなくアルゴリズムの複雑さの理論に基
づいたデータ圧縮について2つの関連した方法を
提案している。第2の、より単純な方法は、単純
明解な方法で且つ効率的に実現でき、そして多く
のデータに対して満足のゆく圧縮を行なう。しか
しながら、その方法は欠点を有しており、その欠
点は本発明によつて救済される。下記の説明中
で、エンコーダという用語は圧縮プログラムのた
めに用い、デコーダという用語は逆の動作を行な
うプログラムに用いる。LZアルゴリズムは第1
図に示されている。
これは適応性があり、従つて広範囲の異なつた
フアイル型に対して用いる事ができ且つ許容可能
な性能を得る事ができる。
これは圧縮に関する一般的なモデルと考える事
ができる。エンコーダ及びデコーダは共にストリ
ングの辞書を維持し、各時点においてそれらの辞
書はロツク・ステツプ式に変化する。従つて辞書
を伝送するためにビツトを用いる必要はない。こ
れは、ストリングが辞書に付け加えられるのは、
デコーダがそれを見た後のみであり、デコーダは
エンコーダと正確に同じ戦略を用いてストリング
を辞書に付け加えるからである。
LZアルゴリズムは、生じそうな事象を記録し、
生じそうもない事象に関する情報にはスペースを
浪費しない。もしも全ての文字対を圧縮するハフ
マン符号を用いたいならば、64K個の情報が必要
となるであろう。そして単単に2文字列の頻度に
ついての情報しか得られないであろう。一方上記
方法を用いれば、もしも100文字ストリングがあ
ればシステムは最初にその100文字ストリングに
ついて「学習」するであろう。
また80個のブランクからなるストリングが文字
「Z」よりも頻繁に現われるという情報を記憶す
る事がより重要であるかもしれない。ブランクの
ラインが文字「Z」よりも頻繁に現われるならば
それはより重要であり、LZアルゴリズムはちよ
うどそのようにそれらについての情報を記憶す
る。
他の特徴は辞書に関する良好な表現が存在する
事である。辞書の項目によつて表わされる文字の
ストリングがどの位の長さかに無関係に、各々の
辞書の項目毎に固定数のビツトを保つ事ができ
る。
〔発明が解決しようとする問題点〕
上記方法に伴なう第1の問題は、出力の一部
が、入力からの非圧縮記号より成る事である。す
なわち、第1図の上から3番目のステツプに示さ
れるように、既に辞書中に存在するストリングS
の番号(インデツクス)に加えて、Sに続く文字
の情報を含またものが出力される。この事は漸近
的に僅かの影響しか与えなくなるが、実際のデー
タに関してはかなりの影響を有する。例えば、も
しフアイルが上記アルゴリズムによつて20000の
シーケンスに分割されるならば、出力の1/3以上
が非圧縮文字から成るであろう。
本発明の目的は、遠隔端末データ通信システム
における回線コストを低減し且つ伝送効率を高め
るために、文字拡張の改良、ストリング拡張の改
良及びLRUアルゴリズムの改良を含む方法によ
つて、記憶又は伝送のためにデータを圧縮する事
である。
〔問題点を解決するための手段〕
上記目的を達成するための第1の方法は、一連
の記号からなるデータ・ストリームを圧縮するた
めの、記憶装置を備えたデータ圧縮システムにお
いて、圧縮対象のデータ・ストリーム中に出現し
た記号列を上記記憶装置の中に形成した辞書に登
録しながら上記データ・ストリームを圧縮する方
法であつて、 (a) 圧縮対象のデータ・ストリームに現れる可能
性のあるすべての記号を、それぞれにインデツ
クスを付して上記辞書に登録し、 (b) 上記データ・ストリームのうちの未圧縮の部
分の始まりを示すポインタを上記データ・スト
リームの先頭の記号にセツトし、 (c) 上記辞書に登録されている記号列のうち、現
在上記ポインタがセツトされている記号から始
まるデータ・ストリームの少なくとも一部に一
致する最長の記号列Sを決定し、 (d) 上記記号Sに付されたインデツクスに関する
情報を利用装置に送り、 (e) 上記記号列Sおよび上記データ・ストリーム
中でその直後に現れる記号Cを連結した記号列
を、上記辞書にインデツクスを付して登録し、 (f) 上記ポインタを上記記号Cにセツトし、 (g) 以下、上記圧縮対象のデータ・ストリームの
圧縮が完了するまで、上記(c)ないし(f)のステツ
プの実行を繰り返す ことを特徴とする。
また、上記目的を達成するための第2の方法
は、上記(c)〜(g)のステツプに代えて、 (c′) 上記辞書に登録されている記号列のうち、
現在上記ポインタがセツトされている記号から
始まるデータ・ストリームの少なくとも一部に
一致する最長の記号列S′を決定し、 (d′) 上記記号列S′に付されたインデツクスに関
する情報を利用装置に送り、 (e′) 上記ポインタを、上記データ・ストリーム
中で上記記号列S′の直後に現れる記号Cにセツ
トし、 (f′) 上記辞書に登録されているシンボル列のう
ち、上記記号Cから始まるデータ・ストリーム
の少なくとも一部に一致する最長の記号列Sを
決定し、 (g′) 上記記号列Sに付されたインデツクスに関
する情報を利用装置に送り、 (h′) 上記記号列S′と上記記号Cを連結した記号
列を、上記辞書にインデツクスを付して登録
し、 (i′)登録 以下、記号列Sを記号列S′として上記
ステツプ(e′)ないし(h′)を実行すること
を、上記圧縮対象のデータ・ストリームの圧縮
が完了するまで繰り返す ことを特徴とする。
また、上記目的を達成するための第3の方法
は、上記第2の方法の(h′)のステツプに代え
て、 (h″) 上記記号列S′と上記記号列Sを連結した記
号を、上記辞書にインデツクスを付して登録す
る ことを特徴とする。
これらの何れの方法においても、利用装置へは
上記辞書に登録されている記号列のインデツクス
を示す符号が送られるだけである。したがつて既
登録のストリングのインデツクスに圧縮されてい
ない記号を付加して送つていた従来のLZ法に比
べて、圧縮率が向上し、したがつて回線を通して
行う伝送の効率も高まる。
本発明の1態様によれば、上記の方法によつて
上位計算システムと1以上の遠隔端末との間のデ
ータ伝送が制御される。
〔実施例〕
本発明は、いかなる非圧縮データの伝送も避け
る。出力全体は識別番号のシーケンスより構成さ
れる。本発明は第2図乃至第5図を参照して説明
される。
ここで、本明細書で用いる用語を説明してお
く。
ストリングとは記号列のことであり、したがつ
て長さ1のストリングとは1つの記号だけからな
る記号列のことである。記号の例としては、アル
フアベツトの文字を挙げることができる。なお、
上記(c)、(f′)のステツプで決定されるストリン
グを一致ストリングと呼ぶことにする。
記憶装置の中に形成される辞書は複数のスロツ
トに区分され、1つのストリング(記号列)は1
つのスロツトに収められる。各スロツトには識別
番号(単に番号と呼ぶこともある)がついてお
り、実施例ではこのような識別番号をインデツク
スとして用いている。
利用装置は、復号器を備えた受信装置であつて
もよいし、あるいは符号をそのまま蓄積する記憶
装置であつてもよい。辞書は、利用装置の側で記
憶装置を用意してその中に符号器側とは別個に形
成してもよい。つまり、上記第1の方法を例にと
つて説明すると、こういうことである。今、辞書
中のストリングSのインデツクスに続いてストリ
ングS1のインデツクスが送られたとしよう。利用
装置は、辞書を参照することによつてストリング
S1の先頭に位置する記号Cを知ることができるの
で、ストリングSと記号Cを連結した新たなスト
リングを自分の辞書の中に登録することができ
る。
あるいは符号器と復号器が1つの辞書を共用す
ることも考えられる。
ポインタの具体例として、以下ではカーソルを
取り上げている。
第2図を参照すると、本発明の上記第1の方法
の1例が説明されている。第1のステツプでは、
辞書を第1図に示す従来例のごとく空ストリング
を含むように初期設定する代りに、長さ1の全て
のストリングを含むように辞書を初期設定する。
従つて一致は常に見い出される。辞書は、一致の
生じた次のストリングの最初の文字と連結された
ストリングSを付加する事によつて増補される。
次のステツプにおいて、ストリングの最初の文
字が常に知られているので、カーソル前方からの
データ・ストリーム中の現行のストリングと一致
する最長のストリングSが辞書中に見い出され
る。
つまり、第2図の第1のステツプにおいて、圧
縮対象のデータ・ストリーム中に現れる可能性の
あるすべての記号が辞書に登録されているのであ
るから、最短の場合でも長さ1の一致ストリング
が辞書の中に見つかるわけである。
Lempel及びZivにより行なわれたもう1つの仮
定は、辞書が無限の大きさに成長し得る事であ
る。これを、第2図の例に即して説明してみよ
う。圧縮対象のデータ・ストリームの未圧縮の部
分の先頭部において、上記のようにして見つかつ
たストリングSの直後に現れる文字(記号)をC
とすると、SとCとを連結したストリング(以
下、単に(S、C)と記す)は当然辞書に存在し
ていない。そこで、(S、C)を辞書に登録する
ことが求められるが、そのためのステツプが第2
図の上から3番目、4番目のステツプである。
第2図のフローチヤートからわかるように、辞
書に新たに登録されるストリングには、(A+1)
以上の整数が順次割り振られる。つまり、第2図
に示す例においては、サイズが実質的に無限であ
つて、スロツトが始めから無数にあるか、または
際限なくスロツトを作り足していくことのでき
る、そういつた辞書を対象としたデータ圧縮方法
が記されているのである。
本方法では、ストリングSの圧縮データとし
て、辞書の中のSのインデツクス(識別番号)の
符号を送るようにしているわけだが、このように
識別番号が無限に増加する可能性があるので、識
別番号の符号を固定長とすることはできない。
そこで、第3のステツプにおいて、符号長が
徐々に増加できるように取り図らつている。すな
わち、(S、C)を識別番号(n+1)のスロツ
トに収める際にSの識別番号を利用装置に送るわ
けだが、その場合Sの識別番号は「log2n〓ビツ
トの符号で表わされる。具体的に言うと、利用装
置へ一番最初に送られる符号の長さは「log2A〓
ビツトであり、以下、「log2(A+1)〓ビツト、
「log2(A+2〓ビツト…という具合にビツト数が
増加していく。ここで「〓は、次のような意味を
持つ。すなわち、aを整数とし、xがa≦x<a
+1なる数であるとき、「x〓は整数aを与える。
例えば、「log23〓=1、「log24〓=2、「log25〓
=2、である。
このように、利用装置へ送られる符号の符号長
が一定の規則性で増加していくので、利用装置側
において送られてくるビツトストリームを正しく
解釈することが可能にある。
しかしながら、辞書の形成される記憶装置の容
量が膨大である場合、または圧縮対象となるデー
タ・ストリームが比較的短いことが予めわかつて
いる場合はともかく、上記例のように辞書が無限
の大きさに成長し得ることはなかなか実際的なこ
とではない。Lempel及びZivによつて推賞されて
いる方法は、利用可能なスペースを丁度辞書が一
杯にするようなセグメントに入力をブロツク化
し、各ブロツクを独立的に圧縮する事である。し
かしながら、辞書中の各ストリングを置き換える
事はずつと有利である。第3図は、第2図で示し
た本発明の第1の方法にLRU法の考えを採用し
た別の例である。上から2番目のステツプまで
は、第2図と同じである。本例では、辞書のサイ
ズは有限であることを意識している。つまり、辞
書のインデツクス(スロツトの識別番号)の総数
2nは予め決まつている。したがつて、本例では3
番目のステツプに示すように利用装置に送るイン
デツクスの符号長をnビツトに固定している。も
ちろん、インデツクスを表わす符号は、0ないし
(2n−1)の数を単にそのまま2進法で記したも
のであつてもよい。4番目のステツプは、ある意
味で最近、最も使われなかつたストリングを捨て
るステツプである。(第4図参照)ストリングは、
もしそれが一致したならば又は一致したものの接
頭部分であれば、「使用された」と定義される。
他の定義は辞書中の各ストリングに伴なう参照カ
ウントに関連する。ストリングSの参照カウント
は、あるストリングT(1記号だけからなる場合
も含む)に関して(S、T)または(T、S)の
形を有する辞書中のストリングの数である。な
お、(S、S)は2回カウントされる。
参照カウントが0であつたストリングのうち、
最長のものが「最近もつとも使用されていない」
ものである。5番目のステツプでは、4番目のス
テツプで定められたスロツトに、ストリング
(S、C)が格納される。
さて、利用装置側でも辞書を備えており、その
辞書を更新しながら、復号も行う場合を考えてみ
よう。以下で述べるステツプは、上記〔門題点を
解決するための手段〕の欄での説明に対応してい
る。
今、上記第1の方法を採用するデータ圧縮シス
テム側において、一致ストリングS′の決定(ステ
ツプ(c))、S′のインデツクスに関する情報の利用
装置への送信(ステツプ(d))、S′とCとを連結し
たストリング(S′、C)のデータ圧縮システムの
辞書への登録(ステツプ(e))が行われた後、再び
ステツプ(c)に戻つたとたんに、次の一致ストリン
グSとしてストリング(S′、C)が選択されたと
する。
上述のように、上記第1の方法の下で利用装置
側でも辞書の更新を行う場合は、送られてきたS
のインデツクスの情報をもとに利用装置側の辞書
を検索してS、したがつてその先頭の記号Cを知
り、これとS′を連結することによつて(S′、C)
を得ているわけだが、この場合はSがまだ利用装
置側の辞書には登録されていないため、インデツ
クスの情報を送られてきても利用装置はSを(し
たがつて、もちろんCも)知ることができないと
いうことになる。もちろん、そのような事態が起
こつた場合には利用装置がデータ圧縮システム内
の辞書を参照するようにして差し支えない。
上記事態の発生がまれであると考えられるなら
ば、このようなオーバーヘツドも十分許容でき
る。
しかし、上記オーバーヘツドが許されない環境
もある。そのような環境の下では、上記第1の方
法のステツプの流れに若干変更を加えた第2の方
法を採用することによつて、上記事態の発生を防
止できる。以下、簡単ではあるが、第2の方法に
ついて簡単に述べよう。
上記ストリングS′、S、そしてSの先頭の記号
Cを例にとつて説明する。上記第1の方法では、
データ圧縮システム内の辞書への新しいストリン
グ(S′、C)の登録は、Sが見い出される前に行
われる。これに対し、上記第2の方法では、〔問
題点を解決するための手段〕においてステツプ
(c′)〜(h′)として示したように、新しいスト
リング(S′、C)は、次の一致ストリングSが見
出された後に辞書に付加される。つまり、一致ス
トリングSが見出され、Sのインデツクスに関す
る情報が利用装置へ送られた後に、(S′、C)は
データ圧縮システムの辞書に登録される。つま
り、この第2の方法によれば、一致ストリングと
してS′が選ばれた直後には、(S′、C)はまだ辞
書に登録されていないので、(S′、C)が次の一
致ストリングとして選ばれることはない。そし
て、次の一致ストリングとして選ばれるものは、
利用装置側の辞書にも登録済であるから、上記第
1の方法における不都合は生じない。利用装置側
では、S′とSの各インデツクスに関する情報を受
け取つた後、辞書の中からS′とSを検索し、S′と
Sの先頭の記号Cとを連結して(S′、C)を自分
の辞書に登録すればよい。
なお、この第2の方法についても、辞書が無限
サイズである場合、したがつて符号長が増大して
いく場合と、辞書が有限サイズである場合、した
がつて符号長が一定である一方、LRU法を取り
入れるべきである場合の両方について適用可能で
あるが、その詳しい説明は第2図および第3図に
関して行つたものと重複するので、ここでは省略
する。
ある意味において、辞書は、圧縮されるフアイ
ルの自然なユニツトで満たされるべきである。英
語において、この事は、辞書中の殆どの記入項目
がワード又はフレーズである事を意味するであろ
う。しかしながら、より大きなユニツトを構成す
るために使われる方法は、ユニツトではない遷移
物を経由しなければならない。従つて、1つのワ
ードに他のワードの前半分を加えたものから成る
ユニツトを持つ事があり得る。ワード全体ではな
くワードの後半を辞書中に有する事はありそうも
ない事である。さらに、もしワードの断片が辞書
中に記憶されていれば、辞書が、そのあるべき大
きさよりも大きくなるかもしれない。例えば、も
し辞書の4分の3が決して又はまれにしか使われ
ないストリングを有していれば、それらの無用の
記入項目を参照できるように各ビツトの伝送に2
個の余分のビツトが用いられるであろう。さらに
長いストリングに適応するために長時間を要する
であろう。これら全ての問題は、第1の一致スト
リングと第2の一致ストリングの最初の文字との
連結ではなく、2つの一致ストリングの連結であ
るような記入項目を、辞書に付加する事によつ
て、改善される。
これら3つの概念を組み合せると、第4図にそ
の例を示す第3の方法が得られる。
第4図を第3図(第1の方法)と比較して根本
的に異なる点は、その最後のステツプにおいて、
第3図では一致ストリングとその直後の1文字が
新たなストリングとして辞書に登録されるのに対
し、第4図では一致ストリングとその次の一致ス
トリングを連結したものが辞書に登録されること
だけである。また、上記第2の方法と比較して言
うと、第3の方法は、〔問題点を解決するための
手段〕で述べた第2の方法の(h′)のステツプが
(h″)のステツプに置き換わつたものと言える。
つまり、第1および第2の方法によれば、辞書
に登録されるストリングが1記号ずつしか成長し
ないのに対し、この第3の方法によれば、既登録
のストリング同士を連結した長いストリングが一
挙に登録され得るわけである。
より具体的に説明しよう。今、圧縮対象のデー
タ・ストリーム中に、ストリングabc、def、そ
してabcdefが極わて頻繁に出現するのに対し、
ストリングabcd、abcdeは全く出現しない場合を
想定してみる。第1、第2の方法によれば、スト
リングabc、defが登録されても、ストリング
abcdefが登録されるまでには、ストリング
abcd。、bcdeを登録する段階を経なければならな
い。したがつて、ストリングabcdefを直ちに圧
縮した形で利用装置へ送れないという点で、圧
縮・伝送の効率が下がるという問題点がある。ま
た、辞書の中に使わないストリングabcd、abcde
を登録しなければならないので、その分記憶容量
が無駄になる。
これに対し、第3の方法によれば、ストリング
abc、defが登録された後、データ・ストリーム
中にストリングabcdefが現れると、このストリ
ングabcdefは辞書の中に直ちに登録されるので、
この後でストリングabcdefgが登録したときに
は、a〜fの部分は辞書のインデツクスに関する
情報という形で圧縮して送れる。したがつて圧
縮・伝送の効率が良い。
また、使われるこのとないストリングabcd、
abcdeを登録しなくてよいので、辞書のスロツト
を有効に使うことができる。
なお、第4図では、辞書のサイズが有限である
場合を例にとつて上記第3の方法を説明した。し
かしながら、この第3の方法は、もちろん辞書の
サイズが実質上無限である場合にも適用できる。
その例を示したのが第5図である。第5図は、い
わば第2図と第4図を組み合わせただけなので、
詳しい説明は省略する。
実用化を行なう上での主要な困難は、ストリン
グの辞書のための良好なデータ構造を発見する事
にある。この構造は、小さく且つ迅速な検索を可
能にするものであるべきである。
最初に、全てのコード化が、最後に与えられた
ものをセーブするために充分なデータ構造を説明
する。これら全ての構造の大きさは、辞書中にス
トリングの数に比例し、ストリングの大きさには
依存しない。
最初のコード化において、辞書中の全てのスト
リングSは、Sの接頭部P(Pも辞書中にある)
よりも1文字だけ長いか又は1文字の長さのいず
れかである。従つて、辞書は木に似ている。木の
根幹は空ストリングである。(根幹を除く)各節
は、その節をラベルしているストリングから最後
の記号を省略したものを表わす節の子である。コ
ード化アルゴリズムにおいて、最初に接頭部分を
認識し次にそれが次の文字に一致する子を持つか
どうかを見る事によつて認識が行なわれる。n
を、親がPの節とし、Cを、nに対応するストリ
ングの最後の文字(Pに対応するストリング中に
は存在しない文字)であるとする。対(P、C)
によつてインデツクスされるハツシユ表は、その
ような子があれば、nを返す。ハツシユ技術は当
業者に周知であり、ここに詳細を示す必要はな
い。従つて、節が与えられると、より長い一致が
存在するか否かを即座に答える事ができる。デコ
ード・アルゴリズムも同様に働くが、ハツシユ表
の代りにnからの単純なポインタを用いれば充分
である。
LRUコード化は小さな問題を生じる。注意す
べき唯一の事は、孔が辞書に残留し得ない事であ
る。例えばストリング「abc」は、ストリング
「ab」が追い出された時は辞書中に留まる事がで
きない。最も単純な戦略は、ストリングが木の葉
の時にだけLRUリスト上のストリングを置換す
る事である。従つて、新しいストリング又はその
子が削除されてしまつたストリングが、削除の候
補になる。
ストリング連結法は、より難しい方法である。
2つのデータ構造が維持されなければならない。
1つの構造は識別子木と呼ばれ、一致の候補を迅
速に発見するために用いられる。この構造は上記
の辞書と類似しており、接頭部木に似ている。も
う1つのデータ構造は対の森と呼ばれ、候補の間
で選択する事を可能にする。対の森は簡潔に全て
のストリングを表現する。各ストリングは節によ
つて表現される。節は、他の節に対する2つのポ
インタ又は1つの文字のいずれかである。従つ
て、辞書中の2つのストリングの連結は、両者を
指示する節によつて表現され得る。森の中の全て
の節は配列中に置かれ、そのi番目の要素は辞書
のi番目のストリングを指示する。
識別子木は、節nの親Pが、nによつて表わさ
れるストリングの接頭部に対応するという特性を
維持する。しかしながら、接頭部は2文字以上短
かくてもよい。さらに、必ずしも木の中の全ての
節が辞書中のストリングに対応するとは限らな
い。それらは辞書中のストリングの接頭部であつ
てもよい。
辞書中の他のストリングの接頭部ではない、辞
書中の全てのストリングは、識別子木の葉に対応
する。辞書中の他の全てのストリングも、内部の
節として木の中に配置される。もしSが2つ以上
のストリングの接頭部であれば、例えば辞書中に
S:sub./1/及びS:sub./2/があつてSが
そのようなストリングの最長のものであるとする
と、例えSが辞書中に存在しなくても、Sに対応
する節Nが木の中に存在する。我々はSを効率的
に記憶できないので、対の森においてS:sub./
1/又はS:sub./2/のいずれかに対するポイ
ンタをnの中に記憶する。この情報からSを再構
成する事が可能である。
各節を用いて、それが一致するストリングの長
さが記憶される。前記のように、ハツシユ表を用
いれば、親から適当な子を見つけ出す事が可能に
なる。従つて、もしも木の葉であるストリングに
一致させようとするならば、根から出発し、最初
の文字をハツシユして次の節を見つける。次にこ
の節からそれが一致するストリングの長さを見つ
け、そしてその後の文字を見つける。次にこの節
及びその文字からハツシングにより次の節を見い
出す。以上の過程を候補一致を見つけ出すまで反
復する。もし候補一致がハツシングにおいて用い
られなかつた文字上のテキストと一致しなけれ
ば、問題が生じる。
この地点で、辞書中の実際の一致は、識別子木
によつて見い出されたストリング又はその接頭部
のいずれかでなければならない。対の森は、圧縮
されつつあるテキストと一致する候補一致の最長
の接頭部を見い出すために使われる。この過程が
継続する時、この接頭部に対応する辞書中の最長
のストリングを見い出すために識別子木が走査さ
れる。そのストリングは正しい一致である。
ストリング拡張アルゴリズムにおいて、ストリ
ングを識別子木につけ加える時にそれが既にそこ
に存在しているという可能性がある事に注意すべ
きである。その場合には、識別子木に何の変更も
行なわれるべきでない。
ここで提案した方法は、文字のストリング中の
次の文字(又はビツトのストリング中のビツト)
に関する確率分布を作るためにも用いる事ができ
る。これはデータ認識に関係した応用にも有用か
もしれない。例えば光学スキヤナはしばしば特定
の文字が「n」又は「h」のいずれかであると告
げる事ができる。しかしそれらを区別する事は困
難かもしれない。そのような場合、もしも現在の
文字ストリングに続いて「h」の生じる確率が非
常に低ければ、スキヤナは次の文字を「n」であ
ると判定し得る。もう1つの例は音声認識におけ
る音素又はワードの認識である。
多くの著者が、予測を行なうために任意の圧縮
方法が使える事を示している。例えばThomas
M.Cover、“Universal Gambling Schemes and
the Complexity Measures of Kolmogorov
and Chaitin”technical report No.12 0ct.14、
1974、Dept.of Statistics、Stanford University
を参照されたい。
〔発明の効果〕
本発明を用いれば、従来のLZアルゴリズムよ
りも効率的にデータを圧縮することができる。
【図面の簡単な説明】
第1図は従来技術の方法を示す図、第2図乃至
第5図は各々本発明の実施方法を示す図である。

Claims (1)

  1. 【特許請求の範囲】 1 一連の記号からなるデータ・ストリームを圧
    縮するための、記憶装置を備えたデータ圧縮シス
    テムにおいて、圧縮対象のデータ・ストリーム中
    に出現した記号列を上記記憶装置の中に形成した
    辞書に登録しながら上記データ・ストリームを圧
    縮する方法であつて、 (a) 圧縮対象のデータ・ストリームに現れる可能
    性のあるすべての記号を、それぞれにインデツ
    クスを付して上記辞書に登録し、 (b) 上記データ・ストリームのうちの未圧縮の部
    分の始まりを示すポインタを上記データ・スト
    リームの先頭の記号にセツトし、 (c) 上記辞書に登録されている記号列のうち、現
    在上記ポインタがセツトされている記号から始
    まるデータ・ストリームの少なくとも一部に一
    致する最長の記号列Sを決定し、 (d) 上記記号列Sに付されたインデツクスに関す
    る情報を利用装置に送り、 (e) 上記記号列Sおよび上記データ・ストリーム
    中でその直後に現れる記号Cを連結した記号列
    を、上記辞書にインデツクスを付して登録し、 (f) 上記ポインタを上記記号Cにセツトし、 (g) 以下、上記圧縮対象のデータ・ストリームの
    圧縮が完了するまで、上記(c)ないし(f)のステツ
    プの実行を繰り返す ことを特徴とするデータ圧縮方法。 2 上記辞書のサイズは有限であり、 上記(d)のステツプでは、上記インデツクスを一
    定ビツト数の符号で表現して上記利用装置に送
    り、 上記(e)のステツプにおいて、上記辞書が一杯で
    あるときは、上記(c)のステツプで最近もつとも使
    用されることのなかつた記号列を上記辞書から削
    除し、その代りに、上記記号列Sと記号Cを連結
    した記号列を、上記辞書に、それまで上記削除さ
    れた記号列に使われていたインデツクスを付して
    登録する ことを特徴とする特許請求の範囲第1項記載のデ
    ータ圧縮方法。 3 上記辞書のサイズは実質上無限であり、 上記(d)のステツプでは、上記インデツクスを符
    号化して上記利用装置に送り、その際の符号長は
    圧縮を開始してからの上記(d)のステツプの実行回
    数に対応して増加する。 ことを特徴とする特許請求の範囲第1項記載のデ
    ータ圧縮方法。 4 一連の記号からなるデータ・ストリームを圧
    縮するための、記憶装置を備えたデータ圧縮シス
    テムにおいて、圧縮対象のデータ・ストリーム中
    に出現する記号列を上記記憶装置の中に形成した
    辞書に登録しながら上記データ・ストリームを圧
    縮する方法であつて、 (a) 圧縮対象のデータ・ストリームに現れる可能
    性のあるすべての記号を、それぞれにインデツ
    クスを付して上記辞書に登録し、 (b) 上記データ・ストリームのうちの未圧縮の部
    分の始まりを示すポインタを上記データ・スト
    リームの先頭の記号にセツトし、 (c) 上記辞書に登録されている記号列のうち、現
    在上記ポインタがセツトされている記号から始
    まるデータ・ストリームの少なくとも一部に一
    致する最長の記号S′を決定し、 (d) 上記記号列S′に付されたインデツクスに関す
    る情報を利用装置に送り、 (e) 上記ポインタを、上記データ・ストリーム中
    で上記記号列S′の直後に現れる記号Cにセツト
    し、 (f) 上記辞書に登録されている記号列のうち、上
    記記号Cから始まるデータ・ストリームの少な
    くとも一部に一致する最長の記号列Sを決定
    し、 (g) 上記記号列Sに付されたインデツクスに関す
    る情報を利用装置に送り、 (h) 上記記号列S′と上記記号Cを連結した記号列
    を、上記辞書にインデツクスを付して登録し、 (i) 以下、記号列Sを記号列S′として上記ステツ
    プ(e)ないし(h)を実行することを、上記圧縮対象
    のデータ・ストリームの圧縮が完了するまで繰
    り返す ことを特徴とするデータ圧縮方法。 5 上記辞書のサイズは有限であり、 上記(d)または(g)のステツプでは、上記インデツ
    クスを一定ビツト数の符号で表現して上記利用装
    置に送り、 上記(h)のステツプにおいて、上記辞書が一杯で
    あるときは、上記(c)または(f)のステツプで最近も
    つとも使用されることのなかつた記号列を上記辞
    書から削除し、その代り上記記号列S′と記号Cを
    連結した記号列を、上記辞書に、それまで上記削
    除された記号列に使われていたインデツクスを付
    して登録する ことを特徴とする特許請求の範囲第4項記載のデ
    ータ圧縮方法。 6 上記辞書のサイズは実質上無限であり、 上記(d)または(g)のステツプでは、上記インデツ
    クスを符号化して上記利用装置に送り、その際の
    符号長は圧縮を開始してからの上記(d)または(g)の
    ステツプの実行回数に対応して増加する ことを特徴とする特許請求の範囲第4項記載のデ
    ータ圧縮方法。 7 一連の記号からなるデータ・ストリームを圧
    縮するための記憶装置を備えたデータ圧縮システ
    ムにおいて、圧縮対象のデータ・ストリーム中に
    出現する記号列を上記記憶装置の中に形成した辞
    書に登録しながら上記データ・ストリームを圧縮
    する方法であつて、 (a) 圧縮対象のデータ・ストリームに現れる可能
    性のあるすべての記号を、それぞれにインデツ
    クスを付して上記辞書に登録し、 (b) 上記データ・ストリームのうちの未圧縮の部
    分の始まりを示すポインタを上記データ・スト
    リームの先頭の記号にセツトし、 (c) 上記辞書に登録されている記号列のうち、現
    在上記ポインタがセツトされている記号から始
    まるデータ・ストリームの少なくとも一部に一
    致する最長の記号列S′を決定し、 (d) 上記記号列S′に付されたインデツクスに関す
    る情報を利用装置に送り、 (e) 上記ポインタを、上記データ・ストリーム中
    で上記記号列S′の直後に現れる記号Cにセツト
    し、 (f) 上記辞書に登録されている記号列のうち、上
    記記号Cから始まるデータ・ストリームの少な
    くとも一部に一致する最長の記号列Sを決定
    し、 (g) 上記記号列Sに付されたインデツクスに関す
    る情報を利用装置に送り、 (h) 上記記号列S′と上記記号列Sを連結した記号
    列を、上記辞書にインデツクスを付して登録
    し、 (i) 以下、記号列Sを記号列S′として上記ステツ
    プ(e)ないし(h)を実行することを、上記圧縮対象
    のデータ・ストリームの圧縮が完了するまで繰
    り返す ことを特徴とするデータ圧縮方法。 8 上記辞書のサイズは有限であり、 上記(d)または(g)のステツプでは、上記インデツ
    クスを一定ビツト数の符号で表現して上記利用装
    置に送り、 上記(h)のステツプにおいて、上記辞書が一杯で
    あるときは、上記(c)または(f)のステツプで最近も
    つとも使用されることのなかつた記号列を上記辞
    書から削除し、その代り上記記号列S′と記号列S
    を連結した記号列を、上記辞書に、それまで上記
    削除された記号列に使われていたインデツクスを
    付して登録する ことを特徴とする特許請求の範囲第7項記載のデ
    ータ圧縮方法。 9 上記辞書のサイズは実質上無限であり、 上記(d)または(g)のステツプでは、上記インデツ
    クスを符号化して上記利用装置に送り、その際の
    符号長は圧縮を開始してからの上記(d)または(g)の
    ステツプの実行回数に対応して増加する ことを特徴とする特許請求の範囲第7項記載のデ
    ータ圧縮方法。
JP59075935A 1983-06-01 1984-04-17 データ圧縮方法 Granted JPS59231683A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US49994383A 1983-06-01 1983-06-01
US499943 1983-06-01

Publications (2)

Publication Number Publication Date
JPS59231683A JPS59231683A (ja) 1984-12-26
JPS6356726B2 true JPS6356726B2 (ja) 1988-11-09

Family

ID=23987404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP59075935A Granted JPS59231683A (ja) 1983-06-01 1984-04-17 データ圧縮方法

Country Status (4)

Country Link
EP (1) EP0127815B1 (ja)
JP (1) JPS59231683A (ja)
DE (1) DE3485824T2 (ja)
HK (1) HK7895A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11379506B2 (en) 2014-09-26 2022-07-05 Oracle International Corporation Techniques for similarity analysis and data enrichment using knowledge sources

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
JPS63209229A (ja) * 1987-02-25 1988-08-30 Oki Electric Ind Co Ltd デ−タ文圧縮符号化方法
JPS63209228A (ja) * 1987-02-25 1988-08-30 Oki Electric Ind Co Ltd デ−タ圧縮方法
US4899147A (en) * 1988-06-03 1990-02-06 Unisys Corporation Data compression/decompression apparatus with throttle, start-up and backward read controls
GB8815978D0 (en) * 1988-07-05 1988-08-10 British Telecomm Method & apparatus for encoding decoding & transmitting data in compressed form
GB8828796D0 (en) * 1988-12-09 1989-01-18 British Telecomm Data compression
DE3914589A1 (de) * 1989-05-03 1990-11-08 Bosch Gmbh Robert Verfahren zur datenreduktion bei strassennamen
US5010345A (en) * 1989-12-28 1991-04-23 International Business Machines Corporation Data compression method
US5001478A (en) * 1989-12-28 1991-03-19 International Business Machines Corporation Method of encoding compressed data
US5184126A (en) * 1989-12-28 1993-02-02 International Business Machines Corporation Method of decompressing compressed data
US5010344A (en) * 1989-12-28 1991-04-23 International Business Machines Corporation Method of decoding compressed data
US5142282A (en) * 1990-11-07 1992-08-25 Hewlett-Packard Company Data compression dictionary access minimization
US5455577A (en) * 1993-03-12 1995-10-03 Microsoft Corporation Method and system for data compression
EP0718980A1 (en) * 1994-12-20 1996-06-26 International Business Machines Corporation Data compression method of individual sequences of strings of a data stream based on a dictionary and device for performing the same
JP3426385B2 (ja) * 1995-03-09 2003-07-14 富士通株式会社 ディスク制御装置
EP1895664A3 (en) * 2000-07-25 2008-03-26 Juniper Networks, Inc. System and method for incremental and continuous data compression
ATE397346T1 (de) 2000-07-25 2008-06-15 Juniper Networks Inc Netzwerkarchitektur und verfahren zur transparenten online-querschnittskodierung und zum transport von netzwerkkommunikationsdaten
US6856651B2 (en) 2000-07-25 2005-02-15 Peribit Networks, Inc. System and method for incremental and continuous data compression

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5659349A (en) * 1979-10-02 1981-05-22 Ibm Bit string compaction method

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4386416A (en) * 1980-06-02 1983-05-31 Mostek Corporation Data compression, encryption, and in-line transmission system
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5659349A (en) * 1979-10-02 1981-05-22 Ibm Bit string compaction method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11379506B2 (en) 2014-09-26 2022-07-05 Oracle International Corporation Techniques for similarity analysis and data enrichment using knowledge sources

Also Published As

Publication number Publication date
DE3485824T2 (de) 1993-03-04
EP0127815A2 (en) 1984-12-12
EP0127815B1 (en) 1992-07-22
EP0127815A3 (en) 1988-07-27
DE3485824D1 (de) 1992-08-27
JPS59231683A (ja) 1984-12-26
HK7895A (en) 1995-01-27

Similar Documents

Publication Publication Date Title
US4814746A (en) Data compression method
JP3273119B2 (ja) データ圧縮・伸長装置
CA2263453C (en) A lempel-ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US5229768A (en) Adaptive data compression system
EP0695040B1 (en) Data compressing method and data decompressing method
US6100824A (en) System and method for data compression
JPS6356726B2 (ja)
JPH0779262B2 (ja) 圧縮データの符号化方法
WO1998006028A9 (en) A lempel-ziv data compression technique utilizing a dicionary pre-filled with fequent letter combinations, words and/or phrases
JP2979106B2 (ja) データ圧縮
US5585793A (en) Order preserving data translation
JPH03204233A (ja) データ圧縮方法
JP2531508B2 (ja) デ―タ列圧縮の方法
Reznik Coding of sets of words
US5010344A (en) Method of decoding compressed data
JPH03204234A (ja) 圧縮データ復元方法
Lin A hardware architecture for the LZW compression and decompression algorithms based on parallel dictionaries
Ghuge Map and Trie based Compression Algorithm for Data Transmission
JPH05241776A (ja) データ圧縮方式
Yuanfu et al. The methods of improving the compression ratio of LZ77 family data compression algorithms
Klein et al. Parallel Lempel Ziv Coding
Salomon et al. Dictionary methods
Choi Comparison of Methods for Text Compression
Mukherjee et al. Text compression
Raj et al. Adaptive lossless forward move dictionary based compression

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term