首页 / 专利库 / 软件 / 无损压缩 / Compression method using compact dictionary to be applied to network packet

Compression method using compact dictionary to be applied to network packet

阅读:376发布:2021-09-23

专利汇可以提供Compression method using compact dictionary to be applied to network packet专利检索,专利查询,专利分析的服务。并且PURPOSE: To improve the data compressibility of a compression/decompression mechanism by reducing the number of bits to be used for expressing a coded character string concerning a lossless compressing and decompressing method for storing compressed data while using a dictionary. CONSTITUTION: A code NAC usable for a block 50 is set at a value C+2, and a null string is set as a current phrase W in a block 52. Next, the next input character is inputted as (a) in a block 54 and whether a string Wa is already registered in the dictionary or not is referred to in a block 56. When the Wa is not found in the dictionary, whether the W is a null string or not is referred to in a block 60 and when it is not the null string, compression is progressed through blocks 62, 66 and 68. When the W is the null string, the input character (a) is regarded as a new character and through a subprocess 64, the character (a) of (m) bits is divided into a1 of (k) bits and a2 of (m-k) bits.,下面是Compression method using compact dictionary to be applied to network packet专利的具体信息内容。

【特許請求の範囲】
  • 【請求項1】辞書ベースの圧縮/圧縮解除装置において入力データを符号化する方法であって、この方法が、 入力データからの一意の多数キャラクタストリングを辞書項目として前記圧縮/圧縮解除装置中に記憶させ、 前記入力データからの多数キャラクタストリングを、そのキャラクタストリングと一致する辞書項目のアドレスに従ってコードワードへと符号化し、 圧縮/圧縮解除辞書中に以前に記憶されていない、前記入力データからの単一キャラクタストリングを識別し、 各々の単一キャラクタストリングを特殊コードと部分コードとに符号化し、その各々の特殊コードと部分コードとがその関連する単一キャラクタストリングの選択可能な部分を表しており、 符号化された単一キャラクタストリングに対応するコードワードと、符号化された多数キャラクタストリングに対応するコードワードとの双方を有する圧縮データストリームを前記圧縮/圧縮解除装置から出力し、各々の特殊コードおよびその関連する部分コードが、単一キャラクタストリングを一意に識別し、および前記入力データ中に存在し得る一意の単一キャラクタストリングの総数のサブセットを表している、というステップを含むことを特徴とする、前記符号化方法。
  • 说明书全文

    【発明の詳細な説明】

    【0001】

    【産業上の利用分野】本発明は一般に、ディジタルデータの圧縮および圧縮解除に関し、特に、辞書を使用して圧縮データを記憶する無損失圧縮および圧縮解除方法と装置の実施、およびネットワークパケット通信への圧縮/圧縮解除技術の適用に関する。

    【0002】

    【従来の技術】多くの種類の圧縮機構は、2進シーケンス、即ち「コードワード」を使用して多数キャラクタのストリング(以下、多数キャラクタストリングと称す)
    を符号化する。 このコードワードは、それ以外の場合には、個々のキャラクタの符号化に使用されることはない。 ストリングは、1つの「アルファベット」、即ち単一キャラクタのストリング(以下、単一キャラクタストリングと称す)から構成されている。 このアルファベットは、圧縮装置が処理を行う最小の一意の情報片を表現するものである。 従って、キャラクタの表現に8ビットを用いるアルゴリズムは、そのアルファベット中に256
    の一意のキャラクタを有することになる。 圧縮は、符号化機構において表現された多数キャラクタストリングがデータストリームの所与のファイル中で発生する場合に有効なものである。 人の言語間の翻訳に使用される二カ国語の辞書との類比により、未圧縮コードと既圧縮コードとの間のマッピングを行う装置は、一般に「辞書」と呼ばれている。

    【0003】一般に、辞書ベースの圧縮機構の有用性は、多数キャラクタストリングに関する辞書項目が使用される頻度によって決まる。 或る一定の辞書が1つのファイル形式について最適化された場合にその辞書が別の形式のファイルについても最適化されるという可能性はまずない。 例えば、新聞のテキストファイルに見られるような多数のキャラクタ組み合わせを含む辞書は、データベースファイル、スプレッドシートファイル、ビットマップグラフィックファイル、コンピュータ支援設計ファイル等を効率よく圧縮する可能性のまずないものである。

    【0004】所与の入データを圧縮するために使用される辞書がその入力データの圧縮中に生成される適応型圧縮機構は既知のものである。 未圧縮の入力データ中に含まれ得るあらゆる単一キャラクタを表すコードワードが辞書に入力される。 ファイル中で多数キャラクタストリングに遭遇した際に、別の項目が辞書に追加される。
    その別の辞書項目は、それ以降に発生する多数キャラクタストリングの符号化に利用される。 例えば、現在の(以下、カレントと称す)入力パターンの突き合わせは、辞書中に現在存在するフレーズに対してのみ試行される。 突き合わせが失敗する毎に、新たなフレーズが辞書に追加される。 この新たなフレーズは、突き合わせが行われたフレーズを1つの記号(例えば、その突き合わせを「中断させる」入力記号)で拡張することにより形成される。 辞書が発達するにつれて、ファイル中で最も頻繁に発生する多数キャラクタストリングに遭遇する程度まで、圧縮が行われる。

    【0005】圧縮解除時には、辞書が同様にして構成される。 従って、既圧縮ファイル中で或るキャラクタストリングについてのコードワードに遭遇した場合、辞書は、対応するキャラクタストリングを再構成するために必要な情報を含んでいる。 辞書を使用して圧縮および圧縮解除情報を記憶する、広範に利用されている圧縮アルゴリズムとして、LZ1と呼ばれているLempelの第1の方法、および、LZ2と呼ばれているZivの第2の方法が挙げられる。 Lempel-Ziv(LZ)アルゴリズムは、
    「On the Complexity of Finite Sequence」(IEEE Tran
    sactions on Information Theory, IT-22:75-81, Jan.
    1976)、および「A Universal Algorithm forSequential
    Data Compression」(IEEE Transactions on Informati
    on Theory,IT-23:337-343, May 1977)、および「Compre
    ssion of Individual Sequences via Variable Rate Co
    ding」(IEEE Transactions on Information Theory, IT
    -24:530-536)において、Lempel、Ziv両氏により最初に発表されたものである。 辞書の使用については、Eastma
    n等の米国特許第4,464,650号明細書にも開示されており、更に、そのアルゴリズムの様々な改良策が、Welch
    の米国特許第4,558,302号明細書、およびMiller等の米国特許第4,814,746号明細書に開示されている。

    【0006】実際の装置での実施時には、圧縮/圧縮解除に利用可能な記憶装置の量は有限のものである。 従って、辞書中の項目の数は有限であり、項目の符号化に用いるコードワードの長さが制限される。 一般に、コードワードの長さは12〜16ビットの範囲にある。 入力データシーケンスが充分に長い場合、辞書は最終的に「一杯」
    の状態になる。 この時点では幾つかの動作が可能である。 例えば、その現状のまま辞書を凍結させて残りの入力シーケンスに利用することができる。 第2のアプローチでは、辞書をリセットして、スクラッチにより新たな辞書が作成される。 第3のアプローチでは、圧縮率が低下するまで辞書が一定期間だけ凍結され、次いで辞書がリセットされる。 辞書をリセットする別の戦略については、1992年6月1日出願の米国特許出願第07/892,546号「Lempel-Ziv Compression Scheme with Enhanced Adap
    tion」(本引用をもってその開示内容を本明細書に包含させたものとし、その詳細な説明は省略する)、および
    Bunton,S.等の「Practical Dictionary Management for
    Hardware Data Compression」(Communications of the
    ACM, 35:95-104, Jan. 1992)に記載されている。

    【0007】LZWプロセスの場合、辞書は、圧縮辞書の構成に使用される単一キャラクタストリングについて初期設定されなければならない。 それらのキャラクタには、圧縮/圧縮解除装置中の一意のコードが割当てられる。 これは、エンコーダから送出される任意の別の出力コード(例えば、多数キャラクタストリングを表すコード)中のビット数が単一キャラクタストリングの数により制御されることを示唆している。 例えば、多数キャラクタストリングについての最短ビット長は、単一キャラクタストリングの数によって決定される。 多数キャラクタを表す後続コード中のビット数は、辞書中の項目の数が2の次のべき乗に達する毎に1ビットだけ長さが増す。 より多くのビットを使用して単一キャラクタのコードワードを表すと、それに比例して圧縮性能全体が低下する。

    【0008】上述のような単一入力キャラクタの初期設定は、入力データが大きなアルファベットサイズを有する場合、または、入力データ中に未知のアルファベットのサブセットしか発生しないことが予期される場合には、不十分なものとなる。 例えば、入力データのための「未加工の」アルファベットが16ビットの記号から構成されている場合は、初期の辞書サイズは、65,536の項目を有することになる。 従って、「未加工の」アルファベットからのキャラクタに加えて生成されるあらゆる出力コード(例えば多数キャラクタストリングを表すコード)の最小長は、少なくとも17ビットとなる。 また、入力データのブロック(即ち、圧縮されるべきデータ)
    が、アルファベットサイズに比較して小さい場合には、
    入力データからの単一キャラクタストリングの初期設定、記憶および符号化のそれぞれに起因して、時間、記憶空間および圧縮率が不必要に増大することになる。

    【0009】このような問題を克服するために、LZアルゴリズムの幾つかの変形例では、空の初期辞書を採用している。 新たな入力キャラクタに遭遇すると、圧縮装置が特殊コードを出力し、次いで新キャラクタのコピーを出力する。 これにより、実際に使用されている入力アルファベットのサブセットを圧縮解除装置が追跡することが可能となり、符号化を通常通りに進めることが可能になる。 この戦略の主な問題は、新キャラクタを符号化するコストが高いことである。 大きいアルファベットにわたりファイルが短い場合には、この追加コストは許容できない程高くなり得る。 例えば、8ビットの記号および12ビットの出力コードを使用する場合には、新キャラクタが発生したことをデコーダに知らせるために20ビットが必要となる。 更に、LZアルゴリズムにより出力される符号化キャラクタストリングに冗長性が存在する場合が多い。 例えば、同一の入力キャラクタからなるストリング(即ち「ラン」)は、予測可能で冗長な構造を有する一連の符号化ストリングを生成する。 この冗長性は、現時点では、標準的な圧縮アルゴリズムの圧縮率を更に高める効力を発揮するものではない。

    【0010】従って、データ圧縮率を高め、辞書ベースの圧縮/圧縮解除装置に必要な記憶装置の量を削減するために、異なる形式の入力データおよび異なるデータ構造に適応可能な、データ圧縮の初期設定プロセスが依然として必要とされている。

    【0011】

    【発明が解決しようとする課題】従って、本発明の目的は、辞書ベースの装置におけるディジタルデータの圧縮および圧縮解除を改良することにある。

    【0012】本発明の別の目的は、符号化キャラクタストリングの表現に使用されるビット数を削減することにより、圧縮/圧縮解除機構のデータ圧縮率を高めることにある。

    【0013】本発明の別の目的は、辞書ベースの圧縮/
    圧縮解除装置における辞書の初期設定での付加コストを削減することにある。

    【0014】本発明の更に別の目的は、小さいファイル中で発生したディジタルデータ、または、大きい単一キャラクタのアルファベットのサブセットにより表されるディジタルデータを、一層効率よく圧縮することにある。

    【0015】本発明の更に別の目的は、入力データのキャラクタのランを表す符号化キャラクタストリングを再圧縮して、圧縮/圧縮解除装置の圧縮率を更に高めることにある。

    【0016】

    【課題を解決するための手段】本発明は、入力データの形式および構造の変化に適応可能な辞書ベースの初期設定機構である。 この初期設定機構は、辞書ベースの圧縮/圧縮解除装置で使用されるデータ項目の数を最小限にして単一キャラクタデータストリングを表現することにより、圧縮率を高めるものである。 データ項目数を削減することにより、圧縮データストリング中のコードワードのビット長が短縮される。 圧縮データストリング中のコードワードのビット長が短縮されることにより、圧縮率全体が高まる。

    【0017】本発明は、可変数の特殊コードを使用する。 特殊コードの総数は、一般的には入力データアレイ中の単一キャラクタを表すのに使用されるキャラクタコードの総数未満になるよう選択される。 各特殊コードは、新キャラクタに関する情報の一部を保持している。
    次いで、新キャラクタを更に識別する付加的なビットが、別個の部分キャラクタ中に伝送される。 このプロセスにより、新たな記号を伝送する「コスト」(即ち、帯域幅と記憶空間)が削減される。 このプロセスは、非初期設定プロセス(例えば、空の初期辞書)から、アルファベット中の各々の一意のキャラクタが辞書中の項目に割り当てられる完全アルファベット初期設定まで、どのような場合にも適応可能である。

    【0018】特殊コードの数は、現在実行中の用途に適応可能なものである。 従って、この特殊コードの数は、
    圧縮率を最大限にするように特定形式のデータに応じて予め定められる。 この方法により、辞書がアルファベットサイズよりも少ない項目を有することが可能となる。
    従って、極めて小さな記憶装置しか必要としない小さい辞書で圧縮が可能となる。 これは、入力データブロックが短く、各ブロックを個々に圧縮する必要がある用途で特に有用である。 この初期設定機構はまた、辞書サイズを中庸に留めつつ、大きなアルファベットサイズ(例えば、16ビットの記号)を有するデータソースの圧縮を行うことを可能にするものである。

    【0019】本発明の更に別の態様では、LZ方式(L
    ZE)で一種のランレングス符号化が実施される。 従来のLZ2データ圧縮では、ラン(即ち、入力データ中に同じキャラクタが繰り返し発生したものからなるストリング)は、一連のコードとして符号化される。 各々の連続するコードは、先行するコード上に構成され、その後に、そのランの残り即ち末尾についてのコードが続く。
    次いで、圧縮解除装置が、それらの各コードを順次受信して復号する。 この装置は、単一コード(キャラクタのランの大部分を表すもの)と、先行コードおよび末尾コードとを伝送することにより、短縮化シーケンスを送る。

    【0020】前述のLZE方法が、単独で使用され、または、他の方法と組み合わせて使用されて、ネットワークパケットの伝送に特に有用な圧縮機構が形成される。
    組み合わせ装置では、LZE圧縮機構は、1つ以上の他のデータ圧縮方法と並行して入力データストリームに適用される。 前記の「他のデータ圧縮方法」としては、ハフマン可変長符号化機構、または非圧縮伝送機構等が挙げられる。 次いで、最良の圧縮率をもたらす方法による出力が使用されて、データ伝送および記憶が行われる。
    広範囲に分布する長さを有するパケットを含む実際のネットワークパケットデータについて高圧縮率が達成される。 この高圧縮率は、短いパケットの割合が大きなデータであっても、パケット長の全範囲に亘って一貫して維持される。

    【0021】本発明の上述その他の目的、特徴および利点は、添付図面に関連して進める本発明の好適実施例についての以下の詳細な説明により一層容易に明確となろう。

    【0022】

    【実施例】Lempel-Ziv圧縮/圧縮解除装置の基本構成および動作は公知のものであり、このため、図1および図2を参照して一般的な用語で説明するに留める。 図1の装置22は、ディジタルデータ通信(または記憶)チャネル28によって相互接続された圧縮副装置24と圧縮解除副装置26とを備えている。 実際には、この装置の双方の端末機は、圧縮副装置および圧縮解除副装置を備えており、そのハードウェアは一般には、データの圧縮/送信、または、データの受信/圧縮解除を行うよう互換的に動作することができるように設計される。

    【0023】それぞれの副装置は、従来の通信(または記憶)回路(図示せず)に加えて、基本的なLempel-Ziv
    圧縮アルゴリズムを実施する圧縮エンジン30と、キャラクタストリングデータを符号化するデータ項目が記憶されている1つ以上の辞書を実施する記憶装置32と、後述の強化を行う支援回路とを備えている。 その支援回路は、図7および図9で更に詳細に説明する中間初期設定エンコーダ34および相手側部品となるデコーダ36と、図12および図15に示すエンコーダラン強化エンジン38
    および相手側部品となるデコーダラン強化エンジン40とを備えている。

    【0024】図2は、ディジタルデータの無損失圧縮(即ち、元のデータがその圧縮画像から完全に回復されるもの)のためのLempel-Ziv(LZ)アルゴリズムを示すものである。 LZ法は、入力データストリーム中のカレントパターンを以前に発生したパターンと突き合わせる。 例えば、入力ストリーム46中のカレントパターン42
    (ABC)は、以前に伝送されたパターン44(ABC)
    と同じである。 圧縮副装置24(図1参照)は、その突き合わせが行われた入力記号(ABC)を最大に一致する記述(即ち、コードワード)で置き換える。 次いで、圧縮解除副装置26(図1参照)が、一致するコードワードから、および、以前に圧縮解除されたデータセグメントから、元の記号を再構成する。 冗長データソースでは、
    多数のキャラクタの一致を記述する記述、即ちコードワードは、突き合わせが行われたパターンより短くなる傾向があり、これにより、データ圧縮が達成される。

    【0025】LZ2の主な特徴は、インクリメンタル構文解析にある。 入力データシーケンスは、複数フレーズへと構文解析され、それらのフレーズが辞書に収集される。 カレント入力パターンの最大突き合わせは、上述のように辞書中のフレーズに対してのみ試行される。 各々の突き合わせの後、突き合わせを「中断させる」入力記号を有する突き合わせが行われたフレーズを拡張することにより、新フレーズが形成される。 上記アルゴリズムおよびそのアルゴリズムの変形例は、漸近的に最適な(即ち、理論上可能な最良の圧縮率を限界内で達成する)ものである。 このアルゴリズムはまた、高度の適応性を有するものであり、入力データの統計的特性を「オンザフライ」で学習することができる。 LZ2では、その「知識」が辞書中に記憶され、その辞書の各項目により、入力データシーケンスの構文解析が行われる。

    【0026】LZ2の圧縮装置の実施態様は概略的に以下のように説明することができる。

    【0027】1. 入力アルファベット中に存在する全ての単一文字ワード(例えば256の1バイトストリング)
    で辞書が初期設定され、次いで、各々の単一キャラクタワードに別個の索引コードワードが割り当てられる。

    【0028】2. 入力データストリームからの最初のキャラクタでカレントフレーズが初期設定される。

    【0029】3. 入力データストリームからのキャラクタが継続的に読み出され、一致するフレーズが辞書中に存在する限り、カレントフレーズが拡張される。 4. カレントフレーズがWaという形式のもの(「a」
    は入力データストリームから読み出された最後のキャラクタ、Wは辞書中のフレーズ)であり、同時に、そのW
    aがフレーズ辞書中の項目と一致しない場合に、プロセスが停止される。

    【0030】5. Wについてのコードワードが出力される。

    【0031】6. Waが辞書に追加され、次に利用可能なコードワードが割り当てられる。

    【0032】7. カレントフレーズが「a」にセットされて、プロセスがステップ3に戻る。

    【0033】この実施態様はLZWとして公知のものである。

    【0034】図1の圧縮解除副装置26では、同様のフレーズ辞書が構成される。 この圧縮解除装置は、上記のステップ1の場合と同様に最初に初期設定され、次いでデータの圧縮解除中に新フレーズが辞書に追加される。 この圧縮解除装置は、キャラクタ「a」で始まるフレーズのコードが後に続いているフレーズWのコードを受信した場合に、フレーズWaを辞書に追加し、そのフレーズに次に利用可能なコードを割り当てる。 このように、この圧縮解除装置は、圧縮装置により構成された辞書を再構成することができ、従って、圧縮装置が圧縮データと共に辞書を送る必要はない。

    【0035】実際の実施例では、エンコーダ用に(および同様にデコーダ用に)利用可能な記憶装置の量は限られたものである。 従って、辞書中のフレーズ数も限られたものとなり、出力コードも限られた長さのものとなる。 一般的には、コード長の上限は、12ビットおよび16
    ビットの間となる。 入力データシーケンスが充分に長い場合には、辞書は最終的には「一杯」になる。 その時点で、LZW辞書は、「凍結」されるか、または「再初期設定」される。

    【0036】上記で概略を示したLZW圧縮手順のステップ1は、全ての単一キャラクタストリングを用いた辞書の初期設定を必要とする。 mが入力データストリングからの単一キャラクタのサイズをビットで表すものと仮定する(例えば、最も一般的な場合には、m=8、即ち1バイト)。 辞書中の初期フレーズには、コードCo,C
    o+1,Co+2,…,Co+(2 m −1)(Coは負でない初期数)が割り当てられる。 これは、エンコーダにより送出された最初のコード(即ち、多数キャラクタストリングを表す最初のコード)が少なくともm+1ビット長を有していなければならないことを示唆している。 実践的な実施態様では、圧縮プロセスの開始時に長さm+1の出力コードを使用し、その後に辞書中の項目数が次の2
    のべき乗に達する毎に出力コードの長さを1ビットだけ増大させるのが普通である。 このため、出力コードの長さはm+1とbとの間で変動する(ここで、2 bは辞書の最大サイズ、b≧m+1)。 簡略化のため、辞書の最大サイズが2のべき乗であるものと仮定する。 これは不可欠な要件ではないが、最も実践的な実施態様を示すものである。 明らかに、出力コードの長さは圧縮率に直接影響を及ぼす。 即ち、出力コードが短いほど圧縮率は良好となる。

    【0037】上記ステップ1の初期設定は、多くの用途で良好に機能するものであるが、アルファベットサイズが大きい場合には不十分なものとなる。 また、この初期設定プロセスは、入力アルファベットの未知のサブセットが、圧縮すべきデータ中に発生するものと予期される場合にも、不十分なものとなる。 例えば、入力データの「未加工の」アルファベットが16ビット記号から構成される用途では、初期の辞書サイズは65,536項目を有し、
    出力コードの最小長さは17ビットとなる。 また、圧縮すべきデータブロックがアルファベットサイズと比較して小さい用途では、潜在する単一キャラクタストリングの各々を符号化する必要がない場合が多い。

    【0038】これら問題点を解決するために、LZアルゴリズムのいくつかの変形例では、空の初期辞書を採用している。 新しい入力キャラクタに遭遇すると、圧縮装置は、その新キャラクタのコピーが後に続く特殊コードを出力する。 この方法の場合、圧縮解除装置が、実際に使用される入力アルファベットのサブセットを追跡し、
    復号が通常どおりに進行する。 このプロセスの主な問題は、新キャラクタの符号化のコストが高いことである。
    大きいアルファベットにわたる短いファイルの場合、この付加的なコストは許容できないほど高くなる。 例えば、図3では、どの新キャラクタが発生したかを圧縮解除エンジン30(図1参照)に示すのにキャラクタコード
    46と特殊コード48との双方が必要である。 キャラクタの長さが8ビットであり、カレントコードの長さが12ビットであるものと仮定した場合、各々の新キャラクタを識別するために全部で20ビットを伝送しなければならないことになる。

    【0039】中間辞書初期設定 上述のビット長および記憶装置に関する問題を解消するために、2 kの異なる特殊コードCo,Co+1,Co+2,
    …,Co+(2 k −1)が使用される(ここで、0≦k≦
    m)。 これは、別の制御コードのために数0,1,…,Co
    −1が使用されることを仮定したものである。 このようにして、特殊コードは、新キャラクタについてkビットの情報を備え、新キャラクタを識別するためには正確にm−kの付加的なビットが必要である。 これを図4にk
    =5で示す。 特殊コード48についてのカレントコード長は12ビットであり、部分キャラクタコード49の長さは3
    ビットである(即ち、m−k=8−5=3)。 従って、
    新たな1つの単一キャラクタストリングを伝送するコストは、20ビットから15ビットに削減される。 k=0の場合、この方法は空の初期設定へと移行し、また、k=m
    の場合には、装置は完全アルファベット初期設定として動作する(即ち、アルファベット中の各キャラクタがコードワードにより表される)。

    【0040】ここで図5を参照する。 本発明による動作は、空の初期辞書で始まり、基本的に下記のように修正されたLZアルゴリズムに従って進行する。 この動作は、次に使用可能なコード(NAC)を値Co+2 kに設定することにより、ブロック50で開始される。 次ステップのブロック52では、ヌルストリングがカレントフレーズWとしてセットされる。 次いでブロック54で、次の入力キャラクタが「a」として入力される。 ブロック56のステップは、ストリングWaが既に辞書中に記憶されているか否かを照会する。 ストリングWaが既に辞書中に記憶されている場合には、ブロック58がWをWaに等しく設定してブロック54に戻る。 このプロセスは、辞書中で一致が発見される限り繰り返される。 これは、Lempel
    -Ziv方式では一般的なことである。

    【0041】また、Waが辞書中で発見されない場合には、ブロック60が、Wがヌルストリングであるか否かを照会する。 Wがヌルストリングでない場合には、圧縮が従来のLZWのようにブロック62,66,68を経て進行する。 ブロック62は、Wについてのコードを出力し、ブロック66は、符号化ストリングWaをデータ項目としてアドレス位置NACで辞書中に記憶させる。 ブロック68
    は、NACを1だけインクリメントし、「a」が次のW
    の値として働く。 次いで、プロセスはブロック54に戻る。

    【0042】判定ブロック60が、Wがヌルストリングであると判定した場合には、入力キャラクタ「a」が新キャラクタであるとみなされる。 次いで、圧縮装置は、プロセス「新キャラクタ」というブロック64に進む。 これはサブプロセスであり、図6を参照して後で詳述することとする。 このプロセス「新キャラクタ」から戻ると、
    ブロック65で入力キャラクタ「a」がアドレス位置NA
    Cで辞書中に入力される。 次いでブロック67でNACがインクリメントされて、プロセスがブロック52に戻る。

    【0043】ここで図6を参照する。 サブプロセス64
    (図5参照)において、ブロック70で示す第1ステップは、mビットから成るキャラクタaを2つの部分、即ち、kビットから成るa 1と、m−kビットから成るa 2
    とに分割するステップである。 次いでブロック72がC 1
    を値Co+a 1に設定する。 次いでブロック74がbビットを用いてC 1を出力し、ブロック76がm−kビットを用いてa 2を出力する。 ここで、bは、出力コードワードに現在使用しているビット数である。 次いでこのサブプロセスは、図5のブロック65に戻る。

    【0044】図7は、図6のサブプロセスをハードウェアで実施するための回路34(図1参照)を示すものである。 キャラクタaがmビットレジスタ80へと入力され、
    このレジスタ中に前記キャラクタが2つの部分、即ち、
    kビットから成るa 1およびm−kビットから成るa 2で記憶される。 値Coは、bビットレジスタ82中に記憶され、a 1と共に加算器84に出力されて、bビット合計C 1
    =C 0 +a 1が形成される。 この合計が、レジスタ86の最初のbビット中に配されて、そのレジスタ86の下位m−
    kビット中のa 2と連結される。 その結果として生じたb+m−kビットのシーケンスが出力バッファ88へとシフトされて、圧縮されたストリーム中に挿入される(圧縮解除装置へ伝送される)。

    【0045】図8は、圧縮解除プロセス90を示すものである。 このプロセスは、ブロック91で開始して、bビットの特殊コードC 1を読み出し、次いでブロック92でコードC 1がCo未満であるか否かを照会する。 コードC 1
    がCo未満である場合には、ブロック93がコードC 1をプロセス制御コードとして処理し、ブロック91に戻る。 また、コードC 1がCo未満でない場合には、このプロセスは先に進み、ブロック94でコードC 1がCo+2 k未満であるか否かを照会する。 コードC 1がCo+2 k未満でない場合には、ルーチンはブロック96に移行して、コードC 1を通常のLZコードとして処理し、次いでブッロク9
    1に戻る。 また、コードC 1がCo+2 k未満である場合には、コードC 1は新キャラクタについてのコードであると見なされて、ルーチンがブロック98に戻り、特殊コードC 1とその関連する部分キャラクタコードa 2とが新キャラクタとして処理される(一対のC 1 ,a 2は、図7
    の回路中の圧縮装置により出力されたものである)。

    【0046】図9は、図8のサブプロセス98をハードウェアで実施した回路36(図1参照)を示すものである。
    特殊コードC 1および部分キャラクタコードa 2が入力バッファ(図示せず)からレジスタ102,104へとそれぞれ受信される。 レジスタ100中の固定値Coの中容が、減算器106中で、レジスタ102の中容から減算される。 そのb
    ビットの結果がレジスタ108中に収容され、レジスタ108
    の最上位b−kビットが廃棄される。 レジスタ108中の最下位kビットが、レジスタ110のa 1フィールド中に記憶されて、レジスタ104からの部分キャラクタコードa 2
    と連結される。 レジスタ110の中容は、ブロック112で単一キャラクタストリングとして辞書中に入力され、また出力バッファ114中にロードされる。

    【0047】特殊コードの数(または等価的にはパラメータk)は、手近な用途に合わせて調整可能なものである。 実験結果によれば、広範囲の入力ファイルに対し、
    m/2に近いkの値で最良の圧縮が達成されることが示されている。 特に、m=8の場合はk=5、m=16の場合はk=7という値が最適であることが実験的に判明した。 多数キャラクタストリングについての初期コード長は、典型的なm+1ビットではなく、k+1ビットだけである点に留意されたい。 従って、この方法により、アルファベットサイズよりも小さい辞書が可能となり、また入力キャラクタよりも短いコードワードが可能となる。

    【0048】このため、極めて小さい辞書を用いて圧縮を行うことが可能となり、この場合には、極めて少ない記憶装置しか必要なくなる。 この方法は、入力データブロックが短く、各ブロックが別個に圧縮される必要がある用途では、特に魅力的なものとなる。 別の側面によれば、この方法により、辞書のサイズを中庸に保ちつつ、
    大きなアルファベットサイズ(例えば、16ビット記号)
    を有するデータソースの圧縮が可能となる。

    【0049】ここで、m=8、k=5、Co=3であり、伝送すべき新キャラクタが2進表現01101010を有するものと仮定する。 このキャラクタの最初のkビットは
    01101であり、数13を表している。 このため、伝送される特殊コードはCo+13=16である。 このコードは、カレントコード長を用いて伝送される。 更に、特殊コードが部分キャラクタコードa 2として伝送された後、m−
    k=3の残りのビット010が「そのまま」伝送される。
    カレントコード長が12ビットであると仮定すると、結果として生じる2進出力は、特殊コードについては[00000
    0010000]となり、キャラクタコードについては[010]となる。

    【0050】図10は、種々のキャラクタコードおよび特殊コードのビット長での圧縮結果を示すものである。
    全ての圧縮実験のための入力ファイルは、ASCIIデータファイル、2進法で実行できるCプログラムソース、およびテキストファイルを含むコンピュータファイルを収集したものを(UNIXのコマンドtarを用いて)連結することにより得たものである。 入力ファイルの全サイズは6,594,560バイトであった。 番号を付した列1〜5
    に示すように5つの圧縮方法を試験した。 列1は、m=
    8で完全アルファベット辞書初期設定法を用いた場合であり、従来のLZW実施例の結果である。 列2は、m=
    8、k=0で空辞書初期設定法を用いた場合の結果である。 列3は、m=8、k=5で中間辞書初期設定法を用いた場合の結果である。 列4は、m=16、k=0で空辞書初期設定法を用いた場合の結果である。 列5は、m=
    16、k=7で中間辞書初期設定法を用いた場合の結果である。

    【0051】各機構について、最も左の列に示すように最大出力コード長を6〜16ビットに変動させて幾つかの辞書サイズを試行した。 各機構での圧縮率(CR)は、
    次の関係式を用いて算定される。

    【0052】CR=(圧縮ファイルサイズ)/(元のファイルサイズ) 従って、CRの値が小さいほど圧縮率が良好であることが示される。 図10から分かるように、中間初期設定辞書を用いた機構は、辞書が極めて小さく(例えばb<
    m)、完全初期設定が不可能な場合であっても、大幅な圧縮がなされる。 これは、記憶装置が不十分となる用途で極めて有用である。 中間初期設定はまた、bがmよりも僅かに大きい場合に完全初期設定よりも性能が優れており、bの値が一層大きい場合には、それら2つの機構は互いに競合するものとなる。 k>0での中間初期設定は、ほとんど常に空初期設定よりも性能が優れたものとなる。

    【0053】16ビット入力記号を用いて、中庸サイズの辞書で良好な圧縮率を達成することが可能である。 16ビット機構の主な利点は、(各圧縮ステップで8ビットではなく16ビットを処理することにより)記憶装置の量をわずかに増やすだけで圧縮装置のスループットを2倍にすることができる点にある。 一般に、LZW辞書中の項目は、以前の項目へのポインタ(またはそれに対応するコード)とキャラクタとから成っている。 従って、16ビット機構は、一般に、それと同数の辞書項目を有する8
    ビット機構に比較して、1辞書項目につき更に別の1バイトを必要とすることになる。 更に、16ビットが未加工のキャラクタのサイズである場合(例えば或る種の医療用画像形成用途等)、そのキャラクタサイズが維持される際に最良の圧縮が達成される。

    【0054】上述の初期設定機構は、短いデータブロックが個々に(即ち、或るブロックとその次のブロックとで辞書情報を共用することなく)圧縮される用途で有利である。 このような用途の一例として、ローカルエリアネットワーク(LAN)におけるデータパケットの圧縮が挙げられる。 典型的なLANで現在使用されているネットワークプロトコルでは、パケット長は60バイトから
    2028バイト未満の範囲を有し、より短いパケットがトラフィック中で高い割合を示している。 上記値は近似的な数値である。 パケットの正確な長さは、パケットの「エンベロープ」をどの程度まで考慮に入れるかによって決まる。 それはまた、パケットが処理されるプロトコル層によって決まる。

    【0055】 ラン符号化の強化無損失データ圧縮の最も簡単な方法の1つに、ランレングス符号化(RLE)がある。 ランは、入力中に同じキャラクタが繰り返し発生するストリング(例えば、a 0 ,
    1 ,a 3 ,…,a n-1 )である。 ここで、nはストリング中の同じキャラクタ「a」の反復発生回数である。 ストリングa 0 ,a 1 ,a 3 ..a n-1は、同じキャラクタ「a」のn
    個のコピーを表すものである。 RLEでは、そのようなランは、ランレングスnが後に続くキャラクタを送ることにより符号化される。 nの値が大きい場合には、ランの圧縮率は0(log(n)/n)となる。 LZ2機構もまた、
    長いランを圧縮する優れた動作を行う。 nの値が大きいものと仮定すると、上記のランは、LZ2機構では、一連のコードA 0 ,A 1 ,A 1 +1,A 1 +2,A 1 +3,…,A 1
    (k−1),A 2として符号化される。 ここで、A 0は、
    辞書中のaの最長のストリングについてのコードである。 A 1は、カレントランが読み出される前に次に利用可能なコードである。 A 2は、後述するコードであり、
    kは、負でない整数である。

    【0056】A 0で表されるaのストリングの長さがL 0
    である場合、A 1 +(i−1)は、L 0 +iのaからなるストリングを表している(1≦i≦k)。 A 2は、L 1のaからなる残りの「尾部」を表しており(0≦L 1
    (L 0 +k))、その後に何らかの別のキャラクタが続く可能性がある(L 1 =0の場合、符号化されたランの一部としてコードA 2は必要ない)。 ランの長さは、n
    =L 0 +(L 0 +1)+(L 0 +2)+……+(L 0 +k)
    +L 1 =L 0 (k+1)+k(k+1)/2+L 1となる。
    従って、nの値が大きく、辞書が充分に大きい場合には、基本的なLZ2機構は、O(√(n)Log(n)
    /n)という圧縮率を達成する。 従って、双方の機構とも漸近的にゼロ圧縮率を達成するものの、入力が制限されているため、長いランの圧縮にはRLEの方が一層適している。

    【0057】長いランを符号化する場合のLZ2の効率は、以下の観察に基づいて改善することができる。 LZ
    2圧縮解除装置がシーケンスA 1 ,A 1 +1,A 1 +2,A 1
    +3,……,A 1 +(k−1)における各コードを読み出す場合、その読み出されたコードは、その特定の時点で、可能な最長のコードとなる(即ち、読み出されたコードは作成されたばかりのコードである)。 従って、エンコーダは、n個の「a」のランについてシーケンスA
    0 ,A 1 +(k−1),A 2さえ送ればよい。 デコーダがコードA 1 +(k−1)を受信すると、そのデコーダは、
    その値が現在の可能な最大コードA 1を超えていることを検知し、1つのランが符号化されていることを「学習」し、および、値kおよび「ミッシングシーケンス」
    1 ,A 1 +1,A 1 +2,…,A 1 +(k−2)を容易に再構成することができる。 この場合、伝送されたビット数はO(log(k))=O(log(n))であり、強化LZ2の圧縮率は、RLE機構の場合と同様に、O(log(n)/n)となる。

    【0058】図11はランを強化させていない従来のL
    Zエンコーダを示すブロック図である。 入力エンジン11
    6は、入力データストリーム(図示せず)からキャラクタを読み出し、その入力キャラクタを圧縮エンジン118
    (図1のブロック30を参照)に送る。 圧縮エンジン118
    は、入力キャラクタを得て辞書を構成して保持する。 例えば、辞書は、一意の入力キャラクタストリングを表すデータ項目を備える。 圧縮エンジン118は、入力データストリームを圧縮し、その圧縮入力データをコードワードとして出力エンジン120に出力する。 次いで出力エンジン120は、後に行う圧縮解除のために圧縮データストリングを記憶するか、または、圧縮データストリングを帯域幅を縮小して通信チャネル28(図1参照)を介して伝送する。 圧縮データは、図15で更に説明するように、通信チャネル28の反対側の端末でその圧縮解除が行われる。 圧縮エンジン118は、典型的には、次に利用可能なコード(NAC)を識別するアドレスポインタ122
    を保持する。 次の一意のキャラクタストリングがデータ項目として圧縮/圧縮解除辞書中に記憶される。 例えば、NACは、次の一意の入力キャラクタストリングについてのコードワードとして使用される次のアドレス位置を表すものである。

    【0059】図12は、図1に示す本発明によるエンコーダラン強化エンジンを詳細に示すブロックである。 入力エンジン124は、入力データストリームからキャラクタを読み出す。 圧縮エンジン126は、その入力キャラクタを読み出し、辞書を維持し、および、図11を参照して前述したようにキャラクタコードを生成する。 符号化された入力データは、次いでエンコーダラン強化エンジン128に送られ、これにより第2レベルのデータ圧縮が提供される。 ラン強化エンジン128からの圧縮コードは、出力エンジン130に送られ、図11の出力エンジン1
    20と同様にして処理される。

    【0060】ラン強化エンジン128は、別個のアドレスポインタ134(RUNCODE)を収容しており、そのポインタ134が、圧縮エンジン126により使用されるNA
    Cアドレスポインタ132と連携して使用される。 キャラクタストリングが圧縮エンジン126により符号化された後、ラン強化エンジン128は、出力コードを遮断し、それがキャラクタのランの一部であるか否かを判定する。
    その出力コードがランの一部であると判定された場合には、ラン強化エンジン128は、そのランからのキャラクタを含む幾つかのコードを出力エンジン130が出力するのを禁止する。 次いでラン強化エンジン128は、そのランから送信されなかったコードを識別する情報を含むランコードワードを生成する。 次いで、そのランコードワードが、そのランの終わりの検出時に出力される。

    【0061】図13は、図12に示すラン強化エンジン
    128により実行されるプロセスを示す詳細なフローチャートである。 ブロック136でコード「C」が照会されて、そのコード値が辞書中で作成された最後のコード(即ち、NAC−1)と等しいか否かが判定される。 コードCがNAC−1と等しい場合には、ランは既に発生しており、判定ブロック136はブロック138へジャンプして、コード値「C」がアドレスポインタRUNCODE
    に書き込まれる。 ラン強化エンジンは次いで、出力エンジン130(図12参照)をディセーブルにして、コードCが出力されるのを防止する。 次いでプロセスは、圧縮エンジンにより生成される次のコードのために判定ブロック136にジャンプする。 後続のコードがラン中にあるキャラクタを表す(即ち、同じキャラクタを表す)限り、このプロセスは繰り返される。 例えば、RUNCO
    DEは、最後のコードCの値に絶えずリセットされ、出力エンジンは、コードワードを出力することが抑止される。 ブロック136に戻った際には、NACの値が圧縮エンジンによりインクリメントされることに留意されたい。

    【0062】新たに遮断したコードがNAC−1と等しくない(即ち、圧縮/圧縮解除エンジンで作成された最後のコードと等しくない)場合には、ランが発生しなかったか、またはランが完了しているかの何れかである。
    次いで判定ブロック136は、判定ブロック142にジャンプして、アドレスポインタRUNCODEの値がチェックされる。 RUNCODEがヌル値である場合には、以前にランは生じておらず、判定ブロック142はブロック148
    にジャンプする。 次いで、ブロック148は、コードCを出力する。 このコードCは、他のランでない符号化キャラクタストリングと同一のものである。 次いでプロセスは、圧縮エンジンによって作成される次のコードのために判定ブロック136に戻る。 また、RUNCODEがヌルでない場合には、以前にランが生じており、判定ブロック142は、ブロック144で出力される次のコードとしてRUNCODEを出力する。 プロセスがブロック146にジャンプして、RUNCODEがヌル値にリセットされ、次いでブロック148がランを中断させたコードC
    (コードワード)の値を出力する。 次いで、ラン強化エンジンが判定ブロック136に戻り、次のコードワードが圧縮エンジンから遮断される。

    【0063】図14は、従来の圧縮解除装置を示すブロック図である。 デコーダ入力エンジン150は、コードワードにより表された圧縮キャラクタストリングのシーケンスを受信し、そのコードワードを圧縮解除エンジン15
    2に供給する。 その圧縮解除エンジン152は、コードワードを得て辞書を構成して保持し、符号化された出力キャラクタを生成する。 次に利用可能なアドレス(NAC)
    ポインタ156は、図5で説明したNACポインタと同様の態様で保持される。 デコーダ出力エンジン154は、圧縮解除エンジン152からの圧縮解除キャラクタの出力を制御する。

    【0064】図15は、本発明によるランレングス強化デコーダを示すブロック図である。 デコーダ入力エンジン158は、図15のデコーダ入力エンジン150と同じものである。 入力エンジン158からのコードワードは、圧縮解除エンジン162で更に圧縮解除が行われる前に、デコーダラン強化エンジン160で遮断される。 このラン強化エンジン160は、各コードワードをチェックして、そのコードワードがランコードワードを構成するものか否かを判定し、それに従って、修正されたコードストリームを生成する。 ランコードが存在しない場合には、コードワードが圧縮解除エンジン162に送られて、通常の圧縮解除が行われる。 デコーダ出力エンジン164は次いで、
    圧縮解除エンジンからの符号化キャラクタの出力を制御する。 デコーダラン強化エンジン160は、図12に示したものと同様にして圧縮解除エンジン162中のアドレスポインタ(NAC)へのアクセスを有するアドレスポインタ(RUNCODE)168を含んでいる。

    【0065】図16は、図15のデコーダランレングス強化エンジン160の動作を示す詳細なフローチャートである。 ブロック170でコード「C」が照会されて、そのコード値が、次に利用可能なコードアドレスとして圧縮解除装置が予期している正規の値と異なるか否かが判定される。 例えば、圧縮解除エンジンは、典型的には、コードCが、次に利用可能なコードNACより小さいものと予測する。 コードCが正規の値である場合(即ち、コードC<NAC)には、ブロック172が「C」の値を処理のために圧縮解除エンジンに送る。 Cが正規の値と異なる場合(即ち、C≧NAC)には、デコーダラン強化エンジンは、予測される最大コード値とコードCの値との間の「ギャップを充填する」。

    【0066】より詳細に説明すると、ブロック174は、
    値NACをアドレスポインタRUNCODEに書き込み、ブロック176は、圧縮解除される次のコードワードとしてRUNCODEを圧縮解除エンジンに送る。 RU
    NCODEの値はブロック178でインクリメントされ、
    判定ブロック180が、デコーダラン強化エンジンが出力コードと予測される次の利用可能なアドレスとの間の「ギャップを充填している」(即ち、RUNCODE>
    C)か否かを判定する。 デコーダラン強化エンジンがランの復号を完了している場合には、判定ブロック180
    は、ランの圧縮解除が完了していることを示す。 ランコードワードとNACとの「ギャップを充填する」ために別のコードワードが必要である場合(即ち、RUNCO
    DE≦C)には、判定ブロック180がブロック176に戻って、アドレスポインタRUNCODEの値を圧縮解除エンジンに送る。 次いでRUNCODEがインクリメントされ、ランの中の全てのコードが圧縮解除エンジンに供給されるまで、このプロセスが繰り返される。

    【0067】図17および図18は、中間初期設定プロセスとランレングス強化プロセスとが共に作用する態様を示すものである。 生データストリーム182が、データ圧縮エンジン30(図1参照)へ送られて、図5に示した中間初期設定方法を用いて圧縮される。 入力データストリーム182中の各キャラクタ「a」には、データストリーム中の位置を識別し易いように添字を付してある。 従って、a 0 ,a 1 ,……,a 11は同一のキャラクタ「a」の1
    2回のコピーしたものを表している。 1組の初期動作条件190は、8ビットの単一キャラクタ長(m=8)と、3
    2の特殊コード(k=5)と、12ビット固定長の出力コード(b=12)と、初期開始アドレス1(C 0 =1)とから構成されている。 2進表記での「a」のASCII
    表現は[01100001]である。 次に利用可能なコード(NA
    C)は、先ずNAC=C 0 +2 k =1+32=33と計算される。 記憶装置184は、圧縮/圧縮解除辞書中の特定のアドレス位置におけるデータストリーム182からのデータ項目を示している。

    【0068】中間初期設定圧縮プロセスは、最初の入力キャラクタa 0を読み出し、それと一致するキャラクタを記憶装置184中で探索する。 そのa 0がデータストリーム中の最初のキャラクタであると仮定した場合には、一致は発生しない。 次いでキャラクタa 0がアドレス位置NAC(ADDR33)で「新キャラクタ」として記憶される。 a 0の最初の5ビット(即ち、2進数[01100]=12)
    がC 0と合計されて、圧縮データストリーム186中の最初のコードワード「13」として出力される。 次いでa 0の最後の3ビットについての部分コード(即ち、2進数[0
    01]=1)が次のコードワード1として出力される。 データストリーム186は、中間初期設定法を用いた圧縮プロセスの後のコードワードを示すものであり、データストリーム188は、図13に示すラン強化プロセスの後のデータストリーム186を示すものである。

    【0069】ラン強化プロセスは、特殊キャラクタコード「13」および部分キャラクタコード「1」がNAC−
    1と等しくなく、それ故、それらコードを圧縮データストリーム188に送ることを判定する。 次いでアドレスポインタNACがインクリメントされる(NAC=34)。
    次の入力キャラクタa 1が読み出され、それと一致するデータ項目が記憶装置184中で探索される。 アドレス位置ADDR33に既にa 0が記憶されているので、突き合わせが行われると、次の入力キャラクタa 2がa 1と連結される。 ストリング「aa」(即ち、a 1 ,a 2 )を求めて別の探索が行われる。 この探索は失敗する(即ち、一致は発生しない)。 Wはもはや「ヌル」ではない(即ち、W
    =コード(a 1 ))ので、コードワード「33」が圧縮エンジン126によって出力される(図12参照)。 ラン強化エンジン128(図12参照)がコードワード「33」を遮断して、そのコードワードがNAC−1と等しい(即ち、NAC−1=34−1=33)か否かを判定する。 コードワード「33」はNAC−1に等しく、従って、アドレスポインタRUNCODEが「33」に設定され、出力エンジン130(図12参照)がディセーブルになって、コードワード33の出力が抑止される。 次いでストリング「a 1 ,a 2 」がアドレス位置NAC(ADDR34)に記憶され、アドレスポインタNACがインクリメントされる(NAC=35)。

    【0070】記憶装置184中の既に記憶されたデータ項目と一致しない次のキャラクタストリングは、ストリング[a 3 ,a 4 ,a 5 ]である。 次いで辞書項目「aa」(即ち、ADDR34)が、典型的には圧縮エンジンにより出力される。 ラン強化エンジンは、出力コードがNAC−1
    (即ち35−1)に等しいか否かを判定する。 従って、アドレスポインタRUNCODEの値が現在の出力コード値(即ちRUNCODE=34)と置き換えられる。 次いでラン強化エンジンが出力エンジンをディセーブルにして、コードワード「34」が圧縮エンジンから出力されるのが抑止される。 次いで圧縮エンジンがアドレス位置N
    AC(ADDR35)にキャラクタストリング[a 3 ,a 4 ,a 5 ]
    を記憶し、NACをインクリメントする(NAC=3
    6)。

    【0071】記憶装置184中のデータ項目と一致しない生データストリーム182からの次のキャラクタストリングは、キャラクタストリング[a 6 ,a 7 ,a 8 ,a 9 ]である。 次いで出力コードワード「35」が圧縮エンジンにより出力される。 出力コードワード「35」がNAC−1
    (36−1)に等しいので、アドレスポインタRUNCO
    DEの値が値35に設定され、この出力コードワード「3
    5」が圧縮データストリーム188中に出力されることが禁止される。 次いでキャラクタストリング[a 6 ,a 7 ,a 8 ,
    9 ]がアドレス位置NAC(ADDR36)に記憶され、アドレスポインタNACがインクリメントされる(NAC=3
    7)。 次いで圧縮エンジンが、シーケンス[a 1 0 ,a 11 ,
    b]が記憶装置184中のどの項目とも一致しなくなるまで、生データストリーム182からの更なるキャラクタを組み合わせる。 次いで、最後の一致データ項目ストリング(即ち、ADDR34における[a 1 ,a 2 ])についてのコードワード「34」が圧縮エンジンにより出力される。 ラン強化エンジンは、コードワード「34」がNAC−1(3
    6)(即ちランの終わり)に等しくないことを判定する。 RUNCODEの値が「36」である(即ち、ヌルではない)ので、RUNCODE値およびコードワード「34」(即ち36,34)が、圧縮データストリーム188に出力される。 次いでRUNCODEが「ヌル」値にリセットされる。 NACがインクリメントされる前に、キャラクタストリング[a 10 ,a 11 ,b]が記憶位置NAC(ADDR
    37)中にコピーされる。 このプロセスは、生データストリーム182からの全てのキャラクタが圧縮されるまで続行される。

    【0072】データストリーム188は、図8に示すように、符号化キャラクタ「13」を先ず復号することにより圧縮解除される。 コードワード「13」は、Co(即ち「1」)より大きく、Co+2 k (即ち「33」)より小さいので、このコードワードは、図9に示すように、新キャラクタとして処理される。 例えば、データストリーム
    188からの次の3ビット(即ち、コードワード「1」)
    は、特殊キャラクタコード「13」の復号化5ビット2進表現(即ち、13−Co=12=[01100])と連結される。 これにより、「a」のASCII表現(即ち[01100001])
    が生成される。 最初に、復号化キャラクタは、圧縮解除データストリーム190中でa oとして表される。 次いで、
    復号化キャラクタ「a」が、圧縮解除辞書(図示せず)
    のアドレス位置ADDR33にロードされる。

    【0073】圧縮データストリーム188からの次の符号化キャラクタ「36」は、Co+2 kよりも大きいものと判定され、その符号化キャラクタは、多数キャラクタ符号化キャラクタストリングと呼ばれている。 その符号化キャラクタは、デコーダラン強化エンジン160(図16
    参照)により遮断される。 コードワード「36」がNAC
    (33)の現在値と比較される。 コード値「36」はコード値「33」よりも大きいので、NACの値がアドレスポインタRUNCODEに書き込まれ、そのRUNCODE
    が、圧縮解除エンジンにより圧縮解除される次の符号化キャラクタとして使用される。 圧縮解除エンジンは、アドレス位置ADDR34に圧縮解除辞書を構成し、LZ2圧縮解除機構にとって典型的な態様で、圧縮解除データストリーム190上のランからキャラクタを出力する。

    【0074】次いで、図16のデコーダラン強化プロセスがRUNCODEをインクリメント(34)して、RUN
    CODEの値が符号化キャラクタ値「36」以下であるか否かをチェックする。 RUNCODEの値は「36」未満なので、RUNCODEの新たな値が次の符号化キャラクタとして圧縮解除エンジンに送られる。 このプロセスは、RUNCODEがコードワード値「36」と等しくなるまで繰り返される。 次いで、次のコードワード「34」
    が圧縮データストリーム188から読み出され、デコーダラン強化エンジンにより同様の態様で処理される。 このようにして、圧縮データストリーム中のコードワード(即ちコードワード33,34,35)のギャップがラン強化エンジンにより充填される。

    【0075】生データストリーム182は、図5に示すL
    Z2中間初期設定圧縮プロセスにより第1レベルまで圧縮され、そのデータは更に、図13に示すラン強化プロセスにより第2レベルまで圧縮される。 データストリーム188から明らかなように、ラン強化エンジンから伝送されるコードワードの数は、データストリーム186により通常伝送されるコードワードの数よりも小さい。 従って、中間的初期設定プロセスにより提供される符号化キャラクタの短縮されたビット長によって圧縮率が最初に増大され、更にラン強化プロセスによって増大される。

    【0076】ラン符号化強化プロセスは、入力データ中の他の種類の冗長性について圧縮上の不利を伴うものではないことに留意されたい。 強化は、LZ2機構により生成されるコードストリームに残るいくつかの残留冗長性を利用する。 即ち、任意の所与の時点で、ストリーム中で発生し得る「最大有効コード」が存在し、その最大コードよりも大きな値は「イリーガル」なものである。
    ラン符号化の強化は、それらの「イリーガル」なコードを使用してランの符号化を行う。 可変長コードと共にラン符号化強化を実施する場合、シーケンスA 1 ,A 1 +1,
    1 +2,A 1 +3,……,A 1 +(k−1)は、コード長の限界値にまで亘ることはできない。 例えば、A 1 +(k
    −1)の伝送に必要なビット数は、A 1の伝送に必要なビット数と同じでなければならない。 何故ならば、圧縮解除装置が予期するビット長がそのビット数であるからである。 これは(必要であれば)ランをサブランに分割することにより行われる。 このラン符号化強化は、幾つかの変形例が可能なものである。 そのような変形例には、「新コード」A 1 +1,A 1 +2,……,A 1 +(k−
    1)を辞書に入力しないものがある。 従って、ランの符号化方法を維持したまま、辞書のスペースが節減される。 どの変形例の性能が優れているかは、入力データ中のランレングスの分布によって決まる。

    【0077】 ハフマン符号化ネットワークプロトトコル(例えばTCP/IP)は、
    転送中の実際のデータパケットを、ネットワークのトラフィック管理に必要な付加情報のエンベロープで包む。
    実験結果の観察により、この付加情報は、ネットワークトラフィック中でヌルバイトが発生する相対的な頻度を大幅に高める傾向を有するものであることが示された。
    この現象は、パケットのエンベロープ中の種々のフィールドの「ゼロ・パディング」に一部起因するものである。 非ゼロの値が発生する頻度はデータによって決まり、また長期間に亘って均一な分布から著しく離脱することはない。 このため、バイト値についての確率分布の大まかな近似は以下の通りとなる。

    【0078】 P(c)=p (c=0) P(c)=(1−p)/255 (c≠0) ここで、P(c)は値cを有する1バイトが発生する確率であり、0≦p≦1である。 ネットワークトラフィックを監視することにより得られるpの値は代表的には0.2
    と0.3との間で変動する。 極めて短いパケットの場合、
    または実際のパケットデータが圧縮不可能な場合(例えば、データがソースで既に圧縮されている場合)には、
    ゼロ値の高い確率が、データ中に残っている冗長性であることが多い。 このような場合には、簡単なハフマン符号化機構の方がLZ機構よりも性能が優れていることがある。

    【0079】ハフマン符号化の基本原理は、可変長コードで固定長キャラクタを符号化する、ということであり、即ち、最も頻度の高いキャラクタにはより短いコードを使用し、最も頻度の低いキャラクタにはより長いコードを使用する。 ハフマン符号化機構は当業界で公知のものであるので、詳細には説明しないこととする。 ハフマンアルゴリズムを用いることにより、所与の確率分布について最適なコード割り当てを構成することが可能である。 その結果として生じるコード割り当ては、「接頭語が必要ない」という特性をも有している(即ち、別のコードの接頭語としてコードが生じることはない)。 これにより、符号化ストリームが一意の判読可能性および即時性を有するものとなる。

    【0080】p>1/256で、0〜255の値を有する8ビット入力バイトを仮定した、上記の簡単な確率分布の場合の、最適なハフマンコード割り当てを図19に示す。
    同図の中央列において、「z」は1≦z≦8の範囲の整数であり、そのpの関数としての最適値は以下のようにして決定される。 この符号化機構の圧縮率は、次の方程式1で定義される。

    【0081】 R(z,p) = pz/8 + [(1−p)/2040] × (2 9-z +2038) (1) 1≦z≦8の範囲の一定のzについて、R(z,p)はp
    の一次関数となる。 その傾きは非正数であり、zと共に単調に増加する。 また、値R(z,0)は、zと共に単調に減少する。 図20は、1≦z≦4および0≦p≦0.5
    の場合のR(z,p)を示すグラフである。 従って、所与のzについて値p zが存在し、z'>zおよびp>p zの全てについて、R(z,p)≦R(z',p)となる。 p zが以下の一次方程式(2)の根であることが容易に確認されよう。

    【0082】 R(z',p) = R(z+1,p z ) (2) 方程式(1)の式R(z,p)を方程式(2)に代入してp zについて解くと、下記方程式が得られる。

    【0083】p z = 2 8-Z / [(255×2 Z )+256] 図21は、0≦z≦8についてp zの値を示す表である。 完全性を期すためにz=0での値p z =1も含めてある。 所与のzの値(1≦z≦8)は、pがp z ≦p≦
    z-1の範囲にある場合に最適となる。 これらの間隔の幾つかを図20に示す。 従って、64/319≦p≦128/38
    3(約0.2006≦p≦0.3342)の場合にはz=2が最適となる。 この範囲が典型的なLANトラフィックで経験上認められるpの値を含んでいることに留意されたい。

    【0084】 ネットワークパケットのための圧縮機構前述の種々の圧縮方法が、図22で組み合わされて、ネットワークパケットのカスタマイズされた圧縮のための効率的な機構が生成される。 図22は、パケットアドレスフィールド(通常は2つの6バイトフィールド)を処理するためのブロック202を示している。 或る特定用途(例えばネットワークブリッジ)では、ほとんどのパケットが、小さなサブセットからのアドレス(即ちブリッジによりサービスされるステーションのアドレス)を備えている。 これらの頻繁に生じるアドレスは、テーブル中に記憶させることができ、また連続番号によりテーブル中に符号化することができる。 例えば、アドレステーブルが255バイト長である場合には、連続番号を1バイトで符号化することが可能であり、従って、アドレスフィールドについて6:1の圧縮率を達成することができる(テーブル中で発見されないアドレスをマークするために1つのコードは予約しておく)。 また別の用途では、アドレスフィールドは、パケットの残りと共に圧縮され、または未圧縮のまま送られる。

    【0085】ここで図22を参照する。 入力パケット20
    0は、アドレス処理ブロック202に送られる。 また、ブロック208は、強化LZ2機構を表しており、中間初期辞書およびラン符号化強化(LZE)を備えている。 ブロック204は、z=2の場合の上述の簡単なハフマン機構(z−HUF)を示している。 ハードウェアによる実施態様では、LZEおよびz−HUFが並行して実行される。 ブロック210は、カレントパケットについて最高性能を有する圧縮方法の出力を選択する。 次いでブロック
    210は、圧縮パケット長を含む短いヘッダおよび選択された圧縮方法についての標識と共に、圧縮パケットを出力する。 また、その圧縮された出力の長さが、パケットの拡張を防止するために、ブロック200からの元のパケットの長さと比較される。 LZEおよびz−HUFのいずれもパケットの圧縮に成功しなかった場合は、元のコピーが、ヘッダ中の適当な指示と共にブロック206から出力される。

    【0086】一般に、パケットの大部分は、ブロック20
    4のz−HUFまたはブロック206の「コピー」を用いた場合より、ブロック208のLZEを用いた場合の方が良好な圧縮率を得ることになる。 しかし、パケットによっては(ほとんどの場合、短いパケット)、z−HUFブロックおよび「コピー」ブロックの方が優れている。 代表的な圧縮結果を、異なる2つのパケットファイルについて図23に示す。 同図の1行目は、最大16ビットの出力コードを有するLZWによる実施態様(UNIX圧縮)を示している。 全パケットが1つのファイルとして圧縮される(即ち、パケットの境界が無視され、辞書が各パケット間で共用される)。 図23の表の2行目は、
    12ビットの出力コードを有するUNIX圧縮の結果を示し、3行目は、上述のLZE圧縮による結果を示し、4
    行目は、図22に示すようにLZE圧縮機構とz−HU
    F圧縮機構との双方を並行して用いた場合の圧縮結果を示している。 3行目と4行目の結果は、各パケットを別個に圧縮することに相当するものである。

    【0087】図23から分かるように、個々のパケットについての圧縮性能は、大きなパケットファイルを圧縮する場合に近似しており、また場合によってはそれよりも優れていることがある。 これは、パケット間の冗長性を利用することによって大きいパケットファイル中のデータソースの統計的特性に適応させる一層良好な機会が存在する場合であっても、真となる。 図23の圧縮結果は、何日間も継続してソフトウェアを実行可能とした長期間の圧縮試験の結果と一致するものである。 ネットワークパケットが周期的にサンプリングされ、圧縮され、
    圧縮解除されて、圧縮率の監視が行われた。

    【0088】図24は、時間の関数として圧縮率を示すグラフである。 約200時間に亘って圧縮が測定された。
    サンプリングされたデータセットは、1,420,998のパケットから成り、総サイズが198,754,151バイト、平均パケット長が140バイトであった。 このデータセットについての平均圧縮率は0.572であった。 図25は、パケット長についてデータ分布(総バイト数の一部)を示すグラフである。 このデータセット中の50%を越えるバイトが、200バイト以下の長さのパケット中に含まれている。 図26は、異なる範囲のパケット長について平均圧縮率を示すものである。 各パケット長毎に一貫した良好な圧縮率が維持されている。

    【0089】上述の装置は、「未加工の」アルファベットが大きい場合(例えば16ビット記号)にデータソース中の圧縮性能を改善するものである。 更に、この装置は、各ブロックが個々に圧縮されなければならない、短いブロックに区分されたデータソースについても、圧縮性能を改善するものである。 これらの強化により、ネットワークパケット用にカスタマイズされた圧縮機構が提供される。 従って、個々のネットワークパケットについての圧縮性能は、平均パケット長が極めて短い場合であっても、大きいパケットファイルで達成される性能に匹敵するものとなる。

    【0090】以上、本発明の原理を好適実施例に基づいて図示し説明してきたが、本発明は、そのような原理から逸脱することなく、その構成および細部を修正することが可能であることは明白である。 特許請求の範囲に記載の本発明の思想及び範囲に含まれる全ての修正例および変形例を本発明として請求する。

    【0091】以下に本発明の実施態様を列挙する。

    【0092】1. 辞書ベースの圧縮/圧縮解除装置において入力データを符号化する方法であって、この方法が、入力データからの一意の多数キャラクタストリングを辞書項目として前記圧縮/圧縮解除装置中に記憶させ、前記入力データからの多数キャラクタストリングを、そのキャラクタストリングと一致する辞書項目のアドレスに従ってコードワードへと符号化し、圧縮/圧縮解除辞書中に以前に記憶されていない、前記入力データからの単一キャラクタストリングを識別し、各々の単一キャラクタストリングを特殊コードと部分コードとに符号化し、その各々の特殊コードと部分コードとがその関連する単一キャラクタストリングの選択可能な部分を表しており、符号化された単一キャラクタストリングに対応するコードワードと、符号化された多数キャラクタストリングに対応するコードワードとの双方を有する圧縮データストリームを前記圧縮/圧縮解除装置から出力し、各々の特殊コードおよびその関連する部分コードが、単一キャラクタストリングを一意に識別し、および前記入力データ中に存在し得る一意の単一キャラクタストリングの総数のサブセットを表している、というステップを含むことを特徴とする、前記符号化方法。

    【0093】2. 特殊コード中に何ビットの単一キャラクタが含まれているかを決定する選択可能なパラメータkに従って、圧縮データストリーム中の各々の単一キャラクタストリングについての特殊コードを符号化する、
    というステップを含むことを特徴とする、前項1記載の符号化方法。

    【0094】3. 圧縮データストリームから単一キャラクタストリングを再構成するステップを含み、この再構成ステップが、圧縮データストリーム中の特殊コードを識別し、その特殊コードをその関連する単一キャラクタストリングの元の部分へと復号し、その特殊コードをその関連する部分コードと組み合わせる、というステップから成ることを特徴とする、前項2記載の符号化方法。

    【0095】4. 圧縮/圧縮解除装置により生成されるコード値の所定範囲内に存在するように特殊コードが符号化されることを特徴とする、前項1記載の符号化方法。

    【0096】5. 単一キャラクタストリングを符号化するステップが、単一キャラクタストリングからのビットのサブセットを特殊コードに割り当て、単一キャラクタからの残りのビットを部分コードに割り当てる、というステップから成り、単一キャラクタストリングを表すために特殊コード中のビットの数が圧縮/圧縮解除装置中で割り当てられたコードワードの数によって決定される、ということを特徴とする、前項1記載の符号化方法。

    【0097】6. 単一キャラクタストリングの特殊コードに割り当てられたビット数が、入力データの種類および構造に従って変更されることを特徴とする、前項5記載の符号化方法。

    【0098】7. 圧縮データストリーム中の連続するコードワードのランを検出するステップを含み、そのラン中の各コードワードが、同じキャラクタから構成された入力データストリングを表していることを特徴とする、
    前項1記載の符号化方法。

    【0099】8. 圧縮データストリームからのコードワードのランを圧縮するステップを含むことを特徴とする、前項7記載の符号化方法。

    【0100】9. 圧縮/圧縮解除装置が圧縮データストリーム中のコードワードのランの一部を出力することを禁止するステップを含むことを特徴とする、前項7記載の符号化方法。

    【0101】10. 禁止されたコードワードに続いて送られる最初のコードワードの値により、禁止されたコードワードのシーケンスの再構成を可能にすることを特徴とする、前項9記載の符号化方法。

    【0102】11. 少なくとも1つの別の圧縮機構を用いて入力データを圧縮すると同時に、最良の圧縮率を提供する圧縮機構から圧縮データストリームを選択する、
    というステップを含むことを特徴とする、前項7記載の符号化方法。

    【0103】12. 入力データのサイズが各々の圧縮データストリームよりも小さい場合に、未圧縮の入力データキャラクタを選択するステップを含むことを特徴とする、前項11記載の符号化方法。

    【0104】13. 一意の単一キャラクタストリングの総数が、圧縮/圧縮解除装置中の辞書項目の総数よりも多いことを特徴とする、前項1記載の符号化方法。

    【0105】14. 一意の単一キャラクタストリングの数が2 16であることを特徴とする、前項1記載の符号化方法。

    【0106】15. 辞書ベースの圧縮/圧縮解除装置において入力データを符号化する方法であって、この方法が、入力データからのキャラクタストリングを符号化し、一意の単一キャラクタストリングをデータ項目として圧縮/圧縮解除辞書中に記憶させ、符号化キャラクタストリングを表すコードワードから成る圧縮データストリームを圧縮/圧縮解除装置から出力し、入力データキャラクタのランを表す圧縮データストリーム中のコードワードのシーケンスを検出し、前記入力データキャラクタを表すランが、同じ値を有し、圧縮/圧縮解除装置により逐次に処理され、圧縮/圧縮解除装置が圧縮データストリーム中のコードワードのランの一部を出力するのを禁止することにより圧縮データストリームを圧縮し、
    禁止されたコードワードに続いて送られる最初のコードワードの値により、禁止されたコードワードのシーケンスの再構成を可能にする、というステップを含むことを特徴とする、前記符号化方法。

    【0107】16. 圧縮/圧縮解除装置から出力された符号化値を、圧縮/圧縮解除辞書中に記憶されている最後のデータ項目の記憶位置と比較することによりランが検出されることを特徴とする、前項15記載の符号化方法。

    【0108】17. 圧縮/圧縮解除装置から出力された符号化値が、辞書中に記憶されている最後のキャラクタストリングのアドレス値と等しくならなくなるまで、圧縮/圧縮解除装置が符号化キャラクタストリングを出力することを禁止するステップを含むことを特徴とする、
    前項16記載の符号化方法。

    【0109】18. 禁止されたコードワードに続いて送られる最初のコードワードを、圧縮/圧縮解除装置により圧縮解除データへと更に圧縮解除されたコードワードへと、圧縮解除するステップを含むことを特徴とする、
    前項15記載の符号化方法。

    【0110】19. 辞書ベースの圧縮/圧縮解除装置において入力データを符号化する回路であって、この回路が、前記入力データからの単一キャラクタストリングおよび多数キャラクタストリングをコードワードへと符号化し、そのコードワードを圧縮データストリームとして出力する、圧縮/圧縮解除エンジンと、前記入力データからの単一キャラクタストリングを第1コードフィールドと第2コードフィールドとに分割する手段と、前記圧縮データストリーム中の前記単一キャラクタストリングを識別するために前記第1コードフィールドを符号化する手段であって、前記第1コードフィールドが、圧縮/
    圧縮解除エンジンのコード値の所定範囲内にあるように符号化される、前記符号化手段と、前記第1コードフィールドを復号してそれを前記第2コードフィールドと組み合わせることにより圧縮データストリームから単一キャラクタストリングを生成する手段であって、前記第1
    および第2コードフィールドが、入力データ中で発生する可能性のある全ての単一キャラクタストリングのサブセットを表すことにより、符号化キャラクタストリングのビット長を短縮する、前記生成手段ととを備えることを特徴とする、前記符号化回路。

    【0111】20. 前記符号化手段が前記第1コードフィールドからの選択可能なビット数を所定値と合計することを特徴とする、前項19記載の符号化回路。

    【0112】21. 前記生成手段が、前記第1コードフィールドから所定値を減算し、その減算結果からの選択可能な数のビットを前記第2コードフィールドと組み合わせることを特徴とする、前項19記載の符号化回路。

    【0113】22. 前記圧縮/圧縮解除エンジンに接続され、その圧縮/圧縮解除エンジンが前記圧縮データストリーム中のコードワードの幾つかを出力することを禁止する、エンコーダラン強化エンジンを備えていることを特徴とする、前項19記載の符号化回路。

    【0114】23. 前記圧縮/圧縮解除エンジンに接続され、禁止されたコードワードに続いて送られる最初のコードワードの値から、禁止されたコードワードのシーケンスを再構成する、デコーダラン強化エンジンを備えていることを特徴とする、前項22記載の符号化回路。

    【0115】

    【発明の効果】本発明は上述のように構成したので、データ圧縮率を高め、辞書ベースの圧縮/圧縮解除装置に必要な記憶装置の量を削減するために、異なる形式の入力データおよび異なるデータ構造に適応可能な、データ圧縮の初期設定プロセスを提供することができる。

    【図面の簡単な説明】

    【図1】本発明による強化が実施された圧縮/圧縮解除装置の概要を示すブロック図である。

    【図2】LZ圧縮の基本原理を示す説明図である。

    【図3】空の初期辞書を有する従来のLZ圧縮方式での新キャラクタの伝送を示す説明図である。

    【図4】本発明による中間辞書初期設定を用いた強化L
    Z圧縮による新キャラクタの伝送を示すフローチャートである。

    【図5】基本的なLZEの中間初期設定プロセスを示すフローチャートである。

    【図6】図5のサブプロセスである「新キャラクタ」の符号化を示すフローチャートである。

    【図7】図1の圧縮副装置で図6の符号化サブプロセスを実行するための回路を示す機能ブロック図である。

    【図8】図6のサブプロセスにより生成された符号化コードについての「新キャラクタ」符号化サブプロセスを示すフローチャートである。

    【図9】図1の圧縮解除副装置で図8の符号化サブプロセスを実施するための回路を示す機能ブロック図である。

    【図10】本発明による異なる初期設定方式についての圧縮結果を示す表である。

    【図11】従来のデータ圧縮装置を示すブロック図である。

    【図12】強化Lempel-Zivランレングス符号化機構を図1に示す圧縮副装置で実施するための回路を示すブロック図である。

    【図13】本発明による強化Lempel-Zivランレングス符号化方法を実施するためのプロセスを示すフローチャートである。

    【図14】従来のデータ圧縮解除装置を示すブロック図である。

    【図15】本発明による図1の圧縮解除副装置で強化Le
    mpel-Zivランレングス符号化を実施するための回路を示すブロック図である。

    【図16】本発明による強化Lempel-Zivランレングス符号化方法を示すフローチャートである。

    【図17】中間初期設定およびランレングス符号化を行うための方法の図形化して示す説明図である(1/
    2)。

    【図18】中間初期設定およびランレングス符号化を行うための方法の図形化して示す説明図である(2/
    2)。

    【図19】最適なハフマン符号化割り当てを示す表である。

    【図20】ハフマン符号化データの圧縮率を示すグラフである。

    【図21】異なるビット長についての確率分布を示す表である。

    【図22】本発明による並列「最良利益」圧縮装置を示すブロック図である。

    【図23】種々のネットワークパケットファイルについての圧縮結果を示す表である。

    【図24】実際のネットワークパケットデータに対して図22の装置を用いた場合の圧縮率を時間の関数で示すグラフである。

    【図25】図24のデータ分布をパケット長の関数として示すグラフである。

    【図26】図24のデータ圧縮率をパケット長の関数として示すグラフである。

    【符号の説明】

    24 圧縮副装置 26 圧縮解除副装置 30 圧縮エンジン 32 記憶装置 34 中間初期設定エンコーダ 36 デコーダ 38 エンコーダラン強化エンジン 40 デコーダラン強化エンジン

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈