【発明の詳細な説明】
(技術分野)
本発明はデータを圧縮する方法および装置、圧縮されたデータをデコードする方
法および装置、データを送信する方法、および圧縮されたデータを利用するデー
タ処理装置に関する。
上記方法および装置はサーチツリー(検索水)を有するディクシッナリを必要と
する適応ストリングエンコード技術とこのサーチツリーを維持するための手段を
すべて利用する。本発明は特殊だが専用的ではないZiv−Lempelアルゴ
リズムを利用する適応ストリングエンコードに適用できる。このアルゴリズムの
基本的な手法はIEEE Transactions’JT−28,3rd M
ay1977 ppB97−348°A Universal Algorit
hm for 5equentia!Data Compression ”
−J、 Zlv and A、 Le+mpelに記載されている。
(背景技術)
基本的なZiv−Lempelエンコーダは各エントリ(登B)が関連するイン
デックス番号を持つディクシ5ナリを有する。初め、ディクシッナリはソースで
ある基本的なアルファベットのみを含む。エンコード処理中、新しいディクショ
ナリエントリは単独のシンボルを存在するエントリに追加することによって作ら
れる。ディクシ5ナリはソースアルファベットの接続されたシンボルのサーチツ
リー構造であると考えられるだろう。ツリーにおけるノード(8点)はツリーの
根で始まるシンボルの特別のシーケンスに対応し、データはツリーにおけるノー
ドに対応する圧縮されていない入力データのシンポルのストリングを認識し、適
合したノードに対応するメモリ位置のインデックスを送信することによって圧縮
される。
対応するサーチツリーは圧縮されたデータを表すインデックスを受信するデコー
ダに供給され、圧縮されたデータをそれ本来の構成に復元するために逆処理がデ
コーダによって行われる。エンコーダのサーチツリーは、さらにシンボルのスト
リングが入力データにおいて識別されるエンコード処理中に徐々に成長し、圧縮
されたデータをデコードするためのデコーダをイネーブルにするために、そのサ
ーチツリーはエンコーダのサーチツリーに対応するように更新しなければならな
い。
Zlv−Lempelアルゴリズムはサーチツリーをその基本的な構成で記憶す
るために無限に大きなメモリを必要とするので、Zlv−Le■pelアルゴリ
ズムを実際に実行するのが困難であることがわかってきた。しかしながら、Su
ssenguth (ACM SortSymposium 19B2 )によ
って開示されている− trie ”構造のようなデータ構造の使用によって、
テキストストリングに関連した記憶効率やサーチ時間が大きく向上できる。EP
A127815(Miller&Vegsan )やEPA129439 (V
elch )には、trie構造の使用を基にしたz1シーLelpelアルゴ
リズムと同じ手法が開示されている。
EPA127.815 (Miller & Vegaan )では、メモリ効
率を高め、エンコード処理をスピードアップするZiv−Le■pa+アルゴリ
ズムについての改良手法が記載されている。ディクシッナリは、単独のキャラク
タを含む各ノードとプレフィックスストリングを表す親ノードに対するポインタ
と共に、ツリーの構造で保持される。ハッシニテーブルは、適合したサブストリ
ングと次の入力キャラクタが与えられた場合、拡張されたサブストリングがディ
クシッナリにあるかどうかを判定するために用いられる。しかしながら、ハッシ
ニテーブルには、ディクシッナリをエンコードするのに用いられる基本的なツリ
ー構造の記憶に対して必要なメモリに加えて、十分な容量のメモリや処理時間が
必要である。
EPA129.489 (Velch )では、入力メツセージにおけるシンボ
ルのストリングが認識および記憶される高速データ圧縮伸張装置および方法が開
示されている。ストリングはストリングテーブルに入力され、ストリングテーブ
ルにおいて、N個(典型的にはNは1から4)のハッシニテーブルアドレスのセ
ットを与えるために先のフード信号と拡張キャラクタを含むハッシニキーを利用
するハッシニ機能によってサーチされる。N個のRAM位置はシーケンシャルに
サーチされ、もしアイテムがN個の位置にない場合、そのアイテムはテーブルに
ないとみなされる。この手順は圧縮効率を減少するといわれるが、実質的に実行
が簡単であるといわれる。
US 4,812.532 (Bacon et al )では、Zjv−Le
spelアルゴリズムを基にせず、キャラクタが発生する頻度の順序で、各キャ
ラクタが通常続くキャラクタのfollow set”テーブルに関連したキャ
ラクタの流れの動的エンコードのためのシステムが開示されている。それらのテ
ーブルは予め決められた長さを有し、それゆえ、ツリーの枝分れの度合は必らず
制限される。
米国公報(US4,464.650)は、ZLv−Lempelアルゴリズムに
基づいて、入力データを圧縮する方法について開示している。この方法は、メモ
リを備えたプロセッサにデータの連続記号を送り込み、入力データの記号ストリ
ング(列)から、記号ストリングを表現するバス(path)を有するメモリに
、記号の探索木の形式でディクシ日ナリを発生し、以前に探索木に格納されたバ
スを有する入力データに記号ストリングを整合し、さらに格納されたバスから入
力データに応じた圧縮出力データを発生する各ステップからなる。しかしながら
、回路群に利用されるデータ構造は高度に複雑であり、さらにハツシング(h
a s h i n g)機能が要求されている。
説明される型のエンコーダの実現に固有の特殊な問題は、探索木が利用可能なメ
モリ空間の限界まで成長したときに発生する。新たなストリングを記憶するため
のメモリ空間の確保のために、探索木のサイズを引き下げる(即ち、刈り取る)
ことが必要である。このような機能を実現するいくつかの周知の方法がある。例
えばコンビ二−タ・アーキテクチャと並列処理という書籍(HwangとBr1
gg5著、McGraw Hill 1985年)に掲載されている。通常使用
される技術として、MillerとWegman (EPAI27815に記載
)I;よりZiv−Lempelアルゴリズムを適用したLRU法(Least
Recently Used)がある。さらに、MayneとJ ame s
(Computer Journal 1975年18.2157〜160ペ
ージに記載されているInformationCompression by
FactorisingCommon Strings)により同類のストリン
グ・エンコーディング9アルゴリズムを適用したLFU法(Least Fre
quently Used)、FIFO(First In First 0u
t)、LIFO(Last In Ftrst 0ut)、CLOCKアルゴリ
ズムおよびランダム置換え法がある。後半の4つの技術は、Ziv−Lempe
lアルゴリズムを適用しない内容である。圧縮効果に不利益をもたらす初期状態
に戻すときに、探索木をリセットすることが知られている。また、メモリ容量が
不足したときに、データ交換特性に悪影響を及ぼすため、新たなストリングの追
加を中止することが知られている。
本発明の目的は、これらの先行技術に関する改善を提供することにある。このよ
うな目的を達成するために、本発明は以下のような構成を有する方法を提供する
ことにある。この方法は、索引記憶領域を有するメモリを備えたプロセッサによ
りデータの連続記号を読出し、入力データの記号ストリング(列)から、記号ス
トリングを表現するバス(path)を有するメモリに記号の探索木の形式でデ
ィクシッナリを発生し、以前に探索木に格納されたバスを有する入力データに記
号ストリングを整合し、さらに格納されたバスから入力データに応じた圧縮出力
データを発生する各ステップからなる。
探索木に格納された記号群は、2つの異なるタイプのリンクしているポインタに
よりパスの構成にリンクされている。格納された記号群間の第1のタイプのポイ
ンタは、これらの記号群が入力された記号順に位置を与えられた記号の中から二
者択一が可能であることを指示している。さらに、格納された記号群間の第2の
タイプのポインタは、これらの記号群の両者が必要に応じて、記号順に発生する
ことが可能であることを指示している。このような構成において、メモリが満杯
のとき、探索木の一連の索引記憶領域が探索木のノードを含むならば、テストさ
れて削除される。この探索木は、他のノードを指示する第2のタイプのリンクし
ているポインタを備えておらず、さらに新たなディクショナリ・エントリ(辞書
エンド1ハ辞書登録)のために利用可能な自由記憶領域も備戴されていない木に
より表現されているストリングの幾つかまたは全部の削除に応じて、探索木の索
引記憶領域のテストおよび削除を行なう。この特徴は制限されたサイズのメモリ
に高度に複雑な探索木を格納することを可能し、前記の米国公報(US4,46
4,650)とEPA127815の両者の構成と比較すれば、有用な簡単化を
実現することができる。
また、米国公報(US4,464,650)は、対応する圧縮データをデコード
する方法について開示している。この方法は、メモリを備えたプロセッサにデー
タの連続記号を送り込み、記号の探索木の形式でディクショナリをメモリに格納
し、さらに圧縮データをデコードデータに変換するための探索木を利用する各ス
テップからなる。
他の見地として、本発明は前記の方法により圧縮された圧縮データをデコードす
る方法を提供する。この方法は、メモリを備えたプロセッサが圧縮データの連続
文字列を読出し、圧縮データから組み立てられた記号群の探索木の形式でディク
シ■ナリをメモリに格納し、さらに圧縮データをデコードデータに変換するため
の探索木を利用する各ステップからなる。探索木に格納された記号群は、2つの
異なるタイプのリンクしているポインタによりパスの構成にリンクされている。
格納された記号群間の第1のタイプのポインタは、これらの記号群が同一記号数
と同一の接頭語を有する記号群のデコードされた異種のストリングを関連付け、
そのような異種のストリングの各最後の記号であることを指示している。さらに
、格納された記号群間の第2のタイプのポインタは、これらの探索木は前記のよ
うな本発明の一方の見地に基づいて定義された方法により処理されることが特徴
である。
また、US 4.46番、650には、入力データの連続した受信シンボルを受
信可能なブロッセッサと、メモリと、入力データにおけるシンボルのストリング
を表すパスを有するシンボルのサーチツリーをメモリに格納する手段と、入力デ
ータにおけるシンボルストリングとサーチツリー内の予め格納されたパスとの整
合をとり、入力データに対応する圧縮された出力データを格納されたパスから発
生する手段とを具備する入力データ圧縮のためのエンコーダも開示している。
この発明の別の見地によれば、入力データを圧縮するエンコーダであって、入力
データの連続したシンボルを受信可能なブロッセッサと、指標付きメモリロケー
ションを有するメモリと、入力データにおけるシンボルのストリングを表すパス
を存するシンボルのサーチツリーをメモリに格納する手段と、入力データのシン
ボルストリングとサーチツリー内の予め格納されたパスとの整合をとり、入力デ
ータに対応する圧縮された出力データを格納されたパスから発生する手段とを具
備し、サーチツリー内の格納されたシンボルは2つの別個のタイプの連結ポイン
タによって前記パスを形成するように連結されており、格納されたシンボル間に
おける第1タイプのポインタは、これら格納されたシンボルが入力シンポルシー
ケンスの所定の位置において択一可能なシンボルであることを示し、格納された
シンボル間におけるji2タイプのポインタは、これら格納されたシンボルが入
力シンポルシーケンスにおいて順番に双方とも発生することを示すエンコーダに
おいて、使用時において、プロセッサが、メモリが満たされた時、サーチツリー
のシーケンシャルな指標付きロケーションを検査し、別のノードを示す第2タイ
プの連結ポインタを有しないサーチツリーのノードを含むメモリロケーションを
削除して、新規辞書エントリ可能な空きメモリロケーションを結果として得るこ
とを決定するように構成されることを特徴とするエンコーダが提供される。
また、U S 4.484.650は、圧縮データの連続したシンボルを受信可
能なプロセッサと、メモリと、辞書をシンボルのサーチツリーの形式でメモリに
格納する手段とを具備し、プロセッサが、サーチツリーを利用して圧縮データを
デコードされたデータに変換するように構成されている圧縮データのデコードの
ためのデコーダを開示している。
この発明の他のもう一つの見地によれば、圧縮データをデコードするデコーダで
あって、圧縮データの連続したシンボルを受信可能なプロセッサと、指標付きメ
モリロケーションを有するメモリと、辞書をシンボルのサーチツリーの形式でメ
モリに格納する手段とを具備し、プロセッサが、圧縮データからサーチツリを構
築し、サーチツリーを利用して圧縮データをデコードされたデータに変換するよ
うに構成され、サーチツリーにおける格納されたシンボルが2つの別個のタイプ
の連結ポインタによって連結され、格納されたシンボル間の第1タイプのポイン
タは、これらシンボルが異なったデコードされたシンボルのストリングに関係し
、その異なったデコードされたストリングが同一数のシンボルを有しており、こ
れらシンボルがこのような異なったストリングのそれぞれの最終シンボルあり、
格納されたシンボル間の第2タイプのポインタは、これらシンボルがデコードさ
れた出力シンボルのストリングにおける連続したシンボルであることを示すデコ
ーダにおいて、使用時に、プロセッサが、メモリが満たされた時、サーチツリー
のシーケンシャルな指標付きロケーションを検査し、別のノードを示す第2タイ
プの連結ポインタを有しないサーチツリーのノードを含むメモリロケーションを
削除して、新規辞書エントリ可能な空きメモリロケーションを結果として得るこ
とを決定するように構成されることを特徴とするデコーダが提供される。
さらに、この発明の特徴は従属クレームに記載されている。
この発明に利用できる他の特徴は、コンピュータ、1984.6月、第8乃至1
9頁の論文’A Technfque for Hlgh−Performan
ce Data Compressjon ’にWelchによって記載されて
いる。この論文は、参考文献として本願に添付されており、この論文は、Ziv
−Le■pelアルゴリズムの初期性能の改良方法を記載している。最初の段階
では、辞書はほとんど空であり、入力データのシンボルストリングのエンコード
には少ない数のビットで十分である。辞書が成長すると、コードワードサイズは
予め決められた最大値まで増大する。これは、1万個から2万個までシンボルの
エンコーどの処理性能を改善できるが、処理の複雑さの増大はいなめない。
この発明の実施例を以下図1乃至図13を参照して説明する。
図1はこの発明において用いられるサーチ−ツリー(search tree)
を示す図、図2はこの発明において用いられる他のサーチ・ツリーを示す図、図
3はこの発明にしたがうデータ・コンブレシラン・プロセスにおけるサーチ・ツ
リーの展開を示す図、図4はこの発明に用いられるエンコード用アルゴリズムの
基本的なフロー・ダイアグラム、図5はこの発明に用いられるデコード用アルゴ
リズムの基本的なフロー・ダイアグラム、図6はこの発明にしたがうデータ・コ
ンブレシラン−プロセスにおけるサーチ・ツリーの“リーフ(leaf)”の挿
入を示すダイアグラム、図7はこの発明の辞書を更新するためのアルゴリズムを
示すフロー・ダイアグラム、図8は図3(a)のサーチ・ツリーの示す図、図9
はこの発明の辞書のアルゴリズムのフロー・ダイアグラム、図10はこの発明に
したがうエンコーダを用いるデータ処理システムの概略的なダイアグラム、図1
1は二の発明にしたがうデコーダを用いるデータ処理システムの概略的なダイア
グラム、図12はこの発明にしたがうエンコーダおよびデコーダを組込んでいる
通信システム部の概略的なダイアグラム、図13はメモリの指定されたメモリ・
ロケーション・アレジメントを示すダイアグラムである。
図1を参照すると、簡素化されたサーチ・ツリーが示されており、シンボルS1
には他の三つの異なるシンボルS2、S3、S4のいずれか一つが従属している
。−例とし、シンボルS1、S2、S3、S4にはそれぞれ、“c“、a゛、“
e”、°h”が割り当てられ、それによりこのサーチ・ツリーは4本のストリン
グ′c2、”c a’、’c e”、“Ch”を示している。したがうて、シン
ボルs1は上記したような゛第2のタイプの2リンク用ポインタ、すなわちダウ
ン・ポインタDによってシンボルS2にリンクしている。シンボルS2、S3お
よびS4は、シンボルs1の後の入力データにおけるストリングで生じる異なる
シンボルであるので、それらシンボルは上記したような“第1のタイプの′、す
なわち右側ポインタRおよび左側ポインタLによってリンクしている。同様の技
術がバイナリ・ツリー(例えば、デー・クナス(D、Knuth)著“コンピュ
ータ・プログラミング技術”、第1巻および第3巻)の表示に用いられている。
しかしながら、このデータ構造はm−aj)’サーチ・ツリーを示すのに用いら
れている。
リンク用ポインタDおよびRを用いることによってシンボルS1からシンボルS
2、S3.S4のいずれかにサーチ・ツリーを介してサーチすることも可能であ
る。また、左側ポインタLにしたがうことによってシンボルS4の左側にサーチ
することも可能である。図1(b)においては、二つのシンボル位置がポインタ
によってリンクされて示されており、これらはフリー・メモリ・ロケーションの
リストを形成している。このリストはサーチ・ツリーからは分離されているけれ
ども、メモリ・ロケーションはフリー・リストとサーチ・ツリーとの間に移送さ
れる。入力データのシンボル用総記憶容量はサーチかツリーのメモリーロケーシ
ョンおよびフリー・リストにおけるメモリ・ロケーションを含んでいる。シンボ
ルS1乃至S4の一つを特定するためにはシンボルの“親1、すなわち直接先行
するダウンポインタDに接続されたシンボルを知ることが必要である。これは各
場合において、例えば親インジケータPによって指示され、文字1c#がシンボ
ルS1として格納された場合には、それはシンボルs2、S3、S4の親となり
、親インジケータPはC”のメモリ・ロケーションを指示する。図1の実施例に
おいては、親インジケータPはデコーダのサーチ・ツリーにおいてのみ要求され
、エンコーダのサーチ・ツリーには要求されていない。そうでない場合には、エ
ンコーダのサーチ拳ツリーとデコーダのサーチ・ツリーとは同じである。
そのノードSが親であるサーチ・ツリー内のノードは、Sの従属ノード、あるい
はSの従属体と呼称される。Sの従属ノードはSで示されるストリングに単一文
字を付加することによって形成されたそのストリングを示す。アルファベットを
構成するシンボルのようにいくつかのノードについては、多数の従属ノードが存
在することができる。
因2はより好ましい実施例が示されており、左側ポインタLは除外されており、
親ポインタPはエンコーダおよびデコーダのサーチ・ツリー内に生じる。そうで
ない場合には、サーチ・ツリー構造は、図1に示されるそれと同じになる。再び
くり返して言うと、シンボル・ロケーションのフリー・リストは12 (b)に
示すメモリ内に保持される。
辞書あるいはサーチ・ツリーは、通常、根源となるシンボルの基本セット、ある
いはそれから派生した基本長に二つ以上のシンボルのストリングを示すエントリ
(登録)、あるいはノードのみを含んでいる。多くの適用例においては、通常の
アルファベットの他に付加的なシンボルを提供するのが望ましい。そのためには
、例えば文字の繰返し発生をエンコード(ラン争レングス(run lengt
h) ・エンコード)するための、あるいはストリング・マツチング・プロセス
(図13参照)の異常終了を指示するための手段を必要とすシーケンスabca
babcabcの符号化は符号化処理中における検索ツリーの評価を示す第3図
及びこのji3図に示される検索ツリー(木)を表す辞書の実際の内容を示すテ
ーブルlを参照して以下に説明する。以下に示されるように検索ツリーは辞書エ
ントリ1〜MのポインタDR及びPをメモリに使用できる最大値に設定すること
によって延ばされる。
テーブルI (a)
表された
インデックス シンボル DRP ストリング
l a (2) a
2 b (3) b
3 c c
テーブルI (a)及び第3(a)図に示されるように辞書は最初、辞書エント
リ1.2及び3にそれぞれ記憶されているシンボルa、b及びCだけを含んでい
る。これらは所定の順序で記憶されても良く、従って、辞書エントリ1は辞書エ
ントリ1に位置する右側リンクポインタ2によって辞書エントリ2にリンクされ
る。好適な方法は各シンボルの通常の値をテーブルのその位置に一致することで
ある。故に、Nシンボルのセットは範囲0〜N−1または1〜N内の通常の値を
割り当てられる。この割当はシンボルを数として表す二値パターンに単に関連す
ることを含んでも良い。メモリのこれらの内容は第3(a)図に示されるような
構成を含んでいる。
多くの応用において、これらの構成の最初のものが好ましい場合、可能なシンボ
ルのいくつかだけが発生する。可能なシンボルのほとんどが発生する応用におい
て、第2の方法が初期文字の検索時間を減少させる。従って、この第2の方法を
以下に説明する。
シーケンスの最初のシンボル、この例では、“alがエンコーダに入力される。
このシンボルはストリングの最初の文字を表すので、エンコーダは文字の通常の
値、この例では、1を使用し、この文字に対応する検索ツリー内のノードを直接
にアクセスする。このノードはエンコーダに知られ、文字で始まる全てのストリ
ングを表すツリーの根を形成する。
シーケンスの次のシンボルがエンコーダによって受け入れられ、現ノードのDポ
インタが従属ノードのリストを捜し出すために使用される。エンコーダは一般的
に次のシンボルを従属ノードに含まれるシンボルの1つに整合しようとする。
この試みはノード1がある従属性を有していないのでこの例のように失敗すると
、現ノード/辞書エントリのインデックスを表すコードワード、この例では、数
字1を表すものが送信される。不整合のシンボルが新しいストリングの最初を形
成するために使用される。
エンコーダはストリングが再度発生したときにこのストリングがもっと効果的に
符号化されるように検索ツリーにストリングabを加えることができる。これは
この例において検素ツリー(辞書)に新しいノード(エントリ)ナンバー4を作
ることによって達成される。テーブルI (b)及び第3(b)図に示されるよ
うにノードが文字“boを有し、従属ノードに対するDポインタは最初ゼロに設
定され、ノードの親に従属するリストの他のノードに対するRポインタはこの例
ではゼロに設定され、親に対するポインタはこの例では1に設定される。
テーブルI (b)
表された
インデックス シンボル DRP ストリング
この処理は“bゝが新しいストリングの最初の文字として使用される状態で繰り
返される。シーケンスの次のシンボルが“Coであり、それゆえ、上述した処理
を用いて、エンコーダはツリーの中のストリングbc”を見つけようとする。
このシーケンスはエンコーダには知られていない。故に、ストリングb”を表す
ノードのインデックスがデコーダと交信され、ストリングbe’が検索ツリーに
加えられる。文字“C”が新しいストリングの最初を形成するために使用される
。更新辞書はテーブルI (c)及び第3(c)図の対応する検索ツリーに示さ
れる。
表1 (C)
インデックス 記号 D R,P 表されたストリング1 a4 a
2 b5 b
3 c c
4 d 1 mb
5 e 2 bc
次の記号a1この例ではシーケンスの中の第4番目の記号が読み出され、検索ス
トリングに付加される。エンコーダはその辞書の中でストリングCaの位置を捜
し出すことを試みる。このストリングは未だ存在しないので、Cに対応する辞書
へのエントリの指標は、デコーダに通信され、指標/文字対(3,a)とも見な
されるストリングCaが辞書(検索ツリー)に加えられる。これにより、表1
(d)に示す辞書と、第3(d)図に示す検索ツリーが発生される。整合がとれ
なかった文字aは新しい検索ストリングを開始するために使われる。
表1(d)
インデックス 記号 DRP 表されたストリング次の記号すが読み出され、検
索ストリングに付加され、ストリングabが形成さりる。記号aに対応するDポ
インタはaの従属変数のリストの位置を捜し出すために使われる。エンコーダは
Rポインタを用いて従属変数のリストの中から検察ストリングの最後の文字を検
索する。この例では、指標4で調べられた第1の辞書へのエントリは文字すを含
むので、エンコーダは検索ストリングを辞書エントリと整合する。
入力シーケンス中の第6番目の文字である次の記号aがエンコーダにより読まれ
、検索ストリングに付加され、ストリングabaが形成される。エンコーダは最
後に整合された辞書エントリのDポインタ、ここでは4、を用いてストリングa
bの従属変数のリストの位置を捜し出す。辞書には従属変数が既知ではないので
、表1(e)、第3(e)図に示すように、新ストリングaba、または(4,
a)が辞書に加えられる。指標4がデコーダに通信され、整合されなかった文字
aが新検索ストリングを開始させるために使われる。
表1 (e)
インデックス 記号 DRP 表されたストリング表I (e)は第3(e)図
に対応する。 。
エンコーダは次の記号を読出し、検索ストリングに付加し、新袴索ストリングa
bを形成する。エンコーダは上述した手続を用いてこの新検索ストリングを辞書
中で検索し、辞書エントリ4と整合させる。次の記号Cを読出し、検索ストリン
グに付加し、新検索ストリングabcを形成する。エンコーダはabの従属変数
のリストを検索することにより、この新検索ストリングの位置を捜し出そうと試
みるが、abcを発見することに失敗する。abの指揮、すなわち4はデコーダ
に通信され、表1(f)、第3(f)図に示すように、新ストリング(4,c)
がエントリ番号8として辞書に加えられる。
表1 (f)
インデックス 記号 DRP 表されたストリング7 a 8 4 aba
8 c 4 aba
次のストリング−エンコーディング争サイクルの間に、エンコーダは、ストリン
グ”ca=を辞書中のエントリー6と整合させ、6をデコーダーに送り、cab
又は(6,b)を辞書に加える。以降のサイクルの間に、エンコーダは、ストリ
ング”be−を辞書中のエントリー5と整合させ、(5゜X)を辞書に加え得る
。Xは示されたシーケンスの最後に続く文字である。
コノヨうニジ−ケンス−abcababcabc−は、インデックス値1234
465のリストを使用してエンコードされ得、それは程度の小さい圧縮を与える
。もし、エンコーダより同じシーケンスに再び出くわすようなことがあると、エ
ンコーダはそれをabc−(辞書エントリ8)として、”aba−C辞書エント
リ7)として、−be−(辞書エントリ5)として、−abc−(辞書エントリ
8)としてエンコードするだろうし、結果的には、シーケンス8758を伝送す
ることになる。もし記号シーケンスが少なくとも12回あったとすると、エンコ
ーダは、一つの単一指標値によってそれを代表し、そのため程度の大きい圧縮を
与える。
エンコーディングアルゴリズムは第4図により詳しく示される。ステップiにて
変数は初期化され、そのとき、繰返して、入力メツセージ中の文字に係る最長可
能シーケンスは、ステップifの検索ツリーストリング上で位置合わせ(map
)される。例えば、入力メツセージの端にあるシーケンスbcは、第3(f)図
中のストリング整合上で位置合わせ(map)される。ステップiiiでは、整
合されたストリング(例えばbc)又は複数のエンコードした表現に対応する終
了ノード指標が与えられと、検索ストリングはそれ以降の文字入力メツセージを
セットする(ステップjv)。
追加した次の文字ストリングが辞書に無い場合、ストリング整合処理は、通常は
終了する。しかし、他の場合にあっては、例えば、(1)ソースから文字を受取
らないことが、最後の文字の受取りから幾つかある特定時間インターバル内に起
きた場合、 (2)ストリング長さが幾つかある最大値の中でバッファリミット
を超えるものに達した場合、(3) I!iつかある特定時間インターバルが、
エンコーダがストリングをエンコード開始してから生じた場合、はストリング整
合は例外的に終了する。これらの例のうちの第2例では、デコーダは例外的な終
了が有ることを推察できるであろう。第1及び第3の例では、エンコーダは終了
したストリングを示す指標(インデックス)の送信に続いて指示を送信する。こ
の指示はソースアルファベットのオリジナルの値以外の付加的制御記号で、これ
が単一コードワードとしてエンコードされ得る。
整合ストリングの指標及び次の整合がとれなかった文字は辞書に加えられなけれ
ばならない。これらが直ちに辞書に加えられると、エンコーダは、デコーダが辞
書エントリと等しい構造を与えるに十分な情報を受取る前に、新しいエントリの
使用を開始する。こうして以前の指標/文字対はストアされ(V)、そして提示
された指標/文字対もストアされる(vi)。辞書が一杯になったら、幾つかの
格納スペースを確保するための処理が行われる。新しい辞書エントリを加える処
理及び格納スペース確保する処理を以下に説明する。更新(アップディト)処理
で使用される前に、ストアされた指標/文字対により参照される辞書エントリが
削除されないようにするために、辞書エントリは以下に説明する手続きを経てn
e w−がマークされる。
第5図は対応するデコーディングアルゴリズムを示している。ステップiにて変
数は初期化される。受は取られたコードワードは、伝送された指標Jを回復する
ためのステップii中で初めデコードされる。なお、指標Jはエンコードされた
ストリングを示す。Jの値は、デコーダに対し該デコーダがエンコーディグスト
リングに対応する辞書エントリデーコーダを直接にアクセスすることを可能とす
る。前記ツリーはエントリJからストリングの根(頭)に向って再トレースし見
直され、そして当該ストリングはステップiiiにて読み出される。例えば、値
8が第3(f)図の検索ツリーを持つデコーダにより受取られたならば、辞書エ
ントリー8のツリーのリーフ(leaf:字)において記号Cが見出だされ、モ
してpポインタ7及び4を根のaに向けて再トレースし、このシーケンスCba
を読み出す。このシーケンスは、そのときオリジナルシーケンスabcを再度発
生するべく次のステップiv中で逆転され、それがステップV中では制御文字に
より抑制されないならば、デコーダアルゴリズムは辞書は最新する処理を行う。
更新化された検索ツリーの一例は第6図に示され、そして対応するメモリの内容
は表■で示される。
テーブル■
インデックス 記号 DRP 新エントリ 表されたストリ
ング
1 a4 0 a
2 b5 0 b
3 c6 0 C
4b 7 1 0 ab
5 C20be
6 a 3 0 ca
8 c 4 0 abc
n b 841 abb
テーブル■がテーブルI (f)に対応し、さらに、辞書エントリnにシーケン
スabbが付加されていることが理解できる。このシーケンスをサーチツリーに
追加するために、ノード7とノード8のリンクが切断され、テーブル…と第6図
に示されるように、新しいノードがこれらの間に接続される。
値nと値8を有する新しい右向きのリンクポインタ(リンキングポインタ)Rは
第6図に下線を付して示され、新しい符号すも下線を付して示される。第6図に
概念的に示されるサーチツリーの変更は、テーブルDの辞書エントリー7のRポ
インタの値を8からnに変更すること、及び辞書エントリnに新しいRポインタ
8とPポインタ4を追加することにより行われる。
更新アルゴリズムが第7図のフローダイアグラムに正式に示される。このアルゴ
リズムはエンコーダーとデコーダーの両方に適用される。第1に、辞書が満杯状
態か否かがステップ1で検出される。辞書が満杯の場合、サーチツリーは削られ
なければならず、この処理手続は第9図を参照して以下に説明される。しかし、
ここでは、このような事態が発生していないと仮定する。この場合、空白メモリ
スロットがフリースロット(第2b図に示される)からステップHにおいて取得
される。ステップ111で、新しいシンボル(テーブルHの場合はb)がメモリ
スロット(テーブル■の場合はn)に書き込まれ、必要なポインタ(テーブル■
の場合は辞書エントリーのR)が再セットされる。ステップ1vにおいて、新し
いエントリの親ノードが現存する従属関係を有するか否かがチェックされる。現
存する従属関係を有する場合、ステップVにおいて、上述の例のような従属関係
リスト内に新しいエントリが挿入される。現存する従属関係を有しない場合、ス
テップv1において、新しいエントリが親ノードに接続され、親のDポインタが
新しいエントリのメモリ参照番号にセットされ、新しいエントリのPポインタが
親ノードのメモリレファレンスにセットされる。
第8■を参照して、第8(a)図はテーブル■と第6図に図示される更新処理手
続に続くサーチツリーの状態を示す。
これらのサーチツリーのシンボルは、もしこれらの点においてサーチツリーが成
長していない場合には、有用ではないと考えられる。ここで、前記サーチツリー
はそれから下方向に延びるDリンキングポインタを有しない(そして、該サーチ
ツリーはマツチされたシンボルシーケンスの終端で発生する)(枯葉)は破線で
第8(a)図に示される。そして、第6図に示される更新処理手続において追加
された新しいエントリbは、そこからの新たなサーチツリーの成長を期待できる
゛ニニーリーフ” (若葉)であることを示すためにそのようにマークされる。
従って、それは刈り込み(削除)から保護される。以前の最近の繰り返しにおい
て追加されたツリーの他の葉も保護されることも考察される。
第8(a)図に破線で示されるサーチツリーのシンボルは刈り込まれ、その結果
、第8(b)図の新しいサーチツリーと4つの刈り込まれたシンボルのフリーリ
ストとなる。新しいエントリbは保存される。確認のため、サーチツリーの種々
のシンボルに対応する実際のシンボルの流れは第8図に示され、第6図の更新処
理手続において付加されたシンボルシーケンスabbが保存される点から考える
と、シンボルの流れbc、ca、abaとabcは削除される。
刈込み手順は、正式に第9図に示されている。ステップiにおいて、辞書は、充
分で且つ簡潔にする準備が整っているか否かをチェックされ、もし、整っていれ
ばメモリのポインターは、列の最初に続く辞書エントリ、即ちテーブル■のシン
ボルbと第8(a)図に従うエントリ4にセットされる。
ステップ111において、このエントリは、そこから延長しているダウンポイン
ターを有しているかどうか決められ、第8(a)図の場合は、シンボルbがダウ
ンポインター7を有していることがわかる。従って、このエントリはエンドノー
ドではなく、アルゴリズムはポインターをステップvi (又、どの新たなフラ
ッグをもクリアにする)において、次のエントリに進ませ、それによって、ステ
ップv11を介して次のエントリに進みシーケンスabaのシンボルaは、エン
トンノードとなる。従って、アルゴリズムは、次いで、新たなエントリフラッグ
によって、刈込み(削除)手順に対して保護されているかどうかをチェックし、
そうでないので、ステップVでエントリを抹消し、対応するメモリ位置をフリー
リストに加え、ポインターをリセットする。前記ポインターのリセット動作は簡
単にテーブル■と第6図から類推してji8図から推し、計ることができる。
この手順は、偶発的に、新たなエントリフラッグによって、保護されている以外
の“エンドノード° (即ち、これらから他のシンボルに延長されているダウン
ポインターDを有していない)の全てを抹消する結果をもたらす。このことは、
辞書の更新を完了し、アルゴリズムは、次いで、エンコーデングアルゴリズムの
場合に、第4図のステップv1と、デコーダできる。辞書の更新と、簡潔にする
手順は、エンコーダとデコーダの両者のサーチツリに同様に行なわれる。この簡
潔にする手順は単一の手順で辞書の全てのメモリ個所をテストするという事実か
ら見ると、簡潔にする手順は、いろいろな方法、即ちステージ毎の多くのメモリ
個所、ステージ毎の多くのフリーのメモリ個所で決められるステージで行なわれ
る。
メモリと手順を増やすことで、簡潔にするアルゴリズムのパフォーマンスを改良
することのできる追加の手順として、エンコーダからのコードワード出力は、こ
れら出力が用いられる周波数のある態様に依存する長さが割り当てられる。この
ために、二つの方法が以下のように述べられ、これは伝達される辞書インデクス
を表すコードワードを発生する第4図C111)に示さにれるエレメントに適応
される。
第1の方法は、以下の先行技術文献に記載され公知されている。“ミニマムリダ
ンダンシーコードの構成方法”ディニーホフマン著、会報IRE40.9.巻1
952(A Method for the Con5truction or
Minimum Redundancy、by D^)1urfman、pr
oc 1REVol 40. 9. 1952)、“マキシマティカルセオリー
オブコミニニケシラーン′シーイーシャノンン著、ベルシステムテクニカルジャ
ーナル、27巻、1948 (A Methmatlcal Theory o
r Co5unleat1on、by CEShannon、Be1l Sys
tem Technical Journal、vol 27. 1948)、
及び“算数コーディングの入門°、ジーラントン著、アイビーエムジャーナルオ
ブリサーチアンドデベロップメント、28.2. 巻1984 (An Int
roduction to Ar1thsetie Cocling’ by
G hangdon、IBM Journal of Re5earch an
d Deveropg+ent、vol、 28. 2. 1984)周波数の
カウントは各辞書エントリと関連付けられていて、エントリが使用される毎に増
加する。この周波数は、辞書エントリによって表わされた一連の発生の可能性と
先行文献において限定されている手順に従って割り当てられたコードワードを計
算するために用いられる。一連の可能性に関連するコードワード長hsは、
一1og2 (Ps)<hs<1−1−1o (Ps)で表わされる。
第2の方法は第1の方法より、一般的に効果は少ないが、手段としては簡単であ
る。
追加のUポインターは各辞書エントリと関係していて、サーチツリーの構成には
関係なく辞書エントリのLFU(leant frequency used)
リストを形成するために、使用される。
このリストは、一連の周波数順序を、傭た形で決めるために使用される。又、長
さインデクスは各辞書エントリに関連している。
辞書エントリが使用されると、辞書エントリをカレントエントリの上に位置させ
るためにUポインタを用い、Uポインタと二つのエントリの長さインデクスを交
換することによって、LFUリストは、繰り上げられる。このようにして、より
、しばしば用いられたエントリはLFUリストの開始点に向って移動される。長
さインデクスはリストの要素の順序と関連付けられ、即ち、最も頻繁に使用され
た辞書エントリは、長さエントリ1を有する。コードは固定または動的ベースに
基づいて、及び、長さインデクスに基づいて割り当てられたコードワード及び、
低いインデクスを伴う辞書エントリに割り当てられているより短いコードワード
上に発生する。この第2の方法は、同様なリストを挙げているようにEPA12
7.815のミラー及びベグマン(Miller and Wegwan )に
よって述べられている簡潔アルゴリズムに適応するのが好ましい。しかしながら
、長さインデクスをそれらのデータ構成に加えることが必要である。広く用いら
れている辞書エントリをリンクされたリストにおけるその真上のエントリと交換
するための、Uポインターの使用に代えて、交互の手順は、リンクされたリスト
におけるトップの位置に、広く用いられている辞書エントリを動かすことであり
、以前にトップの位置にあるエントリは第2の位置等に移動される。リンクされ
たリストは、略、最近使用されたファンクションを表わしていて、それによって
、ある時刻に使用されなかったエントリはリストの下に押し下げられ、そして頻
繁に使用されたエントリはリストのトップの位置に置かれることになる。
追加の手順は、追加の開始時刻を使用することでエンコーダのパフォーマンスを
改良することができるので、辞書は初めに、例えばth=、−tha−,−th
e−,”Th″。
=The″、・・・を規則正しく、生ずるよう通常、知られている一連の文字を
含ませることができる。
追加の手順が行えるものとして、もし辞書が記憶されるメモリが、通常のケース
として、大記憶装置が存在するとき、又はメモリが不揮発性である時に、連続す
るメツセージの伝達間に情報を保持することができるならば、辞書は前のメツセ
ージをエンコーデングしたり、デコーディングしたりする間、記憶された一連の
セットを最初に含ませることができる。
例えば、伝達装置は前の伝達装置と通じた第2の伝達装置と呼ぶことができる。
各々のエンコーダとデコーダの対は、公知の原則に従って、ある単純なチェック
サムを発生することによって及び前記チェックサムを比較することによってそれ
らの辞書を比較することができる。
もし、辞書が同等でない場合には、ある知られている最初の状態にリセットされ
る。
エンコーダとデコーダとの間のリンクにエラーがある場合のアルゴリズムの信頼
性を向上させるための他の方法として、デコーダはエラーを表わすエンプティ又
はフルの状態のデイクシッナリーの入力に対応して受け取ったコードワードに関
連させて動作させ、エンコーダにはそのディクショナリーをリセット又は再初期
化するように要求を出す。これらの方法は、オートマチイックリピートリクエス
トのようなエラー検出方法が通常用いられることから、普通には用いられない。
他の方法として、エンコーダによってチェックサムが周期的に算出され、これが
デコーダへ送られ、デコーダ側で同様にして算出された値と比較するようにした
方法がある。
第10図は大容量記憶装置、例えばディスク装置1に記憶された非圧縮データを
対応する圧縮データに変換するためのデータ処理回路を示す。これによって大容
量記憶装置からメモリを取り出すことができる。マイクロプロセッサμPを有す
るエンコーダ2がメモリ3と結合され、このメモリ3には上述のアルゴリズムに
よるサーチツリーが記憶される。遅延回路4は、新しいシンボルが大容量記憶装
置から受入れられる以前にディクショナリーが必らず更新されるようにするため
のものである。
第11図は大容量記憶装置1中の圧縮データを非圧縮データに変換するためのデ
コーダ回路を示す。このデコーダ回路はメモリ3に接続されたデコーダ5を有し
、メモリ3中には上述のアルゴリズムによって更新されるサーチツリーが記憶さ
れる。
第12図はターミナル6とこれに関連したインターフェース7とを示す。このイ
ンターフェース7は、メモリ3と遅延装置4とに接続されたエンコーダ2、およ
びメモリ3に接続されたデコーダ5とによって通信リンクとの間でデータの送受
を行なうために設けられている。このエンコーダとデコーダとに接続されたメモ
リ3には、上述のアルゴリズムによってディクシεチリ−が記憶される。図12
の回路によって、通信リンクの反対側に接続された対応する装置(図示せず)と
の間で通信が可能である。
ソースエンコーダを設計する場合には、エンコーダの入力がソースアルファベッ
トからの独立したシンボルであると仮定することが多い。従ってこのシンボルの
サイズは既知である。最近の多くの通信システムでは同期伝送方式が用いられ、
ここではデータは独立した文字としてではなく連続したビット列として取り扱わ
れる。
非2道形のシンボルを2造形で出力する同期ソースのためのソースエンコーダを
設計する場合には、種々の方法が考えられる。シンボルサイズが一定で未知の場
合には、最適ソースコード形式が得られる文字長をサーチによって見付けること
ができる。例えば、データのサンプルを取得でき、仮定された文字サイズが1か
ら最大ビット数へ変換され、各々の場合について情報内容が見積られ、この情報
内容と文字サイズとの比が最大の圧縮比を達成するために設定される。
各シンボルjの発生の確率Pjが予測され、シーケンスn当りのビット数はシン
ボルの情報内容、n
を増加させるために変更される。
直列エンコーディング法を用いれば他の方法も可能である。
この場合、シンボルサイズは自由に選定される。これは、ソースシンボルの各列
はこれらが異なる長さのビット列に変換されたときにも、その独自性を失わない
という仮定に基づいている。セグメントサイズ(セグメントは仮定シンボルを示
す)を選択するのには多くの考えるべき点がある。
長さCのセグメントに対して、セグメントおよびシンボルのソースビット列中の
位置相互間には同期関係がないので、各シンボル列はセグメント中のCビット位
置と一致する。このことは、いかなるシンボル列に対しても少なくともCFJO
列変化が可能であり、従って、短かいセグメントは、デ、fクシッナリー空間の
より経済的な使用を可能とする。
コード化されたバイナリストリング長はセグメントサイズに比例するが、コード
ワード長は既知のストリング数の対数に比例するので、短いセグメントは長いセ
グメントよりもディクシッナリ空間をより有効に使用できない。これは、ジブ・
ランペル・アルゴリズム(Ziv−Laspel algorithm)に特に
関連していて、そのジブ・ランペルーアルゴリズムでは、メモリ空間の大きな部
分がシンボルストレージよりもむしろポインターに向けられている。
従って、入力データがキャラクタを表わすバイナリピットのストリームからなり
、サーチツリーに蓄積されたシンボルがバイナリビットのシーケンスから構成さ
れる本発明に基づく好ましい実施例では、シーケンス当りのビット数はプロセッ
サによって選択され(プロセッサはユーザからの外部コマンド信号に応答しても
よい)、入力データのシンボル当りのビット数は未知か或いはプロセッサにより
選択されたシーケンス当りのビット数とは異なっている。
この方法の変形例では、シーケンス当りのビット数は初期に変化させられ、入力
データと出力データ間の結果として得られる圧縮比は、サーチツリーの蓄積され
たシンボルに対するシケンス当りのビット数を選択する前にモニタされる。
こうして、圧縮比を最大にするためにプロセッサによって選択されるシケンス当
りのビット数を最適化できる。しかしながら、メモリ容量や処理速度のような他
の要因がプロセッサによって選択されるべきシーケンス当りの最適ビット数に影
響を与えるかもしれない。
上述の実施例は、圧縮の効率の点ではわずかに次善であるが、メモリの利用や実
行速度の点では遥かに効率がよい削除法を使用している。その実施例は、ディク
シッナリを作るために使用される2つのデータ構造と、ストリングを表現するた
めに使用されるシステマティックなサーチツリー構造と、Sussenguth
により議論されたような、サーチツリーの素子を蓄積するために使用されるディ
クショナリのシステマティックな表表現とから形成されている。ところで、サー
チツリーの素子が蓄積される順番は完全にランダムである。この方法は、削除さ
れるべきサーチツリ一部分の選択がツリー内の選択された部分の順序に依存しな
いという意味から、ランダム削除戦略に近い。しかし、削除のために候補を選択
するアルゴリズムがディクショナリの表表現を介するステッピングを含んでいる
ので、本当はランダムではない。これはクロック(CLOCK)近似に幾らか似
ているが、表表現の位置に基づいてなされる削除のための候補要素の選択が、サ
ーチツリー内で要素の位置によって評価される点で異なっている。
国際調査報告 、2−1゜26゜2.−2−1+11.、Il工+、111t+
1lLu ’+j p77 、7Hミテ −二一一二国際調査報告
j1