JP2003519945A - データの送信または記憶のための効率的で可逆的な変換 - Google Patents
データの送信または記憶のための効率的で可逆的な変換Info
- Publication number
- JP2003519945A JP2003519945A JP2001550616A JP2001550616A JP2003519945A JP 2003519945 A JP2003519945 A JP 2003519945A JP 2001550616 A JP2001550616 A JP 2001550616A JP 2001550616 A JP2001550616 A JP 2001550616A JP 2003519945 A JP2003519945 A JP 2003519945A
- Authority
- JP
- Japan
- Prior art keywords
- state information
- transformation
- message
- numerical value
- selecting
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/007—Transform coding, e.g. discrete cosine transform
-
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- Multimedia (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】
可逆データ圧縮のシステムおよび方法。データの内容値と等しく、表現するためにはより少ないビットしか必要としない数学的変換が発見された。
Description
【0001】
本願は、参照によりその全体が組み込まれる、2000年1月3日出願、米国
特許出願第60/174,305号の優先権を35U.S.C.§119(e)
の下に主張する。
特許出願第60/174,305号の優先権を35U.S.C.§119(e)
の下に主張する。
【0002】
背景
発明の分野
本発明は、データ変換に関し、より詳細には、可逆データ圧縮に関する。
【0003】
発明の背景
既存の圧縮技術は、入力されたバイナリ・データにおける冗長性を捜し出して
除去することに焦点を合わせている。初期の圧縮の手法は、データの形式に焦点
を合わせていた。これらの形式による手法はランレングス符号化(RLE)と、
様々な種類の頻度マッピング方法とを使用している。パターンを符号化するこれ
らの手法は、ASCII文字データに対しては役に立つが、他のデータ形式に対
しては圧縮可能な域には達していない。
除去することに焦点を合わせている。初期の圧縮の手法は、データの形式に焦点
を合わせていた。これらの形式による手法はランレングス符号化(RLE)と、
様々な種類の頻度マッピング方法とを使用している。パターンを符号化するこれ
らの手法は、ASCII文字データに対しては役に立つが、他のデータ形式に対
しては圧縮可能な域には達していない。
【0004】
圧縮技術の進歩は、情報理論、特に情報エントロピーにおけるクロード・シャ
ノンの研究から発展した。この研究の大部分は、元来、統計学的なものである。
シャノン−ファノおよびハフマン符号化は、ソース・データにおけるシンボルの
出現する確率の樹を降順で構築し、「良好な」可変サイズの符号の生成を可能に
した。これは、しばしばエントロピー符号化と称される。圧縮が達成されるのは
、より頻繁に出現するバイナリ・パターンがより短い符号に割り当てられ、1つ
のメッセージに対して必要とされる全体的なビットの平均値を低減することが可
能になるからである。
ノンの研究から発展した。この研究の大部分は、元来、統計学的なものである。
シャノン−ファノおよびハフマン符号化は、ソース・データにおけるシンボルの
出現する確率の樹を降順で構築し、「良好な」可変サイズの符号の生成を可能に
した。これは、しばしばエントロピー符号化と称される。圧縮が達成されるのは
、より頻繁に出現するバイナリ・パターンがより短い符号に割り当てられ、1つ
のメッセージに対して必要とされる全体的なビットの平均値を低減することが可
能になるからである。
【0005】
シャノン−ファノおよびハフマン符号化は、パターンが出現する確率が2の負
のべき乗であるときのみ最適である。これらの方法は、データの変化に合わせて
確率の樹を最適化するいくつかの適応バージョンを生み出した。
のべき乗であるときのみ最適である。これらの方法は、データの変化に合わせて
確率の樹を最適化するいくつかの適応バージョンを生み出した。
【0006】
算術符号化は、データ全体に1つの(通常の長さの)符号を割り当てることに
よって、2の負のべき乗の確率の問題を克服した。この方法は、データを1つ1
つのシンボルごとに読み取り、より多くのパターンが認識されるたびに、出力さ
れる符号にビットを追加する。
よって、2の負のべき乗の確率の問題を克服した。この方法は、データを1つ1
つのシンボルごとに読み取り、より多くのパターンが認識されるたびに、出力さ
れる符号にビットを追加する。
【0007】
テキストの符号化にさらなる効率が求められ、J.ZivおよびA.Lemp
elによって開発されたLZ系のアルゴリズムに代表される辞書型符号化の開発
と発展がもたらされた。これらの方法は無数の異型を生んだ。これらの方法では
、シンボルのストリング(1つの辞書)は、それらが発生する際に構築され、次
いでトークンとして符号化される。その結果、出力はインデックスと生データの
混合となる。
elによって開発されたLZ系のアルゴリズムに代表される辞書型符号化の開発
と発展がもたらされた。これらの方法は無数の異型を生んだ。これらの方法では
、シンボルのストリング(1つの辞書)は、それらが発生する際に構築され、次
いでトークンとして符号化される。その結果、出力はインデックスと生データの
混合となる。
【0008】
エントロピー符号化と同様に、辞書型の方法も静的である場合と順応性のある
場合とがある。LZ系の異型は、辞書とそのインデックスを最適化するために異
なる技術を使用する。これらの技術には、検索バッファ、先取りバッファ、履歴
バッファ、スライディング・ウィンドウ、ハッシュ・テーブル、および巡回待ち
行列が含まれる。これらの技術は、めったに使用されない辞書項目の肥大化を抑
える働きをする。これらの方法の人気は、その簡素さ、速度、適度な圧縮率、お
よびメモリ要件の低さによるものである。
場合とがある。LZ系の異型は、辞書とそのインデックスを最適化するために異
なる技術を使用する。これらの技術には、検索バッファ、先取りバッファ、履歴
バッファ、スライディング・ウィンドウ、ハッシュ・テーブル、および巡回待ち
行列が含まれる。これらの技術は、めったに使用されない辞書項目の肥大化を抑
える働きをする。これらの方法の人気は、その簡素さ、速度、適度な圧縮率、お
よびメモリ要件の低さによるものである。
【0009】
異なるタイプの情報は、特定のバイナリ・パターンを作成する傾向がある。冗
長性またはエントロピー圧縮方法は、シンボリック・データと、認識し、マッピ
ングし、低減することができる固有のパターンとに直接的に依存している。した
がって、異なるタイプの情報には異なる方法が最適化されなければならない。こ
の圧縮法は、基礎となるデータをモデル化する方法と同程度に有効である。しか
し、マッピングし、低減することができる構造には限界がある。
長性またはエントロピー圧縮方法は、シンボリック・データと、認識し、マッピ
ングし、低減することができる固有のパターンとに直接的に依存している。した
がって、異なるタイプの情報には異なる方法が最適化されなければならない。こ
の圧縮法は、基礎となるデータをモデル化する方法と同程度に有効である。しか
し、マッピングし、低減することができる構造には限界がある。
【0010】
冗長性に基づく方法は、用途および/または性能において制限される。一般に
、エントロピー符号化は、効率よく除去することができる限られた冗長性に対処
するときは、速度または圧縮の点で妥協する。通常、これらの方法は、非常に低
い圧縮利得を有する。主な利点は、エントロピー符号化が、可逆であり続けるた
めに実施することができることである。
、エントロピー符号化は、効率よく除去することができる限られた冗長性に対処
するときは、速度または圧縮の点で妥協する。通常、これらの方法は、非常に低
い圧縮利得を有する。主な利点は、エントロピー符号化が、可逆であり続けるた
めに実施することができることである。
【0011】
非可逆圧縮は、スピーチ、オーディオ、画像、およびビデオを表現するデータ
などの拡散するデータにしばしば適用される場合がある。非可逆圧縮は、データ
を正確に復元できないことを暗示している。ある種の用途は、情報を解釈するこ
とにおける人間の聴覚および視覚の方式が限られていることにより、圧縮および
再構成中にデータを失っても差し支えない場合がある。知覚符号化の技術は、人
間の目や耳のこれらの制約を利用するために使用される。上記の技術の1つを使
用する、エントロピー符号化が後に続く知覚符号化モデルは、効率よい圧縮を提
供する。しかし、要件が非常に異なるため、データのタイプごとに独自のモデル
(およびエントロピー・コーダ)が必要となる。さらに、このような圧縮技術の
非可逆的な性質は、結果が、顕著な場合はオリジナルから多少の正確さを失い、
多くの用途に対してその結果を不適切にすることを意味する。
などの拡散するデータにしばしば適用される場合がある。非可逆圧縮は、データ
を正確に復元できないことを暗示している。ある種の用途は、情報を解釈するこ
とにおける人間の聴覚および視覚の方式が限られていることにより、圧縮および
再構成中にデータを失っても差し支えない場合がある。知覚符号化の技術は、人
間の目や耳のこれらの制約を利用するために使用される。上記の技術の1つを使
用する、エントロピー符号化が後に続く知覚符号化モデルは、効率よい圧縮を提
供する。しかし、要件が非常に異なるため、データのタイプごとに独自のモデル
(およびエントロピー・コーダ)が必要となる。さらに、このような圧縮技術の
非可逆的な性質は、結果が、顕著な場合はオリジナルから多少の正確さを失い、
多くの用途に対してその結果を不適切にすることを意味する。
【0012】
したがって、可逆的であり、かつ高い圧縮利得を可能にする圧縮方法が求めら
れている。 発明の概要 本発明は、バイナリ・データを圧縮する。データはセグメントに分割される。
これらセグメントのそれぞれは数値を有している。変換は、その変換に関する状
態情報と共に、各セグメントに対して選択される。状態情報を伴う変換の数値は
、セグメントの数値に等しい。変換、状態情報、およびパケット・オーバーヘッ
ドは、変換パケットにパッケージ化される。変換パケットのビット長は、生セグ
メントおよび必須のパケット・オーバーヘッドを含むセグメント・パケットのビ
ット長と比較される。より短いビット長のパケットが選択されて、記憶または送
信される。パケットの受信後、または記憶装置からのパケットの取り出し後、各
セグメントの数値は必要に応じて変換および状態情報から再計算される。セグメ
ントは、元のバイナリ・データを再構成するために組み替えられる。
れている。 発明の概要 本発明は、バイナリ・データを圧縮する。データはセグメントに分割される。
これらセグメントのそれぞれは数値を有している。変換は、その変換に関する状
態情報と共に、各セグメントに対して選択される。状態情報を伴う変換の数値は
、セグメントの数値に等しい。変換、状態情報、およびパケット・オーバーヘッ
ドは、変換パケットにパッケージ化される。変換パケットのビット長は、生セグ
メントおよび必須のパケット・オーバーヘッドを含むセグメント・パケットのビ
ット長と比較される。より短いビット長のパケットが選択されて、記憶または送
信される。パケットの受信後、または記憶装置からのパケットの取り出し後、各
セグメントの数値は必要に応じて変換および状態情報から再計算される。セグメ
ントは、元のバイナリ・データを再構成するために組み替えられる。
【0013】
好ましい実施形態の詳細な説明
図1は、圧縮プロセス100の概略を示すフロー・チャートである。最初の入
力102はバイナリ・データである。バイナリ・データはいずれも、単にバイナ
リ形態で表された数である。したがって、バイナリ・データはいずれも数値を有
する。この数値がそのデータの「内容値」である。
力102はバイナリ・データである。バイナリ・データはいずれも、単にバイナ
リ形態で表された数である。したがって、バイナリ・データはいずれも数値を有
する。この数値がそのデータの「内容値」である。
【0014】
入力されたバイナリ・データ102は、必要であればセグメントに分割される
(104)。入力バイナリ・データは、十分に短くそれ以上分割しない場合もあ
る。各セグメントは内容値を有する。各セグメントの内容値を識別し、セグメン
トごとに適切な状態情報と併せて変換を選択し、テストする(106)。一般的
な変換は、多数の値を表すことができる。状態情報は、その変換に正確な値を指
定するのに必要な情報を提供する。用語「状態情報」は、任意の変数、係数、剰
余、あるいはその変換に特定の数値を設定するのに必要な任意の他の情報を含む
。実施形態によっては、変換および状態情報に「パケット・オーバーヘッド」を
加える。パケット・オーバーヘッドには、後に元のセグメントを再計算し、元の
入力バイナリ・データを再構成することを可能にするのに必要とされる、変換と
状態情報以外の任意の情報が含まれる。
(104)。入力バイナリ・データは、十分に短くそれ以上分割しない場合もあ
る。各セグメントは内容値を有する。各セグメントの内容値を識別し、セグメン
トごとに適切な状態情報と併せて変換を選択し、テストする(106)。一般的
な変換は、多数の値を表すことができる。状態情報は、その変換に正確な値を指
定するのに必要な情報を提供する。用語「状態情報」は、任意の変数、係数、剰
余、あるいはその変換に特定の数値を設定するのに必要な任意の他の情報を含む
。実施形態によっては、変換および状態情報に「パケット・オーバーヘッド」を
加える。パケット・オーバーヘッドには、後に元のセグメントを再計算し、元の
入力バイナリ・データを再構成することを可能にするのに必要とされる、変換と
状態情報以外の任意の情報が含まれる。
【0015】
その状態情報を有する変換は、それに対応するセグメントと同じ数値を有する
。次の式は、変換の概念を表す。 M=T(状態情報) ここでMはセグメントの内容値であり、Tが変換である。この変換は算術的変換
、論理的変換、あるいは別の数学的変換である。
。次の式は、変換の概念を表す。 M=T(状態情報) ここでMはセグメントの内容値であり、Tが変換である。この変換は算術的変換
、論理的変換、あるいは別の数学的変換である。
【0016】
その状態情報とパケット・オーバーヘッドを有する変換は、表現効率性利得(
「REG」)を有する。REGは、変換、状態情報、およびパケット・オーバー
ヘッドの効率性の測定値である。REGは、Log2M/Log2Tの比として定
義され、Log2MはMを表すのに必要なバイナリ・ビット数であり、Log2T
は、変換、状態情報、およびパケット・オーバーヘッドを復号可能な形で表すの
に必要なバイナリ・ビット数である。したがって、REGの値が1よりも大きい
場合、変換と状態情報とパケット・オーバーヘッドの合計が占めるビットはセグ
メントよりも少なくなる。
「REG」)を有する。REGは、変換、状態情報、およびパケット・オーバー
ヘッドの効率性の測定値である。REGは、Log2M/Log2Tの比として定
義され、Log2MはMを表すのに必要なバイナリ・ビット数であり、Log2T
は、変換、状態情報、およびパケット・オーバーヘッドを復号可能な形で表すの
に必要なバイナリ・ビット数である。したがって、REGの値が1よりも大きい
場合、変換と状態情報とパケット・オーバーヘッドの合計が占めるビットはセグ
メントよりも少なくなる。
【0017】
例えば、9ビット・サイズのメッセージは、変換aのbc乗を表すことができ
、このa、b、およびcはそれぞれ3ビットのメッセージになる。この場合、a
のbc乗が変換であり、a、b、およびcはそれぞれ変換の変数である。a、b
、およびcの値が状態情報を構成する。その数値がセグメントの内容値に等しい
式を作るには、変換と状態情報の両方が必要である。
、このa、b、およびcはそれぞれ3ビットのメッセージになる。この場合、a
のbc乗が変換であり、a、b、およびcはそれぞれ変換の変数である。a、b
、およびcの値が状態情報を構成する。その数値がセグメントの内容値に等しい
式を作るには、変換と状態情報の両方が必要である。
【0018】
上記のaのbc乗の例によると、9ビットで、10進法の桁数で700,00
0桁を超える整数を表すことができ、これは230万を超えるバイナリ・ビット
に相当する。一例として、この変換は、9ビットだけを使用することにより、1
50,094,635,296,999,121、すなわち3の62乗の内容値
を表すことができる。従来の方式でバイナリ形態で表した場合、この数は58ビ
ットを占めることになる。したがって、この変換を使用することにより、9ビッ
トのメッセージで58ビットの内容値が送信される。この58ビットのデータ・
セグメントは、大幅に圧縮されている。
0桁を超える整数を表すことができ、これは230万を超えるバイナリ・ビット
に相当する。一例として、この変換は、9ビットだけを使用することにより、1
50,094,635,296,999,121、すなわち3の62乗の内容値
を表すことができる。従来の方式でバイナリ形態で表した場合、この数は58ビ
ットを占めることになる。したがって、この変換を使用することにより、9ビッ
トのメッセージで58ビットの内容値が送信される。この58ビットのデータ・
セグメントは、大幅に圧縮されている。
【0019】
次いで、それぞれの変換と、それに伴う状態情報がパケットにパッケージされ
る(108)。このパケットは、追加のパケット・オーバーヘッドを含み、これ
は後にそのパケットのパッケージを解除して、その内容値を回復するのを可能に
するのに必要な任意の他の情報を提供する。このパケット・オーバーヘッドは、
セグメントを識別し、変換を識別する情報、あるいは任意の他の情報を含むこと
ができる。このパケットは、通例、表すのに使用するビットが元のセグメントよ
りも少ない。したがって、セグメントが圧縮されていることになる。
る(108)。このパケットは、追加のパケット・オーバーヘッドを含み、これ
は後にそのパケットのパッケージを解除して、その内容値を回復するのを可能に
するのに必要な任意の他の情報を提供する。このパケット・オーバーヘッドは、
セグメントを識別し、変換を識別する情報、あるいは任意の他の情報を含むこと
ができる。このパケットは、通例、表すのに使用するビットが元のセグメントよ
りも少ない。したがって、セグメントが圧縮されていることになる。
【0020】
次いで各パケットを記憶するか、あるいは送信する(110)。パケットは通
常セグメントよりも小さいので、パケットの記憶が占めるスペースはセグメント
よりも少なく、またパケットの送信にかかる時間はセグメントの送信にかかる時
間よりも短い。
常セグメントよりも小さいので、パケットの記憶が占めるスペースはセグメント
よりも少なく、またパケットの送信にかかる時間はセグメントの送信にかかる時
間よりも短い。
【0021】
図2は、回復プロセス200の概要を示すフロー・チャートであり、ここでは
パケットから元のデータを回復する。送信されている場合にはパケットを受信し
(202)、記憶されている場合には記憶装置からパケットを取り出す。次いで
、パケットの符号化を復号して(204)、変換の識別と、元のセグメントを回
復するのに状態情報をどのように使用すべきかを判定する。復号した情報を使用
して、元のセグメントの内容値を再計算する(206)。最後に、再計算された
すべてのセグメントを元の順序でまとめて、元の入力バイナリ・データを再構成
する(208)。したがって、回復プロセス200の出力210は、圧縮プロセ
スの入力102と同一になる。システムの概要 図3は、圧縮システム300のブロック図であり、圧縮システム300におけ
る一般的なデータの流れを表している。圧縮システム300は、図1および図2
のプロセスを行う。圧縮システム300の流れは、圧縮するバイナリ・ストリン
グ302の入力から開始する。
パケットから元のデータを回復する。送信されている場合にはパケットを受信し
(202)、記憶されている場合には記憶装置からパケットを取り出す。次いで
、パケットの符号化を復号して(204)、変換の識別と、元のセグメントを回
復するのに状態情報をどのように使用すべきかを判定する。復号した情報を使用
して、元のセグメントの内容値を再計算する(206)。最後に、再計算された
すべてのセグメントを元の順序でまとめて、元の入力バイナリ・データを再構成
する(208)。したがって、回復プロセス200の出力210は、圧縮プロセ
スの入力102と同一になる。システムの概要 図3は、圧縮システム300のブロック図であり、圧縮システム300におけ
る一般的なデータの流れを表している。圧縮システム300は、図1および図2
のプロセスを行う。圧縮システム300の流れは、圧縮するバイナリ・ストリン
グ302の入力から開始する。
【0022】
制御プログラム306は、圧縮システム300の全機能のプロセス・コントロ
ーラとして作用する。制御プログラム306は、他の圧縮システム300コンポ
ーネントを監視し、処理全体を通じて入力バイナリ・ストリングに関連する情報
をすべて把握する。制御プログラム306はまた、時間、試行、あるいは他のパ
ラメータに従って任意のプロセスと対話し、それを終了する。
ーラとして作用する。制御プログラム306は、他の圧縮システム300コンポ
ーネントを監視し、処理全体を通じて入力バイナリ・ストリングに関連する情報
をすべて把握する。制御プログラム306はまた、時間、試行、あるいは他のパ
ラメータに従って任意のプロセスと対話し、それを終了する。
【0023】
プリプロセッサ304は、入力バイナリ・ストリング302を受け取り、その
バイナリ・ストリング302をセグメントに分割する。各セグメントの長さは、
所与のデータ・タイプ、使用される可能性の高い変換、プロセッサの能力、およ
びアプリケーション・パラメータに対応する。状況によっては、プリプロセッサ
304は、セグメントのより好適なバリエーションを変換エンジン308に与え
るために、セグメントの変異(mutate)も行う。
バイナリ・ストリング302をセグメントに分割する。各セグメントの長さは、
所与のデータ・タイプ、使用される可能性の高い変換、プロセッサの能力、およ
びアプリケーション・パラメータに対応する。状況によっては、プリプロセッサ
304は、セグメントのより好適なバリエーションを変換エンジン308に与え
るために、セグメントの変異(mutate)も行う。
【0024】
変換エンジン308は、プリプロセッサ304からセグメントを受け取り、変
換と状態情報の順列を計算するが、各順列はそのセグメントの内容値に相当する
。それに関連付けられたパケット・オーバーヘッドを含めて各順列のサイズを分
析し、変換、状態情報、およびパケット・オーバーヘッドの最も効率的な組み合
わせを選択する。順列がデータ圧縮を示さない場合は、セグメントを修正せずに
生データとしてパッケージャ310に送信する。
換と状態情報の順列を計算するが、各順列はそのセグメントの内容値に相当する
。それに関連付けられたパケット・オーバーヘッドを含めて各順列のサイズを分
析し、変換、状態情報、およびパケット・オーバーヘッドの最も効率的な組み合
わせを選択する。順列がデータ圧縮を示さない場合は、セグメントを修正せずに
生データとしてパッケージャ310に送信する。
【0025】
パッケージャ310は、変換エンジン308の出力を受け取る。各セグメント
について、パッケージャは関連するすべての情報を制御プログラム306から受
取り、これには状態情報と、セグメントをどのように変換したかが含まれる。変
換、状態情報、およびその他の関連情報から、パッケージャ310はパケットを
生成する。したがって、パケットは、併せて後にそのパケットを復号することを
可能にする、変換、状態情報、およびオーバーヘッド情報を含むことになる。
について、パッケージャは関連するすべての情報を制御プログラム306から受
取り、これには状態情報と、セグメントをどのように変換したかが含まれる。変
換、状態情報、およびその他の関連情報から、パッケージャ310はパケットを
生成する。したがって、パケットは、併せて後にそのパケットを復号することを
可能にする、変換、状態情報、およびオーバーヘッド情報を含むことになる。
【0026】
この時点で、入力バイナリ・ストリング302はセグメント化され、変換され
、そしてパケットにパッケージされている。これらのパケットは合わせても、元
の入力バイナリ・ストリング302より小さい。これらのパケットは、確立され
た記憶装置に記憶することも、あるいは伝送プロトコル312を通じて送信する
こともできる。パケットはもとの入力バイナリ・ストリングよりも小さいので、
元のバイナリ・データに比べて占める記憶空間が少なく、送信をより迅速に行え
るという利点を有する。
、そしてパケットにパッケージされている。これらのパケットは合わせても、元
の入力バイナリ・ストリング302より小さい。これらのパケットは、確立され
た記憶装置に記憶することも、あるいは伝送プロトコル312を通じて送信する
こともできる。パケットはもとの入力バイナリ・ストリングよりも小さいので、
元のバイナリ・データに比べて占める記憶空間が少なく、送信をより迅速に行え
るという利点を有する。
【0027】
アンパッケージャ314は、パケットを送信した場合にはパケットを受信し、
パケットを記憶した場合には記憶装置からパケットを取り出す。アンパッケージ
ャ314は、パケット・オーバーヘッド命令を解釈し、デコーダ316で使用す
るためにパケットの構成要素とそれに関連付けられた情報をアンパックし、無変
更のデータがあればそれを生データのセグメントとしてアンパックする。
パケットを記憶した場合には記憶装置からパケットを取り出す。アンパッケージ
ャ314は、パケット・オーバーヘッド命令を解釈し、デコーダ316で使用す
るためにパケットの構成要素とそれに関連付けられた情報をアンパックし、無変
更のデータがあればそれを生データのセグメントとしてアンパックする。
【0028】
デコーダ316は、アンパッケージされた情報をアンパッケージャ314から
受取り、元のセグメントの内容値を再計算する。デコーダ316は、状態情報を
該当する変換に適用して、そのセグメントの内容値を再計算する。データが変異
されている場合には、その所与のセグメントについてこのプロセスを逆に行って
、セグメントの元の形式を回復する。
受取り、元のセグメントの内容値を再計算する。デコーダ316は、状態情報を
該当する変換に適用して、そのセグメントの内容値を再計算する。データが変異
されている場合には、その所与のセグメントについてこのプロセスを逆に行って
、セグメントの元の形式を回復する。
【0029】
リコンスティチュータ318はデコーダ316からセグメントを受取り、セグ
メントを順番に連結して、元のバイナリ・ストリングを再構成する。アプリケー
ション・パラメータに基づき、これはアプリケーションの必要に応じてファイル
全体に行うことも、ストリーム化することもできる。リコンスティチュータ31
8は次いでバイナリ・ストリング320を出力する。リコンスティチュータ31
8によって出力されるバイナリ・ストリング320は、入力バイナリ・ストリン
グと同じものになる。このように、圧縮システム300は可逆的圧縮を提供する
。制御プログラム 制御プログラム306は、各データ・セグメントとセグメントの変換に関連す
るデータ、ならびにプリプロセッサ304、変換エンジン308、およびその他
の圧縮システム300の全機能に関する情報を把握する。この情報は以下を含む
ことができるが、これに限定するものではない。
メントを順番に連結して、元のバイナリ・ストリングを再構成する。アプリケー
ション・パラメータに基づき、これはアプリケーションの必要に応じてファイル
全体に行うことも、ストリーム化することもできる。リコンスティチュータ31
8は次いでバイナリ・ストリング320を出力する。リコンスティチュータ31
8によって出力されるバイナリ・ストリング320は、入力バイナリ・ストリン
グと同じものになる。このように、圧縮システム300は可逆的圧縮を提供する
。制御プログラム 制御プログラム306は、各データ・セグメントとセグメントの変換に関連す
るデータ、ならびにプリプロセッサ304、変換エンジン308、およびその他
の圧縮システム300の全機能に関する情報を把握する。この情報は以下を含む
ことができるが、これに限定するものではない。
【0030】
1.元の入力バイナリ・ストリングにおけるセグメントの位置を提供する情報
を含む、各セグメントの識別 2.各セグメントのサイズ 3.各セグメントのデータ・タイプ 4.変換エンジン308の計算能力 5.デコーダ316の計算能力 6.実時間のストリーミング・アプリケーションにおける時間の制約などのア
プリケーション要件 7.データ・タイプの要件 8.セグメントの変形の有無、およびセグメントの変形に使用された技術 9.そのセグメントにプリプロセッサ304が費やした時間 10.そのセグメントにプリプロセッサ304が費やした計算サイクル 11.そのセグメントに変換エンジン308が費やした時間 12.そのセグメントに変換エンジン308が費やした計算サイクル 13.そのセグメントに使用された1つまたは複数の変換の識別 14.状態情報の変数を選択するのに使用された任意の組み合わせ最適化ヒュ
ーリスティック 15.使用された任意のヒューリスティックに関連する追跡情報 16.成功した変換 17.成功した変換の状態情報 18.成功した変換についての変換の参照およびそれに関連付けられた状態情
報のビット長 19.成功した変換に関連するパケット・オーバーヘッドのビット長 20.部分的な解法の変換 21.部分的な解法の状態情報(オフセットを含む) 22.部分的な解法についての変換参照とそれに関連付けられた状態情報のビ
ット長 23.部分的な解法で使用された変換のパケット・オーバーヘッドのビット長 24.使用された有限状態機械 25.参照データや有限状態機械のツリー・データなどの有限状態機械情報 26.de Bruijun数列の開始点とインデックスのログ 27.3Dグラフ・ツリーの追跡情報 28.N空間曲線のデータ 29.使用された「BOTS」 30.BOTSの内容値の位置や、BOTSからセグメントの内容値へのデル
タなどのBOTS情報 プロセス・モニタ(図示せず)は、制御プログラム306の主要なサブパート
である。プロセス・モニタは、プリプロセッサ304および変換エンジン308
を監視する。プロセス・モニタは、プリプロセッサ304および変換エンジン3
08の動作を制約するパラメータを有する。この制約パラメータは、ターゲット
とするREG、処理に費やす時間、処理に費やす計算サイクルの数、あるいはそ
の他のパラメータを含むことができる。ターゲットとするREGは、そのターゲ
ットREGを有する変換、状態情報、およびパケット・オーバーヘッドの組み合
わせが見つかった際に、圧縮システム300がそれより高いREG変換を探すの
を中止するのに十分に高いREG値である。処理に費やす時間と、処理に費やす
計算サイクルについての制約パラメータは、圧縮システム300が、変換と状態
情報の最良の組み合わせを探すのに、無限量の時間と資源を使用しないことを保
証する。このパラメータは、制御プログラム306によって事前設定または変更
することができる。このパラメータが変更されるのは、データ・タイプが変わっ
た場合、計算資源が変化した場合、アプリケーションが変わった場合、あるいは
人間またはその他の外部からの介入による。
を含む、各セグメントの識別 2.各セグメントのサイズ 3.各セグメントのデータ・タイプ 4.変換エンジン308の計算能力 5.デコーダ316の計算能力 6.実時間のストリーミング・アプリケーションにおける時間の制約などのア
プリケーション要件 7.データ・タイプの要件 8.セグメントの変形の有無、およびセグメントの変形に使用された技術 9.そのセグメントにプリプロセッサ304が費やした時間 10.そのセグメントにプリプロセッサ304が費やした計算サイクル 11.そのセグメントに変換エンジン308が費やした時間 12.そのセグメントに変換エンジン308が費やした計算サイクル 13.そのセグメントに使用された1つまたは複数の変換の識別 14.状態情報の変数を選択するのに使用された任意の組み合わせ最適化ヒュ
ーリスティック 15.使用された任意のヒューリスティックに関連する追跡情報 16.成功した変換 17.成功した変換の状態情報 18.成功した変換についての変換の参照およびそれに関連付けられた状態情
報のビット長 19.成功した変換に関連するパケット・オーバーヘッドのビット長 20.部分的な解法の変換 21.部分的な解法の状態情報(オフセットを含む) 22.部分的な解法についての変換参照とそれに関連付けられた状態情報のビ
ット長 23.部分的な解法で使用された変換のパケット・オーバーヘッドのビット長 24.使用された有限状態機械 25.参照データや有限状態機械のツリー・データなどの有限状態機械情報 26.de Bruijun数列の開始点とインデックスのログ 27.3Dグラフ・ツリーの追跡情報 28.N空間曲線のデータ 29.使用された「BOTS」 30.BOTSの内容値の位置や、BOTSからセグメントの内容値へのデル
タなどのBOTS情報 プロセス・モニタ(図示せず)は、制御プログラム306の主要なサブパート
である。プロセス・モニタは、プリプロセッサ304および変換エンジン308
を監視する。プロセス・モニタは、プリプロセッサ304および変換エンジン3
08の動作を制約するパラメータを有する。この制約パラメータは、ターゲット
とするREG、処理に費やす時間、処理に費やす計算サイクルの数、あるいはそ
の他のパラメータを含むことができる。ターゲットとするREGは、そのターゲ
ットREGを有する変換、状態情報、およびパケット・オーバーヘッドの組み合
わせが見つかった際に、圧縮システム300がそれより高いREG変換を探すの
を中止するのに十分に高いREG値である。処理に費やす時間と、処理に費やす
計算サイクルについての制約パラメータは、圧縮システム300が、変換と状態
情報の最良の組み合わせを探すのに、無限量の時間と資源を使用しないことを保
証する。このパラメータは、制御プログラム306によって事前設定または変更
することができる。このパラメータが変更されるのは、データ・タイプが変わっ
た場合、計算資源が変化した場合、アプリケーションが変わった場合、あるいは
人間またはその他の外部からの介入による。
【0031】
プリプロセッサ304または変換エンジン308がある制約パラメータを超え
た場合、プロセス・モニタは、プリプロセッサ304または変換エンジン308
の動作を終了するように制御プログラム306に通知する。プリプロセッサ30
4の動作が終了されると、バイナリ・ストリングがセグメントに分割される。セ
グメントの長さは、その時点までにプリプロセッサ304によって求められてい
る最適な長さの最良近似である。変換エンジン308の動作が終了されると、変
換エンジン308はその時点で最良の変換および状態情報を出力するか、あるい
はデータを圧縮する変換がない場合は、生データとしてセグメントを送信する。 プリプロセッサ 図4は、プリプロセッサ304のフロー・チャートである。プリプロセッサ3
04は、まずバイナリ・ストリング302のデータ・タイプを分析する400。
データ・タイプを分析する際、プリプロセッサ304は、バイナリ・ストリング
302のデータ・タイプを識別または特徴付けることを試みる。データ・タイプ
は、そのバイナリ・データのテストおよび変換に使用される、セグメント・サイ
ズ、変換、およびその変換の状態情報の決定を助けるために使用される。プリプ
ロセッサ304は、そのバイナリ・ストリング302によってどのアプリケーシ
ョンが生成されるかを知ることによるか、あるいはデータ自体を分析することに
より、バイナリ・ストリング302を特徴付ける。データ・タイプを求めるため
にデータを分析する方法の1つは、バイナリ・ストリング302を既存のデータ
・タイプのデータベースと比較することである。このようなデータベースを生成
する一方法は、知られるデジタル・アプリケーションによって生成される情報を
サンプリングすることによる。
た場合、プロセス・モニタは、プリプロセッサ304または変換エンジン308
の動作を終了するように制御プログラム306に通知する。プリプロセッサ30
4の動作が終了されると、バイナリ・ストリングがセグメントに分割される。セ
グメントの長さは、その時点までにプリプロセッサ304によって求められてい
る最適な長さの最良近似である。変換エンジン308の動作が終了されると、変
換エンジン308はその時点で最良の変換および状態情報を出力するか、あるい
はデータを圧縮する変換がない場合は、生データとしてセグメントを送信する。 プリプロセッサ 図4は、プリプロセッサ304のフロー・チャートである。プリプロセッサ3
04は、まずバイナリ・ストリング302のデータ・タイプを分析する400。
データ・タイプを分析する際、プリプロセッサ304は、バイナリ・ストリング
302のデータ・タイプを識別または特徴付けることを試みる。データ・タイプ
は、そのバイナリ・データのテストおよび変換に使用される、セグメント・サイ
ズ、変換、およびその変換の状態情報の決定を助けるために使用される。プリプ
ロセッサ304は、そのバイナリ・ストリング302によってどのアプリケーシ
ョンが生成されるかを知ることによるか、あるいはデータ自体を分析することに
より、バイナリ・ストリング302を特徴付ける。データ・タイプを求めるため
にデータを分析する方法の1つは、バイナリ・ストリング302を既存のデータ
・タイプのデータベースと比較することである。このようなデータベースを生成
する一方法は、知られるデジタル・アプリケーションによって生成される情報を
サンプリングすることによる。
【0032】
プリプロセッサ304がバイナリ・ストリング302を特徴付ける場合、制御
プログラム306は、そのストリングと関連付けられたデータ・タイプを記憶す
る。プリプロセッサ304がバイナリ・ストリング302を特徴付けられない場
合、制御プログラム306は、そのバイナリ・ストリング302のデータ・タイ
プが知られていないという記録を保持する。
プログラム306は、そのストリングと関連付けられたデータ・タイプを記憶す
る。プリプロセッサ304がバイナリ・ストリング302を特徴付けられない場
合、制御プログラム306は、そのバイナリ・ストリング302のデータ・タイ
プが知られていないという記録を保持する。
【0033】
プリプロセッサ304は次いで、入力バイナリ・ストリング302のサイズが
、最小の最適な処理ブロック・サイズよりも大きいかどうかを判定する402。
最小の最適処理サイズは、異なるデータ・タイプごとに異なる。制御プログラム
306は、既知の最小の最適な処理サイズそれぞれをそれに対応するデータ・タ
イプと関連づけて記憶する。プリプロセッサ304がデータ・タイプを特徴付け
ており、そのデータ・タイプの最小の最適な処理サイズが知られている場合、プ
リプロセッサ304は単に、入力バイナリ・ストリング302と記憶された最小
の最適な処理サイズとを比較する。
、最小の最適な処理ブロック・サイズよりも大きいかどうかを判定する402。
最小の最適処理サイズは、異なるデータ・タイプごとに異なる。制御プログラム
306は、既知の最小の最適な処理サイズそれぞれをそれに対応するデータ・タ
イプと関連づけて記憶する。プリプロセッサ304がデータ・タイプを特徴付け
ており、そのデータ・タイプの最小の最適な処理サイズが知られている場合、プ
リプロセッサ304は単に、入力バイナリ・ストリング302と記憶された最小
の最適な処理サイズとを比較する。
【0034】
データ・タイプが知られていない、またはあるデータ・タイプの最適サイズが
知られていない場合は、バイナリ・ストリング302を、それまでに多くのタイ
プのデータで良好に作用しているサイズのセグメントに分割する404。あるい
は、最初にバイナリ・ストリング302を、異なるビット長のセグメントに分割
する404。制御プログラム306は、これら異なるビット長のセグメントを圧
縮システム300で処理する際に、最も容易に処理されるセグメント・サイズの
記録を取る。制御プログラム306は、様々なサイズを試し、どのサイズが最も
良好に働くかを追跡することにより、そのタイプのデータの最適な処理サイズが
知られるように、各データ・タイプについての最適な処理サイズの記録を構成す
る。制御プログラム306が、あるデータ・タイプについての最適な処理サイズ
の記録を形成する場合、将来の使用のためにそのセグメント・サイズを組み込む
ことができる。
知られていない場合は、バイナリ・ストリング302を、それまでに多くのタイ
プのデータで良好に作用しているサイズのセグメントに分割する404。あるい
は、最初にバイナリ・ストリング302を、異なるビット長のセグメントに分割
する404。制御プログラム306は、これら異なるビット長のセグメントを圧
縮システム300で処理する際に、最も容易に処理されるセグメント・サイズの
記録を取る。制御プログラム306は、様々なサイズを試し、どのサイズが最も
良好に働くかを追跡することにより、そのタイプのデータの最適な処理サイズが
知られるように、各データ・タイプについての最適な処理サイズの記録を構成す
る。制御プログラム306が、あるデータ・タイプについての最適な処理サイズ
の記録を形成する場合、将来の使用のためにそのセグメント・サイズを組み込む
ことができる。
【0035】
入力バイナリ・ストリング302が、最小の最適処理ブロック・サイズよりも
大きい場合は、バイナリ・ストリング302をセグメントに分割する404。セ
グメントのビット長はいくつかの要因によって決定される。
大きい場合は、バイナリ・ストリング302をセグメントに分割する404。セ
グメントのビット長はいくつかの要因によって決定される。
【0036】
変換エンジン308の計算能力は、セグメントのビット長に影響を与える。変
換エンジン308の利用可能な計算能力がわずかである場合には、セグメントは
、変換エンジン308が多大な計算能力を有する場合よりも短くなければならな
い。同様に、デコーダ316の計算能力が知られている場合には、それもセグメ
ントのビット長に影響する。デコーダ316の有する計算能力が高いほど、セグ
メントのビット長を大きくすることができる。
換エンジン308の利用可能な計算能力がわずかである場合には、セグメントは
、変換エンジン308が多大な計算能力を有する場合よりも短くなければならな
い。同様に、デコーダ316の計算能力が知られている場合には、それもセグメ
ントのビット長に影響する。デコーダ316の有する計算能力が高いほど、セグ
メントのビット長を大きくすることができる。
【0037】
圧縮システム300を使用するアプリケーションも、セグメントのビット長に
影響する。例えば、人間に知覚することのできる実時間の符号化を必要とするビ
デオ会議などのアプリケーションが必要とするセグメントは、より長い時間枠と
より多くの処理サイクルをかけて、より大きなセグメントを変換および符号化す
ることが可能なオフラインのアーカイブ(archiving)のセグメントに
比べて短い。
影響する。例えば、人間に知覚することのできる実時間の符号化を必要とするビ
デオ会議などのアプリケーションが必要とするセグメントは、より長い時間枠と
より多くの処理サイクルをかけて、より大きなセグメントを変換および符号化す
ることが可能なオフラインのアーカイブ(archiving)のセグメントに
比べて短い。
【0038】
データ・タイプも、セグメントのビット長に影響する。例えば、オーディオ・
データには、ASCIIデータとは異なるセグメント・サイズが適することが考
えられる。データ・タイプに関連する別の要因は、そのデータ・タイプに使用さ
れる可能性が高い変換である。特定のデータ・タイプに使用される変換は、ある
特定のセグメント長の場合の方が良好に行われる可能性がある。制御プログラム
306は、変換エンジン308を監視し、特定のデータ・タイプに良好に作用す
る変換、その変換で良好に作用するセグメント・サイズ、および将来の使用のた
めに組み込むことが可能なセグメント・サイズを記憶する。したがって、プリプ
ロセッサ304がデータ・タイプの特徴付けに成功した場合、制御プログラム3
06は、セグメントの最適なビット長についての情報を取り出すことができる。
データには、ASCIIデータとは異なるセグメント・サイズが適することが考
えられる。データ・タイプに関連する別の要因は、そのデータ・タイプに使用さ
れる可能性が高い変換である。特定のデータ・タイプに使用される変換は、ある
特定のセグメント長の場合の方が良好に行われる可能性がある。制御プログラム
306は、変換エンジン308を監視し、特定のデータ・タイプに良好に作用す
る変換、その変換で良好に作用するセグメント・サイズ、および将来の使用のた
めに組み込むことが可能なセグメント・サイズを記憶する。したがって、プリプ
ロセッサ304がデータ・タイプの特徴付けに成功した場合、制御プログラム3
06は、セグメントの最適なビット長についての情報を取り出すことができる。
【0039】
入力バイナリ・ストリング302が最小の最適な処理ブロック・サイズに等し
いか、またはそれより小さい場合、そのバイナリ・ストリング302は単一のセ
グメントとして扱われる。各セグメントは、それが分割されたバイナリ・ストリ
ング302の一部であるか、またはバイナリ・ストリング全体であるかに関係な
く、圧縮システム300の残りの部分を通じて同じように扱われる。
いか、またはそれより小さい場合、そのバイナリ・ストリング302は単一のセ
グメントとして扱われる。各セグメントは、それが分割されたバイナリ・ストリ
ング302の一部であるか、またはバイナリ・ストリング全体であるかに関係な
く、圧縮システム300の残りの部分を通じて同じように扱われる。
【0040】
セグメント・サイズは、制御プログラム306に出力される406。制御プロ
グラム306はそのセグメント・サイズを記憶し、それを使用して、変換、状態
情報、およびパケット・オーバーヘッドの可能な組み合わせのサイズと比較する
。
グラム306はそのセグメント・サイズを記憶し、それを使用して、変換、状態
情報、およびパケット・オーバーヘッドの可能な組み合わせのサイズと比較する
。
【0041】
制御プログラム306は、元のバイナリ・データを後に再構成できるように固
有の識別情報を各セグメントに割り当て、その識別情報、関連するデータ・タイ
プ、プロセス・モニタの設定、およびその他の任意の関連データと併せて各セグ
メントを追跡する。
有の識別情報を各セグメントに割り当て、その識別情報、関連するデータ・タイ
プ、プロセス・モニタの設定、およびその他の任意の関連データと併せて各セグ
メントを追跡する。
【0042】
次いで各セグメントを変異することができる408。セグメントの変異408
は、制御プログラム306が、それまでに、そのデータ・タイプおよびセグメン
ト・サイズの変異セグメントによって変換が成功している、またはそのデータ・
タイプおよびセグメント・サイズの非変異セグメントで変換が成功しなかったこ
とを示す情報を記憶している場合に行われる。変異されたセグメントによって変
換が成功するであろうことを示す情報を制御プログラム306が記憶していない
場合、セグメントは変異されない。ただし、その非変異のセグメントに成功した
変換が見つからない場合は、後からセグメントを変換エンジン308から戻して
412、変異させることができる。
は、制御プログラム306が、それまでに、そのデータ・タイプおよびセグメン
ト・サイズの変異セグメントによって変換が成功している、またはそのデータ・
タイプおよびセグメント・サイズの非変異セグメントで変換が成功しなかったこ
とを示す情報を記憶している場合に行われる。変異されたセグメントによって変
換が成功するであろうことを示す情報を制御プログラム306が記憶していない
場合、セグメントは変異されない。ただし、その非変異のセグメントに成功した
変換が見つからない場合は、後からセグメントを変換エンジン308から戻して
412、変異させることができる。
【0043】
プリプロセッサ304は、異なるバージョンのセグメントを作成することによ
ってセグメントを変異し408、変換エンジン308に同じセグメントの順列を
より多く提供する。セグメントの順列をより多く提供することにより、効率的な
変換が見つかる可能性が高くなる。変換エンジン308が効率的な変換を生成す
ることができなかった一部のセグメント412も、プリプロセッサ304に戻し
て変異される408。
ってセグメントを変異し408、変換エンジン308に同じセグメントの順列を
より多く提供する。セグメントの順列をより多く提供することにより、効率的な
変換が見つかる可能性が高くなる。変換エンジン308が効率的な変換を生成す
ることができなかった一部のセグメント412も、プリプロセッサ304に戻し
て変異される408。
【0044】
プリプロセッサ304に戻して変異する408データ・タイプおよびセグメン
ト・サイズについての情報を監視し、記憶することにより、制御プログラム30
6は、どのデータ・タイプおよびセグメント・サイズを最初に変異すべきかにつ
いての情報を得る。さらに、圧縮システム300を通じて変異されたセグメント
を監視することにより、制御プログラム306は、どの変異の結果、変換が成功
したかについての情報を得る。この情報は、制御プログラムに再び組み込むこと
ができる。
ト・サイズについての情報を監視し、記憶することにより、制御プログラム30
6は、どのデータ・タイプおよびセグメント・サイズを最初に変異すべきかにつ
いての情報を得る。さらに、圧縮システム300を通じて変異されたセグメント
を監視することにより、制御プログラム306は、どの変異の結果、変換が成功
したかについての情報を得る。この情報は、制御プログラムに再び組み込むこと
ができる。
【0045】
セグメントの変異にはいくつかの方式がある。制御プログラム306が、変換
が成功した変異技術についての記録を記憶している場合は、その変異技術を使用
する。制御プログラム306がそのような記録を有さない場合は、記憶されてい
る可能な変異のライブラリを順次調べる(step through)ことによ
って変異技術を選択する。
が成功した変異技術についての記録を記憶している場合は、その変異技術を使用
する。制御プログラム306がそのような記録を有さない場合は、記憶されてい
る可能な変異のライブラリを順次調べる(step through)ことによ
って変異技術を選択する。
【0046】
第1の変異技術では、セグメントのビット長を調整する。これには、セグメン
トのグループを異なる形で分割することが必要となる。これを行うことにより、
プリプロセッサ306は、処理のために様々な内容値を変換エンジン308に送
る。今1つの技術は、データの「カット・アンド・シャッフル」である。事前に
定義されたシャッフル・ライブラリを使用する。シャッフルのインデックスは、
パケット・オーバーヘッドの一部として含まれる。さらに別の方法は、セグメン
トの補数を見つけ、それを変換エンジン308に送るものである。別の技術では
、セグメント中のビットをシフトまたは回転させる。ビットをシフトまたは回転
させる際に、回転またはシフトするビットの方向および数がパケット・オーバー
ヘッドの一部として送られる。セグメントは、算術的演算(スケーリング)また
は論理的演算(排他的論理和演算)によって修正することができる。代替の技術
では、他の従来の圧縮を使用してセグメントの内容値を変える。
トのグループを異なる形で分割することが必要となる。これを行うことにより、
プリプロセッサ306は、処理のために様々な内容値を変換エンジン308に送
る。今1つの技術は、データの「カット・アンド・シャッフル」である。事前に
定義されたシャッフル・ライブラリを使用する。シャッフルのインデックスは、
パケット・オーバーヘッドの一部として含まれる。さらに別の方法は、セグメン
トの補数を見つけ、それを変換エンジン308に送るものである。別の技術では
、セグメント中のビットをシフトまたは回転させる。ビットをシフトまたは回転
させる際に、回転またはシフトするビットの方向および数がパケット・オーバー
ヘッドの一部として送られる。セグメントは、算術的演算(スケーリング)また
は論理的演算(排他的論理和演算)によって修正することができる。代替の技術
では、他の従来の圧縮を使用してセグメントの内容値を変える。
【0047】
制御プログラム306は、変異されたセグメントと、変異されたセグメントの
変異方式を追跡する。この情報は、パッケージャ310が、関連する適切なパケ
ット・オーバーヘッド・コードを付加できるようにパッケージャ310に提供さ
れる。このコードは、そのデータを変異データであると識別し、またそのデータ
の変異方式も識別する。
変異方式を追跡する。この情報は、パッケージャ310が、関連する適切なパケ
ット・オーバーヘッド・コードを付加できるようにパッケージャ310に提供さ
れる。このコードは、そのデータを変異データであると識別し、またそのデータ
の変異方式も識別する。
【0048】
セグメントは、変異されているかいないかに関係なく、次いで変換エンジン3
08に出力される410。変換エンジン 図5は、変換エンジン308のフロー・チャートである。プリプロセッサ30
4から出力されたセグメントは、変換エンジン308に入力される410。セグ
メントは、計算資源が許す限り、利用できる限り多くの変換プロセス502に送
られる。セグメントは、シリアルまたはパラレルに変換プロセス502によって
処理される。
08に出力される410。変換エンジン 図5は、変換エンジン308のフロー・チャートである。プリプロセッサ30
4から出力されたセグメントは、変換エンジン308に入力される410。セグ
メントは、計算資源が許す限り、利用できる限り多くの変換プロセス502に送
られる。セグメントは、シリアルまたはパラレルに変換プロセス502によって
処理される。
【0049】
各変換プロセス502は、セグメントの内容値を表すのに使用することのでき
る別の変換(1つまたは複数)を提供する。単一の変換ではあらゆる入力セグメ
ントの内容値に適さない可能性があるので、変換エンジン308は、それが利用
することのできる複数の変換プロセス502を有する。これは、上記のa、b、
およびcそれぞれが3ビットのメッセージである、9ビット・サイズの変換aの
bc乗の例の考察から理解される。この変換を使用すると、わずか9ビットを使
用して、十進法で700,000桁を超える長さの整数の内容値を送信すること
ができる。従来の方式で表した場合、この数は230万ビット以上を占めること
になる。この変換は、9ビットで230万ビットの数を送信する能力を提供する
が、この9ビットはなお、512の異なる内容値に対応する512より少ない異
なるメッセージしか伝えることができない。したがって、0から7の77乗の間
には、変換aのbc乗では表すことのできない多数の値が存在する。
る別の変換(1つまたは複数)を提供する。単一の変換ではあらゆる入力セグメ
ントの内容値に適さない可能性があるので、変換エンジン308は、それが利用
することのできる複数の変換プロセス502を有する。これは、上記のa、b、
およびcそれぞれが3ビットのメッセージである、9ビット・サイズの変換aの
bc乗の例の考察から理解される。この変換を使用すると、わずか9ビットを使
用して、十進法で700,000桁を超える長さの整数の内容値を送信すること
ができる。従来の方式で表した場合、この数は230万ビット以上を占めること
になる。この変換は、9ビットで230万ビットの数を送信する能力を提供する
が、この9ビットはなお、512の異なる内容値に対応する512より少ない異
なるメッセージしか伝えることができない。したがって、0から7の77乗の間
には、変換aのbc乗では表すことのできない多数の値が存在する。
【0050】
通常、算術的変換は剰余Rを含み、これにより以前に検証したaのbc乗の変
換はaのbc乗+Rになる。a、b、およびcの値が選択されると、変換が内容
値に等しくなるように設定され、その剰余が解かれる。これにより、この変換で
どの内容値でも表すことができるようになる。ただし、多くの事例では剰余Rは
大きな数になり、表現するのに多くのビットが必要となる。この結果、セグメン
トがほとんど圧縮されないか、まったく圧縮されないことになる。複数の異なる
変換プロセス502を提供することにより、変換エンジン308は、剰余のない
変換、または圧縮REGに達するのに十分に剰余が小さい変換を見つける確率を
大幅に高める。
換はaのbc乗+Rになる。a、b、およびcの値が選択されると、変換が内容
値に等しくなるように設定され、その剰余が解かれる。これにより、この変換で
どの内容値でも表すことができるようになる。ただし、多くの事例では剰余Rは
大きな数になり、表現するのに多くのビットが必要となる。この結果、セグメン
トがほとんど圧縮されないか、まったく圧縮されないことになる。複数の異なる
変換プロセス502を提供することにより、変換エンジン308は、剰余のない
変換、または圧縮REGに達するのに十分に剰余が小さい変換を見つける確率を
大幅に高める。
【0051】
さらに、複数の変換プロセス502を備えることにより、ハイブリッドの解法
を見つけることが可能になる。ハイブリッドの解法では、複数の変換を使用する
。例えば、ある変換が、ゼロから非常に大きい整数までの広い範囲の内容値を表
すことができることが考えられる。しかし、この変換は、剰余を使用しない場合
には細分性が低い。この変換によって表される内容値の大半には、表現するのに
多くのビットを必要とする大きな剰余が必要になる。大きな剰余を使用する代わ
りに、第2の変換を使用して剰余を表現する。この第2の変換は、表現できる値
の範囲は第1の変換よりも狭いが、細分性はより高く、通例は剰余もより小さい
。一実施形態では、1つの変換プロセス502からの剰余を別の変換プロセス5
02に入力する。第2の変換プロセス502は、入力されたその剰余を他のあら
ゆるセグメントと同様に扱う。このように、大きな剰余を伴う変換の代わりに、
ハイブリッドの解法は剰余の小さい複数の変換からなる。
を見つけることが可能になる。ハイブリッドの解法では、複数の変換を使用する
。例えば、ある変換が、ゼロから非常に大きい整数までの広い範囲の内容値を表
すことができることが考えられる。しかし、この変換は、剰余を使用しない場合
には細分性が低い。この変換によって表される内容値の大半には、表現するのに
多くのビットを必要とする大きな剰余が必要になる。大きな剰余を使用する代わ
りに、第2の変換を使用して剰余を表現する。この第2の変換は、表現できる値
の範囲は第1の変換よりも狭いが、細分性はより高く、通例は剰余もより小さい
。一実施形態では、1つの変換プロセス502からの剰余を別の変換プロセス5
02に入力する。第2の変換プロセス502は、入力されたその剰余を他のあら
ゆるセグメントと同様に扱う。このように、大きな剰余を伴う変換の代わりに、
ハイブリッドの解法は剰余の小さい複数の変換からなる。
【0052】
変換プロセス502はそれぞれ、セグメントに対する変換の解法をテストする
。変換の解法は、特定の状態情報と組み合わせた変換である。変換プロセス50
2は、ターゲットとするREGを満たすまで、あるいは時間、試行回数、または
その他の制約の制限に達するまで、状態情報、変換、およびパケット・オーバー
ヘッドの順列をテストし続ける。プロセス・モニタは、変換プロセス502を監
視して、ターゲットとするREG、処理にかかった時間、計算サイクルの回数、
あるいはその他の制約の制限に達したかどうかを判断する。プロセス・モニタは
、制約の制限に達すると変換プロセス502を中止する。
。変換の解法は、特定の状態情報と組み合わせた変換である。変換プロセス50
2は、ターゲットとするREGを満たすまで、あるいは時間、試行回数、または
その他の制約の制限に達するまで、状態情報、変換、およびパケット・オーバー
ヘッドの順列をテストし続ける。プロセス・モニタは、変換プロセス502を監
視して、ターゲットとするREG、処理にかかった時間、計算サイクルの回数、
あるいはその他の制約の制限に達したかどうかを判断する。プロセス・モニタは
、制約の制限に達すると変換プロセス502を中止する。
【0053】
制御プログラム306は、変換プロセス502でテストされた、変換、状態情
報、およびパケット・オーバーヘッドの最良の組み合わせを選択する504。最
良の組み合わせを選択するために、制御プログラム306は、各変換、状態情報
、およびそれに関連するパケット・オーバーヘッドのビット長を測定する。変換
、状態情報、および関連するオーバーヘッドを表すのに必要なビット長が最小で
ある順列が最良の順列である。
報、およびパケット・オーバーヘッドの最良の組み合わせを選択する504。最
良の組み合わせを選択するために、制御プログラム306は、各変換、状態情報
、およびそれに関連するパケット・オーバーヘッドのビット長を測定する。変換
、状態情報、および関連するオーバーヘッドを表すのに必要なビット長が最小で
ある順列が最良の順列である。
【0054】
制御プログラム306はまた、テストした順列を継続的に追跡する。時として
、変換、状態情報、およびオーバーヘッドの組み合わせが、単一のセグメントに
は最良でない場合があるが、共通の情報を1つだけのパケットで送り、残りのパ
ケットではそれを示唆することにより、複数のセグメントに適用した場合には最
良の組み合わせとなる。制御プログラム306はこのような組み合わせを求めて
監視し、それが出現した場合は、その組み合わせが最良の順列となる。
、変換、状態情報、およびオーバーヘッドの組み合わせが、単一のセグメントに
は最良でない場合があるが、共通の情報を1つだけのパケットで送り、残りのパ
ケットではそれを示唆することにより、複数のセグメントに適用した場合には最
良の組み合わせとなる。制御プログラム306はこのような組み合わせを求めて
監視し、それが出現した場合は、その組み合わせが最良の順列となる。
【0055】
変換、状態情報、およびオーバーヘッドの最良の組み合わせのビット長を、生
のセグメント406と、それに関連する、その生セグメントをフラグするのに使
用されたパケット・オーバーヘッドのビット長と比較する506。変換、状態情
報、および関連するオーバーヘッドの最良の順列のビット長が、生のセグメント
406と、その生のセグメントをフラグする関連するパケット・コードのビット
長よりも短い場合は、変換と状態情報を出力する510。それ以外の場合は、生
のセグメントを出力する508。変換プロセス 図6は、変換プロセス502のフロー・チャートであり、変換プロセス502
でどのように変換、状態情報、およびセグメントの組み合わせをテストするかを
示している。プリプロセッサ304から出力されるセグメントが、変換プロセス
502に入力される410。
のセグメント406と、それに関連する、その生セグメントをフラグするのに使
用されたパケット・オーバーヘッドのビット長と比較する506。変換、状態情
報、および関連するオーバーヘッドの最良の順列のビット長が、生のセグメント
406と、その生のセグメントをフラグする関連するパケット・コードのビット
長よりも短い場合は、変換と状態情報を出力する510。それ以外の場合は、生
のセグメントを出力する508。変換プロセス 図6は、変換プロセス502のフロー・チャートであり、変換プロセス502
でどのように変換、状態情報、およびセグメントの組み合わせをテストするかを
示している。プリプロセッサ304から出力されるセグメントが、変換プロセス
502に入力される410。
【0056】
変換プロセス502は、テストする変換(または変換のセット)を選択する6
02。変換プロセス502は、多くの異なる変換を利用することができる。変換
プロセス502が使用する変換は、変換データベースに記憶される。データ・セ
グメントのサイズ、データ・タイプ、行われた前処理、および制御プログラム3
06がそのセグメントについて追跡している他の要因に基づいて、1つまたは複
数の変換が変換データベースから選択される。制御プログラム306が、同じ要
因または関連する要因を有するセグメントについて、圧縮が成功した変換につい
ての記憶された記録を有する場合は、その変換が選択される。制御プログラム3
06がそのような記録を有さない場合は、データ・タイプまたは他のヒューリス
ティックに基づいて変換データベースを順次調べることによって変換を選択する
。制御プログラム306は次いで、どの変換が成功したかを記録することにより
、同じ要因または関連する要因を有するセグメントについて、圧縮が成功した変
換の記録を作成する。この情報は、制御プログラムに再び組み込むことができる
。
02。変換プロセス502は、多くの異なる変換を利用することができる。変換
プロセス502が使用する変換は、変換データベースに記憶される。データ・セ
グメントのサイズ、データ・タイプ、行われた前処理、および制御プログラム3
06がそのセグメントについて追跡している他の要因に基づいて、1つまたは複
数の変換が変換データベースから選択される。制御プログラム306が、同じ要
因または関連する要因を有するセグメントについて、圧縮が成功した変換につい
ての記憶された記録を有する場合は、その変換が選択される。制御プログラム3
06がそのような記録を有さない場合は、データ・タイプまたは他のヒューリス
ティックに基づいて変換データベースを順次調べることによって変換を選択する
。制御プログラム306は次いで、どの変換が成功したかを記録することにより
、同じ要因または関連する要因を有するセグメントについて、圧縮が成功した変
換の記録を作成する。この情報は、制御プログラムに再び組み込むことができる
。
【0057】
変換プロセス502が複数の変換を選択した602場合、変換プロセッサは、
ハイブリッド解法、部分的解法、あるいは他の変換の組み合わせを使用すること
ができる。ハイブリッド解法では、加法の変換数列を使用して、セグメントの内
容値を表す。部分的な解法は、同じ変換または異なる変換を使用して、あるセグ
メントの異なる部分を表す。
ハイブリッド解法、部分的解法、あるいは他の変換の組み合わせを使用すること
ができる。ハイブリッド解法では、加法の変換数列を使用して、セグメントの内
容値を表す。部分的な解法は、同じ変換または異なる変換を使用して、あるセグ
メントの異なる部分を表す。
【0058】
ハイブリッドの解法では、複数の変換を組み合わせて内容値を表す。単一の変
換を使用して、すべての可能な内容値の効率的な網羅を達成するのは難しい。例
えば、上記のように、変換の結果大きな剰余が生じ、圧縮がほとんど行われない
場合がある。これに代えて、異なる変換のセットによって残されたギャップを、
ある範囲の状態情報の値を有する変換の内容値の組み合わせが埋めるような効果
的な加法数列(additive sequence)を、変換を組み合わせて
作成する。例えば、内容値Mは次のように解く:M1=(変換1)vs1+(変換2
)vs2+(変換3)vs3+...+(変換n)vsn(vsはその変換の変数セット
。)同様に、2番目の内容値M2については、M2=(変換1)vs4+(変換2)v s5 +(変換3)vs6+...+(変換n)vsnとなり、3番目の内容値は、M3=
(変換1)vs7+(変換2)vs8+(変換3)vs9+...+(変換n)vsnとなる
。
換を使用して、すべての可能な内容値の効率的な網羅を達成するのは難しい。例
えば、上記のように、変換の結果大きな剰余が生じ、圧縮がほとんど行われない
場合がある。これに代えて、異なる変換のセットによって残されたギャップを、
ある範囲の状態情報の値を有する変換の内容値の組み合わせが埋めるような効果
的な加法数列(additive sequence)を、変換を組み合わせて
作成する。例えば、内容値Mは次のように解く:M1=(変換1)vs1+(変換2
)vs2+(変換3)vs3+...+(変換n)vsn(vsはその変換の変数セット
。)同様に、2番目の内容値M2については、M2=(変換1)vs4+(変換2)v s5 +(変換3)vs6+...+(変換n)vsnとなり、3番目の内容値は、M3=
(変換1)vs7+(変換2)vs8+(変換3)vs9+...+(変換n)vsnとなる
。
【0059】
複数の変換を使用する別の方法は、部分的解法である。部分的な解法では、変
換プロセス502が、完全な変換の代わりに、セグメントの部分に対する変換を
選択する。部分的な変換を選択するには、その変換が圧縮を提供する既知のビッ
ト・ストリングを表す、形態の3セット(triple)(開始、終了、および
圧縮長)の集合Hを見つける。既知のビット・ストリングは、既知のセットの状
態情報について変換が等しい内容値を有するビット・ストリングである。変換プ
ロセス502は、全体の長さと、そのセグメントの包含されていない部分の長さ
の合計を最小にするこれら3セットの組み合わせを見つける。
換プロセス502が、完全な変換の代わりに、セグメントの部分に対する変換を
選択する。部分的な変換を選択するには、その変換が圧縮を提供する既知のビッ
ト・ストリングを表す、形態の3セット(triple)(開始、終了、および
圧縮長)の集合Hを見つける。既知のビット・ストリングは、既知のセットの状
態情報について変換が等しい内容値を有するビット・ストリングである。変換プ
ロセス502は、全体の長さと、そのセグメントの包含されていない部分の長さ
の合計を最小にするこれら3セットの組み合わせを見つける。
【0060】
具体的には、セグメントは長さnのビット・ストリングMである。制御プログ
ラム306は、ターゲットとするREG Bと、現実的な解法の有限の集合Hを
変換プロセス502に提供する。現実的な解法はそれぞれ3つのセット、h=(
i(h)、j(h)、c(h))であり、ここで1≦i(h)<j(h)≦nが
既知のビット・ストリングの開始と最後であり、c(h)がその記述の長さであ
る。変換プロセス502は、所与の現実的な解法の部分集合S⊆Hを選択し、そ
の累積の長さ(重複のない部分的解法の場合)が、
ラム306は、ターゲットとするREG Bと、現実的な解法の有限の集合Hを
変換プロセス502に提供する。現実的な解法はそれぞれ3つのセット、h=(
i(h)、j(h)、c(h))であり、ここで1≦i(h)<j(h)≦nが
既知のビット・ストリングの開始と最後であり、c(h)がその記述の長さであ
る。変換プロセス502は、所与の現実的な解法の部分集合S⊆Hを選択し、そ
の累積の長さ(重複のない部分的解法の場合)が、
【0061】
【数1】
【0062】
に従うようにし、ここでl(i(h))はi(h)を表すのに必要なビット数で
ある。部分的な解法は、セグメント中のどこでも行うことができる。そのセグメ
ントの部分との最良の一致を求めて、変換とそれに関連する状態情報の効率性の
高い組み合わせをくまなく(up and down)テストする。セグメント
で、変換とそれに関連する状態情報の複数の一致を見つけることができる。変換
と関連する状態情報の組み合わせはそれぞれ、セグメントの一部分を表す。変換
、選択された各変換の状態情報、およびセグメントの生データ部分と、パケット
・オーバーヘッドの合計のビット長が、元のセグメントに対する圧縮を提供する
。1つまたは複数の変換を選択すると、その変換の状態情報を選択する604。
実施形態によっては、数値的技術を使用して、該当する状態情報の選択を助ける
。この数値的技術には、ニュートンの方法、二分法、割線法、および方程式の根
を求める他の数値的技術が含まれる。先に示した、算術的変換aのbc乗+Rの
例は、状態情報の選択を例示するものである。この変換では、変数a、b、c、
およびRが状態情報を構成する。変換プロセス502は、a、b、およびcの値
を選択する。変換プロセス502は、いくつかの数値的技術の1つを使用してこ
の値を選択する。次いで、Rとその変換の残りの合計が内容値Mと等しくなるよ
うに剰余Rを解く。したがって、算術的変換を用いると、変換プロセス502は
Rを除くすべての変数の値を選択し、そしてその状態情報を併せた変換の値がセ
グメントの内容値と同じになるようにRを解くことができる。
ある。部分的な解法は、セグメント中のどこでも行うことができる。そのセグメ
ントの部分との最良の一致を求めて、変換とそれに関連する状態情報の効率性の
高い組み合わせをくまなく(up and down)テストする。セグメント
で、変換とそれに関連する状態情報の複数の一致を見つけることができる。変換
と関連する状態情報の組み合わせはそれぞれ、セグメントの一部分を表す。変換
、選択された各変換の状態情報、およびセグメントの生データ部分と、パケット
・オーバーヘッドの合計のビット長が、元のセグメントに対する圧縮を提供する
。1つまたは複数の変換を選択すると、その変換の状態情報を選択する604。
実施形態によっては、数値的技術を使用して、該当する状態情報の選択を助ける
。この数値的技術には、ニュートンの方法、二分法、割線法、および方程式の根
を求める他の数値的技術が含まれる。先に示した、算術的変換aのbc乗+Rの
例は、状態情報の選択を例示するものである。この変換では、変数a、b、c、
およびRが状態情報を構成する。変換プロセス502は、a、b、およびcの値
を選択する。変換プロセス502は、いくつかの数値的技術の1つを使用してこ
の値を選択する。次いで、Rとその変換の残りの合計が内容値Mと等しくなるよ
うに剰余Rを解く。したがって、算術的変換を用いると、変換プロセス502は
Rを除くすべての変数の値を選択し、そしてその状態情報を併せた変換の値がセ
グメントの内容値と同じになるようにRを解くことができる。
【0063】
状態情報を選択すると、選択した状態情報を有する変換をテストする608。
テストする際に、制御プログラム306は、最終的なパケットで使用される、す
べての状態情報および関連するパケット・オーバーヘッドとともに変換を表すの
に必要なビット長を求める。このビット長が、REGのターゲットとするビット
長よりも短い場合、あるいはこのビット長が、テストした変換、状態情報、およ
びパケット・オーバーヘッドの他の組み合わせのビット長よりも短い場合は、そ
の変換、状態情報、およびパケット・オーバーヘッドを記憶して、可能な最良の
変換順列としてマークする。
テストする際に、制御プログラム306は、最終的なパケットで使用される、す
べての状態情報および関連するパケット・オーバーヘッドとともに変換を表すの
に必要なビット長を求める。このビット長が、REGのターゲットとするビット
長よりも短い場合、あるいはこのビット長が、テストした変換、状態情報、およ
びパケット・オーバーヘッドの他の組み合わせのビット長よりも短い場合は、そ
の変換、状態情報、およびパケット・オーバーヘッドを記憶して、可能な最良の
変換順列としてマークする。
【0064】
次いで、プロセス・モニタは、制約の制限に達しているかどうかを判定する6
10。この制約には、試行回数、試行に費やす時間、計算サイクルの数、ターゲ
ットとするREG、あるいはその他の制約が含まれる。ターゲットとするREG
などの制約の制限に達している場合、あるいは処理時間の制限に達している場合
、プロセス・モニタは変換プロセス502を中止する614。この時に、その変
換プロセス502でテストした変換、状態情報、およびパケット・オーバーヘッ
ドの最良の組み合わせを出力し、すべての変換プロセス502からの最良の変換
順列を選択504できるようにする。
10。この制約には、試行回数、試行に費やす時間、計算サイクルの数、ターゲ
ットとするREG、あるいはその他の制約が含まれる。ターゲットとするREG
などの制約の制限に達している場合、あるいは処理時間の制限に達している場合
、プロセス・モニタは変換プロセス502を中止する614。この時に、その変
換プロセス502でテストした変換、状態情報、およびパケット・オーバーヘッ
ドの最良の組み合わせを出力し、すべての変換プロセス502からの最良の変換
順列を選択504できるようにする。
【0065】
制約の制限に達していない場合、変換プロセス502はセグメントを変異すべ
きかどうかを判定する612。その変換について複数の状態情報セットをテスト
した後に、制御プログラム306が、テストした608変換、状態情報、および
パケット・オーバーヘッドの順列のビット長が大きすぎると判断した場合は、そ
のセグメントをプリプロセッサ304に戻す412。プリプロセッサ304でそ
のセグメントを変異し、変換エンジン308に送り返す。それ以外の場合、変換
プロセス502は、テストする別の状態情報セットを選択する604。
きかどうかを判定する612。その変換について複数の状態情報セットをテスト
した後に、制御プログラム306が、テストした608変換、状態情報、および
パケット・オーバーヘッドの順列のビット長が大きすぎると判断した場合は、そ
のセグメントをプリプロセッサ304に戻す412。プリプロセッサ304でそ
のセグメントを変異し、変換エンジン308に送り返す。それ以外の場合、変換
プロセス502は、テストする別の状態情報セットを選択する604。
【0066】
したがって、変換プロセス502は、異なる状態情報を有する変換の順列をテ
ストするループを含む。制御プログラム306が、その変換によって望ましいビ
ット長のパケットが得られないと判断した場合は、ループを中止し、セグメント
を変異する。制約の制限に達すると、ループを中止し、その時点までに見つかっ
た変換、状態情報、およびパケット・オーバーヘッドの最良の組み合わせを出力
する。変換 以下は、変換処理502による使用に適する複数の異なる変換の説明である。
以下の変換のリストは長いが、決して完全ではない。変換処理502は、Her
bert Dwight著、「Tables of Integrals an
d other Mathematical Data」、Milton Ab
ramowitzおよびIrene Stegun著、「Handbook o
f Mathematical Functions」、Alan Jeffe
ry著、「Handbook of Mathematical Formul
as and Integrals」、およびN.J.A.Sloaneおよび
Simon Plouffe著、「The Encyclopedia of
Integer Sequences」などの文献に記載された標準的な数学を
含む、多数の変換を使用することができる。
ストするループを含む。制御プログラム306が、その変換によって望ましいビ
ット長のパケットが得られないと判断した場合は、ループを中止し、セグメント
を変異する。制約の制限に達すると、ループを中止し、その時点までに見つかっ
た変換、状態情報、およびパケット・オーバーヘッドの最良の組み合わせを出力
する。変換 以下は、変換処理502による使用に適する複数の異なる変換の説明である。
以下の変換のリストは長いが、決して完全ではない。変換処理502は、Her
bert Dwight著、「Tables of Integrals an
d other Mathematical Data」、Milton Ab
ramowitzおよびIrene Stegun著、「Handbook o
f Mathematical Functions」、Alan Jeffe
ry著、「Handbook of Mathematical Formul
as and Integrals」、およびN.J.A.Sloaneおよび
Simon Plouffe著、「The Encyclopedia of
Integer Sequences」などの文献に記載された標準的な数学を
含む、多数の変換を使用することができる。
【0067】
多くの変換が、算術変換のクラスに含まれる。これらの算術変換には、下記が
含まれるが、これらに制限はされない。 指数因数分解:指数因数分解は、T(x)=xn+Rという一般形式になる。
内容値Mについて、変換処理502では、変換変数x、n、およびRの値が判定
される。変換変数が、変換の状態情報を構成する。たとえば、64ビット・デー
タ・セグメントM=3E1386BE8784F35116が、変換のためにサブ
ミットされる場合に、展開式に等しくなるようにMをセットすることによって、
M=xn+Rが得られる。変換処理502では、変換変数xおよびnの値を選択
し、Rについて解く。たとえば、n=1516およびx=1116を選択することに
よって、R=0がもたらされる。M=T(x)なので、変換の識別および状態情
報x、n、およびRによってセグメントを表すことができる。
含まれるが、これらに制限はされない。 指数因数分解:指数因数分解は、T(x)=xn+Rという一般形式になる。
内容値Mについて、変換処理502では、変換変数x、n、およびRの値が判定
される。変換変数が、変換の状態情報を構成する。たとえば、64ビット・デー
タ・セグメントM=3E1386BE8784F35116が、変換のためにサブ
ミットされる場合に、展開式に等しくなるようにMをセットすることによって、
M=xn+Rが得られる。変換処理502では、変換変数xおよびnの値を選択
し、Rについて解く。たとえば、n=1516およびx=1116を選択することに
よって、R=0がもたらされる。M=T(x)なので、変換の識別および状態情
報x、n、およびRによってセグメントを表すことができる。
【0068】
変換処理502では、下でリストされた他の算術変換族(arithmeti
c transform family)について、同様に、剰余R以外の変数
の値を選択し、剰余Rについて解く。
c transform family)について、同様に、剰余R以外の変数
の値を選択し、剰余Rについて解く。
【0069】
べき級数:べき級数は、変換変数x、a、n、およびRを有するT(x)=(
a+x)n+Rの形になる。x=0を中心に4次まで展開すると、この級数が下
記になる。
a+x)n+Rの形になる。x=0を中心に4次まで展開すると、この級数が下
記になる。
【0070】
【数2】
【0071】
多項式:もう1つの変換族が多項式である。変換変数a、b、c、d、x、y
、およびRを有する多項式の例が、次式である。
、およびRを有する多項式の例が、次式である。
【0072】
【数3】
【0073】
等比級数:等比級数が、もう1つの変換族である。例を示す。
【0074】
【数4】
【0075】
、変換変数はx、m、a、およびR。
integer series:integer seriesが、追加の変
換を提供する。integer seriesの例を示す。
換を提供する。integer seriesの例を示す。
【0076】
【数5】
【0077】
、変換変数はx、n、ai、およびR。
三角関数:三角変換族も、印象的な結果をもたらすことができる。変換変数x
およびRを有する三角変換の例を示す。
およびRを有する三角変換の例を示す。
【0078】
【数6】
【0079】
ベッセル関数:ベッセル関数族も、許容可能な変換である。例を示す。
【0080】
【数7】
【0081】
、変換変数はxおよびR。
漸近級数:漸近級数も、かなりの表現の効率利得をもたらすことができる。例
を示す。
を示す。
【0082】
【数8】
【0083】
、変換変数はxおよびR。
変換処理502で使用することができる他の変換には、無限乗積、連分数、デ
ィオファンタス方程式、Mobins関数、代数曲線、積分変換、逆円(逆三角
)関数、球面三角関数、対数関数、双曲線関数、直交多項式、polyloga
rithm、legandra関数、Legandra関数、楕円積分、seq
uence transformation(z変換)、マルコフ連鎖が含まれ
る。
ィオファンタス方程式、Mobins関数、代数曲線、積分変換、逆円(逆三角
)関数、球面三角関数、対数関数、双曲線関数、直交多項式、polyloga
rithm、legandra関数、Legandra関数、楕円積分、seq
uence transformation(z変換)、マルコフ連鎖が含まれ
る。
【0084】
変換のもう1つの基本的なクラスが、論理変換である。論理変換は、算術変換
に似ている。算術演算子の代わりに論理構造またはブール構造(すなわち、AN
D、OR、NOT)を使用することによって、内容値が、表現がセグメントより
少ないビット数を必要とする解で記述される。論理変換の例には、選言標準形(
disjunctive normal form、DNF)の使用、または有
限状態機械(Finite State Machine、時には有限状態オー
トマータ(Finite State Automata)または「FSA」と
呼ばれる)の使用が含まれるが、これに制限はされない。
に似ている。算術演算子の代わりに論理構造またはブール構造(すなわち、AN
D、OR、NOT)を使用することによって、内容値が、表現がセグメントより
少ないビット数を必要とする解で記述される。論理変換の例には、選言標準形(
disjunctive normal form、DNF)の使用、または有
限状態機械(Finite State Machine、時には有限状態オー
トマータ(Finite State Automata)または「FSA」と
呼ばれる)の使用が含まれるが、これに制限はされない。
【0085】
DNF:すべての有限ブール代数Bは、ビット単位演算子を使用すると、ある
正の整数Mについて、{0、1}Mと同形である。n個のブール変数に対する、
公式または式によって駆動される関数は、関数f:Bn→Bであり、この式によ
って、fの動作が完全に一意に決定される。DNF論理変換では、ブール演算子
(AND・、OR +、およびNOT〜)と、パッケージャ310およびデコー
ダ316の両方に既知の事前に定義されたブール基礎ストリングの組を使用する
。代替案では、当初はデコーダに既知でないが、パケット内で一度デコーダに送
られ、複数の後続パケットと共に使用される基礎ストリングが使用される。
正の整数Mについて、{0、1}Mと同形である。n個のブール変数に対する、
公式または式によって駆動される関数は、関数f:Bn→Bであり、この式によ
って、fの動作が完全に一意に決定される。DNF論理変換では、ブール演算子
(AND・、OR +、およびNOT〜)と、パッケージャ310およびデコー
ダ316の両方に既知の事前に定義されたブール基礎ストリングの組を使用する
。代替案では、当初はデコーダに既知でないが、パケット内で一度デコーダに送
られ、複数の後続パケットと共に使用される基礎ストリングが使用される。
【0086】
公式駆動の関数のそれぞれが、ブール変数に基づくその動作によって完全に決
定される。たとえば、n=3個のブール変数の場合に、2nまたは8(すなわち
23)個の入力があり、28または256個の、3変数に対するそのような関数が
ある。DNFは、標準化された関数の項の係数を決定することによってこれらの
256個の関数を表現する、標準的なまたは正規の形である。係数は、項の存在
または不在を示す、0または1のいずれかである。n=3の標準DNF式を示す
。
定される。たとえば、n=3個のブール変数の場合に、2nまたは8(すなわち
23)個の入力があり、28または256個の、3変数に対するそのような関数が
ある。DNFは、標準化された関数の項の係数を決定することによってこれらの
256個の関数を表現する、標準的なまたは正規の形である。係数は、項の存在
または不在を示す、0または1のいずれかである。n=3の標準DNF式を示す
。
【0087】
【数9】
【0088】
したがって、任意の8ビット・バイナリ・ストリング11110100に対し
て、標準DNF式は次のようになる。
て、標準DNF式は次のようになる。
【0089】
【数10】
【0090】
ここで、8つの係数(DNFの項ごとに1つ)のシーケンスが、表現されるバ
イナリ・ストリングのビット値である。したがって、256個の別個の8ビット
・ストリングのそれぞれを、256個の異なる標準DNF関数の1つによって一
意に表すことができる。というのは、係数が、表現されるビット・ストリングの
ビット値であるからである。
イナリ・ストリングのビット値である。したがって、256個の別個の8ビット
・ストリングのそれぞれを、256個の異なる標準DNF関数の1つによって一
意に表すことができる。というのは、係数が、表現されるビット・ストリングの
ビット値であるからである。
【0091】
所与のビット・ストリングに対して1つのDNF関数だけがあるが、既知の標
準基礎ストリングに関してはこの関数を表現するための、多数の異なる形がある
。前の例を使用すると、標準DNF関数は次のようになる。
準基礎ストリングに関してはこの関数を表現するための、多数の異なる形がある
。前の例を使用すると、標準DNF関数は次のようになる。
【0092】
【数11】
【0093】
これを、次のように表すこともできる。
【0094】
【数12】
【0095】
これを、次のように表すこともできる。
【0096】
【数13】
【0097】
下記が、基礎ストリングの組の例である。
BS0=AAAAAAAAAAAAAAAA16
BS1=CCCCCCCCCCCCCCCC16
BS2=F0F0F0F0F0F0F0F016
BS3=FF00FF00FF00FF0016
BS4=FFFF0000FFFF000016
BS5=FFFFFFFF0000000016
たとえば、内容値M=776655443322110016のセグメントが、
DNFおよび基礎ストリングの例の組を使用する変換のためにサブミットされる
。次式が、Mと同等である、この変換に対する部分的に最適化された解である。
DNFおよび基礎ストリングの例の組を使用する変換のためにサブミットされる
。次式が、Mと同等である、この変換に対する部分的に最適化された解である。
【0098】
【数14】
【0099】
上の解では、Mと同等の式が、6つの基礎ストリングのすべてではなく、3つ
の基礎ストリングだけに依存する。 有限状態機械/オートマータ:FSAは、セグメントに関して複数の固定され
た状態を有する状態機械である。各状態で、ある動作を実行することができる。
動作は、通常は、さらなるデータ入力に基づく。入力によって、あるデータの出
力および/または新しい状態への推移をもたらすことができる。
の基礎ストリングだけに依存する。 有限状態機械/オートマータ:FSAは、セグメントに関して複数の固定され
た状態を有する状態機械である。各状態で、ある動作を実行することができる。
動作は、通常は、さらなるデータ入力に基づく。入力によって、あるデータの出
力および/または新しい状態への推移をもたらすことができる。
【0100】
セグメントの内容値は、FSAに入力され、FSAが内容値をトラバースする
際に、木が作られる。この木が、パッケージャ310に転送される。デコーダ3
16は、単純に木に従って、内容値を回復する。変換処理502およびデコーダ
316の両方が、いずれかの端のFSAデータベースへの伝送またはアクセスの
いずれかを介するFSAへのアクセスを有する必要がある。
際に、木が作られる。この木が、パッケージャ310に転送される。デコーダ3
16は、単純に木に従って、内容値を回復する。変換処理502およびデコーダ
316の両方が、いずれかの端のFSAデータベースへの伝送またはアクセスの
いずれかを介するFSAへのアクセスを有する必要がある。
【0101】
変換処理502が使用することのできるさらなる3つの変換の例が、de B
ruijnシーケンス、3Dグラフ木、およびN次元空間内の交差する曲線であ
る。
ruijnシーケンス、3Dグラフ木、およびN次元空間内の交差する曲線であ
る。
【0102】
de Bruijnシーケンスは、すべての可能なストリングを見つけること
ができるバイナリ・シーケンスである。開始点が、送られ、log2Mが、シー
ケンスから抽出されて、メッセージが再構成される。これは、非常に長いシーケ
ンスであり、デコードに必要なオーバーヘッドのlog2が、元のセグメントの
log2に接近する可能性があるので、この変換は、しばしば、ほとんどまたは
全く効率利得をもたらさない。
ができるバイナリ・シーケンスである。開始点が、送られ、log2Mが、シー
ケンスから抽出されて、メッセージが再構成される。これは、非常に長いシーケ
ンスであり、デコードに必要なオーバーヘッドのlog2が、元のセグメントの
log2に接近する可能性があるので、この変換は、しばしば、ほとんどまたは
全く効率利得をもたらさない。
【0103】
3Dグラフ木の使用は、開始点とパスが、3Dグラフを介して追跡され、すべ
ての可能なビットの組合せがもたらされるという点で、de Bruijnシー
ケンスに似ている。de Bruijnシーケンスと同様に、解が、セグメント
のサイズに近づき、ほとんどまたは全く効率利得がもたらされない可能性がある
。
ての可能なビットの組合せがもたらされるという点で、de Bruijnシー
ケンスに似ている。de Bruijnシーケンスと同様に、解が、セグメント
のサイズに近づき、ほとんどまたは全く効率利得がもたらされない可能性がある
。
【0104】
第3に、N次元空間内の幾何オブジェクトとしてセグメントの内容値を表すこ
とによって(Nはデータ・セグメントの長さより小さい)、この空間内の曲線を
表す式を、このオブジェクトにあてはめる。曲線の重心によって内容値点を定義
することが可能なので、この曲線が交差する必要はない。また、必要な場合に、
曲線からのデルタを使用して、N空間内の内容値点をより効率的にターゲットに
することができる。状態情報選択技法 変数値または変換の他の状態情報を選択604する技法は、複数ある。必ずで
はないが、一般に、算術変換の変数は、論理変換または他の変換の変数値を選択
する技法とは異なる技法を使用して選択される。算術変換の変数を選択するのに
通常使用される技法には、下の技法が含まれる。
とによって(Nはデータ・セグメントの長さより小さい)、この空間内の曲線を
表す式を、このオブジェクトにあてはめる。曲線の重心によって内容値点を定義
することが可能なので、この曲線が交差する必要はない。また、必要な場合に、
曲線からのデルタを使用して、N空間内の内容値点をより効率的にターゲットに
することができる。状態情報選択技法 変数値または変換の他の状態情報を選択604する技法は、複数ある。必ずで
はないが、一般に、算術変換の変数は、論理変換または他の変換の変数値を選択
する技法とは異なる技法を使用して選択される。算術変換の変数を選択するのに
通常使用される技法には、下の技法が含まれる。
【0105】
第1の選択方法は、単に、ランダムに生成された変数値を試し、望ましい圧縮
を有する変換および状態情報をもたらす変数値が見つかるまで、異なる変数値を
試み続けることである。これは、かなりの時間を消費する可能性がある。
を有する変換および状態情報をもたらす変数値が見つかるまで、異なる変数値を
試み続けることである。これは、かなりの時間を消費する可能性がある。
【0106】
代替案では、所与の算術変換の変数値(剰余を除く)の可能な組のそれぞれか
らもたらされるすべての内容値を、事前に計算し、データベースに保管すること
ができる。その後、内容値を、データベースと比較し、適当な変数値を検索する
。この内容値置換の事前計算によって、変換処理502の速度が大幅に高まるが
、ストレージに関するコストが生じる。10番ごと、100番ごと、1000番
ごとなどの変数値の組だけを保管することによって、ストレージ要件を減らしな
がら、変換処理502がテストしなければならない近似変数値を提供することが
できる。
らもたらされるすべての内容値を、事前に計算し、データベースに保管すること
ができる。その後、内容値を、データベースと比較し、適当な変数値を検索する
。この内容値置換の事前計算によって、変換処理502の速度が大幅に高まるが
、ストレージに関するコストが生じる。10番ごと、100番ごと、1000番
ごとなどの変数値の組だけを保管することによって、ストレージ要件を減らしな
がら、変換処理502がテストしなければならない近似変数値を提供することが
できる。
【0107】
異なる変数値を試すことに費やされる時間は、プリプロセッサ304によって
決定されるアプリケーション・データ型特性に対して、変数値置換分岐を、前の
試みでの成功裡の変換解の最も高い尤度を示したある近傍に束縛することによっ
て減らすことができる。図7に、すべての可能な変数値をテストするのではない
、変数値の組の発見を示す。そのような方法が望ましいのは、変数値のすべての
可能な組合せを試験することが、極度に長い時間または計算サイクルを要する可
能性があるからである。
決定されるアプリケーション・データ型特性に対して、変数値置換分岐を、前の
試みでの成功裡の変換解の最も高い尤度を示したある近傍に束縛することによっ
て減らすことができる。図7に、すべての可能な変数値をテストするのではない
、変数値の組の発見を示す。そのような方法が望ましいのは、変数値のすべての
可能な組合せを試験することが、極度に長い時間または計算サイクルを要する可
能性があるからである。
【0108】
特定のデータ型の前の処理から、制御プログラム306が、データ・セグメン
トの成功裡の圧縮をもたらす傾向を有する変数値を保管する。これらの成功裡の
変数値によって、変数値の後続の選択のための「許容される近傍」が定義される
。許容される近傍は、変数値の範囲である。変数値を選択する時に、変換処理5
02が、許容される近傍内の開始点を選択する。変換処理502は、ランダムに
、または前の成功裡の値に基づいて、開始点を選択する。図7に示された例では
、変換のnビット長表現の7つの開始点A、B、C、D、F、G、およびH、状
態情報、およびパケット情報置換が選択される。他の実施形態では、より少数ま
たはより多数の開始点が選択される。図7の例では、ほとんどの開始点が、実際
には変数値の展開的な組であり、元のセグメント406表現のビット長より長い
内容値のビット長表現をもたらす。
トの成功裡の圧縮をもたらす傾向を有する変数値を保管する。これらの成功裡の
変数値によって、変数値の後続の選択のための「許容される近傍」が定義される
。許容される近傍は、変数値の範囲である。変数値を選択する時に、変換処理5
02が、許容される近傍内の開始点を選択する。変換処理502は、ランダムに
、または前の成功裡の値に基づいて、開始点を選択する。図7に示された例では
、変換のnビット長表現の7つの開始点A、B、C、D、F、G、およびH、状
態情報、およびパケット情報置換が選択される。他の実施形態では、より少数ま
たはより多数の開始点が選択される。図7の例では、ほとんどの開始点が、実際
には変数値の展開的な組であり、元のセグメント406表現のビット長より長い
内容値のビット長表現をもたらす。
【0109】
変換処理502は、最適化アルゴリズムを使用して、状態情報として変数値の
異なる組を反復してテストする。各開始点について、変換処理502は、許容さ
れる近傍内の開始点の1つ左の点および1つ右の点(すなわち、実際には1つ高
いものと1つ低いもの)の変数値を選択する。制御プログラム306は、変換、
状態情報、およびパケット・オーバーヘッドの各組合せを表現するのに必要なビ
ット長を比較し、どの変数値がより短いまたはより長いビット長を用いて表現さ
れるかを追跡する。その後、変換処理502が、最小のビット長表現を有する変
数値の組を、新しい開始点として選択する。したがって、変換処理502によっ
て選択される変数値は、局所解(local optima)に近づく。変換処
理502は、最も近い選択がただ表現的により効率的でなくなる点に達するまで
この処理を繰り返す。これらの点は、局所解であり、点A’、B’、C’、D’
、F’、G’、およびH’によって表される。変換処理502または変換エンジ
ン308が、上で述べたように、このグループから最適の点を選択する。
異なる組を反復してテストする。各開始点について、変換処理502は、許容さ
れる近傍内の開始点の1つ左の点および1つ右の点(すなわち、実際には1つ高
いものと1つ低いもの)の変数値を選択する。制御プログラム306は、変換、
状態情報、およびパケット・オーバーヘッドの各組合せを表現するのに必要なビ
ット長を比較し、どの変数値がより短いまたはより長いビット長を用いて表現さ
れるかを追跡する。その後、変換処理502が、最小のビット長表現を有する変
数値の組を、新しい開始点として選択する。したがって、変換処理502によっ
て選択される変数値は、局所解(local optima)に近づく。変換処
理502は、最も近い選択がただ表現的により効率的でなくなる点に達するまで
この処理を繰り返す。これらの点は、局所解であり、点A’、B’、C’、D’
、F’、G’、およびH’によって表される。変換処理502または変換エンジ
ン308が、上で述べたように、このグループから最適の点を選択する。
【0110】
E’が、許容される近傍内のglobal optimaであったであろうが
、開始点E(またはE’付近の他の点)が絶対に検査されなかったので、E’は
見つからなかった。これは、許容される近傍内での変数値のすべての組の網羅的
テストを避けるためにglobal optimaが犠牲にされる場合である。
さらに、H’は、C’よりよい変数値の組であるが、処理モニタが、変換、状態
情報、およびパケット・オーバーヘッドの、ターゲットREGを満たす組合せが
見つかった後に、処理を打ち切るようにセットされる可能性がある。さらに、図
7から、CからC’に達するのに、HからH’に達するより少ないプロセッサ・
サイクルを要するであろうことがわかる。
、開始点E(またはE’付近の他の点)が絶対に検査されなかったので、E’は
見つからなかった。これは、許容される近傍内での変数値のすべての組の網羅的
テストを避けるためにglobal optimaが犠牲にされる場合である。
さらに、H’は、C’よりよい変数値の組であるが、処理モニタが、変換、状態
情報、およびパケット・オーバーヘッドの、ターゲットREGを満たす組合せが
見つかった後に、処理を打ち切るようにセットされる可能性がある。さらに、図
7から、CからC’に達するのに、HからH’に達するより少ないプロセッサ・
サイクルを要するであろうことがわかる。
【0111】
部分的な解を使用する時には、特定の戦略が適当である。上で述べたように、
部分的な解について、変換処理502は、所与の正値解(positive s
olution)の部分集合S⊆Hを選択し、その結果、その累積的な長さが、
次式に従うようになる(オーバーラップしない部分的な解について)。
部分的な解について、変換処理502は、所与の正値解(positive s
olution)の部分集合S⊆Hを選択し、その結果、その累積的な長さが、
次式に従うようになる(オーバーラップしない部分的な解について)。
【0112】
【数15】
【0113】
ここで、l(i(h))は、i(h)を表現するのに必要なビット数である。
変換処理502は、動的計画法(dynamic programming)、
具体的には1次元動的計画法と称する技法を使用してこれを解く。この技法では
、ストリングについて解かなければならない問題が、まず、長さを増やされるサ
ブストリングについて解かれ、各ストリングでの問題が、そのサブストリングの
解を調べることによって解かれる。多くの最適化問題と同様に、これは、知的「
分岐限定法(branch and bound)」戦略の問題になる。この戦
略は、global optimaの網羅的探索なしで、おそらくは準最適であ
る解に達する。
変換処理502は、動的計画法(dynamic programming)、
具体的には1次元動的計画法と称する技法を使用してこれを解く。この技法では
、ストリングについて解かなければならない問題が、まず、長さを増やされるサ
ブストリングについて解かれ、各ストリングでの問題が、そのサブストリングの
解を調べることによって解かれる。多くの最適化問題と同様に、これは、知的「
分岐限定法(branch and bound)」戦略の問題になる。この戦
略は、global optimaの網羅的探索なしで、おそらくは準最適であ
る解に達する。
【0114】
図8に、セグメント内の部分的な解を示す。部分的な解は、セグメント内のど
こにでも発生する。変換および状態情報の最も効率的な組合せが、動的計画技法
を使用する最適一致の検索でセグメントを上下にテストされる。一致が発生する
場所では、オフセット・ポインタを生成して、ストリングまたは他の部分的な解
の先頭または末尾からの相対位置を測定する。部分的な解の一致804、806
、および808が生成される。一致804および806に見られるように、一致
の一部が、互いにオーバーラップし、総合的な効率利得がわずかに低下する。最
後に、一致がなく、ビットが単純に生データとして送られる区域810がある。
こにでも発生する。変換および状態情報の最も効率的な組合せが、動的計画技法
を使用する最適一致の検索でセグメントを上下にテストされる。一致が発生する
場所では、オフセット・ポインタを生成して、ストリングまたは他の部分的な解
の先頭または末尾からの相対位置を測定する。部分的な解の一致804、806
、および808が生成される。一致804および806に見られるように、一致
の一部が、互いにオーバーラップし、総合的な効率利得がわずかに低下する。最
後に、一致がなく、ビットが単純に生データとして送られる区域810がある。
【0115】
その後、オフセットを使用して、セグメント内のどこに、変換置換と内容値の
よい一致が存在するかを識別する。オフセットの表現(および関連する剰余)が
、圧縮が達成されたかどうかを判定する時に、セグメント406のビット長サイ
ズと比較される総計尺度の一部になる。
よい一致が存在するかを識別する。オフセットの表現(および関連する剰余)が
、圧縮が達成されたかどうかを判定する時に、セグメント406のビット長サイ
ズと比較される総計尺度の一部になる。
【0116】
組合せ最適化ヒューリスティックの適用も、成功裡の圧縮率につながる状態情
報を見つけるのに必要な時間の短縮を助ける可能性がある。これらのヒューリス
ティックには、下記が含まれる(これに制限はされない)。
報を見つけるのに必要な時間の短縮を助ける可能性がある。これらのヒューリス
ティックには、下記が含まれる(これに制限はされない)。
【0117】
1.山登り法(Hill Climbing)
2.「貪欲な(Greedy)」山登り法
3.タブー探索(Tabu Search)
4.シミュレーテッド・アニーリング(Simulated Anneali
ng) 5.人口ニューラル・ネットワーク(Artificial Neural
Network)の適用 6.Boltzman Machineの適用 7.進化的アルゴリズム(Evolutionary Algorithm)
の適用 8.遺伝的アルゴリズム/遺伝的プログラミング(Genetic Algo
rithm/Genetic Programming)の適用 これらのヒューリスティックのいずれかの適用は、変換に関するすべての可能
な変数値の組に関するビット長の測定からもたらされるglobal opti
maではない、あるビット長の解をもたらす可能性が高い。しかし、この解は、
変換エンジン308の使用可能な計算力、処理モニタによってセットされる時間
または試行の制約、および応用分野固有の要求を反映する所望のターゲット効率
利得に関して、許容可能である可能性がある。
ng) 5.人口ニューラル・ネットワーク(Artificial Neural
Network)の適用 6.Boltzman Machineの適用 7.進化的アルゴリズム(Evolutionary Algorithm)
の適用 8.遺伝的アルゴリズム/遺伝的プログラミング(Genetic Algo
rithm/Genetic Programming)の適用 これらのヒューリスティックのいずれかの適用は、変換に関するすべての可能
な変数値の組に関するビット長の測定からもたらされるglobal opti
maではない、あるビット長の解をもたらす可能性が高い。しかし、この解は、
変換エンジン308の使用可能な計算力、処理モニタによってセットされる時間
または試行の制約、および応用分野固有の要求を反映する所望のターゲット効率
利得に関して、許容可能である可能性がある。
【0118】
適用されるヒューリスティックは、試験され計算され測定される状態情報の異
なる組の数だけではなく、ヒューリスティックによってターゲットとされる状態
情報置換近傍内の検索戦略の効率にも影響する。異なるデータ型特性はそれ自体
、セグメントの内容値をターゲットにする異なるヒューリスティックの適用に役
立つ。変換処理502は、データ型分析を介してプリプロセッサ304によって
得られた情報および制御プログラム306によって追跡される情報に基づいて、
組合せ最適化ヒューリスティックを適用するかどうかと適用の方法を判定する。
なる組の数だけではなく、ヒューリスティックによってターゲットとされる状態
情報置換近傍内の検索戦略の効率にも影響する。異なるデータ型特性はそれ自体
、セグメントの内容値をターゲットにする異なるヒューリスティックの適用に役
立つ。変換処理502は、データ型分析を介してプリプロセッサ304によって
得られた情報および制御プログラム306によって追跡される情報に基づいて、
組合せ最適化ヒューリスティックを適用するかどうかと適用の方法を判定する。
【0119】
変換の解を見つけるもう1つの方法が、知的エージェント(「BOTS」)の
使用によるものである。前のセグメント変換の結果を参照することによって、B
OTSプロセスが、セグメントのグループの類似する特性を利用する。変換エン
ジン308の出力を分析して、BOTSの有利な初期位置を確立する。BOTS
は、知的な独立のエージェントである。効果的に、BOTSは、内容値空間内に
まき散らされた点である。後続のセグメントが受け取られる時に、BOTSは、
内容値空間内の点も表す。これらの点に架空の引力ポテンシャルを付与すること
によって、BOTSは、「重心」の近くに移動する。変換エンジン308は、前
に成功裡にテストされた算術変換のそれぞれへのBOTからのデルタを測定する
。処理モニタによってセットされる点(たとえば、セグメント数または処理時間
)で、パッケージャ310に送られる情報は、変換およびその変数値ではなく、
BOT状態情報(位置およびさまざまなデルタ)である。
使用によるものである。前のセグメント変換の結果を参照することによって、B
OTSプロセスが、セグメントのグループの類似する特性を利用する。変換エン
ジン308の出力を分析して、BOTSの有利な初期位置を確立する。BOTS
は、知的な独立のエージェントである。効果的に、BOTSは、内容値空間内に
まき散らされた点である。後続のセグメントが受け取られる時に、BOTSは、
内容値空間内の点も表す。これらの点に架空の引力ポテンシャルを付与すること
によって、BOTSは、「重心」の近くに移動する。変換エンジン308は、前
に成功裡にテストされた算術変換のそれぞれへのBOTからのデルタを測定する
。処理モニタによってセットされる点(たとえば、セグメント数または処理時間
)で、パッケージャ310に送られる情報は、変換およびその変数値ではなく、
BOT状態情報(位置およびさまざまなデルタ)である。
【0120】
内容値グループ化が、時々再出現するので、BOT位置を、後に再呼出しされ
るデータベースにサンプリングする。たとえば、ビデオ走査線の先頭は、各走査
線の中央および末尾と異なる内容値を有する可能性がある。各後続の走査線で、
これらの内容値グループ化が繰り返される可能性が高い。したがって、最初の走
査線の後に、変換エンジン308は、ビデオ走査線のさまざまなセグメントに最
適のBOT位置を有する。各後続のビデオ走査線中に、BOTSは、その位置決
めおよび結果のデルタの最適化を継続する。ビデオ・シーンが変化する時に、B
OTSは、変化するビデオ情報に従う。
るデータベースにサンプリングする。たとえば、ビデオ走査線の先頭は、各走査
線の中央および末尾と異なる内容値を有する可能性がある。各後続の走査線で、
これらの内容値グループ化が繰り返される可能性が高い。したがって、最初の走
査線の後に、変換エンジン308は、ビデオ走査線のさまざまなセグメントに最
適のBOT位置を有する。各後続のビデオ走査線中に、BOTSは、その位置決
めおよび結果のデルタの最適化を継続する。ビデオ・シーンが変化する時に、B
OTSは、変化するビデオ情報に従う。
【0121】
算術変換と同様に、論理変換に関して内容値の効率的な表現を効率的に検索す
る技法がある。組合せ最適化を使用して、内容値の表現に関するすべての可能な
論理置換を効率的に検索する。
る技法がある。組合せ最適化を使用して、内容値の表現に関するすべての可能な
論理置換を効率的に検索する。
【0122】
DNF変換に関して、状態情報の選択には、内容値と等しい、標準DNF式の
よりコンパクトな表現(ブール式)を見つけることが含まれる。その後、これに
よって、コンパクトな表現を標準DNF形式に再公式化することができる圧縮が
もたらされ、これによって、元のストリングの検索が可能になる。前に述べたよ
うに、標準DNF関数は
よりコンパクトな表現(ブール式)を見つけることが含まれる。その後、これに
よって、コンパクトな表現を標準DNF形式に再公式化することができる圧縮が
もたらされ、これによって、元のストリングの検索が可能になる。前に述べたよ
うに、標準DNF関数は
【0123】
【数16】
【0124】
であり、これは、よりコンパクトに、
【0125】
【数17】
【0126】
として表現することができ、これは、
【0127】
【数18】
【0128】
としてよりコンパクトに表現することができる。
一実施形態では、遺伝的アルゴリズムを使用して、標準DNF式の縮小された
表現の状態情報を選択する。遺伝的アルゴリズム(GA)では、ルールを使用し
て、DNF表現を見つけることと最小のDNF式を見つけることという2つの目
的を達成する。
表現の状態情報を選択する。遺伝的アルゴリズム(GA)では、ルールを使用し
て、DNF表現を見つけることと最小のDNF式を見つけることという2つの目
的を達成する。
【0129】
遺伝的検索アルゴリズムでは、下記の複数のステップが使用される。
1.初期化:n個の潜在的な解の初期母集団を構成する。
2.適応度:まず表現の完全さによって、次にそのREG値によって、各母集
団要素の適応度を評価し、適応度によって母集団をソートする。
団要素の適応度を評価し、適応度によって母集団をソートする。
【0130】
3.選択:母集団の上側の高い表現の高いREG部分からの交配のための親対
を選択する。 4.繁殖:親対の交叉によって子孫を生成する。
を選択する。 4.繁殖:親対の交叉によって子孫を生成する。
【0131】
5.突然変異:母集団のランダムに選択された要素を、それをシャッフルする
ことによって突然変異させる。 6.置換:母集団の下側部分を子孫および突然変異した要素と置換する。
ことによって突然変異させる。 6.置換:母集団の下側部分を子孫および突然変異した要素と置換する。
【0132】
7.終了:処理モニタによって設定された停止判断基準に達するまでステップ
2から5を繰り返す。 さらに、DNF変換を使用する時に、成功裡の基礎ストリングを選択する方法
がある。標準の基礎ストリングを使用して、任意の内容値をターゲットにするこ
とができる。しかし、より少数の基礎ストリング・オプションによって、よりよ
い結果が得られる。第1のオプションは、データ駆動の基礎ストリングである。
前処理中にセグメントのデータ型を分析することからセグメントの特性を判定す
ることによって、効率利得を最適にする基礎ストリングが導出される。基礎スト
リングは、デコーダ316に送られ、その結果、パッケージャ310およびデコ
ーダ316がストリングのレコードを有するようにしなければならないので、総
合的な効率利得を高めるために、新たに導出された組を複数のセグメントについ
て使用しなければならない。
2から5を繰り返す。 さらに、DNF変換を使用する時に、成功裡の基礎ストリングを選択する方法
がある。標準の基礎ストリングを使用して、任意の内容値をターゲットにするこ
とができる。しかし、より少数の基礎ストリング・オプションによって、よりよ
い結果が得られる。第1のオプションは、データ駆動の基礎ストリングである。
前処理中にセグメントのデータ型を分析することからセグメントの特性を判定す
ることによって、効率利得を最適にする基礎ストリングが導出される。基礎スト
リングは、デコーダ316に送られ、その結果、パッケージャ310およびデコ
ーダ316がストリングのレコードを有するようにしなければならないので、総
合的な効率利得を高めるために、新たに導出された組を複数のセグメントについ
て使用しなければならない。
【0133】
第2のオプションが、事前に定義された基礎ストリング・データベースである
。データ型が既知の場合、またはセグメントを生成するアプリケーションが既知
の場合、またはプリプロセッサ304が分析400を介してデータ型を導出でき
る場合に、変換処理502で、基礎ストリングのデータベースが使用される。制
御プログラム306が、前の成功裡の基礎ストリングを保管することによって、
基礎ストリングのデータベースを生成する。デコーダ316も、基礎ストリング
のデータベースを参照する。基礎ストリングのデータベースが使用される時には
、基礎ストリング・データベースへのインデックス参照だけが、パケット・オー
バーヘッドに含まれる。
。データ型が既知の場合、またはセグメントを生成するアプリケーションが既知
の場合、またはプリプロセッサ304が分析400を介してデータ型を導出でき
る場合に、変換処理502で、基礎ストリングのデータベースが使用される。制
御プログラム306が、前の成功裡の基礎ストリングを保管することによって、
基礎ストリングのデータベースを生成する。デコーダ316も、基礎ストリング
のデータベースを参照する。基礎ストリングのデータベースが使用される時には
、基礎ストリング・データベースへのインデックス参照だけが、パケット・オー
バーヘッドに含まれる。
【0134】
第3のオプションが、基礎ストリングを選択するためのセグメントの前処理で
ある。セグメントの置換を適当に前処理することによって、変換処理502で、
効率利得を最適にする基礎ストリングが選択される。パッケージャ パッケージャ310は、変換、状態情報、およびセグメントの内容値を再計算
し、元のバイナリ・ストリングを再構成するのに必要な他のすべての情報を識別
するのに必要な情報のすべてを含むパケットを作成する。この情報によって、パ
ケットに変換が含まれるのか、セグメントが生データとして送られるのかが識別
される。この情報によって、セグメントの内容値および、剰余を含む変換の状態
情報をエンコードするのにどの変換が使用されたかも識別される。最後に、この
情報によって、セグメントが突然変異を受けたかどうか、およびどのように受け
たかが示される。パッケージャ310は、既知のパケット・コーディング技法を
使用して、このデータをできる限り小さくパケットにパックする。
ある。セグメントの置換を適当に前処理することによって、変換処理502で、
効率利得を最適にする基礎ストリングが選択される。パッケージャ パッケージャ310は、変換、状態情報、およびセグメントの内容値を再計算
し、元のバイナリ・ストリングを再構成するのに必要な他のすべての情報を識別
するのに必要な情報のすべてを含むパケットを作成する。この情報によって、パ
ケットに変換が含まれるのか、セグメントが生データとして送られるのかが識別
される。この情報によって、セグメントの内容値および、剰余を含む変換の状態
情報をエンコードするのにどの変換が使用されたかも識別される。最後に、この
情報によって、セグメントが突然変異を受けたかどうか、およびどのように受け
たかが示される。パッケージャ310は、既知のパケット・コーディング技法を
使用して、このデータをできる限り小さくパケットにパックする。
【0135】
パケットは、下記の3つのコンポーネントからなることが好ましい。
1)下記を示すパケット・オーバーヘッド
a)変換されたデータと未変換データのどちらが続くかを示す「フラグ・ビ
ット」 b)セグメントのビット長 c)パケットのビット長 d)セグメントの識別 e)セグメント突然変異情報(ある場合に) f)セグメントの内容値を表すのに使用された変換の識別 2)下記を含む、変換によって必要とされる明示的な状態情報 a)内容値をターゲットにするために変換によって使用された、係数、変数
、剰余、ヒューリスティック駆動の情報、または他の状態情報 b)部分的な解のオフセット c)有限状態機械関連の情報 d)BOT関連の情報 3)変換されないデータ いくつかの実施形態で、先在する、暗黙の、データ型およびアプリケーション
駆動の標準規格、および暗黙のルールのレベルを使用して、各パケット内でこの
データのすべてをパックしないようにする。情報は、暗黙のうちにエンコードす
ることも明示的にエンコードすることもできる。スペースを節約するために、暗
黙の情報は、明示的に送出または保管されない。たとえば、生データを送る場合
に、それにフラグが立てられ、必要な唯一の追加パケット・オーバーヘッドが、
生データのビット長になる。また、すべてのセグメントが、アンパッケージャ3
14およびデコーダ316に既知の同一の標準ビット長である場合には、セグメ
ントのビット長が、パケットに含まれない。任意選択として、あるデータ型およ
びあるアプリケーションが、固定されたビット長、変換、変数値長さ、または他
の標準化された情報を含む、標準で暗黙のパケット・フォーマットを使用するよ
うにセット・アップされる。
ット」 b)セグメントのビット長 c)パケットのビット長 d)セグメントの識別 e)セグメント突然変異情報(ある場合に) f)セグメントの内容値を表すのに使用された変換の識別 2)下記を含む、変換によって必要とされる明示的な状態情報 a)内容値をターゲットにするために変換によって使用された、係数、変数
、剰余、ヒューリスティック駆動の情報、または他の状態情報 b)部分的な解のオフセット c)有限状態機械関連の情報 d)BOT関連の情報 3)変換されないデータ いくつかの実施形態で、先在する、暗黙の、データ型およびアプリケーション
駆動の標準規格、および暗黙のルールのレベルを使用して、各パケット内でこの
データのすべてをパックしないようにする。情報は、暗黙のうちにエンコードす
ることも明示的にエンコードすることもできる。スペースを節約するために、暗
黙の情報は、明示的に送出または保管されない。たとえば、生データを送る場合
に、それにフラグが立てられ、必要な唯一の追加パケット・オーバーヘッドが、
生データのビット長になる。また、すべてのセグメントが、アンパッケージャ3
14およびデコーダ316に既知の同一の標準ビット長である場合には、セグメ
ントのビット長が、パケットに含まれない。任意選択として、あるデータ型およ
びあるアプリケーションが、固定されたビット長、変換、変数値長さ、または他
の標準化された情報を含む、標準で暗黙のパケット・フォーマットを使用するよ
うにセット・アップされる。
【0136】
たとえば、圧縮システム300の実施形態では、指数因数分解変換、T=aの
bc乗を使用するか、生データを送るのみである。この圧縮システム300の実
施形態のパケットは、フラグ・ビットから始まり、このフラグ・ビットは、「1
」が、生のセグメントが送られることを示し、「0」が、セグメントが変換され
たことを示す。異なるサイズの3つの変数a、b、およびcの値をパケット内に
書き込み、その結果、デコーダ316がそれらを曖昧さなしに読み取れるように
しなければならない。これを行う方法の1つが、3つの変数値の前にそのサイズ
を置き(サイズは、mビットの数として書き込まれる)、これらの前に、5ビッ
トで書き込まれるmの値を置くことである。
bc乗を使用するか、生データを送るのみである。この圧縮システム300の実
施形態のパケットは、フラグ・ビットから始まり、このフラグ・ビットは、「1
」が、生のセグメントが送られることを示し、「0」が、セグメントが変換され
たことを示す。異なるサイズの3つの変数a、b、およびcの値をパケット内に
書き込み、その結果、デコーダ316がそれらを曖昧さなしに読み取れるように
しなければならない。これを行う方法の1つが、3つの変数値の前にそのサイズ
を置き(サイズは、mビットの数として書き込まれる)、これらの前に、5ビッ
トで書き込まれるmの値を置くことである。
【0137】
バイナリ・ストリングのサイズが、1メガビット(1メガビット=220)まで
に制限され、a、b、およびcの合計サイズがn/2を超えない(nは、バイナ
リ・ストリングのビット数)指数因数分解だけが検討される場合には、3つの係
数a、b、およびcのそれぞれが、多くとも512K(512K=219)ビット
の長さであり、したがって、そのサイズを、19ビットで表すことができる。圧
縮ファイルに19ビットの数として3つのサイズを書き込むことによって、ファ
イル・サイズが57ビットだけ増える。パラメータmは、1と19の間の値を表
さなければならず、したがって、そのサイズは5ビットにすぎない。総オーバー
ヘッドは、57+5=62ビットであり、1メガビットと比較して無視できる値
である。
に制限され、a、b、およびcの合計サイズがn/2を超えない(nは、バイナ
リ・ストリングのビット数)指数因数分解だけが検討される場合には、3つの係
数a、b、およびcのそれぞれが、多くとも512K(512K=219)ビット
の長さであり、したがって、そのサイズを、19ビットで表すことができる。圧
縮ファイルに19ビットの数として3つのサイズを書き込むことによって、ファ
イル・サイズが57ビットだけ増える。パラメータmは、1と19の間の値を表
さなければならず、したがって、そのサイズは5ビットにすぎない。総オーバー
ヘッドは、57+5=62ビットであり、1メガビットと比較して無視できる値
である。
【0138】
7の24乗である48ビット数33232930569601に指数因数分解
を適用すると、それぞれ7、2、および4であるa、b、およびcの値がもたら
される。n/2=3であるので、a、b、およびcの最大サイズは3ビットであ
り、したがって、そのサイズ3、2、および4が、3ビットの数として書き込ま
れ(最大のサイズが3ビット数であるので)、その前に、5ビットの数m=3が
置かれる。したがって、最終的な23ビット・パケットは、次のようになる。
を適用すると、それぞれ7、2、および4であるa、b、およびcの値がもたら
される。n/2=3であるので、a、b、およびcの最大サイズは3ビットであ
り、したがって、そのサイズ3、2、および4が、3ビットの数として書き込ま
れ(最大のサイズが3ビット数であるので)、その前に、5ビットの数m=3が
置かれる。したがって、最終的な23ビット・パケットは、次のようになる。
【0139】
【数19】
【0140】
これによって、すべてのオーバーヘッド・コーディングおよび、変数値などの
必要な情報が、パッケージャ310によってパケットにパッケージ化される方法
の一例が与えられる。
必要な情報が、パッケージャ310によってパケットにパッケージ化される方法
の一例が与えられる。
【0141】
下記は、DNF論理変換からパケットを作成するパッケージャ310の詳細な
例である。上で述べたように、DNFでは、ブール演算子および、下記の、エン
コーダとデコーダの両方に事前に定義された基礎ストリングの組が使用される。
例である。上で述べたように、DNFでは、ブール演算子および、下記の、エン
コーダとデコーダの両方に事前に定義された基礎ストリングの組が使用される。
【0142】
【数20】
【0143】
セグメントが、M=776655443322110016の64ビット内容値
を有する場合に、Mと同等である標準DNF式の縮小された式は、次式になる。
を有する場合に、Mと同等である標準DNF式の縮小された式は、次式になる。
【0144】
【数21】
【0145】
この解を表す1つの可能なパケットが、次式である。
【0146】
【数22】
【0147】
このパケットの各ビットの意味を、次の表に示す。
【0148】
【表1】
【0149】
したがって、パッケージャ310は、64ビット内容値を表す50ビットのパ
ケットを作成する。保管/伝送 パケットは、単にバイナリ・データである。したがって、前に述べたように、
確立された保管方法または伝送方法を使用して、パケットを保管または伝送する
ことができる。パケットは、元の入力バイナリ・ストリングより小さいので、元
のバイナリ・データより少ないストレージ・スペースを占め、より素早く伝送さ
れるという長所を有する。 アンパッケージャ 前に述べたように、アンパッケージャ314は、パケットが伝送された場合に
はパケットを受け取り、パケットが保管された場合にはストレージからパケット
を検索する。アンパッケージャ314は、パケット・オーバーヘッド命令を解釈
し、デコーダ316による使用のためにパケット・コンポーネントおよび関連す
る情報をアンパックし、すべての生データをアンパックする。デコーダ デコーダ316は、アンパッケージャ314からアンパックされた情報を受け
取り、元のセグメントを再計算する。デコーダ316は、適当な変換に状態情報
を適用して、セグメントの内容値を再計算する。データが突然変異を受けた場合
には、その所与のセグメントについて処理を逆転して、セグメントの元のフォー
マットを回復する。
ケットを作成する。保管/伝送 パケットは、単にバイナリ・データである。したがって、前に述べたように、
確立された保管方法または伝送方法を使用して、パケットを保管または伝送する
ことができる。パケットは、元の入力バイナリ・ストリングより小さいので、元
のバイナリ・データより少ないストレージ・スペースを占め、より素早く伝送さ
れるという長所を有する。 アンパッケージャ 前に述べたように、アンパッケージャ314は、パケットが伝送された場合に
はパケットを受け取り、パケットが保管された場合にはストレージからパケット
を検索する。アンパッケージャ314は、パケット・オーバーヘッド命令を解釈
し、デコーダ316による使用のためにパケット・コンポーネントおよび関連す
る情報をアンパックし、すべての生データをアンパックする。デコーダ デコーダ316は、アンパッケージャ314からアンパックされた情報を受け
取り、元のセグメントを再計算する。デコーダ316は、適当な変換に状態情報
を適用して、セグメントの内容値を再計算する。データが突然変異を受けた場合
には、その所与のセグメントについて処理を逆転して、セグメントの元のフォー
マットを回復する。
【0150】
デコーダ316が、上の変換、突然変異、または他の処理に関する情報を必要
とするが、それらがローカルに保管されていない場合には、デコーダ316は、
1)制御プログラム306に要求する、2)変換、突然変異、および他の処理に
関する情報のリポジトリに要求する、または3)変換、突然変異、および他の処
理に関する情報のローカルに使用可能なリポジトリからそれらを再構成すること
によって、その情報を要求する。
とするが、それらがローカルに保管されていない場合には、デコーダ316は、
1)制御プログラム306に要求する、2)変換、突然変異、および他の処理に
関する情報のリポジトリに要求する、または3)変換、突然変異、および他の処
理に関する情報のローカルに使用可能なリポジトリからそれらを再構成すること
によって、その情報を要求する。
【0151】
いくつかの実施形態では、デコーダ316が、内容値を計算するのではなく、
変換内容値のデータベース内で内容値をルック・アップする。リコンスティチュータ 前に述べたように、リコンスティチュータ318は、デコーダ316からセグ
メントを受け取り、セグメントを順番に連結して、元のバイナリ・ストリングを
再構成する。アプリケーション・パラメータに基づいて、これをファイル全体に
対して行うか、アプリケーションによる必要に応じてストリーム化することがで
きる。その後、リコンスティチュータ318が、バイナリ・ストリング320を
出力する。リコンスティチュータ318によって出力されるバイナリ・ストリン
グ320は、入力バイナリ・ストリングと同一である。したがって、圧縮システ
ム300は、ロスレス圧縮を提供する。
変換内容値のデータベース内で内容値をルック・アップする。リコンスティチュータ 前に述べたように、リコンスティチュータ318は、デコーダ316からセグ
メントを受け取り、セグメントを順番に連結して、元のバイナリ・ストリングを
再構成する。アプリケーション・パラメータに基づいて、これをファイル全体に
対して行うか、アプリケーションによる必要に応じてストリーム化することがで
きる。その後、リコンスティチュータ318が、バイナリ・ストリング320を
出力する。リコンスティチュータ318によって出力されるバイナリ・ストリン
グ320は、入力バイナリ・ストリングと同一である。したがって、圧縮システ
ム300は、ロスレス圧縮を提供する。
【図1】
圧縮プロセスの概要を示すフローチャートである。
【図2】
回復プロセスの概要を示すフローチャートである。
【図3】
圧縮システムのブロック図であり、この圧縮システムを介したデータの全体的
な流れを示す図である。
な流れを示す図である。
【図4】
プリプロセッサのフローチャートである。
【図5】
変換エンジンのフローチャートである。
【図6】
変換プロセスのフローチャートである。
【図7】
状態情報の可能なセットのことごとくをテストせずに、有利な状態情報のセッ
トを発見することを示す図である。
トを発見することを示す図である。
【図8】
セグメント内の部分的解法を示す図である。
─────────────────────────────────────────────────────
フロントページの続き
(81)指定国 EP(AT,BE,CH,CY,
DE,DK,ES,FI,FR,GB,GR,IE,I
T,LU,MC,NL,PT,SE,TR),OA(BF
,BJ,CF,CG,CI,CM,GA,GN,GW,
ML,MR,NE,SN,TD,TG),AP(GH,G
M,KE,LS,MW,MZ,SD,SL,SZ,TZ
,UG,ZW),EA(AM,AZ,BY,KG,KZ,
MD,RU,TJ,TM),AE,AG,AL,AM,
AT,AU,AZ,BA,BB,BG,BR,BY,B
Z,CA,CH,CN,CR,CU,CZ,DE,DK
,DM,DZ,EE,ES,FI,GB,GD,GE,
GH,GM,HR,HU,ID,IL,IN,IS,J
P,KE,KG,KP,KR,KZ,LC,LK,LR
,LS,LT,LU,LV,MA,MD,MG,MK,
MN,MW,MX,MZ,NO,NZ,PL,PT,R
O,RU,SD,SE,SG,SI,SK,SL,TJ
,TM,TR,TT,TZ,UA,UG,UZ,VN,
YU,ZA,ZW
(72)発明者 トベルマン,ラルフ
アメリカ合衆国コロラド州80487,スチー
ムボート・スプリンツ,コッパー・ロー
ズ・コート 3
Fターム(参考) 5J064 AA02 BA10 BB06 BC01 BC03
BC08 BC09 BC14 BC29 BD01
Claims (86)
- 【請求項1】 メッセージを圧縮するための、コンピュータで実施される方
法において、 メッセージの数値を評価するステップと、 変換および関連する状態情報を選択するステップであって、選択された変換お
よび関連する状態情報がメッセージの数値に等しい数値を有する、ステップと、 選択された変換および関連する状態情報を表現する符号を生成するステップと
、 を含む方法。 - 【請求項2】 変換が数学的変換である、請求項1に記載の方法。
- 【請求項3】 変換が算術的変換である、請求項2に記載の方法。
- 【請求項4】 算術的変換が、少なくとも1つの変数を有する算術関数を含
む、請求項3に記載の方法。 - 【請求項5】 変換および関連する状態情報を選択するステップが、 算術関数のすべての変数に対する値を選択するステップと、 選択された変数の値を伴う関数の数値を決定するステップと、 剰余を決定するステップであって、その剰余がメッセージの数値と、選択され
た変数の値を伴う関数の数値との間の差に等しい、ステップと、 を含み、 状態情報が、選択された変数の値および剰余を含む、請求項4に記載の方法。 - 【請求項6】 変換および関連する状態情報を選択するステップが、 第1の変換および第1の変換に関連する状態情報を選択するステップと、 関連する状態情報を伴う第1の変換の数値を決定するステップと、 剰余を決定するステップであって、剰余がメッセージの数値と、関連する状態
情報を伴う第1の変換の数値との間の差に等しい、ステップと、 第2の変換および関連する状態情報を選択するステップであって、第2の変換
および状態情報が、剰余の数値に等しい数値を有する、ステップと、 を含み、 変換および関連する状態情報が、第1の変換および関連する状態情報と、第2
の変換および関連する状態情報とを含む、請求項1に記載の方法。 - 【請求項7】 変換が論理的変換である、請求項2に記載の方法。
- 【請求項8】 変換が有限状態機械である、請求項7に記載の方法。
- 【請求項9】 変換が選言標準形(DNF)関数である、請求項7に記載の
方法。 - 【請求項10】 DNF関数が複数の基本ストリングを含む、請求項9に記
載の方法。 - 【請求項11】 複数の基本ストリングが基本ストリングのデータベースに
記憶されている、請求項10に記載の方法。 - 【請求項12】 メッセージのデータ・タイプを識別するステップをさらに
含む、請求項10に記載の方法。 - 【請求項13】 複数の基本ストリングが、メッセージのデータ・タイプに
基づいて基本ストリングのデータベースから取り出される、請求項12に記載の
方法。 - 【請求項14】 変換に対する状態情報のセットを選択するステップが、 メッセージを標準DNF関数で表現するステップと、 標準DNF関数の縮小された数式を選択するステップと、 を含む、請求項9に記載の方法。
- 【請求項15】 標準DNF関数の縮小された数式を選択するステップが、
組合わせ最適化ヒューリスティックを適用するステップを含む、請求項14に記
載の方法。 - 【請求項16】 組合わせ最適化ヒューリスティックが遺伝的アルゴリズム
である、請求項15に記載の方法。 - 【請求項17】 変換および関連する状態情報を選択するステップが、状態
情報の複数のセットをテストするステップを含む、請求項1に記載の方法。 - 【請求項18】 状態情報の複数のセットをテストするステップが、 状態情報の複数のセットのそれぞれに対して、変換および状態情報のセットを
表現する符号を生成するステップと、 各符号のサイズを評価するステップと、 最小サイズの符号を有する変換および関連する状態情報を選択するステップと
、 を含む、請求項17に記載の方法。 - 【請求項19】 符号がパケット・オーバーヘッドをさらに表現する、請求
項18に記載の方法。 - 【請求項20】 変換が、変換の記憶されているライブラリから選択される
、請求項1に記載の方法。 - 【請求項21】 変換および関連する状態情報を選択することが、複数の変
換をテストするステップを含む、請求項1に記載の方法。 - 【請求項22】 複数の変換をテストするステップが、 複数の変換のそれぞれに対して、変換に関連する状態情報の複数のセットをテ
ストするステップであって、各変換および状態情報のセットが、メッセージの数
値に等しい数値を有する、ステップと、 状態情報の複数のセットのそれぞれに対して、変換および状態情報のセットを
表現する符号を生成するステップと、 各符号のサイズを決定するステップと、 最小サイズの符号を有する変換および関連する状態情報を選択するステップ を含む、請求項21に記載の方法。 - 【請求項23】 最小サイズの符号を有する変換および関連する状態情報を
選択するステップが、ターゲットとする符号サイズに等しいかまたはそれより小
さい符号サイズを有する変換および関連する状態情報を選択するステップを含む
、請求項22に記載の方法。 - 【請求項24】 経過した期間に応じて、最小サイズの符号を有する、テス
トされた変換および関連する状態情報を選択するステップをさらに含む、請求項
22に記載の方法。 - 【請求項25】 いくつかの計算サイクルを実行するステップに応じて、最
小サイズ符号を有する、テストされた変換および関連する状態情報を選択するス
テップをさらに含む、請求項22に記載の方法。 - 【請求項26】 メッセージのデータ・タイプを識別するステップをさらに
含む、請求項1に記載の方法。 - 【請求項27】 メッセージのデータ・タイプを識別するステップが、その
メッセージを、周知のデータ・タイプによるメッセージのデータベースと比較す
るステップを含む、請求項26に記載の方法。 - 【請求項28】 メッセージのデータ・タイプを識別するステップが、その
メッセージを生成したアプリケーションを識別するステップを含む、請求項26
に記載の方法。 - 【請求項29】 変換が、メッセージのデータ・タイプに基づいて選択され
る、請求項26に記載の方法。 - 【請求項30】 状態情報が、メッセージのデータ・タイプに基づいて選択
される、請求項26に記載の方法。 - 【請求項31】 変換および関連する状態情報を選択する前に、メッセージ
に変異を適用するステップをさらに含む、請求項1に記載の方法。 - 【請求項32】 選択された変換および関連する状態情報を表現する符号が
、パケット・オーバーヘッドをさらに表現する、請求項31に記載の方法。 - 【請求項33】 パケット・オーバーヘッドが、適用された変異を識別する
、請求項32に記載の方法。 - 【請求項34】 変異が、シャッフル、補数、シフト、圧縮方法、スケーリ
ング方法、および排他的論理和演算方法から構成されるグループから選択される
、請求項31に記載の方法。 - 【請求項35】 メッセージのデータ・タイプに基づいて、メッセージに変
異を適用するステップをさらに含む、請求項26に記載の方法。 - 【請求項36】 データ・タイプに基づいて変換を選択するステップと、 メッセージに変異を適用するステップであって、選択された変換に基づいて変
異が適用される、ステップと、 をさらに含む、請求項26に記載の方法。 - 【請求項37】 符号が、パケット・オーバーヘッドをさらに表現する、請
求項1に記載の方法。 - 【請求項38】 パケット・オーバーヘッドが、そのメッセージが変換済み
であることを意味するフラグを含む、請求項37に記載の方法。 - 【請求項39】 パケット・オーバーヘッドが、メッセージのビット長を含
む、請求項37に記載の方法。 - 【請求項40】 パケット・オーバーヘッドが、符号のビット長を含む、請
求項37に記載の方法。 - 【請求項41】 パケット・オーバーヘッドが、メッセージの識別を含む、
請求項37に記載の方法。 - 【請求項42】 パケット・オーバーヘッドが、選択された変換の識別を含
む、請求項37に記載の方法。 - 【請求項43】 パケット・オーバーヘッドが、選択された状態情報を解釈
するために必要な情報を含む、請求項37に記載の方法。 - 【請求項44】 変換が、指数分解、べき級数、等比級数、整数列、三角関
数、ベッセル関数、漸近級数、選言標準形関数、有限オートマータ、de Br
uijn数列、3Dグラフ・ツリー、N次元の空間表現、無限乗積、連分数、ジ
オファンタス方程式、Mobins関数、代数曲線、積分変換、逆円(三角)関
数、球面三角関数、対数関数、双曲線関数、直交多項式、ポリロガリズム、Le
gandra関数、楕円積分、数列変換(z変換)、およびマルコフ連鎖から構
成されるグループから選択される、請求項1に記載の方法。 - 【請求項45】 変換および関連する状態情報を選択するステップが、事前
に計算されたデータベースから状態情報を選択するステップを含み、事前に計算
されたデータベースが、状態情報の複数のセットと、状態情報の複数のセットの
それぞれに対して、変換およびその状態情報のセットに対応する数値を含む、請
求項1に記載の方法。 - 【請求項46】 事前に計算されたデータベースから状態情報を選択するス
テップが、メッセージの数値に最も近い対応する数値を有する事前に計算された
データベース内の状態情報のセットを選択するステップを含む、請求項45に記
載の方法。 - 【請求項47】 変換および関連する状態情報を選択するステップが、 第1の変換および関連する状態情報を事前に計算されたデータベースから選択
するステップであって、事前に計算されたデータベースが、第1の変換に関連す
る状態情報の複数のセットと、状態情報の複数のセットのそれぞれに対して、第
1の変換およびその状態情報のセットの対応する数値とを含む、ステップと、 剰余を決定するステップであって、剰余が、メッセージの数値と、第1の変換
および関連する状態情報の数値との間の差に等しい、ステップと、 第2の変換および関連する状態情報を事前に計算されたデータベースから選択
するステップと、 を含み、 変換および関連する状態情報が、第1の変換および関連する状態情報と、第2
の変換および関連する状態情報とを含む、請求項1に記載の方法。 - 【請求項48】 第1の変換および関連する状態情報を事前に計算されたデ
ータベースから選択するステップが、メッセージの数値に最も近い対応する数値
を有する、事前に計算されたデータベース内の変換および関連する状態情報を選
択するステップを含む、請求項47に記載の方法。 - 【請求項49】 変換および関連する状態情報を選択するステップが、 以前に成功した状態情報の範囲の記憶されているリストから状態情報の範囲を
取り出すステップと、 最適化アルゴリズムを使用して、状態情報のその範囲内で状態情報の異なるセ
ットを反復的にテストするステップと、 状態情報のそれぞれのセットに対して、変換および状態情報のセットを表現す
る符号を生成するステップと、 最小の符号を有する、テストされた状態情報のセットを選択するステップと、
を含む、請求項1に記載の方法。 - 【請求項50】 変換および関連する状態情報を選択するステップが、 最良の状態情報を決定するために組合わせ最適化ヒューリスティックを適用す
るステップであって、最良の状態情報が、変換およびその状態情報を表現する最
小の符号サイズを有する、ステップと、 その最良の状態情報を選択するステップ を含む、請求項1に記載の方法。 - 【請求項51】 適用される組合わせ最適化ヒューリスティックが、山登り
法、欲張りな山登り法、タブー探索、焼きなまし法、人工ニューラル・ネットワ
ーク、ボルツマン・マシン、進化的アルゴリズム、および遺伝的アルゴリズムか
ら構成されるグループから選択される、請求項50に記載の方法。 - 【請求項52】 変換および関連する状態情報を選択するステップが、 最良の状態情報を決定するためにインテリジェント・エージェントを適用する
ステップであって、最良の状態情報が、変換およびその状態情報を表現する最小
サイズの符号を有する、ステップと、 その最良の状態情報を選択するステップと、 を含む、請求項1に記載の方法。 - 【請求項53】 インテリジェント・エージェントが、直前のメッセージに
対して選択された変換および関連する状態情報を記憶する、請求項52に記載の
方法。 - 【請求項54】 変換および関連する状態情報を選択するステップが、 複数の部分的解法による変換を選択するステップであって、部分的解法による
変換が、変換を構成するように組み合わされる、ステップと、 複数の部分的解法による変換のそれぞれに対して、その部分的解法による変換
に関連する状態情報を選択するステップであって、部分的解法による変換および
状態情報が、メッセージの一部分の数値に等しい数値を有し、各部分的解法によ
る変換に関連する状態情報が、状態情報を構成するように組み合わされる、ステ
ップと、 を含む、請求項1に記載の方法。 - 【請求項55】 複数の部分的解法による変換および関連する状態情報を選
択するステップが、ダイナミック・プログラミングを適用するステップを含む、
請求項54に記載の方法。 - 【請求項56】 複数の部分的解法による変換および関連する状態情報を選
択するステップが、1次元ダイナミック・プログラミングを適用するステップを
含む、請求項55に記載の方法。 - 【請求項57】 選択された変換および関連する状態情報を表現する符号を
記憶するステップをさらに含む、請求項1に記載の方法。 - 【請求項58】 符号がコンピュータ可読媒体に記憶されている、請求項5
7に記載の方法。 - 【請求項59】 選択された変換および関連する状態情報を表現する符号を
送信するステップをさらに含む、請求項1に記載の方法。 - 【請求項60】 選択された変換および関連する状態情報を表現する符号の
サイズを評価するステップと、 その符号のサイズをメッセージのサイズと比較するステップと、 その符号のサイズがメッセージのサイズよりも大きい場合はメッセージを記憶
するステップと、 をさらに含む、請求項1に記載の方法。 - 【請求項61】 選択された変換および関連する状態情報を表現する符号の
サイズを評価するステップと、 その符号のサイズをメッセージのサイズと比較するステップと、 その符号のサイズがメッセージのサイズよりも大きい場合はメッセージを送信
するステップと、 をさらに含む、請求項1に記載の方法。 - 【請求項62】 メッセージを圧縮するための、コンピュータで実施される
方法において、 メッセージを複数のセグメントに分割するステップと、 各セグメントに対して、セグメントの数値を評価するステップと、 各セグメントに対して、セグメントに対する変換および関連する状態情報を選
択するステップであって、選択された変換および関連する状態情報が、セグメン
トの数値に等しい数値を有する、ステップと、 各セグメントに対して、選択された変換および関連する状態情報を表現する符
号を生成するステップと、 を含む方法。 - 【請求項63】 メッセージを複数のセグメントに分割するステップが、 メッセージのデータ・タイプを決定するステップと、 そのデータ・タイプに基づいて、データ・セグメントに対する最適サイズを決
定するステップと、 そのメッセージをその最適サイズのデータ・セグメントに分割するステップと
、 を含む、請求項62に記載の方法。 - 【請求項64】 メッセージを複数のセグメントに分割するステップが、 そのメッセージを圧縮するための時間の制約を決定するステップと、 その時間の制約に基づいて、データ・セグメントに対する最適サイズを決定す
るステップと、 そのメッセージをその最適サイズのデータ・セグメントに分割するステップと
、 を含む、請求項62に記載の方法。 - 【請求項65】 メッセージを圧縮するための時間の制約を決定するステッ
プが、変換および関連する状態情報を選択するために使用可能な計算資源を決定
するステップを含む、請求項64に記載の方法。 - 【請求項66】 セグメントに変異を適用するステップをさらに含む、請求
項62に記載の方法。 - 【請求項67】 選択された変換に基づいて、セグメントに変異を適用する
ステップをさらに含む、請求項66に記載の方法。 - 【請求項68】 変異がセグメント・サイズの調製である、請求項66に記
載の方法。 - 【請求項69】 数値を有するメッセージを圧縮するための、コンピュータ
で実施される方法において、 変換および関連する状態情報を選択するステップであって、変換および関連す
る状態情報が、メッセージの数値に等しい数値を有する、ステップと、 選択された変換および関連する状態情報を表現する符号を生成するステップと
、 を含む方法。 - 【請求項70】 圧縮されたメッセージを回復するための、コンピュータで
実施される方法において、 変換および状態情報を表現する符号を受信するステップと、 変換および関連する状態情報の数値を計算するステップであって、変換および
関連する状態情報の数値が、メッセージの数値に等しい、ステップと、 その数値を回復されたメッセージとして出力するステップと、 を含む方法。 - 【請求項71】 圧縮されたメッセージを回復するための、コンピュータで
実施される方法において、 複数の符号を受信するステップであって、各符号が変換および関連する状態情
報を表現する、ステップと、 各変換および関連する状態情報の数値を計算するステップであって、各変換お
よび関連する状態情報の数値が、メッセージのセグメントの数値に等しい数値を
有するステップと、 すべてのセグメントの数値を組み合わせることによってメッセージを再構成す
るステップと、 を含む方法。 - 【請求項72】 受信される第1の符号が、受信される第2の符号に関する
情報を提供する、請求項71に記載の方法。 - 【請求項73】 データ圧縮システムにおいて、 メッセージを受信し、 そのメッセージを、各セグメントが数値を有する、複数のセグメントに分割し
、 各セグメントに対して、セグメントの数値を評価し、 各セグメントに対して、セグメントの数値を変換モジュールに出力する前処理
モジュールと、 各セグメントに対して、変換および関連する状態情報を選択し、選択された変
換および関連する状態情報が、そのセグメントの数値に等しい数値を有する変換
モジュールであって、 選択された変換および関連する選択された状態情報を表現する符号を生成する
変換モジュールと を含むデータ圧縮システム。 - 【請求項74】 データ伸張システムにおいて、 各符号が変換および状態情報を表現する、複数の符号を受信し、 各符号に対して、変換および状態情報を復号モジュールに出力するアンパッケ
ージング・モジュールと、 各変換および状態情報に対して変換および関連する状態情報の数値を計算し、
その変換および関連する状態情報の数値がセグメントの数値に等しい復号モジュ
ールであって、 すべてのセグメントの数値を連結することによってメッセージを再構成する復
号モジュールと を含むデータ伸張システム。 - 【請求項75】 コンピュータ可読搬送波であって、変換および関連する状
態情報を表現する符号を含み、変換および関連する状態情報が、メッセージの数
値に等しい数値を有し、符号が、メッセージの長さよりも短い長さを有するコン
ピュータ可読搬送波。 - 【請求項76】 コンピュータ可読媒体上で符号化され、プロセッサを制御
してメッセージを圧縮する方法を実施するコンピュータ・プログラム製品におい
て、 メッセージの数値を評価するステップと、 変換および関連する状態情報を選択するステップであって、選択された変換お
よび状態情報がメッセージの数値に等しい数値を有する、ステップと、 選択された変換および関連する状態情報を表現する符号を生成するステップと
、 を含むコンピュータ・プログラム製品。 - 【請求項77】 メッセージを圧縮し、かつ伸張するための、コンピュータ
で実施される方法において、 メッセージの数値を評価するステップと、 変換および関連する状態情報を選択するステップであって、選択された変換お
よび関連する状態情報が、メッセージの数値に等しい数値を有する、ステップと
、 選択された変換および関連する状態情報を表現する符号を生成するステップと
、 選択された変換および関連する状態情報を表現する符号を記憶するステップと
、 変換および状態情報を表現する符号を記憶装置から取り出すステップと、 変換および関連する状態情報の数値を計算するステップであって、変換および
関連する状態情報の数値が、メッセージの数値に等しいステップを含む方法。 - 【請求項78】 メッセージを圧縮し、かつ伸張するための、コンピュータ
で実施される方法において、 メッセージの数値を評価するステップと、 変換および関連する状態情報を選択するステップであって、選択された変換お
よび関連する状態情報が、メッセージの数値に等しい数値を有する、ステップと
、 選択された変換および関連する状態情報を表現する符号を生成するステップと
、 選択された変換および関連する状態情報を表現する符号を送信するステップと
、 変換および状態情報を表現する符号を受信するステップと、 変換および関連する状態情報の数値を計算するステップであって、変換および
関連する状態情報の数値が、メッセージの数値に等しいステップを含む方法。 - 【請求項79】 メッセージを圧縮し、かつ伸張するシステムにおいて、 数値を有するメッセージを受信し、 そのメッセージの数値を評価し、 そのメッセージの数値を変換モジュールに出力する前処理モジュールと、 変換および関連する状態情報を選択し、選択された変換および関連する状態情
報が、メッセージの数値に等しい数値を有する変換モジュールであって、 選択された変換および関連する選択された状態情報を表現する符号を生成し、 選択された変換および関連する選択された状態情報を表現する符号を出力する
変換モジュールと、 変換および状態情報を表現する符号を受信するアンパッケージング・モジュー
ルと、 変換および関連する状態情報の数値を計算し、変換および関連する状態情報の
数値が、メッセージの数値に等しい復号モジュールと を含むシステム。 - 【請求項80】 メッセージを圧縮するシステムにおいて、 メッセージの数値を評価する手段と、 変換および関連する状態情報を選択する手段であって、選択された変換および
関連する状態情報が、メッセージの数値に等しい数値を有する手段と、 選択された変換および関連する状態情報を表現する符号を生成する手段と を含むシステム。 - 【請求項81】 メッセージのデータ・タイプを識別する手段をさらに含む
、請求項80に記載のシステム。 - 【請求項82】 変換および関連する状態情報を選択する前に、メッセージ
に変異を適用する手段をさらに含む、請求項80に記載のシステム。 - 【請求項83】 メッセージを圧縮するシステムにおいて、 メッセージを複数のセグメントに分割する手段と、 各セグメントに対してセグメントの数値を評価する手段と、 各セグメントに対して変換および関連する状態情報を選択する手段であって、
選択された変換および関連する状態情報が、セグメントの数値に等しい数値を有
する手段と、 各セグメントに対して選択された変換および関連する状態情報を表現する符号
を生成する手段と を含むシステム。 - 【請求項84】 圧縮されたメッセージを回復するシステムにおいて、 変換および状態情報を表現する符号を受信する手段と、 変換および関連する状態情報の数値を計算する手段であって、変換および関連
する状態情報の数値が、メッセージの数値に等しい手段と を含むシステム。 - 【請求項85】 メッセージを圧縮し、かつ伸張するシステムにおいて、 メッセージの数値を評価する手段と、 変換および関連する状態情報を選択する手段であって、選択された変換および
関連する状態情報が、メッセージの数値に等しい数値を有する手段と、 選択された変換および関連する状態情報を表現する符号を生成する手段と、 選択された変換および関連する状態情報を表現する符号を記憶する手段と、 変換および状態情報を表現する符号を記憶装置から取り出す手段と、 変換および関連する状態情報の数値を計算する手段であって、変換および関連
する状態情報の数値が、メッセージの数値に等しい手段と を含むシステム。 - 【請求項86】 メッセージを圧縮し、かつ伸張するシステムにおいて、 メッセージの数値を評価する手段と、 変換および関連する状態情報を選択する手段であって、選択された変換および
関連する状態情報が、メッセージの数値に等しい数値を有する手段と、 選択された変換および関連する状態情報を表現する符号を生成する手段と、 選択された変換および関連する状態情報を表現する符号を送信する手段と、 変換および状態情報を表現する符号を受信する手段と、 変換および関連する状態情報の数値を計算する手段であって、変換および関連
する状態情報の数値が、メッセージの数値に等しい手段と、 を含むシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17430500P | 2000-01-03 | 2000-01-03 | |
US60/174,305 | 2000-01-03 | ||
PCT/US2000/035672 WO2001050325A2 (en) | 2000-01-03 | 2000-12-29 | Lossless data compression |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2003519945A true JP2003519945A (ja) | 2003-06-24 |
Family
ID=22635683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001550616A Pending JP2003519945A (ja) | 2000-01-03 | 2000-12-29 | データの送信または記憶のための効率的で可逆的な変換 |
Country Status (9)
Country | Link |
---|---|
US (1) | US6633244B2 (ja) |
EP (1) | EP1248991A2 (ja) |
JP (1) | JP2003519945A (ja) |
CN (1) | CN1437738A (ja) |
AU (1) | AU2610701A (ja) |
CA (1) | CA2396369A1 (ja) |
IL (1) | IL150556A0 (ja) |
TW (1) | TW502178B (ja) |
WO (1) | WO2001050325A2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007508753A (ja) * | 2003-10-17 | 2007-04-05 | パクバイト ソフトウエア プロプライアタリー リミティド | データ圧縮システム及び方法 |
US8347298B2 (en) | 2006-10-02 | 2013-01-01 | Japan Aerospace Exploration Agency | Autonomous distributed control involving constraint on resources |
JP2018502493A (ja) * | 2014-11-26 | 2018-01-25 | ケリコンプ エービー | 改善されたファイルの圧縮及び暗号化 |
US11270731B2 (en) | 2018-04-10 | 2022-03-08 | Carl Zeiss Microscopy Gmbh | Methods and apparatuses for compressing and decompressing drive curves |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
AUPQ486599A0 (en) * | 1999-12-23 | 2000-02-03 | Zentronix Pty Ltd | A method of storing and retrieving miniaturised data |
US6748457B2 (en) | 2000-02-03 | 2004-06-08 | Realtime Data, Llc | Data storewidth accelerator |
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 |
US7386046B2 (en) | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
US7564970B2 (en) * | 2004-08-12 | 2009-07-21 | Cmla, Llc | Exponential data transform to enhance security |
US8077861B2 (en) * | 2004-08-12 | 2011-12-13 | Cmla, Llc | Permutation data transform to enhance security |
US7577250B2 (en) * | 2004-08-12 | 2009-08-18 | Cmla, Llc | Key derivation functions to enhance security |
US7126500B2 (en) * | 2002-06-26 | 2006-10-24 | Microsoft Corporation | Method and system for selecting grammar symbols for variable length data compressors |
US7190788B2 (en) * | 2002-09-13 | 2007-03-13 | Intel Corporation | Methods and apparatus for encrypting a binary string |
US7272658B1 (en) * | 2003-02-13 | 2007-09-18 | Adobe Systems Incorporated | Real-time priority-based media communication |
US7287256B1 (en) | 2003-03-28 | 2007-10-23 | Adobe Systems Incorporated | Shared persistent objects |
US7966424B2 (en) * | 2004-03-15 | 2011-06-21 | Microsoft Corporation | Data compression |
US20050246362A1 (en) * | 2004-05-03 | 2005-11-03 | Borland Devin P | System and method for dynamci log compression in a file system |
JP4175296B2 (ja) * | 2004-06-25 | 2008-11-05 | キャタピラージャパン株式会社 | 建設機械のデータ処理装置及び建設機械のデータ処理方法 |
EP2629449A2 (en) * | 2004-08-12 | 2013-08-21 | Cmla, Llc. | Key derivation |
US8135362B2 (en) * | 2005-03-07 | 2012-03-13 | Symstream Technology Holdings Pty Ltd | Symbol stream virtual radio organism method and apparatus |
US8521752B2 (en) | 2005-06-03 | 2013-08-27 | Osr Open Systems Resources, Inc. | Systems and methods for arbitrary data transformations |
US20070233477A1 (en) * | 2006-03-30 | 2007-10-04 | Infima Ltd. | Lossless Data Compression Using Adaptive Context Modeling |
US7512748B1 (en) | 2006-08-17 | 2009-03-31 | Osr Open Systems Resources, Inc. | Managing lock rankings |
US8539228B1 (en) | 2006-08-24 | 2013-09-17 | Osr Open Systems Resources, Inc. | Managing access to a resource |
US8024433B2 (en) | 2007-04-24 | 2011-09-20 | Osr Open Systems Resources, Inc. | Managing application resources |
US7949693B1 (en) | 2007-08-23 | 2011-05-24 | Osr Open Systems Resources, Inc. | Log-structured host data storage |
US8142023B2 (en) * | 2007-12-21 | 2012-03-27 | Honda Motor Co., Ltd. | Optimized projection pattern for long-range depth sensing |
US8607066B1 (en) * | 2008-08-04 | 2013-12-10 | Zscaler, Inc. | Content inspection using partial content signatures |
US8051287B2 (en) | 2008-10-15 | 2011-11-01 | Adobe Systems Incorporated | Imparting real-time priority-based network communications in an encrypted communication session |
US8106799B1 (en) * | 2009-03-23 | 2012-01-31 | Marvell International Ltd. | Data compression and decompression using parallel processing |
CN102388614B (zh) * | 2009-04-08 | 2015-04-29 | 夏普株式会社 | 运动图像编码装置以及运动图像解码装置 |
US8538939B2 (en) * | 2011-05-31 | 2013-09-17 | International Business Machines Corporation | Parsing optional block data |
EP2541408B1 (en) * | 2011-06-28 | 2020-10-07 | Amadeus S.A.S. | Method and system for processing data for database modification |
CN102314697B (zh) * | 2011-07-20 | 2013-04-10 | 张行清 | 基于数据类型的数值型数据压缩及解压缩方法 |
US8903874B2 (en) | 2011-11-03 | 2014-12-02 | Osr Open Systems Resources, Inc. | File system directory attribute correction |
US9166620B2 (en) * | 2012-09-26 | 2015-10-20 | Qualcomm Incorporated | Method and apparatus for a memory based packet compression encoding |
US9792350B2 (en) | 2013-01-10 | 2017-10-17 | International Business Machines Corporation | Real-time classification of data into data compression domains |
US9564918B2 (en) * | 2013-01-10 | 2017-02-07 | International Business Machines Corporation | Real-time reduction of CPU overhead for data compression |
US9053121B2 (en) | 2013-01-10 | 2015-06-09 | International Business Machines Corporation | Real-time identification of data candidates for classification based compression |
US11288240B1 (en) * | 2013-03-12 | 2022-03-29 | AdTheorent, Inc. | Data learning and analytics apparatuses, methods and systems |
US9041566B2 (en) | 2013-08-30 | 2015-05-26 | International Business Machines Corporation | Lossless compression of the enumeration space of founder line crosses |
US9830329B2 (en) | 2014-01-15 | 2017-11-28 | W. Anthony Mason | Methods and systems for data storage |
US11195230B2 (en) * | 2014-07-25 | 2021-12-07 | Clearingbid, Inc. | Systems including a hub platform, communication network and memory configured for processing data involving time-stamped/time-sensitive aspects and/or other features |
US9355038B2 (en) | 2014-09-11 | 2016-05-31 | Qualcomm Incorporated | Cache bank spreading for compression algorithms |
US9286313B1 (en) * | 2014-12-27 | 2016-03-15 | Ascava, Inc. | Efficient lossless reduction of data by deriving data from prime data elements resident in a content-associative sieve |
US9594765B2 (en) | 2014-12-27 | 2017-03-14 | Ascava, Inc. | Performing keyword-based search and retrieval on data that has been losslessly reduced using a prime data sieve |
SE543293C2 (en) * | 2015-04-17 | 2020-11-17 | Kelicomp Ab | Improved compression of a file |
SE544304C2 (en) * | 2015-04-17 | 2022-03-29 | URAEUS Communication Systems AB | Improved compression and encryption of a file |
JP6726690B2 (ja) * | 2015-06-15 | 2020-07-22 | アスカバ・インコーポレイテッドAscava, Inc. | 基本データシーブを用いて無損失削減されたデータに対する多次元検索、コンテンツ連想的な取出し、ならびにキーワードベースの検索および取出しの実行 |
US9552384B2 (en) * | 2015-06-19 | 2017-01-24 | HGST Netherlands B.V. | Apparatus and method for single pass entropy detection on data transfer |
JP6846426B2 (ja) * | 2015-12-10 | 2021-03-24 | アスカバ・インコーポレイテッドAscava, Inc. | 音声データおよびブロック処理ストレージシステム上に記憶されたデータの削減 |
CN105634499B (zh) * | 2015-12-30 | 2020-12-01 | 广东工业大学 | 一种基于新短浮点型数据的数据转换方法 |
US20180145701A1 (en) * | 2016-09-01 | 2018-05-24 | Anthony Ben Benavides | Sonic Boom: System For Reducing The Digital Footprint Of Data Streams Through Lossless Scalable Binary Substitution |
CN108255411A (zh) * | 2016-12-29 | 2018-07-06 | 北京京东尚科信息技术有限公司 | 一种数据压缩方法与装置和数据解压缩方法与装置 |
CN106849024B (zh) * | 2017-03-10 | 2018-11-30 | 中国南方电网有限责任公司电网技术研究中心 | 基于fpga实现继电保护装置sv订阅功能的方法和装置 |
CN108459557B (zh) * | 2017-07-26 | 2021-11-19 | 华中科技大学 | 零件加工尺寸评测方法 |
US10963429B2 (en) | 2017-10-11 | 2021-03-30 | Lognovations Holdings, Llc | Method and system for content agnostic file indexing |
US11138152B2 (en) | 2017-10-11 | 2021-10-05 | Lognovations Holdings, Llc | Method and system for content agnostic file indexing |
TWI745697B (zh) * | 2019-05-24 | 2021-11-11 | 創鑫智慧股份有限公司 | 用於神經網路參數的運算系統及其壓縮方法 |
US20210224238A1 (en) * | 2020-01-21 | 2021-07-22 | LO3 Energy Inc. | Secure zero knowledge data transformation and validation |
US11742875B1 (en) * | 2022-04-20 | 2023-08-29 | Mediatek Inc. | Compression of floating-point numbers for neural networks |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4290051A (en) | 1979-07-30 | 1981-09-15 | Stakhov Alexei P | Device for reducing irrational-base codes to minimal form |
GB8815978D0 (en) | 1988-07-05 | 1988-08-10 | British Telecomm | Method & apparatus for encoding decoding & transmitting data in compressed form |
US5101446A (en) | 1990-05-31 | 1992-03-31 | Aware, Inc. | Method and apparatus for coding an image |
US5087913A (en) | 1990-08-27 | 1992-02-11 | Unisys Corporation | Short-record data compression and decompression system |
US5592667A (en) | 1991-05-29 | 1997-01-07 | Triada, Ltd. | Method of storing compressed data for accelerated interrogation |
EP0533253B1 (fr) | 1991-09-20 | 1996-07-10 | Philips Composants Et Semiconducteurs | Procédé de transcodage de données d'un code thermométrique, décodeur et convertisseur appliquant ce procédé |
US5257097A (en) * | 1991-09-27 | 1993-10-26 | Eastman Kodak Company | Method and apparatus for selective interception of a graphics rendering operation for effecting image data modification |
KR960006761B1 (ko) | 1991-12-07 | 1996-05-23 | 삼성전자주식회사 | 변환방식의 적응적 선택에 의한 변환부호화 및 복호화방법 |
US5379036A (en) * | 1992-04-01 | 1995-01-03 | Storer; James A. | Method and apparatus for data compression |
US5822458A (en) * | 1995-02-06 | 1998-10-13 | The Regents Of The University Of California | Precomputing and encoding compressed image enhancement instructions |
US5708729A (en) | 1995-04-12 | 1998-01-13 | Eastman Kodak Company | Method and system for the reduction of memory capacity required for digital representation of an image |
US6167083A (en) * | 1997-04-04 | 2000-12-26 | Avid Technology, Inc. | Computer system and process for capture editing and playback of motion video compressed using interframe and intraframe techniques |
US5852742A (en) * | 1997-06-17 | 1998-12-22 | Hewlett-Packard Company | Configurable data processing pipeline |
US6167392A (en) | 1997-10-09 | 2000-12-26 | Telcordia Technologies, Inc. | Method and apparatus for private information retrieval from a single electronic storage device |
US6373986B1 (en) | 1998-04-08 | 2002-04-16 | Ncr Corporation | Compression of data transmission by use of prime exponents |
-
2000
- 2000-12-29 CA CA002396369A patent/CA2396369A1/en not_active Abandoned
- 2000-12-29 WO PCT/US2000/035672 patent/WO2001050325A2/en not_active Application Discontinuation
- 2000-12-29 IL IL15055600A patent/IL150556A0/xx unknown
- 2000-12-29 US US09/753,059 patent/US6633244B2/en not_active Expired - Fee Related
- 2000-12-29 EP EP00989621A patent/EP1248991A2/en not_active Withdrawn
- 2000-12-29 CN CN00819272.3A patent/CN1437738A/zh active Pending
- 2000-12-29 AU AU26107/01A patent/AU2610701A/en not_active Abandoned
- 2000-12-29 JP JP2001550616A patent/JP2003519945A/ja active Pending
-
2001
- 2001-01-04 TW TW090100110A patent/TW502178B/zh not_active IP Right Cessation
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007508753A (ja) * | 2003-10-17 | 2007-04-05 | パクバイト ソフトウエア プロプライアタリー リミティド | データ圧縮システム及び方法 |
US8347298B2 (en) | 2006-10-02 | 2013-01-01 | Japan Aerospace Exploration Agency | Autonomous distributed control involving constraint on resources |
JP2018502493A (ja) * | 2014-11-26 | 2018-01-25 | ケリコンプ エービー | 改善されたファイルの圧縮及び暗号化 |
US10075183B2 (en) | 2014-11-26 | 2018-09-11 | Kelicomp Ab | Compression and encryption of a file |
US11270731B2 (en) | 2018-04-10 | 2022-03-08 | Carl Zeiss Microscopy Gmbh | Methods and apparatuses for compressing and decompressing drive curves |
Also Published As
Publication number | Publication date |
---|---|
TW502178B (en) | 2002-09-11 |
IL150556A0 (en) | 2003-02-12 |
WO2001050325A2 (en) | 2001-07-12 |
US6633244B2 (en) | 2003-10-14 |
CA2396369A1 (en) | 2001-07-12 |
US20010038347A1 (en) | 2001-11-08 |
EP1248991A2 (en) | 2002-10-16 |
CN1437738A (zh) | 2003-08-20 |
AU2610701A (en) | 2001-07-16 |
WO2001050325A3 (en) | 2002-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2003519945A (ja) | データの送信または記憶のための効率的で可逆的な変換 | |
Goyal et al. | Deepzip: Lossless data compression using recurrent neural networks | |
JP5615354B2 (ja) | 繰り返しパターンを用いた3dメッシュの圧縮方法 | |
US6674908B1 (en) | Method of compression of binary data with a random number generator | |
US6061398A (en) | Method of and apparatus for compressing and restoring data | |
EP0650264A1 (en) | Byte aligned data compression | |
JP2002319865A (ja) | 接頭語予測を用いた符号化方法 | |
JP4077409B2 (ja) | 高速最長一致探索方法及び装置 | |
CN110021369B (zh) | 基因测序数据压缩解压方法、系统及计算机可读介质 | |
CN112506879A (zh) | 数据处理方法及相关设备 | |
WO2019076177A1 (zh) | 基因测序数据压缩预处理、压缩、解压方法、系统及计算机可读介质 | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
JP2003524983A (ja) | 複数コーダを用いる最適化ロスレス圧縮のための方法及び装置 | |
CN116015311A (zh) | 基于滑动字典实现的Lz4文本压缩方法 | |
JP5499894B2 (ja) | 画像処理装置および画像処理方法 | |
US20230053844A1 (en) | Improved Quality Value Compression Framework in Aligned Sequencing Data Based on Novel Contexts | |
Baron et al. | Antisequential suffix sorting for BWT-based data compression | |
JP2019047450A (ja) | 圧縮処理装置、伸長処理装置、圧縮処理用プログラム、伸長処理用プログラム | |
CN110233627B (zh) | 一种基于流水式的硬件压缩的系统及方法 | |
JP3241787B2 (ja) | データ圧縮方式 | |
CN112612762A (zh) | 数据处理方法及相关设备 | |
WO2021139796A1 (zh) | 莫顿码的构建方法、编码器、解码器、及存储介质 | |
Sharma et al. | Evaluation of lossless algorithms for data compression | |
JP2956636B2 (ja) | 波形処埋装置 | |
CN109698704B (zh) | 比对型基因测序数据解压方法、系统及计算机可读介质 |