以下の詳細な説明は、例にすぎず、実施形態、または実施形態の適用もしくは使用、あるいはその両方を制限するよう意図されていない。さらに、先行する「背景技術」または「発明の概要」のセクション、あるいは「発明を実施するための形態」のセクションで提示された、いずれかの明示されたか、または暗示された情報によって制約されるという意図はない。
ここで、図面を参照して1つまたは複数の実施形態が説明され、図面全体を通じて、類似する参照番号が、類似する要素を参照するために使用されている。以下の説明では、説明の目的で、1つまたは複数の実施形態を十分に理解できるように、多数の特定の詳細が示されている。しかし、これらの特定の詳細がなくても、さまざまな事例において、1つまたは複数の実施形態が実践され得るということは明らかである。
トポロジー・データ解析の従来の実装に伴う問題を前提として、本開示は、古典的コンピューティング技術および量子コンピューティング技術の混成を使用するベッティ数の事前知識に基づく推論の形態で、これらの問題のうちの1つまたは複数に対する解決策を生み出すように実装され得る。事前知識の組み込みは、量子コンピューティングに関する次元性の1つまたは複数の欠点を有利に克服することができる。さらに、古典的計算技術の組み込みは、従来の量子コンピューティング技術に関連する耐故障性の1つまたは複数の課題を軽減することができる。さらに、量子計算技術の使用は、推奨システム、ニュートリノ検出、大型ハドロン衝突型加速器(「LHC:Large Hadron Collider」)から収集されたデータの解析、化合物の再利用、または化学分析、あるいはその組み合わせなどの応用に関するデータセットを含む、複雑なデータセットの解析を容易にすることができる。
本発明のさまざまな実施形態は、効率的、効果的、かつ自律的なトポロジー分類を(例えば、直接的な人間による誘導なしで)容易にする、コンピュータ処理システム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品、あるいはその組み合わせを対象にすることができる。例えば、1つまたは複数の実施形態は、事前知識を古典的コンピューティング技術および量子コンピューティング技術の混成に組み込むことによって、1つまたは複数のベッティ数を推論することができる。例えば、確率分布の決定を容易にするために、1つまたは複数の量子コンピューティング・コンポーネントが1つまたは複数の固有値を量子状態での位相にエンコードすることができる。さらに、条件付き確率(例えば、ベイジアン学習アルゴリズムの実装など)によって1つまたは複数のベッティ数を推論するために、1つまたは複数の古典的コンピューティング・コンポーネントが確率分布の知識を組み込むことができる。
コンピュータ処理システム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品、あるいはその組み合わせは、本質的に高度に技術的であり、抽象的ではなく、人間による一連の精神的活動として実行できない問題(例えば、トポロジー分類)を解決するための、ハードウェアまたはソフトウェアあるいはその両方を採用する。例えば、本明細書に記載されたさまざまな実施形態は、1つまたは複数の機械学習のタスクに関することができ、または複雑なデータの解析を容易にするように量子コンピューティング・アルゴリズムを実装することができ、あるいはその両方であることができる。
図1は、古典的コンピューティング技術および量子コンピューティング技術の混成を使用して複雑なデータセットのトポロジー分類を容易にすることができる、例示的な非限定的システム100のブロック図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。本発明のさまざまな実施形態におけるシステム(例えば、システム100など)、装置、またはプロセスの態様は、1つまたは複数のマシン内で具現化された(例えば、1つまたは複数のマシンに関連付けられた1つまたは複数のコンピュータ可読媒体内で具現化された)1つまたは複数のマシン実行可能コンポーネントを構成することができる。そのようなコンポーネントは、1つまたは複数のマシン(例えば、コンピュータ、コンピューティング・デバイス、仮想マシンなど)によって実行された場合に、マシンに、説明された動作を実行させることができる。
図1に示されているように、システム100は、1つもしくは複数のサーバ102、1つもしくは複数のネットワーク104、または1つもしくは複数の入力デバイス106、あるいはその組み合わせを備えることができる。サーバ102は、量子コンピューティング・コンポーネント108を備えることができる。量子コンピューティング・コンポーネント108は、通信コンポーネント110またはサブサンプル・コンポーネント112あるいはその両方をさらに備えることができる。また、サーバ102は、少なくとも1つのメモリ116を備えるか、またはその他の方法で少なくとも1つのメモリ116に関連付けられ得る。サーバ102は、量子コンピューティング・コンポーネント108および関連するコンポーネント、メモリ116、またはプロセッサ120、あるいはその組み合わせなどの、ただしこれらに限定されない、さまざまなコンポーネントに結合することができる、システム・バス118をさらに備えることができる。図1ではサーバ102が示されているが、他の実施形態では、さまざまな種類の複数のデバイスが、図1に示されている特徴に関連付けられるか、または図1に示されている特徴を備えることができる。さらに、サーバ102は、1つまたは複数のネットワーク104を介して、1つまたは複数のクラウド・コンピューティング環境と通信することができる。
1つまたは複数のネットワーク104は、セルラー・ネットワーク、広域ネットワーク(WAN:wide area network)(例えば、インターネット)またはローカル・エリア・ネットワーク(LAN:local area network)を含むが、これらに限定されない、有線ネットワークおよび無線ネットワークを含むことができる。例えば、サーバ102は、例えばセルラー方式、WAN、ワイヤレス・フィデリティ(Wi-Fi:wireless fidelity)、Wi-Max、WLAN、またはBluetooth技術、あるいはその組み合わせなどを含むが、これらに限定されない、実質的に任意の望ましい有線技術または無線技術を使用して、1つまたは複数の入力デバイス106と(およびその逆方向に)通信することができる。さらに、示されている実施形態では、量子コンピューティング・コンポーネント108を1つまたは複数のサーバ102上に設けることができるが、システム100のアーキテクチャがそのように制限されないということが理解されるべきである。例えば、量子コンピューティング・コンポーネント108または量子コンピューティング・コンポーネント108の1つまたは複数のコンポーネントは、別のサーバ・デバイス、クライアント・デバイスなどの別のコンピュータ・デバイスに存在することができる。
1つまたは複数の入力デバイス106は、パーソナル・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、携帯電話(例えば、スマートフォン)、(例えば、プロセッサを備えている)コンピュータ化されたタブレット、スマート・ウォッチ、キーボード、タッチ・スクリーン、またはマウス、あるいはその組み合わせなどを含むことができるが、これらに限定されない、1つまたは複数のコンピュータ化されたデバイスを含むことができる。システム100のユーザは、1つまたは複数の入力デバイス106を利用して、データをシステム100に入力することができ、それによって、(例えば、直接接続によって、または1つまたは複数のネットワーク104を介して、あるいはその両方によって)前述のデータをサーバ102と共有する。例えば、1つまたは複数の入力デバイス106は、(例えば、直接接続を介して、または1つまたは複数のネットワーク104を介して、あるいはその両方によって)データを通信コンポーネント110に送信することができる。さらに、1つまたは複数の入力デバイス106は、システム100によって生成された1つまたは複数の出力をユーザに提示できる1つまたは複数のディスプレイを備えることができる。例えば、1つまたは複数のディスプレイは、陰極管ディスプレイ(「CRT」)、発光ダイオード・ディスプレイ(「LED:light-emitting diode display」)、電界発光ディスプレイ(「ELD:electroluminescent display」)、プラズマ・ディスプレイ・パネル(「PDP:plasma display panel」)、液晶ディスプレイ(「LCD:liquid crystal display」)、または有機発光ダイオード・ディスプレイ(「OLED:organic light-emitting diode display」)、あるいはその組み合わせなどを含むことができるが、これらに限定されない。
システム100のユーザは、1つもしくは複数の入力デバイス106または1つもしくは複数のネットワーク104あるいはその両方を利用して、1つもしくは複数の設定またはコマンドあるいはその両方をシステム100に入力することができる。例えば、本明細書に記載されたさまざまな実施形態では、システム100のユーザは、1つまたは複数の入力デバイス106を介してサーバ102または関連するコンポーネントあるいはその両方を動作させるか、または操作するか、あるいはその両方を行うことができる。さらに、システム100のユーザは、1つまたは複数の入力デバイス106を利用して、サーバ102または関連するコンポーネントあるいはその両方によって生成された1つまたは複数の出力(例えば、表示、データ、または視覚化、あるいはその組み合わせなど)を表示することができる。さまざまな実施形態では、システム100のユーザは、1つもしくは複数の入力デバイス106または1つもしくは複数のネットワーク104あるいはその両方を利用して、1つまたは複数の複雑なデータセットをサーバ102に提供することができる。本明細書において使用されるとき、「複雑なデータセット」という用語は、対象のデータセットに内在するパターンに関して非常に豊かな特徴を含んでいる1つまたは複数のデータセットのことを指すことができる。例えば、1つまたは複数の複雑なデータセットは、非線形パターンによって特徴付けられ得るデータを含むことができる。複雑なデータセットは、本質的に一般的である(例えば、特定の応用に縛られない)か、または特定のコンテキストから構築され得る。さらに、1つまたは複数の実施形態では、1つまたは複数の入力デバイス106が、クラウド・コンピューティング環境内に含まれるか、またはクラウド・コンピューティング環境に動作可能なように結合されるか、あるいはその両方であることができる。クラウド・コンピューティング技術を利用して、多くの種類の複雑なデータセットを収集するか、または解析するか、あるいはその両方を実行することができる。
量子コンピューティング・コンポーネント108は、1つまたは複数の入力デバイス106によって共有されている1つまたは複数の複雑なデータセットを解析し、トポロジー分類を容易にすることができる。例えば、通信コンポーネント110は、1つまたは複数の入力デバイス106から(例えば、直接的電気接続を介して、または1つまたは複数のネットワーク104を介して、あるいはその両方を介して)データ(例えば、複雑なデータセット)を受信し、そのデータを量子コンピューティング・コンポーネント108のさまざまな関連するコンポーネントと共有することができる。
サブサンプル・コンポーネント112は、(例えば、1つまたは複数の入力デバイス106を介してシステム100に入力された)複雑なデータセットによって特徴付けられた1つまたは複数のサンプル・オブジェクトを選択的に生成して、1つまたは複数のサブサンプル・オブジェクトを生成することができる。サブサンプル・コンポーネント112は、サブサンプル・コンポーネント112による選択的サンプリングによって、量子コンピューティング・コンポーネント108によって最初に解析されるデータのサイズを縮小することができる。サブサンプル・コンポーネント112によって使用され得る選択的サンプリング技術の例としては、ランダム・グリッド選択(random grid selections)、ランダム散乱選択(random scatter selections)、点群選択、モンテカルロ選択、またはブースト選択(boosted selections)、あるいはその組み合わせなどが挙げられるが、これらに限定されない。例えば、サブサンプル・コンポーネント112は、1つまたは複数の点群を介して複雑なデータセットを選択的にサンプリングし、1つまたは複数のサブサンプル・オブジェクトを生成することができる。
図2Aは、本明細書に記載された1つまたは複数の実施形態に従って、例示的なオブジェクト202を表すことができる例示的な非限定的グラフ200の図を示しており、1つまたは複数の量子コンピューティング・コンポーネント108によって、オブジェクト202が解析され得る。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。例示的なオブジェクト202は、1つまたは複数の入力デバイス106を介してシステム100に入力された1つまたは複数のデータセット(例えば、複雑なデータセット)によって特徴付けられ得る。例えば、グラフ200に示されている例示的なオブジェクト202は、数字の3であることができる。
図2Bは、グラフ200に示されている例示的なオブジェクト202に基づいて1つまたは複数のサブサンプル・コンポーネント112によって生成された例示的なサブサンプル・オブジェクト206を表すことができる例示的な非限定的グラフ204の図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。例えば、1つまたは複数のサブサンプル・コンポーネント112は、(例えば、複雑なデータセットなどの1つまたは複数のデータセットによって特徴付けられた)例示的なオブジェクト202を選択的にサンプリングし、(例えば、図2Bに示されているような)1つまたは複数の例示的なサブサンプル・オブジェクト206を生成することができる。例えば、1つまたは複数のサブサンプル・コンポーネント112は、1つまたは複数の点群技術によって、グラフ204に示されている例示的なサブサンプル・オブジェクト206を生成することができる。
図3は、本明細書に記載された1つまたは複数の実施形態に従って、ホモロジー・コンポーネント302をさらに備えている例示的な非限定的システム100の図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。1つまたは複数のホモロジー・コンポーネント302は、1つまたは複数の永続的ホモロジー・アルゴリズムを使用して、1つまたは複数のサブサンプル・コンポーネント112によって生成された1つまたは複数のサブサンプル・オブジェクトを特徴付け、量子重ね合わせ状態を生成することができる。
例えば、ホモロジー・コンポーネント302は、1つまたは複数の永続的ホモロジー・アルゴリズムを利用して、1つまたは複数のサブサンプル・オブジェクト(例えば、例示的なサブサンプル・オブジェクト206)の1つまたは複数の局所的特徴(例えば、クラスタまたは穴あるいはその両方)を識別することができる。例えば、ホモロジー・コンポーネント302は、最初に解析されたオブジェクト(例えば、例示的なオブジェクト202)から選択的にサンプリングされた点間の接続を表現するために、複数のシンプレックスを生成することができる。1つまたは複数のホモロジー・コンポーネント302は、定義された距離に基づいて接続を共有する1つまたは複数の単体の複合体から1つまたは複数のシンプレックス構造を構築することができる。さらに、ホモロジー・コンポーネント302は、1つまたは複数の量子重ね合わせ状態を生成して、量子回路でのエンコーディングを容易にすることができる。
1つまたは複数の実施形態では、ホモロジー・コンポーネント302は、次に示されている方程式1に基づいて、1つまたは複数の量子重ね合わせ状態(「ρ」)を生成することができる。
ここで、「S
k」は1つのシンプレックス状態を表すことができ、「|S
k><S
k|」は対象のシンプレックスの量子状態を表すことができる。
図4は、本明細書に記載された1つまたは複数の実施形態に従って、1つまたは複数のホモロジー・コンポーネント302によって生成され得る例示的な非限定的シンプレックス構造400の図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。図4に示されている例示的なシンプレックス構造400は、図2Bに示されている例示的なサブサンプル・オブジェクト206に基づいて1つまたは複数のホモロジー・コンポーネント302によって生成され得る。図4に示されているように、1つまたは複数のホモロジー・コンポーネント302は、複数の相互接続された線を介して、選択的にサンプリングされた(例えば、1つまたは複数のサブサンプル・コンポーネント112によって選択的にサンプリングされた)データ点間の接続を決定することができる。さらに、1つまたは複数のホモロジー・コンポーネント302は、サブサンプル・オブジェクト(例えば、例示的なサブサンプル・オブジェクト206)の決定された接続に基づいて1つまたは複数のトポロジーの特徴(例えば、コンポーネント、クラスタ、穴、または空間、あるいはその組み合わせ)の識別を開始できる。
図5は、本明細書に記載された1つまたは複数の実施形態に従って、行列コンポーネント502をさらに備えている例示的な非限定的システム100の図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。1つまたは複数の行列コンポーネント502は、1つまたは複数のホモロジー・コンポーネント302によって生成された量子重ね合わせ状態に基づいて、1つまたは複数のラプラシアン行列を量子オブジェクトとして生成することができる。
例えば、1つまたは複数の行列コンポーネント502は、1つまたは複数のラプラシアン行列を量子グラフのラプラシアンとして生成することができ、量子グラフのラプラシアンは、1つまたは複数の固有値を量子状態の1つまたは複数の位相にエンコードすることができる。1つまたは複数の固有値は、1つまたは複数のホモロジー・コンポーネント302によって識別された1つまたは複数のトポロジーの特徴に関連するか、またはその他の方法でそのようなトポロジーの特徴を表すか、あるいはその両方であることができる。さまざまな実施形態では、1つまたは複数の固有値が、一般的なトポロジーの特徴を特徴付けることができる(例えば、1つまたは複数の固有値は、特定のトポロジーの特徴に固有である必要はない)。それによって、1つまたは複数の行列コンポーネント502は、1つまたは複数のホモロジー・コンポーネント302によって確立されたデータの接続を介して識別されたトポロジーの特徴に関連する固有値を含んでいる1つまたは複数のラプラシアン行列を生成することができる。さらに、1つまたは複数の行列コンポーネント502は、期待値の絶対値を量子状態の位相に射影できる量子ゲートを使用することによって、固有値を量子状態の1つまたは複数の位相にエンコードすることができる。
図6は、本明細書に記載された1つまたは複数の実施形態に従って、1つまたは複数の行列コンポーネント502によって実行される量子エンコーディングの実行を容易にすることができる例示的な非限定的量子回路600の図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。
図6に示されているように、例示的な量子回路600は、1つまたは複数の第1の量子状態602(例えば、「φ」によって表される)および1つまたは複数の補助的状態604(例えば、「+」によって表される)を含むことができる。1つまたは複数の補助的状態604は、1つまたは複数の第1の量子状態602の積状態であることができる。1つまたは複数の補助的状態604は、1つまたは複数の第1の量子ゲート606を含むことができ、第1の量子ゲート606は、1つまたは複数の変動パラメータを量子コンピューティングに組み込むことができる。例えば、「σ」は、ベイズ・リスク・パラメータを表す変動パラメータであることができ、または「μ」は、最適化手順における対象の分布の平均を表す変動パラメータであることができ、あるいはその両方であることができる。1つまたは複数の第1の量子ゲート606による1つまたは複数の変動パラメータの組み込みは、1つまたは複数の量子コンピューティング・コンポーネント108によって対処されている対象の推論問題を解決することを容易にすることができる。
さらに、例示的な量子回路600は、1つまたは複数の第1の量子状態602にある1つまたは複数の第2の量子ゲート608を含むことができる。1つまたは複数の第2の量子ゲート608は、1つまたは複数の行列コンポーネント502に関して、本明細書に記載された量子エンコーディングを容易にすることができる。例えば、1つまたは複数の第2の量子ゲート608は、1つまたは複数の第1の量子状態602での1つまたは複数の位相への1つまたは複数の固有値のエンコーディングを容易にすることができる。1つまたは複数の実施形態では、1つまたは複数の第2の量子ゲート608は、特定の量子ゲート・タイプに限定されず、当業者は、適用可能な量子ゲートのタイプが対象の解析または回路構成あるいはその両方に依存する可能性があるということを認識するであろう。
図6に示されているように、1つまたは複数の補助的状態604は、1つまたは複数の第2の量子ゲート608によって容易にされる量子エンコーディングの後に測定され得る。やはり図6に示されているように、1つまたは複数の補助的状態604の測定は、古典的コンピューティング・デバイスによって実行され得る。例えば、例示的な量子回路600は、測定の表示から伸びる2本の線の描写によって、説明された古典的コンピューティングへの移行を示している。それによって、例示的な量子回路600の古典的コンピューティングの測定が実現され得る。例示的な量子回路600の反復的動作または測定あるいはその両方は、1つまたは複数のエンコードされた固有値の1つまたは複数の確率分布の生成を可能にすることができる(例えば、図6に示された式によって示されているように、「E」が、量子状態に対する古典的コンピューティングの測定の結果を表すことができる)。
図7は、本明細書に記載された1つまたは複数の実施形態に従って、1つまたは複数の古典的コンピューティング・コンポーネント702をさらに備えている例示的な非限定的システム100の図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。さまざまな実施形態では、1つもしくは複数の量子コンピューティング・コンポーネント108または1つもしくは複数の古典的コンピューティング・コンポーネント702あるいはその両方が、直接的電気接続を介して、または1つもしくは複数のネットワーク104を介して、あるいはその両方を介して、動作可能なように結合され得る。例えば、1つまたは複数の実施形態では、1つまたは複数の古典的コンピューティング・コンポーネント702が、1つまたは複数のクラウド・コンピューティング環境を介して1つまたは複数の量子コンピューティング・コンポーネント108に動作可能なように結合され得る。さらに、さまざまな実施形態では、1つまたは複数の古典的コンピューティング・コンポーネント702が、1つまたは複数のサブサンプル・コンポーネント112を備えることができる(例えば、量子コンピューティング技術または古典的コンピューティング技術あるいはその両方によって、本明細書に記載された選択的サンプリングが実行され得る)。
1つまたは複数の古典的コンピューティング・コンポーネント702は、測定コンポーネント704、サンプリング・コンポーネント706、またはベイジアン・コンポーネント708、あるいはその組み合わせを備えることができる。1つまたは複数の測定コンポーネント704は、1つまたは複数の古典的計算方法を使用して量子コンピューティング・コンポーネント108の1つまたは複数の補助的状態604を測定することができる。例えば、測定コンポーネント704は、下に示されている方程式2に従って、1つまたは複数の補助的状態604を測定することができる。
φ(θ)=across(<Ψ(θ)|H|Ψ(θ)>)
ここで、「i」は複素数値(例えば、
)を表すことができ、「k」は正則化項を表すことができ、または「H」はハミルトニアン演算子もしくはエルミート演算子を表すことができ、あるいはその組み合わせを表すことができる。1つまたは複数の実施形態では、1つまたは複数の測定コンポーネント704は、1つまたは複数の補助的状態604を繰り返し測定して、方程式2に従って1つまたは複数の確率分布を生成することができる。
1つまたは複数のサンプリング・コンポーネント706は、1つまたは複数のサンプリング・アルゴリズムを使用して、1つまたは複数の測定コンポーネント704によって生成された1つまたは複数の確率分布を解析し、1つまたは複数の事前知識の分布を更新することができる。サンプリング・アルゴリズムの例としては、ランダム・グリッド選択、ランダム散乱選択、点群選択、モンテカルロ選択、またはブースト選択、あるいはその組み合わせなどが挙げられるが、これらに限定されない。例えば、1つまたは複数の事前知識の分布は、1つまたは複数の測定コンポーネント704によって測定された1つまたは複数の補助的状態604の以前の測定結果を特徴付けることができる。当業者は、本明細書に記載された1つまたは複数の解析が、多種多様な一般的事前知識の分布に対応できるということを容易に認識するであろう。
1つまたは複数のベイジアン・コンポーネント708は、1つまたは複数の事前知識の分布および1つまたは複数の確率分布に基づいて、1つまたは複数のベイジアン学習アルゴリズムを生成することができる。
さらに、1つまたは複数のベイジアン・コンポーネント708は、1つまたは複数のベイジアン学習アルゴリズムを使用して1つまたは複数のベッティ数を推論することができる。1つまたは複数のベッティ数は、1つまたは複数の量子コンピューティング・コンポーネント108によって識別されたか、またはエンコードされたか、あるいはその両方である1つまたは複数のトポロジーの特徴に関することができる。下の方程式3は、1つもしくは複数のベイジアン・コンポーネント708によって生成されるか、または1つもしくは複数のベッティ数を推論するために利用されるか、あるいはその両方が可能である例示的なベイジアン学習アルゴリズムを特徴付けることができる。
ここで、「P(φ)」は1つまたは複数の事前知識の分布を表すことができる。
それによって、1つまたは複数の古典的コンピューティング・コンポーネント702は、事前知識を1つまたは複数のベッティ数の推論に組み込むことができ、これらのベッティ数は、条件付き確率によって、システム100による解析の対象になるオブジェクト(例えば、例示的なオブジェクト202)のトポロジーの特徴を表すことができる。さらに、1つまたは複数の古典的コンピューティング・コンポーネント702は、1つまたは複数の推論されたベッティ数を1つまたは複数の量子コンピューティング・コンポーネント108と共有し、1つまたは複数の量子コンピューティング・コンポーネント108およびそれらに関連するコンポーネントによって実行されるその後の解析の反復において、1つまたは複数の永続的ホモロジー・アルゴリズムをさらに改良することができる。したがって、1つまたは複数の量子コンピューティング・コンポーネント108によって実現される計算は、1つまたは複数の古典的コンピューティング・コンポーネント702によって実現される1つまたは複数の計算の基礎を形成することができ、フィードバックループにおいて、その逆のことを行うことができる。このフィードバックループは、推論されたベッティ数に関する収束に達するまで、または(例えば、1つまたは複数の入力デバイス106を介して)システム100のユーザによって定義された回数の間、あるいはその両方の間、繰り返すことができる。それによって、システム100は、1つまたは複数の複雑なデータセットによって特徴付けられたオブジェクトのさまざまなトポロジーの特徴を、量子コンピューティングおよび古典的コンピューティングの混成によって分類することができ、この混成は、事前知識を組み込んで、1つまたは複数の解析プロセスを改良することができる。
図8Aは、本明細書に記載された1つまたは複数の実施形態に従って、1つまたは複数の古典的コンピューティング・コンポーネント702によって実行され得るベッティ数の推論を表すことができる例示的な非限定的グラフ800の図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。グラフ800は、図4に示されている例示的なシンプレックス構造400に基づいて、1つまたは複数の古典的コンピューティング・コンポーネント702によって生成され得る。図8に示されているように、「b0」は、例示的なシンプレックス構造400から識別された、接続されたコンポーネントの数を表すことができる。例えば、古典的コンピューティング・コンポーネント702は、1つまたは複数の量子コンピューティング・コンポーネント108によって解析されたオブジェクト(例えば、例示的なオブジェクト202)が1つの接続されたコンポーネントを含むということを推論することができる。
図8Bは、本明細書に記載された1つまたは複数の実施形態に従って、1つまたは複数の古典的コンピューティング・コンポーネント702によって実行され得る別のベッティ数の推論を表すことができる例示的な非限定的グラフ802の図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。グラフ802も、図4に示されている例示的なシンプレックス構造400に基づいて、1つまたは複数の古典的コンピューティング・コンポーネント702によって生成され得る。図8に示されているように、「b1」は、例示的なシンプレックス構造400から識別された穴の数を表すことができる。例えば、古典的コンピューティング・コンポーネント702は、1つまたは複数の量子コンピューティング・コンポーネント108によって解析されたオブジェクト(例えば、例示的なオブジェクト202)が0個の穴を含むということを推論することができる。
図9は、本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング技術および古典的コンピューティング技術の混成を使用して複雑なデータセットの1つまたは複数のトポロジー分類を容易にすることができる例示的な非限定的方法900のフロー図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。
902で、方法900は、1つまたは複数のプロセッサ120に動作可能なように結合されたシステム100によって、1つまたは複数のラプラシアン行列の1つまたは複数の固有値を量子回路(例えば、例示的な量子回路600)の量子状態(例えば、1つまたは複数の第1の量子状態602)での1つまたは複数の位相にエンコードすることを含むことができる。例えば、エンコードすることは、本明細書に記載された1つまたは複数の量子コンピューティング・コンポーネント108のさまざまな機能に従って実行され得る。例えば、902でエンコードすることは、オブジェクトを選択的にサンプリングすること、1つもしくは複数の永続的ホモロジー・アルゴリズムによってサブオブジェクトを特徴付けること、1つもしくは複数のシンプレックス構造を構築すること、または1つもしくは複数のラプラシアン行列を生成すること、あるいはその組み合わせを含むことができる。
904で、方法900は、システム100によって、量子回路(例えば、例示的な量子回路600)の1つまたは複数の補助的状態(例えば、例示的な補助的状態604)を測定することにより、1つまたは複数のベイジアン学習アルゴリズムを使用して1つまたは複数のベッティ数を推論することを含むことができる。例えば、推論することは、本明細書に記載された1つまたは複数の古典的コンピューティング・コンポーネント702のさまざまな機能に従って実行され得る。例えば、904で推論することは、1つもしくは複数の補助的状態を測定すること、1つもしくは複数の確率分布を生成すること、1つもしくは複数の事前知識の分布の生成もしくは更新もしくはその両方を実行すること、または事前知識を組み込む条件付き確率技術(例えば、1つもしくは複数のベイジアン学習アルゴリズム)を使用して1つもしくは複数のベッティ数を推論すること、あるいはその組み合わせを含むことができる。
図10は、本明細書に記載された1つまたは複数の実施形態に従って、量子コンピューティング技術および古典的コンピューティング技術の混成を使用して複雑なデータセットの1つまたは複数のトポロジー分類を容易にすることができる例示的な非限定的方法1000のフロー図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。
1002で、方法1000は、1つまたは複数のプロセッサ120に動作可能なように結合されたシステム100によって、1つまたは複数のオブジェクトを選択的にサンプリングすることにより、1つまたは複数のサブサンプル・オブジェクトを生成することを含むことができる。例えば、1つまたは複数のサブサンプル・オブジェクトを生成することは、本明細書に記載された1つまたは複数のサブサンプル・コンポーネント112のさまざまな機能に従って実行され得る。例えば、1002で生成することは、1つまたは複数の点群を使用して実行され得る。
1004で、方法1000は、システム100によって1つまたは複数の永続的ホモロジー・アルゴリズムを使用して1つまたは複数のサブサンプル・オブジェクトを特徴付け、1つまたは複数の量子重ね合わせ状態を生成することを含むことができる。例えば、1つまたは複数のサブサンプル・オブジェクトを特徴付けることは、本明細書に記載された1つまたは複数のホモロジー・コンポーネント302のさまざまな機能に従って実行され得る。例えば、1004で特徴付けることは、1つまたは複数のシンプレックス構造を生成して、1つまたは複数のサブサンプル・オブジェクトの接続を識別することを含むことができる。
1006で、方法1000は、システム100によって、1つまたは複数の量子重ね合わせ状態に基づいて1つまたは複数のラプラシアン行列を1つまたは複数の量子オブジェクトとして生成することを含むことができる。例えば、1つまたは複数のラプラシアン行列を生成することは、本明細書に記載された1つまたは複数の行列コンポーネント502のさまざまな機能に従って実行され得る。例えば、1つまたは複数のラプラシアン行列は、1004での特徴付けの間に識別された1つまたは複数のトポロジーの特徴に関する1つまたは複数の固有値を含むことができる。
1008で、方法1000は、システム100によって、1つまたは複数のラプラシアン行列の1つまたは複数の固有値を1つまたは複数の量子回路の1つまたは複数の量子状態での1つまたは複数の位相にエンコードすることを含むことができる。例えば、1つまたは複数の固有値をエンコードすることは、1つまたは複数の量子コンピューティング・コンポーネント108のさまざまな機能に従って(例えば、1つまたは複数の行列コンポーネント502によって)実行され得る。さまざまな実施形態では、量子回路は、1つまたは複数の固有値を使用してエンコードされた1つまたは複数の量子状態の積状態であることができる、1つまたは複数の補助的状態を含むことができる。
1010で、方法1000は、システム100によって、量子回路の1つまたは複数の補助的状態を繰り返し測定することを含むことができる。例えば、測定することは、本明細書に記載された1つまたは複数の測定コンポーネント704のさまざまな機能に従って実行され得る。1010で繰り返される測定は、説明された1つまたは複数の古典的計算に、対象の量子回路を提供することができる。例えば、1012で、方法1000は、システム100によって1010で繰り返される測定に基づいて1つまたは複数の確率分布を生成することを含むことができる。
1014で、方法1000は、システム100によって1つまたは複数のモンテカルロ・サンプリング・アルゴリズムを使用して1つまたは複数の確率分布を解析し、1つまたは複数の事前知識の分布を更新することを含むことができる。例えば、解析することは、本明細書に記載された1つまたは複数のサンプリング・コンポーネント706のさまざまな機能に従って実行され得る。1つまたは複数の実施形態では、モンテカルロ・サンプリング・アルゴリズムは、(例えば、ノイズ低減によって)1つまたは複数の事前知識の分布を改良することを容易にすることができる。
1016で、方法1000は、システム100によって、1つもしくは複数の事前知識の分布または1つもしくは複数の確率分布あるいはその両方に基づいて、1つまたは複数のベイジアン学習アルゴリズムを生成することを含むことができる。例えば、1つまたは複数のベイジアン学習アルゴリズムを生成することは、本明細書に記載された1つまたは複数のベイジアン・コンポーネント708のさまざまな機能に従って実行され得る。例えば、1016で生成された1つまたは複数のベイジアン学習アルゴリズムは、方程式3によって特徴付けられ得る。
1018で、方法1000は、システム100によって、1016で生成された1つまたは複数のベイジアン学習アルゴリズムを使用して1つまたは複数のベッティ数を推論することを含むことができる。例えば、1つまたは複数のベッティ数を推論することは、本明細書に記載された1つまたは複数の古典的コンピューティング・コンポーネント702のさまざまな機能に従って(例えば、1つまたは複数のベイジアン・コンポーネント708によって)実行され得る。それによって、1つまたは複数のベッティ数の推論は、1つもしくは複数の量子回路の1つもしくは複数の補助的状態の1つもしくは複数の測定に基づくことができ、または1つもしくは複数の事前知識の分布を組み込んで精度もしくは効率またはその両方を向上させることができ、あるいはその両方であることができる。
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された教示の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。むしろ、本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
特徴は、次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合無制限であり、任意の量をいつでも購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
サービス・モデルは、次のとおりである。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
ここで図11を参照すると、例示的なクラウド・コンピューティング環境1100が示されている。図示されているように、クラウド・コンピューティング環境1100は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)もしくは携帯電話1104、デスクトップ・コンピュータ1106、ラップトップ・コンピュータ1108、または自動車コンピュータ・システム1110、あるいはその組み合わせなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード1102を含んでいる。ノード1102は、互いに通信してよい。ノード910は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境1100は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組み合わせを提供できる。図11に示されたコンピューティング・デバイス1104~1110の種類は、例示のみが意図されており、コンピューティング・ノード1102およびクラウド・コンピューティング環境1100は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
ここで図12を参照すると、クラウド・コンピューティング環境1100(図11)によって提供される機能的抽象レイヤのセットが示されている。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。図12に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ1202は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム1204、RISC(Reduced Instruction Set Computer)アーキテクチャ・ベースのサーバ1206、サーバ1208、ブレード・サーバ1210、ストレージ・デバイス1212、ならびにネットワークおよびネットワーク・コンポーネント1214が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア1216およびデータベース・ソフトウェア1218を含む。
仮想化レイヤ1220は、仮想サーバ1222、仮想ストレージ1224、仮想プライベート・ネットワークを含む仮想ネットワーク1226、仮想アプリケーションおよびオペレーティング・システム1228、ならびに仮想クライアント1230などの仮想的実体を提供できる抽象レイヤを備える。
一例を挙げると、管理レイヤ1232は、以下で説明される機能を提供することができる。リソース・プロビジョニング1234は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定1236は、クラウド・コンピューティング環境内でリソースが利用された際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル1238は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理1240は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理とを行う。サービス水準合意(SLA:Service Level Agreement)計画および実行1242は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
ワークロード・レイヤ1244は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション1246、ソフトウェア開発およびライフサイクル管理1248、仮想クラスルーム教育の配信1250、データ解析処理1252、トランザクション処理1254、およびトポロジー分類1256が挙げられる。本発明のさまざまな実施形態は、図11および12を参照して説明されたクラウド・コンピューティング環境を利用して、1つまたは複数のコンポーネント間(例えば、1つまたは複数の量子コンピューティング・コンポーネント108、古典的コンピューティング・コンポーネント702、または入力デバイス106、あるいはその組み合わせの間)で通信すること、または複雑なデータセットからのベッティ数の事前知識の推論を容易にすること、あるいはその両方を行うことができる。
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェア・ベースのシステムによって実装され得るということにも注意する。
開示される対象のさまざまな態様の背景を提供するために、図13および以下の説明は、開示される対象のさまざまな態様が実装され得る適切な環境の概要を示すよう意図されている。図13は、本明細書に記載された1つまたは複数の実施形態を容易にすることができる例示的な非限定的動作環境のブロック図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されている。図13を参照すると、本開示のさまざまな態様を実装するための適切な動作環境1300は、コンピュータ1312を含むことができる。コンピュータ1312は、処理ユニット1314、システム・メモリ1316、およびシステム・バス1318を含むこともできる。システム・バス1318は、システム・メモリ1316を含むが、これに限定されないシステム・コンポーネントを、処理ユニット1314に動作可能なように結合することができる。処理ユニット1314は、さまざまな使用可能なプロセッサのいずれかであることができる。デュアル・マイクロプロセッサおよびその他のマルチプロセッサ・アーキテクチャが、処理ユニット1314として採用されてもよい。システム・バス1318は、ISA(Industry Standard Architecture)、MCA(Micro Channel Architecture)、EISA(Enhanced ISA)、IDE(Intelligent Drive Electronics)、VESAローカル・バス(VLB:VESA Local Bus)、PCI(Peripheral Component Interconnects)、カード・バス、ユニバーサル・シリアル・バス(USB:Universal Serial Bus)、AGP(Advanced Graphics Port)、FireWire、および小型コンピュータ・システム・インターフェイス(SCSI:Small Computer Systems Interface)を含むが、これらに限定されない、任意のさまざまな使用可能なバス・アーキテクチャを使用する、メモリ・バスもしくはメモリ・コントローラ、ペリフェラル・バスもしくは外部バス、またはローカル・バス、あるいはその組み合わせを含む、複数の種類のバス構造のいずれかであることができる。システム・メモリ1316は、揮発性メモリ1320および不揮発性メモリ1322を含むこともできる。起動中などにコンピュータ1312内の要素間で情報を転送するための基本ルーチンを含む基本入出力システム(BIOS:basic input/output system)が、不揮発性メモリ1322に格納され得る。不揮発性メモリ1322の例としては、読み取り専用メモリ(ROM:read only memory)、プログラマブルROM(PROM:programmable ROM)、電気的プログラマブルROM(EPROM:electrically programmable ROM)、電気的消去可能プログラマブルROM(EEPROM:electrically erasable programmable ROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM:random access memory)(例えば、強誘電体RAM(FeRAM:ferroelectric RAM))が挙げられるが、これらに限定されない。揮発性メモリ1320は、外部キャッシュ・メモリとして機能するランダム・アクセス・メモリ(RAM)を含むこともできる。例えばRAMは、スタティックRAM(SRAM:static RAM)、ダイナミックRAM(DRAM:dynamic RAM)、シンクロナスDRAM(SDRAM:synchronous DRAM)、ダブル・データ・レートSDRAM(DDR SDRAM:double data rate SDRAM)、拡張SDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM:Synchlink DRAM)、ダイレクト・ラムバスRAM(DRRAM:direct Rambus RAM)、ダイレクト・ラムバス・ダイナミックRAM(DRDRAM:direct Rambus dynamic RAM)、およびラムバス・ダイナミックRAMなどの、ただしこれらに限定されない、多くの形態で利用可能である。
コンピュータ1312は、取り外し可能/取り外し不可能な揮発性/不揮発性のコンピュータ・ストレージ媒体を含むこともできる。例えば図13は、ディスク・ストレージ1324を示している。ディスク・ストレージ1324は、磁気ディスク・ドライブ、フロッピー(R)・ディスク・ドライブ、テープ・ドライブ、Jazドライブ、Zipドライブ、LS-100ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックなどの、ただしこれらに限定されない、デバイスを含むこともできる。ディスク・ストレージ1324は、コンパクト・ディスクROMデバイス(CD-ROM:compact disk ROM device)、記録可能CDドライブ(CD-Rドライブ:CD recordable drive)、再書き込み可能CDドライブ(CD-RWドライブ:CD rewritable drive)、またはデジタル多用途ディスクROMドライブ(DVD-ROM:digital versatile disk ROM drive)などの光ディスク・ドライブを含むが、これらに限定されないストレージ媒体を、別々に、または他のストレージ媒体と組み合わせて、含むこともできる。システム・バス1318へのディスク・ストレージ1324の接続を容易にするために、インターフェイス1326などの、取り外し可能または取り外し不可能なインターフェイスが使用され得る。図13は、ユーザと、適切な動作環境1300において説明された基本的なコンピュータ・リソースとの間の仲介として機能できるソフトウェアも示している。そのようなソフトウェアは、例えば、オペレーティング・システム1328を含むこともできる。ディスク・ストレージ1324に格納できるオペレーティング・システム1328は、コンピュータ1312のリソースを制御し、割り当てるように動作する。システムのアプリケーション1330は、例えばシステム・メモリ1316またはディスク・ストレージ1324のいずれかに格納されたプログラム・モジュール1332およびプログラム・データ1334を介して、オペレーティング・システム1328によるリソースの管理を利用することができる。さまざまなオペレーティング・システムまたはオペレーティング・システムの組み合わせを使用して本開示が実装され得るということが、理解されるべきである。ユーザは、1つまたは複数の入力デバイス1336を介して、コマンドまたは情報をコンピュータ1312に入力する。入力デバイス1336は、マウス、トラックボール、スタイラス、タッチ・パッド、キーボード、マイクロホン、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナ、TVチューナー・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、Webカメラなどのポインティング・デバイスを含むことができるが、これらに限定されない。これらおよびその他の入力デバイスは、1つまたは複数のインターフェイス・ポート1338を介してシステム・バス1318を通り、処理ユニット1314に接続することができる。1つまたは複数のインターフェイス・ポート1338は、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス(USB)を含むことができる。1つまたは複数の出力デバイス1340は、入力デバイス1336と同じ種類のポートの一部を使用できる。このようにして、例えば、USBポートを使用して、入力をコンピュータ1312に提供し、コンピュータ1312から出力デバイス1340に情報を出力できる。出力アダプタ1342は、特殊なアダプタを必要とする出力デバイス1340の中でも特に、モニタ、スピーカ、およびプリンタのような何らかの出力デバイス1340が存在することを示すために提供され得る。出力アダプタ1342の例としては、出力デバイス1340とシステム・バス1318の間の接続の手段を提供するビデオ・カードおよびサウンド・カードが挙げられるが、これらに限定されない。1つまたは複数のリモート・コンピュータ1344などの、その他のデバイスまたはデバイスのシステムあるいはその両方が、入力機能および出力機能の両方を提供するということに、注意するべきである。
コンピュータ1312は、リモート・コンピュータ1344などの1つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境内で動作できる。リモート・コンピュータ1344は、コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサ・ベースの機器、ピア・デバイス、またはその他の一般的なネットワーク・ノードなどであることができ、通常は、コンピュータ1312に関連して説明された要素の多くまたはすべてを含むこともできる。簡潔にするために、メモリ・ストレージ・デバイス1346のみが、リモート・コンピュータ1344と共に示されている。リモート・コンピュータ1344は、ネットワーク・インターフェイス1348を介してコンピュータ1312に論理的に接続されてから、通信接続1350を介して物理的に接続され得る。さらに、動作は、複数の(ローカルまたはリモートの)システムにわたって分散され得る。ネットワーク・インターフェイス1348は、ローカル・エリア・ネットワーク(LAN:local-area networks)、広域ネットワーク(WAN:wide-area networks)、セルラー・ネットワークなどの、有線通信ネットワークまたは無線通信ネットワークあるいはその両方を包含できる。LAN技術は、光ファイバ分散データ・インターフェイス(FDDI:Fiber Distributed Data Interface)、銅線分散データ・インターフェイス(CDDI:Copper Distributed Data Interface)、イーサネット(R)、トークン・リングなどを含む。WAN技術は、ポイントツーポイント・リンク、総合デジタル通信網(ISDN:Integrated Services Digital Networks)およびその変形などの回路交換網、パケット交換網、およびデジタル加入者回線(DSL:Digital Subscriber Lines)を含むが、これらに限定されない。1つまたは複数の通信接続1350は、ネットワーク・インターフェイス1348をシステム・バス1318に接続するために採用されたハードウェア/ソフトウェアのことを指す。通信接続1350は、説明を明確にするために、コンピュータ1312内に示されているが、コンピュータ1312の外部に存在することもできる。ネットワーク・インターフェイス1348に接続するためのハードウェア/ソフトウェアは、単に例示の目的で、通常の電話の等級のモデム、ケーブル・モデム、およびDSLモデムを含むモデム、ISDNアダプタ、ならびにイーサネット(R)・カードなどの、内部および外部の技術を含むこともできる。
本発明の実施形態は、任意の可能な統合の技術的詳細レベルで、システム、方法、装置、またはコンピュータ・プログラム製品、あるいはその組み合わせであることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含むことができる。コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含むこともできる。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを含むことができる。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。本発明のさまざまな態様の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであることができる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われ得る。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであることができる。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を含むように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであることもできる。コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込むこともでき、それによって、一連の操作可能な動作を、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を含んでいる、命令のモジュール、セグメント、または部分を表すことができる。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生することができる。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェア・ベースのシステムによって実装され得るということにも注意する。
上記では、1つのコンピュータまたは複数のコンピュータあるいはその両方で実行されるコンピュータ・プログラム製品のコンピュータ実行可能命令との一般的な関連において、対象が説明されたが、当業者は、本開示がその他のプログラム・モジュールと組み合わせられるか、またはその他のプログラム・モジュールと組み合わせて実装され得るということを認識するであろう。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するか、あるいはその両方を行うルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者は、本発明のコンピュータ実装方法が、シングルプロセッサ・コンピュータ・システムまたはマルチプロセッサ・コンピュータ・システム、ミニコンピューティング・デバイス、メインフレーム・コンピュータ、コンピュータ、ハンドヘルド・コンピューティング・デバイス(例えば、PDA、電話)、マイクロプロセッサ・ベースまたはプログラム可能な家庭用電化製品または産業用電子機器などを含む、その他のコンピュータ・システム構成を使用して実践され得るということを理解するであろう。示された態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境内で実践されてもよい。ただし、本開示の態様の全部ではないとしても一部は、スタンドアロン・コンピュータ上で実践され得る。分散コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートの両方のメモリ・ストレージ・デバイスに配置され得る。
本出願において使用されるとき、「コンポーネント」、「システム」、「プラットフォーム」、「インターフェイス」などの用語は、1つまたは複数の特定の機能を含むコンピュータ関連の実体または操作可能なマシンに関連する実体を指すことができるか、またはそれらの実体を含むことができるか、あるいはその両方が可能である。本明細書で開示された実体は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかであることができる。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、またはコンピュータ、あるいはその組み合わせであることができるが、これらに限定されない。例として、サーバ上で実行されるアプリケーションおよびサーバの両方が、コンポーネントであることができる。1つまたは複数のコンポーネントが、プロセス内または実行のスレッド内あるいはその両方に存在することができ、コンポーネントは、1つのコンピュータ上に局在するか、または2つ以上のコンピュータ間で分散されるか、あるいはその両方が可能である。別の例では、各コンポーネントは、さまざまなデータ構造が格納されているさまざまなコンピュータ可読媒体から実行できる。コンポーネントは、1つまたは複数のデータ・パケット(例えば、ローカル・システム内または分散システム内の別のコンポーネントと情報をやりとりするか、またはインターネットなどのネットワークを経由して、信号を介して他のシステムと情報をやりとりするか、あるいはその両方によって情報をやりとりする、1つのコンポーネントからのデータ)を含んでいる信号などに従って、ローカルまたはリモートあるいはその両方のプロセスを介して通信できる。別の例として、コンポーネントは、電気または電子回路によって操作される機械的部品によって提供される特定の機能を有する装置であることができ、プロセッサによって実行されるソフトウェア・アプリケーションまたはファームウェア・アプリケーションによって操作される。そのような場合、プロセッサは、装置の内部または外部に存在することができ、ソフトウェア・アプリケーションまたはファームウェア・アプリケーションの少なくとも一部を実行できる。さらに別の例として、コンポーネントは、機械的部品を含まない電子コンポーネントを介して特定の機能を提供する装置であることができ、それらの電子コンポーネントは、電子コンポーネントの機能の少なくとも一部を与えるソフトウェアまたはファームウェアを実行するためのプロセッサまたはその他の手段を含むことができる。1つの態様では、コンポーネントは、例えばクラウド・コンピューティング・システム内で、仮想マシンを介して電子コンポーネントをエミュレートすることができる。
加えて、「または」という用語は、排他的論理和ではなく、包含的論理和を意味するよう意図されている。すなわち、特に指定されない限り、または文脈から明らかでない限り、「XがAまたはBを採用する」は、自然な包含的順列のいずれかを意味するよう意図されている。すなわち、XがAを採用するか、XがBを採用するか、またはXがAおよびBの両方を採用する場合、「XがAまたはBを採用する」が、前述の事例のいずれかにおいて満たされる。さらに、本明細書および添付の図面において使用される冠詞「a」および「an」は、単数形を対象にすることが特に指定されない限り、または文脈から明らかでない限り、「1つまたは複数」を意味すると一般に解釈されるべきである。本明細書において使用されるとき、「例」または「例示的」あるいはその両方の用語は、例、事例、または実例となることを意味するために使用される。誤解を避けるために、本明細書で開示された対象は、そのような例によって制限されない。加えて、「例」または「例示的」あるいはその両方として本明細書に記載された任意の態様または設計は、他の態様または設計よりも好ましいか、または有利であると必ずしも解釈されず、当業者に知られている同等の例示的な構造および技術を除外するよう意図されていない。
本明細書において使用されるとき、「プロセッサ」という用語は、シングルコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるシングルプロセッサと、マルチコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるマルチコア・プロセッサと、ハードウェアのマルチスレッド技術を備えるマルチコア・プロセッサと、並列プラットフォームと、分散共有メモリを備える並列プラットフォームとを含むが、これらに限定されない、実質的に任意の計算処理ユニットまたはデバイスを指すことができる。さらに、プロセッサは、集積回路、特定用途向け集積回路(ASIC:application specific integrated circuit)、デジタル信号プロセッサ(DSP:digital signal processor)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、プログラマブル・ロジック・コントローラ(PLC:programmable logic controller)、複合プログラム可能論理デバイス(CPLD:complex programmable logic device)、個別のゲートまたはトランジスタ論理、個別のハードウェア・コンポーネント、あるいは本明細書に記載された機能を実行するように設計されたこれらの任意の組み合わせを指すことができる。さらに、プロセッサは、空間利用を最適化し、ユーザ機器の性能を向上するために、分子および量子ドット・ベースのトランジスタ、スイッチ、およびゲートなどの、ただしこれらに限定されない、ナノスケール・アーキテクチャを利用することができる。プロセッサは、計算処理ユニットの組み合わせとして実装されてもよい。本開示では、コンポーネントの動作および機能に関連する「ストア」、「ストレージ」、「データ・ストア」、「データ・ストレージ」、「データベース」、および実質的に任意のその他の情報格納コンポーネントなどの用語は、「メモリ・コンポーネント」、「メモリ」内に具現化された実体、またはメモリを含んでいるコンポーネントを指すために使用される。本明細書に記載されたメモリまたはメモリ・コンポーネントあるいはその両方が、揮発性メモリまたは不揮発性メモリのいずれかであることができ、あるいは揮発性メモリおよび不揮発性メモリの両方を含むことができるということが、理解されるべきである。不揮発性メモリの例としては、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能ROM(EEPROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(例えば、強誘電体RAM(FeRAM))が挙げられるが、これらに限定されない。揮発性メモリは、例えば外部キャッシュ・メモリとして機能できる、RAMを含むことができる。例えばRAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM:synchronous DRAM)、ダブル・データ・レートSDRAM(DDR SDRAM:double data rate SDRAM)、拡張SDRAM(ESDRAM:enhanced SDRAM)、シンクリンクDRAM(SLDRAM:Synchlink DRAM)、ダイレクト・ラムバスRAM(DRRAM:direct Rambus RAM)、ダイレクト・ラムバス・ダイナミックRAM(DRDRAM:direct Rambus dynamic RAM)、およびラムバス・ダイナミックRAM(RDRAM:Rambus dynamic RAM)などの、ただしこれらに限定されない、多くの形態で利用可能である。さらに、本明細書において開示されたシステムまたはコンピュータ実装方法のメモリ・コンポーネントは、これらおよび任意のその他の適切な種類のメモリを含むが、これらに限定されない、メモリを含むよう意図されている。
前述した内容は、システム、コンピュータ・プログラム製品、およびコンピュータ実装方法の単なる例を含んでいる。当然ながら、本開示を説明する目的で、コンポーネント、製品、またはコンピュータ実装方法、あるいはその組み合わせの考えられるすべての組み合わせについて説明することは不可能であるが、当業者は、本開示の多くのその他の組み合わせおよび並べ替えが可能であるということを認識できる。さらに、「含む」、「有する」、「所有する」などの用語が、発明を実施するための形態、特許請求の範囲、付録、および図面において使用される範囲では、それらの用語は、「備えている」が特許請求における暫定的な用語として使用されるときに解釈されるような、用語「備えている」と同様の方法で、包含的であるよう意図されている。さまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択された。