(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、本発明の実施形態を説明する。
[定義]
まず実施形態で使用する用語を定義する。
論理和関数とは、長さ1以上の全ての有限ビット列からなる集合を定義域とし、{0,1}を値域とする関数であり、入力ビット列xがn個のビットx
1,…,x
nからなる列のとき、
【数2】
を出力する関数を意味する。ただし、nが1以上の整数であり、1≦w≦nを満たす整数wに対し、x
wは0または1(x
w∈{0,1})であり、|x|=x
1+…+x
nである。例えばnは2以上の整数であり、特に本形態ではnが3以上の整数のときに効果が高い。以下では、論理積関数も扱うが、この関数は入力ビット列xがn個のビットx
1,…,x
nからなる列のとき、
【数3】
を出力する。
【0010】
【数4】
は2を法とする加算(排他的論理和)を表し、記載表記の制約上、本形態ではこれを(+)と表記することもある。任意のα∈{0,1}に対し、α(+)1(αにNOT演算を適用した値)を
【数5】
と記述する。このとき
【数6】
という関係が成り立つことは容易に確認できる。
【0011】
入力桁数をnとするとき、論理和関数を計算する量子回路とは,n個の入力量子ビットと1個の出力量子ビットを持ち、任意のx
1,…,x
n,y∈{0,1}に対し、入力量子ビットの初期状態を|x
1〉…|x
n〉、出力量子ビットの初期状態を|y〉とすると、その量子回路を構成する基本演算を全て適用することにより、入力量子ビットの状態は変化せず、出力量子ビットの状態がy(+)x
1∨…∨x
n(2を法とした、yにx
1∨・・・∨x
nを加算した値の剰余)となるような量子回路のことである。論理積関数を計算する量子回路も同様に定義される。すなわち、論理積関数を計算する量子回路とは,n個の入力量子ビットと1個の出力量子ビットを持ち、任意のx
1,…,x
n,y∈{0,1}に対し、入力量子ビットの初期状態を|x
1〉…|x
n〉、出力量子ビットの初期状態を|y〉とすると、その量子回路を構成する基本演算を全て適用することにより、入力量子ビットの状態は変化せず、出力量子ビットの状態が|y(+)x
1∧…∧x
n〉となるような量子回路のことである。なお、「状態」とは「量子状態」と同義であり、「初期状態」とは「初期量子状態」と同義である。
【0012】
量子回路は入力量子ビットと出力量子ビット以外に、補助量子ビットを持つことができ、補助量子ビットは、初期化補助量子ビットと未初期化補助量子ビットに分類される。初期化補助量子ビットとは、初期状態が|0〉と定められたものであり、未初期化補助量子ビットとは、初期状態が|0〉と|1〉のどちらでも許されるものである。論理和関数を計算する量子回路が、u個の初期化補助量子ビットとq個の未初期化補助量子ビットを持つとき(ただし、uおよびqは正整数)、初期化量子ビット全体の初期状態は|0〉…|0〉であるが、未初期化補助量子ビット全体の初期状態は、任意のa
1,…,a
q∈{0,1}に対し、|a
1〉…|a
q〉であるとし、その量子回路を構成する全ての基本演算を適用した後で、これらの状態は変化しないものとする。すなわち、計算の途中で補助量子ビットはどのような状態になっても良いが、計算終了後には初期状態に戻らなければならないということを要請する。
【0013】
量子回路において、1個の計算ステップとは、その量子回路の中で並列に実行可能な基本演算のグループのことである。ただし、異なる量子ビット上の基本演算(NOT演算およびアダマール演算などの1量子ビット演算、並びにCNOT演算などの2量子ビット演算)は並列に実行可能であるとする。従って、λ個の計算ステップで論理和関数を計算する量子回路において、その量子回路に含まれる基本演算はλ個のグループに分類され、各グループにおいて、その中の全ての演算は並列に実行可能である。
【0014】
図6Aに示すように、NOT演算Xは、任意の状態|χ〉にある1個の量子ビットに対する演算であり、この量子ビットの状態を|χ(+)1〉にする(ただし、χ∈{0,1},χ(+)1=χ+1 mod 2)。
【0015】
図6Bに示すように、CNOT演算は、任意の状態|χ〉にある1個の制御ビットと任意の状態|γ〉にある1個の標的ビットとに対する演算である。CNOT演算後の当該制御ビットの状態は|χ〉であり、当該標的ビットの状態は|χ(+)γ〉である(ただし、χ,γ∈{0,1},χ(+)γ=χ+γ mod 2)。
【0016】
図6Cに示すように、アダマール(Hadamard)演算(変換)は、任意の状態|χ〉にある1個の量子ビットに対する演算であり、この量子ビットの状態を
【数7】
にする(ただし、χ∈{0,1})。
【0017】
図6Dに示すように、z-Toffoli演算は、任意の状態|χ
1〉,…,|χ
z−1〉にあるz−1個の制御ビット(ただし、zは3以上の整数)、および任意の状態|γ〉にある1個の標的ビットに対する演算である。z-Toffoli演算後の当該z−1個の制御ビットの状態はそれぞれ|χ
1〉,…,|χ
z−1〉であり、当該標的ビットの状態は|γ(+)χ
1…χ
z−1〉である(ただし、χ
1,…,χ
z−1,γ∈{0,1}である。χ
1…χ
z−1はχ
1,…,χ
z−1の積であり、χ
1,…,χ
z−1の論理積を表す)。z-Toffoli演算は、入力桁数がz−1の論理積関数χ
1∧…∧χ
z−1を計算する量子回路であることに注意する。z-Toffoli演算は3-Toffoli演算からなる量子回路によって計算できる。例えば、5-Toffoli演算は
図7に例示する3-Toffoli演算からなる量子回路によって計算できる。任意の状態|χ
1〉,…,|χ
4〉にある4個の制御ビット、任意の状態|γ〉にある1個の標的ビット、および任意の状態|a
1〉,|a
2〉にある2個の未初期化補助量子ビットに対し、この量子回路を適用することで、5-Toffoli演算を行うことができる。この演算後の当該4個の制御ビットの状態はそれぞれ|χ
1〉,…,|χ
4〉であり、当該標的ビットの状態は|γ(+)χ
1…χ
4〉であり、当該2個の未初期化補助量子ビットの状態はそれぞれ|a
1〉,|a
2〉である。
図8に例示するように、3-Toffoli演算は、CNOT演算、制御V演算および制御V演算の逆演算からなる量子回路によって計算できる。任意の状態|χ
1〉,|χ
2〉にある2個の制御ビット、任意の状態|γ〉にある1個の標的ビットに対し、この量子回路を適用することで、3-Toffoli演算を行うことができる。この演算後の当該2個の制御ビットの状態はそれぞれ|χ
1〉,|χ
2〉であり、当該標的ビットの状態は|γ(+)χ
1χ
2〉である。
【0018】
図9Aに示すように、制御V演算は、任意の状態|χ〉にある1個の制御ビットと任意の状態|γ〉にある1個の標的ビットとに対する演算である(ただし、χ,γ∈{0,1})。制御V演算後の当該制御ビットの状態は|χ〉であり、当該標的ビットの状態は以下である。ただし、iは虚数単位を表す。
【数8】
【0019】
図9Bに示すように、制御Vの逆演算は、任意の状態|χ〉にある1個の制御ビットと任意の状態|γ〉にある1個の標的ビットとに対する演算である(ただし、χ,γ∈{0,1})。制御V演算後の当該制御ビットの状態は|χ〉であり、当該標的ビットの状態は以下である。
【数9】
【0020】
図10に示すように、p-fanout演算は、任意の状態|γ〉にある1個の制御ビット、および任意の状態|χ
1〉,…,|χ
p−1〉にあるp−1個(ただし、pは2以上の整数)の標的ビットに対する演算である。p-fanout演算後の当該制御ビットの状態は|γ〉であり、当該p−1個の標的ビットの状態はそれぞれ|χ
1(+)γ〉,…,|χ
p−1(+)γ〉である(ただし、γ,χ
1,…,χ
p−1∈{0,1})。
【0021】
参考文献1(C. Moore, “Quantum circuits: fanout, parity, and counting,” arXiv:quant-ph/9903046, 1999.)で述べられている量子回路から、補助量子ビットを持たず、O(logp)個の計算ステップでp-fanout演算を実行する量子回路は容易に構成できる。一例として、p=2
κ+1のとき(ただし、κは1以上の整数)のp-fanout演算を実行する量子回路を述べる(なお、κ=0のとき、p-fanout演算はCNOT演算であるから、1個のCNOT演算だけからなる量子回路で実行できる)。次のような量子ビットを用意する。
・1個の制御ビットΓ
・p−1個の標的ビットΧ
1,…,Χ
p−1
Γの初期状態は|γ〉であり、Χ
1,…,Χ
p−1の初期状態はそれぞれ、|χ
1〉,…,|χ
p−1〉である。ただし、γ,χ
1,…,χ
p−1∈{0,1}である。この初期状態|γ〉|χ
1〉,…,|χ
p−1〉を|γ〉|χ
1(+)γ〉,…,|χ
p−1(+)γ〉に変換するp-fanout演算を行う量子回路を示す。この量子回路はCNOT演算だけから構成される。この量子回路による処理は以下のようになる。
【0022】
<ステップI>量子回路は、L=1,2,3,…,κについて1からκまで昇順に、次の処理を実行する。
【数10】
を制御ビットとし、
【数11】
を標的ビットとしたCNOT演算を適用する。ただし、jは0≦j≦2
κ−L−1を満たす整数であり、これら2
κ−L個のCNOT演算は並列に適用される。
<ステップII>次に量子回路はΓ制御ビットとし、Χ
1を標的ビットとしたCNOT演算を適用する。
<ステップIII>次に量子回路はステップIの逆演算を適用する。すなわち量子回路は、L=κ,κ−1,κ−2,…,1についてκから1まで降順に、次の処理を実行する。
【数12】
を制御ビットとし、
【数13】
を標的ビットとしたCNOT演算を適用する。ただし、jは0≦j≦2
κ−L−1を満たす整数であり、これら2
κ−L個のCNOT演算は並列に適用される。
【0023】
κ=3の場合(9-fanout)の量子回路は
図11のようになる。
【0024】
pがp=2
κ+1で表すことができない場合、p-fanout演算を行う量子回路は次のように構成される。まず、p<p’=2
κ+1となる最小のp’に対し、p=p’とした上述のステップI〜IIIを実行する量子回路を構成する。ただし、κは1以上の整数である。この量子回路は量子ビットΓ,Χ
1,…,Χ
p’−1を持つ。次に、Χp,Χp+1,…,Χ
p’−1のいずれかの量子ビットに適用されている演算をすべて削除する。これが求める量子回路である。例えば,p=8の場合、p’=9(κ=3)となり、
図11の回路において,Χ
8に適用されている2つのCNOT演算(最初のステップと最後のステップに含まれる)を削除したものが、8-fanout演算を実行する量子回路である。
【0025】
以上のように、任意のpに対し、p-fanout演算を実行する量子回路は補助量子ビットを持たない。p’に対応するκはκ≦ceil(log
2 p)を満たすので、この量子回路の計算ステップの個数はO(log
2 p)となる。
【0026】
また
図12Aに示すように、(p,q)−位相シフト演算は、任意の状態|χ
1〉,…,|χ
p−1〉にあるp−1個の制御ビット、および任意の状態|χ
p〉にある1個の標的ビットに対するp量子ビット演算である(ただし、χ
1,…,χ
p−1,χ
p∈{0,1}、pは2以上の整数であり、qは1以上の整数である)。(p,q)−位相シフト演算後の当該p−1個の制御ビットおよび1個の標的ビットの状態は
【数14】
である。
【0027】
非特許文献1で述べられている量子回路から、補助量子ビットを持たず、O(p)個の計算ステップで(p,q)−位相シフト演算を実行する量子回路は、1個の(2,q)−位相シフト演算、2個の(2,q+1)−位相シフト演算の逆演算、および2個の(p-1)-Toffoli演算から構成できることが分かる。例えば、p=9のときの(p,9)−位相シフト演算を実行する量子回路は
図13のようになる。この8-Toffoli演算は、
図17の量子回路の最初と最後の演算ステップのNOT演算をすべて取り除き、入力量子ビットの状態|x
1〉,…,|x
7〉を|χ
1〉,…,|χ
7〉に置換し、出力量子ビットの状態|y〉を|χ
9〉に置換し、未初期化補助量子ビットの状態|a
1〉を|χ
8〉に置換した量子回路によって計算できる。
【0028】
図12Bに示すように、(p,q)−位相シフトの逆演算は、任意の状態|χ
1〉,…,|χ
p−1〉にあるp−1個の制御ビット、および任意の状態|χ
p〉にある1個の標的ビットに対するp量子ビット演算である(ただし、χ
1,…,χ
p−1,χ
p∈{0,1}、pは2以上の整数であり、qは1以上の整数である)。(p,q)−位相シフトの逆演算後の当該p−1個の制御ビットおよび1個の標的ビットの状態は
【数15】
である。
【0029】
[実施形態]
次に、図面を参照して実施形態の概要を説明する。
<構成>
図1および
図2に例示するように、本形態の論理和演算装置1は、演算部1101〜1110を含む量子演算部11、演算部1211〜1214を含む量子演算部12、n個の入力量子ビットX
1,…,X
n、1個の出力量子ビットY、m個の初期化補助量子ビットI(1),…,I(m)、nm(m+3)/2個の未初期化補助量子ビットを有する。nは2以上の整数であるが、nが3以上の整数のときに計算ステップの削減効果が顕著である。m=ceil(log
2(n+1))であり、ceil(・)は(・)の天井関数を表す。未初期化補助量子ビットからなる集合は、部分集合A(1),…,A(m),B(1),…,B(m)からなる。部分集合A(k)はn個の未初期化補助量子ビットA
1(k),…,A
n(k)からなる(
図2A)。ただし、kは1≦k≦mを満たす整数(k=1,…,m)である。部分集合B(k)はk個の部分集合B(k,1),…,B(k,k)からなり、部分集合B(k,r)はn個の未初期化補助量子ビットB
1(k,r),…,B
n(k,r)からなる(
図2B)。ただし、rは1≦r≦kを満たす整数(r=1,…,k)である。すなわち部分集合B(k)は、kn個の未初期化補助量子ビットB
1(k,r),…,B
n(k,r)(ただし、1≦k≦m,1≦r≦k)からなる。
【0030】
論理和演算装置1は周知の量子コンピュータを用いて実現できる。例えば、イオントラップ量子コンピュータを用いる場合、イオンの基底状態と励起状態を利用して量子ビットを実現し、イオンを直線上に並べて各演算を行う。アダマール演算を含む1量子ビットユニタリ演算は個々のイオンに狙いを定めたレーザービームによって実現され、2量子ビット演算であるCNOT演算も同様に実現される。一般の2量子ビット演算は、1量子ビット演算とCNOT演算を組み合わせて実現される。
【0031】
<処理>
n個のビットx
1,…,x
nからなる入力ビット列xに前述の論理和関数(式(1))を適用し、論理和x
1∨…∨x
nを得る処理の概要を説明する。ただし、x
w∈{0,1}であり、wは1≦w≦nを満たす整数である。
【0032】
図14Aに例示するように、まず量子演算部11(第1量子演算部)が、初期状態が|x
1〉,…,|x
n〉であるn個の入力量子ビットX
1,…,X
n、初期状態が|y〉である1個の出力量子ビットY、初期化補助量子ビット、および未初期化補助量子ビットを用い、k=1,…,mについて
【数16】
で表される状態|φ
k〉を生成する。ただし、|x|=x
1+…+x
nである(ステップS1)。
【0033】
次に、量子演算部12(第2量子演算部)が、状態|φ
1〉…|φ
m〉からφ
1,…,φ
mの論理和を表す状態を生成する。言い換えると、状態|φ
1〉…|φ
m〉に対する量子演算を行ってφ
1,…,φ
mの論理和を表す状態を生成する(ステップS2)。
【0034】
ここで、ステップS1で得られる状態|φ
1〉…|φ
m〉に対応するφ
1,…,φ
mの論理和φ
1∨…∨φ
mを表す状態は、x
1,…,x
nの論理和x
1∨…∨x
nを表す状態と等しくなる。例えばn=3のときにはm=2となり、ステップS1では次のような2つの1量子ビット状態が生成される。
【数17】
【0035】
これらが次の性質を持つことは容易に確かめられる(例えば、参考文献2:P. Hoyer and R. Spalek, “Quantum fan-out is powerful,” Theory of Computing, Vol. 1, pp. 81-103, 2005.)。
・x
1∨x
2∨x
3=1(x
1,x
2,x
3の中の少なくとも1つは1)の場合、上の2つの状態(式(2)(3))の中の少なくとも1つは|1〉。
・x
1∨x
2∨x
3=0(x
1,x
2,x
3の全てが0)の場合、上の2つの状態(式(2)(3))は全て|0〉。
従って、x
1∨x
2∨x
3の計算は、状態|φ
1〉,|φ
2〉の論理和、すなわち論理和φ
1∨φ
2を表す状態を得る計算に帰着される。そのため、ステップS2で状態|φ
1〉…|φ
m〉からφ
1,…,φ
mの論理和を表す状態を生成することで、x
1∨x
2∨x
3の演算結果を得ることができる。
【0036】
本形態では、初期化補助量子ビットおよび未初期化補助量子ビットを用い、x
1,…,x
nの論理和の計算をφ
1,…,φ
mの論理和の計算に帰着させることで、従来よりも少ない計算ステップで論理和関数を計算できる。
【0037】
<ステップS1の詳細>
ステップ1の詳細を説明する。
次の量子ビットを用いる(
図1,
図2Aおよび
図2B)。
・n個の入力量子ビットX
1,…,X
n
・1個の出力量子ビットY
・m個の初期化補助量子ビットI(1),…,I(m)
・nm(m+3)/2個の未初期化補助量子ビット(未初期化補助量子ビットの構成は前述の通り)
【0038】
初期状態は次の通りである。
X
1,…,X
nの初期状態はそれぞれ|x
1〉,…,|x
n〉
Yの初期状態は|y〉
I(1),…,I(m)の初期状態はそれぞれ|0〉,…,|0〉
任意の1≦k≦mに対し、A
1(k),…,A
n(k)の初期状態はそれぞれ|a
1(k)〉,…,|a
n(k)〉
任意の1≦k≦mおよび1≦r≦kに対し、B
1(k,r),…,B
n(k,r)の初期状態はそれぞれ|b
1(k,r)〉,…,|b
n(k,r)〉
【0039】
回路構成の記述を容易にするため、全量子ビットの状態を図示する場合、X
1,…,X
nの状態を先頭に記述し、その後は、k=1からmまで順に、各kについてA
1(k),…,A
n(k)の状態,I(k)の状態,B(k,1),…,B(k,k)の状態という順序で記述し、最後にYの状態を記述する。また、任意の1≦r≦kに対するB(k,r)の状態は、B
1(k,r)の状態,…,B
n(k,r)の状態の順に記述する。ステップS1では、I(k)(ただし、1≦k≦m)の状態が|φ
k〉となり、他の量子ビットの状態は変化しない。例えば、n=3の場合、m=2であり、3個の入力量子ビットX
1,X
2,X
3,1個の出力量子ビットY,2個の初期化補助量子ビットI(1),I(2),15個の未初期化補助量子ビットA
1(1),A
2(1),A
3(1),A
1(2),A
2(2),A
3(2),B
1(1,1),B
2(1,1),B
3(1,1),B
1(2,1),B
2(2,1),B
3(2,1),B
1(2,2),B
2(2,2),B
3(2,2)の状態を上で述べた順序で記述すると、次のようになる。
|x
1〉|x
2〉|x
3〉|a
1(1)〉|a
2(1)〉|a
3(1)〉|0〉|b
1(1,1)〉|b
2(1,1)〉|b
3(1,1)〉|a
1(2)〉|a
2(2)〉|a
3(2)〉|0〉|b
1(2,1)〉|b
2(2,1)〉|b
3(2,1)〉|b
1(2,2)〉|b
2(2,2)〉|b
3(2,2)〉|y〉
【0040】
ステップS1の処理により、この状態が次の状態になる。
|x
1〉|x
2〉|x
3〉|a
1(1)〉|a
2(1)〉|a
3(1)〉|φ
1〉|b
1(1,1)〉|b
2(1,1)〉|b
3(1,1)〉|a
1(2)〉|a
2(2)〉|a
3(2)〉|φ
2〉|b
1(2,1)〉|b
2(2,1)〉|b
3(2,1)〉|b
1(2,2)〉|b
2(2,2)〉|b
3(2,2)〉|y〉
【0041】
図14に例示するように、ステップS1はm個のステージS(1),…,S(m)(ステップS11−1〜S11−m)を、S(1),…,S(m)の順に実行する。すなわち、s’を2≦s’≦mを満たす整数とすると、ステージS(s’)はステージS(s’−1)の後に実行される。
【0042】
≪ステージS(s)の詳細≫
図3,
図4,
図15を用いてステージS(s)の詳細を説明する。ただし、sは1≦s≦mを満たす整数である。ただし、
図3はn=3,m=2,s=1の例であり、
図4はn=3,m=2,s=2の例である。
【0043】
まず演算部1101(第1演算部)が、s≦k(s)≦mについて、I(k(s))にアダマール演算を適用する(ステップS111−s)。
【0044】
次に演算部1102(第2演算部)が、s≦k(s)≦mについて、I(k(s))を制御ビットとし、B
1(k(s),s),…,B
n(k(s),s)を標的ビットとした(n+1)-fanout演算を並列に適用する(ステップS112−s)。
【0045】
s≧2のときには、次に演算部1103(第3演算部)が、s≦k(s)≦mと1≦j≦nについて、A
j(k(s))を制御ビットとし、B
j(k(s),1),…,B
j(k(s),s−1)を標的ビットとしたs-fanout演算を並列に適用する。s=1のときには、演算部1103は何の演算も適用しない(ステップS113−s)。
【0046】
s=1のときには、次に演算部1104(第4演算部)が、s≦k(s)≦mと1≦j≦nについて、A
j(k(s))を制御ビットとし、B
j(k(s),s)を標的ビットとした(s+1,k(s)-s+1)-位相シフト演算の逆演算を並列に適用する。s≧2のときには、演算部1104は、s≦k(s)≦mと1≦j≦nについて、A
j(k(s))およびB
j(k(s),1),…,B
j(k(s),s−1)を制御ビットとし、B
j(k(s),s)を標的ビットとした(s+1,k(s)-s+1)-位相シフト演算の逆演算を並列に適用する(ステップS114−s)。
【0047】
次に演算部1105(第5演算部)が、1≦j≦nについて、X
jを制御ビットとし、A
j(s),A
j(s+1),…,A
j(m)を標的ビットとした(m-s+2)-fanout演算を並列に適用する(ステップS115−s)。
【0048】
s=1のときには、次に演算部1106(第6演算部)が、s≦k(s)≦mと1≦j≦nについて、A
j(k(s))を制御ビットとし、B
j(k(s),s)を標的ビットとした(s+1,k(s)-s+1)-位相シフト演算を並列に適用する。s≧2のときには、演算部1106は、s≦k(s)≦mと1≦j≦nについて、A
j(k(s))およびB
j(k(s),1),…,B
j(k(s),s−1)を制御ビットとし、B
j(k(s),s)を標的ビットとした(s+1,k(s)-s+1)-位相シフト演算を並列に適用する(ステップS116−s)。
【0049】
次に演算部1107(第7演算部)が、1≦j≦nについて、X
jを制御ビットとし、A
j(s),A
j(s+1),…,A
j(m)を標的ビットとした(m-s+2)-fanout演算を行う(ステップS117−s:ステップS115−sと同じ)。
【0050】
s≧2のときには、次に演算部1108(第8演算部)が、s≦k(s)≦mと1≦j≦nについて、A
j(k(s))を制御ビットとし、B
j(k(s),1),…,B
j(k(s),s−1)を標的ビットとしたs-fanout演算を並列に適用する。s=1のときには、演算部1108は何の演算も適用しない(ステップS118−s:ステップS113−sと同じ)。
【0051】
次に演算部1109(第9演算部)が、s≦k(s)≦mについて、I(k(s))を制御ビットとし、B
1(k(s),s),…,B
n(k(s),s)を標的ビットとした(n+1)-fanout演算を並列に適用する(ステップS119−s:ステップS112−sと同じ)。
【0052】
次に演算部1101(第1演算部)が、s≦k(s)≦mについて、I(k(s))にアダマール演算を適用する(ステップS120−s:ステップS111−sと同じ)。
【0053】
以上により、m個の初期化補助量子ビットI(1),…,I(m)の状態がそれぞれ|φ
1〉,…,|φ
m〉となる(この理由については後述する)。
【0054】
<ステップS2の詳細>
図5,
図16を用いてステップ2の詳細を説明する。ただし、
図5はn=3,m=2の例である。
【0055】
上述したステップS1の後、まず、演算部1211(第11演算部)は、1≦k≦mについて、I(k)にNOT演算Xを並列に適用する(ステップS21)。
【0056】
次に、演算部1212(第12演算部)は、I(1),…,I(m)を制御ビットとし、Yを標的ビットとした(m+1)-Toffoli演算を並列に適用する。(m+1)-Toffoli演算は、論理和関数x
1∨…∨x
n(ただし、n=m)を計算する量子回路から最初と最後の計算ステップのNOT演算を取り除いた量子回路によって計算できる(例えば、非特許文献1参照)。なお、このような量子回路は1個の未初期化補助量子ビットを使うが、(m+1)-Toffoli演算の制御ビットおよび標的ビット以外の任意の量子ビット(例えば、入力量子ビットX
1)をこの未初期化補助量子ビットに対応させればよい(ステップS22)。
【0057】
次に、演算部1213(第13演算部)は、YにNOT演算Xを適用し、これと並列にステップS21と同じ演算、すなわち1≦k≦mについてI(k)へのNOT演算Xを適用する(ステップS23)。
【0058】
次に、演算部1214(第14演算部)は、ステージS(1),…,S(m)の逆演算RS(m),…,RS(1)を適用する。ただし、逆演算RS(s)はステージS(s)の逆演算であり、2≦s’≦mを満たす整数s’について逆演算RS(s’−1)は逆演算RS(s’)の後に実行される。すなわち、ステージS(m)の逆演算RS(m)を実行する量子回路から始めて、ステージS(1)の逆演算RS(1)を実行する量子回路まで順に適用する。各ステージS(s)の逆演算RS(s)を実行する量子回路は、各ステージS(s)の量子回路において、各ゲートをその逆演算と置換し、適用する順番を逆転させたものである。HとCNOTの逆演算はそれぞれそれ自身である。また、ある演算に対し、その逆演算の逆演算は、元の演算であることに注意する(ステップS24)。
【0059】
ステップS22までの演算とステップ23の中のYに適用するNOT演算Xにより、|φ
1〉,…,|φ
m〉に対する論理和が計算され、Yが論理和x
1∨…∨x
nを表す状態|y(+)x
1∨…∨x
n〉となる。また、ステップS23の中でステップS21と同じ演算を適用しているのはI(k)の状態を|φ
k〉に戻すためであり、Y以外の量子ビットの状態はステップS1の出力状態に戻る。従って、ステップ24により、Y以外の量子ビットの状態は初期状態に戻る。ステップS1はYに演算を適用しないことに注意する。
【0060】
<ステップS1で正しく|φ
1〉,…,|φ
m〉が生成される理由>
ステップS1で正しく|φ
1〉,…,|φ
m〉が生成される理由を説明する。簡単のため、n=3(従って、m=2)の場合について述べる。
【0061】
≪|φ
1〉について≫
図3に例示したように、|φ
1〉はステージS(1)(ステップS11−1)で用意が完了する。簡単のため、I(1)とB
1(1,1),B
2(1,1),B
3(1,1)だけの状態変化を記述する。これらの初期状態は|0〉|b
1(1,1)〉|b
2(1,1)〉|b
3(1,1)〉であり、ステップS114−s終了後、状態は次のようになる。
【数18】
ただし、α=−a
1(1)(1−2b
1(1,1))−a
2(1)(1−2b
2(1,1))−a
3(1)(1−2b
3(1,1))である。さらにステップS116−s終了後、状態は次のようになる。
【数19】
ただし、β=x
1−2(a
1(1)(+)b
1(1,1))x
1+x
2−2(a
2(1)(+)b
2(1,1))x
2+x
3−2(a
3(1)(+)b
3(1,1))x
3である。さらに、ステージS(1)(ステップS11−1)終了後、状態は次のようになる。
【数20】
ここで、βの中の2の倍数の項が
【数21】
の値に影響しないことに注意する。実際、
【数22】
であり、βの中の2の倍数である他の項も同様に計算され、
【数23】
となる。従って、式(4)の最終状態は次と等しい。
【数24】
これは所望の量子状態
【数25】
である(式(2))。
【0062】
≪|φ
2〉について≫
図3および
図4に例示したように、|φ
2〉はステージS(1)(ステップS11−1)とS(2)(ステップS11−2)で用意が完了する。ステージS(1)(ステップS11−1)による状態変化は|φ
2〉の場合と同様であり、ステージS(1)後のI(2)の状態は次のようになる。
【数26】
ただし、η=x
1−2(a
1(2)(+)b
1(2,1))x
1+x
2−2(a
2(2)(+)b
2(2,1))x
2+x
3−2(a
3(2)(+)b
3(2,1))x
3である。|φ
1〉の場合と異なり、ηの中の2の倍数の項が
【数27】
の値に影響しないとは言えないことに注意する。これは、eの指数部分の値の分母が2ではなく、2
2であるからである。ステージS(2)(ステップS11−2)による状態変化は、ステージS(1)(ステップS11−1)と同様であり、I(2)の状態は次のようになる。
【数28】
ただし、δ=x
1−2
2(a
1(2)(+)b
1(2,1))(a
1(2)(+)b
1(2,2))x
1+x
2−2
2(a
2(2)(+)b
2(2,1))(a
2(2)(+)b
2(2,2))x
2+x
3−2
2(a
3(2)(+)b
3(2,1))(a
3(2)(+)b
3(2,2))x
3である。δの中の2
2の倍数の項が
【数29】
の値に影響しないことは、|φ
1〉を用意する場合に、βの中の2の倍数の項が
【数30】
の値に影響しなかったことと同様である。従って、この状態は所望の状態
【数31】
と等しい。
【0063】
<補助量子ビットと計算ステップの個数>
前述のように、本形態の論理和関数を計算する量子回路は、m=ceil(log
2(n+1))=O(logn)個の初期化補助量子ビットを持ち、nm(m+3)/2=O(n (log
2n)
2)個の未初期化補助量子ビットを持つ。
【0064】
この量子回路の計算ステップの個数を考える。任意の1≦s≦mに対し、ステージS(s)の計算ステップの個数は以下のようになる。
・ステップS111−s:1
・ステップS112−s:O(log
2(n+1))
・ステップS113−s:O(log
2 s)
・ステップS114−s:O(s+1)
・ステップS115−s:O(log
2(m−s+2))
・ステップS116−s〜S120−s:ステップS111−s〜S115−sと同じ
s≦m=O(log
2n)であるから、ステージS(s)のステップの個数はO(log
2 n)となり、ステップS1のステップの個数はO(mlog
2 n)=O((log
2 n)
2)となる。
【0065】
ステップS2については次のようになる。
・ステップS21:1
・ステップ22:O(m+1)
・ステップ23:1
・ステップ24:ステップS1と同じ
従って、ステップS2の計算ステップの個数はO((log
2 n)
2)となり、本形態の量子回路全体のステップの個数はO((log
2n)
2)となる。
【0066】
<本形態の特徴>
多数の初期化補助量子ビットを実現するのは物理的に困難であるが、多数の未初期化補助量子ビットを実現するのは、初期化補助量子ビットと比較して容易である。また、量子回路の計算ステップの個数が多いほど計算時間が長くなる。従って、物理的実現性の高さと短い計算時間を同時に実現するためには、未初期化補助量子ビットを多く使ったとしても、初期化補助量子ビットの個数と計算ステップの個数を同時に小さくするほうがよい。未初期化補助量子ビットを多く使ったとしても、初期化補助量子ビットの個数と計算ステップの個数が同時に対数多項式(O((log
2 n)
c),cは0以上の定数)で表現される程小さい量子回路の構成方法は知られていなかった。
【0067】
本形態の量子回路では、O(n (log
2n)
2)個の未初期化補助量子ビットおよびO(log
2n)個の初期化補助量子ビットを利用し、O((log
2n)
2)個の計算ステップで論理和関数を計算する。これにより、物理的実現性の高さと短い計算時間を同時に実現できる。
【0068】
[その他の変形例等]
なお、本発明は上述の実施形態に限定されるものではない。上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。