JPH09505707A - データ圧縮 - Google Patents

データ圧縮

Info

Publication number
JPH09505707A
JPH09505707A JP7515623A JP51562394A JPH09505707A JP H09505707 A JPH09505707 A JP H09505707A JP 7515623 A JP7515623 A JP 7515623A JP 51562394 A JP51562394 A JP 51562394A JP H09505707 A JPH09505707 A JP H09505707A
Authority
JP
Japan
Prior art keywords
memory
token
list
primary
compression method
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.)
Granted
Application number
JP7515623A
Other languages
English (en)
Other versions
JP2979106B2 (ja
Inventor
グリンバーグ,デニス,ネイル
ラヤゴプラン,シヴァラマクリシュナン
ヴェンカテサン,ラマラスナム
ウェイ,ヴィクター,ケーウェイ
Original Assignee
ベル コミュニケーションズ リサーチ,インコーポレイテッド
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 ベル コミュニケーションズ リサーチ,インコーポレイテッド filed Critical ベル コミュニケーションズ リサーチ,インコーポレイテッド
Publication of JPH09505707A publication Critical patent/JPH09505707A/ja
Application granted granted Critical
Publication of JP2979106B2 publication Critical patent/JP2979106B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 着信するデータ・ストリームを発信する圧縮データ・ストリームに圧縮する方法並びにこれに付随する回路であって、複数のメモリまたはリストを使用する。着信データ・ストリームは一連のトークンに分割される。1次メモリ(3262)は各トークンを記憶し、最も最近出現したトークンがそのリストの先頭ランクを占める。2次メモリ(3282)はトークンのそれぞれの部分集合の前記1次メモリでの記憶位置を記憶する。圧縮データ・ストリームはトークンそれ自身、1次メモリに於けるトークンの位置、または1次メモリに於けるトークンの記憶位置についての2次メモリ内での位置の符号化表現として生成される。3次リストも2次リストの3次リストに於ける位置の符号化表現を生成するために使用することができる。リストの探索はハッシュ関数で達成される。リストの更新は木の拡張を使用する。

Description

【発明の詳細な説明】 データ圧縮 発明の属する分野 本発明は、一般にデジタル・システムに関し、さらに詳しくは、複数リストに よる先頭移動を用いてデータ・ストリームを符号化し復号するデータ圧縮信号処 理回路およびこれに付随する方法に関する。 発明の背景 通信ネットワークと相互接続されたコンピュータによる情報システムの使用が 急速に拡大したことで、デジタル記憶およびデジタル伝送システムの使用が劇的 に増加した。データ圧縮は記憶前のまたは伝送前のデータの短縮に関係する。こ のような短縮はメモリまたは通信資源の保全に役立つ。データ情報源を統計的方 法でモデル化できた場合は、最適なコード体系が所望の圧縮基準を達成するよう に構築されたこととなる。しかし、現実世界のデータでは、情報源の統計データ を必ずしもデータ圧縮器に分かっているとは限らない。実際に、現実世界のデー タは何らかの統計的モデルに適合しないのが普通である。したがって大半の現実 的データ圧縮技術においてはデータ供給源の統計データを知ることなく、データ を圧縮できる適応型配列構成を有することが重要である。 記憶されるまたは伝送されるデータの多くは冗長である。たとえば英語、また はプログラミング言語はしばしば再使用される「ワード(複数)」を含む。この 冗長性を利用する符号化の典型が周知のハフマン符号である。ハフマン方式では 可変長符号語を使用し、符号語の長さは符号化した記号の出現頻度(生起確立) に相関する。あいにく、ハフマンのアプローチでは記号またはトークン(字句) の出現頻度を設定するために1回また実際の符号化を行なうためにもう1回、2 回にわたってデータをパス(受け渡し)する必要がある。さらに、ハフマンの手 法では1回目のパスを行なう間データブロック全体から一時記憶域が必要とされ 、これに対応して遅延が発生する。 1984年6月、ウェルチ(Welch)は"A Technique for High Performance D ata Compression"(高性能データ圧縮の技術)と題する論文をIEEE Computer Ma gazineに発表した。この論文は実用的な方法として知られるようになったLempel -Zivアルゴリズムを扱っており、高速オンライン処理のためのハッシングに基づ くデータ圧縮のための(アルゴリズムの)実装を提案した。米国特許第4,55 8,302号はウェルチが単独の発明者となっており、彼の論文における理論的 な形態で最初に導入した実装の詳細を含んでいる。さらに最近では、Fiala Gree ne(フィラーとグリーン)に交付された米国特許第4,906,991号がLemp el-Zivアルゴリズムの精巧な修正を開示しており、多くのテキスト・ファイルで 良好な圧縮を実現している−−が引き替えに複雑さが大幅に増加している。 1986年4月、Bentley,Sleator,Tarjan and Wei(ベントレイ、スレータ 、ターハンおよびワイ)は"A Locally AdaptiveData Compresson Scheme"(局部 適応型データ圧縮方式)と題する論文をACM(米国計算機学会)Communicatio nsに発表した。この論文では、著者らはテキスト・データのデータ圧縮を達成す るための自己調整データ構造の使用を提案している。彼らの主要な方式(スキー ム)の1つは「先頭移動」ルールを使用していた。この概念については詳述する 。 さらに最近では、Bentley,Sleator and Tarjan(ベントレーら)に交付され た米国特許第4,796,003号の開示は、ハフマン符号に匹敵する短縮率( 圧縮率)で、しかも1回のパスでデータ圧縮が可能であることを示している。さ らに詳しくは、ワードリスト(単語リスト)を保持しており、ワードリストの各 語の位置が可変長符号で符号化され、もっとも短い符号がリストの先頭を表わす ような体系(システム)ならびにアルゴリズムを使用している。ある語(ワード )を通信の適用において送信しようとする(またはメモリの適用において記憶す る)場合、その語についてのリストすなわちコードブックを走査する。その語が リスト上にあれば、リスト上のその語の位置を表わす可変長符号をその語自身 の代わりに送信(または記憶)し、その語をワードリストの先頭に移動する。そ の語がワードリストになければ、そのワード自身を送信(または記憶)し、それ からその語をワードリストの先頭に移動して、相対的順序を維持しながらワード リスト内の他の全ての語を「押し下げ(pushed down)」る。 受信先(メモリ記憶に適用の場合には読み出し先)では送信側(または記憶機 構)で実行したのと同じ動作を反復(繰返)してデータを復号する。つまり、ワ ードリストを構築し、可変長符号を用いてワードリストから適正な語を復元する 。 ベントレーらの方式では、もっとも頻繁に使用される語(複数)がワードリス トの先頭の方に自動的に集るので、最小のビット数で送信または記憶される。さ らに、任意の接頭語符号(接頭符号)をリスト上の単語位置を送信または記憶す るのに使用でき、低い位置が最短の符号語で符号化される。また、リスト構成の ヒューリスティックは、例えば選択した語を一定数の位置だけ前よりに移動する 、または1つ前の位置と入れ換える等により変化させることができる。最終的に 、リスト位置それ自身が新規入力データとして扱うことができ、これ自身の出力 に圧縮方式を再帰的に適用して新規のリストと新規の可変長符号を作成する。 暗示されているように、ベントレーらの先頭移動を実施したエンコーダ(符号 器)は2種類のオペレーション(操作)を有する。すなわち、(1)探索:各入 力語についてコードブック内でその語を探索する、(2)更新:将来の使用のた めにコードブックを再構成する。ベントレーらのインプリメンテーションはコー ドブックを線形リストとして構成する。探索と更新両方の操作は直線的に行なわ れる、すなわち線型探索と線型更新アルゴリズムを使用する。各操作の時間的複 雑性はコードブックの大きさに比例し、一般にコードブックは数千から数万の単 位である。つまり、複雑性は大きい。Bentley,Sleator,Tarjan,および Weiの 先の論文では、コードブックは2重リンクの2重木として構成している。木は各 入力語の後で深さバランスを維持するように調節される。つまりコードブックの 大きさの対数に比例する複雑性で探索または更新のどちらかの操作を遂行するこ とができる。しかしデータ構造が複雑なため非常に大きなメモリを必要とし、対 数的な複雑性の係数も大きくなる。つまり後者の方法の複雑性は現実的に注目さ れるコードブックの大きさでの線型方法より低いこともある。 さらに最近、Wei(ワイ)に交付される米国特許第5,239,238号の開 示では、各情報源シンボルの処理に非常に少ない一定のステップ数しか必要とし ないような方法を示している。ワイの特許では、コードブックを多2重リンク( MDL)リストと呼ばれる可変寸法の2重リンクリストの集りとして構成してい る。2のm乗−1の大きさのコードブックの場合、1つのリストがあり、そのリ ストは2の0乗=1、2の1乗=2、2の3乗=8、...2の(m乗−1)の 大きさのサブリストに分割されている。探索操作では、連想メモリを探索してそ れぞれの着信した記号がコードブックでの有無を判別する。連想メモリはアドレ スよりもむしろ、記号によりアクセスされるメモリの配置のことである。ハード ウェア・インプリメンテーションにおいて、連想メモリは連想記憶(CAM)で 実現され、一方ソフトウェアで実現する際に連想メモリはハッシング関数操作に よって実施される。記号が存在する場合、その記号についての新しいランク情報 がデータ・ストリームに変換されて通信媒体で伝播される。さらに、記号の新し いランクはその最近の出現率を反映するように変更される。新しいランクはMD Lリスト内のエントリを単に変更することで変更する。これらのような変化は、 例えば、任意の記号が存在する場合にこの記号が一般に次に高いクラスの最上位 に移動するクラス導入技術を用いて実施される。それまでこの最上位の位置を占 めていた記号は、たとえば任意の記号がそれまで占めていたクラスの下部分に移 動する。別の例として、記号をクラスリストの上部までの中間のところに移動し て、その中間の位置を占めている記号を記号が空いた位置に移動する。記号が存 在しない場合、その記号は連想メモリの空き位置に記憶するか、または連想メモ リが満杯の場合、占有位置の上書きが発生する。探索の時間的複雑性は1ステッ プ、すなわちハードウェアCAMの読み込みが1回だけまたはメモリのソフトウ ェア版ではハッシングが1回である。更新操作はMDLの一定数のポインタ操作 を単に更新するだけである。 基本的に従来技術は「参照の時間的局在」を示すデータ・ストリームをアドレ スする、すなわち語(ワード)がデータストリームある点を現す場合には、その あと同じ語がその後にすぐにまた現れる可能性が有る。語がデータ・ストリーム に1回以上現れる場合、従来技術の各種圧縮技術では、2回目およびそれ以降の 場合に出現するその語を表わすのに、その語が繰り返し現れる時点と最後に出現 した時点のと間に現れる別の語の数を表わす圧縮データブロックによっている。 従来技術は「参照の空間的局在」と呼ばれるものを活用する教示または示唆が 欠除している、すなわちデータ・ストリーム内の第1の語が第2の語の付近に出 現した場合には第1の語がデータ・ストリーム内にふたたび出現する場合には第 2の語の付近にまた出現する可能性がある。 発明の要約 本発明によれば、以上の欠点ならびにその他の制限や不足が参照の空間的局在 を活用する方法ならびにそれに付随する回路により回避される。 概して本方法の1つの態様によれば、、データ・ストリームに出現するトーク ンの1次リストが一時リストに出現するトークンのアドレスの2次リストととも に維持される。1次および2次リストは、符号器の出力が(1)トークンが1次 リストに出現しない場合にはトークン自体、または(2)トークンが1次リスト に出現しトークンの位置が2次リストに出現しない時には1次リスト内のトーク ンの位置、またそれ以外では(3)1次リストのエントリの2次リスト内での位 置、の符号化表現となるような方法で使用される。 概して本方法の別の態様によれば、データ・ストリームに出現するトークンの 1次リストが1次リストに出現するトークンの位置の2次リストならびに2次位 置の3次リストとともに維持される。1次、2次、3次リストは、符号器出力が (1)トークンが1次リストに出現しない場合にはトークン自身、または(2) トークンが1次リストに出現し、トークン位置が2次リストに出現しない場合に は1次リスト内のトークン位置、または(3)トークンが1次リストに出現し、 1次リスト内のトークン位置が2次リストに出現するが、3次リストには出現し ない場合には常に1次リストのエントリの2次リスト位置、またそれ以外の場合 には、(4)3次リスト内の2次リストの場所の位置、の符号化表現となるよう な方法で使用する。 例証的に、リストの探索には、ハッシング操作を用いてトークン(1次リスト )またはアドレス(2次リスト)または場所(3次リスト)の出現を特定し立証 する。 例証的に、リストの更新には、木を拡張する操作を行なって1次リストのアド レス、2次リストの場所、または3次リストの位置を対応するリストの先頭へ移 動させ、対応するリストの最上位ランクをリストの先頭に関連させる。 本発明の構成ならびに動作は、添付の図面を参照して後述の図示した実施例の 詳細な説明を熟読することにより理解されよう。 図面の簡単な説明 図1はベントレーらの符号器の従来技術のブロック図である。 図2は共通の互いに隣接して出現する典型的な記号パターンについての1次リ ストと2次リストの略図である。 図3は記号の1つを処理した後で共通に互いに隣接して出現する典型的な記号 パターンについての1次リストと2次リストの略図である。 図4は別の記号を処理した後で共通に互いに隣接して出現する典型的な記号パ ターンについての1次リストと2次リストの略図である。 図5はデータ構造で定義されるフィールドを表わす任意のトークンの典型的な データ構造の略図である。 図6は典型的な木の略図で図示したトークンの相互に対する関連を表わす。 図7は図6の木に対応する物理メモリ内容の略図で、それぞれのエントリは図 5のデータ構造に準拠している。 図8は、左の子のランク<親のランク<右の子のランク(左−中央−右)の規 則によるトークンランクの略図である 図9は回転(原子(アトミック)木を拡張する「ジグ」操作に対応する)を所 望する典型的な木の略図である。 図10はジグ操作で図9の典型的な木構造が影響を受ける方法を示す。 図11はジグ操作の前に図9の木構造に対応するデータ構造の詳細を表わす図 9の同等物である。 図12はジグ操作の後でランクの保存を示す図10の木構造に対応するデータ 構造の詳細を表わす図10の同等物である。 図13は原子(アトミック)の「ジグ−ジグ」操作の前の別の典型的な木構造 を表わす。 図14はジグ−ジグ操作により図13の典型的な木構造が影響される様式を示 す。 図15は原子(アトミック)の「ジグ−ザグ」操作の前のさらに別の典型的な 木構造を表わす。 図16はジグ−ザグ操作で図15の典型的な木構造が影響される様式を示す。 図17はジグ−ジグ操作およびジグ−ザグ操作で木の最上部にノード「a」を 移動する前の最終的な典型的木構造を表わす。 図18はジグ−ジグ操作とジグ−ザグ操作で図17の典型的な木構造が影響さ れる様式を表わす。 図19と図20はそれぞれトークンを木の最上部に挿入する前後の木構造を表 わす。 図21と図22はそれぞれ木から子孫のない最下位のノードを削除する前後で の木構造を表わす。 図23と図24はそれぞれ木から子孫のない最下位ノードを削除する前後での 木構造を表わす。 図25と図26はそれぞれ最下位から最上位のノードに左側の子を有するノー ドaを移動する前後の木構造を表わす。 図27は最上位ノードを最高ランクに移動する前に最上位ノードが左右に子を 有している木構造を表わす。 図28は図27の木において右側の分木(サブツリー)から最高ランクのノー ドを抽出することにより得られた木構造を表わす。 図29は図28の木構造を回転させることによってノードaを最高ランクのノ ードに押し上げることにより得られた木構造を表わす。 図30は1次および2次メモリの両方を使用して着信トークンを処理するため の流れ図である。 図31は1次、2次、3次メモリを使用して着信トークンを処理するための流 れ図である。 図32は本発明の2メモリ実施例による典型的な符号器のブロック図である。 図33は本発明の2メモリ実施例による典型的な復号器のブロック図である。 発明の詳細な説明 本発明を理解する上で有用な術語と標記を導入する方法として代表的な従来技 術の概要説明を第1に行なう。以下、概要に続けて本発明による図示の実施例を 説明する。 従来技術(米国特許第4,796,003号) たとえばベントレーらが開示しているような(米国特許第4,796,003 号)局部適応型データ圧縮システムは最近の従来技術の圧縮方式の1つを表わす ものと考えられるのでここで説明する。考察するシステムは通信システムで、着 信データ・ストリームが送信器で符号化され、符号化されたストリームが通信媒 体を介して受信機へ伝播し、受信機が伝播するデータ・ストリームを復号する。 図1のブロック図はベントレーらによる従来技術の構成を示す。本システムの説 明に係る原理は他のシステム、例えばデータ記憶システムにも適用できるもので ある。 最初の説明として術語「語」は着信データ・ストリームからの英数字のグルー プ化を定義するものとして使用すると−−図1の拡張データ入力13に着信する 任意の「語」が送信用に符号化される場合、システム内に維持されている語のリ スト(プッシュ・ダウン記憶10)をその任意の「語」の出現について 走査する。その語が存在する場合、「語」に関連する符号をその「語」自身のA SCII表現の代わりに使用する。語リスト内での各「語」の位置はデータ・ス トリーム内でのその「語」の出現回数を表わすので、最近出現した「語」はしば らく前に出現した「語」よりも語のリスト内で高い位置にある。語リスト内での 「語」の位置は可変長符号に符号化されて可変長符号記憶14に記憶され、もっ とも短い符号がリストの先頭、すなわちもっとも最近出現した「語」を表わすよ うにする。つまり、「語」それ自身を含む記号についてのASCIIビットを送 信するのではなく、リスト内の「語」の位置が実際には送信されることになる。 このような位置符号は一般に「語」それ自身のASCII表現より少ないビット 数を必要とするので、システムはデータの効率的伝送を行う。「語」がリスト内 にない場合、これをリストに追加して、その「語」の各記号のASCII表現を 出力28から圧縮データとして送信する。 符号化データ・ストリームから語リストをコンパイルして符号化操作の逆を遂 行すれば受信機で元のデータが復元される。 データ圧縮方式から最大の利点を導き出すには、着信デジタル・データ・スト リームを最大の冗長性に達するような「データのグループ」(上記で「語」と言 われる)に分割しなければならない。英語テキストでは、例えば、実際の英語の ワード間の空白(「空白文字」)を用いて冗長性が高い「データのグループ」に データ・ストリームを分割することができる。コンピュータ・プログラムも同様 に自然言語の分割子としての句読点や空白文字を用いて「データのグループ」に 分割できる。データ・ストリームを「データのグループ」に分割する処理は語彙 解析と呼ばれており得られる「データのグループ」はソース記号と呼ばれる。こ のような処理は周知であり全般にコンピュータ・プログラム・コンパイラおよび アセンブラならびに大半のワード・プロセッシング・パッケージで見うけられる 。符号化した音声等ある種のデータ・ストリームは冗長性が高いデータ・ビット にすでに分割されておりこれ以上の語彙解析を必要としない。表記において、節 のワードリストのことを、代表的な従来技術の説明ではさらに特定的に用語辞書 −−ソース記号を記憶している辞書−−と呼ぶことにする。 符号化処理がどのように機能するかの特定の例を上げるには、語彙分析によっ て得られたソース記号の次のようなストリームを送信器で処理することにする: that that is is that that is not is not is not that it it is (このようなストリームは考案によるものではなく、次の文章に由来する: "that that is,is; that that is not,is not; is not that it? it is!" ここで記号のストリームは単に句読点を除去して得られており、句読点は別に処 理することができる)。 第1の記号は"that"である。辞書は最初にからなので、辞書内には何の記号も 現れない。つまり、記号"that"が辞書に追加される。次に3つの部分に分割され た一連のビットが通信路上を介してシステムの受信器へ送信される。3つの部分 は、(1)デリミタ記号の符号、(2)語の文字数を指定する(この場合には4 )一定数のビット(この例では8)、したがってビット・ストリームは0000 0100となる)および(3)拡張ASCII符号または記号"that"を含む文字 についての8ビット符号から構成される(ベントレー特許では項目(2)すなわ ちデリミタとASCII符号の間の固定長の語を含めることを教示または示唆し ていないが、このような標識は新規の記号を表わすビットの分割とそれにより復 号化をするように実際には必要とされるものである)。デリミタ記号は初めに送 信され、新しいソース記号が続くことを示す。デリミタ記号は独自のものでそれ に応じて復号できる。デリミタ記号を判断する手順について簡単に説明する。特 定すると、1つの例示的符号では(エリアス符号と呼ばれる)、デリミタ記号が ビット表現01101を有している。"that"に対応する拡張ASCIIストリン グは、01110100011010000110000101110100となる。 処理すべき次のソース記号は再び"that"である。この記号について辞書を調べ ると、辞書の先頭にまたは最高位のエントリとしてこの語が出現するので、この 特定の"that"についての可変長符号を送信する。例証的な符号では、1ビットの 1が送信される。 処理すべき次のソース記号は"is"である。この記号について辞書を調べると辞 書にはないので、これを辞書の先頭に追加して"that"記号を第2のエントリに順 位を下げる。この時点で"is"記号には1ビットの符号1が関係しており"that"記 号は辞書内の第2の位置を表わす符号0100を有する。デリミタ記号を送信 し、これに続けてバイト00000010(二文字が続く)、さらに"is"のAS CIIビットストリングすなわち0110100101110011が続く。 処理すべき次のソース記号は"is"である。この記号について辞書を調べると辞 書の先頭エントリにあるので、1ビットの1を送信する。辞書エントリは同じま ま、すなわち"is"には符号1が関係し、"that"には符号0100が関係する。 処理すべき次のソース記号は"that"である。この記号について辞書を調べると 辞書の第2の最も新しいエントリにあるので、符号0100を送信する。さらに 、"that"がエントリとして最も新しい"it"に置き換えられ、"it"は辞書内でラン クが下がる。したがって、"that"には符号1が関係し、"is"には符号0100が 関係する。この方法でソース記号全体に逐次的に処理を続ける。 ベントレーらによる上記の概要説明から示唆されるように、送信器でデータを 圧縮する処理は、(1)着信ソース記号のそれぞれについて辞書を探索するステ ップと、(2)辞書内のソース記号を追加/削除/再編成することにより辞書を 更新するステップと、着信ソース記号それぞれについて適切な符号を送信するス テップとを含む。探索と更新はどちらも線型的に行なわれる、すなわち辞書は線 形リストである。したがって探索および更新アルゴリズムが辞書の大きさに比例 する時間の複雑性を生じる。エントリが幾千から幾万になる大きな辞書では、ス テップ(1)と(2)を完了する時間は極端に大きくなり、したがって重要な多 数の高速用途では実施が現実的ではない。 本発明 図2を参照すると、ここには本発明による1次リスト200と2次リスト21 0の典型的な構成が図示してあり、処理しているテキスト(文書)資料に語のグ ループ"personal computer"がすでに出現したものと仮定して、各リスト内に含 まれるデータを図示している。図示したように、"personal"は1次リスト200 において位置Pに出現し、一方"computer"は位置(P−1)に出現している。2 次リスト210は、1次リスト200にトークンが現れる時のトークンの 位置(「トークン」の用語は、ここでは「語」の代わりに使用しているが、説明 している処理において「トークン(字句)」という概念がより一般的であること による)から構成される。つまり、1次リストにおける"personal"と"computer" の出現位置に対応させることで、2次リスト210は図示において2次リスト内 の位置「S−1」に1次リストのエントリ(P−1)を有し、一方1次リストか らのエントリPは2次リストの位置「S」に出現している。 ここで、テキストストリーム内でトークンのグループ"personal computer"に 再び遭遇したものと仮定する。トークン"personal"に最初に遭遇するので、1次 リスト200を探索して1次リスト上に"personal"があるか否かを判別する。探 索の結果、1次リスト上の位置Pに"personal"を突き止める。Pが2次リスト2 10の大きさNsを越えないものと仮定すれば、2次リスト210を探索してP が2次リスト内のエントリにあるか否かを調べる。この例では、エントリPは2 次リスト内の位置Sにみつかるので、処理結果として生ずる実際の出力は2次リ スト内の位置Sの符号化表現となる。2次リスト200(正しくは210)上の 位置Sが1次リスト200の位置Pよりも小さい場合は、その結果生ずる符号化 表現は一般に関連データを表現するのにより少ないビット数で済む。1次リスト 200の更新で1次リストの最初の位置(先頭位置)へ"personal"を移動し、同 様に2次リスト210の更新で2次リスト内の最初の位置(先頭位置)にPを移 動する。この処理段階でのリストの状態を図3に示す。更新の結果として、トー クン"computer"が1次リスト内で押し下げられて位置Pを現在占有しており、一 方2次リスト内の位置(P−1)は2次リストの位置Sを現在占有していること には注目すべきである。また、1次リスト200で位置(P−1)を占有するト ークンはこれまでの説明には関連がないことも注目すべきである。 さて、テキスト内で"computer"トークンに次に遭遇し、このトークンが処理に 供される。1次リスト200を探索し、トークン"computer"が1次リスト内の位 置Pに捜し出される。次に、2次リスト210でPの出現を探索し、Pは2次リ スト内の最初の位置に出現している。したがって、処理出力として位置「1」の 符号化表現を出す。1次リスト200の更新で"computer"が1次リストの最初の 位置に移動される。2次リスト内の最初の位置をすでにPが占有しているので2 次リスト210の更新は不要である。この処理段階でのリストの状態を図4に描 いてある。新たなトークンが1次リスト200の位置(P−1)とPに現在移動 されているが、これらはこれまでの説明とは関連がない。 1次リストおよび2次リストを用いてトークン・ストリームを処理することに より得られる符号化表現の比較において、1次リストだけを用いた処理と比較し て、前者は符号化表現「S,1」を生成するのに対し、後者は符号化表現「P, P」を生成する。 本発明の基本的方法の理解を得るため、1次メモリ(一般に1次リストとも称 する)における探索および更新操作の一例を呈示することで複数メモリでの探索 と更新操作を説明する。実質的に同じ原理が本発明の別のメモリに適用できる。 (一般性を失うことなく説明の複雑性を軽減するために、小数のソース・トーク ンだけを本実施例では用いている)。 本実施例の前置きとして、探索および更新操作の原理を理解するのに概要を示 すことがためになる。それ故、一般的なコンテキスト(文脈)において、各メモ リはデータ構造内の各トークンの「先頭移動」を行なう関連した概念データの構 造を有する。先頭移動データ構造を用いて、そのデータ構造に対して呼び出し機 構から呈示されるトークンを処理し、次の2つの操作の内の1つを実行すること が目的である。すなわち、(i)データ構造内にトークンが存在しない場合はそ のトークンをデータ構造内の先頭すなわちフロントに挿入し、また(ii)その データ構造内のトークンが存在する場合は、データ構造を再構築してそのトーク ンをデータ構造内の先頭すなわちフロントに移動する。先頭移動は探索および更 新として総称した2つの関連操作により達成する。トークンの操作を遂行する場 合、入力トークンを得ると、次の2つの結果の1つを生ずる:(a)そのトーク ンがデータ構造に存在している場合は、データ構造内の位置情報が物理アドレス 等で呼び出し機構へ戻され、あるいは(b)そのトークンがデータ構造内に存在 していない場合には、この結果のインディケータが呼び出し機構に戻される。ト ークンについての更新を遂行する場合は、入力トークンを得ると、次の2つの結 果の1つを生ずる:(1)そのトークンがデータ構造内に存在している場合は、 そのトークンのそのデータ構造の先頭ランク(先頭列)に割り当てる(これ は一般に「先頭移動」と呼ばれる操作のためであるが、概念データ構造に対応す る物理メモリではトークンは必ずしも移動されず、むしろ詳細に後述するように メモリ内のトークンに関連したポインタ情報が移動される)、または(2)トー クンがデータ構造内に存在しない場合、トークンを先頭ランクの位置に新規トー クンとして挿入し、これに対応して、新規トークンの追加によりデータ構造内の トークン数がデータ構造の容量すなわちサイズを超過してしまう場合にはデータ 構造内の最下位ランクのトークンを削除する(新規トークンを含めてトークンの 数がデータ構造の容量すなわちサイズを越えない場合にはトークンの削除は不要 である)。 探索操作 次に具体例に移り、図5および図7を参照する。図5では、データ構造500 内の各項目(アイテム)のレイアウトが、各データ構造の場所に6つのフィール ドからなるように図示してある。図7のメモリレイアウトを例にすると、記憶位 置30に関連したノードの位置では、次が得られる: フィールド1(要素501)−−関連する木の左の子の位置へのポインタ(例 :10) フィールド2(要素502)−−関連する木の右の子の位置へのポインタ(例 :40) フィールド3(要素503)−−関連する木の親の位置へのポインタ(例:5 0) フィールド4(要素504)−−トークン自身(例:"Warren") フィールド5(要素505)−−トークン内の文字数(例:6);および フィールド6(要素506)−−関連する木のこの場所(ノード)で経路選択 される分木(サブツリー)のノード数(例:5) この6つのフィールドの説明に示したように、データ構造内のエントリで要約 された情報を含む関連木構造で参照がされる。典型的な木600が図6に図示し てある(図5のデータは図6の木から抜粋してある)。通常の規則と同様に、木 600は根ノード601(エントリ"Bob"がある)を有し、木の各ノードは左の 子を、右の子を、左と右の子の両方を、有するか、あるいはいずれの子も有さな い。例えば、ノード602("Warren")は左の子(ノード604−−"Alice") と右の子(ノード605−−"Edward")とを有しているが、ノード605は左の 子も右の子も有していない。 さらに、図6の木と図5の付随するデータ構造に関連した物理メモリ700の 実際の内容を図7に描いてある。図7のメモリ700におけるデータで要約され た木600に関する情報のタイプの別の例として、"Peter"は左右に子ノード"He rman"と"Chris"をそれぞれ有しており、関連するポインタはそれぞれ70、10 0である。さらに、"Peter"は親として"Gary"(位置60)を有し、"Peter自身 はメモリ位置80にある。根は"Bob"で、根のメモリ位置は50である。 上記のデータ構造500、木600、メモリ700を念頭において、入力トー クンについての探索操作の例を次に説明する。第1ステップとして、入力トーク ンを「ハッシング」して"hash(トークン)=物理アドレス"として書き込まれる 物理アドレスを導出する。ハッシング技術によりできるかぎり無作意な方法でメ モリ内容をアドレス中に割り当てる従来のハッシング関数fに換算して指定する ことができる。トークンtの探索時に、ハッシングの経路指定でf(t)を計算 して、メモリ内のf(t)位置がtを含むか否かを確認する。もしこれを含む場 合、ハッシング関数は物理アドレスf(t)を出力する。例えば、予め設定して あるハッシング関数により次の情報が得られたと仮定する。 hash(Alice)=10、 hash(Warren)=30、 hash(Bob)=50、等。 第2のステップとして、「ハッシュした」メモリ位置におけるエントリをハッ シュしたトークンに対応するものとして確認する(所望のトークンは衝突によっ て上書きされていることが考えられる、つまりハッシング関数は必ずしも独自の 場所を得るものではないので、二つのトークンが同じ「ハッシング」結果を得る 可能性がある。「上書き(オーバライト」は衝突の取り扱いの従来の方法であっ てここでは詳しく説明しない)。最後のステップとして、確認したとすると、ラ ンク情報はデータ構造500の6番目のフィールド(例:506)にあるエント リに含まれる情報を使って復元される。例えば、トークン"Warren"はハッシュア ドレス=30を有しているので、"Warren"が実際に位置30のエントリであるこ とが確認される。ランクを計算し、左に子を有するノードの場合だと次のように なる: ランク=1+Warrenの左の子を根とする分木(サブツリー)のノード数 Warrenの左側の子はAliceで、Aliceは位置40に出現するので、6番目のエン トリは「3」である。したがってWarrenの「ランク」=1+3=4となる。 さらに完全にランクの概念を伝えるため、ランクの機構を示した図8を参照す る。ランクは左側−中央−右側(LCR)の順番で木に保持されている。すなわ ち、あるノードNでは、 Nの左の子とその子の子孫全部のランク<Nのランク となり、同時に Nのランク<Nの右側の子とその子の子孫全部のランク である。 つまり、図8に明示するように、WarrenがノードNの場合、LCRの順番から 要求されるように、これの左の子はAliceでランク=1、またAliceの子孫はIngr id(ランク3)とFrank(ランク2)、一方Warren自身のランク=4で、これの 右の子はEdwardでランク=5となる。 ノードNのランクを計算するためには、木のそのノードの位置から根までのノ ードNの径路全体を横断しなければならない。計算は次のようにコード化するこ とができる。 ランク=1 ノード=N if(ノードが左の子を有する),ランク=ランク+wt(ノードの左の子) /*wt(m)はmを根とする分木のノード数/* while(ノードが根ではない) {if(ノードが左の子) ノード=ノードの親 else/*ノードが右の子/* ランク=ランク+wt(ノードの親)-wt(ノード) ノード=ノードの親 } 計算例として、Peterのランク付けが所望されたものと想定する。最初に、上 記のコード化にしたがって、ランクを1に設定し、最初に注目するノードはPete rである。Peterは左の子を有するので、ランクの中間計算は次のようになる: ランク=1+wt(Herman)=1+1=2 /*(wt--図7のフィールド6、位置70)*/ Peterは根ではないので、計算を継続する。Peterは左の子ではないので、ラン クの他の計算を次のようになる: ランク=2+wt(Gary)-wt(Peter)=2+4−3=3 ここで注目している次のノードとしてPeterをPeterの親すなわちGaryと入れ換 える。Garyは根ではないので、計算を続行する。Garyは右の子であるから、ラン クの他の計算は次のようになる: ランク=3+wt(Bob)-wt(Gary)=3+10−4=9 ここで注目している次のノードとしてGaryをGaryの親、すなわちBobと入れ換 える。Bobは根ノードなので、計算が停止し、最終的結果としてPeterのランクが 9となる。これが図8では♯9をノード606のとなりに配置して図示してある 。 トークン探索とトークンランク取得の手順の説明はこれで終る。 更新操作 繰返し(反復)に基づいてメモリの先頭にトークンを配置する、またはこれに 対応して木および関連するデータ構造内にトークンを配置するのには、次の2つ の手順のうちの一方が必要である:(1)トークンが存在していなければランク 番号の最上位にトークンを挿入する、または(2)トークンが存在しているなら 現在のランクから最上位のランクにトークンを移動する。これらの2つの手順は 「木の拡張(tree splaying)」と呼ばれる手順で遂行する。木の拡張はスレータ ーとターハンによる「自己調整2進探索木」(Communications of the ACM、 32(3)、652〜683ページ、1985年7月)と題する論文(Sleator and Tarjan,"Self-adjusting Binary Search Trees",Communications of the ACM32(3),pp652-683,July 1985)に記載されている。この詳細な記述が本発明 の作成と使用を教示することを確実にするため、この参考文献から充分な資料を 本明細書に含めてこの開示を基本的に自己内包(self-contained)とするようにし てある。したがって、図9を参照すると、「ジグ(jig)」すなわち回転操作(回 転オペレーション)と呼ばれるひとつの原子(atomic)木拡張操作の前の木90 0が図示してある。ノードy(参照番号901)はノードx(参照番号902) 並びに分木C(参照番号905)とに接続されるように図示してある。表記規則 に従い、ノードは円で図示し、また分木は三角形で図示してある。同様に、ノー ドxは分木AとB(それぞれ参照番号902、903)とに接続されている。木 900の右回転すなわち右ジグでは、図10に描いた木1000が得られる。こ こでノードx(参照番号1001)は木の根に移動されており、ノードy(参照 番号1002)はノードxの右の子になっている。さらに、分木B(参照番号1 004)はノードyの左の子になっている。しかし、分木Aと分木C(参照番号 1003と1005)は親子関係がそのまま残っている。ジグ操作の利点は、L CR規則によるランクが保存されることで、これはさらにそれぞれの影響を受け るデータ構造の6番目のフィールドの情報の生成または変更が拡張処理の基本的 なサブプロセスとして含まれることを暗に意味している。 図9および図10に図示したジグ操作の詳細を探求するため図11と図12を 参照する。これらの図11、図12はそれぞれが図9と図10に対応するデータ 構造である。図11のデータ構造1100はトークンyを有するデータ構造11 01、トークンxを有するデータ構造1102、およびトークンa、b、cをそ れぞれ有するデータ構造1103〜1105から構成されるているように図示さ れている。さらに、左側、右側、親のポインタの意味(sense)も図示してある。 例えば、データ構造1101の左の子ポインタ11011はデータ構造1102 を指している。さらに、データ構造1102の親ポインタはデータ構造1101 を指している。ジグ操作のあと、図12のデータ構造1200が得られる。所望 のように、データ構造1203、1204、1205(それぞれトークンa、b 、cに関連する)で経路された分木はそのまま残り、これら後者3つのデータ構 造の6番目のフィールドは同一に残る。他方、データ構造1201(トークンx )の6番目のフィールドはこれが根であることを反映するように変更しなければ ならない。つまりトークンxの6番目のエントリはこれまでn2だったが現在で はn1になっており、このエントリは勿論トークンyが根だった時のトークンy のこれまでのエントリであったものである。トークンyの6番目のフィールドの 新規エントリはトークンbとcが現在トークンyの子であることを反映しなけれ ばならない。この新規の木構造を反映するようにポインタ情報も変更する必要が ある。例示のように、トークンyは現在左の子としてトークンbを有しており、 このトークンをポインタ12021が指している。 他に2つの原子拡張操作があり、これらにより木のトークン位置更新を起動で きる。これらの操作の最初の操作は「ジグ−ジグ(jig-jig)」操作と呼ばれるも ので、図13の木1300に図示したように、ノードが「直線」径路に出現した 場合に適用される。図13では、ノード1301〜1303(x−y−z)が直 線径路に出現しており、木1300の拡張の結果により図14の木1400が導 かれる。いま、トークンxは木の最上部にあり、このトークンがノード1401 に関連している。さらに、分木の幾つかが再配列されている。例えば、分木14 05(B)は現在はノード1402(y)の左の子だが、以前の分木1306( B)はノード1301(x)の右の子だった。 「ジグ−ザグ」操作と呼ばれる第2の操作は、図15の木1500に図示する ようにノードが「ジグザグ線」の径路(パス)上に出現する場合に適用される。 図15において、ノード1501〜1503(x−y−z)はジグザグ径路上に 現れており、木1500の拡張の結果として図16の木1600が導かれる。こ こで、トークンxは木の先頭に現出し、ノード1601に関連している。さらに 、分木の幾つかが再配置されている。例えば、分木1605(B)はノード16 02(y)の右の子だが、それまでの分木1505(B)はノード1501(x )の左の子だった。 原子操作を適用する最後の例として、図17および図18のそれぞれの木17 00と1800を参照する。目的は木1700のノード1701(トークンa) をノード1801として木1800の先頭に拡張することである。原子操作の順 序は次のようなものである。まず、ノード1701は8の深さにある、すなわち ノード1701から根ノード1702までに8つのノードを通過しなければなら ない。ジグ−ジグ操作でトークンaを深さ6に移動し、ジグ−ザグ操作でトーク ンaを深さ4に移動し、ジグ−ザグ操作でトークンaを深さ2に移動し、最後に ジグ−ジグ操作でトークンaを深さ0、すなわち根に移動する。これら4つの連 続原子操作の結果を図18の木1800で図示してある。図示したように、ノー ドと分木の多数の再配列が起こっているが、LCR規則で測ると木構造のランク は拡張処理の一部として保存されている。 木の拡張処理を説明したので、注目しているトークンを1次メモリの先頭へ移 動または挿入し、それに対応して特定のトークンを最高ランクへ移動するのも容 易に解明できる。考慮する最初の操作はメモリの先頭はまたは関連する木の最上 部へのトークンaの挿入であり、この挿入前の木を図19の三角形1901で総 括的に図示してあり、ここでTは挿入前に存在する木全体を表わす。図20の木 2000は木1901がノードaの右の子になることを表わし、LCR規則にし たがってトークンaが最新のランクを有する必要がある、すなわちランク(a) <ランク(T)となる。 挿入後、メモリが一杯ならば最低ランクのトークンの必要な削除も処理しなけ ればならない。2つの場合が考えられる、すなわち最も古いランクのノードが子 孫(offspring)のない右の子(図21)の場合、または最も古いノードが子孫を 有する場合(図22)とが考えられる。図21を参照すると、楕円2101はノ ード2102および2103(yおよびx)と分木2104(A)を除く木の残 りの部分を含む部分的な木を表わす。ノード2103(x)は子孫のない最古ラ ンクのノードであり、ノード2102の6番目のフィールドを1だけ減らし、ノ ード2101の右の子のポインタを「ヌル化(空白化)」することだけで削除さ れる。図22の木はノード2101を削除した結果である。図23を参照すると 、ここでも楕円2301がノード2302および2303(yおよびx)と分木 2304(A)を除く木の残りの部分を含む部分的な木を表わしている。ノード 2303(x)は子孫(A)を有する最古のランクのノードで、ノード2303 はノード2102の6番目のフィールドを1だけ減らし、また木2304の先頭 ノード(図示していない)を指すようにノード2101の右の子ポインタを入れ 換えるだけで削除される。図24の木はノード2303の削除の結果である。 メモリ先頭へのトークンの移動とそのトークンのランクの更新について、特に ここで拡張の概念を用いて説明する。この手順は次のような幾つかのステップか らなり、ここではトークンaに注目しているものとする。 (1)トークンaを木の先頭に拡張する。この拡張ステップの結果、2つの可 能な構成が得られ、これらをそれぞれステップ(2)とステップ(3)で取り扱 う。 (2)トークンaが図25のノード2501で示したように右の子を有してい ない場合、ランク(a)はLCR規則により最後となる。ランク(a)は、木2 502をノード2501の左の子から、子のポインタ情報を変更してノード25 01の右の子になるように移動することで(図26)、最も新しいランクへ容易 に変換できる。ここでノード2501は右の子だけを有し規則によりランク(a )=1である。 (3)最も一般的な場合を図27に示す。ノード2701は左右の子を両方と も有し(それぞれ木2702と2703(AおよびB))ている。最初に、木2 703だけに注目する。木2703内部の最初にランクされるノードは木 2703の根から明示的に引き出される。この引き出し操作の結果により図28 の木構造が生成され、ノード2704(b)が木2703の第1ランクのノード となり、木2705(B’)が木2703からノード2704を引き出した残り となる。最終ステップとして、別の拡張操作により図29の木構造が導かれ、こ こでノード2701は右の子孫だけを有しており、したがってノード2701は LCR規則により最も新しいランクのノードとなる。 これで先頭移動と最初のランク移動の両方が同時に行なわれる更新操作の説明 を終る。 流れ図 図30を参照すると、ここには1次メモリおよび2次メモリの組み合せを使用 して着信トークンを処理するための流れ図が図示してある。開始ブロック300 5で処理が始まると、処理ブロック3010が起動されて着信データを解析して トークンストリームを取得する。各トークンが順次処理され、各トークンは判断 ブロック3015で処理されトークンが1次メモリにあるか否かを判別する。1 次メモリに存在しない場合、ブロック3025の処理が起動され、最初に新規ト ークンが続くことの識別データと、第2にトークンの符号化表現とを出力する。 トークンは処理ブロック3030で実行されて1次メモリの先頭に挿入される。 このような処理は上記の詳細な説明で詳述した原子木拡張操作を用いてトークン を挿入することを含む。 トークンが1次メモリに存在する場合は、ブロック3020の処理が起動され てトークンの1次メモリのアドレスを判別する。次に、判断ブロック3035が 実行されて、1次メモリのアドレスが2次メモリにあるか否かを判別する。存在 しない場合にはブロック3040、3045、3050の一連の処理が起動され る。ブロック3040は1次メモリのトークンのランクを圧縮した出力データ・ ストリーム内のデータ・ブロックとして伝送する。トークンは2次メモリに存在 しなかったので、処理ブロック3045に要約してあるようにトークン(の1次 メモリのアドレス)を2次メモリの先頭に挿入する。挿入は最新ランクの2次メ モリ内の先頭エントリのランクづけを含む原子拡張操作を用いて成し遂げられる 。ブロック3050では1次メモリの先頭にトークンを移動し、再び木の拡張技 術を使用する。 1次メモリのアドレスが2次メモリに存在する場合は、処理ブロック3055 に示してあるように、1次メモリ・アドレスの2次メモリ内の記憶位置が有効に なる。処理ブロック3060を用いて2次メモリの記憶位置のランク(順位)を トークンの符号化表現として出力データ・ストリームに出力する。処理ブロック 3065と3070により、それぞれ、トークンを1次メモリの先頭に移動する ことと、トークンの1次メモリ・アドレスの2次メモリでの記憶位置を2次メモ リの先頭に移動することにより、トークンへの処理を完了する。それぞれの移動 は木の拡張を使用する。 図31を参照すると、ここでは1次、2次、3次メモリの組み合せを用いて着 信トークンを処理するための流れ図3100が図示してある。開始ブロック31 05で処理を開始すると、処理ブロック3110が起動されて着信データを解析 しトークンのストリームを取得する。各トークンは逐次処理されて、各トークン を判断ブロック3115により処理しトークンが1次メモリにあるか判別する。 1次メモリに存在しない場合には、ブロック3125の処理が起動されて、最初 に新規トークンが続くことの識別データと、第2にトークンの符号化表現を出力 する。トークンはブロック3130で処理されて1次メモリの先頭に挿入される 。このような処理は前述の詳細な説明で詳述した原子木拡張操作を使用してトー クンを挿入することを含む。 トークンが1次メモリに存在する場合には、ブロック3120の処理が起動さ れて1次メモリ・アドレスを判別する。次に、判断ブロック3135を遂行して 1次メモリ・アドレスが2次メモリにあるか否かを判別する。存在しない場合に は、ブロック3140、3145、3150の一連の処理を起動する。ブロック 3140は1次メモリのトークンのランクを圧縮した出力データ・ストリーム内 のデータ・ブロックとして伝送する。トークンが2次メモリに存在しなかったの で、ブロック3145に要約したように2次メモリの先頭にトークン(の1次メ モリのアドレス)を挿入する。挿入は最も新しいランクで2次メモリ内の先頭エ ントリのランクづけを含む原子拡張操作を用いて成し遂げられる。ブロック31 50では1次メモリの先頭にトークンを移動し、再び木の拡張技術を使用する。 1次メモリ・アドレスが2次メモリに存在する場合には、ブロック3155に 示したように、1次メモリ・アドレスの2次メモリの記憶位置が有効になる。次 に、処理ブロック3160が起動されて1次メモリの先頭にトークンを移動する 。判断ブロック3161に入ると、1次メモリ・アドレスの2次メモリ記憶位置 が3次メモリに存在するか否かを判別する。存在しない場合には、ブロック31 65、3170、3175で行なわれる一連の処理で、それぞれ、出力ストリー ムとして2次メモリランクの符号化表現を伝送し、3次メモリの先頭に2次メモ リ記憶位置を挿入し、2次メモリの先頭に2次メモリの記憶位置を移動する。 1次メモリ・アドレスの2次メモリ記憶位置が3次メモリ内に存在する場合は 、ブロック3180に入って2次メモリの記憶位置の3次メモリの位置を判別す る。このあと、3次メモリ位置のランクを処理ブロック3185で用いて出力デ ータ・ストリームにトークンの符号化表現で供給する。処理ブロック3190と 3195では、それぞれ、3次メモリの位置を3次メモリの先頭に移動し、トー クンの1次メモリ・アドレスの2次メモリの位置を2次メモリの先頭に移動する ことにより、トークンの処理を完了する。それぞれの移動は木の拡張を使用する 。 トークンと整数の符号化/復号化 圧縮した出力データ・ストリームは整数(最近のランクを表わす)とトークン からなる一連のものである。これらの整数とトークンは圧縮処理を完成するため に適切な表現に符号化しなければならない。周知の従来技術において、速度と圧 縮率とが引き替えになるような符号化方式は存在していた。例えば、いつ整数を 予測するのか、またいつトークンを予測するのかが復号器または伸長器に分るよ うに符号化を構成することが可能であるので、それぞれを独立に取り扱うことが できる。復号器に知らせる1つの方法は各トークンのまえに整数0を置き、これ によって次にトークンが現れることを表わし、これによって復号器は0を受信し た場合を除き、最近のランクを表わす整数を常に予測する。 符号化すべき整数はリスト内のアドレス、記憶位置、または位置を表わす。一 般に良好な圧縮を達成するには可変長符号化を使用する必要がある、すなわち小 さい整数程少ないビット数に符号化されることが知られている。しかし可変長符 号化は、可変量だけビット数をシフトしなければならないため、効果的な実行が 困難になり、また出力バイトがデータで埋められている度合を判別するためのチ ェックを行なわなければならない。 本発明の好適な実施例における妥協として、整数の可変長符号化を使用してい る演算結果コード(resulting codes)が常にニブル(nibbles)の整数倍(4ビット )となっている。この符号化技術はシフトが一定のビット数だけに発生するので 高速な符号化および復号化を提供できる。さらに、あるバイトが空か、あるバイ トが一杯か、またはあるバイトが半分埋っているか、の3つの可能性だけがある 。本発明の図示したような符号化方式は、データとしてニブルの下3桁ビットを 用いること、また符号化している現在の整数(またはそれに対応する符号中の整 数)がさらにニブルを含むか否かを知らせるフラグとして高次ビットを使用する ことにより、4[K/3]ビットを用いるK2進数字の整数を出現する。 トークン自身の符号化については、典型的にはトークンの符号化は行なわない ことが有効である。むしろ、トークン内の各文字のバイト表現を送信する。本発 明の好適な実施例では、この技法を1つの変形として使用している、すなわち符 号器がトークンを出力する前に、トークンのランクを表わす整数の符号化に関し て上述した可変長整数符号化を用いて、バイト数でのトークンの長さを伝送する 。 復号または伸長に関しては、圧縮ストリーム内の整数は1次リスト内の入力ト ークンの出現するアドレス(すなわち最新ランク)、または1次リスト内の入力 トークンのアドレスの2次リスト内の記憶位置(または一部の実施例では、1次 リスト内の入力トークンのアドレスの2次リスト内の記憶位置の3次リスト内の 記憶位置)を表わすことが可能なので、適切な対応付けを行ない、必要とされ るそれぞれアドレス、記憶位置、または位置をアクセスするために整数が使用で きるようにする必要がある。好適な実施例の手法では、整数が2次リストの最大 のサイズすなわち長さよりも小さいか、または等しければ整数と2次リストとを 対応付け、それ以外の場合には整数と1次リストとを対応付けるものである。デ ータ/ストリームの再構成のためにアクセスするリストを選択するこの手順は、 トークンのアドレスが、上記に詳述したような、2次リスト内に挿入および/ま たは更新される方法に全く直接的に従う。 図示した回路の実施例 本発明の1次−2次メモリ形態による図32の符号器(エンコーダ)3200 はリード線(導線)3201に加えられるDATA IN(データ入力)を受信する入 力解析部(パーサ)3210を含む。解析部3210は適切な字句解析技術を使 用してリード線3201の着信データ・ストリームをトークンに分割するのに用 いる。リード線3201上のデータ・ストリームは、またタイミング回路323 0への入力としても供され、タイミング回路ではタイミング情報を再現してバス 3233経由で符号器3200を制御する。FIFO3220のシフト・イン( SI)ポートへ伝送されるリード線3231のタイミング信号の制御下に、トーク ンはリード線3214を経由してFIFO3220のDATAポートへ伝送される。 つまり着信トークンは先入れ先出し方式で連続的に配列される。タイミング回路 3220からリード線3232で受信したシフト・アウト(SO)信号はバス32 21経由でハッシュ発生器3250とバッファ3240の両方へ次に利用可能な トークンを配信させる。バッファ3240は処理段階の期間にこのトークンを記 憶する。ハッシュ発生器3250は所定のハッシュ関数を用いてトークンを1次 メモリアドレスに変換し、これがバス3251から1次回路3260の制御装置 3261へ転送される。1次回路3260も1次メモリ3262(1次リストと しても公知である)から構成される。制御装置3261は双方向制御バス326 3経由でメモリ3262の探索を行なって、トークンがメモリ3262に記憶さ れているか否かを判別する。 トークンがメモリ3262に存在しない場合、制御装置3261は線3264 経由でバッファに信号を送出して出力制御装置3090へバス3241経由で記 憶してあるトークンを伝送し、新規トークンを表わす適当な識別データが出力バ ス3291へ伝播し、これにトークンの符号化表現が続く。さらに、バッファ3 240からトークンが抽出されて制御装置3261へバス3241経由で伝送さ れ、制御装置3261の制御下にメモリ3262の先頭に挿入される。制御装置 3261は原子木拡張操作を行なって新規トークンをメモリ3262の先頭に挿 入し、メモリ3262の最新のランクにトークンをランク付ける。タイミング回 路3230には線3265経由で信号が入り、FIFO3220に記憶してある 次のトークンの処理を開始する。 トークンがメモリ3262に存在する場合、トークンの1次メモリ・アドレス の探索が2次回路3280の2次メモリ3282で行なわれる。この探索を開始 するには、1次メモリ・アドレスをバス3266上で制御装置3261からハッ シュ発生器3270へ渡して、ハッシュ発生器3270は所定のハッシュ関数に より1次メモリ・アドレスをハッシングする。ハッシュ発生器3270の出力は 出力バス3271経由で2次制御装置3281へ提供される。制御装置3281 はチェックを行ない1次メモリ・アドレスが2次メモリ3282に存在するか否 かを双方向バス3283経由で判別する。1次メモリ・アドレスが存在しない場 合、このことを表わす適当な信号をバス3283経由で1次制御装置3261へ 伝送し、制御装置3261がトークンのランクをバス3264経由で出力制御装 置3290へ供給できるようにし、出力制御装置ではこのランクが出力バス32 91上で圧縮データ・ストリーム内へ出力ブロックとして伝送される。さらに、 トークンが制御装置3261により木の拡張操作を用いてメモリ3262の先頭 へ移動される。 1次メモリ・アドレスが2次記憶位置で2次メモリ3282に存在する場合、 その2次記憶位置に関連するに時ランクがバス3284経由で出力制御装置32 90へ供給され、2次ランクがここから出力バス3291上で圧縮データ・スト リーム内に出力ブロックとして伝送される。符号器3200で行なわれる最終的 操作には、メモリ3262の先頭へトークンを移動する制御装置3261の 動作、2次メモリ3282の先頭へ1次メモリ・アドレスを移動する制御装置3 281の動作、線3285でタイミング回路3230へ信号を送出し、次に処理 するトークンを供給するようにFIFO3220をトリガする制御装置3281 の動作を含む。 本発明による図33の復号器3300はFIFO3310と、例えば転送媒体 または記憶装置から線3301に供給されたDATA INを受信する解析部3330 を含む。FIFO3310は着信データの断片を「新規」トークンまたは「既存 の」トークン分類に分類する中間処理段階で任意の速度で着信するデータを記憶 するためのバッファとして用いる。解析部3330は着信データに操作を行ない タイミング復号器3300用のクロックを復元し、また逐次的に「既存」のトー クンから「新規」トークンを分離する。「新規」トークンは3つの情報のグルー プ、すなわち、デリミタ(0)、新規トークンの大きさニブル、および新規トー クン・バイトを特徴としているので、解析部3330は各デリミタ(区切り)を 検出するように構成してある。デリミタが通常は着信データ・ストリーム内の伝 送された起始データであると仮定して、解析部3330はこのデリミタを検出し 、「新規」トークン信号をこれに対応するNEW FLAGポートから制御装置3320 のNEWポートへ線3331経由で伝送する。制御装置3320は解析部3330 から線3333経由でCLポートにクロック信号も受信する。制御装置3320は 、「新規」トークン・フラグに応じて、FIFO3310を作動させ、DEL SOポ ートからFIFO3310のSOポートに接続された線3321経由で、新規トー クンの大きさを含むビット位置をシフトする。ビットはFIFO3310のOUT ートからANDゲート3315の一方の入力として用いられる線3311に伝送 される。ゲート3315のもう一方の入力は、線3322上の制御装置3320 からのイネーブル信号(EN)である。新規トークンの大きさを含むビットはゲー ト3315の作動中に制御装置3310のSIZEポートへ供給される。新規トーク ンの大きさが既知になれば、制御装置3320はこの情報を線3323経由でF IFO3310へ供給される別のシフト信号に変換する。同時に、線3324上 の対応するイネーブル信号がANDゲート3316の一方の入力に供給されて、 FIFO3310から線3311に伝送されたビットをゲート 3316とこれに対応する出力線3313を介して新規トークン記憶3340へ 供給することができる。 新規トークン記憶3340からのバス3341上の情報はハッシュ発生器33 50への入力として用いる。発生器3350は所定のハッシュ関数(図32に図 示のハッシュ発生器3250に対応する)を用いて新規トークンを1次メモリ3 372に記憶するための1次回路3370の制御装置3371で使用するアドレ スを生成する。生成したアドレスはバス3351に現れ、これは新規トークンが 符号器3200の1次メモリ3261に書き込まれたアドレスと同一である。こ のアドレス情報によって、制御装置3371の入力でバス3341上に現れる新 規トークンをメモリ3372に書き込むことができる。新規トークンの挿入で制 御装置3371は符号器3200に対応する方法で木の拡張を用いメモリ337 2の内容を更新する、すなわち復号器3300は符号器3200で実行した操作 を複製するように構成される。更新操作と同時に、新規トークンは新規シンボル 記憶から線3341経由で出力プロセッサ3390へも伝播する。出力プロセッ サ3390は必要な場合に速度変更とデータ平滑化を行なって新規記号を表わす ビット列をフォーマットし伸長文字列を線3391に出力する。 着信データの解析の時点に戻って、今度は「既存の」トークンが着信データ文 字列に検出されたと仮定する。「既存の」トークン情報はバス3332経由でラ ンクロケータ3360に伝送され、ロケータは既知の大きさの2次リストと整数 を比較することによってランクが1次回路3370で処理すべきものかまたは2 次回路3380で処理すべきものか否かを判別する。任意のランクを有するトー クンはバス3375経由で通信しメモリ3372内で探索されて、このトークン がバス3376経由で出力プロセッサ3390に渡される。メモリ3372の更 新は木の拡張操作によって行なう。さらに、新規トークンを記憶している1次メ モリ・アドレスは2次回路3380の2次メモリ3382にも記憶する必要があ り、これはバス3374上で受信した1次メモリ・アドレスをハッシュ発生器3 355においてハッシュし、またハッシュしたアドレスをバス3356から制御 装置3381へ供給することによって行なう。ハッシュ発生器3355は符号器 3200のハッシュ発生器3270と同一のハッシュ関数を有する。 ランク情報を回路3380で処理すべき場合には、ランク情報はバス3361 経由で処理のために制御装置3381へ伝送される。任意のランクを有する2次 メモリ・アドレスが制御装置3381と双方向バス3385を経由してメモリ3 382内で探索され、今度は2次メモリ・アドレスの内容が所望のトークンを含 む1次メモリ3371のアドレスを指す。情報および制御信号の通信は双方向バ ス3373で行なわれる。さらに、探索したトークンはバス3376経由で出力 プロセッサ3390に渡される。メモリ3372、3382の更新は符号器32 00の動作を反映するような方法で木の拡張操作により行なわれる。 上記の説明はハッシュ技術を使用してリストまたはメモリ内のトークンを探索 する実施例に着目しているが、他の種類の探索がさらに効果的または効率的であ れば、特に2次リスト(または3次リスト)の最大長が小さい場合に、このよう な探索を用いることができることは明らかである。 前述の実施例は本発明による原理を単に図示するものでしかないことは理解さ れるべきである。本発明の主旨と範囲に於いて原理を実現するようなその他の実 施例は当業者が簡単に考案することができよう。本明細書で説明した回路構成は 図示を目的として示した特定の態様に制限されるものではなく、添付の請求の範 囲によってのみ制限されるその他の実施例を仮定し得ることはさらに理解される べきものである。
【手続補正書】 【提出日】1996年10月3日 【補正内容】 請求の範囲 1.トークンを圧縮する方法であって、 トークンが1次リストに現れない場合には該トークンの符号化表現を伝播する ステップと、 トークンが前記1次リストには現れているが該1次リスト内の該トークンの位 置が2次リストには現れない場合には該1次リスト内の該トークンの位置の符号 化表現を伝播するステップと、 トークンが前記1次リストに現れていて、かつ該1次リストでの該トークンの 位置が前記2次リストに現れる場合には該トークンに対応する該2次リスト内の 位置の符号化表現を伝播するステップと を含む圧縮方法。 2.着信データ・ストリームを圧縮して発信圧縮データ・ストリームを作成する 方法であって、 (a)着信データ・ストリームを解析して対応するトークンのストリームを生 成するステップと、 (b)前記トークンのストリームからの各トークンが1次メモリに記憶されて いるか否かを逐次判別し、記憶されている場合にはステップ(f)を呼び出し、 それ以外の場合にはステップ(c)へ続行するステップと、 (c)新規トークンを示す識別データを送信し、前記圧縮データ・ストリーム 内の対応する発信データセグメントとして該新規トークンの表現を送信するステ ップと、 (d)前記1次メモリの先頭に前記新規トークンを挿入するステップと、 (e)ステップ(b)に戻るステップと、 (f)前記1次メモリ内の前記各トークンの該1次メモリ・アドレスを判別す るステップと、 (g)前記1次メモリ・アドレスが2次メモリ内に存在するか否かを判別し、 存在する場合にはステップ(l)を呼び出し、それ以外の場合にはステップ(h )へ続行するステップと、 (h)前記圧縮データ・ストリーム内の発信セグメントとして前記1次メモリ ・アドレスに対応するデータ・ブロックを送信するステップと、 (i)前記2次メモリの先頭に前記1次メモリ・アドレスを挿入するステップ と、 (j)前記1次メモリの先頭に前記各トークンを移動するステップと、 (k)ステップ(b)に戻るステップと、 (l)前記1次メモリ・アドレスの前記2次メモリ記憶位置を判別するステッ プと、 (m)前記1次メモリの先頭に前記各トークンを移動するステップと、 (n)前記2次メモリ記憶位置が3次メモリに存在するか否かを判別し、存在 する場合にはステップ(s)を呼び出し、それ以外の場合にはステップ(o)へ 続行するステップと、 (o)前記圧縮データ・ストリーム内の発信セグメントとして前記2次メモリ 記憶位置に対応するデータ・ブロックを送信するステップと、 (p)前記3次メモリの先頭に前記2次メモリ記憶位置を挿入するステップと 、 (q)前記2次メモリの先頭に前記2次メモリ記憶位置を移動するステップと 、 (r)ステップ(b)に戻るステップと、 (s)前記2次メモリ記憶位置の前記3次メモリ位置を判別するステップと、 (t)前記圧縮データ・ストリーム内の発信セグメントとして前記3次メモリ 位置に対応するデータ・ブロックを送信するステップと、 (u)前記3次メモリの先頭に前記3次メモリ位置を移動するステップと、 (v)前記2次メモリの先頭に前記2次メモリ記憶位置を移動するステップと 、 (w)ステップ(b)に戻るステップと を含む圧縮方法。 3.入力トークンを圧縮する回路であって、 トークンの1次リストと2次リストを記憶するメモリと、 前記メモリに接続され、前記入力トークンが前記1次リストに現れないたびに 前記入力トークンの符号化表現を伝播する手段と、 前記メモリに接続され、前記入力トークンが前記1次リストには現れるが該入 力トークンの該1次リストでの位置が前記2次リストには現れないたびに前記1 次リストでの該入力トークンの前記位置の符号化表現を伝播する手段と、 前記メモリに接続され、前記入力トークンが前記1次リストに現れており該入 力トークンの該1次リストでの位置が前記2次リストに現れる場合に該入力トー クンに対応する前記2次リストでの位置の符号化表現を伝播する手段と を含む圧縮回路。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ラヤゴプラン,シヴァラマクリシュナン アメリカ合衆国 02146 マサチューセッ ツ州,ブルックライン,エグレモント ロ ード 28,アパートメント 3 (72)発明者 ヴェンカテサン,ラマラスナム アメリカ合衆国 07960 ニュージャージ ー州,モーリスタウン,コンクリン アヴ ェニュ 9 (72)発明者 ウェイ,ヴィクター,ケーウェイ アメリカ合衆国 07058 ニュージャージ ー州,ワレン,オークウッド パス 7

Claims (1)

  1. 【特許請求の範囲】 1.トークンを圧縮する方法であって、 トークンが1次リストに現れない場合には該トークンの符号化表現を伝播する ステップと、 トークンが前記1次リストには現れているが該1次リスト内の該トークンの位 置が2次リストには現れない場合には該1次リスト内の該トークンの位置の符号 化表現を伝播するステップと、 トークンが前記1次リストに現れていて、かつ該1次リストでの該トークンの 位置が前記2次リストに現れる場合には該トークンに対応する該2次リスト内の 位置の符号化表現を伝播するステップと を含む圧縮方法。 2.トークンを圧縮する方法であって、 トークンが1次リストに現れない場合には該トークンの符号化表現を伝播する ステップと、 トークンが前記1次リストには現れるが該トークンの該1次リスト内の位置が 2次リストに現れない場合には該1次リスト内の該トークンの位置の符号化表現 を伝播するステップと、 前記トークンが前記1次リストに現れていて、かつ該1次リストでの該トーク ンの位置が前記2次リストに現れているが、該2次リスト内の該位置が3次リス トには現れない場合には該トークンに対応する該2次リスト内の前記位置の符号 化表現を伝播するステップと、 トークンが前記1次リストに現れ、該1次リストでの該トークンの位置が前記 2次リストに現れ、かつ該2次リストの該位置が前記3次リストに現れる場合に は、該トークンに対応する該3次リスト内の位置の符号化表現を伝播するステッ プと を含む圧縮方法。 3.着信データ・ストリームを圧縮して発信圧縮データ・ストリームを作成する 方法であって、 (a)着信データ・ストリームを解析して対応するトークンのストリームを生 成するステップと、 (b)前記トークンのストリームからの各トークンが1次メモリに記憶されて いるか否かを逐次判別し、記憶されている場合にはステップ(f)を呼び出し、 それ以外の場合にはステップ(c)へ続行するステップと、 (c)新規トークンを示す識別データを送信し、前記圧縮データ・ストリーム 内の対応する発信データセグメントとして該新規トークンの表現を送信するステ ップと、 (d)前記1次メモリの先頭に前記新規トークンを挿入するステップと、 (e)ステップ(b)に戻るステップと、 (f)前記1次メモリ内の前記各トークンの該1次メモリ・アドレスを判別す るステップと、 (g)前記1次メモリ・アドレスが2次メモリ内に存在するか否かを判別し、 存在する場合にはステップ(1)を呼び出し、それ以外の場合にはステップ(h )へ続行するステップと、 (h)前記圧縮データ・ストリーム内の発信セグメントとして前記1次メモリ ・アドレスに対応するデータ・ブロックを送信するステップと、 (i)前記2次メモリの先頭に前記1次メモリ・アドレスを挿入するステップ と、 (j)前記1次メモリの先頭に前記各トークンを移動するステップと、 (k)ステップ(b)に戻るステップと、 (l)前記1次メモリ・アドレスの前記2次メモリ記憶位置を判別するステッ プと、 (m)前記圧縮データ・ストリーム内の発信セグメントとして前記2次メモリ 記憶位置に対応するデータ・ブロックを送信するステップと、 (n)前記1次メモリの先頭に前記各トークンを移動するステップと、 (o)前記2次メモリの先頭に前記2次メモリ記憶位置を移動するステップ と、 (p)ステップ(b)に戻るステップと を含む圧縮方法。 4.請求項3に記載の圧縮方法に於いて、前記1次メモリの先頭に前記新規トー クンを挿入する前記ステップ(d)は該1次メモリを表わす木を拡張するステッ プを含む圧縮方法。 5.請求項3に記載の圧縮方法に於いて、前記2次メモリの先頭に前記1次メモ リ・アドレスを挿入する前記ステップ(i)は該2次メモリを表わす木を拡張す るステップを含む圧縮方法。 6.請求項3に記載の圧縮方法に於いて、前記1次メモリの先頭に前記各トーク ンを移動する前記ステップ(j)は該1次メモリを表わす木を拡張するステップ を含む圧縮方法。 7.請求項3に記載の圧縮方法に於いて、前記1次メモリの先頭に前記各トーク ンを移動する前記ステップ(n)は該1次メモリを表わす木を拡張するステップ を含む圧縮方法。 8.請求項3に記載の圧縮方法に於いて、前記2次メモリの先頭に前記2次メモ リ記憶位置を移動する前記ステップ(o)は該2次メモリを表わす木を拡張する ステップを含む圧縮方法。 9.請求項3に記載の圧縮方法に於いて、前記トークンのストリームからの各ト ークンが1次メモリに記憶されているか否かを逐次判別する前記ステップ(b) は該トークンをハッシュするステップを含む圧縮方法。 10.請求項3に記載の圧縮方法に於いて、前記1次メモリ・アドレスの前記2 次メモリ記憶位置を判別する前記ステップ(g)は前記1次メモリ・アドレスを ハッシュするステップを含む圧縮方法。 11.着信データ・ストリームを圧縮して発信圧縮データ・ストリームを作成す る方法であって、 (a)着信データ・ストリームを解析して対応するトークンのストリームを生 成するステップと、 (b)前記トークンのストリームからの各トークンが1次メモリに記憶されて いるか否かを逐次判別し、記憶されている場合にはステップ(f)を呼び出し、 それ以外の場合にはステップ(c)へ続行するステップと、 (c)新規トークンを示す識別データを送信し、前記圧縮データ・ストリーム 内の対応する発信データセグメントとして該新規トークンの表現を送信するステ ップと、 (d)前記1次メモリの先頭に前記新規トークンを挿入するステップと、 (e)ステップ(b)に戻るステップと、 (f)前記1次メモリ内の前記各トークンの該1次メモリ・アドレスを判別す るステップと、 (g)前記1次メモリ・アドレスが2次メモリ内に存在するか否かを判別し、 存在する場合にはステップ(l)を呼び出し、それ以外の場合にはステップ(h )へ続行するステップと、 (h)前記圧縮データ・ストリーム内の発信セグメントとして前記1次メモリ ・アドレスに対応するデータ・ブロックを送信するステップと、 (i)前記2次メモリの先頭に前記1次メモリ・アドレスを挿入するステップ と、 (j)前記1次メモリの先頭に前記各トークンを移動するステップと、 (k)ステップ(b)に戻るステップと、 (l)前記1次メモリ・アドレスの前記2次メモリ記憶位置を判別するステッ プと、 (m)前記1次メモリの先頭に前記各トークンを移動するステップと、 (n)前記2次メモリ記憶位置が3次メモリに存在するか否かを判別し、存在 する場合にはステップ(s)を呼び出し、それ以外の場合にはステップ(o)へ 続行するステップと、 (o)前記圧縮データ・ストリーム内の発信セグメントとして前記2次メモリ 記憶位置に対応するデータ・ブロックを送信するステップと、 (p)前記3次メモリの先頭に前記2次メモリ記憶位置を挿入するステップと 、 (q)前記2次メモリの先頭に前記2次メモリ記憶位置を移動するステップと 、 (r)ステップ(b)に戻るステップと、 (s)前記2次メモリ記憶位置の前記3次メモリ位置を判別するステップと、 (t)前記圧縮データ・ストリーム内の発信セグメントとして前記3次メモリ 位置に対応するデータ・ブロックを送信するステップと、 (u)前記3次メモリの先頭に前記3次メモリ位置を移動するステップと、 (v)前記2次メモリの先頭に前記2次メモリ記憶位置を移動するステップと 、 (w)ステップ(b)に戻るステップと を含む圧縮方法。 12.請求項11に記載の圧縮方法に於いて、前記1次メモリの先頭に前記新規 トークンを挿入する前記ステップ(d)は該1次メモリを表わす木を拡張するス テップを含む圧縮方法。 13.請求項11に記載の圧縮方法に於いて、前記2次メモリの先頭に前記1次 メモリ・アドレスを挿入する前記ステップ(i)は該2次メモリを表わす木を拡 張するステップを含む圧縮方法。 14.請求項11に記載の圧縮方法に於いて、前記3次メモリの先頭に前記2次 メモリ記憶位置を挿入する前記ステップ(p)は前記3次メモリを表わす木を拡 張するステップを含む圧縮方法。 15.請求項11に記載の圧縮方法に於いて、前記1次メモリの先頭に前記各ト ークンを移動する前記ステップ(j)は該1次メモリを表わす木を拡張するステ ップを含む圧縮方法。 16.請求項11に記載の圧縮方法に於いて、前記1次メモリの先頭に前記各ト ークンを移動する前記ステップ(m)は該1次メモリを表わす木を拡張するステ ップを含む圧縮方法。 17.請求項11に記載の圧縮方法に於いて、前記3次メモリの先頭に前記3次 メモリ位置を移動する前記ステップ(u)は該3次メモリを表わす木を拡張する ステップを含む圧縮方法。 18.請求項11に記載の圧縮方法に於いて、前記2次メモリの先頭に前記2次 メモリ記憶位置を移動する前記ステップ(v)は該2次メモリを表わす木を拡張 するステップを含む圧縮方法。 19.請求項11に記載の圧縮方法に於いて、前記2次メモリの先頭に前記2次 メモリ記憶位置を移動する前記ステップ(q)は該2次メモリを表わす木を拡張 するステップを含む圧縮方法。 20.請求項11に記載の圧縮方法に於いて、前記トークンのストリームからの 各トークンが1次メモリに記憶されているか否かを逐次判別する前記ステップ( b)は該トークンをハッシュするステップを含む圧縮方法。 21.請求項11に記載の圧縮方法に於いて、前記1次メモリ・アドレスの前記 2次メモリ記憶位置を判別する前記ステップ(g)は該1次メモリ・アドレスを ハッシュするステップを含む圧縮方法。 22.請求項11に記載の圧縮方法に於いて、前記2次メモリ記憶位置の前記3 次メモリ位置を判別する前記ステップ(n)は該2次メモリ記憶位置をハッシュ するステップを含む圧縮方法。 23.1次メモリと2次メモリとを用いて圧縮データ・ストリームを出力データ ・ストリームに伸長する方法であって、先頭移動データ構造を用いて一連のトー クンに分割された着信データ・ストリームを圧縮することにより形成された前記 圧縮データ・ストリームは前記1次メモリ内の反復トークンのまたは前記反復ト ークンの前記1次メモリ内のアドレスの最も新しい出現の最新ランクを前記2次 メモリ内のエントリとして備え、前記圧縮データ・ストリームは各新規トークン を各反復トークンから区別するための区切りと、各トークンの長さを与えるトー クン標識を有し、反復トークンの場合には、該反復トークンの符号化表現として 前記メモリからの前記最新ランクが機能し、前記1次メモリは各アドレスにいず れかの反復トークンの最も新しい出現を記憶し、前記2次メモリは前記反復トー クンの前記最も新しい出現の前記1次メモリ内の前記アドレスをメモリ記憶位置 に記憶し、 (a)前記圧縮データ・ストリームを逐次解析して前記トークンの次に着信す るトークンが新規トークンかまたは反復トークンかを判別し、前記次のトークン が新規トークンの場合にはステップ(e)に進み、それ以外の場合にはステップ (b)へ続行するステップと、 (b)前記圧縮データ・ストリーム内の前記最新ランクが前記1次メモリに存 在することを前記トークン標識が示している場合にはステップ(c)へ続行し、 それ以外の場合にはステップ(d)に進むステップと、 (c)前記圧縮データ・ストリームに含まれる前記最新ランク情報に基づいて 前記1次メモリ内の前記反復トークンの前記記憶アドレスを判別し、該反復トー クンを前記出力データ・ストリームに引き渡して、ステップ(f)に進むステッ プと、 (d)前記圧縮データ・ストリーム内に含まれる前記最新ランク情報に基づい て前記2次メモリ内の前記反復トークンの前記記憶位置を判別し、前記反復トー クンの前記2次メモリ記憶位置に基づいて前記1次メモリ内の前記反復トークン の前記記憶アドレスを判別し、前記反復トークンを前記出力データ・ストリーム に引き渡して、ステップ(f)へ進むステップと、 (e)前記トークン長の標識から前記新規トークンの長さを判別し、該新規ト ークンの長さに基づいて前記圧縮データ・ストリームからのデータを前記出力デ ータ・ストリームへ提供するステップと、 (f)前記先頭移動データ構造を用いて前記メモリを更新し、ステップ(a) に戻るステップと を含む伸長方法。 24.入力トークンを圧縮する回路であって、 トークンの1次リストと2次リストを記憶するメモリと、 前記メモリに接続され、前記入力トークンが前記1次リストに現れないたびに 前記入力トークンの符号化表現を伝播する手段と、 前記メモリに接続され、前記入力トークンが前記1次リストには現れるが該入 力トークンの該1次リストでの位置が前記2次リストには現れないたびに前記1 次リストでの該入力トークンの前記位置の符号化表現を伝播する手段と、 前記メモリに接続され、前記入力トークンが前記1次リストに現れており該入 力トークンの該1次リストでの位置が前記2次リストに現れる場合に該入力トー クンに対応する前記2次リストでの位置の符号化表現を伝播する手段と を含む圧縮回路。 25.入力トークンを圧縮する回路であって、 トークンの1次リストと、2次リストと、3次リストを記憶するメモリと、 前記メモリに接続され、前記入力トークンが前記1次リストに現れないたびに 該入力トークンの符号化表現を伝播する手段と、 前記メモリに接続され、前記入力トークンが前記1次リストには現れるが該入 力トークンの該1次リストでの位置が前記2次リストに現れないたびに前記入力 トークンの前記位置の符号化表現を伝播する手段と、 前記メモリに接続され、前記入力トークンが前記1次リストに現れており、該 入力トークンの該1次リストでの位置が前記2次リストに現れ、かつ前記2次リ ストの位置が前記3次リストに現れないたびに前記入力トークンに対応する前記 2次リストでの位置の符号化表現を伝播する手段と、 前記メモリに接続され、前記入力トークンが前記1次リストに現れており、該 入力トークンの該1次リストでの位置が前記2次リストに現れ、かつ前記2次リ ストの位置が前記3次リストに現れるたびに前記入力トークンに対応する前記3 次リストの位置の符号化表現を伝播する手段と を含む圧縮回路。
JP7515623A 1993-12-02 1994-11-14 データ圧縮 Expired - Lifetime JP2979106B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/161,102 1993-12-02
US08/161,102 US5384568A (en) 1993-12-02 1993-12-02 Data compression
US161102 1993-12-02
PCT/US1994/013001 WO1995015617A1 (en) 1993-12-02 1994-11-14 Data compression

Publications (2)

Publication Number Publication Date
JPH09505707A true JPH09505707A (ja) 1997-06-03
JP2979106B2 JP2979106B2 (ja) 1999-11-15

Family

ID=22579829

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7515623A Expired - Lifetime JP2979106B2 (ja) 1993-12-02 1994-11-14 データ圧縮

Country Status (5)

Country Link
US (1) US5384568A (ja)
EP (1) EP0732008A4 (ja)
JP (1) JP2979106B2 (ja)
CA (1) CA2176479C (ja)
WO (1) WO1995015617A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160684A (ja) * 1993-12-03 1995-06-23 Matsushita Electric Ind Co Ltd 文書圧縮装置および文書圧縮方法
US5525982A (en) * 1994-04-15 1996-06-11 International Business Machines Corporation Method and means for character string pattern matching for compression and the like using minimal cycles per character
US5635931A (en) * 1994-06-02 1997-06-03 International Business Machines Corporation System and method for compressing data information
US5778371A (en) * 1994-09-13 1998-07-07 Kabushiki Kaisha Toshiba Code string processing system and method using intervals
US5768564A (en) * 1994-10-07 1998-06-16 Tandem Computers Incorporated Method and apparatus for translating source code from one high-level computer language to another
US5625817A (en) * 1995-02-28 1997-04-29 Bmc Software, Inc. Method of identifying DB2 objects to be recovered from an unavailable DASD volume without need to access the DASD volume itself and without need for pre-failure preparation
JP3258552B2 (ja) * 1996-02-08 2002-02-18 富士通株式会社 データ圧縮装置及びデータ復元装置
US5794235A (en) * 1996-04-12 1998-08-11 International Business Machines Corporation System and method for dynamic retrieval of relevant information by monitoring active data streams
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US5909440A (en) * 1996-12-16 1999-06-01 Juniper Networks High speed variable length best match look-up in a switching device
US6127950A (en) * 1998-02-16 2000-10-03 Matsushita Electric Industrial Co., Ltd. Transmission circuit and reception circuit
US6605053B1 (en) 1999-09-10 2003-08-12 Percardia, Inc. Conduit designs and related methods for optimal flow control
CN1435030A (zh) * 1999-12-10 2003-08-06 睦塞德技术公司 最长匹配地址查询的方法和装置
US7490166B2 (en) * 2000-05-26 2009-02-10 Citrix Systems, Inc. Remote control of a client's off-screen surface
US6880064B1 (en) * 2000-06-21 2005-04-12 Mosaid Technologies, Inc. Method and apparatus for physical width expansion of a longest prefix match lookup table
US6961011B2 (en) * 2001-08-27 2005-11-01 Freescale Semiconductor, Inc. Data compression system
US8671213B2 (en) 2002-03-14 2014-03-11 Citrix Systems, Inc. Methods and apparatus for generating graphical and media displays at a client
US7376695B2 (en) 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
US8423673B2 (en) 2005-03-14 2013-04-16 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment using compression
US8171169B2 (en) * 2005-03-14 2012-05-01 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment
US8694684B2 (en) 2006-08-21 2014-04-08 Citrix Systems, Inc. Systems and methods of symmetric transport control protocol compression
US8335889B2 (en) * 2008-09-11 2012-12-18 Nec Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
US11227520B1 (en) * 2020-08-20 2022-01-18 Microsoft Technology Licensing, Llc Derivative-based encoding for scanning mirror timing

Family Cites Families (10)

* 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
US4612532A (en) * 1984-06-19 1986-09-16 Telebyte Corportion Data compression apparatus and method
US4796003A (en) * 1984-06-28 1989-01-03 American Telephone And Telegraph Company Data compaction
US4906991A (en) * 1988-04-29 1990-03-06 Xerox Corporation Textual substitution data compression with finite length search windows
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US5003307A (en) * 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
US5126739A (en) * 1989-01-13 1992-06-30 Stac Electronics Data compression apparatus and method
US5010345A (en) * 1989-12-28 1991-04-23 International Business Machines Corporation Data compression method
US5023610A (en) * 1990-06-13 1991-06-11 Cordell Manufacturing, Inc. Data compression method using textual substitution
US5239298A (en) * 1992-04-17 1993-08-24 Bell Communications Research, Inc. Data compression

Also Published As

Publication number Publication date
CA2176479A1 (en) 1995-06-08
EP0732008A1 (en) 1996-09-18
JP2979106B2 (ja) 1999-11-15
CA2176479C (en) 1999-11-16
EP0732008A4 (en) 2000-10-04
US5384568A (en) 1995-01-24
WO1995015617A1 (en) 1995-06-08

Similar Documents

Publication Publication Date Title
JPH09505707A (ja) データ圧縮
US5951623A (en) Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US5239298A (en) Data compression
CA1330838C (en) Method and apparatus for encoding, decoding and transmitting data in compressed form
Bell Better OPM/L text compression
US4814746A (en) Data compression method
JP3273119B2 (ja) データ圧縮・伸長装置
CN101800556B (zh) 数据传输及编码数据字符串的方法
US5229768A (en) Adaptive data compression system
WO1998006028A9 (en) A lempel-ziv data compression technique utilizing a dicionary pre-filled with fequent letter combinations, words and/or phrases
US6563439B1 (en) Method of performing Huffman decoding
KR20130062889A (ko) 데이터 압축 방법 및 시스템
JPH04502377A (ja) データ圧縮
US5585793A (en) Order preserving data translation
JP2531508B2 (ja) デ―タ列圧縮の方法
EP0127815B1 (en) Data compression method
Zia et al. Two-level dictionary-based text compression scheme
Sadakane Text compression using recency rank with context and relation to context sorting, block sorting and PPM/sup*
Choi Comparison of Methods for Text Compression
Mukherjee et al. Text compression
Proch et al. Natural language compression per blocks
JPH07334344A (ja) データ符号化装置