JP4759214B2 - 漸進的で連続的なデータ圧縮のためのシステム及び方法 - Google Patents
漸進的で連続的なデータ圧縮のためのシステム及び方法 Download PDFInfo
- Publication number
- JP4759214B2 JP4759214B2 JP2002514940A JP2002514940A JP4759214B2 JP 4759214 B2 JP4759214 B2 JP 4759214B2 JP 2002514940 A JP2002514940 A JP 2002514940A JP 2002514940 A JP2002514940 A JP 2002514940A JP 4759214 B2 JP4759214 B2 JP 4759214B2
- Authority
- JP
- Japan
- Prior art keywords
- phrase
- library
- data
- phrases
- data stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 134
- 238000013144 data compression Methods 0.000 title abstract description 12
- 230000000750 progressive effect Effects 0.000 title description 18
- 230000006835 compression Effects 0.000 claims description 171
- 238000007906 compression Methods 0.000 claims description 168
- 238000004422 calculation algorithm Methods 0.000 claims description 151
- 230000006837 decompression Effects 0.000 claims description 71
- 230000005540 biological transmission Effects 0.000 claims description 60
- 230000008569 process Effects 0.000 claims description 29
- 230000003252 repetitive effect Effects 0.000 claims description 10
- 238000010276 construction Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 25
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 230000008030 elimination Effects 0.000 description 5
- 238000003379 elimination reaction Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 238000009434 installation Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011437 continuous method Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000877 morphologic effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
Description
【発明の属する技術分野】
本発明はデータ圧縮の分野に関するものであり、詳しくは、漸進的で連続的なデータ圧縮の分野に関する。
【0002】
【従来の技術】
従来の通信システムの重要な目的は、データの帯域幅及びスループットを向上させることである。従来のシステムは、データビットをすべて送信するのではなく、圧縮アルゴリズムを利用することにより、発信元から宛先へ送信する必要があるデータ量を削減している。圧縮アルゴリズムの分類には、無損失圧縮アルゴリズムと有損失圧縮アルゴリズムとがある。無損失圧縮アルゴリズムは、データを情報が失われない形態で圧縮する。これに対して、有損失圧縮アルゴリズムは、データの細部がいくらか除去される可能性のある表現を生成する。
【0003】
また、圧縮アルゴリズムは、特定目的と多目的とに大まかに分類することもできる。特定目的圧縮は、データ特性の先験的知識を利用できるデータに対して適用される。例えば、ビデオデータは個々のフレームから構成され、フレームの各々は直前のフレームまたは直後のフレームと少量だけ異なることが知られている。そのような場合、特定目的圧縮方法は、この先験的知識の利点を得ることができ、より特定的な、すなわちより効率的であろうと思われる圧縮アルゴリズム及び伸長アルゴリズムを設計することができる。多目的圧縮アルゴリズム(汎用圧縮アルゴリズムとも呼ばれる)は、情報源やデータ特性の先験的知識を何も利用しない。従って多目的圧縮は、効率が悪いことが多く、特定種類のデータ用の特定目的圧縮アルゴリズムよりも圧縮量が少ないことが多い。しかしながら、多目的圧縮アルゴリズムは、多種類のデータに対して有効に適用することができ、上記のようにデータに関する情報が前もって分からなくても適用することができるので、柔軟性が高い。
【0004】
多目的圧縮アルゴリズムの一分類には、データの反復の識別及び除去に基くものがある。これらの方法は、反復用語や反復語句の辞書を見付ける試みをするので、辞書ベースの圧縮方法と呼ばれている。学習した辞書語句は、一連の目的データ中のそれらの語句の反復を除去するために用いられる。
【0005】
他の2種類の圧縮アルゴリズムとして、漸進的圧縮アルゴリズムと連続的圧縮アルゴリズムがある。これら2種類の圧縮アルゴリズムは排他的なものではない。即ち、ある圧縮アルゴリズムが増分圧縮アルゴリズムと連続圧縮アルゴリズムの両方である場合もある。漸進的圧縮アルゴリズムは、その出力を生成するために、入力ストリーム全体や入力ストリームのブロック全体を必要としない。替わりに漸進的圧縮アルゴリズムは、入力を処理中であっても(つまり入力をすべて処理し終えた後ではなく)、入力を1記号づつ(即ち、漸進的に)処理して出力を生成する。テキストの中から母音の数を計算するアルゴリズムは、母音の総数を計算するためにその入力全体を処理する必要があるので、基本的には非漸進的アルゴリズムである。一方、小文字を大文字に変換するアルゴリズムは、各入力文字を処理する際に、各入力文字を個別に処理して出力を生成することができるので、漸進的であると言える。
【0006】
連続的アルゴリズムは、メモリ、ディスク空間等のシステムリソースを使い果たすことなく、無限のストリームの入力データに対して無限に実施することができるアルゴリズムである。連続的アルゴリズムはストリーミングアルゴリズムとも呼ばれる。入力のすべてを処理し終えた後にのみ出力を生成する非漸進的アルゴリズムは、自明であるが、非連続的である(連続的アルゴリズムの場合、入力が無限長であるため)。
【0007】
データの記憶及び伝送のコストは、対象データのサイズに直接関連する。従って、データから冗長性を取り除くことは、データの記憶及び伝送の効率を改善するために極めて有効な方法である。ほとんどの多目的無損失データ圧縮アルゴリズムは、次の2つの主な方法でデータから冗長性を除去しようと試みる。(1)反復用語及び反復語句の識別及び除去、及び、(2)より効率的な形態へのデータの圧縮、である。
【0008】
反復用語または反復語句の識別は、様々な方法で実施することができる。一般的な原理は、一例として示すことができる。数1の文字のシーケンスを考える。
【数1】
S=aabcaabdaabeaabf
辞書ベースの圧縮アルゴリズムは、このシーケンス中で4回反復されている語句「aab」を識別することができる。圧縮アルゴリズムが「aab」のインスタンスをすべて新たな記号、例えばAで置き換えた場合、このシーケンスはより効率的に記憶または送信される。圧縮されたシーケンスは、数2のようなものになる。
【数2】
S=AcAdAeAf
圧縮アルゴリズムは、上記の圧縮されたシーケンスに加えて、伸長の際にAのインスタンスをすべて「abb」で置き換える必要があることを示す付加的な命令も、記憶または送信しなければならない。従って、命令A=aabは、圧縮が基礎にした辞書語句である。伸長を可能にするためには、圧縮文字列と共に、この辞書も記憶または送信しなければならない。この例では辞書が簡単に判定されたが、与えられた入力について最大限の圧縮が得られる辞書を見付けることの問題は、NP完全問題として、J.A.Storer著「Data compression via textual substitution」, Journal of Association for Computing Machinery, 29(4):928-951(1982)に記載されており、この記事はここで参照することによりその全体を本明細書に援用する。
【0009】
データの符号化には、頻繁に現れる文字をより効率的に表現できるように(例えば少数のビットで)、1文字ごとのデータ表現の変更も必要である。数3の14文字のシーケンスを考える。
【数3】
S=abacadaeafagah
この場合、文字「b〜h」の各々が一回しか現れないのに対して、文字「a」は7回現われている。アルファベット全体が「a〜h」の8文字だけで構成されるものと仮定した場合、表1に示すように、それらは1文字当たり3ビットを用いて2進数形態で表現することができる。
【表1】
その結果、シーケンス(S)には全部で14×3=42ビットが必要になる。一方、データ中に文字「a」が比較的頻繁に現れることが分かっている場合、「a」をもっと少ないビットで表現し、アルファベットの残りの文字についてのビット数を増大させる方が効率的になる場合がある。例えば、これらの8文字は、表2に示すように表現を変更することができる。
【表2】
その場合、文字列Sは、7個の文字「a」の各々を表現するために1ビットを、残りの文字の各々を表現するために4ビットを必要とする。従って、Sに必要な全空間は、7×1+7×4=35ビットになる。この表現は、16パーセント以上の節約になる。
【0010】
このような統計的符号化方法には、ハフマン符号や算術符号など、様々な例が存在する。これらの方法の詳細については、D.A.Huffman著「A method for the construction of minimum-redundancy codes, Proceedings IRE, 40:1098-1101(1952)、並びに、Neal及びCleary著「Arithmetic coding for data compression」,Communications of the Association for Computing Machinery, 30(6):520-540(1987)に記載があり、これらはここで参照するすることによりその全体を本明細書に援用する。
【0011】
多数のこうした統計的符号化方法によって提供される一般的な原理は、Shanon著「A Mathematical Theory of Communication」,Bell System Technical Journal, 27:389-403(1948)に記載されており、この記事はここで参照することによりその全体を本明細書に援用する。シャノン(Shanon)氏は、確率Pで出現する文字または文字列を符号化するために必要なビット数が−log2Pであることを示している。従って、a〜hの8文字の各々が同じ確率で生じるものであればP=1/8であるから、各文字は−log2(1/8)=3ビットに符号化することができる。しかしながら、上記の例では、文字「a」が確率7/14で発生し、残りの文字が確率1/14で発生することが分かっている。従って、「a」は−log2(7/14)=1ビットで符号化し、残りの文字の各々は−log2(1/14)=3.8ビットで符号化することができる。
【0012】
他の符号化方法としてはランレングス符号化がある。この場合、同じ文字のシーケンスは、その文字の1つのインスタンス及びそれに続くその文字の反復回数で置き換えられる。一例を数4に示す。
【数4】
S=aaaaabbbbb
この文字列は、ランレングス符号化を用いると、数5のように符号化される。
【数5】
S=a5b5
従来の辞書ベースの多目的無損失圧縮アルゴリズムの多くは上記2つの方法の組み合わせに基くものであり、例えば、まず反復語句の辞書ベースの圧縮を行い、続いてその圧縮ストリームの統計的符号化を行なう。
【0013】
従来の圧縮方法の1つは、Ziv及びLempel著「A Universal Algorithm for Sequential Data Compression」, IEEE Transactions on Information Theory, IT-23(3):337-343(1977)に記載されており、この論文はここで参照することによりその全体を本明細書に援用する。この広く利用されている辞書ベースの多目的圧縮方法はLZ77と呼ばれており、いくつかの他の圧縮アルゴリズムの基礎となっている。UNIX(R)ベースのオペレーティングシステムに広く配布されている「gzip」圧縮プログラムは、LZ77方法の変形である。LZ77は、固定サイズのウィンドウ内の語句の以前のインスタンスを指すポインタの利用に基くものである。ウィンドウを入力シーケンスに対してスライドさせることによってデータ内の反復語句を見つけ出し、ウィンドウ内の何らかの重複した文字列をサーチする。例えば、数6の入力シーケンスを考える。
【数6】
S=abcdefbcdgh
LZ77方法は、語句「bcd」が2回反復されていることを判定し、この情報を用いて入力シーケンスを圧縮する。「bcd」の最初のインスタンスは変更しない。2番目のインスタンスは、Sの始まりから「bcd」の最初のインスタンスまでの距離およびその反復の長さから成るポインタで置換される。従って、LZ77によって表現されるシーケンスSは、数7のとおりになる。
【数7】
S=abcdef(1,3)gh
このポインタ(1,3)は、ウィンドウの始まりから距離1で始まり右に3文字分続く語句がそのポインタの現在位置で反復されていることを示している。この方法の変形として、現在位置から後方への距離をそのポインタの第1の要素として用いることもできる(ウィンドウの始まりから前方への距離に換えて)。この場合、Sは数8のように表現される。
【数8】
S=abcdef(5,3)gh
このポインタ(5,3)は、現在位置から後方に距離5の位置から右に3文字分続く語句が反復されていることを示している。
【0014】
従来のLZ77ベースの圧縮プログラムは、上記のポインタベースの方法を用いて、可変長の反復を固定長のポインタに変換している。そして、得られた記号及びポインタに対して統計的符号化方法を適用して圧縮する。これらのプログラムは、反復語句を見付けるための方法と最終的なデータストリームを符号化するための方法に、異なる方法を用いることができる。
【0015】
LZ77方法の1つの問題は、この方法が固定サイズのウィンドウ内の反復だけしか検出できないことである。ウィンドウサイズが限られているので、ウィンドウサイズよりも長い距離離れた反復データを検出することはできない。例えば、上記の例でウィンドウサイズを5文字に縮小した場合、「bcd」の最初のインスタンスの始まりから2番目の距離の終わりまでの全長は5よりも大きいので、「bcd」の反復を検出することはできない。LZ77方法でウィンドウサイズが限られているのは、反復をサーチするのに要する時間を制限するためである。LZ77方法に用いられるサーチアルゴリズムの複雑性及び実行時間は通常、サーチする入力文字列のサイズの関数になる。そのため、従来のLZ77圧縮方法は、たいていウィンドウサイズを数千文字までに制限している。例えば、「gzip」プログラムは32キロバイトのウィンドウを用いている。ウィンドウサイズを増大させると、LZ77アルゴリズムの実行時間は著しく増大してしまう。
【0016】
LZ77圧縮方法を用いる他のプログラムは、十分な圧縮率を得るために、第2ステージの統計的符号化が必要である。LZ77方法で用いられる統計的符号化方法は、非漸進的な、従って非連続的な方法である(例えばgzipはハフマン符号化を利用しており、この符号化は漸進的ではない)。非漸進的符号化方法は、ブロックデータの符号木を出力する前に、そのブロックデータを完全に処理しなければならない。また、非漸進的符号化方法で用いられるブロックサイズは、その符号化方法が十分な符号木を生成できるように、十分大きなものである必要がある。従ってLZ77方法は、漸進的に処理する必要がある連続したデータストリームが存在するリアルタイム圧縮即ちオンライン圧縮は、扱うことができない。
【0017】
LZ77方法のもう1つの問題は、ポインタがウィンドウ内のいずれの位置も指し示すことができるので、ポインタの数が極めて多くなる可能性があるということである。
【0018】
ZivおよびLempellは、1978年に、LZ77が有する問題のいくつかをLZ78と呼ばれる新たな圧縮方法を提案することにより解決した。これについては、Ziv及びLempel著「Compression of Individual Sequences Via Variable Rate Coding」, IEEE Transaction on Information Theory, IT-24(5):530-536(1979)に記載されており、この論文はここで参照することによりその全部を本明細書に援用する。LZ78方法は、ウィンドウ内の位置を指し示すポインタを用いる代わりに、入力ストリーム内で遭遇したすべての辞書語句の明示的表現を用いている。この辞書は、以前の辞書語句の上に構築することにより、漸進的に構築される。新たな語句が見付かるたびに、その語句が将来使われるであろうという仮定の下で、その語句を辞書に追加する。数9の入力シーケンスを考える。
【数9】
S=cbaabacaccacccacccc
LZ78は、0を空文字列、cを最初の文字として、語句(0,c)を生成する。また、次の2文字によって、2つの新たな語句(0,b)及び(0,a)が生成される。最終的な語句のシーケンスを表3に示す。
【表3】
従って、シーケンスSの最終的な符号化は、表3に示すような「出力語句」の列になる。この例から分かるように、辞書エントリ1,2及び4は、この符号化で全く使用されないので、この辞書の無駄なエントリである。例えば、「ac」についての辞書エントリは再利用されて漸進的に「acc」、「accc」及び「acccc」を生成するのに対して、「ab」についてのエントリは2度と使用されることがないので、無駄である。
【0019】
LZ78方法が抱える1つの問題は、LZ78方法がきわめて積極的で推測的な辞書構築方法をとっているので、有用に用いられない語句を構築してしまうことがしばしばあるということである。そのため、辞書が極めて大きくなってストリームリソースを十分に利用できなくなり、圧縮効率が低下する可能性がある。また、LZ78方法は、辞書が低速度で成長するので、収束速度も遅い。また、LZ78ベースの圧縮プログラムは、非漸近的な統計的符号化方法を用いて圧縮効率及びプログラム速度を向上させているので、オンラインデータすなわち連続データには用いることができない。さらに、もはや使用されることのない語句または辞書語句を忘れさせる(消去する)ための用意もない。連続的で、無限に続く可能性があるストリームデータにおいて、LZ78アルゴリズムで使用されていないシステムリソースを再利用するためには、新たな辞書語句を動的に生成するだけでなく、頻繁に使用されない語句を忘れさせることも重要である。従って、LZ78アルゴリズムは連続的圧縮アルゴリズムではない。
【0020】
第3の種類の圧縮アルゴリズムは、Nevill-Mannning著「Compression and Explanation Using Hierarchical Grammars」,Computer Journal, 40(2):103-116(1997)に記載されたSEQUITURアルゴリズムであり、この文献はここで参照することによりその全体を本明細書に援用する。SEQUITURアルゴリズムは、離散的記号のシーケンスから前後関係のない文法を推論する。この文法階層は、シーケンスの構造を表していて、そのシーケンスの構造の有用な視覚的説明の生成、及び、そのシーケンスの形態的単位の推論に用いることができる。この文法は入力シーケンス全体を完全に表現するので、SEQUITURアルゴリズムもデータ圧縮に用いることができる。
【0021】
SEQUITURは、入力シーケンスに対して2つの制限を課すことにより、機能する。第1の制限は、隣接記号のペアが2回以上現れてはならないことである。第2の制限は、このアルゴリズムによって生成された各ルールが2回以上使用されなければならないことである。SEQUITURは、入力シーケンスを漸進的に検査することによってこれらの制限を適用し、シーケンス内の各位置で両方の制限が満たされていることを保証する。例えば、数10に示す入力シーケンスの場合、
【数10】
S=abcdbcabcd
SEQUITURは、数11の文法を生成する。
【数11】
S=BAB
A=bc
B=aAd
ここで、A及びBは、この文法のルールであり、辞書語句に類似したものである。上記の文法は、2回以上出現する記号対がないので、第1の制限を満たしている。また、AとBが両方ともこの文法中で少なくとも2回使用されているので、第2の制限も満たしている。
【0022】
SEQUITURは、入力シーケンス全体が文法で表現されているので、算術符号化を適用して全文法を符号化することにより、このアルゴリズムを用いて圧縮する。文法のルール(即ち辞書語句))が反復の以前のインスタンスを指すポインタで伝送されるという点は、LZ77で述べた上記の方法に似ている。この文法のルールに初めて遭遇したとき、その内容が送信される。ルールの第2のインスタンスは、そのルールを構築するのに使用されたシーケンスの領域(例えば、そのルールの第1のインスタンスの内容)を指すポインタとして送信される。デコーダ及びエンコーダが互いのルール番号の進み具合を見ることができるという仮定の下で、このルールのその後のインスタンスは、すべてルール番号として送信される。
【0023】
SEQUITUR圧縮方法が抱える1つの問題は、暗示的な漸進ではないことである。文法が最少数の記号で送信されることを保証するため、SEQUITURは、送信前にその文法を完全に構築しなければならない。SEQUITURは、シーケンスSの中の送信位置を余分な記号が送信される確率が低くなる位置に選択することにより、漸進的に見えるようにすることもできる。圧縮シーケンス中の特定位置がそのシーケンスを送信するのに安全な位置であるか否かを判定するためのこのアルゴリズムは、その位置の直前の記号の以前のインスタンスをすべて検査する必要がある。SEQUITURは、入力シーケンスの圧縮を通じてこれらの位置を動的に選択する必要があるので、このアルゴリズムは、著しい量の余分な処理をしてこれらの送信位置を探しつづける。この追加の処理(SEQUITURを漸進的にするために必要な処理)により、圧縮アルゴリズム全体が非線形になり、著しく非効率になる。
【0024】
SEQUITURアルゴリズムが抱えるもう1つの問題は、連続的でないことである。このアルゴリズムは、あまり頻繁にアクセスされないルールや記号を消去しつつ圧縮された出力を漸進的に送信するための手段を何も備えていない。そのため、SEQUITURは、入力データの無限のストリームや極めて大きなストリームに対して適用し、圧縮された出力の連続ストリームを線形時間で生成することはできない。
【0025】
また、SEQUITURアルゴリズムは、可変長ルールの頻繁な作成及び消去を可能にするために複雑なデータ構造を必要とするので、システムリソースの利用という点でも非効率である。さらにこのアルゴリズムは、反復語句内の記号対の各々についてルールの作成及び消去が必要になるので、長い反復を検出するときに計算が不十分である。従って、反復のインスタンスの各々の追加は、複数のルールの作成及び消去の計算オーバヘッドも招く。また、ルールの第2のインスタンスをポインタとして送信するためのSEQUITURの方法は、さらなる処理及びメモリオーバヘッドが必要になる。
【0026】
第4の圧縮アルゴリズムは、Larsson及びMoffat著「Offline Dictionary-Based Compression」, Proceedings Data Compression Conference」,196-305(1999)に記載された再帰対合(Re-Pair)アルゴリズムであり、この論文はここで参照することによりその全体を本明細書に援用する。Re-Pairアルゴリズムは、入力シーケンス全体を再帰的に検査して最も頻繁に発生する記号対を識別することにより、圧縮に最適な辞書の計算を試みる。このアルゴリズムの各ステージでは、最も頻繁に発生する記号対が辞書に対する新たな追加を表す新たな記号に置き換えられる。次に、この修正されたシーケンス全体を再び検査して、現在最も頻繁に発生するペアを見付ける。この処理は、2回以上出現するペアが無くなるまで繰り返される。次いで、結果得られた圧縮シーケンス及び辞書を符号化し、最終的に圧縮された出力を生成する。
【0027】
このアルゴリズムの主な欠点は、基本的に漸進的でなく、連続的でないことである。何らかの出力を生成するまでに、入力シーケンス全体を再帰的に処理する必要がある。著者自身、このアルゴリズムが「オフライン」の技術であると述べている。
【0028】
データ圧縮システム及び方法は、(1)多目的圧縮アルゴリズムであり、(2)無損失圧縮アルゴリズムであり、(3)データの線形増加に対して実行時間の非線形増加が必要なく、(4)データウィンドウサイズに制限がなく、(5)漸進的圧縮アルゴリズムであり、(6)連続的圧縮アルゴリズムであることが必要とされている。
【0029】
発明の概要
本発明は、仮想的な無制限サイズのウィンドウ内の可変長の反復語句を検出及び除去することが可能な効率的圧縮アルゴリズムである。このウィンドウサイズは、利用可能なシステムメモリの量だけにしか制限されず、アルゴリズムの速度には影響を与えない。本発明は、線形実行時間で動作する多目的の無損失圧縮アルゴリズムであり、無制限のウィンドウサイズを利用することができ、言うまでもなく暗示的に漸進的であり、連続入力ストリームに対して連続的に動作させることができる。
【0030】
【発明の実施の形態】
次に、本発明の好ましい実施形態を図面を参照して説明する。図面において、似たような符号は、全く同じ要素または機能的に類似した要素を指している。また、図面において、各符号の一番左の桁は、その符号が最初に使用された図面に対応している。
【0031】
図1は、本発明の一実施形態が動作するコンピュータシステムを示す図である。コンピュータシステム100は、第1のシステム102Aおよび第2のシステム102Bを含む。各システムは、スタンドアロンのコンピュータでもよいし、ソフトウェアプロセスでもよい。各システムは、従来のプロセッサ110、記憶装置112、入出力装置114、及び、オペレーティングシステム116を含む。また、各システムは、符号化・カプセル化(EE)ユニット106、及び、復号・分離(DD)ユニット108をさらに含む。EEユニット及びDDユニットは、プロセッサ上で動作するソフトウェアとして実現することもできるし、専用に設計されたハードウェア(この場合、プロセッサは不要である)として実現することもできる。2つのシステム102A及び102Bは、何らかの物理ネットワークリンクまたは論理ネットワークリンクを介して接続される。本発明は2つのシステムのうちのどちらでも完全に動作し、図1に示した実施形態は例示的なものであって、本発明の範囲を制限する意図はないものと考える。EEユニット106及びDDユニット108の動作については、以下で詳しく説明する。例えば、他の実施形態では、EEユニット106及びDDユニット108は、特定用途用集積回路(ASIC)の一部である場合がある。
【0032】
EEユニット106は、本発明の圧縮方法を実施するものである。EEユニット106は、例えばコンピュータソフトウェアプログラム、ハードウェア及びファームウェア、又はこれらの組み合わせのうちのいずれとして実施することもできる。一実施形態では、本発明の圧縮方法は、EEユニット106の従来の記憶モジュールに格納されたソフトウェアとして実現され、プロセッサ110によって実行される。本発明の圧縮方法は、線形時間の完全に漸進的な連続的データ圧縮アルゴリズムである。参照を容易にするため、本明細書では、このアルゴリズムを「IZ」と呼ぶ。本発明の伸長態様は、DDユニット108で実施され、例えばコンピュータソフトウェアプログラム、ハードウェア及びファームウェア、又はこれらの組み合わせのうちのいずれとして実施することもできる。
【0033】
本発明には、同期して動作する3つの構成要素が含まれる。図2は、本発明の一実施形態による符号化・カプセル化(EE)ユニット106及び復号・分離(DD)ユニット108の構成要素を示す図である。第1の構成要素は検出器構成要素202であり、入力ストリーム中のどこかにある反復した語句/用語を線形時間で検出する。本発明の目的について、「語句」と「記号」は交換可能に用いられる。「語句」または「データ語句」には、固定数の連続したデータ語が含まれる。データ語は、データ記号及び/又はデータ語句識別子である。検出器構成要素202は、仮想的な無制限のウィンドウサイズを用いて反復した語句を識別及び除去することにより、入力ストリームを漸進的に圧縮する。これらの処理は、識別ユニット、圧縮ユニット及びライブラリ構築ユニット(ハッシュ構築ユニット)を検出器構成要素の一部として用いることにより行なうことができる。これらの要素の動作については、図3及び図4を参照して以下で詳しく説明する。第2の構成要素は伝送構成要素204であり、圧縮シーケンス及びそれに関連する辞書語句を明示的に漸進的な方法で送信する。また、伝送構成要素204は、圧縮アルゴリズムと伸長アルゴリズムとが常に完全に同期されていることも保証する。第3の構成要素は消去構成要素206であり、システムリソースを開放するため、IZアルゴリズムがあまり頻繁に使用しない語句及び記号を効率的に「忘れる」させる。従って、消去構成要素206は、IZが入力データの無限のストリームに対して連続的に動作できるようにする。DDユニット108は、以下で説明する伸長ユニットを含む。
【0034】
検出器構成要素202、伝送構成要素204、及び、消去構成要素206は、様々な方法で実現することができる。検出器構成要素の一実施形態を図3に示す。
【0035】
語句検出アルゴリズムは、以下のステップを用いて入力シーケンスSを圧縮シーケンスS’に漸進的に変換する。
【0036】
反復記号対の検出は、検出器構成要素202で観測された一意の記号対をすべてハッシュテーブル(例えばライブラリ)に記録することにより、実施することができる。各ハッシュテーブルエントリは、一意の記号対の位置を指すポインタから成る。記号対が一回しか出現しなかった場合、その記号対のハッシュテーブルエントリは、S’の最初の記号の位置を指す。記号対が2回以上出現した場合、すなわち辞書語句で表現されている場合、その記号対のハッシュテーブルは対応する辞書語句を指す。すべての反復記号対を検出するため、このアルゴリズムは、S’に記号が追加または削除されるたびにハッシュテーブルが適当に更新されることを保証しなければならない。例えば、図3に示すアルゴリズムのステップ314では、テーブルに新たなエントリを追加する。同様に、ステップ314、318及び332では、ハッシュテーブルから1以上のエントリを消去する。
【0037】
次に、図4の例を参照して、図3のフロー図について説明する。
【0038】
図4の例は、入力シーケンスが「abcdcdabcd」である。ステップ302で「Y」を次の入力記号「a」にセットし、ステップ304でYをS’(前もって空に設定されている)に追加する。次いでXを入力シーケンス内の「a」の前の記号(空)にセットする。ステップ308でXYの組み合わせはまだ出現していないので、ステップ309でXYをハッシュテーブルに追加し、ステップ302に戻って処理を繰り返す。図4の1行目は、この時点での例の状態を示している。
【0039】
次に、ステップ302でYを次の記号「b」にセットし、ステップ304でYをS’に追加し、ステップ306でXをYの直前の記号「a」にセットする。ステップ308でXYの組み合わせ(ab)がまだ出現していないので、ステップ309でXYをハッシュテーブルに追加し、ステップ302に戻って処理を繰り返す。図4の2行目は、この時点での例の状態を示している。
【0040】
次に、ステップ302でYを次の記号「c」にセットし、ステップ304でYをS’に追加し、ステップ306でXをYの直前の記号「b」にセットする。ステップ308でXYの組み合わせ(bc)がまだ出現していないので、ステップ309でXYをハッシュテーブルに追加し、ステップ302に戻って処理を繰り返す。図4の3行目は、この時点での例の状態を示している。
【0041】
次に、ステップ302でYを次の記号「d」にセットし、ステップ304でYをS’に追加し、ステップ306でXをYの直前の記号「c」にセットする。ステップ308でXYの組み合わせ(cd)がまだ出現していないので、ステップ309でXYをハッシュテーブルに追加し、ステップ302に戻って処理を繰り返す。図4の4行目は、この時点での例の状態を示している。
【0042】
次に、ステップ302でYを次の記号「c」にセットし、ステップ304でYをS’に追加し、ステップ306でXをYの直前の記号「d」にセットする。ステップ308でXYの組み合わせ(dc)がまだ出現していないので、ステップ309でXYをハッシュテーブルに追加し、ステップ302に戻って処理を繰り返す。図4の5行目は、この時点での例の状態を示している。
【0043】
次に、ステップ302でYを次の記号「d」にセットし、ステップ304でYをS’に追加し、ステップ306でXをYの直前の記号「c」にセットする。XYの組み合わせ(cd)が以前に出現しているので、処理は継続される。ステップ310で、XYが以前出現したのはシーケンスS’の中であって辞書語句の右辺ではないので、これはXYが新たに作成して辞書に追加しなければならない語句であることを意味している。従って、ステップ312で新たな辞書語句P1を作成してそれをXYにセットすることにより、処理は継続される。この例の場合、P1を「cd」にセットする。次にステップ314で、S’中のXYの前のインスタンスをP1で置き換える。ステップ314の置き換えにより、ハッシュテーブルから2つのエントリが取り除かれ、新たな2つのエントリがハッシュテーブルに追加されることに注意して欲しい。これらのハッシュテーブルの更新には、Xの直前の記号(Xpと呼ぶ)とYの直後の記号(Ynと呼ぶ)が必要である。S’からXYが取り除かれるので、記号対XpX及びYYnもハッシュテーブルから取り除かなければならない。XYがPiで置き換えられるので、記号対XpPi及びPiYnもハッシュテーブルに追加しなければならない。この例では、ハッシュテーブルから「bc」及び「dc」が取り除かれ、「bP1」及び「P1c」がハッシュテーブルに追加される。次に、ステップ316でS’の最後からYを取り除き、ステップ318でS’の最後からXを取り除き、その結果、ハッシュテーブルから記号対(Xの直前の記号及びXに対応する)が取り除かれる。この例では、ハッシュテーブルから「P1c」が取り除かれることになる。次に、YをP1にセットし、処理はステップ304に続く。この時点での例の状態は、S’=abP1で、Y=P1である。
【0044】
次に、ステップ304でYをS’追加し(S’=abP1P1になる)、ステップ306でXをS’中のYの直前の記号(P1)にセットする。ステップ308でシーケンス中にXY(P1P1)がまだ出現していないので、ステップ309でXYをハッシュテーブルに追加し、ステップ302から処理を繰り返す。図4の6行目は、この時点での例の状態をS’=abP1P1で示している。
【0045】
次に、ステップ302でYを次の記号「a」にセットし、ステップ304でYをS’に追加し、ステップ306でXをYの直前の記号(P1)にセットする。ステップ308でXYの組み合わせ(P1a)がまだ出現していないので、ステップ309でXYをハッシュテーブルに追加し、ステップ302から処理を繰り返す。図4の7行目は、この時点での例の状態を示している。
【0046】
次に、ステップ302でYを次の記号「b」にセットし、ステップ304でYをS’に追加し、ステップ306でXをYの直前の記号(「a」)にセットする。シーケンス中にXYの組み合わせ(ab)が既に出現しているので、処理は継続される。ステップ310で、XYが以前出現したのはシーケンスS’の中であって辞書語句の右辺ではないので、これはXYが新たに作成して辞書に追加しなければならない語句であることを意味している。従って、ステップ312で新たな辞書P2を作成し、それをXYにセットすることにより、処理は継続する。この例の場合、P2を「ab」にセットする。次にステップ314で、S’中のXYの以前のインスタンスをP2で置き換える。前と同様に、このステップの結果、ハッシュテーブルから2つの記号対が取り除かれ、2つの新たな記号対が追加される。次にステップ316でS’の最後からYを取り除き、ステップ318でS’の最後からXを取り除く(その結果ハッシュテーブルから1つの記号対が除去される)。次にYをP2にセットし、処理はステップ304に続く。この時点での例の状態は、S’=P2P1P1で、Y=Pである。
【0047】
次に、ステップ304でYをS’に追加し(S’=P2P1P1P2になる)、ステップ306でXをS’中のYの直前の記号または語句(この場合実際にはデータ語句識別子「P1」)にセットする。ステップ308でXY(P1P2)がシーケンス中にまだ発生していないので、ステップ309でXYをハッシュテーブルに追加し、ステップ302から処理を繰り返す。図4の8行目は、この時点での例の状態をS’=P2P1P1P2で示している。
【0048】
次に、ステップ302でYを次の記号「c」にセットし、ステップ304でYをS’に追加し、ステップ306でXをYの直前の記号(P2)にセットする。ステップ308でXYの組み合わせ(P2c)がまだ出現していないので、XYをハッシュテーブルに追加し、ステップ302から処理を繰り返す。図4の9行目は、この時点での例の状態を示している。
【0049】
次に、ステップ302でYを次の記号「d」にセットし、ステップ304でYをS’に追加し、ステップ306でXをYの直前の記号(「c」)にセットする。シーケンス中にXYの組み合わせ(cd)が既に出現しているので、処理は継続する。ステップ310でXYが辞書語句の右辺であるから、ステップ330でS’の最後からYを取り除き、ステップ332でS’の最後からXを取り除くことにより、処理が継続する。ステップ332でS’の最後からXを取り除いた結果、ハッシュテーブルから記号対(Xの直前の記号及び記号Xに対応する)が取り除かれる。次に、ステップ334でYを辞書語句XYにセットする。この例では、YをP1にセットする。処理はステップ304に続く。この時点での例の状態は、S’=P2P1P1P2で、Y=P1である。
【0050】
次に、ステップ304でYをS’に追加し(S’=P2P1P1P2P1になる)、ステップ306でXをS’中のYの直前の記号(「P2」)にセットする。シーケンス中にXYの組み合わせ(P2P1)が既に出現しているので処理は継続し、ステップ310でXYが辞書語句の右辺ではないので、ステップ312で新たな辞書語句P3を作成してそれをXYにセットすることにより、処理は継続する。この例では、P3を「P2P1」にセットする。次にステップ314で、S’中のXYの以前のインスタンスをP3で置き換える。次にステップ316でS’の最後からYを取り除き、ステップ318でS’の最後からXを取り除く。次にYをP3にセットし、処理はステップ304に続く。この時点での例の状態は、S’=P3P1で、Y=P3である。
【0051】
次に、ステップ304でYをS’に追加し(S’=P3P1P3になる)、ステップ306でXをS’中のYの直前の記号(「P1」)にセットする。ステップ308でシーケンス中にXY(P1P3)がまだ出現していないので、ステップ309でXYをハッシュテーブルに追加し、ステップ302から処理を繰り返す。図4の10行目は、この時点での例の状態をS’=P3P1P3で示している。この処理は、任意数の入力について続けることができる。
【0052】
本発明は、入力ストリーム中のどこにある反復でも検出することができる。本発明は、明示的なサーチウィンドウを必要としないので、反復がどんなに離れて発生してもそれらを検出することができる。本アルゴリズムを連続的にするため、下記のようにウィンドウ化を適用する場合もあるが、このウィンドウはシステムメモリのサイズに基いているので、アルゴリズムの速度に悪影響を与えることはない。上記のアルゴリズムは、時間及び空間について線形なものとして例示してきた。線形性の検査は、長さnのシーケンスを処理するために必要な処理の総数の計算に基く。この数は、O(n)として示している(例えば、nに比例する数による境界である)。従って本発明は、仮想的な無制限のウィンドウにわたる可変サイズの反復を線形時間で検出することができる。また、フレーズ内の各記号対についてIZがルールの不要な作成及び消去を何も必要としないので、SEQUITUR方法などの上記の他の方法に比べて反復した語句の検出も効率的である。
【0053】
伝送構成要素204は、圧縮されたシーケンス(S’)とともに語句の辞書(Pi)も送信することにより、正しい伸長を保証する。従って、伝送構成要素は、圧縮ユニットが伸長ユニットに存在しない辞書語句を絶対に送信しないことを保証し、それらが伸長ユニットによって参照されないことを保証しなければならない。本アルゴリズムが完全に漸進的であることを保証するため、IZは、図5に示す下記の処理を用いてS’及び語句辞書を送信する。
【0054】
図5は、本発明の一実施形態による伝送手順を示すフロー図である。ステップ502で、ポインタ(T)は、圧縮シーケンス(S’)中の送信の完了した最後の記号を指し示すために用いられる。新たな語句を辞書に追加(例えば図3のステップ312)するのに先立って、S’のTから最後までの全ての記号を送信する。次にステップ506で、反復語句の両方のインスタンスを、S’の最後のインスタンスを含む新たに作成した語句で置き換える(例えばステップ312〜320)。次にステップ508で、S’の最後に追加された新たな語句を指すようにポインタ(T)をセットする。
【0055】
図5に示した実施形態の効果は、出現した反復語句の最初の2回は変更されることなく送信されることである(本発明の代替の実施形態では他の変形がなされる場合もあり、そのうちのいくつかは以下で説明する)。各反復が入れ子になった記号対から構成されるので、反復語句の2番目のインスタンスは、その内容(2つの記号しか含まれない)を直接送信することにより、処理オーバヘッドの追加を要するポインタを用いた送信よりも効率的に送信される。従って、伸長アルゴリズムは、反復語句の最初の2つのインスタンスを、圧縮アルゴリズムと全く同じ形態で受信する。これにより、伸長アルゴリズムは、圧縮アルゴリズムで生成された辞書語句と全く同じ辞書語句を生成することが可能になる。伸長アルゴリズムが圧縮アルゴリズムと同じ語句番号付け方法を使用するので、圧縮アルゴリズムは、その語句のその後のインスタンスをすべて一つの語句番号として送信することが可能になる。
【0056】
DD108は伸長ユニット208を含み、伸長ユニット208は伸長アルゴリズムを例えばコンピュータプログラム、ファームウェア、またはハードウェアなどの形態で伸長構成要素210に含む。図6は、本発明の一実施形態による伸長アルゴリズムを示すフロー図である。伸長アルゴリズムは、圧縮アルゴリズムと完全に同期していることを確認しながら、元の入力ストリームを生成する。
【0057】
ステップ602で、圧縮記号の各々を受信し、ステップ604で、伸長ユニット208はその記号が辞書語句番号、例えばPiに対する参照であるか否かを判定する。その記号がそのような参照であった場合、伸長ユニット208はステップ606でその語句番号の内容を取り出して元の入力シーケンスを生成する。次いで伸長ユニットは、ステップ608で最後の送信ステップを除くすべての圧縮ステップを通してその語句の内容を渡すことにより、圧縮アルゴリズムと伸長アルゴリズムを同期させる。
【0058】
その記号が辞書語句番号に対する参照ではなかった場合、伸長アルゴリズム208はすべての圧縮ステップを通して(最後の送信ステップを除く)その記号を渡すことにより、伸長アルゴリズムと圧縮アルゴリズムが同期することを保証する。ステップ612で、これらの処理は、受信したすべての記号について繰り返される。
【0059】
本発明の一実施形態は語句を生成するために必要な内容をその語句を生成する直前に送信するので、伸長アルゴリズムが語句を生成し終わる前にその語句に対する参照を受信することは絶対にない。従って、圧縮アルゴリズムと伸長アルゴリズムとが同じ番号付け方法を保持し、それぞれの辞書が同じ情報を有していることが暗示的に保証される。この暗示的辞書同期方法は、圧縮アルゴリズムによって送信される圧縮データが、送信されたときと全く順番で伸長ユニットに受信されることを必要とする。例えば、伸長ユニットによって受信される圧縮データの一部が順番を誤ったり、圧縮データの一部が失われたりした場合、伸長アルゴリズムは圧縮アルゴリズムとは異なる辞書を生成してしまう場合があり、伸長を誤る場合がある。従って、ネットワーク条件として、圧縮ユニットと伸長ユニットとの間で伝送される圧縮データを信頼性の高い通信路で伝送する必要がある。
【0060】
IZアルゴリズムは、送信点が圧縮アルゴリズムによって自動的に定義され、特別なアルゴリズムの選択を必要としないので、暗示的に漸進的である。従って、送信点を計算したり、送信のためのポインタを計算したり(LZ77やSEQUITURの場合のように)するための計算オーバヘッドが追加されることもない。
【0061】
図7は、本発明の一実施形態による伝送方法の一例を示す図である。
【0062】
図7において、データのシーケンスは「abababcabc」である。図4の例とは異なることに注意して欲しい。ステップ502で、まずポインタTを最初に受信したデータの位置の直前の位置にセットする。図3を参照して上で説明した圧縮方法をこの例に用いる。この圧縮方法を用いると、最初の新たな辞書語句は4行目に追加される。しかしながら、伝送構成要素204は、新たな辞書語句を追加する前に、S’のTから最後までにあるすべての記号を送信する。この例の場合、その送信には図7の4行目に示すように記号「abab」が含まれる。次にステップ506で、図3で説明した方法を用いて反復語句のすべてのインスタンスを置き換える。次に、ポインタ(T)を今追加したばかりの新たな語句にセットする。この例の場合、Tを4行目のP1の2番目の出現位置にセットする。
【0063】
記号は受信され続け(即ち、送信されずに)、図7の10行目にあるシーケンスが受信されるまで蓄積される。この時点で第2の語句を辞書に追加する(P2=P1c)。第2の語句を追加する前に、ステップ504で、伝送構成要素204はS’中のポインタ(T)からS’の最後までの記号をすべて送信する。この例の場合、記号「P1cP1c」を送信する。ステップ506で、図3で説明した方法に従ってS’中の新たな語句のインスタンスを置き換え、ステップ508でポインタ(T)をその新たに追加した語句にセットする。この例の場合、TはS’中の第2のP2にセットされ、これが図7の10行目に示されている。処理は任意量のデータにつて続けられる。
【0064】
上記の伝送手順は、圧縮辞書と伸長辞書とを暗示的に同期させ、伸長ユニットが辞書語句を受信したときに、それを常に逆参照できるようにしている。本発明の他の実施形態では、明示的辞書伝送手順を用いることで、すべての語句の伸長可能性を保証している。この代替の伝送手順は、個別のパラレル通信路伝送で語句を伸長アルゴリズムに送信することに基く。圧縮アルゴリズムは、新たな辞書語句を見つけるたびに、その辞書語句がまだ伸長辞書にインストールされていないことを示す「インストール=0」というフラグをその辞書語句にタグ付けする。この新たな語句番号とその内容は、信頼性の高い通信路を介して伸長アルゴリズムに送信される。伸長アルゴリズムは受信した各ルールについて受領応答を返送する。圧縮アルゴリズムは、ある語句について受領応答を受信すると、その語句に「インストール=1」というフラグをセットして、その語句が伸長辞書に受信されインストールされていることを示す。圧縮アルゴリズムは、何らかの語句を送信する前に、この「インストール」フラグをチェックする。インストールフラグが0、即ち偽であった場合、その語句の内容は送信されない。ある語句の内容を送信する場合は、それらの内容に入れ子になったあらゆる語句についてインストールフラグを再帰的にチェックする必要があることに注意して欲しい。インストールフラグが1、即ち真であった場合、その語句そのものが送信される。この代替の明示的辞書伝送処理を用いることにより、圧縮アルゴリズムは2つの辞書を同期させることができ、伸長アルゴリズムが逆参照できない語句を受信することがなくなる。また、この方法は、伸長アルゴリズムの構造も大幅に変更する。この方法では、辞書語句が伸長アルゴリズムへ明示的に送信されるので、伸長アルゴリズムはデータストリームの中からそれらの語句を見つけ出す必要がない。従って伸長アルゴリズムは、受信したデータを逆参照(伸長)するだけでよく、圧縮アルゴリズムの語句検出器構成要素や消去構成要素(前述の暗示的辞書同期実施形態で必要だったような)を通して処理する必要がない。また、この明示的辞書伝送モデル辞書同期は、信頼性の高い通信路(即ち、すべてのデータパケットの配送順序が保証されるような通信路)を介して圧縮データを送信する必要もない。辞書を暗示的に同期させることに圧縮データを利用しないので、圧縮ユニットと伸長ユニットとの間のデータの損失やデータの配送順序誤りによって辞書の不一致が生じることがなく、伸長が不正確になることはない。
【0065】
上記の明示的辞書同期方法は、様々な方法でさらに最適化することができる。例えば、圧縮アルゴリズムによって送信される語句として「N」回より多く遭遇した語句しか選択されないようにすることもできる。N=1にするとすべての語句が送信され、最大の圧縮及び最速の収束が得られる。しかし、同時に、2つの辞書を同期させるために必要となる帯域外辞書伝送トラフィックの追加も最大になる。Nを減少させるのにつれて圧縮及び収束が減少するが、余分な帯域外辞書同期トラフィックも減少する。従って、遭遇したトラフィックの種類に基いて、総合出力トラフィックを最小にするように、動的にNを選択することができる。また、個々の辞書語句更新の伝送に関する何らかのオーバヘッドがある場合、複数の語句をバッファリングし、まとめて1つのパッケージで送信することもできる。
【0066】
上記の明示的辞書伝送モデルは、圧縮アルゴリズムによって伝送された辞書更新の各々についての、伸長アルゴリズムからの受領応答の要件を省略することにより、最適化することもできる。上記の実施形態では、圧縮ユニットは、その語句に関する「インストール」フラグを0(即ち、偽)から1(即ち、真)に変更するため、即ち、語句をその後の圧縮に利用するため、伸長ユニットから「語句受信」の受領応答を受信する必要がある。この処理は、圧縮ユニットによって圧縮データとして送信されたすべての語句参照が、伸長ユニットによって逆参照してその語句の元の内容を生成することができるものであることを保証している。この明示的辞書伝送モデルの代替の実施形態として、圧縮アルゴリズムは、新たに送信された語句についてのインストールフラグを、動的調節された所定時間後に0から1へ自動的に変更することもできる。圧縮ユニットから語句を送信する場合(信頼性の高い個別の辞書伝送路を介して)、その語句に、送信時刻を示すタイムスタンプ(t0)をローカルに付加する。同時に、送信した語句についての「インストール」フラグを0に初期化する。所定時間(T)を経過した後、その語句の「インストール」フラグを0から1へ変更し、圧縮アルゴリズムがその語句をその後利用できるようにする。このモードの辞書伝送は、圧縮ユニットから伸長ユニットへ時刻t0で語句更新が送信された場合、t0+Tより後は、その語句を用いて圧縮ユニットから送信されるいかなる圧縮データも、語句更新後に伸長ユニットに到達するであろうことを推測する。この時間Tは、圧縮ユニットと伸長ユニットとの間のデータ伝送の速度及び待ち時間のばらつきを考慮して調節することができる。この推測的辞書伝送モデルによると、圧縮ユニットは、伸長ユニットからの受領応答を待つ必要がなく、語句更新を送信してからT秒後には語句の利用を開始できるので、圧縮レベルが向上する。従って、語句がより迅速に利用できるようになり、高い圧縮率が得られる。
【0067】
上記の推測的辞書伝送モデルは圧縮ユニットと伸長ユニットとの間の伝送時間のばらつきの推定に基づいているので、伸長ユニットは、圧縮データ中の特定の語句参照を、個別の辞書同期通信路を介したその語句の内容の受信が完了する前に、受信することができる。これを行なう場合、伸長ユニットは、辞書更新通信路を介して語句の内容を受信する前にデータ通信路を介して語句参照を受信したということを示す信号を、圧縮ユニットに送信する。圧縮ユニットは、伸長ユニットからのこれらのエラー信号を用いて、新たな語句を送信する時とその語句のインストールフラグを1に変更する時との間の時間を適当に調節する。
【0068】
上記の推測的辞書伝送モデルの他の構成要素は、伸長アルゴリズムが正確に逆参照することのできない語句参照を受信した場合にそれを検出できなければならないということである。これは様々な方法で達成することができる。推測的辞書伝送モデルの一実施形態は、圧縮ユニットと伸長ユニットとの両方に送信及びインストールされた語句の総数に関するカウンタを保持する。すべての語句が正しい順番で送受信されるので(信頼性の高い通信路を介して送信されるため)、これらのカウンタを用いることにより、伸長ユニットが辞書同期通信路を介して語句の内容を受信し終わる前にデータ通信路を介して語句参照を受信した場合を検出することができる。圧縮ユニットの各語句には、インストールカウンタの現在値に基いて、「ローカルインストールカウンタ」が付けられる。圧縮ユニットから送信される圧縮データの各パケットには、その圧縮パケットで参照されるすべての語句についての「ローカルインストールカウンタ」の最大値が付けられる。
【0069】
この「最大インストールカウンタ」は、圧縮パケットで用いられる最も最近「インストール」された語句を示している。伸長ユニットは、圧縮パケットを受信すると、「最大インストールカウンタ」が現在インストールされているカウンタよりも大きいか否かを判定することにより、そのパケットの内容に逆参照不能な語句が含まれる場合を判定することができる。その場合、圧縮パケット中には、伸長ユニットがまだ更新内容を受信していない語句が少なくとも1つ存在する。次いで、このイベントを用いて上記のフィードバック手段を始動させ、エラー信号を圧縮ユニットに送信することができる。これらのカウンタは、送信およびインストールされた語句の数をカウントするのに用いることができ、最終的にはそれらの最大値に達し、循環してゼロに戻る。この場合は、現在インストールされているカウンタを越えた何らかの「ローカルインストールカウンタ」が何らかの初期値(例えば0)にリセットされることを保証することにより、扱うことができる。また、このシステムは、送信カウンタがその最大値に達した場合も保証することができ、圧縮ユニットは、伸長ユニットによって最大カウンタ値に対応する語句の受領応答が返されるまで新たな語句を何も送信しない。従って、伸長ユニットは、最大受信カウンタに対応する語句更新以外は、受信した語句更新について受領応答を送信する必要がない。
【0070】
上記のように、大きなシステムリソースを必要とすることなく、終わりのないデータストリームに対して連続的に圧縮方法を実施するため、圧縮システム及び方法は、辞書のサイズを低減するために、語句及び記号を効率的かつ効果的に消去しなければならない。本発明はこの目標を達成している。すなわち、語句辞書だけでなく圧縮シーケンスS’もシステムリソース(システムメモリなど)を用いて自分の状態を保持しているので、本発明が無限のデータストリームに対して連続的に実行可能であることを保証するためには、辞書から古い語句を効率的に消去する手段を設けるだけでなく、圧縮シーケンスS’の最も古い領域を効率的に消去するための手段も設ける必要がある。これらの「忘却」(消去)措置が利用できなければ、アルゴリズムは最終的にシステムリソースを使い果たし、終了しなければならなくなる。
【0071】
語句が階層的であるので(即ち、語句は入力語(記号)を含む場合もあるし、他の語句に対する参照(データ語句識別子)を含む場合もある)、ある語句が何らかの上位語句によって参照されているか否かをチェックすることなく、その語句を消去することはできない。例えば、PiがPjによって参照されている場合にPiを消去すると、以後Pjの使用はすべてエラーになる。したがって、いずれの語句が消去できるかを判定するだけでなく、それらを参照している語句もすべて消去されることを保証しなければならない。本発明は、これらの問題を両方とも、すべての語句をLRU(Least Recently Used)データ構造で表現することにより、解決している。本発明の一実施形態では、LRUがリンクされたリストとして実施されるので、圧縮中にある語句が使用されるたびに、その語句がリストの先頭に効率的に移動される。従って、語句「Pi=ab」がLRUの中程にあり、記号abが入力ストリームに現れた場合、Piはリスト内の現在位置から取り除かれ、リストの現在の前方(即ち、先頭)に付加される。作成された新たな語句もリストの現在の前(即ち、先頭)に配置される。アルゴリズムのいかなる時点でも、リストの最後(すなわち末尾)にある語句は、最も古くに使用された語句である。システムリソースを開放して再利用するために語句を消去する必要がある場合、この最も古くに使用された語句を一番最初に消去しなければならない。
【0072】
LRUを用いると消去すべき語句を識別することができるが、LRUはその語句を参照している上位語句、即ち消去する必要のある上位語句を示していない。本発明は、各語句にその語句を参照した最後の時を常に追跡する「親ポインタ」を保持させることにより、この問題を解決している。例えば、語句PiがPjによって最後に参照された語句であり、Pjが圧縮文字列S’によって最後に参照された語句である場合、PiはPjを指す親ポインタを含み、PjはS’内で使用されている位置を指す親ポインタを含む。図8a及び図8bは、本発明の一実施形態による消去方法の例におけるLRU及び親ポインタを示す図である。
【0073】
図8aでは、語句LRU及び親ポインタが入力記号「ab」の到着直後に示されている。
【0074】
図8bでは、語句LRU及び親ポインタが入力記号「c」の到着直後に示されている。
【0075】
図8に示すデータ構造により、本アルゴリズムは、いずれの語句が他の上位語句によって参照されているかを正確に判定することが可能になっている。従って、語句の消去は、図9に従って実施することができる。図9は、本発明の一実施形態による消去方法を示すフロー図である。
【0076】
図9に示す方法を用い、ステップ902でXをLRUの末尾の語句にセットする。次に、ステップ904でYをXの親ポインタにセットする。ステップ906でYが図8aのように語句を指している場合、ステップ908でそのLRU内の位置Xから位置Yまで(Xは含むがYは含まない)の語句をすべて消去し、ステップ910でXをYにセットし、処理はステップ904で繰り返される。ステップ906でYが記号を指している場合、ステップ919で消去ユニット208がXを消去し、ステップ920でS’の末尾からYまでの記号をすべて消去する。
【0077】
このアルゴリズムは、何らかの語句を消去した場合、語句辞書及びS’内のその語句に対する参照をすべて消去することも再帰的に保証する。また、このアルゴリズムは、圧縮シーケンスS’からの記号の消去も行なう。従って、この方法によると、頻繁にアクセスされない語句に用いられるシステムリソースだけでなく、S’内の古い記号に用いられるシステムリソースも再利用することができる。さらにリソースを開放する必要がある場合、S’の末尾にある記号も、上記の語句消去アルゴリズムを適用することなく消去することができる。これは、S’の末尾から必要な数の記号を単に取り除くことによって達成することができる(それらの記号の送信が完了している限りは)。消去した記号が語句に対する参照であった場合、その語句の親ポインタがS’内の消去された符号の位置を指している場合をチェックする。その場合、その親ポインタを、S’内を指している記号の消去が完了したことを示すヌル値にセットする。あるいは、その語句及びその下位(即ち、それを指す他の語句)を消去することもできる。
【0078】
上記の語句及び記号消去アルゴリズムを用いると、本発明のシステム及び方法で用いられるシステムメモリの量に固定の限界を設定することができる。これらの消去アルゴリズムはいずれも計算オーバヘッドを最小限にし、IZアルゴリズムの線形性に悪影響を与えることがない。無限の入力ストリームを処理する際に、連続動作しているIZ処理は、消去すべき語句及び記号を動的に選択することにより、予め設定された限界または変動的限界を超えないことを保証する。
【0079】
上記の本発明の実施形態の場合、2回反復された記号対の各々について新たな語句が辞書に作成される。これは、記号対が少なくともk回(k=3,4,5,等)反復された場合にしか新たな辞書語句が作成されないように変更することもできる。この変更は、辞書の語句数を削減し、圧縮効率を向上または低減させる。
【0080】
本発明によって送信されるデータは、算術符号化等の漸進的符号化方法を用いて統計的に符号化することもできる。統計的符号化によるさらなる圧縮は大きな反復語句を取り除くことによって得られる圧縮に比べて限界に近いので、このステップは不要であることが多い。例えば、IZは、長い距離を隔てた大きな反復を1つの語句番号に置き換えることができるので、反復語句の検出及び除去により高度の圧縮を得ることができる。このような場合、圧縮シーケンスを圧縮してもさらなる圧縮はほとんど得られない。従って、圧縮効率を大きく低下させることなく、統計的符号化及びそれに関連する計算オーバヘッドを回避することができる。これは、比較的小さなウィンドウ内の反復しか検出せず、圧縮の大部分を統計的符号化ステップによって得ている他の辞書ベースの方法とは、対照的である。これらの他の圧縮方法は、出力が統計的に符号化されなかった場合、圧縮効率が大幅に低下してしまう。
【0081】
本発明によって生成された圧縮データを送信前にデータグラムにパッケージ化する場合、他の漸進的または非漸進的な統計的符号化方法すなわち圧縮方法(ハフマン符号化等)を適用することにより、それらのデータグラムをさらに処理することができる。これは、出力に対する事後処理ステップであるから、本発明の漸進的性質には影響を与えない。
【0082】
本発明は、圧縮すべき通信路の各々についての2つの通信モジュールから論理的に構成される。圧縮モジュールは通信路の発信元でデータを圧縮し、伸長モジュールは通信路の宛先でデータを圧縮する。1つの発信元が複数の宛先と通信している場合、本発明は、各宛先について1つ個別の圧縮モジュールが存在するように、スケーリング及び複製することができる。これらの圧縮モジュールは、すべて同じ圧縮ユニット即ち装置に存在してもよい。同様に、複数の発信元が1つの宛先と通信している場合、本発明は、各発信元について1つ個別の伸長モジュールが存在するように、スケーリング及び複製することができる。同様に、これらの伸長モジュールは、すべて同じ伸長ユニット即ち装置に存在してもよい。さらに、複数の圧縮及び伸長モジュールを同じユニットまたは装置に存在させ、結合された圧縮・伸長ユニットにすることもできる。
【0083】
本発明の現在の実施形態は、各圧縮及び伸長モジュールについて個別の辞書を利用している。本発明の他の実施形態は、複数の圧縮モジュール間で同じ発信元に共存する共有辞書を利用している。共有辞書実施形態の代替は、上記の明示的辞書同期方法を用いて、共有圧縮辞書が伸長辞書の各々に同期することを保証する。圧縮ユニットにある共有辞書は、1つの共有データ構造を作成して圧縮アルゴリズムが学習した語句の全てを記憶することにより、実施することができる。また、各語句が共有グローバルバージョン番号を保持し、このバージョン番号はその語句の内容が消去されたり新たに学習した語句で置き換えられたりするたびにインクリメントされる。従って、この共有辞書実施形態では、すべての圧縮ユニットの検出器構成要素及び消去構成要素を共有することができる。各圧縮ユニットは、個別のローカル語句バージョン番号及びステータスフラグを保持する個別の送信ユニットを有する。新たな語句参照を検出器構成要素から送信構成要素に渡して伸長ユニットへ送信する場合、共有グローバルバージョン番号を伝送構成要素固有のローカルバージョン番号と比較する。2つの番号が同じであった場合、伝送構成要素は、語句に関連するローカルステータスフラグをチェックして、その語句の送信及びインストールが完了しているか否かを判定する。番号が異なる場合、伝送構成要素は、その語句が共有検出器構成要素によって作成された新たな語句であることを認識する。この場合、伝送構成要素はステータスフラグをリセットしてその語句がまだ送信されていないことを示し、その語句を上記の明示的辞書伝送プロトコルに基いて処理する。この共有辞書伝送実施形態によると、同じ装置上に共存するすべての圧縮ユニットが1つの語句階層及び記号データ構造を共有するので、システムメモリリソースの利用がより効率的になる。すべての語句の内容は共有データ構造だけにしか記憶されない。装置に追加される圧縮ユニットの各々は事実上、各語句についてのローカルバージョン番号及びステータスを示す追加の語句テーブルだけしか必要としない。
【0084】
各入力記号に用いられるワードサイズは可変である。本発明は1、2、及び4バイトのワードサイズで実施されており、異なる結果を生成する。ワードサイズは4バイトより大きくすることも可能である。アルゴリズムの速度は処理する記号の数に依存するので、ワードサイズを大きくするとスループットが大きくなる。各記号が4バイトに対応する場合(即ち、ワードサイズ=4バイトの場合)、アルゴリズムは、各記号が1バイトに対応している場合の約4倍の量のデータを任意の時間で処理することになる。一方、4バイトのワードサイズを用いると、アルゴリズムが4バイト境界上に発生しない反復(即ち、4の倍数ではない数のバイト数にわたって広がる反復)を検出することを防止できる。
【0085】
語句検出アルゴリズムに用いられるハッシュ関数及びハッシュテーブルは、柔軟性がある。これらは、圧縮されるデータの種類に最も適するように最適化することができる。
【0086】
語句LRU及び圧縮シーケンスS’に用いられるリンクされたリストは、単一リンクのリストでもよいし、2重リンクのリストでもよい。また、アレイ等の他のデータ構造を用いて、より優れたメモリ利用を提供することもできる。
【0087】
上記のように、本発明は、仮想的な無制限サイズのウィンドウ内の可変長の反復語句を検出及び除去することが可能な、効率的な圧縮アルゴリズムである。ウィンドウサイズは利用可能なシステムメモリの量だけにしか制限されず、アルゴリズムの速度に影響を与えることはない。LZ77圧縮方法で一般的に用いられている数キロバイトのウィンドウサイズの利用に替えて、本発明は、プログラムの速度の大幅な変更を伴うことなく、10メガバイト〜数千メガバイトのウィンドウサイズを利用することができる(システムリソースにしか制限されない)。本発明ではウィンドウが圧縮データだけから構成されるので、未圧縮の入力データに関するウィンドウの有効サイズは異なるものでよく、数千メガバイトを超えてもよい(圧縮の程度によってきまる)。このウィンドウサイズの大幅な拡大は、アルゴリズムが長い距離を隔てた反復を検出できるようになるので、大きな利点である。従って本発明は、単一のファイルまたはオブジェクトを圧縮するだけでなく、任意の複数のファイルまたはオブジェクトをまとめて圧縮することに用いることができ、高度の圧縮を達成している。従って本発明は、様々なオブジェクトまたはデータグラム間の反復が極めて大量のデータによって隔てられる場合がある集合的なクロスセッションなネットワークトラフィックの連続ストリームの圧縮に用いることができる。従って本発明は、オブジェクト内圧縮だけでなく、オブジェクト内(ローカル)圧縮とオブジェクト間(グローバルまたはクロスセッションな)圧縮との両方が可能である。
【0088】
本発明の他の利点は、完全に漸進的および連続的なことである。従って本発明は、アルゴリズム故障または終了のリスクを伴うことなく、無限のデータストリームに適用することができる。本発明は、入力が到着するのに従って入力を漸進的に処理し、出力を線形時間で連続的に生成する。本発明は、固定サイズのシステムメモリ内に常に常駐し、このプリセット限界を超えないように構成することができる。本アルゴリズムは、新たな辞書語句を学習するため、語句および記号を動的に消去してそれらのリソースを再利用することにより、この連続的ストリーミング機能を達成している。また、本アルゴリズムは、入力データの変化に応じて、新たな辞書語句を学習する。このIZアルゴリズムの暗示的漸進的、連続的、および、線形の性質(仮想的な無制限のサーチウィンドウサイズに加えて)は、他の汎用無損失圧縮方法には存在しない独特の特徴である。
【0089】
本発明の他の利点はその効率である。本発明は線形的に実行される。つまり、入力データ量が増えるのにつれて、実行時間が非線形的(例えば指数的に)に増大するようなことはない。本発明のこの線形性は、プログラムの漸進的伝送構成要素および連続的語句/記号消去構成要素によって損なわれることはない。また、この線形性は、反復を検出可能なウィンドウサイズにより影響を受けることもない。従って、本発明は、いかなる入力であっても、入力のサイズに比例した時間で圧縮することができる。加えて、本発明は語句の階層表現を用いているので、他の辞書ベースの方法(例えばLZ77)よりも効率的に辞書全体を記憶することができる。本発明は、語句が2回以上現れたときに、それらの語句を辞書に追加するだけである。従って、積極的で予測的な辞書構築方法を利用するLZ78よりも、辞書エントリがより良く利用される。また、本発明は、漸進的伝送点を選択するために追加処理を何も必要としないので、他の階層ルールベースの方法(伝送点を選択するためのSEQUITURの計算集中アルゴリズム)よりも効率的である。
【0090】
また、本発明は各ポインタについて開始位置を計算および伝送するためにマーカーその他の手段を必要としないので、本発明による辞書語句の暗示的伝送は他のポインタベースの方法(LZ77やSEQUITUR等)よりも効率的である。また、語句および記号を表現するために本発明で用いられるデータ構造は、SEQUITURで用いられるものよりもメモリ効率がよい。さらに、本発明は反復語句が拡張されるのに従って語句を連続生成および消去する必要がないので、本発明の反復検出アルゴリズムは長い反復の消去の点で、SEQUITURよりも効率的である。
【0091】
本発明は、上記の4つの利点、即ち線形速度、仮想の無制限ウィンドウサイズ、暗示的漸進性、および、完全な連続圧縮を結合させた唯一の多目的無損失圧縮アルゴリズムである。これらの利点により、本発明は、圧縮がすでに有効に適用されている広い分野に用いることが可能になる。例えば本発明は、同様または同一のオブジェクトまたはデータグラムの送信を検出および除去することにより、ネットワークのストリームを圧縮することにも用いることができる。本発明は、ネットワーク内の任意の2つの通信ノード間の帯域幅利用性を向上させることにも用いることができる。同様または同一のオブジェクトが送信される可能性のあるネットワークアーキテクチャは、本発明から大きな利点を得ることができる。例えば、コンテンツプロバイダから生じるワールドワイドウェブ・トラフィックは、異なるユーザに対して送信される同一または類似のオブジェクトを含むことが多い。この場合、本発明を用いると、異なるユーザに対して送信されるデータを収束および圧縮することができるので、インターネットを介して転送する必要がある帯域幅を大幅に削減することができる。伸長アルゴリズムは、圧縮ストリームをエンドユーザに比較的近いサイトで拾い上げ、ユーザにデータを送信する前にそれを元のサイズに引き伸ばすことができる。これにより、圧縮サイトと伸長サイトの間のバンド幅利用性が大幅に向上されるだけでなく、ユーザへのデータの配送も大幅に高速化される。専用線や仮想私設ネットワークを通るデータの圧縮等、本発明により大きな有用性が得られるような様々な他のネットワーク状況が存在する。さらに本発明は、より効率的な記憶および送信のため、データベース全体を効率的に圧縮することにも用いることができる。
【0092】
これらのいずれ場合においても、本発明は、オブジェクト内圧縮とオブジェクト間(クロスセッションな)圧縮の両方を線形時間で達成することができるので、他の圧縮方法には無いさらなる有用性を提供する。これらの応用および利点はすべて、本発明が線形時間で動作し、仮想的な無制限のウィンドウサイズを利用し、暗示的に漸進的であり、無限の入力ストリームに対して連続的に実施することができるということに起因している。
【0093】
好ましい実施形態および代替の実施形態を参照して本発明を具体的に図示および説明してきたが、当業者であれば、本発明の思想および範囲から外れることなく、形態や細部に様々な変更を施すことができるであろう。
【図面の簡単な説明】
【図1】 本発明の一実施形態が動作するコンピュータシステムを示す図である。
【図2】 本発明の一実施形態による符号化・カプセル化(EE)ユニットおよび復号・分離(DD)ユニットの構成要素を示す図である。
【図3】 本発明の検出器構成要素の一実施形態を示す図である。
【図4】 本発明の一実施形態による検出方法の一例を示す図である。
【図5】 本発明の一実施形態による伝送手順を示すフロー図である。
【図6】 本発明の一実施形態による伸長アルゴリズムを示すフロー図である。
【図7】 本発明の一実施形態による伝送方法の一例を示す図である。
【図8a】 本発明の一実施形態による消去方法のLRUおよび親ポインタ例を示す図である。
【図8b】 本発明の一実施形態による消去方法のLRUおよび親ポインタ例を示す図である。
【図9】 本発明の一実施形態による消去方法のフロー図を示す図である。
Claims (50)
- データストリームを圧縮し、圧縮データストリームを伸長するための方法であって、
複数のデータ記号を有するデータストリームを受信するステップと、
第1のデータ語と少なくとも第2のデータ語との組み合わせからなる第1のデータ語句が語句ライブラリ中の複数のライブラリ語句のうちの1つである第1のライブラリ語句に一致した場合、該第1のデータ語句を第1の反復語句として識別するステップと、
前記第1のデータ語句が前記第1の反復語句として識別された場合、該第1のデータ語句を前記第1のライブラリ語句に関連する第1のデータ語句識別子で置き換えて圧縮データストリームを生成するステップと、
前記第1のデータ語句が前記複数のライブラリ語句のいずれにも一致しない場合、前記第1のデータ語句を第2のライブラリ語句として記憶し、前記第1のデータ語句を前記第2のライブラリ語句に関連する第2のデータ語句識別子で置き換えて圧縮データストリームを生成するステップと、
前記識別、前記置き換え、及び前記記憶を行うステップを後続のデータ語句に対して反復するステップと、
前記データストリーム中のデータ記号をさらに受信しながら前記圧縮データストリームを送信するステップと、
からなり、
伸長アルゴリズムが、前記反復データ語句に対し前記圧縮方法により生成されたものと同じライブラリ語句を生成できるようにするために、前記反復語句のうちの最初の2つのインスタンスは、変更されることなく送信され、以後のインスタンスは全て、前記データ語句識別子として送信され、
前記データ語句の各々が固定数のデータ語を含み、
前記データ語の各々がデータ記号及びデータ語句識別子のうちの1つである、方法。 - 前記ライブラリ語句の各々における前記データ語の固定数が2である、請求項1の方法。
- 前記データストリームの値に関する情報が受信前に不明であり、前記圧縮データストリームがデータを何も失わず、前記圧縮方法が任意長のデータストリームを処理する、請求項1の方法。
- 前記第1のデータ語句を第2のライブラリ語句として記憶するステップは、前記第1のデータ語句がデータストリームの第1の部分に固定回数現れた場合にのみ、前記第1のデータ語句を第2のライブラリ語句として記憶することを含み、
前記第1のデータ語句を前記第2のデータ語句識別子で置き換えるステップは、前記第1のデータ語句がデータストリームの第1の部分に固定回数現れた場合にのみ、前記第1のデータ語句を前記第2のデータ語句識別子で置き換えることを含む、請求項1の方法。 - まだ送信されていないライブラリ語句の第1の集合を識別するステップと、
前記第1の集合中の前記ライブラリ語句のうちのいずれかに関連するデータ語句識別子を前記圧縮データストリームの一部として送信する前に、前記ライブラリ語句の第1の集合を送信するステップと、
を含む、ライブラリ語句を送信するステップをさらに含む、請求項4の方法。 - 第1の基準に基いて前記複数のライブラリ語句のうちの第3のライブラリ語句を消去するステップをさらに含む、請求項5の方法。
- 前記第1の基準は、前記第3のライブラリ語句が参照されない第1の時間の経過及び前記第3のデータ語句を参照しない記号の第1の数の受信のうちのいずれか一方である、請求項6の方法。
- 第4のライブラリ語句が前記第3のライブラリ語句を含む場合該第4のライブラリ語句を消去するステップ、をさらに含む請求項7の方法。
- 前記圧縮データストリームを受信するステップと、
前記圧縮データストリームに基いて前記ライブラリ語句を判定するステップと、
をさらに含む、請求項4の方法。 - まだ送信されていないライブラリ語句の第1の集合を識別するステップと、
前記第1の集合中の前記ライブラリ語句のうちのいずれかに関連するデータ語句識別子を前記圧縮データストリームの一部として送信する前に、前記ライブラリ語句の第1の集合を送信するステップと、
を含む、ライブラリ語句を送信するステップをさらに含む、請求項1の方法。 - 第1の基準に基いて前記複数のライブラリ語句のうちの第3のライブラリ語句を消去するステップをさらに含む、請求項10の方法。
- 前記第1の基準は、前記第3のライブラリ語句が参照されない第1の時間の経過及び前記第3のデータ語句を参照しない記号の第1の数の受信のうちのいずれか一方である、請求項11の方法。
- 第4のライブラリ語句が前記第3のライブラリ語句を含む場合該第4のライブラリ語句を消去するステップ、をさらに含む請求項12の方法。
- 前記圧縮データストリームを受信するステップと、
前記圧縮データストリームに基いて前記ライブラリ語句を判定するステップと、
をさらに含む、請求項1の方法。 - 第1の基準に基いて前記複数のライブラリ語句のうちの第3のライブラリ語句を消去するステップをさらに含む、請求項1の方法。
- 前記第1の基準は、前記第3のライブラリ語句が参照されない第1の時間の経過及び前記第3のデータ語句を参照しない記号の第1の数の受信のうちのいずれか一方である、請求項15の方法。
- データストリームを圧縮し、圧縮データストリームを伸長するためのシステムであって、
複数のデータ記号を有するデータストリームを受信するための受信手段と、
第1のデータ語と少なくとも第2のデータ語との組み合わせからなる第1のデータ語句が語句ライブラリ中の複数のライブラリ語句のうちの1つである第1のライブラリ語句に一致した場合、該第1のデータ語句を第1の反復語句として識別するための識別手段と、
前記第1のデータ語句が前記第1の反復語句として識別された場合、該第1のデータ語句を前記第1のライブラリ語句に関連する第1のデータ語句識別子で置き換えて圧縮データストリームを生成するための第1の置換手段と、
前記第1のデータ語句が前記複数のライブラリ語句のいずれにも一致しない場合、前記第1のデータ語句を第2のライブラリ語句として記憶するための第1の記憶手段と、
前記第1のデータ語句が前記複数のライブラリ語句のいずれにも一致しない場合、前記第1のデータ語句を前記第2のライブラリ語句に関連する第2のデータ語句識別子で置き換えて圧縮データストリームを生成するための第2の置換手段と、
前記識別手段、前記第1の置換手段、前記第1の記憶手段、及び前記第2の置換手段が、後続データ語句を反復的に識別し、記憶し、及び置き換えるように構成されることと、
前記データストリーム中のデータ記号をさらに受信しながら前記圧縮データストリームを送信するための送信手段と、
からなり、
伸長アルゴリズムが、前記反復データ語句に対し前記圧縮方法により生成されたものと同じライブラリ語句を生成できるようにするために、前記送信手段は、前記反復語句のうちの最初の2つのインスタンスを変更することなく送信し、以後のインスタンスを全て、前記データ語句識別子として送信し、
前記データ語句の各々が固定数のデータ語を含み、
前記データ語の各々がデータ記号及びデータ語句識別子のうちの1つである、システム。 - 前記ライブラリ語句の各々における前記データ語の固定数が2である、請求項17のシステム。
- 前記データストリームの値に関する情報が受信前に不明であり、前記圧縮データストリームがデータを何も失わず、前記圧縮方法が任意長のデータストリームを処理する、請求項17のシステム。
- 前記第1の記憶手段は、前記第1のデータ語句がデータストリームの第1の部分に固定回数現れた場合にのみ、前記第1のデータ語句を第2のライブラリ語句として記憶し、
前記第2の置換手段は、前記第1のデータ語句がデータストリームの第1の部分に固定回数現れた場合にのみ、前記第1のデータ語句を前記第2のデータ語句識別子で置き換える、請求項17のシステム。 - まだ送信されていないライブラリ語句の第1の集合を識別するための語句識別手段と、
前記第1の集合中の前記ライブラリ語句のうちのいずれかに関連するデータ語句識別子を前記圧縮データストリームの一部として送信する前に、前記ライブラリ語句の第1の集合を送信するための語句送信手段と、
をさらに含む、請求項20のシステム。 - 第1の基準に基いて前記複数のライブラリ語句のうちの第3のライブラリ語句を消去するための語句消去手段をさらに含む、請求項21のシステム。
- 前記第1の基準は、前記第3のライブラリ語句が参照されない第1の時間の経過及び前記第3のデータ語句を参照しない記号の第1の数の受信のうちのいずれか一方である、請求項22のシステム。
- 第4のライブラリ語句が前記第3のライブラリ語句を含む場合、前記語句消去手段が前記第4のライブラリ語句を消去する、請求項23のシステム。
- 前記圧縮データストリームを受信するための受信手段と、
前記圧縮データストリームに基いて前記ライブラリ語句を判定するためのライブラリ作成手段と、
をさらに含む、請求項20のシステム。 - まだ送信されていないライブラリ語句の第1の集合を識別するための語句識別手段と、
前記第1の集合中の前記ライブラリ語句のうちのいずれかに関連するデータ語句識別子を前記圧縮データストリームの一部として送信する前に、前記ライブラリ語句の第1の集合を送信するための語句送信手段と、
をさらに含む、請求項17のシステム。 - 第1の基準に基いて前記複数のライブラリ語句のうちの第3のライブラリ語句を消去するための語句消去手段をさらに含む、請求項26の方法。
- 前記第1の基準は、前記第3のライブラリ語句が参照されない第1の時間の経過及び前記第3のデータ語句を参照しない記号の第1の数の受信のうちのいずれか一方である、請求項27のシステム。
- 第4のライブラリ語句が前記第3のライブラリ語句を含む場合、前記語句消去手段が前記第4のライブラリ語句を消去する、請求項28のシステム。
- 前記圧縮データストリームを受信するための受信手段と、
前記圧縮データストリームに基いて前記ライブラリ語句を判定するためのライブラリ作成手段と、
をさらに含む、請求項17のシステム。 - 第1の基準に基いて前記複数のライブラリ語句のうちの第3のライブラリ語句を消去するための語句消去手段をさらに含む、請求項17のシステム。
- 前記第1の基準は、前記第3のライブラリ語句が参照されない第1の時間の経過及び前記第3のデータ語句を参照しない記号の第1の数の受信のうちのいずれか一方である、請求項31のシステム。
- 第4のライブラリ語句が前記第3のライブラリ語句を含む場合、前記語句消去手段が前記第4のライブラリ語句を消去する、請求項32のシステム。
- データストリームを圧縮し、圧縮データストリームを伸長するためのシステムであって、
複数のデータ記号を有するデータストリームを受信するための受信機と、
複数のライブラリ語句を有する語句ライブラリと、
前記データ受信機に接続され、第1のデータ語と少なくとも第2のデータ語との組み合わせからなる第1のデータ語句が語句ライブラリ中の複数のライブラリ語句のうちの1つである第1のライブラリ語句に一致した場合、該第1のデータ語句を第1の反復語句として識別するための、識別装置と、
前記第1のデータ語句が前記複数のライブラリ語句のいずれにも一致しない場合、前記第1のデータ語句を第2のライブラリ語句として記憶するためのライブラリ構築装置と、
前記第1のデータ語句が前記第1の反復語句として識別された場合には該第1のデータ語句を前記第1のライブラリ語句に関連する第1のデータ語句識別子で置き換えて圧縮データストリームを生成し、前記第1のデータ語句が前記複数のライブラリ語句のいずれにも一致しない場合には該第1のデータ語句を前記第2のライブラリ語句に関連する第2のデータ語句識別子で置き換えるための、置換装置と、
前記識別装置、前記ライブラリ構築装置、及び前記置換装置が、後続データ語句を反復的に識別し、記憶し、及び置き換えるように構成されることと、
前記データストリーム中のデータ記号をさらに受信しながら前記圧縮データストリームを送信するための送信装置と、
からなり、
伸長装置が、前記反復データ語句に対し前記圧縮システムにより生成されたものと同じライブラリ語句を生成できるようにするために、前記反復語句のうちの最初の2つのインスタンスは、変更されることなく送信され、以後のインスタンスは全て、前記データ語句識別子として送信され、
前記データ語句の各々が固定数のデータ語を含み、
前記データ語の各々がデータ記号及びデータ語句識別子のうちの1つである、システム。 - 前記ライブラリ語句の各々における前記データ語の固定数が2である、請求項34のシステム。
- 前記データストリームの値に関する情報が受信前に不明であり、前記圧縮データストリームがデータを何も失わず、前記圧縮方法が任意長のデータストリームを処理する、請求項34のシステム。
- 前記ライブラリ構築装置は、前記第1のデータ語句がデータストリームの第1の部分に固定回数現れた場合にのみ、前記第1のデータ語句を第2のライブラリ語句として記憶し、
前記置換装置は、前記第1のデータ語句がデータストリームの第1の部分に固定回数現れた場合にのみ、前記第1のデータ語句を前記第2のデータ語句識別子で置き換える、請求項34のシステム。 - まだ送信されていないライブラリ語句の第1の集合を識別するためのライブラリ語句識別子と、
前記第1の集合中の前記ライブラリ語句のうちのいずれかに関連するデータ語句識別子を前記圧縮データストリームの一部として送信する前に、前記ライブラリ語句の第1の集合を送信するためのライブラリ送信機と、
をさらに含む、請求項37のシステム。 - 第1の基準に基いて前記複数のライブラリ語句のうちの第3のライブラリ語句を消去するための消去装置をさらに含む、請求項38のシステム。
- 前記第1の基準は、前記第3のライブラリ語句が参照されない第1の時間の経過及び前記第3のデータ語句を参照しない記号の第1の数の受信のうちのいずれか一方である、請求項39のシステム。
- 第4のライブラリ語句が前記第3のライブラリ語句を含む場合、前記消去装置が前記第4のライブラリ語句を消去する、請求項40のシステム。
- 前記圧縮データストリームを受信するための受信装置と、
前記圧縮データストリームに基いて前記ライブラリ語句を判定するためのライブラリ判定装置と、
をさらに含む、請求項37のシステム。 - まだ送信されていないライブラリ語句の第1の集合を識別するためのライブラリ語句識別子と、
前記第1の集合中の前記ライブラリ語句のうちのいずれかに関連するデータ語句識別子を前記圧縮データストリームの一部として送信する前に、前記ライブラリ語句の第1の集合を送信するためのライブラリ送信機と、
をさらに含む、請求項34のシステム。 - 第1の基準に基いて前記複数のライブラリ語句のうちの第3のライブラリ語句を消去するための消去装置をさらに含む、請求項43のシステム。
- 前記第1の基準は、前記第3のライブラリ語句が参照されない第1の時間の経過及び前記第3のデータ語句を参照しない記号の第1の数の受信のうちのいずれか一方である、請求項44のシステム。
- 第4のライブラリ語句が前記第3のライブラリ語句を含む場合、前記消去装置が前記第4のライブラリ語句を消去する、請求項45のシステム。
- 前記圧縮データストリームを受信するための受信装置と、
前記圧縮データストリームに基いて前記ライブラリ語句を判定するためのライブラリ判定装置と、
をさらに含む、請求項34のシステム。 - 第1の基準に基いて前記複数のライブラリ語句のうちの第3のライブラリ語句を消去するための消去装置をさらに含む、請求項34のシステム。
- 前記第1の基準は、前記第3のライブラリ語句が参照されない第1の時間の経過及び前記第3のデータ語句を参照しない記号の第1の数の受信のうちのいずれか一方である、請求項48のシステム。
- 第4のライブラリ語句が前記第3のライブラリ語句を含む場合、前記消去装置が前記第4のライブラリ語句を消去する、請求項49のシステム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US22126200P | 2000-07-25 | 2000-07-25 | |
US60/221,262 | 2000-07-25 | ||
US09/872,184 US6856651B2 (en) | 2000-07-25 | 2001-05-31 | System and method for incremental and continuous data compression |
US09/872,184 | 2001-05-31 | ||
PCT/US2001/022690 WO2002009339A2 (en) | 2000-07-25 | 2001-07-18 | Incremental and continuous data compression |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004511928A JP2004511928A (ja) | 2004-04-15 |
JP4759214B2 true JP4759214B2 (ja) | 2011-08-31 |
Family
ID=26915632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002514940A Expired - Fee Related JP4759214B2 (ja) | 2000-07-25 | 2001-07-18 | 漸進的で連続的なデータ圧縮のためのシステム及び方法 |
Country Status (11)
Country | Link |
---|---|
US (5) | US6856651B2 (ja) |
EP (1) | EP1307967B1 (ja) |
JP (1) | JP4759214B2 (ja) |
CN (2) | CN100380815C (ja) |
AT (1) | ATE446612T1 (ja) |
AU (2) | AU2001277914B2 (ja) |
CA (1) | CA2418314C (ja) |
DE (1) | DE60140256D1 (ja) |
IL (2) | IL153957A0 (ja) |
NZ (1) | NZ523657A (ja) |
WO (1) | WO2002009339A2 (ja) |
Families Citing this family (189)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8938688B2 (en) | 1998-12-04 | 2015-01-20 | Nuance Communications, Inc. | Contextual prediction of user words and user actions |
US7712053B2 (en) * | 1998-12-04 | 2010-05-04 | Tegic Communications, Inc. | Explicit character filtering of ambiguous text entry |
US6624761B2 (en) | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US6604158B1 (en) * | 1999-03-11 | 2003-08-05 | Realtime Data, Llc | System and methods for accelerated data storage and retrieval |
US6601104B1 (en) * | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US20100122164A1 (en) * | 1999-12-03 | 2010-05-13 | Tegic Communications, Inc. | Contextual prediction of user words and user actions |
US20030191876A1 (en) * | 2000-02-03 | 2003-10-09 | Fallon James J. | Data storewidth accelerator |
US20010047473A1 (en) | 2000-02-03 | 2001-11-29 | Realtime Data, Llc | Systems and methods for computer initialization |
US7417568B2 (en) * | 2000-10-03 | 2008-08-26 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US8692695B2 (en) | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
US9143546B2 (en) * | 2000-10-03 | 2015-09-22 | Realtime Data Llc | System and method for data feed acceleration and encryption |
DE60120466T2 (de) * | 2000-10-11 | 2007-01-18 | Broadcom Corp., Irvine | Effiziente Übertragung von RTP Paketen in einem Netzwerk |
US7386046B2 (en) * | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
US7155173B2 (en) * | 2001-03-14 | 2006-12-26 | Nokia Corporation | Method and system for providing a context for message compression |
US7370120B2 (en) * | 2001-12-07 | 2008-05-06 | Propel Software Corporation | Method and system for reducing network latency in data communication |
JP3857611B2 (ja) * | 2002-05-20 | 2006-12-13 | 富士通株式会社 | データ圧縮プログラム、データ圧縮方法、およびデータ圧縮装置 |
US7542471B2 (en) * | 2002-10-30 | 2009-06-02 | Citrix Systems, Inc. | Method of determining path maximum transmission unit |
US8233392B2 (en) | 2003-07-29 | 2012-07-31 | Citrix Systems, Inc. | Transaction boundary detection for reduction in timeout penalties |
US7630305B2 (en) * | 2003-07-29 | 2009-12-08 | Orbital Data Corporation | TCP selective acknowledgements for communicating delivered and missed data packets |
US7616638B2 (en) | 2003-07-29 | 2009-11-10 | Orbital Data Corporation | Wavefront detection and disambiguation of acknowledgments |
US6667700B1 (en) * | 2002-10-30 | 2003-12-23 | Nbt Technology, Inc. | Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation |
US8270423B2 (en) | 2003-07-29 | 2012-09-18 | Citrix Systems, Inc. | Systems and methods of using packet boundaries for reduction in timeout prevention |
US8176186B2 (en) | 2002-10-30 | 2012-05-08 | Riverbed Technology, Inc. | Transaction accelerator for client-server communications systems |
US7120666B2 (en) * | 2002-10-30 | 2006-10-10 | Riverbed Technology, Inc. | Transaction accelerator for client-server communication systems |
US7930426B1 (en) * | 2003-04-01 | 2011-04-19 | Cisco Technology, Inc. | Method for tracking transmission status of data to entities such as peers in a network |
US8437284B2 (en) * | 2003-07-29 | 2013-05-07 | Citrix Systems, Inc. | Systems and methods for additional retransmissions of dropped packets |
US8238241B2 (en) | 2003-07-29 | 2012-08-07 | Citrix Systems, Inc. | Automatic detection and window virtualization for flow control |
US7656799B2 (en) * | 2003-07-29 | 2010-02-02 | Citrix Systems, Inc. | Flow control system architecture |
US8432800B2 (en) * | 2003-07-29 | 2013-04-30 | Citrix Systems, Inc. | Systems and methods for stochastic-based quality of service |
US7594018B2 (en) * | 2003-10-10 | 2009-09-22 | Citrix Systems, Inc. | Methods and apparatus for providing access to persistent application sessions |
US7680885B2 (en) * | 2004-04-15 | 2010-03-16 | Citrix Systems, Inc. | Methods and apparatus for synchronization of data set representations in a bandwidth-adaptive manner |
US7827139B2 (en) | 2004-04-15 | 2010-11-02 | Citrix Systems, Inc. | Methods and apparatus for sharing graphical screen data in a bandwidth-adaptive manner |
US8095364B2 (en) | 2004-06-02 | 2012-01-10 | Tegic Communications, Inc. | Multimodal disambiguation of speech recognition |
US7526607B1 (en) | 2004-09-23 | 2009-04-28 | Juniper Networks, Inc. | Network acceleration and long-distance pattern detection using improved caching and disk mapping |
US8613048B2 (en) * | 2004-09-30 | 2013-12-17 | Citrix Systems, Inc. | Method and apparatus for providing authorized remote access to application sessions |
US7711835B2 (en) * | 2004-09-30 | 2010-05-04 | Citrix Systems, Inc. | Method and apparatus for reducing disclosure of proprietary data in a networked environment |
US7748032B2 (en) | 2004-09-30 | 2010-06-29 | Citrix Systems, Inc. | Method and apparatus for associating tickets in a ticket hierarchy |
JP4082614B2 (ja) * | 2004-11-12 | 2008-04-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベース管理システム、データベース管理方法、及びプログラム |
US8024568B2 (en) | 2005-01-28 | 2011-09-20 | Citrix Systems, Inc. | Method and system for verification of an endpoint security scan |
US8849919B2 (en) * | 2005-02-04 | 2014-09-30 | International Business Machines Corporation | Space-efficient mail storing and archiving based on communication structure |
US7420992B1 (en) * | 2005-03-17 | 2008-09-02 | Packeteer, Inc. | Adaptive network traffic compression mechanism including dynamic selection of compression algorithms |
US20060248194A1 (en) | 2005-03-18 | 2006-11-02 | Riverbed Technology, Inc. | Connection forwarding |
CA2603380A1 (en) * | 2005-03-30 | 2006-10-05 | Welch Allyn, Inc. | Communication of information between a plurality of network elements |
US8788687B2 (en) * | 2006-10-04 | 2014-07-22 | Welch Allyn, Inc. | Dynamic medical object information base |
US8511558B2 (en) * | 2005-04-12 | 2013-08-20 | Sandisk Il Ltd. | Smartcard power management |
US8443040B2 (en) * | 2005-05-26 | 2013-05-14 | Citrix Systems Inc. | Method and system for synchronizing presentation of a dynamic data set to a plurality of nodes |
US8095774B1 (en) | 2007-07-05 | 2012-01-10 | Silver Peak Systems, Inc. | Pre-fetching data into a memory |
US8392684B2 (en) * | 2005-08-12 | 2013-03-05 | Silver Peak Systems, Inc. | Data encryption in a network memory architecture for providing data based on local accessibility |
US8171238B1 (en) | 2007-07-05 | 2012-05-01 | Silver Peak Systems, Inc. | Identification of data stored in memory |
US7984107B2 (en) * | 2005-09-09 | 2011-07-19 | Microsoft Corporation | Proxy assembly for simulating real assembly features on a remote device |
US8489562B1 (en) | 2007-11-30 | 2013-07-16 | Silver Peak Systems, Inc. | Deferred data storage |
US8929402B1 (en) | 2005-09-29 | 2015-01-06 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data by predicting subsequent data |
US8811431B2 (en) | 2008-11-20 | 2014-08-19 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data |
US7770198B1 (en) | 2005-11-08 | 2010-08-03 | Juniper Networks, Inc. | Transparent caching of repeated video content in a network |
US7307552B2 (en) * | 2005-11-16 | 2007-12-11 | Cisco Technology, Inc. | Method and apparatus for efficient hardware based deflate |
US8165221B2 (en) * | 2006-04-28 | 2012-04-24 | Netapp, Inc. | System and method for sampling based elimination of duplicate data |
WO2008005629A2 (en) * | 2006-05-26 | 2008-01-10 | Riverbed Technology, Inc. | Throttling of predictive acks in an accelerated network communication system |
US7649909B1 (en) | 2006-06-30 | 2010-01-19 | Packeteer, Inc. | Adaptive tunnel transport protocol |
US8755381B2 (en) | 2006-08-02 | 2014-06-17 | Silver Peak Systems, Inc. | Data matching using flow based packet data storage |
US8885632B2 (en) | 2006-08-02 | 2014-11-11 | Silver Peak Systems, Inc. | Communications scheduler |
US8694471B2 (en) * | 2006-08-09 | 2014-04-08 | Oracle International Corporation | System and method for updating a cache using a gating mechanism and events |
EP1919084A1 (en) * | 2006-11-06 | 2008-05-07 | Research In Motion Limited | System and method of message compression |
US8463855B2 (en) | 2006-11-06 | 2013-06-11 | Research In Motion Limited | System and method of message compression |
US8533846B2 (en) * | 2006-11-08 | 2013-09-10 | Citrix Systems, Inc. | Method and system for dynamically associating access rights with a resource |
US7733910B2 (en) * | 2006-12-29 | 2010-06-08 | Riverbed Technology, Inc. | Data segmentation using shift-varying predicate function fingerprinting |
US8255570B2 (en) * | 2007-03-12 | 2012-08-28 | Citrix Systems, Inc. | Systems and methods of compression history expiration and synchronization |
US7827237B2 (en) | 2007-03-12 | 2010-11-02 | Citrix Systems, Inc. | Systems and methods for identifying long matches of data in a compression history |
US7619545B2 (en) * | 2007-03-12 | 2009-11-17 | Citrix Systems, Inc. | Systems and methods of using application and protocol specific parsing for compression |
US7865585B2 (en) * | 2007-03-12 | 2011-01-04 | Citrix Systems, Inc. | Systems and methods for providing dynamic ad hoc proxy-cache hierarchies |
US7532134B2 (en) * | 2007-03-12 | 2009-05-12 | Citrix Systems, Inc. | Systems and methods for sharing compression histories between multiple devices |
EP2677714B1 (en) * | 2007-03-12 | 2015-04-22 | Citrix Systems, Inc. | Systems and methods for using compression histories to improve network performance |
US7460038B2 (en) * | 2007-03-12 | 2008-12-02 | Citrix Systems, Inc. | Systems and methods of clustered sharing of compression histories |
US7453379B2 (en) * | 2007-03-12 | 2008-11-18 | Citrix Systems, Inc. | Systems and methods for identifying long matches of data in a compression history |
US9218412B2 (en) * | 2007-05-10 | 2015-12-22 | Microsoft Technology Licensing, Llc | Searching a database of listings |
EP2023572B1 (en) | 2007-08-08 | 2017-12-06 | Oracle International Corporation | Method, computer program and apparatus for controlling access to a computer resource and obtaining a baseline therefor |
US8235985B2 (en) * | 2007-08-31 | 2012-08-07 | Voyage Medical, Inc. | Visualization and ablation system variations |
US7712150B2 (en) * | 2007-10-01 | 2010-05-11 | Pardillo Joseph M | Protective pad assembly magnetically attachable to garment |
US8726165B1 (en) | 2007-11-01 | 2014-05-13 | Google Inc. | Methods for auto-completing contact entry on mobile devices |
US8676901B1 (en) | 2007-11-01 | 2014-03-18 | Google Inc. | Methods for transcoding attachments for mobile devices |
US9319360B2 (en) | 2007-11-01 | 2016-04-19 | Google Inc. | Systems and methods for prefetching relevant information for responsive mobile email applications |
US9241063B2 (en) | 2007-11-01 | 2016-01-19 | Google Inc. | Methods for responding to an email message by call from a mobile device |
US20090119678A1 (en) | 2007-11-02 | 2009-05-07 | Jimmy Shih | Systems and methods for supporting downloadable applications on a portable client device |
US8307115B1 (en) | 2007-11-30 | 2012-11-06 | Silver Peak Systems, Inc. | Network memory mirroring |
US7773634B1 (en) * | 2007-12-06 | 2010-08-10 | Sprint Communications Company L.P. | Algorithms for constructing sets of frequently occurring strings |
US8762553B2 (en) * | 2008-01-11 | 2014-06-24 | Telefonaktiebolaget L M Ericsson (Publ) | Message handling in an IP multimedia subsystem |
US8572287B2 (en) * | 2008-02-14 | 2013-10-29 | Blackberry Limited | Method and apparatus for communicating compression state information for interactive compression |
US8442052B1 (en) | 2008-02-20 | 2013-05-14 | Silver Peak Systems, Inc. | Forward packet recovery |
US8417730B2 (en) * | 2008-04-14 | 2013-04-09 | Objectif Lune Inc. | Block compression algorithm |
US7870160B2 (en) * | 2008-04-14 | 2011-01-11 | Objectif Lune Inc. | Block compression algorithm |
JP4995775B2 (ja) * | 2008-06-30 | 2012-08-08 | 株式会社東芝 | 画面転送装置およびその方法ならびに画面転送のためのプログラム |
US9717021B2 (en) | 2008-07-03 | 2017-07-25 | Silver Peak Systems, Inc. | Virtual network overlay |
US8743683B1 (en) | 2008-07-03 | 2014-06-03 | Silver Peak Systems, Inc. | Quality of service using multiple flows |
US10805840B2 (en) | 2008-07-03 | 2020-10-13 | Silver Peak Systems, Inc. | Data transmission via a virtual wide area network overlay |
US10164861B2 (en) | 2015-12-28 | 2018-12-25 | Silver Peak Systems, Inc. | Dynamic monitoring and visualization for network health characteristics |
US8018866B1 (en) | 2008-08-26 | 2011-09-13 | Juniper Networks, Inc. | Adaptively applying network acceleration services with an intermediate network device |
US8955107B2 (en) * | 2008-09-12 | 2015-02-10 | Juniper Networks, Inc. | Hierarchical application of security services within a computer network |
WO2010042578A1 (en) | 2008-10-08 | 2010-04-15 | Citrix Systems, Inc. | Systems and methods for real-time endpoint application flow control with network structure component |
US9762537B1 (en) | 2008-10-14 | 2017-09-12 | Juniper Networks, Inc. | Secure path selection within computer networks |
US8040808B1 (en) | 2008-10-20 | 2011-10-18 | Juniper Networks, Inc. | Service aware path selection with a network acceleration device |
US20100179984A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Return-link optimization for file-sharing traffic |
US8825473B2 (en) * | 2009-01-20 | 2014-09-02 | Oracle International Corporation | Method, computer program and apparatus for analyzing symbols in a computer system |
US8483217B2 (en) | 2009-03-10 | 2013-07-09 | Viasat, Inc. | Internet protocol broadcasting |
US8094575B1 (en) | 2009-03-24 | 2012-01-10 | Juniper Networks, Inc. | Routing protocol extension for network acceleration service-aware path selection within computer networks |
JP5536193B2 (ja) * | 2009-04-09 | 2014-07-02 | トムソン ライセンシング | 各シンボルが三つ以上の可能なシンボル値のうちの一つをもちうる場合のシンボル・シーケンスのエンコードおよびデコードの方法および装置 |
US7868789B1 (en) * | 2009-06-28 | 2011-01-11 | Sap Ag | Dictionary-based order-preserving string compression for main memory column stores |
US9298722B2 (en) | 2009-07-16 | 2016-03-29 | Novell, Inc. | Optimal sequential (de)compression of digital data |
US8214566B2 (en) * | 2009-07-24 | 2012-07-03 | Welch Allyn, Inc. | Configurable health-care equipment apparatus |
US8750370B2 (en) * | 2009-09-04 | 2014-06-10 | Brocade Communications Systems, Inc. | Congestion-adaptive compression |
US8666731B2 (en) | 2009-09-22 | 2014-03-04 | Oracle International Corporation | Method, a computer program and apparatus for processing a computer message |
US8755619B2 (en) * | 2009-11-19 | 2014-06-17 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding and decoding image data using run of the image data |
JP5341209B2 (ja) | 2009-12-25 | 2013-11-13 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 階層型データベースにおけるポインタの整合性をチェックするためのシステム、方法及びプログラム |
US8516253B1 (en) | 2010-01-18 | 2013-08-20 | Viasat, Inc. | Self-keyed protection of anticipatory content |
US9609342B2 (en) * | 2010-02-19 | 2017-03-28 | Skype | Compression for frames of a video signal using selected candidate blocks |
US9313526B2 (en) | 2010-02-19 | 2016-04-12 | Skype | Data compression for video |
US9078009B2 (en) * | 2010-02-19 | 2015-07-07 | Skype | Data compression for video utilizing non-translational motion information |
US9819358B2 (en) * | 2010-02-19 | 2017-11-14 | Skype | Entropy encoding based on observed frequency |
US8681873B2 (en) * | 2010-02-19 | 2014-03-25 | Skype | Data compression for video |
US8782734B2 (en) * | 2010-03-10 | 2014-07-15 | Novell, Inc. | Semantic controls on data storage and access |
CN102194499A (zh) * | 2010-03-15 | 2011-09-21 | 华为技术有限公司 | 一种压缩字典同步的方法和装置 |
US8832103B2 (en) | 2010-04-13 | 2014-09-09 | Novell, Inc. | Relevancy filter for new data based on underlying files |
US9043385B1 (en) | 2010-04-18 | 2015-05-26 | Viasat, Inc. | Static tracker |
US9881099B2 (en) | 2010-05-24 | 2018-01-30 | International Business Machines Corporation | System, method and computer program product for data transfer management |
JP5549402B2 (ja) * | 2010-06-15 | 2014-07-16 | 富士通株式会社 | データ圧縮プログラムおよび方法,ならびにデータ復元プログラムおよび方法 |
US8464336B2 (en) | 2010-06-30 | 2013-06-11 | Juniper Networks, Inc. | VPN network client for mobile device having fast reconnect |
US8549617B2 (en) | 2010-06-30 | 2013-10-01 | Juniper Networks, Inc. | Multi-service VPN network client for mobile device having integrated acceleration |
US8458787B2 (en) | 2010-06-30 | 2013-06-04 | Juniper Networks, Inc. | VPN network client for mobile device having dynamically translated user home page |
US8474035B2 (en) | 2010-06-30 | 2013-06-25 | Juniper Networks, Inc. | VPN network client for mobile device having dynamically constructed display for native access to web mail |
US8473734B2 (en) | 2010-06-30 | 2013-06-25 | Juniper Networks, Inc. | Multi-service VPN network client for mobile device having dynamic failover |
US8127350B2 (en) | 2010-06-30 | 2012-02-28 | Juniper Networks, Inc. | Multi-service VPN network client for mobile device |
US10142292B2 (en) | 2010-06-30 | 2018-11-27 | Pulse Secure Llc | Dual-mode multi-service VPN network client for mobile device |
USD632397S1 (en) | 2010-07-22 | 2011-02-08 | Welch Allyn, Inc. | Portions of a patient-monitor housing |
USD671222S1 (en) | 2010-07-22 | 2012-11-20 | Welch Allyn, Inc. | Module for a patient-monitor or the like |
USD635681S1 (en) | 2010-07-22 | 2011-04-05 | Welch Allyn, Inc. | Patient-monitor housing |
US8595451B2 (en) * | 2010-11-04 | 2013-11-26 | Lsi Corporation | Managing a storage cache utilizing externally assigned cache priority tags |
WO2012068300A2 (en) | 2010-11-16 | 2012-05-24 | Tibco Software Inc. | Compression of message information transmitted over a network |
US9912718B1 (en) | 2011-04-11 | 2018-03-06 | Viasat, Inc. | Progressive prefetching |
US9037638B1 (en) | 2011-04-11 | 2015-05-19 | Viasat, Inc. | Assisted browsing using hinting functionality |
US9106607B1 (en) | 2011-04-11 | 2015-08-11 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US9456050B1 (en) | 2011-04-11 | 2016-09-27 | Viasat, Inc. | Browser optimization through user history analysis |
US11983233B2 (en) | 2011-04-11 | 2024-05-14 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US20120296983A1 (en) * | 2011-05-17 | 2012-11-22 | Microsoft Corporation | Managing compression dictionaries |
ES2907064T3 (es) | 2011-06-14 | 2022-04-21 | Viasat Inc | Protocolo de transporte para contenido anticipado |
US9130991B2 (en) | 2011-10-14 | 2015-09-08 | Silver Peak Systems, Inc. | Processing data packets in performance enhancing proxy (PEP) environment |
US9407355B1 (en) | 2011-10-25 | 2016-08-02 | Viasat Inc. | Opportunistic content delivery using delta coding |
US9626224B2 (en) | 2011-11-03 | 2017-04-18 | Silver Peak Systems, Inc. | Optimizing available computing resources within a virtual environment |
GB2496385B (en) | 2011-11-08 | 2014-03-05 | Canon Kk | Methods and network devices for communicating data packets |
US8824569B2 (en) * | 2011-12-07 | 2014-09-02 | International Business Machines Corporation | High bandwidth decompression of variable length encoded data streams |
JP6003059B2 (ja) * | 2012-01-05 | 2016-10-05 | 株式会社リコー | 画像処理装置および画像処理方法、ならびに、画像形成装置 |
CN102684827B (zh) | 2012-03-02 | 2015-07-29 | 华为技术有限公司 | 数据处理方法及数据处理设备 |
US8432808B1 (en) | 2012-06-15 | 2013-04-30 | Viasat Inc. | Opportunistically delayed delivery in a satellite network |
WO2014019287A1 (en) | 2012-08-03 | 2014-02-06 | Beijing Blue I.T. Technologies Co., Ltd | System and method for optimizing inter-node communication in content distribution network |
CN103716056B (zh) * | 2012-09-29 | 2017-08-11 | 华为技术有限公司 | 数据压缩方法、数据解压缩方法和设备 |
US9571368B2 (en) | 2013-02-04 | 2017-02-14 | International Business Machines Corporation | Analysis of variance in network page access |
US8933824B1 (en) | 2013-08-28 | 2015-01-13 | International Business Machines Corporation | Hardware decompression of deflate encoded data with multiple blocks |
US9374106B2 (en) | 2013-08-28 | 2016-06-21 | International Business Machines Corporation | Efficient context save/restore during hardware decompression of DEFLATE encoded data |
US9800640B2 (en) | 2013-10-02 | 2017-10-24 | International Business Machines Corporation | Differential encoder with look-ahead synchronization |
CN104636377B (zh) * | 2013-11-12 | 2018-09-07 | 华为技术服务有限公司 | 数据压缩方法及设备 |
EP3084704A4 (en) * | 2013-12-16 | 2017-06-14 | MX Technologies, Inc. | Long string pattern matching of aggregated account data |
US9628107B2 (en) | 2014-04-07 | 2017-04-18 | International Business Machines Corporation | Compression of floating-point data by identifying a previous loss of precision |
CN105099460B (zh) * | 2014-05-07 | 2018-05-04 | 瑞昱半导体股份有限公司 | 字典压缩方法、字典解压缩方法与字典建构方法 |
US10855797B2 (en) | 2014-06-03 | 2020-12-01 | Viasat, Inc. | Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback |
US9948496B1 (en) | 2014-07-30 | 2018-04-17 | Silver Peak Systems, Inc. | Determining a transit appliance for data traffic to a software service |
US9875344B1 (en) | 2014-09-05 | 2018-01-23 | Silver Peak Systems, Inc. | Dynamic monitoring and authorization of an optimization device |
US9959299B2 (en) | 2014-12-02 | 2018-05-01 | International Business Machines Corporation | Compression-aware partial sort of streaming columnar data |
US10909078B2 (en) | 2015-02-25 | 2021-02-02 | International Business Machines Corporation | Query predicate evaluation and computation for hierarchically compressed data |
US9971704B2 (en) | 2015-03-27 | 2018-05-15 | International Business Machines Corporation | Data compression accelerator methods, apparatus and design structure with improved resource utilization |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
US10534852B2 (en) * | 2015-09-30 | 2020-01-14 | Samsung Display Co., Ltd. | Display system and virtual web device in the cloud |
WO2017069735A1 (en) | 2015-10-20 | 2017-04-27 | Viasat, Inc. | Hint model updating using automated browsing clusters |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
CN105812094B (zh) * | 2016-03-07 | 2019-08-02 | 电信科学技术研究院 | 一种数据处理的方法、装置、终端及接入设备 |
US10594828B2 (en) | 2016-04-19 | 2020-03-17 | International Business Machines Corporation | Delivery of incremental sensor data over optimized channel |
CN105978668A (zh) * | 2016-05-06 | 2016-09-28 | 电信科学技术研究院 | 一种字典信息同步方法、装置及设备 |
US10432484B2 (en) | 2016-06-13 | 2019-10-01 | Silver Peak Systems, Inc. | Aggregating select network traffic statistics |
US10482021B2 (en) | 2016-06-24 | 2019-11-19 | Qualcomm Incorporated | Priority-based storage and access of compressed memory lines in memory in a processor-based system |
US10205787B2 (en) * | 2016-07-14 | 2019-02-12 | Juniper Networks, Inc. | Method, system, and apparatus for reducing the size of route updates |
US9967056B1 (en) | 2016-08-19 | 2018-05-08 | Silver Peak Systems, Inc. | Forward packet recovery with constrained overhead |
US9793919B1 (en) * | 2016-12-08 | 2017-10-17 | Advanced Micro Devices, Inc. | Compression of frequent data values across narrow links |
US10257082B2 (en) | 2017-02-06 | 2019-04-09 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows |
US10892978B2 (en) | 2017-02-06 | 2021-01-12 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows from first packet data |
US11044202B2 (en) | 2017-02-06 | 2021-06-22 | Silver Peak Systems, Inc. | Multi-level learning for predicting and classifying traffic flows from first packet data |
US10771394B2 (en) | 2017-02-06 | 2020-09-08 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows on a first packet from DNS data |
US10387377B2 (en) * | 2017-05-19 | 2019-08-20 | Takashi Suzuki | Computerized methods of data compression and analysis |
CN107302585B (zh) * | 2017-07-11 | 2020-05-26 | 电信科学技术研究院 | 一种预置字典同步方法及设备 |
TWI645698B (zh) * | 2017-07-17 | 2018-12-21 | 財團法人工業技術研究院 | 資料發送裝置、資料接收裝置及其方法 |
US11212210B2 (en) | 2017-09-21 | 2021-12-28 | Silver Peak Systems, Inc. | Selective route exporting using source type |
US10637721B2 (en) | 2018-03-12 | 2020-04-28 | Silver Peak Systems, Inc. | Detecting path break conditions while minimizing network overhead |
CN111313907B (zh) * | 2020-02-19 | 2023-04-21 | 广西电网有限责任公司 | 一种海量电力数据压缩的方法及装置 |
US11995058B2 (en) * | 2022-07-05 | 2024-05-28 | Sap Se | Compression service using FPGA compression |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6268325A (ja) * | 1985-09-20 | 1987-03-28 | Oki Electric Ind Co Ltd | 文章圧縮・伸展方式 |
JPH0546358A (ja) * | 1991-07-15 | 1993-02-26 | Sharp Corp | テキストデータの圧縮方法 |
JPH0773013A (ja) * | 1993-06-22 | 1995-03-17 | Seiko Epson Corp | データ圧縮方法、データ復元方法及び情報処理装置 |
JPH11215007A (ja) * | 1998-01-22 | 1999-08-06 | Fujitsu Ltd | データ圧縮装置及び復元装置並びにその方法 |
Family Cites Families (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4322795A (en) * | 1980-01-24 | 1982-03-30 | Honeywell Information Systems Inc. | Cache memory utilizing selective clearing and least recently used updating |
US4814746A (en) * | 1983-06-01 | 1989-03-21 | International Business Machines Corporation | Data compression method |
JPS59231683A (ja) | 1983-06-01 | 1984-12-26 | インタ−ナシヨナル ビジネス マシ−ンズ コ−ポレ−シヨン | データ圧縮方法 |
US4876541A (en) * | 1987-10-15 | 1989-10-24 | Data Compression Corporation | Stem for dynamically compressing and decompressing electronic data |
CA2180039C (en) | 1989-12-29 | 1999-01-12 | Michael Gutman | Transmitting encoded data on unreliable networks |
US5049881A (en) * | 1990-06-18 | 1991-09-17 | Intersecting Concepts, Inc. | Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique |
US5087913A (en) * | 1990-08-27 | 1992-02-11 | Unisys Corporation | Short-record data compression and decompression system |
US5307413A (en) * | 1991-07-19 | 1994-04-26 | Process Software Corporation | Method and apparatus for adding data compression and other services in a computer network |
FR2683341A1 (fr) * | 1991-10-30 | 1993-05-07 | Apple Computer | Procede et appareil pour reduire la transmission de donnees par la mise en antememoire indexee de donnees. |
US5371499A (en) * | 1992-02-28 | 1994-12-06 | Intersecting Concepts, Inc. | Data compression using hashing |
US5485526A (en) * | 1992-06-02 | 1996-01-16 | Hewlett-Packard Corporation | Memory circuit for lossless data compression/decompression dictionary storage |
US5337329A (en) * | 1992-07-07 | 1994-08-09 | Jack Foster | Fluid laser having a roughened, catalytic inner surface |
US5450562A (en) * | 1992-10-19 | 1995-09-12 | Hewlett-Packard Company | Cache-based data compression/decompression |
US5394879A (en) * | 1993-03-19 | 1995-03-07 | Gorman; Peter G. | Biomedical response monitor-exercise equipment and technique using error correction |
US5521597A (en) * | 1993-08-02 | 1996-05-28 | Mircosoft Corporation | Data compression for network transport |
US5864554A (en) | 1993-10-20 | 1999-01-26 | Lsi Logic Corporation | Multi-port network adapter |
ES2211907T3 (es) * | 1994-07-05 | 2004-07-16 | Koninklijke Philips Electronics N.V. | Sistema de procesamiento de señales. |
US5592227A (en) * | 1994-09-15 | 1997-01-07 | Vcom, Inc. | Method and apparatus for compressing a digital signal using vector quantization |
US5771010A (en) * | 1995-03-22 | 1998-06-23 | Ibm Corporation | Apparatus for compressing data using a Lempel-Ziv-type algorithm |
KR100226528B1 (ko) * | 1995-03-29 | 1999-10-15 | 가나이 쓰도무 | 다중화 압축화상/음성데이타의 복호장치 |
US5867114A (en) * | 1996-02-29 | 1999-02-02 | Mitel Corporation | Method and apparatus for performing data compression |
US5940596A (en) | 1996-03-25 | 1999-08-17 | I-Cube, Inc. | Clustered address caching system for a network switch |
US5754791A (en) | 1996-03-25 | 1998-05-19 | I-Cube, Inc. | Hierarchical address translation system for a network switch |
JP3866793B2 (ja) * | 1996-05-21 | 2007-01-10 | ヒューレット・パッカード・カンパニー | ネットワークシステム |
US6172972B1 (en) * | 1996-05-28 | 2001-01-09 | Microsoft Corporation | Multi-packet transport structure and method for sending network data over satellite network |
US5996022A (en) * | 1996-06-03 | 1999-11-30 | Webtv Networks, Inc. | Transcoding data in a proxy computer prior to transmitting the audio data to a client |
US5951623A (en) * | 1996-08-06 | 1999-09-14 | Reynar; Jeffrey C. | Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases |
US6369855B1 (en) | 1996-11-01 | 2002-04-09 | Texas Instruments Incorporated | Audio and video decoder circuit and system |
EP0866611A1 (en) * | 1997-03-21 | 1998-09-23 | CANAL+ Société Anonyme | Broadcast receiving system comprising a computer and a decoder |
US6009097A (en) | 1997-04-04 | 1999-12-28 | Lucent Technologies Inc. | System for routing packet switched traffic |
US6067381A (en) | 1997-06-13 | 2000-05-23 | International Business Machines Corporation | Method of reinitializing dictionaries in a data transmission system using data compression |
US6907048B1 (en) | 1997-10-14 | 2005-06-14 | Alvarion Israel (2003) Ltd. | Method and apparatus for transporting ethernet data packets via radio frames in a wireless metropolitan area network |
US7237036B2 (en) | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US6484210B1 (en) * | 1997-11-10 | 2002-11-19 | General Instrument Corporation | Packet processing relay agent to provide link layer forwarding in one-way cable/wireless/satellite modems |
US6339595B1 (en) | 1997-12-23 | 2002-01-15 | Cisco Technology, Inc. | Peer-model support for virtual private networks with potentially overlapping addresses |
US6498809B1 (en) * | 1998-01-20 | 2002-12-24 | Motorola, Inc. | Video bitstream error resilient transcoder, method, video-phone, video-communicator and device |
US6119171A (en) * | 1998-01-29 | 2000-09-12 | Ip Dynamics, Inc. | Domain name routing |
US6100824A (en) | 1998-04-06 | 2000-08-08 | National Dispatch Center, Inc. | System and method for data compression |
US6490276B1 (en) | 1998-06-29 | 2002-12-03 | Nortel Networks Limited | Stackable switch port collapse mechanism |
US6363056B1 (en) | 1998-07-15 | 2002-03-26 | International Business Machines Corporation | Low overhead continuous monitoring of network performance |
US6427187B2 (en) | 1998-07-31 | 2002-07-30 | Cache Flow, Inc. | Multiple cache communication |
US6584093B1 (en) * | 1998-08-25 | 2003-06-24 | Cisco Technology, Inc. | Method and apparatus for automatic inter-domain routing of calls |
US6456209B1 (en) * | 1998-12-01 | 2002-09-24 | Lucent Technologies Inc. | Method and apparatus for deriving a plurally parsable data compression dictionary |
US6822589B1 (en) * | 1999-01-29 | 2004-11-23 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US6760336B1 (en) * | 1999-02-18 | 2004-07-06 | Nortel Networks Limited | Flow detection scheme to support QoS flows between source and destination nodes |
US6937574B1 (en) * | 1999-03-16 | 2005-08-30 | Nortel Networks Limited | Virtual private networks and methods for their operation |
US6771646B1 (en) * | 1999-06-30 | 2004-08-03 | Hi/Fn, Inc. | Associative cache structure for lookups and updates of flow records in a network monitor |
DE60045552D1 (de) * | 1999-06-30 | 2011-03-03 | Apptitude Inc | Verfahren und gerät um den netzwerkverkehr zu überwachen |
US6614785B1 (en) | 2000-01-05 | 2003-09-02 | Cisco Technology, Inc. | Automatic propagation of circuit information in a communications network |
US7162539B2 (en) * | 2000-03-16 | 2007-01-09 | Adara Networks, Inc. | System and method for discovering information objects and information object repositories in computer networks |
US6388584B1 (en) | 2000-03-16 | 2002-05-14 | Lucent Technologies Inc. | Method and apparatus for data compression of network packets |
US6785237B1 (en) | 2000-03-31 | 2004-08-31 | Networks Associates Technology, Inc. | Method and system for passive quality of service monitoring of a network |
US6748520B1 (en) * | 2000-05-02 | 2004-06-08 | 3Com Corporation | System and method for compressing and decompressing a binary code image |
IL153955A0 (en) * | 2000-07-25 | 2003-07-31 | Peribit Networks Inc | Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data |
AU2002211560A1 (en) | 2000-10-12 | 2002-04-22 | Signafor, Inc. | Advanced switching mechanism for providing high-speed communications with high quality of service |
US7379475B2 (en) | 2002-01-25 | 2008-05-27 | Nvidia Corporation | Communications processor |
WO2003025709A2 (en) | 2001-09-19 | 2003-03-27 | Bay Microsystems, Inc. | Vertical instruction and data processing in a network processor architecture |
US7496689B2 (en) | 2002-04-22 | 2009-02-24 | Alacritech, Inc. | TCP/IP offload device |
-
2001
- 2001-05-31 US US09/872,184 patent/US6856651B2/en not_active Expired - Lifetime
- 2001-07-18 AU AU2001277914A patent/AU2001277914B2/en not_active Ceased
- 2001-07-18 CN CNB018162134A patent/CN100380815C/zh not_active Expired - Lifetime
- 2001-07-18 NZ NZ523657A patent/NZ523657A/en unknown
- 2001-07-18 EP EP01955862A patent/EP1307967B1/en not_active Expired - Lifetime
- 2001-07-18 DE DE60140256T patent/DE60140256D1/de not_active Expired - Lifetime
- 2001-07-18 AU AU7791401A patent/AU7791401A/xx active Pending
- 2001-07-18 JP JP2002514940A patent/JP4759214B2/ja not_active Expired - Fee Related
- 2001-07-18 CA CA002418314A patent/CA2418314C/en not_active Expired - Fee Related
- 2001-07-18 AT AT01955862T patent/ATE446612T1/de not_active IP Right Cessation
- 2001-07-18 CN CN200810081547.3A patent/CN101277117B/zh not_active Expired - Lifetime
- 2001-07-18 WO PCT/US2001/022690 patent/WO2002009339A2/en active IP Right Grant
- 2001-07-18 IL IL15395701A patent/IL153957A0/xx active IP Right Grant
-
2003
- 2003-01-14 IL IL153957A patent/IL153957A/en not_active IP Right Cessation
-
2005
- 2005-01-27 US US11/046,287 patent/US7167593B2/en not_active Expired - Lifetime
-
2007
- 2007-01-22 US US11/625,590 patent/US7263238B2/en not_active Expired - Lifetime
- 2007-07-18 US US11/779,692 patent/US7430331B2/en not_active Expired - Lifetime
-
2008
- 2008-09-29 US US12/240,348 patent/US7760954B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6268325A (ja) * | 1985-09-20 | 1987-03-28 | Oki Electric Ind Co Ltd | 文章圧縮・伸展方式 |
JPH0546358A (ja) * | 1991-07-15 | 1993-02-26 | Sharp Corp | テキストデータの圧縮方法 |
JPH0773013A (ja) * | 1993-06-22 | 1995-03-17 | Seiko Epson Corp | データ圧縮方法、データ復元方法及び情報処理装置 |
JPH11215007A (ja) * | 1998-01-22 | 1999-08-06 | Fujitsu Ltd | データ圧縮装置及び復元装置並びにその方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2004511928A (ja) | 2004-04-15 |
CA2418314A1 (en) | 2002-01-31 |
AU7791401A (en) | 2002-02-05 |
US20020037035A1 (en) | 2002-03-28 |
CN1630984A (zh) | 2005-06-22 |
CN101277117B (zh) | 2016-05-11 |
EP1307967A2 (en) | 2003-05-07 |
US20090022413A1 (en) | 2009-01-22 |
ATE446612T1 (de) | 2009-11-15 |
CN101277117A (zh) | 2008-10-01 |
EP1307967A4 (en) | 2005-05-04 |
US7167593B2 (en) | 2007-01-23 |
US7760954B2 (en) | 2010-07-20 |
WO2002009339A3 (en) | 2002-07-11 |
US20070115151A1 (en) | 2007-05-24 |
US20050169364A1 (en) | 2005-08-04 |
WO2002009339A2 (en) | 2002-01-31 |
AU2001277914B2 (en) | 2006-07-06 |
CA2418314C (en) | 2009-10-13 |
EP1307967B1 (en) | 2009-10-21 |
US7263238B2 (en) | 2007-08-28 |
US7430331B2 (en) | 2008-09-30 |
US20080016246A1 (en) | 2008-01-17 |
CN100380815C (zh) | 2008-04-09 |
IL153957A (en) | 2007-10-31 |
US6856651B2 (en) | 2005-02-15 |
NZ523657A (en) | 2004-11-26 |
DE60140256D1 (de) | 2009-12-03 |
IL153957A0 (en) | 2003-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4759214B2 (ja) | 漸進的で連続的なデータ圧縮のためのシステム及び方法 | |
AU2001277914A1 (en) | Incremental and continuous data compression | |
US7403136B2 (en) | Block data compression system, comprising a compression device and a decompression device and method for rapid block data compression with multi-byte search | |
US7688233B2 (en) | Compression for deflate algorithm | |
WO2003034597A1 (en) | Huffman coding | |
JPH0830432A (ja) | データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置 | |
KR19990029626A (ko) | 적응형 데이터 압축을 수행하는 방법 및 장치 | |
US8909813B2 (en) | Efficient processing of compressed communication traffic | |
US10897270B2 (en) | Dynamic dictionary-based data symbol encoding | |
JP2536422B2 (ja) | デ―タ圧縮装置及びデ―タ復元装置 | |
EP1895665A2 (en) | System and method for incremental and continuous data compression | |
Savari | Redundancy of the Lempel-Ziv string matching code | |
JP6168595B2 (ja) | データ圧縮器及びデータ解凍器 | |
Islam et al. | Thesis report | |
JP3425142B2 (ja) | データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置 | |
JP2002232298A (ja) | データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置 | |
Mubi et al. | Performance Evaluation of Forward Difference Scheme on Huffman Algorithm to Compress and Decompress Data | |
Choi | Comparison of Methods for Text Compression | |
Baer | Prefix Coding under Siege |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20071016 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20071016 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080108 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100615 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100901 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100908 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110425 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110524 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110606 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140610 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |