(57)【要約】  バイナリデータファイルのコンテンツ非依存の参照のための、コンピュータにより実現される方法であり、当該方法は、バイナリデータファイルの長さを決定するステップであり、長さはバイナリデータファイルのビット数を含む、ステップと、決定された長さについて、決定された長さのデータの全ての順列を生成するステップと、生成された順列内においてインデックスの位置を特定するステップであり、インデックスは生成された順列内におけるバイナリデータファイルの開始位置である、ステップと、長さ及びインデックスを使用してバイナリデータファイルを示すステップと、を含む。
2021501427.tif 000002
【特許請求の範囲】
【請求項１】
バイナリデータファイルのコンテンツ非依存の参照のための、コンピュータにより実現される方法であって、
前記バイナリデータファイルの長さを決定するステップであり、前記長さは前記バイナリデータファイルのビット数を含む、ステップと、
前記決定された長さについて、前記決定された長さのデータの全ての順列を生成するステップと、
前記生成された順列内においてインデックスの位置を特定するステップであり、前記インデックスは前記生成された順列内における前記バイナリデータファイルの開始位置である、ステップと、
前記長さ及び前記インデックスを使用して前記バイナリデータファイルを示すステップと、
を含む方法。
【請求項２】
前記長さ及び前記インデックスを使用して前記バイナリデータファイルを示すステップは、
記憶デバイスに前記バイナリデータファイルの代わりに前記長さ及び前記インデックスを持続するステップを含む、請求項１に記載の方法。
【請求項３】
前記長さ及び前記インデックスを使用して前記バイナリデータファイルを示すステップは、
前記データファイルの代わりに前記長さ及び前記インデックスを送信するステップを含む、請求項１に記載の方法。
【請求項４】
送信するステップは、前記長さ及びインデックスをネットワーク上で送信する、請求項３に記載の方法。
【請求項５】
送信するステップは、前記長さ及びインデックスをバス上で送信する、請求項３に記載の方法。
【請求項６】
データ長さ及びインデックスに基づいてデータを取り出す方法であって、
前記長さのデータの全ての順列を生成するステップと、
前記インデックスに位置するデータの順列を返すステップと、
を含む方法。
【請求項７】
バイトのシーケンスを含むデータファイルを圧縮する方法であって、
前記データファイル内のバイト数を算出するステップと、
前記算出されたバイト数のサイズのデータの全ての可能な順列を生成するステップと、
前記生成された順列を検索して、前記データファイルにマッチする順列の位置を特定するステップと、
前記位置を特定された順列のインデックスを決定するステップと、
前記バイト数及びインデックスを使用して前記データファイルを示すステップと、
を含む方法。
【請求項８】
前記バイト数及びインデックスを使用して前記データファイルを示すステップは、前記バイト数及びインデックスを記憶デバイスに持続するステップを含む、請求項７に記載の方法。
【請求項９】
前記記憶デバイスはディスクである、請求項８に記載の方法。
【請求項１０】
前記バイト数及びインデックスを使用して前記データファイルを示すステップは、前記データファイルの代わりに前記バイト数及びインデックスを送信するステップを含む、請求項９に記載の方法。
【請求項１１】
送信するステップは、前記バイト及びインデックスをネットワークを通じて送信する、請求項１０に記載の方法。
【請求項１２】
送信するステップは、前記バイト及びインデックスをバスを介して送信する、請求項１０に記載の方法。
【請求項１３】
データファイルを圧縮する方法であって、
前記データファイルのサイズを算出するステップと、
前記サイズのデータファイルのデータの全ての可能な順列を生成するステップと、
前記生成された順列を検索して、前記データファイルにマッチする順列の位置を特定するステップと、
前記位置を特定された順列のインデックスを決定するステップと、
前記サイズ及びインデックスを使用して前記データファイルを示すステップと、
を含む方法。
【請求項１４】
前記データファイルはバイナリデータである、請求項１３に記載の方法。
【請求項１５】
前記データファイルはｎ値データのデータである、請求項１３に記載の方法。
【請求項１６】
前記インデックスは整数である、請求項１３に記載の方法。
【請求項１７】
前記サイズ及びインデックスを使用して前記データファイルを示すステップは、前記サイズ及びインデックスを送信するステップを含む、請求項１３に記載の方法。
【請求項１８】
送信するステップは、ネットワーク上で送信するステップを含む、請求項１７に記載の方法。
【請求項１９】
送信するステップは、バス上で送信するステップを含む、請求項１７に記載の方法。
【請求項２０】
前記サイズ及びインデックスを使用して前記データファイルを示すステップは、前記サイズ及びインデックスを記憶するステップを含む、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンテンツ非依存のファイル参照の方法に関する。この方法は、コンテンツ非依存のデータ圧縮の方法にさらに関し得る。
【背景技術】
【０００２】
ファイル参照技術は、ファイル参照システム内のデータを効率的にインデックス化するために、記憶されているデータの種類に関する知識を一般に必要とする。同様に、問題となっているデータに関する知識もまた、送信、記憶などのためのデータサイズを低減させるために、改善された圧縮手法の作成に一般に使用される。
【０００３】
記憶及び／又は送信されなければならないデータの量を低減させるために、ファイル参照及びデータ圧縮技術を改善する必要が産業界に存在する。
【発明の概要】
【０００４】
一実施形態によれば、本開示は、強化されたコンテンツ非依存のファイル参照システムで計算技術を改善する方法を提供する。
【０００５】
開示される方法は、いくつかの重要な利点を有する。例えば、開示される方法は、任意のコンテンツタイプのファイル参照を可能にする。
【０００６】
開示される方法は、データが持続されるのと対照的にアクセス時に生成され得るため、持続又は送信されなければならない情報又はデータの量の有意な低減をさらに可能にする。
【０００７】
本開示の種々の実施形態はこれらの利点の何れも有さないことがあり、あるいはいくつか又は全てを有し得る。本開示の他の技術的利点も当業者に容易に明らかになり得る。
【図面の簡単な説明】
【０００８】
本開示及びその利点のより完全な理解のために、次に、添付の図面と併せて以下の説明を参照する。
【図１】本開示の一実施形態のステップを概説するフローチャートである。
【図２】本開示の別の実施形態のステップを概説する別のフローチャートである。
【０００９】
類似の参照番号は、図面のいくつかの図を通して類似の部分又はステップを参照する。
【発明を実施するための形態】
【００１０】
本開示は、データのコンテンツ非依存の（content-agnostic）インデックス化のための方法に関する。この方法は、例えば、ファイル参照システム又は圧縮システムとしてを含む、種々のコンピュータ特有のニーズに使用されてもよい。
【００１１】
以下の開示は、バイナリデータの圧縮に関連する本発明を例示として記載しているが、本教示は、任意のタイプのデータ、さらには「ｎ値（n-ary）」データと呼ばれるものでも同様に機能する。例えば、この方法及びシステムは、キュービット（qubits）及びビットでも機能する。
【００１２】
本発明の一実施形態は、図１に示されるフローチャートに記載される方法を含む。持続され（persisted）又は送信されるべきバイナリデータ（ｎｉ）（例えば、データファイル）は、ビットにおけるその長さ（ｌ（ｎｉ））を決定するために解析される。この情報を使用し、ステップ１０６において、この方法は、識別された長さのデータの全ての順列（permutations）を算出する。例えば、入力データが以下の場合、
０１
【００１３】
入力データは２ビット長である。ステップ１０６において、２ビットの全ての順列、すなわち、
｛００｝  ｛０１｝  ｛１０｝  ｛１１｝
が生成される。
【００１４】
ステップ１０８において、この方法は、生成された順列内における入力バイナリデータファイルのインデックス（ｎｆ）を決定する。上記の例を用い、返されるインデックス（ｎｆ）は「１」である。最後、入力バイナリデータ（すなわち「０１」）を記憶又は送信するのでなく、システムは、長さ（２）及びインデックス（１）を代わりに記憶する。
【００１５】
元の入力データをデコードする必要が生じたとき（例えば、ディスクから元のバイナリデータを取り出す要求、又はネットワークにわたる送信データの受信）、この方法は、長さ（ｌ（ｎｉ））及びインデックス（ｎｆ）のみを入力として必要とする。上記の例を用い、提供される入力は、長さ（２）及びインデックス（１）である。図２に示すように、システムは、入力された長さの全ての順列を算出する。上記のように、それは、以下の順列を生成する。
｛００｝  ｛０１｝  ｛１０｝  ｛１１｝
【００１６】
次いで、システムは提供されたインデックス（上記の例では１）に移動し、順列を返す。再度、上記の例を用い、これは元のバイナリデータを「０１」を返す。
【００１７】
上記の方法は、例示の目的で、バイナリシステム（すなわち、入力データがバイナリデータである）に関して記載されている。この方法及びシステムは、ｎ値システムに対して同様に機能する。上述されたバイナリシステムは本質的にユークリッド平面で機能するが、ｎ値データにより、ヒルベルト（Hilbert）空間が同じ利点を概念的に提供する。この方法及び処理は、以下のとおりｎ値データについて一般化できる。
ｄ＾ｎ＝ｐ（ｉ）
（ｄ＾ｎ）ｎ＝ｐ（ｆ）
ｄ＝システムの次数（order）
ｎ＝システムの次数に対して適切なｎ値単位（n-ary  units）それぞれにおける長さ
ｐ（ｉ）＝初期インデックス
ｐ（ｆ）＝最終インデックス
【表１】
2021501427.tif 000003
【００１８】
同じ入力ファイルを有する２つの代替的な次数の（ordered）システムを所与として、より高い次数を有するシステムは、より低い次数のシステムでの代替に対して、より高いｎ値密度を有することに留意されたい。
【００１９】
この方法の一例が、以下のＲｕｂｙコードスニペットで開示される。以下のスニペットは、図１に開示される方法を説明する。
【数１】
2021501427.tif 000004
【００２０】
以下のスニペットは、１６の入力長（ｌ（ｎｉ））及び７２，６２９のインデックス（ｎｆ）を使用して、図２に開示される方法を説明する。
【数２】
2021501427.tif 000005
【００２１】
方法及びシステムは、好ましくは、コンピューティングシステムにおいて実現されてもよく、該コンピューティングシステムは、パーソナルコンピュータ、ワークステーション、ネットワークコンピュータ、ハンドヘルドコンピュータ、又は他の任意のコンピューティングシステムを含むことができる。さらに、システムは、任意の適切なコンピュータ言語でソフトウェアプログラムとして書かれてもよい。
【００２２】
システムは、１つ以上の処理デバイスを含み、これは、任意のコンピュータ処理ユニットであり得、単一の中央処理ユニットでもよく、あるいは順次的又は並列のいずれかで動作するように構成された複数の処理ユニットでもよい。処理デバイスは、本明細書に開示されるステップを実現するソフトウェア処理を実行するように構成できる。システムは、処理デバイスが本明細書に開示されるステップを実現するために必要なステップを記憶することができるメモリをさらに含んでもよい。このメモリは、処理デバイス内に存在するメモリの形態でもよく、あるいはバス又はネットワークなどの通信経路を介して処理ユニットに結合されるスタンドアロンメモリの形態でもよい。
【００２３】
本開示は特定の実施形態及び一般に関連する方法に関して記載されているが、これらの実施形態及び方法の変更及び組み合わせが当業者に明らかであろう。したがって、例示的な実施形態の上述の説明は本開示を制限しない。本開示の主旨及び範囲から逸脱することなく、他の変更、置換、及び変更も可能である。
【図１】
2021501427.tif 000006
【図２】
2021501427.tif 000007
【国際調査報告】
2021501427.tif 000008