(57)【要約】      （修正有）【課題】データを圧縮することによって様々なネットワークノード間の通信を強化するためのより効率的な方法として、メモリとコントローラとを備えるコンピューティングデバイスを提供する【解決手段】コントローラは、基数ベクトルの最初の基数を現在の基数となるように設定し、現在の基数の指数を見出し、指数ベクトルに指数を含め、数を基数の指数乗だけ低減することによって残余数を決定し、現在の基数が基数ベクトルの最後の基数でないならば、現在の基数は基数ベクトルの次の基数となるように設定され、数は残余数となるように設定され、コントローラは新しい現在の基数の指数を見出し、現在の基数が基数ベクトルの最後の基数であるならば、定数が残余数となるように設定され、指数ベクトル及び定数を備える表現が生成される、ように更に構成される。【選択図】図６
2018152887.tif 000002
【特許請求の範囲】
【請求項１】
メモリ（２４０）とコントローラ（２１０）とを備えるコンピューティングデバイス（１００）であって、前記コントローラ（２１０）は、
ファイル（４１０）の少なくとも部分を数（Ｘ）に変換することと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換することとによって前記ファイル（４１０）を圧縮するように構成され、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表され、前記コントローラは、
前記基数ベクトルの最初の基数を現在の基数となるように設定し、
前記現在の基数の指数を見出し、
前記指数ベクトル（ｅｘｐ）に前記指数を含め、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するように構成され、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換される、
コンピューティングデバイス（１００）。
【請求項２】
前記指数は最高の指数である、請求項１に記載のコンピューティングデバイス（１００）。
【請求項３】
前記コントローラ（２１０）は、テーブルルックアップを介して前記指数を見出すように更に構成される、請求項１〜２のいずれか一項に記載のコンピューティングデバイス（１００）。
【請求項４】
前記コントローラ（２１０）は、場合により繰り返し除算によって前記指数を見出すように更に構成される、請求項１〜３のいずれか一項に記載のコンピューティングデバイス（１００）。
【請求項５】
前記コントローラ（２１０）は、最上位位置（ｍｓｐ）に基づいて前記指数を見出すように更に構成され、前記最上位位置（ｍｓｐ）は、前記数（Ｘ）の表現において非ゼロである最初の要素の位置である、請求項１〜４のいずれか一項に記載のコンピューティングデバイス（１００）。
【請求項６】
前記コントローラ（２１０）は、テーブルルックアップを介して前記最上位位置（ｍｓｐ）に基づいて前記指数を見出すように更に構成される、請求項５に記載のコンピューティングデバイス（１００）。
【請求項７】
前記コントローラ（２１０）は、前記表現の前記基数の前記最上位位置（ｍｓｐ）乗の現在の基数根を計算することによって、前記最上位位置（ｍｓｐ）に基づいて前記指数を見出すように更に構成される、請求項５に記載のコンピューティングデバイス（１００）。
【請求項８】
前記コントローラ（２１０）は、前記現在の基数の前記表現の前記基数根を計算し、これに前記最上位位置（ｍｓｐ）を掛けることによって前記最上位位置（ｍｓｐ）に基づいて前記指数を見出すように更に構成される、請求項５に記載のコンピューティングデバイス（１００）。
【請求項９】
前記コントローラ（２１０）は、前記数（Ｘ）を前記現在の基数の前記指数乗で除算することによって前記現在の基数に対する倍率を決定し、その後、前記倍率が掛けられた前記基数の前記指数乗だけ前記数（Ｘ）を低減させることによって残余数（Ｘｒｅｓ）を決定するように更に構成される、請求項１〜８のいずれか一項に記載のコンピューティングデバイス（１００）。
【請求項１０】
前記コントローラ（２１０）は、前記数（Ｘ）から前記基数の前記指数乗を減算することによって前記数（Ｘ）を低減させるように更に構成される、請求項１〜９のいずれか一項に記載のコンピューティングデバイス（１００）。
【請求項１１】
前記指数ベクトル（ｅｘｐ）の少なくとも２つの指数が、前記基数ベクトル（ｂａｓｅ）の同じ基数に対応する、請求項１〜１０のいずれか一項に記載のコンピューティングデバイス（１００）。
【請求項１２】
前記基数ベクトル（ｂａｓｅ）が重複の基数を含む、請求項１〜１１のいずれか一項に記載のコンピューティングデバイス（１００）。
【請求項１３】
前記コントローラ（２１０）は、前記指数ベクトル（ｅｘｐ）を再順序付けすることによって前記ファイル（４１０）を暗号化するように更に構成される、請求項１〜１２のいずれか一項に記載のコンピューティングデバイス。
【請求項１４】
前記コントローラ（２１０）は、ファイル表現を数（Ｘ）として解釈することによって、前記ファイル（４１０）を前記数（Ｘ）に変換するように更に構成される、請求項１〜１３のいずれか一項に記載のコンピューティングデバイス。
【請求項１５】
ファイル（４１０）の少なくとも部分を数（Ｘ）に変換するステップと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換するステップであって、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表される、ステップと、によって前記ファイル（４１０）を圧縮する方法であって、前記方法は、
前記基数ベクトルの最初の基数を現在の基数となるように設定するステップと、
前記現在の基数の指数を見出すステップと、
前記指数ベクトル（ｅｘｐ）に前記指数を含めるステップと、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するステップと、を含み、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換される、
方法。
【請求項１６】
請求項１〜１５のいずれか一項に記載の圧縮されたファイル（４１０）を解凍するためのコンピューティングデバイス（１００）であって、前記ファイル（４１０）は指数ベクトル（ｅｘｐ）によって表され、前記コンピューティングデバイスは、基数ベクトル（ｂａｓｅ）の各基数を指数ベクトル（ｅｘｐ）の対応する指数乗にし、その結果を数（Ｘ）に結合することによって前記数（Ｘ）を決定し、前記数（Ｘ）をファイル（４１０）に変換するように構成されるコントローラを備える、コンピューティングデバイス（１００）。
【請求項１７】
請求項１〜１５のいずれか一項に記載の圧縮されたファイル（４１０）を解凍する方法であって、基数ベクトル（ｂａｓｅ）の各基数を指数ベクトル（ｅｘｐ）の対応する指数乗にし、その結果を数（Ｘ）に結合することによって前記数（Ｘ）を決定するステップと、前記数（Ｘ）を前記ファイル（４１０）に変換するステップとによって、前記ファイル（４１０）は指数ベクトル（ｅｘｐ）によって表される、方法。
【請求項１８】
プロセッサ上で実行されると、請求項１５又は１７に記載の方法を実行する命令（３１）でエンコードされているコンピュータ可読記憶媒体（３０）。
【請求項１９】
メモリ（２４０）とコントローラ（２１０）とを備えるコンピューティングデバイス（１００）であって、前記コントローラ（２１０）はファイル（４１０）を暗号化するように構成され、前記ファイルは、
前記ファイル（４１０）の少なくとも部分を数（Ｘ）に変換することと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換することとによって圧縮され、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表され、前記コントローラは、
前記基数ベクトルの最初の基数を現在の基数となるように設定し、
前記現在の基数の指数を見出し、
前記指数ベクトル（ｅｘｐ）に前記指数を含め、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するように構成され、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換され、
前記コントローラは、前記指数ベクトル（ｅｘｐ）を再順序付け、それにより、前記ファイル（４１０）の前記表現を暗号化するように更に構成される、
コンピューティングデバイス（１００）。
【請求項２０】
前記コントローラは、前記基数ベクトル（ｂａｓｅ）を再順序付けするように更に構成される、請求項１９に記載のコンピューティングデバイス（１００）。
【請求項２１】
ファイル（４１０）を暗号化する方法であって、前記ファイルは、
前記ファイル（４１０）の少なくとも部分を数（Ｘ）に変換するステップと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換するステップと、によって圧縮され、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表され、前記コントローラは、
前記基数ベクトルの最初の基数を現在の基数となるように設定し、
前記現在の基数の指数を見出し、
前記指数ベクトル（ｅｘｐ）に前記指数を含め、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するように構成され、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換され、
そして、前記コントローラは、
前記指数ベクトル（ｅｘｐ）を再順序付けし、それにより、前記ファイル（４１０）の前記表現を暗号化する、ように構成される、
方法。
【請求項２２】
プロセッサ上で実行されると、請求項２１に記載の方法を実行する命令（３１）でエンコードされているコンピュータ可読記憶媒体（３０）。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、改善されたファイルの圧縮及び暗号化のためのシステム、方法、装置、及びコンピュータ可読記憶媒体に関する。
【背景技術】
【０００２】
データ通信及び遠距離通信の分野では、より大量のデータを送信する要求がますます増加している。通信チャネルがデータを送信又は伝送する能力を増大させるにつれて、映画、音楽、ゲームなどをストリーミングする需要が着実に増加する。近年開発が急速であり、通信チャネルの容量が何倍も倍増したとしても、通信される大量のデータに起因するボトルネックが依然として存在する。ユーザは、例えば、スマートフォンなどで映画を見る場合に映画が遅れていることを経験する可能性がある。
【０００３】
様々なネットワークノード間の通信を向上させる、上記の問題に対処する１つの方法は、データを、送信する前に圧縮することである。データを圧縮する様々な方法が存在するが、基本的な原理は、そのデータの元の表現より少ないビットを使用して、データ列、すなわち、任意のタイプの情報、をエンコードすることである。そのような圧縮は可逆的に、すなわちデータを解凍（decompress）するときに少しも情報を失うことなく、行われることができる。可逆圧縮は、少しも情報を失うことなく、より簡潔な方法でデータを提示するために統計的冗長性を識別し、除去することによってビットを低減する。殆どのデータが統計的な冗長性を有するので、可逆圧縮（lossless compression）は可能である。例えば、ビデオでは、幾つかのビデオフレームにわたって色が変わらない画像内の領域（ピクセル）が存在する可能性がある。相互に続く幾つかのビデオフレームに対して「緑色ピクセル、緑色ピクセル、…」を符号化する代わりに、データは「次の４３のビデオフレームで緑色ピクセル」としてエンコードされることができる。これはランレングスエンコーディングの一例であるが、Ｌｅｍｐｅｌ−Ｚｉｖ（ＬＺ）圧縮方式など、冗長性を排除してファイルサイズを低減するスキームが数多く存在する。
【０００４】
別の方法は、「不要な」情報を特定して除去することによってビットを低減する非可逆圧縮（lossy compression）を使用することある。このようなスキームについての出発点は、情報の多少の損失は容認できることである。データソースからの不要な詳細の除外は、記憶空間を節約することができる。非可逆データ圧縮スキームは、人々が問題のデータをどのように知覚するかに関する研究によって知らされる。例えば、人間の目は、色の変化に対してよりも輝度のわずかな変化に対して、より敏感である。非可逆圧縮の一例は周知のＪＥＰＧ画像圧縮であり、これは情報の不要なビットを切り捨てることによってある程度機能する。失われた情報とサイズの低減との間には常にトレードオフがある。
【０００５】
データファイルのサイズを低減するプロセスは、ソース符号化という正式な名称があっても、一般的にデータ圧縮と呼ばれる。ソース符号化は、符号化がデータのソースにおいて、格納又は送信される前に行われることを意味する。圧縮の利点は、データを格納、送信、及び処理するために使用されるリソースを低減することである。しかしながら、圧縮データは、使用するために解凍されなければならず、それは、解凍を実行する場合に多少の追加の計算又は他のコストを必要とする。データを圧縮することに価値があるようにするには、追加の計算の複雑さに値するように、十分に圧縮されるべきである。
【０００６】
データを圧縮する試みが数多く行われてきた。データを可逆的に低減するためのより効率的な方法に対する要求は、一般の人々が彼らのデバイスにストリーミングされるデータのますます高い品質を要求するにつれて、ますます増大している。スマートフォンで映画を見るだけではもう十分ではなく、人は、高解像度（ＨＤ）品質で映画を見ることを望んでいる。従って、データを圧縮することによって様々なネットワークノード間の通信を強化するためのより効率的な方法に対するニーズがある。従って、ファイルを圧縮するための改善された、場合により代替の、方法に対するニーズがある。
【発明の概要】
【課題を解決するための手段】
【０００７】
本出願の教示の目的は、メモリとコントローラとを備えるコンピューティングデバイスを提供することによって上記に列挙された問題を克服することであり、前記コントローラは、ファイルの少なくとも部分を数に変換し、その数を少なくとも１つの指数（exponent）を備える指数ベクトル（exponent vector）に変換することによってファイルを圧縮し、各指数は基数ベクトル（base vector）の基数（base）に対応する、ように構成される。
【０００８】
１つの実施形態では、コントローラは、基数ベクトルの最初の基数を現在の基数となるように設定し、現在の基数の指数を見出し、指数ベクトルに指数を含め、数を基数の指数乗だけ低減することによって残余数を決定し、現在の基数が基数ベクトルの最後の基数でないならば、現在の基数は基数ベクトルの次の基数となるように設定され、数は残余数となるように設定され、コントローラは新しい現在の基数の指数を見出し、現在の基数が基数ベクトルの最後の基数であるならば、定数が残余数となるように設定され、指数ベクトル及び定数を備える表現が生成される、ように更に構成される。本出願の教示の目的はまた、ファイルの少なくとも部分を数に変換し、その数を、少なくとも１つの指数を備える指数ベクトルに変換し、各指数は基数ベクトルの基数に対応し、それにより、ファイルは指数ベクトルによって表される、ことによって前記ファイルを圧縮する方法を提供して、上記に列挙された問題を克服することである。
【０００９】
本出願の教示の目的は、指数ベクトルによって表されるファイルを解凍するコンピューティングデバイスを提供することによって上記に列挙された問題を克服することであり、ここで、前記コンピューティングデバイスは、基数ベクトルの各基数の指数ベクトルの対応する指数乗にし、結果を数に結合することによって数を決定し、前記数をファイルに変換するように構成されるコントローラを備える。
【００１０】
本出願の教示の目的はまた、基数ベクトルの各基数の指数ベクトルの対応する指数乗にし、結果を数に結合することによって数を決定し、前記数をファイルに変換することによって、指数ベクトルによって表されるファイルを解凍する方法を提供することにより、上記に列挙された問題を克服することである。
【００１１】
本出願の教示の目的はまた、プロセッサ上で実行されると、上記による方法のうちのいずれかを実行する命令でエンコードされているコンピュータ可読記憶媒体を提供することによって上記に列挙された問題を克服することである。
【００１２】
本出願の教示の目的はまた、メモリとコントローラとを備えるコンピューティングデバイスを提供することによって上記に列挙された問題を克服することであり、ここで、前記コントローラはファイルを暗号化するように構成されており、ファイルは、前記ファイルの少なくとも部分を数に変換し、数を少なくとも１つの指数を備える指数ベクトルに変換することによって圧縮され、各指数は基数ベクトルの基数に対応し、それにより、ファイルは指数ベクトルによって表され、前記コントローラは指数ベクトルを再順序付け（reorder）し、それによりファイルの表現を暗号化するように構成される。
【００１３】
本出願の教示の目的はまた、ファイルを暗号化する方法を提供することによって上記に列挙された問題を克服することであり、ここで、ファイルは、前記ファイルの少なくとも部分を数に変換し、数を少なくとも１つの指数を備える指数ベクトルに変換することによって圧縮され、各指数は基数ベクトルの基数に対応し、それにより、ファイルは指数ベクトルによって表され、前記コントローラは指数ベクトルを再順序付けし、それによりファイルの表現を暗号化するように構成される。
【００１４】
本出願の教示の目的はまた、プロセッサ上で実行されると、上記による方法を実行する命令でエンコードされているコンピュータ可読記憶媒体を提供することによって上記に列挙された問題を克服することである。
【００１５】
好ましくは最高の基数から始めて、逆さまから、すなわち各基数に対して最高の（又は近い）指数を順々に見つけようとして、指数を検索することによって、例えば、適切な基数を繰り返し見つけようとするトップダウン式検索と比較して、ファイルのより迅速な低減が達成されることが留意されるべきである。
【００１６】
また、本発明により基数の順序が分かっているので、指数／基数対の数が開始から不明であるシステムとは異なり、基数は指数と一緒に提供される必要がないという点で、より良い暗号化をも可能にする。
【００１７】
開示された実施形態の他の特徴及び利点は、以下の詳細な開示から、添付の従属請求項から、及び図面から現れるであろう。
【００１８】
一般に、特許請求の範囲で使用される全ての用語は、本明細書で明示的に定義されない限り、技術分野における通常の意味に従って解釈されるべきである。「ａ／ａｎ／ｔｈｅ［要素、デバイス、構成要素、手段、ステップなど］」への全ての言及は、特に明示的に記述されない限り、要素、デバイス、構成要素、手段、ステップなどの少なくとも１つのインスタンスを参照するものとして、率直に解釈されるべきである。本明細書で開示される如何なる方法のステップも、明示的に記述されない限り、開示されている正確な順序で実行される必要はない。
【００１９】
本発明は添付の図面を参照して更に詳細に説明されるであろう。
【図面の簡単な説明】
【００２０】
【図１】本明細書の教示による端末の概略図である。
【図２】本明細書の教示による端末の構成要素の概略図である。
【図３】本出願の教示の１つの実施形態によるコンピュータ可読媒体の概略図を示す。
【図４】本明細書の教示の実施形態による圧縮／解凍システム４００の概要を示す。
【図５Ａ】本明細書の教示の実施形態による指数ベクトルの表現５００の概略図を示す。
【図５Ｂ】本明細書の教示の実施形態による対応する基数ベクトルを示す。
【図６】本明細書の教示の実施形態による、基数ベクトルに基づいて数を指数ベクトルに低減する一般的な方法のフローチャートを示す。
【図７】本明細書の教示の実施形態による、最上位位置がマークされている数の表現を示す。
【図８】本明細書の教示の実施形態による、最上位位置を見出すことによって最高の指数をどのように決定するかの一般的な方法のフローチャートを示す。
【図９】本明細書の教示の実施形態による、ファイルを暗号化及び復号する方法のフローチャートを示す。
【図１０】本明細書の教示の実施形態による、ファイルを暗号化及び復号するための方法のフローチャートを示す。
【図１１】本明細書の教示の実施形態による、ファイルの繰り返し圧縮の概略図を示す。
【図１２】本明細書の教示の実施形態による、ファイルを暗号化及び復号する方法のフローチャートを示す。
【発明を実施するための形態】
【００２１】
開示された実施形態は、本発明の或る実施形態が示されている添付の図面を参照して、以下により十分に記載されるであろう。しかしながら、本発明は、多くの様々な形態で具現化されることができ、本明細書に記載されている実施形態に限定されるものと解釈すべきではなく、むしろ、これらの実施形態は、本開示が十分かつ完全となり、本発明の範囲を当業者に十分に伝えることができるように、例として提供される。同様の番号は全体を通して同様の要素を指す。
【００２２】
図１は、本明細書の実施形態による計算デバイス１００を示す。１つの実施形態では、計算デバイス１００は無線又は有線のいずれかのネットワーク通信用に構成される。１つの実施形態では、計算デバイス１００は無線及び有線の両方のネットワーク通信用に構成される。このような計算デバイス１００の例は、少し挙げると、パーソナルコンピュータ、デスクトップ又はラップトップ、インターネットタブレット、携帯電話、スマートフォン、パーソナルデジタルアシスタント、サーバ、電子キー、マシン・ツー・マシンデバイス（Ｍ２Ｍ）、及びワークステーションである。
【００２３】
計算デバイス１００は、以下では、パーソナルコンピュータ１００として例示され、説明されるであろう。パーソナルコンピュータ又は端末１００はディスプレイ１１０及びハウジング１２０を備える。ハウジングは、コントローラ又はＣＰＵ（図示せず）並びに記憶ユニット及び内部メモリなどの１つ又は複数のコンピュータ可読記憶媒体（図示せず）を備える。記憶ユニットの例はディスクドライブ又はハードドライブである。端末１００は少なくとも１つのデータポートを更に備える。データポートは有線及び／又は無線とすることができる。データポートの例は、ＵＳＢ（「ユニバーサルシリアルバス（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）」）ポート、イーサネットポート、又は（ＩＥＥＥ規格８０２．１１に準拠する）ＷｉＦｉポートである。データポートは、端末１００を他の端末又はサーバに接続することを可能にするように構成される。
【００２４】
端末１００はキーボード１３０などの少なくとも１つの入力ユニットを更に備える。入力ユニットの他の例は、少し挙げると、コンピュータマウス、タッチパッド、タッチスクリーン、又はジョイスティックである。
【００２５】
図２は、コンピューティングデバイスの一般的な構造の概略図を示す。コンピューティングデバイスは、図１のような計算デバイス又はサーバとすることができる。１つの実施形態では、コンピューティングデバイスは、以下に更に詳細に説明されるであろうコンピューティング装置である。以下の説明では、コンピューティングデバイスは、図１による端末であるとして開示されるであろう。端末１００は、端末１００の全体的な動作を担当するコントローラ２１０を備え、好ましくは、市販の任意のＣＰＵ（「中央処理ユニット（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）」）、ＤＳＰ（「デジタル信号プロセッサ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）」）、又は任意の他の電子プログラマブルロジックデバイスによって実現される。コントローラ２１０は、例えば、汎用又は専用プロセッサ内の、そのようなプロセッサによって実行されるようにコンピュータ可読記憶媒体（ディスク、メモリなど）２４０上に格納されることができる実行可能なコンピュータプログラム命令を使用することによって、ハードウェア機能を可能にする命令を使用して実装されることができる。コンピューティングデバイス１００はコンピュータファイルを記憶するメモリ２４０を備える。コンピュータファイルは当該技術分野において周知であり、本明細書では単にファイルと称されるであろう。コントローラ２１０は、メモリ２４０から命令を読み出し、端末１００の動作を制御するためにこれらの命令を実行するように構成される。メモリ２４０は、ＲＯＭ、ＲＡＭ、ＳＲＡＭ、ＤＲＡＭ、ＣＭＯＳ、ＦＬＡＳＨ、ＤＤＲ、ＥＥＰＲＯＭメモリ、フラッシュメモリ、ハードドライブ、光学ストレージ、又はそれらの任意の組み合わせなどのコンピュータ可読メモリ向けの任意の一般に知られている技術を使用して実現されることができる。
【００２６】
メモリ２４０はコントローラ２１０によって様々な目的のために使用され、そのうちの１つは、端末１００内の様々なソフトウェアモジュール用のアプリケーションデータ及びプログラム命令２５０を格納するためである。ソフトウェアモジュールは、リアルタイムオペレーティングシステム、マン・マシンインタフェース２２０用のドライバ、アプリケーションハンドラ、及び様々なアプリケーション２５０を含む。アプリケーション２５０は、電子メールなどのメッセージングアプリケーション、ブラウジングアプリケーション、バンキングアプリケーション、及び様々な他のアプリケーション２５０を含むことができる。
【００２７】
端末１００は、図１の端末１００においてディスプレイ１１０、キーパッド１３０から構成されるユーザインタフェース２２０を更に備えることができる。ディスプレイ１１０は、仮想キー（図示せず）を表示し操作することができるタッチディスプレイとすることができる。このような仮想キーは、物理キー１３０のいずれか又は全てを置き換えることができ、明示的に述べられていないならば、本明細書では相違はないとする。
【００２８】
ユーザインタフェース（ＵＩ、ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）２２０はまた、ＵＩドライバと一緒に、ディスプレイ１１０、キーパッド１３０、及びサウンドシステム、ＬＥＤインジケータなどの様々な他のＩ／Ｏデバイスと連携する１つ又は複数のハードウェアコントローラを含む。一般的に知られているように、ユーザは、このように形成されたマン・マシンインタフェースを介して端末１００を操作することができる。
【００２９】
端末１００は、端末が他のデバイスと通信することを可能にする通信インタフェース２３０を更に備えることができる。通信インタフェースは、様々な無線周波数技術を使用して通信するように適合されている無線周波数インタフェースとすることができる。そのような技術の例は、少し挙げると、ＷＩＦＩ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗ−ＣＤＭＡ、ＧＳＭ、ＵＴＲＡＮ、ＬＴＥ、及びＮＭＴである。
【００３０】
通信は、更に又は代替的に、端末が様々なネットワーク技術の使用を介して他のデバイスと通信することを可能にするように適合されている有線インタフェース２３０とすることができる。そのような技術の例は、少し挙げると、ＵＳＢ、イーサネット、ローカルエリアネットワーク、及びＴＣＰ／ＩＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ、伝送制御プロトコル／インターネットプロトコル）である。
【００３１】
このように、コンピューティングデバイス１００は通信インタフェース２３０を介してファイルを受信及び／又は転送するように構成される。
【００３２】
図３は、上記で説明されているようなコンピュータ可読媒体の概略図を示す。コンピュータ可読媒体３０はこの実施形態ではデータディスク３０である。１つの実施形態では、データディスク３０は磁気データ記憶ディスクである。データディスク３０は、プロセッサなどのコントローラにロードされると、上で開示された実施形態による方法又は手順を実行する命令３１を収容するように構成される。データディスク３０は、命令をコントローラにロードするために、読取りデバイス３２に接続され又は読取りデバイス３２内に存在し、且つ読取りデバイス３２によって読み出されるように用意される。１つ（又は幾つか）のデータディスク（群）３０と併用した読取りデバイス３２の１つのこのような例はハードドライブである。コンピュータ可読媒体は、コンパクトディスク、デジタルビデオディスク、フラッシュメモリ、又は一般に使用される他のメモリ技術などの他の媒体とすることもできることに留意されるべきである。そのような実施形態では、データディスク３０は有形のコンピュータ可読媒体３０の１つのタイプである。
【００３３】
命令３１は、命令３１をコントローラにロードするためにコンピュータデータ読取りデバイス３４に無線（又は有線）インタフェースを介して（例えばインターネットを介して）送信されるコンピュータ可読信号３３内に命令３１を含むことによって、コンピュータ可読媒体上のコンピュータコード化されたデータを読取ることができるコンピュータ又は他のデバイスなどのコンピュータデータ読取りデバイス３４にダウンロードされることもできる。そのような実施形態では、コンピュータ可読信号３３は、無形のコンピュータ可読媒体３０の１つのタイプである。
【００３４】
命令は、コンピュータ３４のメモリ（図３では明示的に示されていないが、図２では２４０として参照される）に格納されることができる。
【００３５】
コンピュータプログラム、命令、コードなどへの言及は、プログラム可能なプロセッサ用のソフトウェア、あるいは、例えば、プロセッサ用の命令であろうと又は固定機能デバイス、ゲートアレイ、もしくはプログラマブルロジックデバイスなどの構成設定であろうと、ハードウェアデバイスのプログラム可能なコンテンツのようなファームウェアを包含するように、理解されるべきである。
【００３６】
図４は、少なくとも１つのコンピューティングデバイス１００を含む、又は少なくとも１つのコンピューティングデバイス１００内で実行される、本明細書の教示の実施形態による圧縮／解凍システム４００の概要を示す。コンピューティングデバイス１００のコントローラ２１０はファイル４１０を受信するように構成される。ファイル４１０は通信インタフェース２３０を介して又はメモリ２４０から受信されることができる。
【００３７】
コンピューティングデバイス１００のコントローラ２１０は、圧縮されたファイル４１０の格納又は送信を改善するようにファイル４１０を圧縮するためにファイル４１０を処理するように構成される。これは、記憶スペース及び／又は帯域幅を節約するという点で技術的利点を有する。
【００３８】
１つの実施形態では、コントローラは、ファイル４１０をより小さい部分に裂き又は分割する手段４１５を採用し、各部分を個別に圧縮するように構成される。以下では、部分又は完全なファイルを処理することの間に相違はないこととする。ファイルの部分が個別に圧縮される実施形態では、対応するコントローラは、部分を個別に処理し、圧縮された部分の解凍によって生じるファイル部分を連結又は、そうでなれれば結合するように構成されるであろう。より小さな部分に分割する１つの利点は、計算が各部分に対して高速であることである。１５０バイトのファイル部分の例は、各部分に対して４．７％の圧縮率をもたらし、基数｛２、３、５、７｝のみを使用して４．７％の全体的圧縮という結果をもたらした。
【００３９】
コントローラ２１０は、ファイル４１０を数Ｘに変換する手段４２０を採用することによって、ファイル４１０（又はその部分）を圧縮するように構成される。１つの実施形態では、コントローラは、ファイル４１０を１０進数、すなわち基数１０を有する数に変換するように構成される。１つの実施形態では、コントローラは、ファイル４１０を１６進数、すなわち基数１６を有する数に変換するように構成される。１つの実施形態では、コントローラは、ファイル４１０を２進数、すなわち、基数２を有する数に変換するように構成される。そのような実施形態では、実際の変換は、ファイルを、数学的演算を実行するのにより適したフォーマットに単純に変換することによって表されることができる。１つのこのような実施形態では、変換されるフォーマットは文字列ベクトルである。
【００４０】
次に、コントローラ２１０は、数Ｘを指数ベクトルｅｘｐに変換する手段４３０を用いる。コントローラ２１０は、基数ベクトルｂａｓｅの指数を決定することによって数Ｘを指数ベクトルｅｘｐに変換するように構成され、数Ｘは、基数ベクトルｂａｓｅの各要素の指数ベクトルｅｘｐの対応する要素乗によって表されることができる。基数を慎重に選択することによって、数Ｘは、その数がその自然の形で表現される場合よりもはるかに短い形で表現されることができる。
【００４１】
説明するための簡単な例、１０進数２５６（２５６１０）に対応するファイル［１００００００］は、対応する基数１６の指数２で表される。従って、送信又は格納される必要があるのは、［１０］＝２１０（１０進数２）が全てであり、２５％の圧縮率が既に達成された。
【００４２】
次に、コントローラ２１０は、同じ又は別のコンピューティングデバイスによる後の検索のために指数ベクトルを格納又は送信することができる。以下では、格納はメモリ２４０への送信によって表されることとし、メモリ２４０に格納することと通信インタフェース２３０を介して送信することとの間に相違はないこととする。
【００４３】
同じ又は別のコンピューティングデバイスのコントローラ２１０は、メモリ２４０から又は通信インタフェース２３０を介してのいずれかで指数ベクトルｅｘｐを受信し、指数ベクトルｅｘｐを、指数ベクトルｅｘｐを数に変換する手段４４０を採用して、数に変換するように構成される。その後、コントローラ２１０は、数Ｘｒをファイルに変換する手段４５０を採用し、それによりファイル４１０を解凍する。ファイル４１０の部分が圧縮されている実施形態では、コントローラはその部分を解凍し、次いで、その結果として得られるファイルの部分を完結したファイルに連結又は他の方法で結合する。特に、部分に対応する指数ベクトルｅｘｐが順不同で受信される場合、コントローラ２１０は順序を決定し、その部分を正しい順序で結合するように構成される。順序は、その部分を表す数に対して指数ベクトルｅｘｐの一部である連続又は順序番号によって示されることができる。
【００４４】
コントローラ２１０は、メモリから（又は通信インタフェースを介して）基数ベクトルｂａｓｅを検索するように構成され、ファイルを圧縮するコントローラ及びファイルを解凍するコントローラ（同じコントローラである可能性がある）の両方が同じ基数ベクトルｂａｓｅへのアクセスを有する場合、その数は、単純に基数ベクトルｂａｓｅの要素の指数ベクトルｅｘｐの要素乗及び部分的な結果の結合によって、容易に再構築されることができる。
【００４５】
図５Ａは指数ベクトルｅｘｐの表現５００の概略図を示す。指数ベクトルｅｘｐの各要素は表現５００の（ビット）フィールドによって表される。図５Ａの例では、指数ベクトルｅｘｐは、順序数（ordering number）ｎ、スケーリング数（scaling number）Ｎ、指数ａ、ｂ、ｃなど、及び定数Ｋを含む。
【００４６】
順序数ｎ、スケーリング数Ｎ、及び／又は定数Ｋは任意選択的であることに留意されるべきである。指数ベクトルｅｘｐの必須要素は、基数指数ａ、ｂ、ｃなどである。
【００４７】
１つの実施形態では、指数ベクトルｅｘｐは、１つ又は幾つかの基数に対して複数の指数を含むこともできる。例えば、指数ベクトルｅｘｐは、基数｛Ａ、Ｂ、Ｃ｝を含む基数ベクトルｂａｓｅに対して｛ｎ、Ｎ、ａ１、ａ２、ｂ、ｃ１、ｃ２、Ｋ｝とすることができる。
【００４８】
１つの実施形態では、指数ベクトルｅｘｐは、基数ベクトルの各基数に対して定数ｃｉを含むこともできる。これらの定数ｃｉはスケーリング定数である。
【００４９】
図５Ｂは対応する基数ベクトルｂａｓｅを示す。図５Ｂの例では、基数ベクトルは基数Ａ、Ｂ、Ｃなどを含む。
【００５０】
ファイル数は、基数ベクトルｂａｓｅの基数の指数ベクトルｅｘｐの指数乗を加算、乗算、又はそれらの組み合わせによって結合することにより、再現されることができる。
【００５１】
数を再現する１つの一般的な式は、
【数１】
2018152887.tif 000003
ここで、
【数２】
2018152887.tif 000004
は乗算や加算などの結合演算を表す。
【００５２】
上で述べたように、各基数は複数の対応する指数を有することができる。このような場合、数Ｘのより一般的な式は、
【数３】
2018152887.tif 000005
ここで、ａｉは基数Ａの指数（群）であり、ｂｉは基数Ｂの指数（群）であり、ｃｉは基数Ｃの指数（群）である。代替的に、基数ベクトルｂａｓｅは重複した基数を含むことができ、それによって、最初の式が適用されることができる。同様のことは、以下に示す式に対しても当てはまる。
【００５３】
必要な計算の数を低減し、指数のサイズを低減し、圧縮の解像度（resolution）を向上させるために、倍率（scaling factor）を使用することができる。
【００５４】
各基数−指数対もスケーリングされる実施形態では、一般化された式は以下のようになる。
【数４】
2018152887.tif 000006
ここで、ｃｉは倍率である。
【００５５】
代替的に、各基数の合計はスケーリングされ（これは同じ基数に対する全ての倍率は同じである、ｃｉ＝ｃｊ、ことに対応する）、一般化された式は次のようになる。
【数５】
2018152887.tif 000007
ここで、ｃａは基数Ａに対する倍率である。
【００５６】
スケーリングの組み合わせに対して、式は次のようになる。
【数６】
2018152887.tif 000008
【００５７】
式は再帰的な要素又は反復される要素を有する可能性があることも留意すべきである。これを説明するために、以下の表記が選択される。
【数７】
2018152887.tif 000009
【００５８】
ここで、Ｎｊ及びＫｊは各繰り返しに対する乗数及び定数であり、Ｎｔ及びＫｔは合計式に対する乗数及び定数である。上記に指摘したように、全ての倍率、乗数、及び／又は定数並びに基数は、明示的に式の一部である必要はない。
【００５９】
定数Ｋは、数が奇数であることを示し、それにより、処理を、偶数のみを低減するように低減するために使用されることができ、これは、その後、低減する前にその数が実際に奇数又は偶数であったかどうかを示すためにビットを伴うであろう（その後、奇数は低減される前に−１で減算され、再構築時に＋１が加算されるであろう）。従って、定数Ｋは、複数の部分、すなわち、奇数／偶数を表す１つの部分及び可能な剰余を示す１つの部分を有する可能性がある。上記の表記によって示されるように、式の各繰り返しに対して１つの（１組の）定数（群）が存在する可能性がある。
【００６０】
結合演算
【数８】
2018152887.tif 000010
は、通常括弧で示すようなセグメント化された計算又は部分的な計算を示すために使用されることもできる。もちろん、これは複数回出現する幾つかの基数によって表わされることもできる。例えば（この例から除外された定数、倍率、乗数、ただし、上の表記で示されているように、それらを含めることもできることが留意されるべきである）
Ａａ（Ｂｂ＋Ｃｃ）は、Ａａ＊Ｂｂ＋Ａａ＊Ｃｃとして表されることも可能である。
【００６１】
これが幾つかのステップで繰り返される場合、表記は
ΣＡｊａｊ（Ｂｊｂｊ＋Ｃｊｃｊ）＝Ａ１ａ１（Ｂ１ｂ１＋Ｃ１ｃ１）＋Ａ２ａ２（Ｂ２ｂ２＋Ｃ２ｃ２）…
となる可能性があり、これは、
ΣＡｊａｊ＊Ｂｊｂｊ＋Ａｊａｊ＊Ｃｊｃｊ＝Ａ１ａ１Ｂ１ｂ１＋Ａ１ａ１Ｃ１ｃ１＋Ａ２ａ２Ｂ２ｂ２＋Ａ２ａ２Ｃ２ｃ２…
として表されることも可能である。
【００６２】
上記の式が３つの基数のみを有していても、任意の数の基数が可能であることが留意されるべきである。低い数の基数がより短い指数ベクトルをもたらすので、基数の数は、より高い圧縮比を可能にするために、低く、例えば１０未満又は５未満に保たれることができる。
【００６３】
負の定数を避けるために、指数が０である基数は無視されることができ、従って、基数が互いに加算される場合、すなわち、
【数９】
2018152887.tif 000011
の場合、合計に寄与しない。代替的に、指数は決定された指数よりも大きい指数として格納され、その後、基数は指数−１乗される。
【００６４】
基数ベクトル用に選択される基数は、設計上の問題に依存し、圧縮されるファイルのサイズ、圧縮の比率、及び圧縮の速度に応じて選択されることができる。例えば、大きな基数は、より短い指数ベクトル及びより速い圧縮を提供するが、そのような良好な解像度を提供せず、大きな定数及び場合により順序数を必要とする。大きな基数はまた、より短い指数をもたらす。より低い基数はより高い解像度を提供するが、より遅い圧縮を提供する可能性がある。
【００６５】
１つの実施形態では、大きな基数が数Ｘをより速く低減するので、基数は、解像度及びより速い圧縮を提供するように間隔を空けられる。
【００６６】
基数は指数的に、
Ａ＝１０（＝１０１）、Ｂ＝１００（＝１０２）、Ｃ＝１０００（＝１０３）
Ａ＝１０、Ｂ＝１００（＝Ａ２）、Ｃ＝１００００（＝Ｂ２）
又は、線形に大きくなることができる。
Ａ＝１０、Ｂ＝２０、Ｃ＝３０
Ａ＝２、Ｂ＝３、Ｃ＝５
【００６７】
基数が素数の場合、それらは除算ループが起きることを回避する。このような基数ベクトルの例は、｛２、３、５、７｝（線形）及び｛２、３１、１２７、１０２７｝（指数的）である。
【００６８】
基数の１つが数の書式（例えば、基数が２進数に対して２、１０進数に対して１０など）の基数と等しく、その基数が乗算によって結合される場合、表現の末尾の０の数を単純に数えることによって、それによって除算演算を回避して、最大ではないかもしれないが少なくとも部分的な、指数を見出すのは簡単である。
【００６９】
１つの実施形態では、各基数（又は少なくとも１つの基数）の指数は、その基数に対してスケーリング定数を伴うことができる。これは、特に、大きな数Ｘ（又は低減されている場合、数Ｘの大きな残余）に対して、数Ｘのより高速な圧縮／低減を可能にする。例えば、数Ａ＝１０、Ｂ＝１００を使用して数２２０を低減することになっている場合、その数は、表記Ｘ＝ｃａＡａ＋ｃｂＢｂ及びｅｘｐ＝｛ｃａ；ａ；ｃｂ；ｂ｝を使用して、１１０１１１００より短い２；１；２；１又は２進数１０；１；１０；１すなわち１０１１０１で表すことができる。同じ数が、倍率なしで、すなわちＸ＝Ａａ＋Ｂｂ＋Ｋ及びｅｘｐ＝｛ａ；ｂ；Ｋ｝を使用して、表現されるならば、数２２０は｛１；１；１１０１１１１０｝と表されるであろう。代替的に、一般的なスケーリング、すなわち、｛１０；１；１｝となるであろう表記Ｘ＝Ｎ（Ａａ＋Ｂｂ）＋Ｋ及びｅｘｐ＝｛Ｎ；ａ；ｂ；Ｋ｝、が使用される可能性がある。見られるように、倍率の使用は、指数ベクトルのサイズ、又は少なくとも指数ベクトルの要素を大幅に低減することができる。倍率を使用することの利点は、指数のみの使用は、指数の増加が大きすぎる変化をもたらす可能性があるが、一方で単純なスケーリングは数を迅速に低減でき且つ倍率は基数より常に小さい（又はそれらは必要とされない可能性がある）ので、それらは多くのスペースを必要とせず、従って指数ベクトルの大きさに多くを加えないことをもたらす、という事実に由来する。
【００７０】
同じ基数に対して複数の指数を使用することは、その数又はその数の残余が最高の又は次の基数よりもはるかに大きい場合に有益となる。それで、所与の基数に対してその数内に複数の基数−指数対を適合させることが可能である。
【００７１】
図６は、数を、基数ベクトルｂａｓｅ＝｛Ａ、Ｂ、…、Ｄ｝に基づいて指数ベクトルｅｘｐ＝｛ｃａ、ａ、ｃｂ、ｂ、…、ｃｄ、ｄ｝に低減する一般的な方法のフローチャートを示す。数は、変換されたファイル（又は部分ファイル）の結果とすることができる。倍率は個別的に又は全体的に任意選択的であることが留意されるべきである。また、図６の例で使用されている表記では表現されていないが、少なくとも１つの基数の複数の指数（及び倍率）の使用も可能であり、代替として開示されることになることに留意されたい。
【００７２】
方法は数Ｘを受信する６１０ことから始まる。次に、基数の指数が見出される６２０。１つの例では、（次の）最高の指数が見出される。１つの例では、指数が（次の）最大の基数に対して見出される。１つの例では、最大の基数の最高の指数が見出される。図６の表記例では、基数Ｄの最高ｄが見出される。指数ｄは数Ｘを基数Ｄで繰り返し除算することによって見出されることができる。指数ｄは代わりにテーブルルックアップによって見出されることができる。指数ｄは、数Ｘの最上位位置（ｍｓｐ、ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｐｏｓｉｔｉｏｎ）を見出すことによって代替的に見出されることができる。この選択肢は、以下の図７及び８を参照して詳細に説明されるであろう。
【００７３】
最高の指数ｄが見出されたので、倍率は、（それが使用される場合）、数Ｘを最高の基数Ｄのｄ乗で除算し、その結果を切り捨てることにより決定されることができる６３０。使用されている表記では、ｃｄ＝Ｔｒｕｎｃ（Ｘ／Ｄｄ）。
【００７４】
その後、残余数Ｘｒｅｓは、数から倍率を掛けた基数の指数乗を減算することによって、すなわちＸｒｅｓ＝Ｘ−ｃｄＤｄで見出される６４０。又は、データ論理表記では、Ｘｒｅｓ＝Ｍｏｄｕｌａ（Ｘ／Ｄｄ）。基数が乗算によって結合されることになっている実施形態では、残余数は除算によって決定される。両方の場合において、残余数は、基数の指数乗によって数を低減することで決定される。
【００７５】
任意選択的に、複数の指数が現在処理中の基数に対して見出されることになっている場合、方法は、残余数Ｘｒｅｓを数Ｘとして使用して、すなわちＸ＝Ｘｒｅｓに設定して６４５、基数の最高の指数を見出すことに戻る。
【００７６】
その後、指数を見出すべき基数ベクトルｂａｓｅに更に基数が存在するかどうかが判定される６５０。そうであるならば、次のより低い基数を使用して残余数を低減することすなわちＸ＝Ｘｒｅｓ及びｂａｓｅ＝ｂａｓｅｋ−１に設定する６６０、に進む。ここで、ｋは、基数ベクトルが昇順で順序付けられていると仮定して現在の基数のインデックスである。これは、指数ベクトルｅｘｐの（他の）指数ｃ、ｂ、ａ…を提供する。基数がもはや存在しないならば、残余数は残り又は定数Ｋであり、すなわちＫ＝Ｘｒｅｓに設定され６７０、指数ベクトルｅｘｐは完了し６８０、数Ｘに解凍して戻されその後の検索のために格納又は送信されることができる。
【００７７】
指数ベクトルを数Ｘに解凍する６９０ために、単純に指数ベクトルｅｘｐを圧縮に使用される式に挿入する。この式は、上記で与えられた任意の種類の式とすることができる。
【００７８】
上記に開示されているように、基数の最高の指数は、数Ｘに対して最上位位置を見出すことによって見出されることができる。図７は、最上位位置ｍｓｐがマークされている数Ｘの表現を示す。２進数Ｘに対しては、最上位位置は最上位の１のビットである。図７の例では、数Ｘ＝１０９が８ビットで示され、ｍｓｐは位置２である。図７の例では、最上位位置の番号付けは最下位位置から最上位に行くが、番号付け自体は重要ではない可能性があることが留意されるべきである。１つの実施形態では、それはテーブルルックアップに対してのみ使用される。１つの実施形態では、しかしながら、それは、指数をｍｓｐに基づいて計算することによって指数を決定するために使用される。
【００７９】
図８は、最上位位置を見出すことによってどのように最高の指数を決定するかの一般的な方法のフローチャートを示す。
【００８０】
ｍｓｐを見出すために、コンピューティングデバイスのコントローラは、最初の非ゼロ要素を見出すために数Ｘの表現を単純に検索することができる８１０。数Ｘは任意の数ではなく、ファイル（の部分）を表しているので、その数が全て０からなる又は多数の０で始まっているであろう可能性は非常に少なく、従って、ｍｓｐの検索は、ほんのわずかな比較を必要とし、かなり高速となるであろう。
【００８１】
その後、最高の指数が見出される８２０。指数はテーブルルックアップを介して見出されることができる。そのようなテーブルの一例を、２進数Ｘ（＝１０９）及び基数（＝７）に対しての図７の例について以下に示す。
【００８２】
【表１】
2018152887.tif 000012
【００８３】
代替的に、最高の指数は、基数ベクトルｂａｓｅの現在の基数、数Ｘの数の基数（２進数、１０進数、１６進数、…）、及びｍｓｐに基づいて計算することによって、見出されることができる。
【００８４】
基数Ｂ、指数ｅ、及び数の基数Ｄに対して、最高の指数は次のように決定されることができる。
【数１０】
2018152887.tif 000013
【００８５】
代替的に、指数ｅ又は少なくとも指数ｅに近い指数は、低減するために使用する基数（すなわち、基数ベクトルｂａｓｅの要素（群））が既知であり、数表現の基数も既知であり、それによって基数Ｂの数の基数Ｄ根が予め決定されることができるので、より高速な方法で決定されることができる。それで、指数ｅは次のように決定されることができる。
【数１１】
2018152887.tif 000014
又は代替的に、
【数１２】
2018152887.tif 000015
ここで、
【数１３】
2018152887.tif 000016
又は
【数１４】
2018152887.tif 000017
はより高速な計算のために予め決定されることができる。
【００８６】
指数が０であることが見出される８３０場合、次のより低い基数が選択され、指数は、上のようにテーブルルックアップ又は計算のいずれかによってより低い基数に基づいて決定される。従って、大きい数、すなわち大きなファイルに対して、指数−ｍｓｐテーブルを、指数がゼロである全ての要素を除外することによって、それに応じて短くすることができる。その結果、図７の例の表は次のようになる。
【００８７】
【表２】
2018152887.tif 000018
【００８８】
代替的に、テーブルは指数だけでなく、対応する基数も含むことができる。そのような場合、指数がゼロであるかどうかの決定は、定数Ｋが、もはやより低い基数が存在しない場合と同じ場合の数であるという結果をもたらす。図７及び図８の例では、各基数に対して１つの指数のみが決定されると仮定されているが、同じ方法論が１つ又は複数の基数に対して複数の指数に使用されることができる。一般化するために、複数の指数を使用することは、重複した基数を有する基数ベクトルを有すると見なされることができる。これは、上記の及び図６を参照した開示に対して当てはまる。
【００８９】
図８に関して、このように、まだ基数が存在するか否かの判定８３５が、指数がゼロであるかどうかの判定８３０に続く。まだ他に基数が存在するならば、方法は次の基数に進む。基数がもはや存在しないならば、定数Ｋは数Ｘに等しく設定され８５０、指数系列は終了する。
【００９０】
指数が０ではないと判定される場合、指数が見出され、方法は、指数を見出した６２０後に図６のように進む。
【００９１】
基数が数の基数で均等に分割可能であるならば、基数の指数乗（Ｄｄ）は一連のシフトによって計算され、時間のかかる乗算動作は必要ではない。
【００９２】
このように、ファイルを数（又は各々がファイルの部分に対応する一連の部分数）に変換し、式及び基数ベクトルｂａｓｅを用いてその数を指数ベクトルｅｘｐに低減することによって、ファイルが圧縮されることができる方法が、上に開示されている。その結果、ファイルは、格納又は送信のために指数ベクトルによって単独で表されることができる。ファイルを解凍するために、必要なものは、基数ベクトルの基数に関する知識並びに任意の倍率及びそれらが適用される方法に関する知識だけである。
【００９３】
基数、指数の順序、倍率が適用されるべきか否か、などを知らずにファイルを解凍することは不可能であるので、本明細書の方法を使用してファイルを暗号化することも可能であることは当然明らかである。
【００９４】
知られているように、公開暗号化スキームは、暗号化に使用される式が公に開示されている業界で好まれている。これは、より広範な普及につながる可能性があるので、本明細書に提示される圧縮スキームにも有益であろう。しかしながら、指数ベクトルの要素を送信する順序について秘密裏に別の当事者と単に合意するのみで、ファイルは圧縮されるだけでなく暗号化されることができる。特に、ファイルがより小さな部分に分割されることができる大きなファイルの場合、解凍結果がファイル全体の一部のみを提供し、解凍の正しさをチェックすることを困難にするであろうから、指数の再順序付けされた結合が正しい解凍につながったかどうかを解読することは殆ど不可能である。
【００９５】
より小さな部分に分割する利点の１つは、各部分に対する計算が高速であることである。１５０バイトのファイル部分の例は、各部分に対して４．７％の圧縮率をもたらし、基数ベクトル｛Ｎ、２、３、５、７、Ｋ｝のみを使用して４．７％の全体的圧縮に至った。
【００９６】
図９は、本明細書の教示によるファイルを暗号化及び復号する方法のフローチャートを示す。ファイルは、上記のように圧縮され９１０、指数ベクトルｅｘｐをもたらす。
【００９７】
指数ベクトルｅｘｐは、再順序付けされ９２０、それにより圧縮を効果的に暗号化し、その後格納又は送信される９３０。
【００９８】
代替的に、破線９２０のボックスによって示されているように、指数ベクトルは再順序付けされない。そのような実施形態では、基数及びその順序は秘密に保たれる。
【００９９】
ファイルを解凍する９５０前に、指数ベクトルｅｘｐは、実際に指数ベクトルｅｘｐを再順序付けするか又は対応する式を適用するかのいずれかによって、使用される式に適合するように再び順序付けされることができる９４０。
【０１００】
本明細書の開示が指数ベクトルを再順序付ける傾向があるとしても、同じ教示が、基数ベクトルｂａｓｅを再順序付けすること、すなわち、圧縮器又は解凍器のいずれかによって異なる式を使用すること、これは実際には指数ベクトルの再順序付けに対応する、に適用されることができることに留意すべきである。
【０１０１】
圧縮自体が対応するファイルを暗号化するのにも役立つので、指数及び／又は基数ベクトルが順序に関して秘密に保たれているか且つ／又は維持されているかにかかわらず、暗号化が行われることが留意されるべきである。
【０１０２】
１つの実施形態、特にファイルが幾つかの部分に分割されている実施形態では、基数ベクトルｂａｓｅも送信又は格納されることができる。次に、指数が対応する基数と対になることができるように、指数ベクトルｅｘｐ及び基数ベクトルｂａｓｅのフォーマットを仮定することによって、一般式がファイルを解凍するために使用されることができる。このような一般的なフォーマットの１つの例は、指数ベクトルｅｘｐの各要素が、同じ順序で基数ベクトルｂａｓｅの基数に対応することである。別の例は、指数ベクトルｅｘｐの各要素対が、同じ順序で基数ベクトルｂａｓｅの基数に対応する倍率及び指数を構成することである。
【０１０３】
そのような実施形態では、基数ベクトル及び指数ベクトルは、更なる可能な暗号化を提供するために、再順序付けられることができる。また、指数ベクトル（及び場合により基数ベクトル）は、ファイル部分ごとに異なる順序で順序付けられることができる。再順序付けは、式に基づく又はテーブルに従うとすることができる。１ＭＢの例示的なファイル、１５０バイトのファイル部分（４００桁の１０進数に対応）、及び４つの基数を有し、倍率を使用する基数ベクトルに対して、ファイル部分ごとに、４！＊８！＝９６７６８０の可能性が存在し、９６７６８０＊６９９１［＝１ＭＢ／１５０バイト］＝６，７６５，０５０，８８０の可能性をもたらす。不規則な順序でファイル部分を送信することと組み合わせると、可能性の数は更により大きくなる。
【０１０４】
ファイルを復号するために、指数ベクトルは元の順序に再順序付けされるか又は復号は再順序付けされた基数ベクトルに基づくとすることができる。代替的又は追加的に、順序及び／又は基数は秘密に保たれる。
【０１０５】
基数ベクトルｂａｓｅが圧縮ファイルの一部として格納又は送信される実施形態では、基数はｍｓｐに基づいて動的に選択されることができる。例えば、多くの先行ゼロ（低いｍｓｐ）が存在する場合、より小さい基数が選択され、一方ｍｓｐが高い場合、より高い基数が選択される。これは、やや低いがより高速の圧縮及び適合した解像度をもたらす。
【０１０６】
本明細書の教示が送信されるべき指数ベクトルｅｘｐ（スカラー及び／又は定数を含む可能性がある）をもたらすので、本発明者は、ファイルによって表される指数ベクトルそれ自体も（更に）圧縮又は暗号化されることができることを認識した。
【０１０７】
従って、１つの実施形態では、方法及びその方法を組み込むデバイスは、所望の圧縮率が達成されるまで、指数ベクトルｅｘｐ（スカラー及び／又は定数を含む可能性がある）を圧縮（及び／又は暗号化）し続けるように構成される。
【０１０８】
図１０は、コンピューティングデバイスによって実行される可能性があるこのような方法のフローチャートを示す。ファイルは受信され、数Ｘに（上記で論じたように、場合により部分的に）変換され１０１０、数Ｘは指数ベクトルＥ（スカラー及び／又は定数を含む可能性がある）に圧縮される。指数ベクトルＥは、元のファイル（又はその一部）と比較されるファイル（構造）によって表される。圧縮率（ファイル（部分）のサイズで除算された指数ベクトルのサイズとして定義される）１０３０が閾値レベル、例えば５％、１０％、１５％、２０％より低くない又は０〜２５％の範囲内でない場合、指数ベクトルＥは圧縮されて新しい指数ベクトルＥ’となる数Ｘ’に変換される。元のファイル（部分）と比較されて新しい指数ベクトルＥ’の圧縮率が決定され１０２０、それが閾値を超えている１０３０場合、この手順は、所望の圧縮比が達成されるまで繰り返される。
【０１０９】
これは、決定されるべき部分サイズと計算複雑さ対計算速度との間の交換が行われることを可能にする。
【０１１０】
例えば、指数ベクトルを見出す計算の複雑度は、より大きなファイル部分に対して増加するが、より小さい部分の圧縮率は、より大きい部分の圧縮率よりも高い。連続的に圧縮することによって、部分サイズと計算速度との間のトレードオフが達成されることができる。これは、計算の複雑さが部分サイズと非線形に増加するが、圧縮を反復することは線形複雑度に基づく。
【０１１１】
図１１は、どのように、ファイル（部分）Ｘのサイズが繰り返し圧縮されるかの概略図を示す。各圧縮はそれ自体６７％の圧縮比をもたらし、それによって、得られる指数ベクトルはそれぞれ６７％、４４％、３０％及び２０％に圧縮される。
【０１１２】
ファイルを解凍するために、解凍ビットが各圧縮の前に追加される１０１５。解凍ビットは、更なる解凍が実行されるべきかどうかを示す（１は更なる解凍を示し、０は解凍が終了したことを示す）。ファイルが解凍されることになっている場合、指数ベクトル（スカラー及び／又は定数を含む可能性がある）が受信され１２１０、解凍される１２２０。解凍ビットがチェックされ１２３０、それが更なる解凍を示す（ビット＝１）場合、解凍が繰り返される。解凍ビットがそれ以上の解凍を示さない場合（ＢＩＴ＝０）、解凍は完了している。
【０１１３】
本発明は、主に少数の実施形態を参照して上に記述されている。しかしながら、当業者には容易に理解されるように、添付の特許請求の範囲によって規定されるように、上に開示されているもの以外の他の実施形態も本発明の範囲内において同様に可能である。
【図１】
2018152887.tif 000019
【図２】
2018152887.tif 000020
【図３】
2018152887.tif 000021
【図４】
2018152887.tif 000022
【図５Ａ】
2018152887.tif 000023
【図５Ｂ】
2018152887.tif 000024
【図６】
2018152887.tif 000025
【図７】
2018152887.tif 000026
【図８】
2018152887.tif 000027
【図９】
2018152887.tif 000028
【図１０】
2018152887.tif 000029
【図１１】
2018152887.tif 000030
【図１２】
2018152887.tif 000031
【手続補正書】
【提出日】平成30年5月24日(2018.5.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリ（２４０）とコントローラ（２１０）とを備えるコンピューティングデバイス（１００）であり、前記コントローラ（２１０）は、
ファイル（４１０）の少なくとも部分を数（Ｘ）に変換することと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換することとによって前記ファイル（４１０）を圧縮するように構成され、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表され、前記コントローラは、
前記基数ベクトルの最初の基数を現在の基数となるように設定し、
前記現在の基数の指数を見出し、
前記指数ベクトル（ｅｘｐ）に前記指数を含め、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するように構成され、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換される、
コンピューティングデバイス（１００）により圧縮されたファイル（４１０）、
または、
ファイル（４１０）の少なくとも部分を数（Ｘ）に変換するステップと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換するステップであって、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表される、ステップと、によって前記ファイル（４１０）を圧縮する方法であり、前記方法は、
前記基数ベクトルの最初の基数を現在の基数となるように設定するステップと、
前記現在の基数の指数を見出すステップと、
前記指数ベクトル（ｅｘｐ）に前記指数を含めるステップと、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するステップと、を含み、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換される、
方法により圧縮されたファイル（４１０）、
を解凍するためのコンピューティングデバイス（１００）であって、前記ファイル（４１０）は指数ベクトル（ｅｘｐ）によって表され、前記コンピューティングデバイスは、基数ベクトル（ｂａｓｅ）の各基数を指数ベクトル（ｅｘｐ）の対応する指数乗にし、その結果を数（Ｘ）に結合することによって前記数（Ｘ）を決定し、前記数（Ｘ）をファイル（４１０）に変換するように構成されるコントローラを備える、コンピューティングデバイス（１００）。
【請求項２】
メモリ（２４０）とコントローラ（２１０）とを備えるコンピューティングデバイス（１００）であり、前記コントローラ（２１０）は、
ファイル（４１０）の少なくとも部分を数（Ｘ）に変換することと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換することとによって前記ファイル（４１０）を圧縮するように構成され、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表され、前記コントローラは、
前記基数ベクトルの最初の基数を現在の基数となるように設定し、
前記現在の基数の指数を見出し、
前記指数ベクトル（ｅｘｐ）に前記指数を含め、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するように構成され、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換される、
コンピューティングデバイス（１００）により圧縮されたファイル（４１０）、
または、
ファイル（４１０）の少なくとも部分を数（Ｘ）に変換するステップと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換するステップであって、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表される、ステップと、によって前記ファイル（４１０）を圧縮する方法であり、前記方法は、
前記基数ベクトルの最初の基数を現在の基数となるように設定するステップと、
前記現在の基数の指数を見出すステップと、
前記指数ベクトル（ｅｘｐ）に前記指数を含めるステップと、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するステップと、を含み、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換される、
方法により圧縮されたファイル（４１０）、
を解凍する方法であって、基数ベクトル（ｂａｓｅ）の各基数を指数ベクトル（ｅｘｐ）の対応する指数乗にし、その結果を数（Ｘ）に結合することによって前記数（Ｘ）を決定するステップと、前記数（Ｘ）を前記ファイル（４１０）に変換するステップとによって、前記ファイル（４１０）は指数ベクトル（ｅｘｐ）によって表される、方法。
【請求項３】
プロセッサ上で実行されると、請求項２に記載の方法を実行する命令（３１）でエンコードされているコンピュータ可読記憶媒体（３０）。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１１３
【補正方法】変更
【補正の内容】
【０１１３】
本発明は、主に少数の実施形態を参照して上に記述されている。しかしながら、当業者には容易に理解されるように、添付の特許請求の範囲によって規定されるように、上に開示されているもの以外の他の実施形態も本発明の範囲内において同様に可能である。
なお、本発明の実施の態様は、つぎのとおりである。
［１］
メモリ（２４０）とコントローラ（２１０）とを備えるコンピューティングデバイス（１００）であって、前記コントローラ（２１０）は、
ファイル（４１０）の少なくとも部分を数（Ｘ）に変換することと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換することとによって前記ファイル（４１０）を圧縮するように構成され、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表され、前記コントローラは、
前記基数ベクトルの最初の基数を現在の基数となるように設定し、
前記現在の基数の指数を見出し、
前記指数ベクトル（ｅｘｐ）に前記指数を含め、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するように構成され、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換される、
コンピューティングデバイス（１００）。
［２］
前記指数は最高の指数である、請求項１に記載のコンピューティングデバイス（１００）。
［３］
前記コントローラ（２１０）は、テーブルルックアップを介して前記指数を見出すように更に構成される、請求項１〜２のいずれか一項に記載のコンピューティングデバイス（１００）。
［４］
前記コントローラ（２１０）は、場合により繰り返し除算によって前記指数を見出すように更に構成される、請求項１〜３のいずれか一項に記載のコンピューティングデバイス（１００）。
［５］
前記コントローラ（２１０）は、最上位位置（ｍｓｐ）に基づいて前記指数を見出すように更に構成され、前記最上位位置（ｍｓｐ）は、前記数（Ｘ）の表現において非ゼロである最初の要素の位置である、請求項１〜４のいずれか一項に記載のコンピューティングデバイス（１００）。
［６］
前記コントローラ（２１０）は、テーブルルックアップを介して前記最上位位置（ｍｓｐ）に基づいて前記指数を見出すように更に構成される、請求項５に記載のコンピューティングデバイス（１００）。
［７］
前記コントローラ（２１０）は、前記表現の前記基数の前記最上位位置（ｍｓｐ）乗の現在の基数根を計算することによって、前記最上位位置（ｍｓｐ）に基づいて前記指数を見出すように更に構成される、請求項５に記載のコンピューティングデバイス（１００）。
［８］
前記コントローラ（２１０）は、前記現在の基数の前記表現の前記基数根を計算し、これに前記最上位位置（ｍｓｐ）を掛けることによって前記最上位位置（ｍｓｐ）に基づいて前記指数を見出すように更に構成される、請求項５に記載のコンピューティングデバイス（１００）。
［９］
前記コントローラ（２１０）は、前記数（Ｘ）を前記現在の基数の前記指数乗で除算することによって前記現在の基数に対する倍率を決定し、その後、前記倍率が掛けられた前記基数の前記指数乗だけ前記数（Ｘ）を低減させることによって残余数（Ｘｒｅｓ）を決定するように更に構成される、請求項１〜８のいずれか一項に記載のコンピューティングデバイス（１００）。
［１０］
前記コントローラ（２１０）は、前記数（Ｘ）から前記基数の前記指数乗を減算することによって前記数（Ｘ）を低減させるように更に構成される、請求項１〜９のいずれか一項に記載のコンピューティングデバイス（１００）。
［１１］
前記指数ベクトル（ｅｘｐ）の少なくとも２つの指数が、前記基数ベクトル（ｂａｓｅ）の同じ基数に対応する、請求項１〜１０のいずれか一項に記載のコンピューティングデバイス（１００）。
［１２］
前記基数ベクトル（ｂａｓｅ）が重複の基数を含む、請求項１〜１１のいずれか一項に記載のコンピューティングデバイス（１００）。
［１３］
前記コントローラ（２１０）は、前記指数ベクトル（ｅｘｐ）を再順序付けすることによって前記ファイル（４１０）を暗号化するように更に構成される、請求項１〜１２のいずれか一項に記載のコンピューティングデバイス。
［１４］
前記コントローラ（２１０）は、ファイル表現を数（Ｘ）として解釈することによって、前記ファイル（４１０）を前記数（Ｘ）に変換するように更に構成される、請求項１〜１３のいずれか一項に記載のコンピューティングデバイス。
［１５］
ファイル（４１０）の少なくとも部分を数（Ｘ）に変換するステップと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換するステップであって、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表される、ステップと、によって前記ファイル（４１０）を圧縮する方法であって、前記方法は、
前記基数ベクトルの最初の基数を現在の基数となるように設定するステップと、
前記現在の基数の指数を見出すステップと、
前記指数ベクトル（ｅｘｐ）に前記指数を含めるステップと、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するステップと、を含み、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換される、
方法。
［１６］
請求項１〜１５のいずれか一項に記載の圧縮されたファイル（４１０）を解凍するためのコンピューティングデバイス（１００）であって、前記ファイル（４１０）は指数ベクトル（ｅｘｐ）によって表され、前記コンピューティングデバイスは、基数ベクトル（ｂａｓｅ）の各基数を指数ベクトル（ｅｘｐ）の対応する指数乗にし、その結果を数（Ｘ）に結合することによって前記数（Ｘ）を決定し、前記数（Ｘ）をファイル（４１０）に変換するように構成されるコントローラを備える、コンピューティングデバイス（１００）。
［１７］
請求項１〜１５のいずれか一項に記載の圧縮されたファイル（４１０）を解凍する方法であって、基数ベクトル（ｂａｓｅ）の各基数を指数ベクトル（ｅｘｐ）の対応する指数乗にし、その結果を数（Ｘ）に結合することによって前記数（Ｘ）を決定するステップと、前記数（Ｘ）を前記ファイル（４１０）に変換するステップとによって、前記ファイル（４１０）は指数ベクトル（ｅｘｐ）によって表される、方法。
［１８］
プロセッサ上で実行されると、請求項１５又は１７に記載の方法を実行する命令（３１）でエンコードされているコンピュータ可読記憶媒体（３０）。
［１９］
メモリ（２４０）とコントローラ（２１０）とを備えるコンピューティングデバイス（１００）であって、前記コントローラ（２１０）はファイル（４１０）を暗号化するように構成され、前記ファイルは、
前記ファイル（４１０）の少なくとも部分を数（Ｘ）に変換することと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換することとによって圧縮され、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表され、前記コントローラは、
前記基数ベクトルの最初の基数を現在の基数となるように設定し、
前記現在の基数の指数を見出し、
前記指数ベクトル（ｅｘｐ）に前記指数を含め、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するように構成され、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換され、
前記コントローラは、前記指数ベクトル（ｅｘｐ）を再順序付け、それにより、前記ファイル（４１０）の前記表現を暗号化するように更に構成される、
コンピューティングデバイス（１００）。
［２０］
前記コントローラは、前記基数ベクトル（ｂａｓｅ）を再順序付けするように更に構成される、請求項１９に記載のコンピューティングデバイス（１００）。
［２１］
ファイル（４１０）を暗号化する方法であって、前記ファイルは、
前記ファイル（４１０）の少なくとも部分を数（Ｘ）に変換するステップと、
前記数（Ｘ）を、少なくとも１つの指数を含む指数ベクトル（ｅｘｐ）に変換するステップと、によって圧縮され、各指数は基数ベクトル（ｂａｓｅ）の基数に対応し、それにより、前記ファイル（４１０）は前記指数ベクトル（ｅｘｐ）で表され、前記コントローラは、
前記基数ベクトルの最初の基数を現在の基数となるように設定し、
前記現在の基数の指数を見出し、
前記指数ベクトル（ｅｘｐ）に前記指数を含め、
前記基数の前記指数乗だけ前記数（Ｘ）を低減することによって残余数（Ｘｒｅｓ）を決定するように構成され、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数でないならば、
前記現在の基数は前記基数ベクトル（ｂａｓｅ）の次の基数となるように設定され、
前記数（Ｘ）は前記残余数（Ｘｒｅｓ）となるように設定され、前記コントローラ（２１０）は新しい現在の基数の指数を見出し、
前記現在の基数が前記基数ベクトル（ｂａｓｅ）の最後の基数であるならば、
定数（Ｋ）が前記残余数（Ｘｒｅｓ）となるように設定され、前記指数ベクトル（ｅｘｐ）及び前記定数を含む表現が生成され、それにより、
前記ファイル（４１０）の前記少なくとも部分が前記数（Ｘ）に変換され、
そして、前記コントローラは、
前記指数ベクトル（ｅｘｐ）を再順序付けし、それにより、前記ファイル（４１０）の前記表現を暗号化する、ように構成される、
方法。
［２２］
プロセッサ上で実行されると、請求項２１に記載の方法を実行する命令（３１）でエンコードされているコンピュータ可読記憶媒体（３０）。
【外国語明細書】
2018152887000001.pdf