(57)【特許請求の範囲】
【請求項１】
入力されたストリームデータの中の圧縮対象となるビット列を量子的に重ね合わせたデータを配信するために量子通信を介して配信された複数のデータのテンソル積を受付けると、複数の値の重ね合わせ状態を保持することができる量子ビットを操作して、当該テンソル積を保持し、
提供対象となるデータの条件に基づいて、前記データのテンソル積から前記条件を満たすデータを抽出するユニタリ行列を生成し、
前記生成したユニタリ行列を用いて、前記データのテンソル積から前記条件を満たすデータを抽出する
ことを特徴とする情報処理装置。 
【請求項２】
入力されたストリームデータの中の圧縮対象となるビット列を量子的に重ね合わせたデータを配信するために複数の値の重ね合わせ状態を保持することができる量子ビットを操作して、連続して配信されるデータのテンソル積を生成し、
量子通信を介して、生成したテンソル積を送信する
情報提供装置と、
前記量子通信を介して、前記テンソル積を受付けると、複数の値の重ね合わせ状態を保持することができる量子ビットを操作して、当該テンソル積を保持し、
提供対象となるデータの条件に基づいて、前記データのテンソル積から前記条件を満たすデータを抽出するユニタリ行列を生成し、
前記生成したユニタリ行列を用いて、前記データのテンソル積から前記条件を満たすデータを抽出する
情報処理装置と、
を有することを特徴とする情報処理システム。 
【請求項３】
前記情報提供装置は、
前記受け付けたデータを所定長のビット列に分割し、
前記所定長のビット列に含まれる各ビットの値を各次元の値とするベクトルのテンソル積を生成する
ことを特徴とする請求項２に記載の情報処理システム。 
【請求項４】
前記情報提供装置は、
時系列順に連続して配信される１つ又は複数のデータを受け付け、
受け付けた各データのテンソル積を生成する
ことを特徴とする請求項２または３に記載の情報処理システム。 
【請求項５】
受け付けた条件を満たすデータを出力する情報処理装置が、
入力されたストリームデータの中の圧縮対象となるビット列を量子的に重ね合わせたデータを配信するために量子通信を介して配信された複数のデータのテンソル積を受付けると、複数の値の重ね合わせ状態を保持することができる量子ビットを操作して、当該テンソル積を保持し、
提供対象となるデータの条件に基づいて、前記データのテンソル積から前記条件を満たすデータを抽出するユニタリ行列を生成し、
前記生成したユニタリ行列を用いて、前記データのテンソル積から前記条件を満たすデータを抽出する
ことを特徴とする情報処理方法。 
【請求項６】
受け付けた条件を満たすデータを出力する情報処理装置が有するコンピュータに、
入力されたストリームデータの中の圧縮対象となるビット列を量子的に重ね合わせたデータを配信するために量子通信を介して配信された複数のデータのテンソル積を受付けると、複数の値の重ね合わせ状態を保持することができる量子ビットを操作して、当該テンソル積を保持し、
提供対象となるデータの条件に基づいて、前記データのテンソル積から前記条件を満たすデータを抽出するユニタリ行列を生成し、
前記生成したユニタリ行列を用いて、前記データのテンソル積から前記条件を満たすデータを抽出する
処理を実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
近年、動画像データや音声データのみならず、電子商取引のデータや物流管理データ、の時系列データ等の順序性があるデータ（以下、ストリームデータと記載する。）をリアルタイムに処理する技術が求められている。例えば、過去に受信したストリームデータを保持しておき、検索対象となるデータの条件を受信した場合には、その時点までの間に保持されたストリームデータから条件を満たすデータを検索し、検索結果を出力する一括処理が知られている。しかしながら、このような一括処理では、保持するストリームデータの量が増大するに従って、処理に要する時間が増大してしまう。
【０００３】
一方で、量子力学的な状態の重ね合わせを用いることで、従来の計算装置では実現できない規模の並列性を実現する量子計算の技術が研究されている。例えば、このような量子計算の技術として、複数の入力を重ね合わせ状態とすることで、所定の条件に対する最適解や入力された情報が有する周期等を従来の計算装置よりも高速に求める技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５３５４２３３号公報
【非特許文献】
【０００５】
【非特許文献１】「量子力学を使った情報処理」、加藤  豪、人工知能  2014年  05月号
【非特許文献２】「データストリームのためのマイニング技術」、有村  博紀、  喜田  拓也、情報処理,  46(1):  4-11
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ストリームデータを処理する量子計算の手法については、これまで提案されていなかった。このため、ストリームデータの処理には、多くの時間や計算資源が必要である。
【０００７】
本願は、上記に鑑みてなされたものであって、ストリームデータの量が増大した場合にも、処理に要する時間の増大を軽減する情報処理装置、情報処理システム、情報処理方法および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本願に係る情報処理装置は、量子通信を介して配信対象となる複数のデータのテンソル積を受付けると、複数の値の重ね合わせ状態を保持することができる量子ビットを操作して、当該テンソル積を保持し、提供対象となるデータの条件に基づいて、前記データのテンソル積から前記条件を満たすデータを抽出するユニタリ行列を生成し、前記生成したユニタリ行列を用いて、前記データのテンソル積から前記条件を満たすデータを抽出することを特徴とする。
【発明の効果】
【０００９】
実施形態の一態様によれば、ストリームデータの量が増大した場合にも、処理に要する時間の増大を軽減できるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態に係る情報提供処理の一例を示す図である。
【図２】図２は、実施形態に係る情報提供装置が有する機能構成の一例を示す図である。
【図３】図３は、実施形態に係る端末装置が有する機能構成の一例を示す図である。
【図４】図４は、実施形態に係る情報提供装置が実行する処理の一例を説明する図である。
【図５】図５は、実施形態にかかる情報提供装置が実行する保持処理の流れを示すフローチャートである。
【図６】図６は、実施形態にかかる情報提供装置が実行する情報提供処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、本願に係る情報処理装置、情報処理システム、情報処理方法および情報処理プログラムを実施するための形態（以下、「実施形態」と記載する。）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理システム、情報処理方法および情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
〔実施形態〕
【００１２】
〔１．情報提供処理〕
まず、図１を用いて、情報処理装置の一例である端末装置２０と、情報提供装置１０とを有する情報処理システム１の一例について説明する。図１は、実施形態に係る情報提供処理の一例を示す図である。図１では、入力されたストリームデータを量子的に重ね合わせたデータを配信する情報提供装置１０と、配信されたデータから検索対象データを検索して提供する端末装置２０の一例について説明する。
【００１３】
図１に示すように、情報提供装置１０は、図示しないネットワーク（例えば、インターネット）を介して、端末装置２０と通信可能に接続される。より具体的には、情報提供装置１０と端末装置２０とは、固有状態の重ね合わせを壊す事無く送受信可能な量子通信が可能である。
【００１４】
また、情報提供装置１０は、後述する情報処理装置３０から時系列順に配信されるデータ（以下、ストリームデータ１００と記載する）の配信を受け付ける。なお、以下の説明では、ストリームデータ１００には、複数のストリームデータＡ〜Ｃが含まれる例について説明するが、情報提供装置１０は、任意の数のストリームデータ１００の配信を受け付けることができる。
【００１５】
端末装置２０は、ストリームデータ１００を用いて、各種の処理を実行する装置であり、サーバ装置やクラウドシステム、利用者が使用する情報処理装置等により実現される。例えば、端末装置２０は、ストリームデータ１００からデータの検索を行う場合は、情報提供装置１０からストリームデータ１００を受信し、受信したストリームデータから検索対象となるデータを検索する。そして、端末装置２０は、検索したデータを用いて、各種の処理を実行する。
【００１６】
情報提供装置１０は、配信されたストリームデータ１００を保持する。そして、情報提供装置１０は、端末装置２０から要求があった場合に、ストリームデータ１００を端末装置１０に送信する。
【００１７】
ここで、保持したストリームデータ１００のデータ量が少ない場合には、データの検索にあまり時間がかからないため、端末装置２０は、検索クエリに対する検索結果を迅速に取得することができる。しかしながら、ストリームデータ１００のデータ量が増大するにしたがって、処理に要する時間や計算資源が増大してしまう。この結果、端末装置２０は、検索結果を迅速に提供することができない。
【００１８】
そこで、情報処理システム１は、以下の情報提供処理を実行する。まず、情報提供装置１０は、受信したストリームデータ１００を受け付けると、複数の値の重ね合わせ状態を保持することができる量子ビットを操作して、受け付けたストリームデータ１００のテンソル積を保持する。また、情報提供装置１０は、端末装置２０からの要求に応じて、生成したテンソル積を端末装置２０へと量子通信を介して送信する。一方、端末装置２０は、量子通信を介して受信したテンソル積から検索クエリが示す条件を満たすデータを抽出するユニタリ行列をオラクルとして生成する。そして、端末装置２０は、生成したオラクルを用いて、検索クエリが示す条件を満たすデータを抽出し、抽出したデータを検索結果として取得する。
【００１９】
以下、図１を用いて、情報処理システム１による情報提供処理の一例を流れに沿って説明する。まず、図１に示した例において、情報提供装置１０は、図示を省略した情報提供装置３０から、送信対象データとして、複数のストリームデータＡ〜Ｃを含むストリームデータ１００を随時取得する（ステップＳ１）。
【００２０】
ここで、各ストリームデータＡ〜Ｃは、それぞれ異なる情報に関するデータであってもよく、同一の情報に関するデータであってもよい。例えば、各ストリームデータＡ〜Ｃは、それぞれ異なる動画像や音声に関するデータであってもよく、同一の動画像に関するデータであってもよい。また、例えば、ストリームデータＡおよびストリームデータＢは、同一の動画像に関するデータであり、ストリームデータＣは、他のストリームデータＡ、Ｂとは異なる動画像に関するデータであってもよい。また、ストリームデータ１００は、動画像や音声以外にも、株価やニュース等の任意のコンテンツ、任意のセンサが取得したセンサデータ等であってもよい。すなわち、ストリームデータ１００は、時系列順に配信される連続したデータであれば、ストリームデータ１００に含まれるデータの種別や種別の数が限定されるものではない。
【００２１】
また、情報提供装置１０は、受け付けたデータを所定長のデータに分割する（ステップＳ２）。例えば、情報提供装置１０は、ストリームデータＡをｎビットのビット長を持つデータＡ１、データＡ２に分割し、ストリームデータＢをｎビットのビット長を持つデータＢ１、データＢ２に分割する。なお、以下の説明では、分割したストリームデータＡをデータＡｎと記載し、分割したストリームデータＢをデータＢｎと記載する。
【００２２】
ここで、ストリームデータ１００を所定長のデータに分割する処理は、必須の処理ではない。例えば、情報提供装置１０は、ストリームデータＡをｎビット分受信した場合は、受信したストリームデータＡをデータＡｎとし、続いて受信したｎビット分のストリームデータＡを、データＡｎ＋１としてもよい。
【００２３】
続いて、情報提供装置１０は、量子ビットを用いて、全てのデータをテンソル積で量子的に重ね合わせたテンソルデータを保持する（ステップＳ３）。例えば、情報提供装置１０は、データ長がｎビットのデータＡｎを、ｎ次元のベクトルであって、各次元の値がデータＡｎに含まれる各ビットの値となるｎ次元のケットベクトル「｜データＡｎ＞」と見做す。例えば、情報提供装置１０は、データＡｎの値が「００１１０１０１」である場合は、データＡｎをケットベクトル「｜００１１０１０１＞」と見做す。また、情報提供装置１０は、データＢｎを、ｎ次元のケットベクトル「｜データＢｎ＞」と見做す。
【００２４】
そして、情報提供装置１０は、量子ビットを操作して、各データＡｎ、Ｂｎのケットベクトルのテンソル積を保持する。より具体的な例を説明すると、情報提供装置１０は、図１に示す例では、データＡ１をケットベクトル「｜データＡ１＞」、データＡ２をケットベクトル「｜データＡ２＞」、データＢ１をケットベクトル「｜データＢ１＞」、データＢ２をケットベクトル「｜データＢ２＞」と見做す。そして、情報提供装置１０は、量子ビットを操作して、以下の式（１）で示される各ケットベクトルのテンソル積を量子ビットに保持させる。
【００２５】
【数１】
0006378151.tif 000002
【００２６】
なお、情報提供装置１０は、新たにｎビット分のストリームデータ１００を受信した場合は、受信したｎビットのストリームデータ１００をｎ次元のケットベクトルと見做す。そして、情報提供装置１０は、すでに量子ビットに保持させた状態と、新たなｎ次元のケットベクトルとのテンソル積を量子ビットに保持させればよい。なお、以下の説明では、量子ビットに保持させた各データのテンソル積を、ストリームデータ１００のテンソル積と記載する。
【００２７】
続いて、情報提供装置１０は、端末装置２０からデータの送信要求を受け付けると、量子通信を介して、量子ビットに保持させたストリームデータ１００のテンソル積を端末装置２０へと送信する（ステップＳ４）。すなわち、情報提供装置１０は、ストリームデータ１００の重ね合わせ状態を壊す事無く、ストリームデータ１００の重ね合わせ状態を端末装置２０へと送信する。
【００２８】
続いて、端末装置２０は、検索対象となるデータの条件（以下、検索クエリと記載する場合がある。）を満たすデータを抽出するためのユニタリ行列ｆを生成する。すなわち、情報提供装置１０は、ストリームデータ１００のテンソル積を構成する各ケットベクトルごとに独立して操作を実現するユニタリ行列ｆを生成する。そして、端末装置２０は、生成したユニタリ行列ｆが示す操作を量子ビットに対して行うことで、ストリームデータ１００のテンソル積を操作し、検索クエリが示す条件を満たすデータを抽出する（ステップＳ５）。例えば、情報提供装置１０は、ストリームデータ１００の転送積から、条件を満たすデータを示すケットベクトル「｜データＢ１＞」を抽出する。なお、端末装置２０は、例えば、グローバーのアルゴリズム等を用いて、検索クエリが示す条件を致すデータを抽出してもよい。そして、端末装置２０は、ストリームデータ１００からの検索結果を用いた処理を実行する（ステップＳ６）。
【００２９】
このように、端末装置２０は、量子通信を介して、ストリームデータ１００のテンソル積の配信を受付けると、受付けたテンソル積を量子ビットに保持させる。そして、端末装置２０は、ストリームデータ１００のテンソル積から検索クエリが示す条件を満たすデータを抽出するユニタリ行列を生成し、生成したユニタリ行列を量子ビットに作用させることで、条件を満たすデータを抽出する。そして、端末装置２０は、抽出したデータを検索結果として各種の処理を実行する。
【００３０】
上述した処理の結果、端末装置２０は、ストリームデータ１００のデータ量が増大した場合にも、処理に要する時間や計算資源の増大を防ぐことができる。すなわち、端末装置２０は、ストリームデータ１００のテンソル積を量子ビットに保持させることで、ストリームデータ１００を重ね合わせ状態にする。そして、端末装置２０は、重ね合わせ状態にしたストリームデータ１００に対して生成したユニタリ行列を作用させることで、重ね合わせ状態のストリームデータ１００から条件を満たすデータを量子計算により抽出することができる。この結果、端末装置２０は、保持したストリームデータ１００のデータ量によらず、処理に要する時間や計算資源の増大を防ぐことができる。
【００３１】
〔２．情報提供装置の構成〕
次に、図２を用いて、実施形態に係る情報提供装置１０の構成について説明する。図２は、実施形態に係る情報提供装置が有する機能構成の一例を示す図である。図２に示すように、情報提供装置１０は、受付部１１、作成部１２、受信部１３、量子通信部１４、量子計算装置１５を有する。また、量子計算装置１５は、操作部１６、出力部１７、状態保持部１８を有する。また、状態保持部１８は、複数の量子ビット１８ａ〜１８ｄを有する。
【００３２】
受付部１１は、情報処理装置３０が配信するストリームデータ１００を取得する。そして、受付部１１は、取得したストリームデータ１００を作成部１２に出力する。なお、図２に示す例では、１つの情報処理装置３０からストリームデータ１００を取得する例について記載したが、実施形態は、これに限定されるものではない。例えば、受付部１１は、ストリームデータＡ〜Ｃをそれぞれ個別の情報処理装置３０から取得してもよい。
【００３３】
作成部１２は、取得したストリームデータ１００を所定長のデータに分割したデータを作成する。例えば、作成部１２は、受付部１１からストリームデータＡおよびストリームデータＢを受信すると、ストリームデータＡをｎビット長のデータＡｎに分割し、ストリームデータＢをｎビット長のデータＢｎに分割する。そして、作成部１２は、分割したデータＡｎおよびデータＢｎを操作部１６に出力する。なお、作成部１２は、ストリームデータＡをｎビット長だけ受信する度に、受信したｎビット長のストリームデータＡをデータＡｎとして操作部１６に出力してもよい。
【００３４】
受信部１３は、端末装置２０からストリームデータ１００のテンソル積の送信要求を受信する。このような場合、受信部１３は、量子通信部１４に、量子計算装置１５が保持するストリームデータ１００のテンソル積を端末装置２０へ送信するよう指示する。
【００３５】
量子通信部１４は、量子通信を介して、量子計算装置１５が保持するストリームデータ１００のテンソル積を端末装置２０へと送信する。例えば、量子通信部１４は、量子テレポーテーション等の技術を用いて、各量子ビット１８ａ〜１８ｄが保持する量子状態を、端末装置２０が有する量子ビットへと転送する。すなわち、量子通信部１４は、各量子ビット１８ａ〜１８ｄが保持するストリームデータ１００の重ね合わせ状態を、その重ね合わせ状態を壊す事無く、端末装置２０へと送信する。
【００３６】
量子計算装置１５は、量子状態を利用して複数の値を同時に保持することができる量子ビットを用いて、ストリームデータ１００のテンソル積を示す量子状態を保持する。例えば、量子計算装置１５が有する状態保持部１８は、複数の量子ビット１８ａ〜１８ｄを有し、任意の量子状態を保持することができる。なお、各量子ビット１８ａ〜１８ｄは、電子準位、電子スピン、イオン準位、各スピン、若しくは光子等、複数の値の重ね合わせ状態を保持することができるのであれば、任意の物理状態を利用した量子ビットを採用することができる。
【００３７】
操作部１６は、作成部１２が作成したデータ、すなわち、分割されたストリームデータ１００を受信すると、受信したデータに含まれるビット列からケットベクトルを生成する。そして、操作部１６は、状態保持部１８に含まれる各量子ビット１８ａ〜１８ｄを操作し、状態保持部１８が保持する情報と生成したケットベクトルとのテンソル積を、新たに状態保持部１８に保持させる。すなわち、操作部１６は、ストリームデータ１００のテンソル積を示す量子状態を状態保持部１８に保持させる。
【００３８】
出力部１７は、各量子ビット１８ａ〜１８ｄは、各量子ビットが保持する量子状態を出力する。具体的には、出力部１７は、各量子ビット１８ａ〜１８ｄが保持する重ね合わせ状態を出力し、量子通信部１４から端末装置２０へと量子通信を介して送信させる。
【００３９】
〔３．端末装置の構成〕
次に、図３を用いて、実施形態に係る端末装置２０の構成について説明する。図３は、実施形態に係る端末装置が有する機能構成の一例を示す図である。図３に示すように、端末装置２０は、量子通信部２１、受信部２２、出力部２３、量子計算装置２４を有する。また、量子計算装置２４は、操作部２５、観測部２６、状態保持部２７を有する。また、状態保持部２７は、複数の量子ビット２７ａ〜２７ｄを有する。
【００４０】
量子通信部２１は、量子通信を介して、ストリームデータ１００のテンソル積を受信する。例えば、量子通信部２１は、受信部２２から検索クエリを受信した旨の通知を受付けると、情報提供装置１０が有する量子通信部１４と通信し、情報提供装置１０が保持したストリームデータ１００のテンソル積を受信する。かかる場合、量子通信部２１は、受信したストリームデータのテンソル積を操作部２５に出力する。
【００４１】
生成部２２は、キーボードやマウス等の入力装置４０を介して、検索対象となるデータの条件、すなわち、検索クエリを受信する。例えば、生成部２２は、ストリームデータ１００の検索を行う場合は、検索対象となるビット列の値を検索クエリとして受信する。また、生成部２２は、ストリームデータ１００の圧縮を行う場合は、ストリームデータ１００に含まれるビット列のうち、最も出現回数が多いビット列を検索する旨を示す検索クエリを受信する。
【００４２】
このように、検索クエリを受信した場合は、生成部２２は、検索クエリを受信した旨を量子通信部２１に出力する。また、生成部２２は、検索クエリが示すデータの条件に基づいて、ストリームデータ１００のテンソル積から条件を満たすデータを抽出するためのユニタリ行列を生成する。
【００４３】
例えば、生成部２２は、検索クエリに検索対象となるビット列が含まれている場合には、かかるビット列を含むストリームデータ１００を、ストリームデータ１００のテンソル積から抽出するための１つ以上のユニタリ行列を生成する。また、生成部２２は、最も出現回数が多いビット列を検索する旨の検索クエリを受信した場合は、ストリームデータ１００のテンソル積に含まれるビット列のうち、出現回数が最も多いビット列を検索するための１つ以上のユニタリ行列を生成し、生成した１つ以上のユニタリ行列を操作部２５に出力する。
【００４４】
なお、生成部２２が生成するユニタリ行列は、テンソル積としたストリームデータ１００の入替、ビット反転、他のビットの値に基づいたビット反転等を実現するユニタリ行列の組み合わせにより実現される。すなわち、生成部２２は、重ね合わせ状態にしたストリームデータ１００から検索クエリが示す条件を満たすデータを検索する量子計算を実現する１つ以上のユニタリ作用素を生成する。
【００４５】
出力部２３は、生成部２２が生成したユニタリ行列を用いて抽出されたデータを検索結果として出力する。例えば、出力部２３は、生成部２２が受信した検索クエリが示す条件を満たすデータを観測部２６から受け付ける。かかる場合、出力部２３は、モニタやプリンタ等の出力装置５０から、観測部２６から受け付けたデータを出力する。なお、このようなデータは、例えば、ストリームデータ１００から利用者が望むデータや、ストリームデータ１００を効率よく圧縮するビット列として利用することができる。
【００４６】
量子計算装置２４は、量子状態を利用して複数の値を同時に保持することができる量子ビットを用いて、ストリームデータ１００のテンソル積を示す量子状態を保持する。そして、量子計算装置２４は、保持された量子状態に対して、生成部２２が生成したユニタリ行列が示すユニタリ作用素を作用させることで、検索対象となるデータの検出を行う。
【００４７】
例えば、量子計算装置２４が有する状態保持部２７は、複数の量子ビット２７ａ〜２７ｄを有し、任意の量子状態を保持することができる。また、操作部２５は、量子通信部２１が情報提供装置１０から受信したストリームデータ１００のテンソル積を受付けると、各量子ビット２７ａ〜２７ｄを操作して、受付けたストリームデータ１００のテンソル積を各量子ビット２７ａ〜２７ｄに保持させる。
【００４８】
また、操作部２５は、生成部２２が生成したユニタリ行列を受信すると、受信したユニタリ行列が示すユニタリ作用素を、各量子ビット２７ａ〜２７ｄに対して作用させる。この結果、操作部２５は、状態保持部２７が保持する量子状態を、検索クエリが示す条件を満たすデータを示す量子状態へと遷移させることができる。その後、操作部２５は、生成部２２が生成した全てのユニタリ行列が示すユニタリ作用素を各量子ビット２７ａ〜２７ｄに作用させた場合は、観測部２６に対して、データの抽出を指示する。
【００４９】
観測部２６は、ストリームデータ１００のテンソル積から、検索クエリが示す条件を満たすデータを抽出する。例えば、観測部２６は、状態保持部２７が保持する量子状態が、検索クエリが示す条件を満たすデータを示す量子状態へと遷移した場合は、操作部２５からデータを抽出するよう指示を受け付ける。このような場合、観測部２６は、所定の観測関数を用いて状態保持部２７が保持する量子状態を観測し、検索クエリが示す条件を満たすデータを示すベクトルを取得する。そして、観測部２６は、取得したベクトルの各成分の値からなるビット列を生成し、生成したビット列を検索結果として出力部２３に出力する。
【００５０】
〔４．情報提供装置および端末装置が実行する情報提供処理の一例〕
次に、図４を用いて、情報提供装置１０および端末装置２０が実行する情報提供処理の一例について説明する。図４は、実施形態に係る情報提供装置および端末装置が実行する処理の一例を説明する図である。例えば、情報提供装置１０は、図４中（Ａ）に示すように、ストリームデータ１００のテンソル積を保持することで、ストリームデータ１００の重ね合わせ状態を保持する。例えば、情報提供装置１０は、「｜００１０１１１０１１０＞」と「｜１０１０１０１０１１１＞」とを含むベクトルのテンソル積を保持する。そして、情報提供装置１０は、ストリームデータ１００のテンソル積を端末装置２０へと送信し、端末装置２０が有する各量子ビット２７ａ〜２７ｄに、ストリームデータ１００のテンソル積を保持させる。
【００５１】
一方、端末装置２０は、図４中（Ｂ）に示すように、検索対象となるデータ「１０１０１０」を含む検索クエリを受付けると、ストリームデータ１００のテンソル積から「１０１０１０」を含むデータを抽出するユニタリ行列ｆを生成する。そして、端末装置２０は、保持したベクトルのテンソル積にユニタリ行列ｆを作用させることで、検索クエリが示すデータを含む状態に遷移させる。
【００５２】
例えば、端末装置２０は、図４中（Ｃ）に示すように、検索対象となる「１０１０１０」を含むデータ「１０１０１０１０１１１」の観測確率を上層させるユニタリ行列を生成し、作用させる。そして、端末装置２０は、図４中（Ｄ）に示すように、量子状態の観測を行い、図４中（Ｅ）に示すように、観測の結果得られるであろうデータ「１０１０１０１０１１１」を出力する。
【００５３】
〔５．情報提供装置が実行する処理の流れ〕
次に、図５を用いて、実施形態に係る情報提供装置１０が実行する処理の流れについて説明する。まず、図５を用いて、情報提供装置１０がストリームデータ１００のテンソル積を示す量子状態を保持する保持処理の流れについて説明する。図５は、実施形態にかかる情報提供装置が実行する処理の流れを示すフローチャートである。
【００５４】
図５に示すように、情報提供装置１０は、送信対象データとして、ストリームデータ１００を受信すると（ステップＳ１０１）、ストリームデータ１００のテンソル積を示す量子状態、すなわちテンソルデータを量子ビットに保持させる（ステップＳ１０３）。続いて、情報提供装置１０は端末装置２０からストリームデータ１００のテンソル積の送信を要求する送信要求を受信したか否かを判定し（ステップＳ１０３）、受信した場合は（ステップＳ１０３：Ｙｅｓ）、量子通信を用いて、保持したテンソルデータを端末装置２０へと送信し（ステップＳ１０４）、処理を終了する。なお、情報提供装置１０は、送信要求を受信しなかった場合は（ステップＳ１０３）、ステップＳ１０１を実行する。
【００５５】
〔６．端末装置が実行する処理の流れ〕
次に、図６を用いて、端末装置２０が実行する情報提供処理の流れについて説明する。図６は、実施形態にかかる端末装置が実行する処理の流れを示すフローチャートである。例えば、端末装置２０は、検索クエリを受信したか否かを判定し（ステップＳ２０１）、受信していない場合は（ステップＳ２０１：Ｎｏ）、受信するまで待機する。
【００５６】
また、端末装置２０は、検索クエリを受信した場合は（ステップＳ２０１：Ｙｅｓ）、情報提供装置１０からテンソルデータを取得して、各量子ビット２７ａ〜２７ｄに保持させる（ステップＳ２０２）。また、端末装置２０は、検索クエリが示す条件を満たすデータを抽出するユニタリ行列を生成し（ステップＳ２０２３）、保持する量子状態に生成したユニタリ行列を作用させる（ステップＳ２０４）。そして、端末装置２０は、ユニタリ行列を作用させた後の量子状態の観測結果から、検索クエリの状態を満たすデータを取得し（ステップＳ２０５）、取得したデータを出力して（ステップＳ２０６）、処理を終了する。
【００５７】
〔７．変形例〕
上述した実施形態に係る情報提供システム１は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、上記の情報提供システム１の他の実施形態について説明する。
【００５８】
〔７−１．抽出するデータについて〕
上述した端末装置２０は、ストリームデータ１００のテンソル積から検索クエリが示す条件を満たすデータを抽出するための１つ以上のユニタリ行列を生成し、生成したユニタリ行列を用いた量子計算を実行した。ここで、端末装置２０は、１つ以上のユニタリ行列によって実現することができる処理であれば、任意の処理を実現することができる。
【００５９】
例えば、端末装置２０は、ストリームデータ１００の圧縮を行う場合には、ストリームデータ１００のうち所定の値に圧縮するビット列を抽出するユニタリ行列を生成してもよい。より具体的には、端末装置２０は、テンソル積により多重化されたデータに含まれるビット列のうち、最も出現回数が多いビット列を抽出するユニタリ行列を生成し、生成したユニタリ行列によって抽出されたビット列を用いて、ストリームデータの圧縮を実現してもよい。例えば、端末装置２０は、抽出したビット列を用いて、画像や文字列のストリームデータを圧縮してもよい。また、端末装置２０は、ストリームデータ１００のテンソル積から抽出したビット列を、ストリームデータ１００のスケッチとして用いてもよい。ここで、ストリームデータ１００のスケッチとは、ストリームデータ１００のデータを要約したもので、ストリームデータ１００の構造が把握できる情報である（例えば、非特許文献２参照）。なお、端末装置２０は、複数のストリームデータ１００のスケッチデータを量子的に重ね合わせたり、１つのストリームデータの時間経過によるスケッチの変化を量子的に重ね合わせてもよい。
【００６０】
〔７−２．他のアルゴリズムとの組合せについて〕
上述した処理では、端末装置２０は、生成したユニタリ行列を用いた量子計算により、検索クエリが示す条件を満たすデータを抽出した。しかしながら、実施形態は、これに限定されるものではない。例えば、端末装置２０は、グローバーの検索アルゴリズムやショアのアルゴリズム等、既知の任意のアルゴリズムを用いて、検索クエリが示す条件を満たすデータの抽出を行ってもよい。すなわち、端末装置２０は、ストリームデータ１００をテンソル積により重ね合わせ状態で保持することができるのであれば、任意の量子計算によりデータの抽出を行ってよい。
【００６１】
〔７−３．固有状態の重ね合わせについて〕
上述した説明では、情報提供システム１は、式（１）に示すように、ストリームデータ１００のテンソル積を示す量子状態を配信し、配信された量子状態から、検索対象となるデータを抽出した。しかしながら、実施形態は、これに限定されるものではない。例えば、情報提供システム１は、ストリームデータ１００のそれぞれを示す固有状態の総和を固有状態の重ね合わせ状態とし、かかる重ね合わせ状態を配信し、グローバーのアルゴリズムを用いて、検索対象となるデータを抽出してもよい。
【００６２】
例えば、情報提供装置１０は、ストリームデータＡ１〜Ａｎを示す固有状態と、ストリームデータＢ１〜Ｂｎを示す固有状態と、ストリームデータＣ１〜Ｃｎを示す固有状態とを生成する。そして、情報提供装置１０は、量子ビット１９ａ〜１９ｄを操作して、各ストリームデータ１００の固有状態の総和をストリームデータとして保持する。なお、かかる固有状態は、情報提供装置１０がストリームデータ１００を受付ける度に変化する。
【００６３】
そして、情報提供装置１０は、要求に応じて、保持したストリームデータを端末装置２０へと送信する。このような場合、端末装置２０は、受信したストリームデータ、すなわち、各ストリームデータ１００の固有状態の総和を各量子ビット２７ａ〜２７ｄに保持させる。また、端末装置２０は、検索クエリとして、検索対象となるビット列を受信すると、グローバーのアルゴリズムを用いて、受信したビット列を含むデータを抽出する。そして、端末装置２０は、抽出したデータを用いて、各種の処理を実行する。
【００６４】
ここで、グローバーのアルゴリズムでは、重ね合わせたデータの中から複数の正解データを検索することができる。（例えば、「量子コンピュータの基礎  [第2版]」、細谷暁夫、臨時別冊・数理科学2009年9月、７８ページ参照）。そこで、端末装置２０は、ワイルドカードを用いたグローバーのアルゴリズムを用いて、各ストリームデータＡ１〜Ａｎ、Ｂ１〜Ｂｎ、Ｃ１〜Ｃｎの中から、検索クエリと類似するデータを検索してもよい。
【００６５】
例えば、端末装置２０は、検索クエリとなるビット列が「１０１１１００００」といったビット列である場合は、かかるビット列にワイルドカードのビット「＊」を付加した「＊＊＊＊＊１０１１１００００＊＊＊＊」といったビット列であって、各ストリームデータＡ１〜Ａｎ、Ｂ１〜Ｂｎ、Ｃ１〜Ｃｎと同じビット数のビット列を生成する。なお、ワイルドカードのビット「＊」は、「１」および「０」の重ね合わせ状態を示す。なお、端末装置２０は、「１」または「０」が連続するビット列の途中にワイルドカードのビット「＊」を挿入したビット列を生成してもよい。
【００６６】
上述した処理により生成されるビット列は、各ストリームデータＡ１〜Ａｎ、Ｂ１〜Ｂｎ、Ｃ１〜Ｃｎのうち、所定の位置に「１０１１１００００」といった検索クエリとなるビット列を含むストリームデータを検索するためのクエリとなる。そこで、端末装置２０は、上述した処理により生成されたビット列を検索クエリとし、かかる検索クエリと一致するストリームデータ１００をグローバーのアルゴリズムで検索する。
【００６７】
そして、端末装置２０は、ワイルドカードのビットを含む検索クエリと対応するストリームデータを検出した場合は、かかるストリームデータを検索クエリと類似するデータとして出力する。この結果、端末装置２０は、例えば、検索したいビット列と、分割したストリームデータとのビット長が異なる場合にも、検索クエリを含むストリームデータ１００を検索することができる。
【００６８】
〔７−４．ストリームデータの分割について〕
なお、上述した情報提供装置１０は、ストリームデータＡ〜Ｃを、同一ビット長のストリームデータＡ１〜Ａｎ、Ｂ１〜Ｂｎ、Ｃ１〜Ｃｎに分割した。しかしながら、実施形態は、これに限定されるものではない。例えば、情報提供装置１０は、ストリームデータＡ〜Ｃのデータサイズが大きくない場合には、ストリームデータＡ〜Ｃを分割することなく、そのままテンソル積若しくは固有状態の総和により重ね合わせてもよい。
【００６９】
〔７−５．ハードウェア構成について〕
上述した情報提供装置１０や端末装置２０は、ストリームデータ１００のテンソル積を示す量子状態を保持する量子計算装置１５、２４を有していた。しかしながら、実施形態は、これに限定されるものではない。例えば、情報提供装置１０は、受付部１１、作成部１２、受信部１３、量子通信部１４のみを有し、外部に設置された量子計算装置１５にストリームデータ１００のテンソル積を示す量子状態を保持させてもよい。また、端末装置２０は、量子通信部２１、生成部２２、出力部２３飲みを有し、外部に設置された量子計算装置２４にストリームデータ１００のテンソル積を示す量子状態を保持させてもよい。
【００７０】
また、情報提供装置１０が有する各機能構成のうち、受付部１１、作成部１２、受信部１３、生成部１４が発揮する処理、ならびに、端末装置２０が有する生成部２２および出力部２３が発揮する処理は、それぞれＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されてもよい。また、上述した処理は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等のプロセッサによって、情報提供装置１０または端末装置２０内部の記憶装置に記憶されている情報提供プログラムがＲＡＭ（Random  Access  Memory)を作業領域として実行されることにより実現されてもよい。
【００７１】
〔８．効果〕
このように、端末装置２０は、ストリームデータ１００のテンソル積を受けつけると、量子ビット２７ａ〜２７ｄに保持させる。そして、情報提供装置１０は、保持したストリームデータ１００のテンソル積から検索クエリが示す条件を満たすデータを抽出するユニタリ行列を生成し、生成したユニタリ行列を用いて、保持したストリームデータ１００のテンソル積から検索クエリが示す条件を満たすデータを抽出する。
【００７２】
この結果、端末装置２０は、ストリームデータ１００を重ね合わせ状態で保持し、量子計算を用いて検索クエリが示す条件を満たすデータを抽出して提供することができる。この結果、端末装置２０は、ストリームデータ１００のデータ量が増大した場合にも、処理に要する時間や計算資源の増大を防ぐことができる。
【００７３】
また、端末装置２０は、ストリームデータ１００のうち圧縮対象となるビット列を抽出するユニタリ行列を生成する。ここで、ユニタリ行列を用いた量子計算により、重ね合わせ状態のストリームデータ１００から圧縮対象となるビット列を計算すると、計算結果として得られるビット列は、確率的ではあるものの、重ね合わせ状態となったストリームデータ１００全体を通して最適な（極所的に最適なものではない）圧縮対象となる。このため、端末装置２０は、ストリームデータ１００の圧縮やスケッチを作成する際の効率を向上させることができる。
【００７４】
また、端末装置２０は、圧縮対象となるビット列として、ストリームデータ１００のうち出現回数が最も多いビット列を抽出するユニタリ行列を生成する。このため、情報提供装置１０は、ストリームデータ１００の圧縮やスケッチを作成する際の効率を向上させることができる。
【００７５】
また、情報提供システム１は、上述した端末装置２０と、端末装置２０へとテンソルデータを送信する情報提供装置１０とを有する。情報提供装置１０は、ストリームデータ１００を受付けると、量子ビット１８ａ〜１８ｄを操作して、ストリームデータ１００のテンソル積を保持する。そして、情報提供装置１０は、量子通信を介して、保持したテンソル積を端末装置２０へと送信する。
【００７６】
この結果、情報提供システム１は、ストリームデータ１００を重ね合わせ状態で保持、および配信し、量子計算を用いて検索クエリが示す条件を満たすデータを抽出して提供することができる。この結果、端末装置２０は、ストリームデータ１００のデータ量が増大した場合にも、配信やデータの検索に要する時間や計算資源の増大を防ぐことができる。
【００７７】
また、情報提供装置１０は、受け付けたストリームデータ１００を所定長のビット列に分割し、分割した所定長のビット列に含まれる各ビットの値を各次元の値とするベクトルのテンソル積を量子ビット１８ａ〜１８ｄに保持させる。このため、情報提供装置１０は、ストリームデータ１００のテンソル積を保持することができる。
【００７８】
また、情報提供装置１０は、１つ又は複数のストリームデータ１００を受け付け、受け付けた各ストリームデータ１００のテンソル積を保持する。例えば、情報提供装置１０は、ストリームデータＡのみならず、ストリームデータＢやストリームデータＣのテンソル積を示す量子状態を保持する。この結果、情報提供装置１０は、全てのストリームデータ１００を重ね合わせ状態で保持しつつ、各ストリームデータＡ〜Ｃの種別ごとに、データの検索や抽出を行うことができる。
【００７９】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【００８０】
また、上記してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、生成手段や生成回路に読み替えることができる。
【符号の説明】
【００８１】
１０  情報提供装置
１１  受付部
１２  作成部
１３  受信部
１４、２１  量子通信部
１５、２４  量子計算装置
１６、２５  操作部
１７  出力部
１８  状態保持部
１８ａ〜１８ｄ、２７ａ〜２７ｄ  量子ビット
２０  端末装置
２２  生成部
２３  出力部
２６  観測部
３０  情報処理装置
【図１】
0006378151.tif 000003
【図２】
0006378151.tif 000004
【図３】
0006378151.tif 000005
【図４】
0006378151.tif 000006
【図５】
0006378151.tif 000007
【図６】
0006378151.tif 000008