(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023177884
(43)【公開日】2023-12-14
(54)【発明の名称】量子回路、量子回路生成装置及び量子回路生成プログラム
(51)【国際特許分類】
G06N 10/60 20220101AFI20231207BHJP
【FI】
G06N10/60
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022090839
(22)【出願日】2022-06-03
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】成定 真太郎
(72)【発明者】
【氏名】別府 翔平
(57)【要約】
【課題】Hamming重みが指定された範囲にあるn-qubitの重ね合わせ状態を効率的に構築できる量子回路を提供すること。
【解決手段】量子回路生成装置1は、所定長の量子ビットにおけるHamming重みが一定の重ね合わせ状態を構築する量子回路を出力するための第1の量子ゲートアルゴリズムに対して、Hamming重みの値域に応じた存在確率で、Hamming重みが異なる量子ビット列の重ね合わせ状態を生成するために量子ゲートが追加又は削除された第2の量子ゲートアルゴリズムを実行することにより、Hamming重みが値域にある全てのビット列の重ね合わせ状態を構築する量子回路を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
所定長の量子ビットにおけるHamming重みが一定の重ね合わせ状態を構築する第1の量子回路に対して、
Hamming重みの値域に応じた存在確率で、Hamming重みが異なる量子ビット列の重ね合わせ状態を生成するために量子ゲートが追加又は削除されたことにより、Hamming重みが前記値域にある全てのビット列の重ね合わせ状態を構築する量子回路。
【請求項2】
補助ビットを備えず、前記第1の量子回路に対して、Hamming重みが前記値域の各値である代表ビット列を、前記値域に応じた存在確率で重ね合わせた状態を構成するための量子ゲートが前処理として挿入された請求項1に記載の量子回路。
【請求項3】
補助ビットを備え、前記第1の量子回路に対して、Hamming重みを一定とする条件が除かれ、前記値域に応じた存在確率でビット列を重ね合わせた状態を構成するよう変更された請求項1に記載の量子回路。
【請求項4】
前記値域は、k以上又はk以下に設定される請求項1から請求項3のいずれかに記載の量子回路。
【請求項5】
量子ビットの1と0とを反転させることにより、前記値域がk以上の場合を、0のHamming重みがn-k以下の場合として処理する請求項3に記載の量子回路。
【請求項6】
所定長の量子ビットにおけるHamming重みが一定の重ね合わせ状態を構築する量子回路を出力するための第1の量子ゲートアルゴリズムに対して、
Hamming重みの値域に応じた存在確率で、Hamming重みが異なる量子ビット列の重ね合わせ状態を生成するために量子ゲートが追加又は削除された第2の量子ゲートアルゴリズムを実行することにより、Hamming重みが前記値域にある全てのビット列の重ね合わせ状態を構築する量子回路を生成する量子回路生成装置。
【請求項7】
請求項6に記載の量子回路生成装置としてコンピュータを機能させるための量子回路生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、所定のHamming重みの量子ビットの重ね合わせ状態を構築するアルゴリズムに関する。
【背景技術】
【0002】
量子ゲート方式に基づく量子アルゴリズムでは、例えば、3量子ビットの場合、初期状態は全ビットが0である|000>であることが通常である。量子アルゴリズムを実行するためには、まず、初期状態の|000>から始めて、所望の状態を準備する必要があることが多い。例えば、問題の制約条件を満たす解の候補を準備する場合が該当する。すなわち、状態準備を行った後に量子アルゴリズムを実行することで、例えば、解となる量子状態の確率振幅が選択的に増幅する。このような量子状態の準備も、量子アルゴリズムも、量子回路上のゲート演算を利用して実現される。
【0003】
非特許文献1では、量子アルゴリズムの前処理として、Dicke stateと呼ばれる、組み合わせを表現した量子重ね合わせ状態を|000…0>から構築する方法が提案されている。
Dicke stateとは、|D
n
k>で表される、Hamming重みkを持つn量子ビット(n-qubit)の組み合わせを重ね合わせた状態である。例えば、
【数1】
である。
【0004】
非特許文献2では、|Dn
k>を、幅n及び深さO(n)の量子回路を使用して補助ビットを使用せずに構築する方法が提案されている。ここで、回路の幅とは、必要な全量子ビット数を意味し、深さとは、ゲート演算の総数を意味する。また、補助量子ビットとは、ゲート演算を簡単化するためにしばしば用いられる余分な量子ビットである。例えば、加算器における桁上がりを記憶するために補助量子ビットが用いられる。
この方法では、アルゴリズムの計算量は、回路幅n+2・ceil(log k+1)、回路の深さO(nk log k log log k)であり、非特許文献1の方法と比べて、補助量子ビットを使用する一方で、実装が容易であるというメリットがある。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Andreas Bartschi and Stephan Eidenbenz. Deterministic preparation of dicke states. In International Symposium on Fundamentals of Computation Theory, pp. 126-139. Springer, 2019.
【非特許文献2】Andre Esser, Sergi Ramos-Calderer, Emanuele Bellini, Jose I Latorre, and Marc Manzano. An optimized quantum implementation of isd on scalable quantum resources. arXiv preprint arXiv:2112.06157, 2021.
【発明の概要】
【発明が解決しようとする課題】
【0006】
Dicke state |Dn
k>は、n個からk個を選択する組み合わせ(n
k)と対応付けることができるため、Dicke stateの構築は、NP完全である組み合わせ探索問題を量子コンピュータ上で求解する際の前処理として重要である。
【0007】
一方で、組み合わせ探索問題によっては、n個から厳密にk個だけを選択するという問題設定よりもむしろ、k個以上又はk個以下の要素を選択するといった緩い制約条件が与えられる場合が多い。例えば、暗号解読の分野においては、n本のベクトルからk本のベクトルを選択するよりも、k本以下のベクトルを選択するように拡張した方が問題を解きやすい場合がある。
しかしながら、n個からk個以上(又は以下)を選択する場合に、対応するHamming重みがk以上(又は以下)であるn-qubitの重ね合わせ状態の構築アルゴリズムは、これまで知られていなかった。
【0008】
本発明は、Hamming重みが指定された範囲にあるn-qubitの重ね合わせ状態を効率的に構築できる量子回路を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明に係る量子回路は、所定長の量子ビットにおけるHamming重みが一定の重ね合わせ状態を構築する第1の量子回路に対して、Hamming重みの値域に応じた存在確率で、Hamming重みが異なる量子ビット列の重ね合わせ状態を生成するために量子ゲートが追加又は削除されたことにより、Hamming重みが前記値域にある全てのビット列の重ね合わせ状態を構築するものである。
【0010】
前記量子回路は、補助ビットを備えず、前記第1の量子回路に対して、Hamming重みが前記値域の各値である代表ビット列を、前記値域に応じた存在確率で重ね合わせた状態を構成するための量子ゲートが前処理として挿入されたものである。
【0011】
前記量子回路は、補助ビットを備え、前記第1の量子回路に対して、Hamming重みを一定とする条件が除かれ、前記値域に応じた存在確率でビット列を重ね合わせた状態を構成するよう変更されたものである。
【0012】
前記値域は、k以上又はk以下に設定されてもよい。
【0013】
前記量子回路は、量子ビットの1と0とを反転させることにより、前記値域がk以上の場合を、0のHamming重みがn-k以下の場合として処理するものであってもよい。
【0014】
本発明に係る量子回路生成装置は、所定長の量子ビットにおけるHamming重みが一定の重ね合わせ状態を構築する量子回路を出力するための第1の量子ゲートアルゴリズムに対して、Hamming重みの値域に応じた存在確率で、Hamming重みが異なる量子ビット列の重ね合わせ状態を生成するために量子ゲートが追加又は削除された第2の量子ゲートアルゴリズムを実行することにより、Hamming重みが前記値域にある全てのビット列の重ね合わせ状態を構築する量子回路を生成する。
【0015】
本発明に係る量子回路生成プログラムは、前記量子回路生成装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0016】
本発明によれば、Hamming重みが指定された範囲にあるn-qubitの重ね合わせ状態を効率的に構築できる。
【図面の簡単な説明】
【0017】
【
図1】実施形態における量子回路生成装置の機能構成を示す図である。
【
図2】第1実施形態におけるHamming重みk以下又はk以上のn-qubitの重ね合わせを生成する量子回路の生成アルゴリズムGeneralized-Dicke-Preparationを示す図である。
【
図3】第1実施形態におけるWeight-Split-Lesser関数のアルゴリズムを示す図である。
【
図4】第1実施形態におけるWeight-Split-Greater関数のアルゴリズムを示す図である。
【
図5】第1実施形態におけるSplit-Cyclic-Shift関数のアルゴリズムを示す図である。
【
図6】第1実施形態におけるアルゴリズムGeneralized-Dicke-Preparationが出力する量子回路を例示する図である。
【
図7】第2実施形態との比較のため、従来におけるHamming重みkのn-qubitの重ね合わせを生成する量子回路の生成アルゴリズムを示す図である。
【
図8】第2実施形態におけるHamming重みk以下のn-qubitの重ね合わせを生成する量子回路の生成アルゴリズムを示す図である。
【
図9】第2実施形態におけるDecrement関数のアルゴリズムを示す図である。
【
図10】第2実施形態におけるHamming重みk以上のn-qubitの重ね合わせを生成する量子回路の生成アルゴリズムを示す図である。
【
図11】第2実施形態との比較のため、従来におけるアルゴリズムが出力する量子回路を例示する図である。
【
図12】第2実施形態におけるHamming重みk以下に対応するアルゴリズムが出力する量子回路を例示する図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態の一例について説明する。
本実施形態における量子回路は、量子コンピュータにおける量子アルゴリズムを示し、量子回路生成装置により出力される設計情報に基づいて実装される。
ここでは、この設計情報を量子回路と呼び、その出力アルゴリズムについて説明する。
【0019】
具体的には、本実施形態において生成する量子回路は、量子ゲートアルゴリズムの前処理(状態準備)として、Hamming重みが所定の範囲(例えば、k以上又はk以下)であるDicke stateを一般化した状態を構築するものである。
【0020】
図1は、本実施形態における量子回路生成装置1の機能構成を示す図である。
量子回路生成装置1は、制御部10及び記憶部20の他、各種の入出力インタフェース等を備えた情報処理装置(コンピュータ)である。
【0021】
制御部10は、量子回路生成装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
【0022】
記憶部20は、ハードウェア群を量子回路生成装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクドライブ(HDD)等であってよい。
【0023】
制御部10は、所定長の量子ビットにおけるHamming重みが一定の重ね合わせ状態を構築する従来の量子回路(第1の量子回路)に対して改変を加えることにより、Hamming重みの値域をk以上又はk以下に拡張する。
すなわち、制御部10は、Hamming重みの値域に応じた存在確率で、Hamming重みが異なる量子ビット列の重ね合わせ状態を生成するために量子ゲートを追加又は削除することにより、Hamming重みが前記値域にある全てのビット列の重ね合わせ状態を構築するための量子回路を出力する。
【0024】
利用する従来の量子回路は、非特許文献1の補助ビットなしの方式、又は非特許文献2の補助ビットありの方式であり、改変した補助ビットなしの方式(第1実施形態)、及び補助ビットありの方式(第2実施形態)について、次にそれぞれ説明する。
【0025】
[第1実施形態]
以下、補助ビットなしの方式について説明する。
本方式では、非特許文献1のアルゴリズムを応用し、補助ビットを使用せずにHamming重みk以上又はk以下の重ね合わせを構築する量子回路を生成する。このアルゴリズムにより出力される量子回路の計算量は、非特許文献1と同一の回路幅n及び深さO(n)である。
【0026】
図2は、本実施形態におけるHamming重みk以下又はk以上のn-qubitの重ね合わせを生成する量子回路の生成アルゴリズム(Algorithm 1:Generalized-Dicke-Preparation)を示す図である。
このアルゴリズムは、Hamming重みkの重ね合わせ状態を構築するためのアルゴリズム(非特許文献1)の前処理として、Weight-Split-Lesser関数(Algorithm 2)又はWeight-Split-Greater関数(Algorithm 3)を導入したものである。
【0027】
Weight-Split-Lesser関数は、重みk以下のn-qubitを代表した1組の重ね合わせ状態を準備する関数である。例えば、n=5,k=2の場合、Weight-Split-Lesser関数は、|00000>を入力として、|00011>,|00001>,|00000>の適切な重みの重ね合わせ状態である、
【数2】
を出力する。
【0028】
この重みk以下の状態を代表した1組を重ね合わせた状態に対して、非特許文献1のアルゴリズムを実行することで、k以下の各Hamming重みに対するDicke stateが重ね合わされた状態が生成される。ここで、量子ゲート演算は線形であるため、重みk以下の状態を重ね合わせた入力に対しては、各重みに対する演算結果をさらに重ね合わせた状態が出力される。すなわち、重みk以下の状態全てを重ね合わせた状態が得られる。
【0029】
一方、Weight-Split-Greater関数は、Weight-Split-Lesser関数と同様であるが、重みk以上のn-qubitを代表した1組の重ね合わせ状態を準備する関数である。
なお、Hamming重みがkのn-qubitの代表は、後述の既存アルゴリズムSplit-Cyclic-Shiftの仕様に合わせて、n-k~n-1の位置が1であり他が0のビット列である。
【0030】
Generalized-Dicke-Preparation(Algorithm 1)は、所望の量子ビット長n、及びHamming重みの値域(k以下又はk以上)を示すkを入力とし、Hamming重みk以下又はk以上のn-qubitの重ね合わせ状態を構成するための量子回路qcを出力する。具体的な処理内容は、以下の通りである。
【0031】
1行目:制御部10は、幅がnの量子回路qcを|000…0>に初期化する。以降、各量子ビットの位置は、整数集合[0,…,n-1]で対応付ける。
2行目:制御部10は、Hamming重みの値域をk以下とする場合は、前処理としてWeight-Split-Lesser関数を呼び出し、重みk以下のn-qubitを代表した1組の重ね合わせ状態を準備するよう量子回路qcを構成する。一方、Hamming重みの値域をk以上とする場合は、制御部10は、代わりにWeight-Split-Greater関数を呼び出す。
【0032】
3行目:制御部10は、n-1から1まで降順に4行目を実行する。
4行目:制御部10は、Split-Cyclic-Shift関数を呼び出す。Split-Cyclic-Shift関数は、Hamming重みが固定(k)の重ね合わせ状態を構成するための、非特許文献1で提案されたアルゴリズムであるが、2行目で事前にWeight-Split-Lesser関数又はWeight-Split-Greater関数を呼び出しておくことで、Hamming重みがk以下又はk以上の重ね合わせ状態を構成するためのアルゴリズムとなる。
【0033】
図3は、本実施形態におけるWeight-Split-Lesser関数のアルゴリズム(Algorithm 2)を示す図である。
【0034】
ここで、A
n
kをHamming重みがk以上である長さnの二値ベクトルの集合とし、B
n
kをHamming重みがk以下である長さnの二値ベクトルの集合とする。このとき、各集合の大きさはそれぞれ、
【数3】
と書くことができる。
【0035】
Weight-Split-Lesser関数(Algorithm 2)は、前述のn,kを入力とし、Hamming重みk以下のn-qubitを代表した1組の重ね合わせを構成するための量子回路qcを出力する。具体的な処理内容は、以下の通りである。
【0036】
1行目:制御部10は、量子回路qcにryゲートを追加する。qc.ryの第1引数はゲートの回転角度であり、第2引数はゲートを適用する量子ビットの位置である。
2行目:制御部10は、1からk-1まで昇順で3行目を実行する。
3行目:制御部10は、量子回路qcにcryゲートを追加する。qc.cryの第1引数はゲートの回転角度であり、第2引数は制御量子ビットの位置であり、第3引数はゲートを適用する量子ビットの位置である。
【0037】
図4は、本実施形態におけるWeight-Split-Greater関数のアルゴリズム(Algorithm 3)を示す図である。
【0038】
Weight-Split-Greater関数(Algorithm 3)は、前述のn,kを入力とし、Hamming重みk以上のn-qubitを代表した1組の重ね合わせを構成するための量子回路qcを出力する。具体的な処理内容は、以下の通りである。
【0039】
1行目:制御部10は、0からn-1まで昇順で2行目を実行する。
2行目:制御部10は、量子回路qcにxゲートを追加する。qc.xの第1引数はゲートを適用する量子ビットの位置である。
3行目:制御部10は、量子回路qcにryゲートを追加する。
4行目:制御部10は、n-1からk-1まで降順で5~7行目を実行する。
5行目:制御部10は、量子回路qcにxゲートを追加する。
6行目:制御部10は、量子回路qcにcryゲートを追加する。
7行目:制御部10は、量子回路qcにxゲートを追加する。
【0040】
図5は、本実施形態におけるSplit-Cyclic-Shift関数のアルゴリズム(Algorithm 4)を示す図である。
【0041】
Split-Cyclic-Shift関数(Algorithm 4)は、前述のn,kを入力とし、Hamming重みがkのn-qubitの重ね合わせを構成するための量子回路qcを出力する。具体的な処理内容は、以下の通りである。
【0042】
1行目:制御部10は、n-2から0まで降順で2~9行目を実行する。
2行目:制御部10は、i+1=kを満たす場合3~5行目を実行する。
3行目:制御部10は、量子回路qcにcxゲートを追加する。qc.cxの第1引数は制御量子ビットの位置であり、第2引数はゲートを適用する量子ビットの位置である。
4行目:制御部10は、量子回路qcにcryゲートを追加する。
5行目:制御部10は、量子回路qcにcxゲートを追加する。
6行目:制御部10は、i+1=kを満たさない場合7~9行目を実行する。
7行目:制御部10は、量子回路qcにcxゲートを追加する。
8行目:制御部10は、量子回路qcにmcryゲートを追加する。qc.mcryの第1引数はゲートの回転角度であり、第2引数は制御量子ビットの位置であり、第3引数はゲートを適用する量子ビットの位置である。なお、制御量子ビットが複数の場合は集合で表記される。
9行目:制御部10は、量子回路qcにcxゲートを追加する。
【0043】
図6は、本実施形態におけるアルゴリズムGeneralized-Dicke-Preparation(Algorithm 1)が出力する量子回路を例示する図である。
ここでは、n=5,k=2とし、Hamming重みがk以下とした場合の出力を示している。この場合、Hamming重みをk固定(=2)とした従来の場合に比べて、前処理としてryゲートが2つ追加されたのみである。
【0044】
このように、補助ビットなしの方式については、非特許文献1の量子回路の前処理として深さO(k)の回路を追加することで、回路全体の計算量をO(n)に保ったままHamming重みがk以上又はk以下の重ね合わせを構築することができる。
また、k以上l以下のような範囲が指定される場合についても、同様に、該当の範囲に応じたHamming重みそれぞれの存在確率で量子ビットの重ね合わせを構築するように前処理を挿入することで、所望の状態が生成される。
【0045】
[第2実施形態]
以下、補助ビットありの方式について説明する。
本方式では、非特許文献2のアルゴリズムを応用し、補助ビットを使用してHamming重みk以上又はk以下の重ね合わせを構築する量子回路を生成する。このアルゴリズムにより出力される量子回路の計算量は、
【数4】
であり、非特許文献2の量子回路と同一である。
【0046】
図7は、本実施形態との比較のため、従来(非特許文献2)におけるHamming重みkのn-qubitの重ね合わせを生成する量子回路の生成アルゴリズム(Algorithm 5:Dicke-Preparation-with-Ancilla)を示す図である。
【0047】
図8は、本実施形態におけるHamming重みk以下のn-qubitの重ね合わせを生成する量子回路の生成アルゴリズム(Algorithm 6:Generalized-Dicke-Preparation-with-Ancilla)を示す図である。
このアルゴリズムは、
図7のアルゴリズム(Algorithm 5)に対して、いくつかのゲートを追加又は削除することでHamming重みがk以上又はk以下の重ね合わせを実現している。
【0048】
具体的には、Algorithm 5とAlgorithm 6との差分は、ryゲートの数とryゲートの引数の値である。Algorithm 6の具体的な処理内容は、以下の通りである。
【0049】
1行目:制御部10は、n量子ビットのレジスタbを用意する。
2行目:制御部10は、kの値に応じた補助量子ビット数のレジスタcを用意する。
3行目:制御部10は、b及びcの合計量子ビット幅の量子回路qcを初期化する。
4行目:制御部10は、Initialize-Ancilla関数によって補助量子ビットcの値がkの二進表現となるように初期化する。例えば、k=2の場合は補助量子ビットc=|01>となる。なお、Initialize-Ancilla関数は、O(k)個のxゲートにより構成可能である。
【0050】
5行目:制御部10は、0からn-1まで昇順で6~11行目を実行する。
6行目:制御部10は、i=0なら7行目を実行する。
7行目:制御部10は、量子回路qcにryゲートを追加する。
8行目:制御部10は、i=0でないなら9~10行目を実行する。
9行目:制御部10は、1からkまで昇順で10行目を実行する。
10行目:制御部10は、量子回路qcにmcryゲートを追加する。qc.mcryの第1引数はゲートの回転角度であり、第2引数は制御量子ビットの条件である。この場合は、制御量子ビットは補助量子ビットcであり、c=|j>の場合にのみゲートが動作する。第3引数は、ゲートを適用する量子ビットの位置である。
11行目:制御部10は、Decrement関数を呼び出し、制御ビットの値に応じて補助量子ビットcの値を1だけ減らす。
【0051】
図9は、本実施形態におけるDecrement関数のアルゴリズム(Algorithm 7)を示す図である。
【0052】
1行目:制御部10は、量子回路qcにcxゲートを追加する。
2行目:制御部10は、補助量子ビットの大きさに応じて、1からceil(log(k+1))-1まで昇順で3行目を実行する。
3行目:制御部10は、量子回路qcにmcxゲートを追加する。qc.mcxの第1引数は制御量子ビットの位置であり、第2引数はゲートを適用する量子ビットの位置である。なお、制御量子ビットが複数の場合は集合で表記される。
【0053】
図10は、本実施形態におけるHamming重みk以上のn-qubitの重ね合わせを生成する量子回路の生成アルゴリズム(Algorithm 8:Generalized-Dicke-Preparation-with-Ancilla)を示す図である。
Algorithm 8は、Hamming重みk以下の場合のAlgorithm 6と類似しているが、次の部分が異なる。
【0054】
1行目:制御部10は、k←n-kと置き換える。
5~6行目:制御部10は、量子回路qcにxゲートを追加し、bを|000…000>から|111…111>に反転する。
こうすることで、以降の処理は、Algorithm 6と比較して0と1とが反転した、0のHamming重みn-k以下のケースとみなすことができる。
【0055】
14,16行目:制御部10は、Decrement関数の前後にxゲートを追加する。1と0とを反転させているため、こうすることで制御ビットが0の時にDecrementが起こるようになる。
また、10,13行目ではHamming重みがk以上である長さnの二値ベクトル集合An
kではなく重みk以下に対応するBn
kが使用されているが、0のHamming重みn-k以下の重ね合わせを作成しているため、「1の重みk以上」と「0の重みn-k以下」が同義であることから、Bn
kの使用で問題ない。
【0056】
図11は、本実施形態との比較のため、従来(非特許文献2)におけるDicke-Preparation-with-Ancilla(Algorithm 5)が出力する量子回路を例示する図である。
ここでは、n=5,k=2とし、Hamming重みがkの場合の出力を示している。
【0057】
図12は、本実施形態におけるHamming重みk以下に対応するアルゴリズムGeneralized-Dicke-Preparation-with-Ancilla(Algorithm 6)が出力する量子回路を例示する図である。
この場合、Hamming重みをk固定(=2)とした従来の場合に比べて、ryゲートの数が1つ増え、各ゲートの引数である回転角度が、Hamming重みの値域に応じた存在確率に応じた値に変更されている。
【0058】
従来の手法では、補助ビットcの値が回路実行後に0となっている必要があった。この制約のため、
図11の量子ビットb
4に対してryゲートが実行される際には、cの値は1又は0の重ね合わせとなっている。よって、ryゲートはc=1の場合の1つだけが実行され、最終的にc=0となる。
一方、本実施形態では、補助ビットcの値が回路実行後に0以上k以下の値(重みk以上のケースでは、0以上n-k以下)であればよいので、
図12の量子ビットb
4に対してryゲートが実行される際には、cの値は2,1,0の重ね合わせとなっている。よって、ryゲートはc=1の場合とc=2の場合との2つを実行する必要がある。
【0059】
このように、補助ビットありの方式については、非特許文献2の量子回路に対して、量子ゲートの引数の変更と共に、ゲート数の僅かな増加のみにより、Hamming重みを一定にする(レジスタcを最終的に0にする)という従来の制約条件を取り除き、回路の深さ及び幅を同一に保ったままHamming重みがk以上又はk以下の重ね合わせを構築することができる。
【0060】
第1又は第2実施形態によれば、Hamming重みがkの重ね合わせを構築する従来のアルゴリズムを、計算量を維持したまま拡張し、Hamming重みが範囲を持つ場合、特にk以上又はk以下の重ね合わせを効率的に構築することが可能となった。
さらに、使用者は、補助ビットを使う方式と補助ビットを使わない方式とを、用途に応じて選択的に利用することができる。
【0061】
なお、これにより、例えば量子ビットの初期状態を効率的に準備でき、量子コンピュータの利用が促進されることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進すると共に、イノベーションの拡大を図る」に貢献することが可能となる。
【0062】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0063】
量子回路生成装置1による量子回路生成方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0064】
1 量子回路生成装置
10 制御部
20 記憶部