[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP4847914B2 - 量子加算演算方法及び量子加算演算装置 - Google Patents

量子加算演算方法及び量子加算演算装置 Download PDF

Info

Publication number
JP4847914B2
JP4847914B2 JP2007107238A JP2007107238A JP4847914B2 JP 4847914 B2 JP4847914 B2 JP 4847914B2 JP 2007107238 A JP2007107238 A JP 2007107238A JP 2007107238 A JP2007107238 A JP 2007107238A JP 4847914 B2 JP4847914 B2 JP 4847914B2
Authority
JP
Japan
Prior art keywords
qubits
qubit
quantum
auxiliary
toffoli
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007107238A
Other languages
English (en)
Other versions
JP2008269012A (ja
Inventor
康博 高橋
豪 加藤
泰人 河野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2007107238A priority Critical patent/JP4847914B2/ja
Publication of JP2008269012A publication Critical patent/JP2008269012A/ja
Application granted granted Critical
Publication of JP4847914B2 publication Critical patent/JP4847914B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、量子コンピュータにおいて加算演算を行う技術に関し、特に、効率的な加算演算を行うための技術に関する。
O(n)個の基本演算とO(logn)個の計算ステップとO(n)個の補助ビットとを用い、加算演算を行う量子回路が知られている(例えば、非特許文献1参照)。なおO(α)は十分大きなαに対してαの定数倍以下となる値を意味する(O記法)。また、「量子回路」とは、量子ビットに対する操作内容の時系列表現を意味する。
非特許文献1の量子回路は、2つの2進数a=an−1…a〔a∈{0,1},p∈{0,…,n−1}〕及びb=bn−1…b〔b∈{0,1}〕が入力として与えられたとき、a+b=s…s〔s∈{0,1},q∈{0,…,n}〕を算出し、s…sとaとを出力する量子回路である。すなわち、初期量子状態がそれぞれ|a>,…,|an−1>であるn個の量子ビットQx,…,Qxn−1と、初期量子状態がそれぞれ|b>,…,|bn−1>であるn個の量子ビットQy,…,Qyn−1と、初期量子状態がそれぞれ|0>であるO(n)個の補助量子ビットとに対し、NOT演算,CNOT演算及びToffoli演算を基本演算とした量子操作を施し、量子状態がそれぞれ|a>,…,|an−1>であるn個の量子ビットQx,…,Qxn−1と、量子状態がそれぞれ|s>,…,|sn−1>であるn個の量子ビットQy,…,Qyn−1と、量子状態が|s>である1個の補助量子ビットと、量子状態が|0>である複数の補助量子ビットとを出力する。なお、補助量子ビットとは、補助ビットとして利用する量子ビットを意味する。
図17,18は、非特許文献1に記載された加算演算用の量子回路の例示である。なお、図17は演算の前段の量子操作を示す量子回路であり、図18は図17の量子操作の後に行われる後段の量子操作を示す量子回路である。また、図17,18は、8ビット同士(n=8)の加算演算を行う場合の例である。さらに、図17,18中のc(1≦i≦n)は、
Figure 0004847914
である。また、
Figure 0004847914
が成り立つことが知られている。
図17に示すように、非特許文献1の量子回路の前段では、初期量子状態がそれぞれ|a>,…,|an−1>であるn個の量子ビットQx,…,Qxn−1と、初期量子状態がそれぞれ|b>,…,|bn−1>であるn個の量子ビットQy,…,Qyn−1とに対し、CNOT演算によって1ビット毎の加算処理を行い、補助量子ビットを用いたToffoli演算及びCNOT演算によって1ビット毎の繰上げ処理を行っている。また、図18に示すように、非特許文献1の量子回路の後段では、前段で行った演算の一部の逆演算とNOT演算とによって、補助量子ビットの量子状態を|0>に戻す処理を行っている。なお、図17,18の量子回路は、容易にnビット同士の加算用の量子回路に拡張できる。
T. G. Draper, S. A. Kutin, E. M. Rains, and K. M. Svore, A logarithmic-depth quantum carry-lookahead adder, Quantum Infomation and Computation, Vol. 6 No. 4&5, pp. 351-369, 2006
非特許文献1の量子回路では、O(n)個の基本演算による操作をO(logn)個の計算ステップで実行し、その際O(n)個の補助量子ビットを利用している。しかし、演算に必要となる量子ビットの数が多くなればなるほど、それらを実現し、協調的に操作することが物理的に困難となる。よって、出来るだけ少ない数の補助量子ビットによって量子回路を構成することが望ましい。
本発明はこのような点に鑑みてなされたものであり、従来よりも少ない数の補助量子ビットで量子加算演算が可能な技術を提供することを目的とする。
本発明では上記課題を解決するために、複数の量子ビット単位(加算処理ブロック単位)で加算処理及び繰上げ処理を行う。
すなわち、本発明では、2つの2進数a=an−1…a〔a∈{0,1},p∈{0,…,n−1},n≧4〕及びb=bn−1…b〔b∈{0,1}〕に対し、a+b=s…s〔s∈{0,1},q∈{0,…,n}〕を算出するために、初期量子状態がそれぞれ|a>,…,|an−1>であるn個の量子ビットQx,…,Qxn−1と、初期量子状態がそれぞれ|b>,…,|bn−1>であるn個の量子ビットQy,…,Qyn−1と、初期量子状態が|0>である1個の補助量子ビットQz0,1と、初期量子状態がそれぞれ|0>である2・{(n/k)−1}〔kはnを割り切る2以上n未満の整数の定数である〕個の補助量子ビットQz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−1,1,Qz(n/k)−1,2と、初期量子状態がそれぞれ|0>である
Figure 0004847914
個の補助量子ビットQz(n/k),…,Qz(n/k)+m−1と、が少なくとも存在し、量子ビットQx(i+1)・k−1,…,Qxi・kと量子ビットQy(i+1)・k−1,…,Qyi・kとをi番目〔0≦i≦(n/k)−1(iは整数)〕の加算処理ブロックAとし、当該加算処理ブロックAに属する初期量子状態の量子ビットQx(i+1)・k−1,…,Qxi・k及び量子ビットQy(i+1)・k−1,…,Qyi・kと、初期量子状態の補助量子ビットQzi,1とに対してHIGHBIT演算を施し、量子ビットQx(i+1)・k−1,…,Qxi・kの量子状態をそれぞれ|a(i+1)・k−1>,…,|ai・k>とし、量子ビットQy(i+1)・k−1,…,Qyi・kの量子状態をそれぞれ|b(i+1)・k−1>,…,|bi・k>とし、補助量子ビットQzi,1の量子状態を|c>〔cは、2つの2進数a(i+1)・k−1…ai・kとb(i+1)・k−1…bi・kの和を2進表記した場合の最上位ビット値〕とする処理を、各加算処理ブロックAについてそれぞれ実行するHIGHBIT演算過程と、補助量子ビットQz0,1,Qz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−1,1,Qz(n/k)−1,2,Qz(n/k),…,Qz(n/k)+m−1を用い、補助量子ビットQzw,1の量子状態を|d>〔d∈{0,1}は、加算処理ブロックAから加算処理ブロックAw+1への繰上げ値〕とする処理を、0≦w≦(n/k)−2(wは整数)についてそれぞれ実行し、さらに補助量子ビットQz(n/k)−1,1の量子状態を|s>とする処理を実行する繰上げ値演算過程と、加算処理ブロックAに属する量子ビットQxk−1,…,Qxと量子ビットQyk−1,…,Qyとに対してSUM演算を施し、量子ビットQxk−1,…,Qxの量子状態をそれぞれ|ak−1>,…,|a>とし、量子ビットQyk−1,…,Qyの量子状態をそれぞれ|sk−1>,…,|s>とする第1のSUM演算過程と、加算処理ブロックAに属する量子ビットQx(i+1)・k−1,…,Qxi・k及び量子ビットQy(i+1)・k−1,…,Qyi・kと、補助量子ビットQzi−1,1とに対して繰上げSUM演算を施し、量子ビットQx(i+1)・k−1,…,Qxi・kの量子状態をそれぞれ|a(i+1)・k−1>,…,|ai・k>とし、量子ビットQy(i+1)・k−1,…,Qyi・kの量子状態をそれぞれ|s(i+1)・k−1>,…,|si・k>とし、補助量子ビットQzi−1,1の量子状態を維持する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第2のSUM演算過程と、を実行する。
このように、本発明では、加算処理ブロック単位で繰上げ値を求め(HIGHBIT演算過程)、補助量子ビットを用いて当該加算処理ブロック単位の繰上げ処理及び加算値の最上位ビット値の算出を行い(繰上げ値演算過程)、加算処理ブロック単位で加算処理を行う。これにより、量子ビット単位で加算処理を行い、補助量子ビットを用いて量子ビット単位で繰上げ処理を行う場合に比べ、処理に必要な補助量子ビット数を削減できる。なお、本発明において「量子ビット(又は補助量子ビット)の量子状態を|α>とする」とは、量子ビット(又は補助量子ビット)の量子状態を、|α>と他の量子状態との重ね合わせ状態とすることをも含む概念である。
また、本発明における上記繰上げ値演算過程は、例えば、量子ビットQxi・k+jを制御ビットとし、量子ビットQyi・k+jを目標ビットとしたCNOT演算を0≦j≦k−1(jは整数)についてそれぞれ実行する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第1のCNOT演算過程と、上記第1のCNOT演算過程による処理がなされたk個の量子ビットQyi・k,…,Qyi・k+k−1を制御ビットとし、補助量子ビットQzi,2を目標ビットとしたk-Toffoli演算を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第1のk-Toffoli演算過程と、第1のk-Toffoli演算過程によるk-Toffoli演算が施された補助量子ビットQzi,2を補助量子ビットQpL−1(i)と表現した場合における、補助量子ビットQpt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQz(n/k),…,Qz(n/k)+m−1うちの1つの補助量子ビットである補助量子ビットQp(i)を目標ビットとしたToffoli演算を、目標ビットを重複させることなく、i=1からiを1ずつ増加させながら
Figure 0004847914
まで実行する処理を、t=Lからtを1ずつ増加させながら
Figure 0004847914
まで実行する第1のToffoli演算過程と、
HIGHBIT演算過程による処理が施された補助量子ビットQzi,1を補助量子ビットQgL−1(i)と表現した場合における、補助量子ビットQgt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQgt−1(2i+1)を目標ビットとしたToffoli演算〔当該Toffoli演算後の補助量子ビットQgt−1(2i+1)を補助量子ビットQg(i)と表現〕を、i=0からiを1ずつ増加させながら
Figure 0004847914
まで実行する処理を、t=Lからtを1ずつ増加させながら
Figure 0004847914
まで実行する第2のToffoli演算過程と、u=2・i/k−1とした場合における補助量子ビットQzu,1,Qpt−1(2i)を制御ビットとし、補助量子ビットQgt−1(2i)を目標ビットとしたToffoli演算を、i=1からiを1ずつ増加させながら
Figure 0004847914
まで実行する処理を、
Figure 0004847914
からtを1ずつ減少させながらt=Lまで実行する第3のToffoli演算過程と、補助量子ビットQpt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQp(i)を目標ビットとしたToffoli演算を、
Figure 0004847914
からiを1ずつ減少させながらi=1まで実行する処理を、
Figure 0004847914
からtを1ずつ減少させながらt=Lまで実行する第4のToffoli演算過程と、第4のToffoli演算過程による処理の後、k個の量子ビットQyi・k,…,Qyi・k+k−1を制御ビットとし、補助量子ビットQzi,2を目標ビットとしたk-Toffoli演算を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第2のk-Toffoli演算過程と、第2のk-Toffoli演算過程による処理の後、量子ビットQxi・k+jを制御ビットとし、量子ビットQyi・k+jを目標ビットとしたCNOT演算を0≦j≦k−1(jは整数)についてそれぞれ実行する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第2のCNOT演算過程と、を有する。
また、本発明において好ましくは、第1のSUM演算過程及び第2のSUM演算過程による処理の後、量子ビットQy(i+1)・k−1,…,Qyi・kに対してNOT演算を施す処理を0≦i≦(n/k)−2(iは整数)についてそれぞれ実行する第1のNOT演算過程と、上記繰上げ値演算過程が具備する、補助量子ビットQzw,1の量子状態を|d>とする処理の逆演算を、0≦w≦(n/k)−2(wは整数)についてそれぞれ実行し、さらに、量子ビットQx(w+1)・k−1,…,Qxw・kと量子ビットQy(w+1)・k−1,…,Qyw・kと補助量子ビットQzw,1とに対する上記HIGHBIT演算の逆演算であるHIGHBIT-REV演算を0≦w≦(n/k)−2(wは整数)についてそれぞれ実行する逆演算過程と、逆演算過程による処理の後、量子ビットQy(i+1)・k−1,…,Qyi・kに対してNOT演算を施す処理を0≦i≦(n/k)−2(iは整数)についてそれぞれ実行する第2のNOT演算過程と、をさらに実行する。なお、αをβに変換する処理の逆演算とは、βをαに変換する処理の意味である。
これにより、補助量子ビットの量子状態を初期化でき、補助量子ビットの再利用が可能となる。
また、量子ビットQx(i+1)・k−1,…,Qxi・kと量子ビットQy(i+1)・k−1,…,Qyi・kと補助量子ビットQzi,1とに対する上記HIGHBIT演算は、例えば、量子ビットQxi・k,Qyi・kを制御ビットとし、補助量子ビットQzi,1を目標ビットとするToffoli演算を行う過程と、k≧3である場合にのみ行われる、量子ビットQxi・k+wを第1量子ビットとし、量子ビットQyi・k+wを第2量子ビットとし、補助量子ビットQzi,1を第3量子ビットとしたMAJ演算と、量子ビットQxi・k+w,Qyi・k+wを制御ビットとし、量子ビットQxi・kを目標ビットとしたToffoli演算とを、それぞれ、wをw=1から1ずつ増加させてw=k−2まで実行する過程と、量子ビットQx(i+1)・k−1を第1量子ビットとし、量子ビットQy(i+1)・k−1を第2量子ビットとし、補助量子ビットQzi,1を第3量子ビットとしたMAJ演算を実行する過程と、k≧3である場合にのみ行われる、量子ビットQxi・kを制御ビットとし、量子ビットQyi・k+wを目標ビットとしたCNOT演算と、量子ビットQxi・kを制御ビットとし、量子ビットQxi・k+wを目標ビットとしたCNOT演算と、量子ビットQxi・k+w−1,Qyi・k+w−1を制御ビットとし、量子ビットQxi・kを目標ビットとしたToffoli演算とを、それぞれ、wをw=k−1から1ずつ減少させてw=2まで実行する過程と、量子ビットQyi・kにNOT演算を施す過程と、k≧3である場合にのみ行われる、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQyi・k+wを目標ビットとしたToffoli演算と、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQxi・k+wを目標ビットとしたToffoli演算とを、それぞれ、2≦w≦k−1(wは整数)について実行する過程と、量子ビットQyi・kにNOT演算を施す過程と、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQyi・k+1を目標ビットとしたToffoli演算と、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQxi・k+1を目標ビットとしたToffoli演算とを、それぞれ実行する過程と、を実行する演算であり、上記MAJ演算は、第3量子ビットを制御ビットとし、第2量子ビットを目標ビットとしたCNOT演算を行う第1過程と、第3量子ビットを制御ビットとし、第1量子ビットを目標ビットとしたCNOT演算を行う第2過程と、上記第1過程及び上記第2過程の後に行われる、第1量子ビット及び第2量子ビットを制御ビットとし、第3量子ビットを目標ビットとしたToffoli演算を行うMAJ第3過程と、を実行する演算である。
また、量子ビットQxk−1,…,Qxと量子ビットQyk−1,…,Qyとに対する上記SUM演算は、例えば、量子ビットQyk−1を制御ビットとし、量子ビットQxを目標ビットとしたCNOT演算と、量子ビットQyk−1を制御ビットとし、量子ビットQyを目標ビットとしたCNOT演算とを、それぞれ、0≦w≦k−2(wは整数)について実行する過程と、量子ビットQxを第1量子ビットとし、量子ビットQyを第2量子ビットとし、量子ビットQyk−1を第3量子ビットとしたMAJ演算を、それぞれ、wをw=0から1ずつ増加させてw=k−2まで実行する過程と、量子ビットQxを制御ビットとし、量子ビットQyを目標ビットとしたCNOT演算を、それぞれ、0≦w≦k−1(wは整数)について実行する過程と、を実行する演算である。また、量子ビットQx(i+1)・k−1,…,Qxi・kと量子ビットQy(i+1)・k−1,…,Qyi・kと補助量子ビットQzi−1,1とに対する上記繰上げSUM演算〔1≦i≦(n/k)−1(iは整数)〕は、例えば、量子ビットQy(i+1)・k−1を制御ビットとし、量子ビットQxi・k+wを目標ビットとしたCNOT演算と、量子ビットQy(i+1)・k−1を制御ビットとし、量子ビットQyi・k+wを目標ビットとしたCNOT演算とを、それぞれ、0≦w≦k−2(wは整数)について実行する過程と、補助量子ビットQzi−1,1を制御ビットとし、量子ビットQy(i+1)・k−1を目標ビットとしてCNOT演算を実行する過程と、k≧3である場合にのみ行われる、量子ビットQxi・k+wを第1量子ビットとし、量子ビットQyi・k+wを第2量子ビットとし、量子ビットQy(i+1)・k−1を第3量子ビットとしたMAJ演算と、量子ビットQxi・k+w,Qyi・k+wを制御ビットとし、補助量子ビットQzi−1,1を目標ビットとしたToffoli演算とを、それぞれ、wをw=0から1ずつ増加させてw=k−3まで実行する過程と、量子ビットQx(i+1)・k−2を第1量子ビットとし、量子ビットQy(i+1)・k−2を第2量子ビットとし、量子ビットQy(i+1)・k−1を第3量子ビットとしたMAJ演算を実行する過程と、k≧3である場合にのみ行われる、補助量子ビットQzi−1,1を制御ビットとし、量子ビットQxi・k+wを目標ビットとしたCNOT演算と、量子ビットQxi・k+w−1,Qyi・k+w−1を制御ビットとし、補助量子ビットQzi−1,1を目標ビットとしたToffoli演算とを、それぞれ、wをw=k−2から1ずつ減少させてw=1まで実行する過程と、
補助量子ビットQzi−1,1を制御ビットとし、量子ビットQxi・kを目標ビットとしたCNOT演算を実行する過程と、量子ビットQxi・k+wを制御ビットとし、量子ビットQyi・k+wを目標ビットとしたCNOT演算を、それぞれ、0≦w≦k−1(wは整数)について実行する過程と、を実行する演算を実行する過程と、を実行する演算である。
また、本発明において好ましくは、定数kは、log(logn)以下の最大の整数である。
この場合、本発明の演算に必要となる補助量子ビットの数はO(n/logn)となる。なお、定数k=O(logn)である限り、本発明の演算に必要となる補助量子ビットの数はO(n/logn)となることがいえる。
以上のように、本発明では、加算処理ブロック単位で繰上げ値を求め、補助量子ビットを用いて当該加算処理ブロック単位の繰上げ処理及び加算値の最上位ビット値の算出を行い、加算処理ブロック単位で加算処理を行うとした。そのため、1ビット毎に加算処理及び繰上げ処理を行う従来方法に比べ、繰上げ処理に必要な補助量子ビット数を削減できる。その結果、従来よりも少ない数の補助量子ビットで量子加算演算が可能となる。
以下、本発明を実施するための最良の形態を図面を参照して説明する。
<構成>
図1は、本形態の量子加算演算装置1の構成を例示した図である。
本発明の量子加算演算装置は、2つの2進数a=an−1…a〔a∈{0,1},p∈{0,…,n−1},n≧4〕及びb=bn−1…b〔b∈{0,1}〕に対し、a+b=s…s〔s∈{0,1},q∈{0,…,n}〕を算出する。図1では、その一例としてn=8の場合の量子加算演算装置1の構成を例示する。
図1に例示するように、量子加算演算装置1は、非演算子及び演算結果の情報を保持させる量子ビット10と、補助ビットとして使用される量子ビットである複数の補助量子ビット20と、量子ビット10及び補助量子ビット20にHIGHBIT演算を施すHIGHBIT演算部30と、HIGHBIT演算部30の逆演算を行うHIGHBIT-REV演算部40と、量子ビット10及び補助量子ビット20にCNOT演算を施すCNOT演算部50と、量子ビット10にNOT演算を施すNOT演算部60と、量子ビット10及び補助量子ビット20にk-Toffoli演算を施すk-Toffoli演算部70と、2-Toffoli演算を施すToffoli演算部80と、量子ビット10にSUM演算を施すSUM演算部90と、量子ビット10及び補助量子ビット20に繰上げSUM演算を施す繰上げSUM演算部100と、制御部110とを具備する。
ここで、量子ビット10は、初期量子状態がそれぞれ|a>,…,|an−1>であるn個の量子ビットQx,…,Qxn−1と、初期量子状態がそれぞれ|b>,…,|bn−1>であるn個の量子ビットQy,…,Qyn−1とによって構成される(図1の例では、n=8)。また、量子ビット10は加算処理単位である加算処理単位ブロック11毎に分類される。本形態の場合、量子ビットQx(i+1)・k−1,…,Qxi・kと量子ビットQy(i+1)・k−1,…,Qyi・kとをi番目〔0≦i≦(n/k)−1(iは整数)〕の加算処理ブロックAとする。なお、この例のkはnを割り切る2以上n未満の整数の定数であり、k=O(logn)を満たす。一例として、log(logn)以下の最大の整数を定数kとする。図1の例はk=2とした場合の例である。
また、補助量子ビット20は、初期量子状態が|0>である1個の補助量子ビットQz0,1と、初期量子状態がそれぞれ|0>である2・{(n/k)−1}個の補助量子ビットQz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−1,1,Qz(n/k)−1,2と、初期量子状態がそれぞれ|0>である
Figure 0004847914
個の補助量子ビットQz(n/k),…,Qz(n/k)+m−1とを有する(図1の例では、n=8)。また、これら以外にもk-Toffoli演算を行う場合等に補助量子ビットが必要となるが、本形態の量子回路全体として使用する補助量子ビットの数はO(n/logn)となる(詳細は後述する)。
また、本形態の量子回路はNOT演算とCNOT演算とToffoli演算とを基本演算とし、各演算は、これらの組み合わせによって実現される。なお、これらの基本演算、HIGHBIT演算、k-Toffoli演算、SUM演算及び繰上げSUM演算の詳細については後述する。また、量子加算演算装置1のハードウェア構成例については後述する。
<処理>
次に、本形態の量子加算演算装置1の処理について説明する。
図2〜9は、本形態の量子加算演算装置1の処理内容を示す量子回路の例示である。
ここで、図2は本形態の演算の前段の量子操作を示す量子回路であり、図3は図2の量子操作の後に行われる後段の量子操作を示す量子回路である。また、図2,3は、8ビット同士(n=8)の加算演算を行う場合の例である。
また、図4,5は、本形態のHIGHBIT演算を例示した量子回路である。ここで、図4(a)はHIGHBIT演算のステージ1を示し、図4(b)はHIGHBIT演算のステージ2を示し、図5はHIGHBIT演算のステージ3を示す。すなわち、図4(a),図4(b),図5という順序で量子操作が行われる。なお、図4,5はk=5,i=0の場合のHIGHBIT演算を例示している。
また、図6は、本形態のSUM演算を例示した量子回路である。ここで、図6(a)はSUM演算のステージ1を示し、図4(b)はSUM演算のステージ2を示す。すなわち、図6(a),図6(b)という順序で量子操作が行われる。なお、図6はk=5の場合のSUM演算を例示している。
また、図7,8は、本形態の繰上げSUM演算を例示した量子回路である。ここで、図7(a)は繰上げSUM演算のステージ1を示し、図7(b)は繰上げSUM演算のステージ2を示し、図8は繰上げSUM演算のステージ3を示す。すなわち、図7(a),図7(b),図8という順序で量子操作が行われる。なお、図7,8はk=5,i=1の場合の繰上げSUM演算を例示している。
また、図9(a)はNOT演算を示す量子回路であり、図9(b)はCNOT演算を示す量子回路であり、図9(c)はToffoli演算(2-Toffoli演算)を示す量子回路であり、図9(d)はMAJ演算を示す量子回路である。
また、図10〜16は、本形態の量子加算演算装置1の処理内容を示すフローチャートの例示である。ここで、図10,11は、本形態の演算の前段の量子操作を説明するためのフローチャートであり、図12は、本形態の演算の後段の量子操作(補助量子ビット初期化)を説明するためのフローチャートである。また、図13,14は、本形態のHIGHBIT演算の詳細を説明するためのフローチャートであり、図15は、本形態のSUM演算の詳細を説明するためのフローチャートであり、図16は、本形態の繰上げSUM演算の詳細を説明するためのフローチャートである。
なお、図2,10,11に例示する前段の量子操作のみで加算結果は得られる。よって、図3,12に例示する後段の量子操作は必須ではない。しかし、図3,12に例示する後段の量子操作を行うことにより、演算結果と無関係な補助量子ビット20(Qz0,1,Qz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−1,2,Qz(n/k),…,Qz(n/k)+m−1)を初期量子状態|0>に戻すことができる。その結果、当該演算結果と無関係な補助量子ビット20を別の演算の補助ビットとして再利用できる。本形態では、当該後段の量子操作をも行う処理を説明する。
[処理の全体(図2,3,10〜12)]
まず、本形態の処理の全体を説明する。なお、本形態の各処理は、制御部110の制御のもと実行される。
まず、HIGHBIT演算部30が、加算処理ブロックAに属する初期量子状態の量子ビットQx(i+1)・k−1,…,Qxi・k及び量子ビットQy(i+1)・k−1,…,Qyi・kと、初期量子状態の補助量子ビットQzi,1とに対してHIGHBIT演算を施し、量子ビットQx(i+1)・k−1,…,Qxi・kの量子状態をそれぞれ|a(i+1)・k−1>,…,|ai・k>とし、量子ビットQy(i+1)・k−1,…,Qyi・kの量子状態をそれぞれ|b(i+1)・k−1>,…,|bi・k>とし、補助量子ビットQzi,1の量子状態を|c>〔cは、2つの2進数a(i+1)・k−1…ai・kとb(i+1)・k−1…bi・kの和を2進表記した場合の最上位ビット値〕とする処理を、各加算処理ブロックA〔0≦i≦(n/k)−1(iは整数)〕についてそれぞれ実行する(ステップS1/HIGHBIT演算過程)。なお、ステップS1内の処理の順序には限定はない。すなわち、ステップS1の処理は、0≦i≦(n/k)−1の各iについてiを1ずつ増加又は減少させながら順次実行されてもよいし、0≦i≦(n/k)−1の各iについて同時(並列)に実行されてもよい。
次に、CNOT演算部50、k-Toffoli演算部70及びToffoli演算部80(「繰上げ値演算部」を構成)が、補助量子ビットQz0,1,Qz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−1,1,Qz(n/k)−1,2,Qz(n/k),…,Qz(n/k)+m−1を用い、補助量子ビットQzw,1の量子状態を|d>〔d∈{0,1}は、加算処理ブロックAから加算処理ブロックAw+1への繰上げ値〕とする処理を、0≦w≦(n/k)−2(wは整数)についてそれぞれ実行し、さらに補助量子ビットQz(n/k)−1,1の量子状態を|s>とする処理を実行する(ステップS2〜9/繰上げ値演算過程)。
繰上げ値演算過程では、まず、CNOT演算部50が、量子ビットQxi・k+jを制御ビットとし、量子ビットQyi・k+jを目標ビットとしたCNOT演算を0≦j≦k−1(jは整数)についてそれぞれ実行する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する(ステップS2/第1のCNOT演算過程)。なお、ステップS2内の処理の順序には限定はない。すなわち、ステップS2の処理は、0≦j≦k−1(jは整数)及び1≦i≦(n/k)−1(iは整数)を満たす全てのi,jの組み合わせについて同時(並列)に実行されもよいし、各i,jの組み合わせ毎に順次実行されてもよい。一例として、jをj=0から1ずつ増加させながらj=k−1までステップS2のCNOT演算を施す処理を、iをi=1から1ずつ増加させながらi=(n/k)−1まで実行する方法を例示できる。
次に、k-Toffoli演算部70が、k個の量子ビットQyi・k,…,Qyi・k+k−1を制御ビットとし、補助量子ビットQzi,2を目標ビットとしたk-Toffoli演算を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する(ステップS3/第1のk-Toffoli演算過程)。なお、ステップS3内の処理の順序に限定はなく、各iについて同時(並列)に実行されてもよいし、各iについて順次実行されてもよい。一例として、ステップS3のk-Toffoli演算を施す処理を、iをi=1から1ずつ増加させながらi=(n/k)−1まで実行する方法を例示できる。
次に、Toffoli演算部80が、ステップS3によるk-Toffoli演算が施された補助量子ビットQzi,2を補助量子ビットQpL−1(i)と表現した場合における、補助量子ビットQpt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQz(n/k),…,Qz(n/k)+m−1うちの1つの補助量子ビットである補助量子ビットQp(i)を目標ビットとしたToffoli演算を、目標ビットを重複させることなく、i=1からiを1ずつ増加させながら
Figure 0004847914
まで実行する処理を、t=Lからtを1ずつ増加させながら
Figure 0004847914
まで実行する(ステップS4/第1のToffoli演算過程)。
次に、Toffoli演算部80が、ステップS1による処理が施された補助量子ビットQzi,1を補助量子ビットQgL−1(i)と表現した場合における、補助量子ビットQgt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQgt−1(2i+1)を目標ビットとしたToffoli演算〔当該Toffoli演算後の補助量子ビットQgt−1(2i+1)を補助量子ビットQg(i)と表現〕を、i=0からiを1ずつ増加させながら
Figure 0004847914
まで実行する処理を、t=Lからtを1ずつ増加させながら
Figure 0004847914
まで実行する(ステップS5/第2のToffoli演算過程)。
次に、Toffoli演算部80が、u=2・i/k−1とした場合における補助量子ビットQzu,1,Qpt−1(2i)を制御ビットとし、補助量子ビットQgt−1(2i)を目標ビットとしたToffoli演算を、i=1からiを1ずつ増加させながら
Figure 0004847914
まで実行する処理を、
Figure 0004847914
からtを1ずつ減少させながらt=Lまで実行する(ステップS6/第3のToffoli演算過程)。
次に、Toffoli演算部80がステップS4の処理を逆の順序で実行する(ステップS4の処理の逆演算を実行する)。すなわち、Toffoli演算部80が、補助量子ビットQpt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQp(i)を目標ビットとしたToffoli演算を、
Figure 0004847914
からiを1ずつ減少させながらi=1まで実行する処理を、
Figure 0004847914
からtを1ずつ減少させながらt=Lまで実行する(ステップS7/第4のToffoli演算過程)。
次に、ステップS2,3の処理を逆の順序で実行する(ステップS2,3によってなされる演算の逆演算を実行する)。すなわち、まず、k-Toffoli演算部70が、k個の量子ビットQyi・k,…,Qyi・k+k−1を制御ビットとし、補助量子ビットQzi,2を目標ビットとしたk-Toffoli演算を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する(ステップS8/第2のk-Toffoli演算過程)。次に、CNOT演算部50が、量子ビットQxi・k+jを制御ビットとし、量子ビットQyi・k+jを目標ビットとしたCNOT演算を0≦j≦k−1(jは整数)についてそれぞれ実行する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する(ステップS9/第2のCNOT演算過程/繰上げ値演算過程終了)。
次に、SUM演算部90が、加算処理ブロックAに属する量子ビットQxk−1,…,Qxと量子ビットQyk−1,…,Qyとに対してSUM演算を施し、量子ビットQxk−1,…,Qxの量子状態をそれぞれ|ak−1>,…,|a>とし、量子ビットQyk−1,…,Qyの量子状態をそれぞれ|sk−1>,…,|s>とする(ステップS10/第1のSUM演算過程)。
また、繰上げSUM演算部100が、加算処理ブロックAに属する量子ビットQx(i+1)・k−1,…,Qxi・k及び量子ビットQy(i+1)・k−1,…,Qyi・kと、補助量子ビットQzi−1,1とに対して繰上げSUM演算を施し、量子ビットQx(i+1)・k−1,…,Qxi・kの量子状態をそれぞれ|a(i+1)・k−1>,…,|ai・k>とし、量子ビットQy(i+1)・k−1,…,Qyi・kの量子状態をそれぞれ|s(i+1)・k−1>,…,|si・k>とし、補助量子ビットQzi−1,1の量子状態を維持する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する(ステップS11/第2のSUM演算過程)。
ここまでが前段の処理である。ここまでの処理によって、n個の量子ビットQx,…,Qxn−1の量子状態がそれぞれ|a>,…,|an−1>となり、量子ビットQy,…,Qyn−1の量子状態がそれぞれ|s>,…,|sn−1>となり、補助量子ビットQz(n/k)−1,1の量子状態が|s>となる。すなわち、量子ビットQx,…,Qxn−1と補助量子ビットQz(n/k)−1,1を観測することによって加算演算結果a+b=s…sを得ることができる。
この後、後段の処理によって、この演算結果と無関係な補助量子ビットQz0,1,Qz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−1,2,Qz(n/k),…,Qz(n/k)+m−1の量子状態を初期量子状態|0>に戻す。
まず、NOT演算部60が、量子ビットQy(i+1)・k−1,…,Qyi・kに対してNOT演算を施す処理を0≦i≦(n/k)−2(iは整数)についてそれぞれ実行する(ステップS21/第1のNOT演算過程)。なお、ステップS21内の処理の順序に限定はない。すなわち、ステップS21の処理は、0≦i≦(n/k)−2に属するiについて同時(並列)に実行されてもよく、i毎に順次実行されてもよい(例えばiを0から1ずつ増加させながらi=(n/k)−2まで順次実行)。
次に、CNOT演算部50とk-Toffoli演算部70とToffoli演算部80と(「逆演算部」を構成)が、上記繰上げ値演算過程が具備する、補助量子ビットQzw,1の量子状態を|d>とする処理の逆演算を、0≦w≦(n/k)−2(wは整数)についてそれぞれ実行し、さらに、HIGHBIT-REV演算部40(「逆演算部」を構成)が、量子ビットQx(w+1)・k−1,…,Qxw・kと量子ビットQy(w+1)・k−1,…,Qyw・kと補助量子ビットQzw,1とに対する上記HIGHBIT演算の逆演算であるHIGHBIT-REV演算を0≦w≦(n/k)−2(wは整数)についてそれぞれ実行する(逆演算過程)。
すなわち、nをn−kとおいた場合における、上記のHIGHBIT演算過程(ステップS1)、第1のCNOT演算過程(ステップS2)、第1のk-Toffoli演算過程(ステップS3)、第1のToffoli演算過程(ステップS4)、第2のToffoli演算過程(ステップS5)、第3のToffoli演算過程(ステップS6)、第4のToffoli演算過程(ステップS7)、第2のk-Toffoli演算過程(ステップS8)及び第2のCNOT演算過程(ステップS9)によって順次行われる処理からなる演算の逆演算を実行し(ステップS22)、量子ビットQx,…,Qxn−k−1の量子状態をそれぞれ|a>,…,|an−k−1>とし、量子ビットQy,…,Qyn−k−1の量子状態をそれぞれ|s>,…,|sn−k−1>の反転状態とし、補助量子ビットQz0,1の量子状態を|0>とし、補助量子ビットQz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−2,1,Qz(n/k)−2,2の量子状態をそれぞれ|0>にする。つまり、ステップS22では、nをn−kとおいた場合における、第2のCNOT演算過程(ステップS9)を逆の順序で実行し、第2のk-Toffoli演算過程(ステップS8)を逆の順序で実行し、第4のToffoli演算過程(ステップS7)を逆の順序で実行し、・・・、HIGHBIT演算過程(ステップS1)を逆の順序で実行する処理を行う。なお、量子状態|α>の反転状態とは、量子状態|α(+)1>を意味する。なお、(+)は排他的論理和演算子
Figure 0004847914
を示す。
次に、CNOT演算部50が、量子ビットQy(i+1)・k−1,…,Qyi・kに対してNOT演算を施す処理を0≦i≦(n/k)−2(iは整数)についてそれぞれ実行する(ステップS23/第2のNOT演算過程)。なお、ステップS23内の処理の順序に限定はない。
<演算内容の詳細>
次に、本形態で用いた各演算内容の詳細について説明する。
[基本演算]
まず、NOT演算、CNOT演算、Toffoli演算及びMAJ演算について説明する。
図9(a)に示すように、NOT演算は、量子状態|x>の量子ビットQαを、量子状態|x(+)1>の量子ビットQαにする操作である。
また、図9(b)に示すように、量子状態|x>の量子ビットQαを制御ビットとし、量子状態|y>の量子ビットQβを目標ビットビットとするCNOT演算は、量子状態|x>の量子ビットQα及び量子状態|y>の量子ビットQβを、量子状態|x>の量子ビットQα及び量子状態|x(+)y>の量子ビットQβにする操作である。
また、図9(c)に示すように、量子状態|x>の量子ビットQαと量子状態|y>の量子ビットQβとを制御ビットとし、量子状態|z>の量子ビットQγを目標ビットビットとするToffoli演算は、量子状態|x>の量子ビットQαと量子状態|y>の量子ビットQβと量子状態|z>の量子ビットQγとを、量子状態|x>の量子ビットQαと量子状態|y>の量子ビットQβと量子状態|z(+)xy>の量子ビットQγにする操作である。なお、量子状態|x>の量子ビットQα(1),...,量子状態|x>の量子ビットQα(k)を制御ビットとし、量子状態|z>の量子ビットQγを目標ビットビットとするk-Toffoli演算は、量子状態|x>の量子ビットQα(1),...,量子状態|x>の量子ビットQα(k)と量子状態|z>の量子ビットQγとを、量子状態|x>の量子ビットQα(1),...,量子状態|x>の量子ビットQα(k)と量子状態|z(+)x・... ・x>の量子ビットQγにする操作である。
また、図9(d)に示すように、MAJ演算は、第3量子ビットQγを制御ビットとし、第2量子ビットQβを目標ビットとしたCNOT演算を行う第1過程と、第3量子ビットQγを制御ビットとし、第1量子ビットQαを目標ビットとしたCNOT演算を行う第2過程と、上記第1過程及び上記第2過程の後に行われる、第1量子ビットQα及び第2量子ビットQβを制御ビットとし、第3量子ビットQγを目標ビットとしたToffoli演算を行うMAJ第3過程と、を実行する演算である。これにより、量子状態|x>の第1量子ビットQαと量子状態|y>の第2量子ビットQβと量子状態|z>の第3量子ビットQγとを、量子状態|x(+)z>の第1量子ビットQαと量子状態|y(+)z>の第2量子ビットQβと量子状態|xy(+)yz(+)zx>の第3量子ビットQγにする。
[HIGHBIT演算(図4(a)(b),5,13,14)]
次に、量子ビットQx(i+1)・k−1,…,Qxi・kと量子ビットQy(i+1)・k−1,…,Qyi・kと補助量子ビットQzi,1とに対するHIGHBIT演算について説明する。
HIGHBIT演算では、まず、量子ビットQxi・k,Qyi・kを制御ビットとし、補助量子ビットQzi,1を目標ビットとするToffoli演算を行う(ステップS31)。
次に、k≧3である場合にのみ(ステップS32)、量子ビットQxi・k+wを第1量子ビットとし、量子ビットQyi・k+wを第2量子ビットとし、補助量子ビットQzi,1を第3量子ビットとしたMAJ演算と、量子ビットQxi・k+w,Qyi・k+wを制御ビットとし、量子ビットQxi・kを目標ビットとしたToffoli演算とを、それぞれ、wをw=1から1ずつ増加させてw=k−2まで実行し(ステップS33)、ステップS34に進む。なお、k<3の場合には、ステップS33を実行することなくステップS34に進む。
ステップS34では、量子ビットQx(i+1)・k−1を第1量子ビットとし、量子ビットQy(i+1)・k−1を第2量子ビットとし、補助量子ビットQzi,1を第3量子ビットとしたMAJ演算を実行する(ステップS34)。
次に、k≧3である場合にのみ(ステップS35)、量子ビットQxi・kを制御ビットとし、量子ビットQyi・k+wを目標ビットとしたCNOT演算と、量子ビットQxi・kを制御ビットとし、量子ビットQxi・k+wを目標ビットとしたCNOT演算と、量子ビットQxi・k+w−1,Qyi・k+w−1を制御ビットとし、量子ビットQxi・kを目標ビットとしたToffoli演算とを、それぞれ、wをw=k−1から1ずつ減少させてw=2まで実行し(ステップS36)、ステップS37に進む。なお、k<3の場合には、ステップS36を実行することなくステップS37に進む。
ステップS37では、量子ビットQyi・kにNOT演算を施す(ステップS37)。
次に、k≧3である場合にのみ(ステップS38)、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQyi・k+wを目標ビットとしたToffoli演算と、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQxi・k+wを目標ビットとしたToffoli演算とを、それぞれ、2≦w≦k−1(wは整数)について実行する(ステップS39)。なお、k<3の場合には、ステップS39を実行することなくステップS40に進む。
ステップS40では、量子ビットQyi・kにNOT演算を施す(ステップS40)。
次に、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQyi・k+1を目標ビットとしたToffoli演算と、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQxi・k+1を目標ビットとしたToffoli演算とを、それぞれ実行する過程と、を実行する(ステップS41)。
[SUM演算(図6(a)(b),15)]
次に、量子ビットQxk−1,…,Qxと量子ビットQyk−1,…,Qyとに対するSUM演算について説明する。
SUM演算では、まず、量子ビットQyk−1を制御ビットとし、量子ビットQxを目標ビットとしたCNOT演算と、量子ビットQyk−1を制御ビットとし、量子ビットQyを目標ビットとしたCNOT演算とを、それぞれ、0≦w≦k−2(wは整数)について実行する(ステップS51)。次に、量子ビットQxを第1量子ビットとし、量子ビットQyを第2量子ビットとし、量子ビットQyk−1を第3量子ビットとしたMAJ演算を、それぞれ、wをw=0から1ずつ増加させてw=k−2まで実行する(ステップS52)。次に、量子ビットQxを制御ビットとし、量子ビットQyを目標ビットとしたCNOT演算を、それぞれ、0≦w≦k−1(wは整数)について実行する(ステップS53)。
なお、kの値によっては、ステップS51〜S53の処理の一部が互いに相殺する場合がある。このような場合には相殺し合う処理を実行しなくてもよい。例えば、図2のk=2の例では、MAJ演算が有する2つのCNOT演算とステップS51のCNOT演算とが相殺されている。
[繰上げSUM演算(図7(a)(b),8,16)]
次に、量子ビットQx(i+1)・k−1,…,Qxi・kと量子ビットQy(i+1)・k−1,…,Qyi・kと補助量子ビットQzi−1,1とに対する繰上げSUM演算〔1≦i≦(n/k)−1(iは整数)〕について説明する。
繰上げSUM演算では、まず、量子ビットQy(i+1)・k−1を制御ビットとし、量子ビットQxi・k+wを目標ビットとしたCNOT演算と、量子ビットQy(i+1)・k−1を制御ビットとし、量子ビットQyi・k+wを目標ビットとしたCNOT演算とを、それぞれ、0≦w≦k−2(wは整数)について実行する(ステップS61)。
次に、補助量子ビットQzi−1,1を制御ビットとし、量子ビットQy(i+1)・k−1を目標ビットとしてCNOT演算を実行する(ステップS62)。
次に、k≧3である場合にのみ(ステップS63)、量子ビットQxi・k+wを第1量子ビットとし、量子ビットQyi・k+wを第2量子ビットとし、量子ビットQy(i+1)・k−1を第3量子ビットとしたMAJ演算と、量子ビットQxi・k+w,Qyi・k+wを制御ビットとし、補助量子ビットQzi−1,1を目標ビットとしたToffoli演算とを、それぞれ、wをw=0から1ずつ増加させてw=k−3まで実行し(ステップS64)、ステップS65に進む。なお、k<3の場合には、ステップS64を実行することなくステップS65に進む。
ステップS65では、量子ビットQx(i+1)・k−2を第1量子ビットとし、量子ビットQy(i+1)・k−2を第2量子ビットとし、量子ビットQy(i+1)・k−1を第3量子ビットとしたMAJ演算を実行する(ステップS65)。
次に、k≧3である場合にのみ(ステップS66)、補助量子ビットQzi−1,1を制御ビットとし、量子ビットQxi・k+wを目標ビットとしたCNOT演算と、量子ビットQxi・k+w−1,Qyi・k+w−1を制御ビットとし、補助量子ビットQzi−1,1を目標ビットとしたToffoli演算とを、それぞれ、wをw=k−2から1ずつ減少させてw=1まで実行し(ステップS67)、ステップS68に進む。なお、k<3の場合には、ステップS67を実行することなくステップS68に進む。
ステップS68では、補助量子ビットQzi−1,1を制御ビットとし、量子ビットQxi・kを目標ビットとしたCNOT演算を実行する(ステップS68)。次に、量子ビットQxi・k+wを制御ビットとし、量子ビットQyi・k+wを目標ビットとしたCNOT演算を、それぞれ、0≦w≦k−1(wは整数)について実行する(ステップS69)。
<ハードウェア構成>
次に本形態の量子加算演算装置1のハードウェア構成を例示する。
本形態の量子加算演算装置1は、量子コンピュータ或いは量子コンピュータと古典コンユータとの組合せで実現できる。量子コンピュータを実現する物理系としては、例えば、イオントラップを用いる方法(J. I. Cirac and P. Zoller, Quantum computations with cold trapped ions, Physical Review Letter 74;4091, 1995)、量子ビットとして光子の偏光や光路を用いる方法(Y. Nakamura, M. Kitagawa, K. Igeta, In 3-rd Proc. Asia-Pacific Phys. Comf., World Scientific, Singapore, 1988)、液体中の各スピンを用いる方法(Gershenfield, Chuang, Bulk spin resonance quantum computation, Science, 275;350, 1997)、シリコン結晶中の核スピンを用いる方法(B. E. Kane, A silicon-based nuclear spin quantum computer, Nature 393, 133, 1998)、量子ドット中の電子スピンを用いる方法(D. Loss and D. P. DiVincenzo, Quantum computation with quantum dots, Physical Review A 57, 120-126, 1998)、超伝導素子を用いる方法(Y. Nakamura, Yu. A. Pashkin and J. S. Tsai, Coherent control of macroscopic quantum states in a single-cooper pair box, Nature 393, 786-788, 1999)等を例示できる。また、それぞれの物理系に対する量子コンピュータの実現方法については、「http://www.ipa.go.jp/security/fy11/report/contents/crypto/crypto/report/QuantumComputers/contents/doc/qc_survey.pdf」や「M. A. Nielsen and I. L. Chuang, Quantum Computation and Quantum Information, Cambridge University Press, Chapter 7 Physical Realization」に詳しい。
以下に、量子加算演算装置1を実現するための具体的なハードウェア構成を例示する。
[量子ビット]
イオントラップ量子コンピュータでは、例えば、イオンの基底状態と励起状態を利用して量子ビットを実現し、イオンを直線上に並べて演算処理を行う。また、核スピンを量子ビットとして用いる場合には、例えば、「T. D. Ladd, et al., "All-Silicon quantum computer," Phys. Rev. Lett., vol. 89, no. 1, 017901-1‐017901-4, July 1, 2002.」に記載されているようにSi(111)基板等に各量子ビットを生成して演算処理を行う。
なお、量子ビットの初期量子状態は、例えば、他の演算の量子回路による操作によって得られたものを用いてもよいし、各量子ビットが生成された基板をmK(ミリケルビン)オーダー以下に冷却してスピンの向きを揃えた後、所定の電磁波パルスを印加して生成してもよい。また、量子ビットとして光子の偏光を用いる場合には、例えば、パラメトリックダウンコンバージョン(PDC:parametric down conversion)(例えば、「P. G. Kwiat, K. Mattle, H. Weinfurter, A. Zeilinger, A. V. Sergienko, and Y. Shih, “New high-intensity source of polarization-entangled photon pairs,” Phys. Rev. Lett. ,75:4337-4341, 1995.」「P. G. Kwiat, E. Waks, A. G. White, I. Appelbaum, and P. H. Eberhard, “Ultrabright source of polarization-entangled photons,” Phys. Rev. A, 60:R773-R776, 1999.」等参照。)により生成された複数個の単一光子を用いる。この場合、各量子ビットの初期量子状態は、例えば、他の演算の量子回路による操作によって得られたものを用いる。また、パラメトリックダウンコンバージョン等により生成された単一光子に、ビームスプリッタや偏光回転素子等によって実現されるウォルシューアダマール変換、CNOT、回転等の操作を行い、上述の初期量子状態を生成することとしてもよい。
その他、上記の文献に記載された方法で量子ビットを用意することとしてもよい。
また、演算前後や演算途中において量子ビットの量子状態を保存する必要がある場合には、例えば、量子ドット内の電子準位、核スピン、あるいは超伝導体内部の電荷(クーパー対)量を量子ビットとして用いてデータを保存する量子メモリ等を用いてもよい(A.Barenco, D.Deutsch, and A.Ekert, Phys. Rev. Lett.74,4083(1995)、松枝秀明 電子情報通信学会誌 A Vol.J81-A No.12(1998)1978、T.H.Oosterkamp et.al., Nature 395,873(1998)、D.Loss and D.P. DiVincenzo, Phys. Rev. A57(1998) 120. T.Oshima, quant-ph/0002004, http://arxiv.org/abs/quant-ph/0002004、B.E.Kane, A silicon-based nuclear spin quantum computer, Nature, 393, 133(1998)、http://www.snf.unsw.edu.au/、Y.Nakamura, Yu. A. Pashkin and J.S.Tsai, Nature 398(1999)768)。
[CNOT演算]
イオントラップ量子コンピュータでは、例えば、イオンを直線上に並べ、各イオンに狙いを定めたレーザービーム照射によってCNOT演算を実現する。また、量子ビットとして光子の偏光を用いる場合には、例えば、偏光ビームスプリッタ等を用い、「T.B. Pittman, M.J. Fitch, B.C. Jacobs, J.D. Franson: “Experimental Controlled-NOT Logic Gate for Single Photons in the Coincidence Basis,” quant-ph/0303095, http://arxiv.org/abs/quant-ph/0303095」記載のPittman et al. 方式によってCNOT演算を実現する。また、核スピンを量子ビットとして用いる場合には、例えば、所定の電磁波パルスを量子ビットに印加することによってCNOT演算を実現できる。
その他、上記の文献に記載された方法でCNOT演算を実現してもよい。
[Toffoli演算]
Toffoli演算は、CNOT演算と量子ビット単体へのユニタリ変換との組み合わせによって実現できる。なお、この演算にも補助ビットとなる量子ビットが必要となる。k-Toffoli演算についても同様である。
[量子ビット単体の操作(NOT演算,ユニタリ変換)]
イオントラップ量子コンピュータでは、例えば、イオンを直線上に並べ、各イオンに狙いを定めたレーザービーム照射によって量子ビット単体の操作を実現する。核スピンを量子ビットとして用いる場合には、電磁波パルスやレーザービーム照射によって各処理を実現する。また、量子ビットとして光子の偏光を用いる場合には、例えば、偏光回転素子等によって実現する。
<本形態の特徴>
以上のように、本形態では、量子ビット毎に加算処置と繰上げ処理とを行うのではなく、複数の量子ビットからなる加算処理ブロック単位で加算処理と繰上げ処理とを行う。その結果、繰上げ処理に必要となる補助量子ビット数を削減できる。具体的には、O(n/logn)個の補助量子ビットを用い、O(n)個の基本演算をO(logn)個の計算ステップで実行することにより、2進n桁の加算演算を行うことができる。以下に、本形態の処理でO(n/logn)個の補助量子ビットしか使用されないことを示す。
まず、図11,12のフローチャートの各ステップで必要な補助量子ビットの数をオーダーで示す(すなわち、補助量子ビットの数を表現する多項式の係数部分までは言及しない)。
[ステップS1]
各iのHIGHBIT演算において補助量子ビットを1個ずつ使用するため、全体としてO(n/k)個の補助量子ビットを用いる。
[ステップS2,3]
各k-Toffoli演算がそれぞれ1個の補助量子ビットを使用するため、全体としてO(n/k)個の補助量子ビットを用いる(なお、正確には、各k-Toffoli演算は基本演算と1つの補助量子ビットによって実現されるため、全体としてk-Toffoli演算数の2倍の補助量子ビットを用いることになるが、オーダーの評価ではO(n/k)個と示して問題ない)。
[ステップS4]
各Toffoli演算が1個の補助量子ビットを用いるため、全体として
Figure 0004847914
個の補助量子ビットを用いる。
[ステップS5以降]
新たに補助量子ビットを必要としない。
ここで、k=O(logn)であるから、O(n/k)=O(n/logn)である。また、Lの定め方からL=O{log(logn)}である。これを用いて式(1)を展開するとO(n/logn)となる。したがって、上記の各ステップで必要となる補助量子ビットの数の合計はO(n/logn)個となる。
なお、本発明は上述の実施の形態に限定されるものではない。例えば、各量子ビットの初期量子状態が、複数の量子状態が重ね合わされたものであってもよい。また、SUM演算の説明で例示したように、相殺し合う処理を省略してもよい。また、前述のようにステップS21〜S23の処理を実行しない構成であってもよい。さらに、上述の各種の処理は、上述した記載に従って実行されるのみならず、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
本発明の産業上の利用分野としては、例えば、量子コンピュータ等を例示できる。
図1は、本形態の量子加算演算装置の構成を例示した図である。 図2は本形態の演算の前段の量子操作を示す量子回路である。 図3は図2の量子操作の後に行われる後段の量子操作を示す量子回路である。 図4は、本形態のHIGHBIT演算を例示した量子回路である。 図5は、本形態のHIGHBIT演算を例示した量子回路である。 図6は、本形態のSUM演算を例示した量子回路である。 図7は、本形態の繰上げSUM演算を例示した量子回路である。 図8は、本形態の繰上げSUM演算を例示した量子回路である。 図9(a)はNOT演算を示す量子回路であり、図9(b)はCNOT演算を示す量子回路であり、図9(c)はToffoli演算(2-Toffoli演算)を示す量子回路であり、図9(d)はMAJ演算を示す量子回路である。 図10は、本形態の演算の前段の量子操作を説明するためのフローチャートである。 図11は、本形態の演算の前段の量子操作を説明するためのフローチャートである。 図12は、本形態の演算の後段の量子操作(補助量子ビット初期化)を説明するためのフローチャートである。 図13は、本形態のHIGHBIT演算の詳細を説明するためのフローチャートである。 図14は、本形態のHIGHBIT演算の詳細を説明するためのフローチャートである。 図15は、本形態のSUM演算の詳細を説明するためのフローチャートである。 図16は、本形態の繰上げSUM演算の詳細を説明するためのフローチャートである。 図17は、非特許文献1に記載された加算演算用の量子回路の例示である。 図18は、非特許文献1に記載された加算演算用の量子回路の例示である。
符号の説明
1 量子加算演算装置
10 量子ビット
20 補助量子ビット

Claims (10)

  1. 2つの2進数a=an−1…a〔a∈{0,1},p∈{0,…,n−1},n≧4〕及びb=bn−1…b〔b∈{0,1}〕に対し、a+b=s…s〔s∈{0,1},q∈{0,…,n}〕を算出する量子加算演算方法であって、
    初期量子状態がそれぞれ|a>,…,|an−1>であるn個の量子ビットQx,…,Qxn−1と、初期量子状態がそれぞれ|b>,…,|bn−1>であるn個の量子ビットQy,…,Qyn−1と、初期量子状態が|0>である1個の補助量子ビットQz0,1と、初期量子状態がそれぞれ|0>である2・{(n/k)−1}〔kはnを割り切る2以上n未満の整数の定数である〕個の補助量子ビットQz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−1,1,Qz(n/k)−1,2と、初期量子状態がそれぞれ|0>である
    Figure 0004847914
    個〔Lはn/2L−1以下の最大の整数をn/kとする整数である〕の補助量子ビットQz(n/k),…,Qz(n/k)+m−1と、が少なくとも存在し、
    量子ビットQx(i+1)・k−1,…,Qxi・kと量子ビットQy(i+1)・k−1,…,Qyi・kとをi番目〔0≦i≦(n/k)−1(iは整数)〕の加算処理ブロックAとし、当該加算処理ブロックAに属する初期量子状態の量子ビットQx(i+1)・k−1,…,Qxi・k及び量子ビットQy(i+1)・k−1,…,Qyi・kと、初期量子状態の補助量子ビットQzi,1とに対してHIGHBIT演算を施し、量子ビットQx(i+1)・k−1,…,Qxi・kの量子状態をそれぞれ|a(i+1)・k−1>,…,|ai・k>とし、量子ビットQy(i+1)・k−1,…,Qyi・kの量子状態をそれぞれ|b(i+1)・k−1>,…,|bi・k>とし、補助量子ビットQzi,1の量子状態を|c>〔cは、2つの2進数a(i+1)・k−1…ai・kとb(i+1)・k−1…bi・kの和を2進表記した場合の最上位ビット値〕とする処理を、各加算処理ブロックAについてそれぞれ実行するHIGHBIT演算過程と、
    補助量子ビットQz0,1,Qz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−1,1,Qz(n/k)−1,2,Qz(n/k),…,Qz(n/k)+m−1を用い、補助量子ビットQzw,1の量子状態を|d>〔d∈{0,1}は、加算処理ブロックAから加算処理ブロックAw+1への繰上げ値〕とする処理を、0≦w≦(n/k)−2(wは整数)についてそれぞれ実行し、さらに補助量子ビットQz(n/k)−1,1の量子状態を|s>とする処理を実行する繰上げ値演算過程と、
    加算処理ブロックAに属する量子ビットQxk−1,…,Qxと量子ビットQyk−1,…,Qyとに対してSUM演算を施し、量子ビットQxk−1,…,Qxの量子状態をそれぞれ|ak−1>,…,|a>とし、量子ビットQyk−1,…,Qyの量子状態をそれぞれ|sk−1>,…,|s>とする第1のSUM演算過程と、
    加算処理ブロックAに属する量子ビットQx(i+1)・k−1,…,Qxi・k及び量子ビットQy(i+1)・k−1,…,Qyi・kと、補助量子ビットQzi−1,1とに対して繰上げSUM演算を施し、量子ビットQx(i+1)・k−1,…,Qxi・kの量子状態をそれぞれ|a(i+1)・k−1>,…,|ai・k>とし、量子ビットQy(i+1)・k−1,…,Qyi・kの量子状態をそれぞれ|s(i+1)・k−1>,…,|si・k>とし、補助量子ビットQzi−1,1の量子状態を維持する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第2のSUM演算過程と、
    を実行することを特徴とする量子加算演算方法。
  2. 請求項1に記載の量子加算演算方法であって、
    上記繰上げ値演算過程は、
    量子ビットQxi・k+jを制御ビットとし、量子ビットQyi・k+jを目標ビットとしたCNOT演算を0≦j≦k−1(jは整数)についてそれぞれ実行する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第1のCNOT演算過程と、
    上記第1のCNOT演算過程による処理がなされたk個の量子ビットQyi・k,…,Qyi・k+k−1を制御ビットとし、補助量子ビットQzi,2を目標ビットとしたk-Toffoli演算を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第1のk-Toffoli演算過程と、
    第1のk-Toffoli演算過程によるk-Toffoli演算が施された補助量子ビットQzi,2を補助量子ビットQpL−1(i)と表現した場合における、補助量子ビットQpt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQz(n/k),…,Qz(n/k)+m−1うちの1つの補助量子ビットである補助量子ビットQp(i)を目標ビットとしたToffoli演算を、目標ビットを重複させることなく、i=1からiを1ずつ増加させながら
    Figure 0004847914
    まで実行する処理を、t=Lからtを1ずつ増加させながら
    Figure 0004847914
    まで実行する第1のToffoli演算過程と、
    HIGHBIT演算過程による処理が施された補助量子ビットQzi,1を補助量子ビットQgL−1(i)と表現した場合における、補助量子ビットQgt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQgt−1(2i+1)を目標ビットとしたToffoli演算〔当該Toffoli演算後の補助量子ビットQgt−1(2i+1)を補助量子ビットQg(i)と表現〕を、i=0からiを1ずつ増加させながら
    Figure 0004847914
    まで実行する処理を、t=Lからtを1ずつ増加させながら
    Figure 0004847914
    まで実行する第2のToffoli演算過程と、
    u=2・i/k−1とした場合における補助量子ビットQzu,1,Qpt−1(2i)を制御ビットとし、補助量子ビットQgt−1(2i)を目標ビットとしたToffoli演算を、i=1からiを1ずつ増加させながら
    Figure 0004847914
    まで実行する処理を、
    Figure 0004847914
    からtを1ずつ減少させながらt=Lまで実行する第3のToffoli演算過程と、
    補助量子ビットQpt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQp(i)を目標ビットとしたToffoli演算を、
    Figure 0004847914
    からiを1ずつ減少させながらi=1まで実行する処理を、
    Figure 0004847914
    からtを1ずつ減少させながらt=Lまで実行する第4のToffoli演算過程と、
    第4のToffoli演算過程による処理の後、k個の量子ビットQyi・k,…,Qyi・k+k−1を制御ビットとし、補助量子ビットQzi,2を目標ビットとしたk-Toffoli演算を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第2のk-Toffoli演算過程と、
    第2のk-Toffoli演算過程による処理の後、量子ビットQxi・k+jを制御ビットとし、量子ビットQyi・k+jを目標ビットとしたCNOT演算を0≦j≦k−1(jは整数)についてそれぞれ実行する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第2のCNOT演算過程と、を有する、
    ことを特徴とする量子加算演算方法。
  3. 請求項1に記載の量子加算演算方法であって、
    第1のSUM演算過程及び第2のSUM演算過程による処理の後、量子ビットQy(i+1)・k−1,…,Qyi・kに対してNOT演算を施す処理を0≦i≦(n/k)−2(iは整数)についてそれぞれ実行する第1のNOT演算過程と、
    上記繰上げ値演算過程が具備する、補助量子ビットQzw,1の量子状態を|d>とする処理の逆演算を、0≦w≦(n/k)−2(wは整数)についてそれぞれ実行し、さらに、量子ビットQx(w+1)・k−1,…,Qxw・kと量子ビットQy(w+1)・k−1,…,Qyw・kと補助量子ビットQzw,1とに対する上記HIGHBIT演算の逆演算であるHIGHBIT-REV演算を0≦w≦(n/k)−2(wは整数)についてそれぞれ実行する逆演算過程と、
    逆演算過程による処理の後、量子ビットQy(i+1)・k−1,…,Qyi・kに対してNOT演算を施す処理を0≦i≦(n/k)−2(iは整数)についてそれぞれ実行する第2のNOT演算過程と、
    をさらに実行することを特徴とする量子加算演算方法。
  4. 請求項2に記載の量子加算演算方法であって、
    第1のSUM演算過程及び第2のSUM演算過程による処理の後、量子ビットQy(i+1)・k−1,…,Qyi・kに対してNOT演算を施す処理を0≦i≦(n/k)−2(iは整数)についてそれぞれ実行する第1のNOT演算過程と、
    第1のNOT演算過程による処理の後、nをn−kとおいた場合における、上記のHIGHBIT演算過程、第1のCNOT演算過程、第1のk-Toffoli演算過程、第1のToffoli演算過程、第2のToffoli演算過程、第3のToffoli演算過程、第4のToffoli演算過程、第2のk-Toffoli演算過程及び第2のCNOT演算過程によって順次行われる処理からなる演算の逆演算を実行し、
    量子ビットQx,…,Qxn−k−1の量子状態をそれぞれ|a>,…,|an−k−1>とし、量子ビットQy,…,Qyn−k−1の量子状態をそれぞれ|s>,…,|sn−k−1>の反転状態とし、補助量子ビットQz0,1の量子状態を|0>とし、補助量子ビットQz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−2,1,Qz(n/k)−2,2の量子状態をそれぞれ|0>にする逆演算過程と、
    逆演算過程による処理の後、量子ビットQy(i+1)・k−1,…,Qyi・kに対してNOT演算を施す処理を0≦i≦(n/k)−2(iは整数)についてそれぞれ実行する第2のNOT演算過程と、
    をさらに実行することを特徴とする量子加算演算方法。
  5. 請求項1又は4に記載の量子加算演算方法であって、
    量子ビットQx(i+1)・k−1,…,Qxi・kと量子ビットQy(i+1)・k−1,…,Qyi・kと補助量子ビットQzi,1とに対する上記HIGHBIT演算は、
    量子ビットQxi・k,Qyi・kを制御ビットとし、補助量子ビットQzi,1を目標ビットとするToffoli演算を行う過程と、
    k≧3である場合にのみ行われる、量子ビットQxi・k+wを第1量子ビットとし、量子ビットQyi・k+wを第2量子ビットとし、補助量子ビットQzi,1を第3量子ビットとしたMAJ演算と、量子ビットQxi・k+w,Qyi・k+wを制御ビットとし、量子ビットQxi・kを目標ビットとしたToffoli演算とを、それぞれ、wをw=1から1ずつ増加させてw=k−2まで実行する過程と、
    量子ビットQx(i+1)・k−1を第1量子ビットとし、量子ビットQy(i+1)・k−1を第2量子ビットとし、補助量子ビットQzi,1を第3量子ビットとしたMAJ演算を実行する過程と、
    k≧3である場合にのみ行われる、量子ビットQxi・kを制御ビットとし、量子ビットQyi・k+wを目標ビットとしたCNOT演算と、量子ビットQxi・kを制御ビットとし、量子ビットQxi・k+wを目標ビットとしたCNOT演算と、量子ビットQxi・k+w−1,Qyi・k+w−1を制御ビットとし、量子ビットQxi・kを目標ビットとしたToffoli演算とを、それぞれ、wをw=k−1から1ずつ減少させてw=2まで実行する過程と、
    量子ビットQyi・kにNOT演算を施す過程と、
    k≧3である場合にのみ行われる、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQyi・k+wを目標ビットとしたToffoli演算と、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQxi・k+wを目標ビットとしたToffoli演算とを、それぞれ、2≦w≦k−1(wは整数)について実行する過程と、
    量子ビットQyi・kにNOT演算を施す過程と、
    量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQyi・k+1を目標ビットとしたToffoli演算と、量子ビットQxi・k,Qyi・kを制御ビットとし、量子ビットQxi・k+1を目標ビットとしたToffoli演算とを、それぞれ実行する過程と、を実行する演算であり、
    上記MAJ演算は、
    第3量子ビットを制御ビットとし、第2量子ビットを目標ビットとしたCNOT演算を行う第1過程と、
    第3量子ビットを制御ビットとし、第1量子ビットを目標ビットとしたCNOT演算を行う第2過程と、
    上記第1過程及び上記第2過程の後に行われる、第1量子ビット及び第2量子ビットを制御ビットとし、第3量子ビットを目標ビットとしたToffoli演算を行うMAJ第3過程と、を実行する演算である、
    ことを特徴とする量子加算演算方法。
  6. 請求項1から4の何れかに記載の量子加算演算方法であって、
    量子ビットQxk−1,…,Qxと量子ビットQyk−1,…,Qyとに対する上記SUM演算は、
    量子ビットQyk−1を制御ビットとし、量子ビットQxを目標ビットとしたCNOT演算と、量子ビットQyk−1を制御ビットとし、量子ビットQyを目標ビットとしたCNOT演算とを、それぞれ、0≦w≦k−2(wは整数)について実行する過程と、
    量子ビットQxを第1量子ビットとし、量子ビットQyを第2量子ビットとし、量子ビットQyk−1を第3量子ビットとしたMAJ演算を、それぞれ、wをw=0から1ずつ増加させてw=k−2まで実行する過程と、
    量子ビットQxを制御ビットとし、量子ビットQyを目標ビットとしたCNOT演算を、それぞれ、0≦w≦k−1(wは整数)について実行する過程と、を実行する演算であり、
    量子ビットQx(i+1)・k−1,…,Qxi・kと量子ビットQy(i+1)・k−1,…,Qyi・kと補助量子ビットQzi−1,1とに対する上記繰上げSUM演算〔1≦i≦(n/k)−1(iは整数)〕は、
    量子ビットQy(i+1)・k−1を制御ビットとし、量子ビットQxi・k+wを目標ビットとしたCNOT演算と、量子ビットQy(i+1)・k−1を制御ビットとし、量子ビットQyi・k+wを目標ビットとしたCNOT演算とを、それぞれ、0≦w≦k−2(wは整数)について実行する過程と、
    補助量子ビットQzi−1,1を制御ビットとし、量子ビットQy(i+1)・k−1を目標ビットとしてCNOT演算を実行する過程と、
    k≧3である場合にのみ行われる、量子ビットQxi・k+wを第1量子ビットとし、量子ビットQyi・k+wを第2量子ビットとし、量子ビットQy(i+1)・k−1を第3量子ビットとしたMAJ演算と、量子ビットQxi・k+w,Qyi・k+wを制御ビットとし、補助量子ビットQzi−1,1を目標ビットとしたToffoli演算とを、それぞれ、wをw=0から1ずつ増加させてw=k−3まで実行する過程と、
    量子ビットQx(i+1)・k−2を第1量子ビットとし、量子ビットQy(i+1)・k−2を第2量子ビットとし、量子ビットQy(i+1)・k−1を第3量子ビットとしたMAJ演算を実行する過程と、
    k≧3である場合にのみ行われる、補助量子ビットQzi−1,1を制御ビットとし、量子ビットQxi・k+wを目標ビットとしたCNOT演算と、量子ビットQxi・k+w−1,Qyi・k+w−1を制御ビットとし、補助量子ビットQzi−1,1を目標ビットとしたToffoli演算とを、それぞれ、wをw=k−2から1ずつ減少させてw=1まで実行する過程と、
    補助量子ビットQzi−1,1を制御ビットとし、量子ビットQxi・kを目標ビットとしたCNOT演算を実行する過程と、
    量子ビットQxi・k+wを制御ビットとし、量子ビットQyi・k+wを目標ビットとしたCNOT演算を、それぞれ、0≦w≦k−1(wは整数)について実行する過程と、を実行する演算を実行する過程と、を実行する演算であり、
    上記MAJ演算は、
    第3量子ビットを制御ビットとし、第2量子ビットを目標ビットとしたCNOT演算を行う第1過程と、
    第3量子ビットを制御ビットとし、第1量子ビットを目標ビットとしたCNOT演算を行う第2過程と、
    上記第1過程及び上記第2過程の後に行われる、第1量子ビット及び第2量子ビットを制御ビットとし、第3量子ビットを目標ビットとしたToffoli演算を行うMAJ第3過程と、を実行する演算である、
    ことを特徴とする量子加算演算方法。
  7. 請求項1から6の何れかに記載の量子加算演算方法であって、
    定数kは、log(logn)以下の最大の整数である、
    ことを特徴とする量子加算演算方法。
  8. 2つの2進数a=an−1…a〔a∈{0,1},p∈{0,…,n−1},n≧4〕及びb=bn−1…b〔b∈{0,1}〕に対し、a+b=s…s〔s∈{0,1},q∈{0,…,n}〕を算出する量子加算演算装置であって、
    初期量子状態がそれぞれ|a>,…,|an−1>であるn個の量子ビットQx,…,Qxn−1と、
    初期量子状態がそれぞれ|b>,…,|bn−1>であるn個の量子ビットQy,…,Qyn−1と、
    初期量子状態が|0>である1個の補助量子ビットQz0,1と、初期量子状態がそれぞれ|0>である2・{(n/k)−1}〔kはnを割り切る2以上n未満の整数の定数である〕個の補助量子ビットQz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−1,1,Qz(n/k)−1,2と、
    初期量子状態がそれぞれ|0>である
    Figure 0004847914
    個〔Lはn/2L−1以下の最大の整数をn/kとする整数である〕の補助量子ビットQz(n/k),…,Qz(n/k)+m−1と、
    量子ビットQx(i+1)・k−1,…,Qxi・kと量子ビットQy(i+1)・k−1,…,Qyi・kとをi番目〔0≦i≦(n/k)−1(iは整数)〕の加算処理ブロックAとし、当該加算処理ブロックAに属する初期量子状態の量子ビットQx(i+1)・k−1,…,Qxi・k及び量子ビットQy(i+1)・k−1,…,Qyi・kと、初期量子状態の補助量子ビットQzi,1とに対してHIGHBIT演算を施し、量子ビットQx(i+1)・k−1,…,Qxi・kの量子状態をそれぞれ|a(i+1)・k−1>,…,|ai・k>とし、量子ビットQy(i+1)・k−1,…,Qyi・kの量子状態をそれぞれ|b(i+1)・k−1>,…,|bi・k>とし、補助量子ビットQzi,1の量子状態を|c>〔cは、2つの2進数a(i+1)・k−1…ai・kとb(i+1)・k−1…bi・kの和を2進表記した場合の最上位ビット値〕とする処理を、各加算処理ブロックAについてそれぞれ実行するHIGHBIT演算部と、
    補助量子ビットQz0,1,Qz1,1,Qz1,2,Qz2,1,Qz2,2,…,Qz(n/k)−1,1,Qz(n/k)−1,2,Qz(n/k),…,Qz(n/k)+m−1を用い、補助量子ビットQzw,1の量子状態を|d>〔d∈{0,1}は、加算処理ブロックAから加算処理ブロックAw+1への繰上げ値〕とする処理を、0≦w≦(n/k)−2(wは整数)についてそれぞれ実行し、さらに補助量子ビットQz(n/k)−1,1の量子状態を|s>とする処理を実行する繰上げ値演算部と、
    加算処理ブロックAに属する量子ビットQxk−1,…,Qxと量子ビットQyk−1,…,Qyとに対してSUM演算を施し、量子ビットQxk−1,…,Qxの量子状態をそれぞれ|ak−1>,…,|a>とし、量子ビットQyk−1,…,Qyの量子状態をそれぞれ|sk−1>,…,|s>とする第1のSUM演算部と、
    加算処理ブロックAに属する量子ビットQx(i+1)・k−1,…,Qxi・k及び量子ビットQy(i+1)・k−1,…,Qyi・kと、補助量子ビットQzi−1,1とに対して繰上げSUM演算を施し、量子ビットQx(i+1)・k−1,…,Qxi・kの量子状態をそれぞれ|a(i+1)・k−1>,…,|ai・k>とし、量子ビットQy(i+1)・k−1,…,Qyi・kの量子状態をそれぞれ|s(i+1)・k−1>,…,|si・k>とし、補助量子ビットQzi−1,1の量子状態を維持する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第2のSUM演算部と、
    を有することを特徴とする量子加算演算装置。
  9. 請求項8に記載の量子加算演算装置であって、
    上記繰上げ値演算部は、
    量子ビットQxi・k+jを制御ビットとし、量子ビットQyi・k+jを目標ビットとしたCNOT演算を0≦j≦k−1(jは整数)についてそれぞれ実行する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第1のCNOT演算部と、
    上記第1のCNOT演算部による処理がなされたk個の量子ビットQyi・k,…,Qyi・k+k−1を制御ビットとし、補助量子ビットQzi,2を目標ビットとしたk-Toffoli演算を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第1のk-Toffoli演算部と、
    第1のk-Toffoli演算部によるk-Toffoli演算が施された補助量子ビットQzi,2を補助量子ビットQpL−1(i)と表現した場合における、補助量子ビットQpt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQz(n/k),…,Qz(n/k)+m−1うちの1つの補助量子ビットである補助量子ビットQp(i)を目標ビットとしたToffoli演算を、目標ビットを重複させることなく、i=1からiを1ずつ増加させながら
    Figure 0004847914
    まで実行する処理を、t=Lからtを1ずつ増加させながら
    Figure 0004847914
    まで実行する第1のToffoli演算部と、
    HIGHBIT演算部による処理が施された補助量子ビットQzi,1を補助量子ビットQgL−1(i)と表現した場合における、補助量子ビットQgt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQgt−1(2i+1)を目標ビットとしたToffoli演算〔当該Toffoli演算後の補助量子ビットQgt−1(2i+1)を補助量子ビットQg(i)と表現〕を、i=0からiを1ずつ増加させながら
    Figure 0004847914
    まで実行する処理を、t=Lからtを1ずつ増加させながら
    Figure 0004847914
    まで実行する第2のToffoli演算部と、
    u=2・i/k−1とした場合における補助量子ビットQzu,1,Qpt−1(2i)を制御ビットとし、補助量子ビットQgt−1(2i)を目標ビットとしたToffoli演算を、i=1からiを1ずつ増加させながら
    Figure 0004847914
    まで実行する処理を、
    Figure 0004847914
    からtを1ずつ減少させながらt=Lまで実行する第3のToffoli演算部と、
    補助量子ビットQpt−1(2i),Qpt−1(2i+1)を制御ビットとし、補助量子ビットQp(i)を目標ビットとしたToffoli演算を、
    Figure 0004847914
    からiを1ずつ減少させながらi=1まで実行する処理を、
    Figure 0004847914
    からtを1ずつ減少させながらt=Lまで実行する第4のToffoli演算部と、
    第4のToffoli演算部による処理の後、k個の量子ビットQyi・k,…,Qyi・k+k−1を制御ビットとし、補助量子ビットQzi,2を目標ビットとしたk-Toffoli演算を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第2のk-Toffoli演算部と、
    第2のk-Toffoli演算部による処理の後、量子ビットQxi・k+jを制御ビットとし、量子ビットQyi・k+jを目標ビットとしたCNOT演算を0≦j≦k−1(jは整数)についてそれぞれ実行する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第2のCNOT演算部と、
    HIGHBIT演算部による処理の後、加算処理ブロックAに属する量子ビットQxk−1,…,Qx及び量子ビットQyk−1,…,Qyとに対してSUM演算を施し、量子ビットQxk−1,…,Qxの量子状態をそれぞれ|ak−1>,…,|a>とし、量子ビットQyk−1,…,Qyの量子状態をそれぞれ|sk−1>,…,|s>とする第1のSUM演算部と、
    第2のCNOT演算部による処理の後、加算処理ブロックAに属する量子ビットQx(i+1)・k−1,…,Qxi・k及び量子ビットQy(i+1)・k−1,…,Qyi・kと、補助量子ビットQzi−1,1とに対してSUM演算を施し、量子ビットQx(i+1)・k−1,…,Qxi・kの量子状態をそれぞれ|a(i+1)・k−1>,…,|ai・k>とし、量子ビットQy(i+1)・k−1,…,Qyi・kの量子状態をそれぞれ|s(i+1)・k−1>,…,|si・k>とし、補助量子ビットQzi−1,1の量子状態を維持する処理を、1≦i≦(n/k)−1(iは整数)についてそれぞれ実行する第2のSUM演算部と、
    を有することを特徴とする量子加算演算装置。
  10. 請求項8に記載の量子加算演算装置であって、
    第1のSUM演算部及び第2のSUM演算部による処理の後、量子ビットQy(i+1)・k−1,…,Qyi・kに対してNOT演算を施す処理を0≦i≦(n/k)−2(iは整数)についてそれぞれ実行する第1のNOT演算部と、
    上記繰上げ値演算部による補助量子ビットQzw,1の量子状態を|d>とする処理の逆演算を、0≦w≦(n/k)−2(wは整数)についてそれぞれ実行し、さらに、量子ビットQx(w+1)・k−1,…,Qxw・kと量子ビットQy(w+1)・k−1,…,Qyw・kと補助量子ビットQzw,1とに対する上記HIGHBIT演算の逆演算であるHIGHBIT-REV演算を0≦w≦(n/k)−2(wは整数)についてそれぞれ実行する逆演算部と、
    逆演算部による処理の後、量子ビットQy(i+1)・k−1,…,Qyi・kに対してNOT演算を施す処理を0≦i≦(n/k)−2(iは整数)についてそれぞれ実行する第2のNOT演算部と、
    をさらに実行することを特徴とする量子加算演算装置。
JP2007107238A 2007-04-16 2007-04-16 量子加算演算方法及び量子加算演算装置 Active JP4847914B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007107238A JP4847914B2 (ja) 2007-04-16 2007-04-16 量子加算演算方法及び量子加算演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007107238A JP4847914B2 (ja) 2007-04-16 2007-04-16 量子加算演算方法及び量子加算演算装置

Publications (2)

Publication Number Publication Date
JP2008269012A JP2008269012A (ja) 2008-11-06
JP4847914B2 true JP4847914B2 (ja) 2011-12-28

Family

ID=40048471

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007107238A Active JP4847914B2 (ja) 2007-04-16 2007-04-16 量子加算演算方法及び量子加算演算装置

Country Status (1)

Country Link
JP (1) JP4847914B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5204698B2 (ja) * 2009-03-19 2013-06-05 日本電信電話株式会社 量子演算方法、量子演算装置、量子回路
JP6445487B2 (ja) * 2016-05-31 2018-12-26 日本電信電話株式会社 論理和演算装置および論理和演算方法
CA3074557A1 (en) 2017-09-08 2019-03-14 Google Llc Quantum circuits with reduced t gate count
CN111582210B (zh) * 2019-07-09 2022-02-15 沈阳工业大学 基于量子神经网络的人体行为识别方法
CN116702913A (zh) * 2020-01-21 2023-09-05 本源量子计算科技(合肥)股份有限公司 一种待执行操作的量子模拟方法、装置
CN115809706B (zh) * 2021-09-14 2024-06-14 本源量子计算科技(合肥)股份有限公司 量子模数倍增运算方法、装置、电子装置及模数算术组件
CN115809042B (zh) * 2021-09-14 2024-06-14 本源量子计算科技(合肥)股份有限公司 量子模数加法运算方法、装置、电子装置及模数算术组件
CN115809707B (zh) * 2021-09-14 2024-06-14 本源量子计算科技(合肥)股份有限公司 量子比较运算方法、装置、电子装置及基础算术组件
CN115879554B (zh) * 2021-09-28 2024-06-14 本源量子计算科技(合肥)股份有限公司 量子模数平方运算方法、装置、电子装置及模数算术组件
CN115879552B (zh) * 2021-09-28 2024-06-14 本源量子计算科技(合肥)股份有限公司 量子模数乘逆运算方法、装置、电子装置及模数算术组件

Also Published As

Publication number Publication date
JP2008269012A (ja) 2008-11-06

Similar Documents

Publication Publication Date Title
JP4847914B2 (ja) 量子加算演算方法及び量子加算演算装置
Wu et al. Polynomial-time simulation of pairing models on a quantum computer
CN107066234B (zh) 一种量子乘法器的设计方法
JP5227942B2 (ja) 量子誤り推定装置、量子誤り推定方法、そのプログラム、量子誤り訂正装置、量子誤り訂正方法
Saki et al. Study of decoherence in quantum computers: A circuit-design perspective
Li et al. Application of distributed semi-quantum computing model in phase estimation
JP5204698B2 (ja) 量子演算方法、量子演算装置、量子回路
Caraiman et al. Image representation and processing using ternary quantum computing
JP4332167B2 (ja) 近似量子フーリエ変換を行う量子回路、近似量子フーリエ変換演算方法および装置
JP5129646B2 (ja) 量子回路、量子演算装置及び量子演算方法
Rahman et al. An algorithm to find quantum templates
JP4700413B2 (ja) 量子演算装置及び量子回路を用いた量子演算方法
Khan A recursive method for synthesizing quantum/reversible quaternary parallel adder/subtractor with look-ahead carry
JP5351862B2 (ja) 量子演算方法、量子演算装置
JP6182123B2 (ja) 量子演算方法
Fujiwara et al. General method for realizing the conditional phase-shift gate and a simulation of Grover’s algorithm in an ion-trap system
Gnanasekaran et al. Efficient variational quantum linear solver for structured sparse matrices
JP4366348B2 (ja) 量子計算方法及び量子計算装置
JP4829623B2 (ja) 量子演算方法及び量子演算装置
JP5496921B2 (ja) 量子演算方法、量子演算装置
Joshi et al. Cavity-QED-based unconventional geometric phase gates with bichromatic field modes
JP5722187B2 (ja) 量子計算方法、量子計算装置及び量子回路
Patti et al. Quantum semidefinite programming with the hadamard test and approximate amplitude constraints
Ali et al. New two-qubit gate library with entanglement
Torosov et al. Optimization of Two-Qubit Gates in Tunable-Coupler Architectures Using Single Flux Quantum Control

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090729

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110810

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111004

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111014

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141021

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4847914

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350