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

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

Info

Publication number
JP4829623B2
JP4829623B2 JP2006018718A JP2006018718A JP4829623B2 JP 4829623 B2 JP4829623 B2 JP 4829623B2 JP 2006018718 A JP2006018718 A JP 2006018718A JP 2006018718 A JP2006018718 A JP 2006018718A JP 4829623 B2 JP4829623 B2 JP 4829623B2
Authority
JP
Japan
Prior art keywords
quantum
qubit
bit
control
qubits
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
JP2006018718A
Other languages
English (en)
Other versions
JP2007200087A (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 JP2006018718A priority Critical patent/JP4829623B2/ja
Publication of JP2007200087A publication Critical patent/JP2007200087A/ja
Application granted granted Critical
Publication of JP4829623B2 publication Critical patent/JP4829623B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Optical Modulation, Optical Deflection, Nonlinear Optics, Optical Demodulation, Optical Logic Elements (AREA)

Description

本発明は、量子コンピュータ技術に関し、特に、剰余演算を行う技術に関する。
n+2個の補助ビットを用い、O(n)個の基本演算を、O(n)個の計算ステップで実行することにより、有限体(ガロア体)GF(p)上の加算を行う量子回路(「従来技術1」と呼ぶ)が知られている(例えば、非特許文献1参照)。また、2個の補助ビットを用い、量子フーリエ変換及びその逆演算それぞれ3個とO(n)個の基本演算とを、O(n)個の計算ステップで実行することにより、有限体GF(p)上の加算を行う量子回路(「従来技術2」と呼ぶ)も知られている(例えば、非特許文献1参照)。なお、pは素数であり、nはpを2進数表現した場合のビット長である。また、基本演算とは、1量子ビットに対する演算とCNOT(制御NOT)演算とを意味する。さらに、量子回路とは、基本演算の集合を意味する。
〔従来技術1〕
従来技術1の量子回路は、pよりも小さい2つの2進数a=an−1…a(a∈{0,1},i∈{0,…,n−1})及びb=bn−1…b(b∈{0,1})が入力として与えられたとき、GF(p)上の加算(a+b)mod p=un−1…u(u∈{0,1})を行い、un−1…uとaとを出力する。
図35は、n=5の場合における従来技術1の量子回路図である。なお、図35では、n=5の場合の量子回路を示すが、これをnに一般化することは容易である。また、量子回路の基本単位は上述の基本演算であるが、図が複雑になるのを防ぐため、以下では基本演算以外の演算をも用いて量子回路を表現する。すなわち、図35に示す全ての演算は、1量子ビットに対する演算とCNOT演算とに分解できる。
図35の量子回路は、ADD1演算と、ADD1(p)−1演算と、CNOT演算と、ADD1(p)演算と、ADD1−1演算と、NOT演算とによって構成される。なお、ADD1(p)−1演算は、ADD1(p)演算の逆演算を表し、ADD1−1演算は、ADD1演算の逆演算を表す。また、QA,QB(i={0,...,n−1})及びQCi’(i’={0,...,n−1,n,n+1})は量子ビットであり、これらのうちQCi’は補助ビットである。また、ΦADD1(p)演算は、量子ビットQCn+1を制御ビットとした制御演算である。
図36は、図35におけるADD1演算の量子回路図である。なお、「(+)」は排他的論理和演算(2を法とした加算)を表す。また、CはCARRY演算を、SはSUM演算をそれぞれ表し、C−1はCの逆演算を表す。図37(a)は、このCARRY演算を示す量子回路図であり、図37(b)は、このSUM演算を示す量子回路図である。図37(a)に示すように、CARRY演算は、4つの量子ビットを用いた量子操作であり、2つのCNOT演算と1つのトフォリ(Toffoli)演算とにより構成される。また、図37(b)に示すように、SUM演算は、3つの量子ビットを用いた量子操作であり、2つのCNOT演算により構成される。また、図38(a)はトフォリ演算を示し、図38(b)はCNOT演算を示し、図38(c)はNOT演算を示す。また、図39は、ADD1(p)演算の量子回路を示した図である。このADD1(p)演算は、ADD1の一部の量子ビットの情報を古典情報に置き換えた構成となる。なお、図39においてNOT演算を示す演算子を四角で囲んだ記号は、この四角の上に記載された古典情報pが1の場合にのみ、NOT演算を行う演算子を示す。また、C(p)はCARRY(p)演算を、S(p)はSUM(p)演算をそれぞれ表し、C(p)−1はC(p)の逆演算を表す。図40(a)は、このCARRY(p)演算を示す量子回路図であり、図40(b)は、このSUM(p)演算を示す量子回路図である。図40(a)に示すように、CARRY(p)演算は、3つの量子ビットを用いた量子操作であり、古典情報pが1である場合にのみ実行される1組のCNOT演算及びNOT演算と、1つのトフォリ演算とにより構成される。また、図40(b)に示すように、SUM(p)演算は、2つの量子ビットを用いた量子操作であり、古典情報pが1である場合にのみ実行される1つのNOT演算と1つのCNOT演算により構成される。
図35の量子回路においてGF(p)上の加算(a+b)mod pの演算を行う場合、まず、各量子ビットQAをaの各桁aを示す量子状態|a>に、各量子ビットQBをbの各桁bを示す量子状態|b>に、各量子ビットQCi’を|0>に、それぞれ初期化する。そして、各量子ビットに対して図35の量子回路が示す演算を施すことにより、量子ビットQAの量子状態が|a>となり、量子ビットQBの量子状態が|u>となり、量子ビットQCi’の各量子状態が|0>となる。そして、演算後の量子ビットQBの量子状態を観測することにより演算結果u=un−1…uを検出できる。
〔従来技術2〕
図41は、n=5の場合における従来技術2の量子回路図である。この量子回路もGF(p)上の加算(a+b)mod pの演算を行うための量子回路である。なお、図41では、n=5の場合の量子回路を示すが、これをnに一般化することは容易である。
図41の量子回路は、QFT(量子フーリエ変換)演算と、QFT−1演算と、ΦADD演算と、ΦADD−1演算と、ΦADD(p)演算と、ΦADD(p)−1演算と、CNOT演算と、NOT演算とによって構成される。なお、QFT−1演算は、QFT演算の逆演算を表し、ΦADD−1演算は、ΦADD演算の逆演算を表し、ΦADD(p)−1演算は、ΦADD(p)演算の逆演算を表す。また、QA,QB(i={0,...,n−1})及びQC,QCは量子ビットであり、これらのうちQC,QCは補助ビットである。また、ΦADD(p)演算は、量子ビットQCを制御ビットとした制御演算である。
図42は、このQFT演算を示す量子回路である。なお、図42におけるHはアダマール(Hadamard)変換演算を表し、k(k=2,...,6)は制御回転演算を表す。また、図43(a)は、このアダマール変換演算を表し、図43(b)は、この制御回転演算を表す。また、図44は、QFT演算とQFT−1演算との間に実行されるΦADD変換を表した量子回路図である。また、図45は、ΦADD(p)演算を表した量子回路図であり、図46は、図45のσ(f)演算を表した量子回路図である。なお、図45,図46におけるfは、f=fn−1…f(f∈{0,1})で表される2進数である。
図41の量子回路においてGF(p)上の加算(a+b)mod pの演算を行う場合、まず、各量子ビットQAをaの各桁aを示す量子状態|a>に、各量子ビットQBをbの各桁bを示す量子状態|b>に、各量子ビットQC,QCを|0>に、それぞれ初期化する。そして、各量子ビットに対して図41の量子回路が示す演算を施すことにより、量子ビットQAの量子状態が|a>となり、量子ビットQBの量子状態が|u>となり、量子ビットQC,QCの各量子状態が|0>となる。そして、演算後の量子ビットQBの量子状態を観測することにより演算結果u=un−1…uを検出できる。
S. Beauregard, G. Brassard, and J. M. Fernandez, Quantum Arithmetic on Galois Fields, quant-ph/0301163, 2003. Y. Takahashi, A LINEAR-SIZE QUANTUM CIRCUIT FOR ADDITION WITH NO ANCILLARY QUBITS, Quantum Information and Computation, Vol. 5, No. 6 (2005) 440-448.
通常、多数の量子ビットを実現し、これらを協調的に操作することは物理的に困難である。そのため、補助ビットはできるだけ少ないほうがよい。また、補助ビットの数は同じでも基本演算の個数が多いほど誤りが発生する可能性は大きくなる。そのため、基本演算の個数はできるだけ少ないほうがよい。すなわち、演算誤り率の低減のためには、補助ビット数の削減と基本演算数の低減とを同時に満たす必要がある。
しかし、従来技術1の量子回路(図35)は、まず、ADD1演算においてa+bの加算値を求め、次のADD1(p)−1演算でa+b−pの正負を求め(a+bとpとの大小比較)、a+b−pが正である場合には、a+b−pを(a+b)mod pの演算結果とし、負である場合にはADD1(p)演算によって(a+b−p)+pの演算を行い、それを(a+b)mod pの演算結果とする構成である。なお、ADD1−1以降の処理は、量子ビットQC,QCの量子状態をそれぞれ|0>にするための処理である。この構成の場合、ADD1(p)−1演算でa+b−pの正負を求めるためにQC…QC(n+1個)の補助ビットが必要となる。そのため、さらに必要な1つの補助ビットと併せて合計n+2個もの補助ビットが必要となる。
一方、従来技術2の量子回路(図41)では、a+bの加算値を求めてa+b−pの正負を求める処理と、a+b−pの正負に応じてa+b−p又は(a+b−p)+pを(a+b)mod pの演算結果とする処理と、補助ビットの量子状態をそれぞれ|0>にするための処理とを、それぞれ量子フーリエ変換後(QFT演算)に行い、各処理後に逆量子フーリエ変換(QFT−1演算)を行うといった過程をとることにより、補助ビット数を削減していた。この場合、補助ビット数は削減できるが、O(n)個の基本演算を要する3個のQFT演算と3個のQFT−1演算とが必要となる。
すなわち、従来技術1の量子回路は、(n+2)個の補助ビットを必要とするため補助ビット数が多く、従来技術2の量子回路は、O(n)個の基本演算を要する量子フーリエ変換演算を3個とその逆演算3個とを必要とするため基本演算数が多い。何れも演算誤り率の低減のために十分な構成とはいえない。
本発明はこのような点に鑑みてなされたものであり、(a+b)mod pの演算を行う量子演算技術において、補助ビット数の削減と基本演算数の低減とを同時に行い、演算誤り率を低減させることが可能な技術を提供することを目的とする。
本発明では上記課題を解決するために、2つの2進数a=an−1…a(a∈{0,1},i∈{0,…,n−1})及びb=bn−1…b(b∈{0,1})に対し、(a+b)mod p(p=pn−1…p,p∈{0,1},a+bはpの2倍未満)を算出する量子演算方法であって、n個の量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、n個の量子ビットQB,…,QBn−1の量子状態をそれぞれ|b>,…,|bn−1>とし、2個の量子ビットQC,QCの量子状態をそれぞれ|0>,|0>としておき、量子ビットQA,…,QAn−1,QB,…,QBn−1,QCに対する量子操作を行い、量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、量子ビットQB,…,QBn−1の量子状態をそれぞれ、|s>,…,|sn−1>(a+b=s…s(s∈{0,1},k∈{0,…,n}))とし、量子ビットQCの量子状態を|s>とする加算演算過程と、加算演算過程で量子操作された量子ビットQA,…,QAn−1,QB,…,QBn−1,QCと、量子ビットQCとに対する量子操作を行い、量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、量子ビットQB,…,QBn−1の量子状態をそれぞれ|s>,…,|sn−1>とし、量子ビットQCの量子状態を|s>とし、量子ビットQCの量子状態を|y>(p≦a+bの場合y=1、p>a+bの場合y=0)とする第1比較演算過程と、第1比較演算過程で量子操作された量子ビットQCの量子状態が|1>であった場合にのみ、第1比較演算過程で量子操作された量子ビットQB,…,QBn−1の量子状態をそれぞれ|t>,…,|tn−1>(a+b−p=tn−1…t(t∈{0,1}))とし、量子ビットQCの量子状態を|0>とする制御減算演算過程とを実行する量子演算方法が提供される。なお、「量子ビットQの量子状態を|τ>とする」とは、量子ビットQの量子状態を、|τ>と他の量子状態との重ね合わせ状態にすることをも含む概念である。
ここで、本発明の第1比較演算過程では、a+bの情報が乗せられた量子ビットQB,…,QBn−1だけではなく、量子ビットQA,…,QAn−1に対しても量子操作を行い、a+bとpとの大小比較を行っている。これに対し、従来技術1の比較演算(ADD1(p)−1演算)では、量子ビットQA,…,QAn−1は全く利用されていない。本発明では、このように量子ビットQA,…,QAn−1を有効利用することにより、従来技術1で必要とされていた補助ビットの一部を不要とする。その結果、補助ビット数の削減が可能となる。さらに、本形態の第1比較演算過程は量子フーリエ変換後に行う必要もないため、従来技術2のように多くの量子フーリエ変換演算も必要としない。
また、本発明において好ましくは、pは素数であり、a,bはp未満である。この場合、pを位数とした有限体上の演算が可能となる。
また、本発明において好ましくは、第1比較演算過程は、加算演算過程で量子操作された量子ビットQB,…,QBn−1,QCの量子状態をそれぞれ反転させ、各量子状態を|s’>,…,|sn−1’>,|s’>とする第1NOT演算過程と、第1NOT演算過程で量子操作された量子ビットQB,…,QBn−1,QCと、加算演算過程で量子操作された量子ビットQA,…,QAn−1,QCとに対する量子操作を行い、当該量子ビットQB,…,QBn−1,QCの量子状態をそれぞれ、|s’>,…,|sn−1’>,|s’>とし、当該量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、当該量子ビットQCの量子状態を|x>(xはs’+p(s’=s’sn−1’…s’)を2進n+2桁表記した際の最上位桁の値)とする最上位ビット演算過程と、最上位ビット演算過程で量子操作された量子ビットQB,…,QBn−1,QC,QCの量子状態をそれぞれ反転させ、各量子状態を|s>,…,|sn−1>,|s>,|y>とする第2NOT演算過程とを有する。
ここで、この第1比較演算過程では、a+bの情報が乗せられている量子ビットQB,…,QBn−1だけではなく、量子ビットQA,…,QAn−1をも有効利用し、補助ビット数の削減を図っている。また、この第1比較演算過程は量子フーリエ変換後に行う必要もない。
また、本発明において好ましくは、最上位ビット演算過程は、量子ビットQAn−1を制御ビットとし、量子ビットQCを目標ビットとした制御NOT演算を行う第1制御NOT演算過程と、第1制御NOT演算過程による処理の後、量子ビットQAn−2,QCを制御ビットとし、量子ビットQAn−1を目標ビットとしたトフォリ演算を施す第1トフォリ演算過程と、第1トフォリ演算過程による処理の後、降順で各j∈{2,…,n−1}に対して、p=1である場合にのみ量子ビットQBにNOT演算を施し、pの値に拘らず量子ビットQAj−2,QBとを制御ビットとして量子ビットQAj−1を目標ビットとしたトフォリ演算を施し、p=1である場合にのみ量子ビットQBにNOT演算を施す量子操作を実行する第1量子操作過程と、第1量子操作過程による処理の後、p=1である場合にのみ、量子ビットQBを制御ビットとし、量子ビットQAを目標ビットとした制御NOT演算を施し、さらにその後、量子ビットQBにNOT演算を施す第2量子操作過程と、第2量子操作過程による処理の後、p=1である場合にのみ、量子ビットQB,QBを制御ビットとし、量子ビットQAを目標ビットとしたトフォリ演算を施す第3量子演算過程と、第3量子操作過程による処理の後、昇順で各jに対して、p=1である場合にのみ量子ビットQBを制御ビットとして量子ビットQAj−1を目標ビットとした制御NOT演算を施し、p=1である場合にのみ量子ビットQBにNOT演算を施し、pの値に拘らず量子ビットQAj−2,QBとを制御ビットとし、量子ビットQAj−1を目標ビットとしたトフォリ演算を施す量子操作を実行する第4量子操作過程と、第4量子操作過程による処理の後、量子ビットQAn−2,QCを制御ビットとし、量子ビットQAn−1を目標ビットとしたトフォリ演算を施す第2トフォリ演算過程と、第2トフォリ演算過程による処理の後、量子ビットQAn−1を制御ビットとし、量子ビットQCを目標ビットとした制御NOT演算を行う第2制御NOT演算過程と、第2制御NOT演算による処理の後、量子ビットQAn−2,QCを制御ビットとし、量子ビットQAn−1を目標ビットとしたトフォリ演算を施す第3トフォリ演算過程と、第3トフォリ演算過程による処理の後、降順で各jに対し、第4量子操作過程の操作の逆演算操作を、量子ビットQAj−2,QB,QAj−1に対して施す第5量子操作過程と、第5量子操作過程による処理の後、p=1である場合にのみ、量子ビットQB,QBを制御ビットとし、量子ビットQAを目標ビットとしたトフォリ演算を施す第6量子演算過程と、第6量子操作過程による処理の後、p=1である場合にのみ、量子ビットQBにNOT演算を施し、さらにその後、量子ビットQBを制御ビットとし、量子ビットQAを目標ビットとした制御NOT演算を施す第7量子操作過程と、第7量子操作過程による処理の後、昇順で各jに対して、第1量子操作過程の演算操作を量子ビットQAj−2,QB,QAj−1に対して施す第8量子操作過程と、第8量子操作過程による処理の後、量子ビットQAn−2,QCを制御ビットとし、量子ビットQAn−1を目標ビットとしたトフォリ演算を施す第4トフォリ演算過程とを有する。なお、p,…,pn−1は、古典ビット情報でもよいし、量子ビット情報でもよいし、これらの混合でもよい。
ここで、この最上位ビット演算過程では、a+bの情報が乗せられている量子ビットQB,…,QBn−1だけではなく、量子ビットQA,…,QAn−1をも有効利用し、補助ビット数の削減を図っている。また、この上位ビット演算過程は量子フーリエ変換後に行う必要もない。その結果、NOT演算過程と最上位ビット演算過程とからなる第1比較演算過程で必要となる補助ビット数の削減と、基本演算数の低減とが可能となる。
また、本発明において好ましくは、制御減算演算過程による処理の後、量子ビットQCと量子ビットQCとの量子状態を交換する交換演算過程と、交換演算過程による処理の後、量子ビットQA,…,QAn−1,QB,…,QBn−1,QCに対する量子操作を行い、量子ビットQA,…,QAn−1,QB,…,QBn−1の量子状態を当該量子操作前のものとし、量子ビットQCの量子状態を|γ(+)δ>(γ(+)δはγとδとの排他的論理和を示し、γは当該量子操作前の量子ビットQCの量子状態が示す値であり、量子ビットQBの各量子状態が示す値をi+1桁目の値とした2進n桁の数βが、量子ビットQAの各量子状態が示す値をi+1桁目の値とした2進n桁の数α以上である場合δ=1であり、βがα未満である場合δ=0である)とする第2比較演算過程と、第2比較演算過程による処理の後、量子ビットQCにNOT演算を施す第3NOT演算過程とを有する。
これにより、補助ビットの量子状態を全て|0>とすることが可能となり、上述の量子演算が施された各量子ビットを別の量子演算の入力ビットとして利用することが容易となる。
本発明では、(a+b)mod pの演算を行う量子演算において、補助ビット数の削減と基本演算数の低減とを同時に行い、演算誤り率を低減させることができる。
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔第1の実施の形態〕
まず、本発明における第1の実施の形態について説明する。
<構成>
図1は、第1の実施の形態における量子演算装置1の構成を示したブロック図である。
図1に示すように、本形態の量子演算装置1は、量子ビット10と、メモリ20と、演算制御部30と、量子演算部40とを有している。ここで、量子ビット10は、n個の量子ビットQA,…,QAn−1と、n個の量子ビットQB,…,QBn−1と、2個の量子ビットQC,QCとによって構成される。また、メモリ20にはpn−1,…,pの値が格納されている。また、量子演算部40は、初期量子状態生成過程を実行する初期量子状態生成部41と、加算演算過程を実行する加算演算部42と、第1比較演算過程を実行する比較演算部43と、制御減算演算過程を実行する制御減算演算部44と、交換演算過程を実行する交換演算部45と、第2比較演算過程を実行する比較演算部46と、NOT演算過程を実行するNOT演算部47とを有している。これらの加算演算部42と、比較演算部43と、制御減算演算部44と、交換演算部45と、比較演算部46と、NOT演算部47との各機能は、基本演算単体或いは基本演算の組合せによって実現される。
図2は、これらの各機能を実現するための基本演算を表した図である。
図2(a)は、1量子ビットに対するNOT演算を表す。図2(a)に示すように、NOT演算は、1量子ビットの量子状態を|d>(d∈{0,1})から|d(+)1>に変換する量子操作である。なお、(+)は排他的論理和を示す演算子である。
図2(b)は、1量子ビットに対するアダマール変換を表す。図2(b)に示すように、アダマール変換は、1量子ビットの量子状態を|d>(d∈{0,1})から、{1/(√2)}|0>+{(−1)/(√2)}|1>に変換する量子操作である。
図2(c)は、1量子ビットに対するk回転演算を表す。図2(c)に示すように、k回転演算は、1量子ビットの量子状態を|d>(d∈{0,1})から{exp(2πdi/2)}|d>に変換する量子操作である。なお、expは自然対数を示し、iは虚数単位を示す。kは自然数である。
図2(d)は、2量子ビットに対するCNOT(制御NOT)演算を表す。図2(c)に示すように、CNOT演算は、量子状態|d>(d∈{0,1})の制御ビットと、量子状態|f>(f∈{0,1})の目標ビットとに対する量子操作であり、制御ビットの量子状態を|d>に、目標ビットの量子状態を|f(+)d>にするものである。
<処理>
本形態では、2つの2進数a=an−1…a(a∈{0,1},i∈{0,…,n−1},nは自然数)及びb=bn−1…b(b∈{0,1})に対し、(a+b)mod p(p=pn−1…p,p∈{0,1},a+bはpの2倍未満)の演算を行う。また、本形態では、pを素数とし、a,bをp未満の値とする。すなわち、本形態では、位数pの有限体GF(p)上でaとbとの加算を行う。
[処理の全体]
図3は、第1の実施の形態の処理の全体を説明するためのフローチャートである。また、図12は、第1の実施の形態の量子操作全体を説明するための量子回路図(n=5の例)である。なお、図12における横軸は時間の流れを示し、「入力」から「出力」に向けて時間が経過することを表している(以下同様な図についても同じ)。また、以下の各処理は、制御演算部30の制御のもと実行される。
まず、初期量子状態生成部41が、n個の量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、n個の量子ビットQB,…,QBn−1の量子状態をそれぞれ|b>,…,|bn−1>とし、2個の量子ビットQC,QCの量子状態をそれぞれ|0>,|0>とする(初期量子状態生成過程/ステップS1)。
次に、加算演算部42が、量子ビットQA,…,QAn−1,QB,…,QBn−1,QCに対する量子操作を行い、量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、量子ビットQB,…,QBn−1の量子状態をそれぞれ、|s>,…,|sn−1>(a+b=s…s(s∈{0,1},k∈{0,…,n}))とし、量子ビットQCの量子状態を|s>とする(加算演算過程〔ADD〕/ステップS2)。
次に、比較演算部43が、加算演算過程で量子操作された量子ビットQA,…,QAn−1,QB,…,QBn−1,QCと、量子ビットQCとに対する量子操作を行い、量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、量子ビットQB,…,QBn−1の量子状態をそれぞれ|s>,…,|sn−1>とし、量子ビットQCの量子状態を|s>とし、量子ビットQCの量子状態を|y>(p≦a+bの場合y=1、p>a+bの場合y=0)とする(第1比較演算過程〔COMPARISON(p)〕/ステップS3)。
次に、制御減算演算部44が、第1比較演算過程で量子操作された量子ビットQCの量子状態が|1>であった場合にのみ、第1比較演算過程で量子操作された量子ビットQB,…,QBn−1の量子状態をそれぞれ|t>,…,|tn−1>(a+b−p=tn−1…t(t∈{0,1}))とし、量子ビットQCの量子状態を|0>とする(制御減算演算過程〔QFT,ΦADD(p)−1,QFT−1〕/ステップS4)。
次に、交換演算部45が、量子ビットQCと量子ビットQCとの量子状態を交換する(交換演算過程〔SWAP〕/ステップS5)。
次に、比較演算部46が、量子ビットQA,…,QAn−1,QB,…,QBn−1,QCに対する量子操作を行い、量子ビットQA,…,QAn−1,QB,…,QBn−1の量子状態を当該量子操作前のものとし、量子ビットQCの量子状態を|γ(+)δ>とする(第2比較演算過程〔COMP〕/ステップS6)。なお、γは第2比較演算過程直前の量子ビットQCの量子状態が示す値である。また、δは、β≧αの場合はδ=1,β<αの場合はδ=0と定義される値である。なお、αは、量子ビットQAの各量子状態が示す値をi+1桁目の値とした2進n桁の数を示す。また、βは、量子ビットQBの各量子状態が示す値をi+1桁目の値とした2進n桁の数を示す。
そして、最後にNOT演算部47が、量子ビットQCにNOT演算を施す(NOT演算過程/ステップS7)。
以上の量子操作により、n個の量子ビットQA,…,QAn−1の量子状態がそれぞれ|a>,…,|an−1>となり、n個の量子ビットQB,…,QBn−1の量子状態をそれぞれ|u>,…,|un−1>となり、2個の量子ビットQC,QCの量子状態をそれぞれ|0>,|0>となる。
[加算演算過程〔ADD〕/ステップS2の詳細]
次に、加算演算過程〔ADD〕/ステップS2の詳細を説明する。
図4及び図5は、加算演算過程〔ADD〕/ステップS2の詳細を説明するためのフローチャートである。また、図13は、加算演算過程〔ADD〕の量子操作全体を説明するための量子回路図(n=5の例)である。また、図14〜図17は、図13のW1〜W4の各量子操作を説明するための量子回路図である。また、図18(a)は、図15に示すMAJ(majority)演算を説明するための量子回路図である。
加算演算過程〔ADD〕は、量子状態が|a>,…,|an−1>のn個の量子ビットQA,…,QAn−1と、量子状態が|b>,…,|bn−1>のn個の量子ビットQB,…,QBn−1と、量子状態が|0>の量子ビットQCとに対する量子操作であり、以下のW1〜W4の量子操作が実行される。
[W1の量子操作]
まず、演算制御部30は、変数θに1を代入し、これをメモリ20に格納する(ステップS11)。次に、演算制御部30はメモリ20に格納された変数θを読み込み、この変数θに応じた命令を加算演算部42に与える。これに対し、加算演算部42は、QAθ,QCに対するCNOT演算操作と、QBθ,QCに対するCNOT演算操作とを実行(制御ビットQC,目標ビットQAθ,QBθ)する(ステップS12)。
次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θがn−1であるか否かを判断する(ステップS13)。なお、nは事前に設定された値である。ここで、θ=n−1でなければ、演算制御部30は、メモリ20の変数θに1を加えた値を新たなθとしてメモリ20に格納し、処理をステップS12に戻す(ステップS14)。一方、θ=n−1であれば、以下のW2の量子操作に移る。
[W2の量子操作]
まず、加算演算部42が、量子ビットQA,QB,QCに対するトフォリ演算操作(制御ビットQA,QB,目標ビットQC)を行う(ステップS15)。
次に、演算制御部30が、変数θに1を代入し、これをメモリ20に格納する(ステップS16)。そして、演算制御部30はメモリ20に格納された変数θを読み込み、この変数θに応じた命令を加算演算部42に与える。加算演算部42は、量子ビットQBθ,QAθ,QCに対するMAJ演算操作を行う(ステップS17)。なお、図18(a)に示すように、MAJ演算操作は3量子ビットに対する量子操作である。図18(a)の入力(1),(2),(3)に対応する各量子ビットの量子状態を|v>,|v>,|v>とした場合、MAJ演算操作後の各量子ビットの量子状態は、|v(+)v>,|v(+)v>,|v(+)v(+)v>となる。また、ステップS17のMAJ演算操作は、量子ビットQBθ,QAθ,QCを、それぞれ、図18(a)の入力(1),(2),(3)として行う。次に、加算演算部42は、量子ビットQB,QBθ,QAθに対するトフォリ演算操作(制御ビットQBθ,QAθ、目標ビットQB)を行う(ステップS18)。
次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θがn−2であるか否かを判断する(ステップS19)。ここで、θ=n−2でなければ、演算制御部30は、メモリ20の変数θに1を加えた値を新たなθとしてメモリ20に格納し、処理をステップS17に戻す(ステップS20)。一方、θ=n−2であれば、加算演算部42に命令を与え、加算演算部42は、量子ビットQBn−1,QAn−1,QCに対するMAJ演算操作を行う(ステップS21)。なお、このMAJ演算操作は、量子ビットQBn−1,QAn−1,QCを、それぞれ、図18(a)の入力(1),(2),(3)として行う。
[W3の量子操作]
次に、演算制御部30は、変数θにn−1を代入し、これをメモリ20に格納する(ステップS22)。次に、演算制御部30はメモリ20に格納された変数θを読み込み、この変数θに応じた命令を加算演算部42に与える。これを受けた加算演算部42は、量子ビットQB,QAθに対するCNOT演算操作(制御ビットQB、目標ビットQAθ)を行う(ステップS23)。次に、加算演算部42において、量子ビットQB,QBθ−1,QAθ−1に対するトフォリ演算操作(制御ビットQBθ−1,QAθ−1、目標ビットQB)を行う(ステップS24)。
次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θが2であるか否かを判断する(ステップS25)。ここで、θ=2でなければ、演算制御部30は、メモリ20の変数θから1を引いた値を新たなθとしてメモリ20に格納し、処理をステップS23に戻す(ステップS26)。一方、θ=2であれば、以下のW4の量子操作に移る。
[W4の量子操作]
まず、加算演算部42が、量子ビットQAに対するNOT演算操作を行う(ステップS27)。次に、演算制御部30は、変数θにn−1を代入し、これをメモリ20に格納する(ステップS28)。次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θに応じた命令を加算演算部42に与える。これを受けた加算演算部42は、量子ビットQB,QA,QAθに対するトフォリ演算操作(制御ビットQB,QA、目標ビットQAθ)を行う(ステップS29)。
次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θが2であるか否かを判断する(ステップS30)。ここで、θ=2でなければ、演算制御部30は、メモリ20の変数θから1を引いた値を新たなθとしてメモリ20に格納し、処理をステップS29に戻す(ステップS31)。一方、θ=2であれば、加算演算部42において、量子ビットQAに対するNOT演算操作を行い(ステップS32)、さらに、量子ビットQB,QA,QAに対するトフォリ演算操作(制御ビットQB,QA、目標ビットQA)を行う(ステップS33)。
次に、演算制御部30は、変数θに1を代入し、これをメモリ20に格納する(ステップS34)。次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θに応じた命令を加算演算部42に与える。これを受けた加算演算部42は、QBθ,QAθに対するCNOT演算操作(制御ビットQAθ、目標ビットQBθ)を行う(ステップS35)。次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θがn−1であるか否かを判断する(ステップS36)。ここで、θ=n−1でなければ、演算制御部30は、メモリ20の変数θに1を加算した値を新たなθとしてメモリ20に格納し、処理をステップS35に戻す(ステップS37)。一方、θ=n−1であれば、演算制御部30は、加算演算過程〔ADD〕を終了させる。なお、ステップS34〜S36の処理の代わりに、θ=0〜n−1についてのQBθ,QAθに対するCNOT演算操作(制御ビットQAθ、目標ビットQBθ)を一度に行っても良い。
以上の処理により、量子ビットQA,…,QAn−1の量子状態がそれぞれ|a>,…,|an−1>となり、量子ビットQB,…,QBn−1の量子状態がそれぞれ|s>,…,|sn−1>なり、量子ビットQCの量子状態が|0+s>となる。なお、s=a+b,s=s…s(s∈{0,1},k∈{0,…,n})である(加算演算過程〔ADD〕/ステップS2の詳細の説明終わり)。
[第1比較演算過程〔COMPARISON(p)〕/ステップS3の詳細]
次に、第1比較演算過程〔COMPARISON(p)〕/ステップS3の詳細について説明する。
図6は、第1比較演算過程〔COMPARISON(p)〕/ステップS3の詳細の詳細を説明するためのフローチャートである。また、図7及び図8は、図6のステップS46のHIGHBIT(p)演算操作を説明するためのフローチャートである。また、図19は、第1比較演算過程〔COMPARISON(p)〕を説明するための量子回路図(n=5の例)である。また、図20及び図21は、HIGHBIT(p)演算を説明するための量子回路図である。さらに、図22(a)は、図20及び図21のA(p)演算を説明するための量子回路図であり、図22(b)は、C(p)演算を説明するための量子回路図である。
第1比較演算過程〔COMPARISON(p)〕は、量子状態が|a>,…,|an−1>のn個の量子ビットQA,…,QAn−1と、量子状態が|s>,…,|sn−1>のn個の量子ビットQB,…,QBn−1と、量子状態が|0(+)s>の量子ビットQCと、量子状態が|0>の量子ビットQCとに対する量子操作である。
まず、演算制御部30は、変数θに1を代入し、これをメモリ20に格納する(ステップS41)。次に、演算制御部30はメモリ20に格納された変数θを読み込み、この変数θに応じた命令を比較演算部43に与える。これに対し、比較演算部43は、QBθに対するNOT演算操作を行う(ステップS42)。次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θがn−1であるか否かを判断する(ステップS43)。ここで、θ=n−1でなければ、演算制御部30は、メモリ20の変数θに1を加算した値を新たなθとしてメモリ20に格納し、処理をステップS42に戻す(ステップS44)。一方、θ=n−1であれば、演算制御部30は、比較演算部43に指示を与え、これを受けた比較演算部43は、QCに対するNOT演算操作を行う(ステップS45)。これにより、量子ビットQB,…,QBn−1,QCの量子状態は、それぞれ|s’>,…,|sn−1’>,|s’>(|s>,…,|sn−1>,|s>の反転ビット〔s’=s(+)1〕)となる。なお、ステップS41〜S45は、「第1NOT演算過程」に相当する。
ステップS45の後、比較演算部43は、量子ビットQB,…,QBn−1,QC,QA,…,QAn−1,QCに対する量子操作を行い、量子ビットQB,…,QBn−1,QCの量子状態をそれぞれ、|s’>,…,|sn−1’>,|s’>とし、量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、量子ビットQCの量子状態を|x>とするHIGHBIT(p)演算操作(最上位ビット演算過程/ステップS46)を実行する。なお、xはs’+p(s’=s’sn−1’…s’)を2進n+2桁表記した際の最上位桁の値を示す。また、このHIGHBIT(p)演算操作の詳細については後述する。
ステップS46の後、演算制御部30は、変数θに1を代入し、これをメモリ20に格納する(ステップS47)。次に、演算制御部30はメモリ20に格納された変数θを読み込み、この変数θに応じた命令を比較演算部43に与える。これに対し、比較演算部43は、QBθに対するNOT演算操作を行う(ステップS48)。次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θがn−1であるか否かを判断する(ステップS49)。ここで、θ=n−1でなければ、演算制御部30は、メモリ20の変数θに1を加算した値を新たなθとしてメモリ20に格納し、処理をステップS48に戻す(ステップS50)。一方、θ=n−1であれば、演算制御部30は、比較演算部43に指示を与え、これを受けた比較演算部43は、QC,QCに対するNOT演算操作を行う(ステップS51)。これにより、量子ビットQA,…,QAn−1の量子状態は、それぞれ|a>,…,|an−1>となり、量子ビットQB,…,QBn−1,QC,QCの量子状態は、それぞれ|s>,…,|sn−1>,|s>,|y>となる。なお、ステップS47〜S51は、「第2NOT演算過程」に相当する。
[HIGHBIT(p)演算操作の詳細]
次に、ステップS46のHIGHBIT(p)演算操作の詳細を説明する。
HIGHBIT(p)演算操作は、量子状態が|a>,…,|an−1>のn個の量子ビットQA,…,QAn−1と、量子状態が|s’>,…,|sn−1’>のn個の量子ビットQB,…,QBn−1と、量子状態が|s’>の量子ビットQCと、量子状態が|0>の量子ビットQCとに対する量子操作である。
まず、比較演算部43が、量子ビットQAn−1,QCに対するCNOT演算操作(制御ビットQAn−1,目的ビットQC)を行う(第1制御NOT演算過程/ステップS61)。次に、比較演算部43が、量子ビットQAn−1,QAn−2,QCに対するトフォリ演算操作(制御ビットQAn−2,QC,目的ビットQAn−1)を行う(第1トフォリ演算過程/ステップS62)。
次に、演算制御部30は、変数θにn−1を代入し、これをメモリ20に格納する(ステップS63)。次に、演算制御部30はメモリ20に格納された変数θとpθとを読み込み、これらの変数θとpθとに応じた命令を比較演算部43に与える。これを受けた比較演算部43は、量子ビットQAθ−1,QAθ−2,QBθに対するA(pθ)演算操作を行う(第1量子操作過程/ステップS64)。
図22(a)に示すように、A(pθ)演算は、3つの量子ビットQAθ−2,QBθ,QAθ−1に対する量子操作である(入力時の各量子状態がv,v,v∈{0,1}を示すものとする)。A(pθ)演算では、まず、pθ=1の場合にのみ量子ビットQBθにNOT演算を適用する。次に、量子ビットQAθ−2,QBθを制御ビットとし、量子ビットQAθ−1を目標ビットとしたトフォリ演算を適用し、さらに、pθ=1の場合にのみ量子ビットQBθにNOT演算を適用する。これらの操作により、3つの量子ビットQAθ−2,QBθ,QAθ−1の量子状態は、それぞれv,v,v(+)(pθ(+)v)・vを示すものとなる。以上がA(pθ)演算である。
次に、演算制御部30が、メモリ20に格納された変数θを読み込み、この変数θが2であるか否かを判断する(ステップS65)。ここで、θ=2でなければ、演算制御部30は、メモリ20の変数θから1を引いた値を新たなθとしてメモリ20に格納し、処理をステップS64に戻す(ステップS66)。一方、θ=2であれば、演算制御部30は、メモリ20からpを読み込み、p=1の場合にのみ、比較演算部43に、量子ビットQBを制御ビットとし、量子ビットQA目標ビットとした制御NOT演算操作を実行させ、さらにその後、量子ビットQBのNOT演算操作を実行させる(第2量子操作過程/ステップS67)。また、演算制御部30は、メモリ20からpを読み込み、p=1の場合にのみ、比較演算部43に、量子ビットQB,QBを制御ビットとし、量子ビットQAを目標ビットとしたトフォリ演算操作を実行させる(第3量子演算過程/ステップS68)。
次に、演算制御部30はメモリ20に格納された変数θとpθとを読み込み、これらの変数θとpθとに応じた命令を比較演算部43に与える。これを受けた比較演算部43は、量子ビットQAθ−1,QAθ−2,QBθに対するC(pθ)演算操作を行う(第4量子操作過程/ステップS69)。
図22(b)に示すように、C(pθ)演算は、3つの量子ビットQAθ−2,QBθ,QAθ−1に対する量子操作である(入力時の各量子状態がv,v,v∈{0,1}を示すものとする)。C(pθ)演算では、まず、pθ=1の場合にのみ、量子ビットQBθを制御ビットとし、量子ビットQAθ−1を目標ビットとしたCNOT演算を適用し、さらに、量子ビットQBθにNOT演算を適用する。その後、量子ビットQAθ−2,QBθを制御ビットとし、量子ビットQAθ−1を目標ビットとしたトフォリ演算を適用する。これらの操作により、3つの量子ビットQAθ−2,QBθ,QAθ−1の量子状態は、それぞれv,pθ(+)v,v(+)vθ(+)vを示すものとなる。以上がC(pθ)演算である。
次に、演算制御部30が、メモリ20に格納された変数θを読み込み、この変数θがn−1であるか否かを判断する(ステップS70)。ここで、θ=n−1でなければ、演算制御部30は、メモリ20の変数θに1を加算した値を新たなθとしてメモリ20に格納し、処理をステップS69に戻す(ステップS71)。一方、θ=n−1であれば、演算制御部30は、比較演算部43に、量子ビットQAn−1,QAn−2,QCに対するトフォリ演算操作(制御ビットQAn−2,QC,目的ビットQAn−1)を実行させる(第2トフォリ演算過程/ステップS72)。
次に、比較演算部43が、量子ビットQAn−1,QCに対するCNOT演算操作(制御ビットQAn−1,目的ビットQC)を行う(第2制御NOT演算過程/ステップS81)。次に、比較演算部43が、量子ビットQAn−1,QAn−2,QCに対するトフォリ演算操作(制御ビットQAn−2,QC,目的ビットQAn−1)を行う(第3トフォリ演算過程/ステップS82)。
次に、演算制御部30は、変数θにn−1を代入し、これをメモリ20に格納する(ステップS83)。次に、演算制御部30はメモリ20に格納された変数θとpθとを読み込み、これらの変数θとpθとに応じた命令を比較演算部43に与える。これを受けた比較演算部43は、量子ビットQAθ−1,QAθ−2,QBθに対するC(pθ−1演算操作を行う(第5量子操作過程/ステップS84)。なお、C(pθ−1演算は、C(pθ)演算の逆演算である。
次に、演算制御部30が、メモリ20に格納された変数θを読み込み、この変数θが2であるか否かを判断する(ステップS85)。ここで、θ=2でなければ、演算制御部30は、メモリ20の変数θから1を引いた値を新たなθとしてメモリ20に格納し、処理をステップS84に戻す(ステップS86)。一方、θ=2であれば、演算制御部30は、メモリ20からpを読み込み、p=1の場合にのみ、比較演算部43に、量子ビットQB,QBを制御ビットとし、量子ビットQAを目標ビットとしたトフォリ演算操作を実行させる(第6量子演算過程/ステップS87)。さらに、演算制御部30は、メモリ20からpを読み込み、p=1の場合にのみ、比較演算部43に、量子ビットQBのNOT演算操作を実行させ、さらにその後、量子ビットQBを制御ビットとし、量子ビットQA目標ビットとした制御NOT演算操作を実行させる(第7量子操作過程/ステップS88)。
次に、演算制御部30はメモリ20に格納された変数θとpθとを読み込み、これらの変数θとpθとに応じた命令を比較演算部43に与える。これを受けた比較演算部43は、量子ビットQAθ−1,QAθ−2,QBθに対するA(pθ)演算操作を行う(第8量子操作過程/ステップS89)。
次に、演算制御部30が、メモリ20に格納された変数θを読み込み、この変数θがn−1であるか否かを判断する(ステップS90)。ここで、θ=n−1でなければ、演算制御部30は、メモリ20の変数θに1を加算した値を新たなθとしてメモリ20に格納し、処理をステップS89に戻す(ステップS91)。一方、θ=n−1であれば、演算制御部30は、比較演算部43に、量子ビットQAn−1,QAn−2,QCに対するトフォリ演算操作(制御ビットQAn−2,QC,目的ビットQAn−1)を実行させる(第4トフォリ演算過程/ステップS92/第1比較演算過程〔COMPARISON(p)〕/ステップS3の詳細の説明終わり)。
[制御減算演算過程〔QFT,ΦADD(p)−1,QFT−1〕/ステップS4の詳細]
次に、制御減算演算過程〔QFT,ΦADD(p)−1,QFT−1〕/ステップS4の詳細について説明する。
図9は、制御減算演算過程〔QFT,ΦADD(p)−1,QFT−1〕を説明するためのフローチャートである。
まず、制御減算演算部44は、量子状態が、それぞれ|s>,…,|sn−1>,|s>である量子ビットQB,・・・,QBn−1,QCに対し、QFT演算操作を実行する(ステップS101)。QFT演算操作の内容は、図42に示した通りである(なお、図42は、n=5の例であり、d,…,dがs,…,sに対応する。)。この量子操作により、量子ビットQB,・・・,QBn−1,QCの量子状態は、それぞれ、|Φ(s)>,…,|Φn−1(s)>,|Φ(s)>となる。ただし、s=sn−1…sであり、
Figure 0004829623
である。
次に、制御減算演算部44は、量子ビットQCを制御ビットとした量子ビットQB,・・・,QBn−1,QC,QCに対する制御ΦADD(p)−1演算操作を実行する(ステップS102)。すなわち、量子ビットQCの量子状態が|1>の場合(s≧pの場合)にのみ、量子ビットQB,・・・,QBn−1,QCに対するΦADD(p)−1演算操作が行われる。なお、ΦADD(p)−1演算はΦADD(p)演算の逆演算であり、ΦADD(p)演算の内容は、図45及び図46に示した通りである(図45及び図46は、n=5の例であり、d,fがそれぞれs,pに対応する。)。この量子操作により、量子ビットQCの量子状態が|1>の場合、量子ビットQB,・・・,QBn−1,QCの量子状態は、それぞれ|Φ(s−p)>,…,|Φn−1(s−p)>,|Φ(s−p)>となり、量子ビットQCの量子状態が|0>の場合、量子ビットQB,・・・,QBn−1,QCの量子状態は、それぞれ|Φ(s)>,…,|Φn−1(s)>,|Φ(s)>となる。
次に、制御減算演算部44は、量子ビットQB,・・・,QBn−1,QCに対し、QFT−1演算操作を実行する(ステップS103)。なお、QFT−1演算は、QFT演算の逆演算である。この量子操作により、量子ビットQB,・・・,QBn−1,QCの量子状態は、それぞれ、|s>,…,|sn−1>,|s>〔量子ビットQCの量子状態が|0>の場合(s<pの場合)〕、又は、|(s−p)>,…,|(s−p)n−1>,|(s−p)>〔量子ビットQCの量子状態が|1>の場合(s≧pの場合)〕となる。すなわち、量子ビットQB,・・・,QBn−1,QCの各量子状態は、(a+b)mod pを2進表記した際の各桁を示すことになる(制御減算演算過程〔QFT,ΦADD(p)−1,QFT−1〕/ステップS4の詳細の説明終わり)。
[交換演算過程〔SWAP〕/ステップS5)の詳細]
次に、交換演算過程〔SWAP〕/ステップS5)の詳細を説明する。
図9(b)は、交換演算過程〔SWAP〕の詳細を説明するためのフローチャートである。また、図18(b)は、交換演算過程〔SWAP〕を説明するための量子回路図である。
まず、交換演算部45が、量子ビットQCを制御ビットとし、量子ビットQCを目標ビットとするCNOT演算操作を実行する(ステップS111)。次に、交換演算部45が、量子ビットQCを制御ビットとし、量子ビットQCを目標ビットとするCNOT演算操作を実行する(ステップS112)。さらに、交換演算部45が、量子ビットQCを制御ビットとし、量子ビットQCを目標ビットとするCNOT演算操作を実行する(ステップS113)。
ここで、量子ビットQCの量子状態が|0>であった場合(s<pの場合)、この量子操作により、量子ビットQC,QCの量子状態は、それぞれ|0>,|s>となる。そして、s<pなのだからs=p=0である。一方、量子ビットQCの量子状態が|1>であった場合(s≧pの場合)、この量子操作により、量子ビットQC,QCの量子状態は、それぞれ|1>,|(s−p)>となる。そして、a+b=s<2pなのだから、s−p<pであり、(s−p)=p=0である(交換演算過程〔SWAP〕/ステップS5)の詳細の説明終わり)。
[第2比較演算過程〔COMP〕/ステップS6の詳細]
次に、第2比較演算過程〔COMP〕/ステップS6の詳細について説明する。
図10及び図11は、第2比較演算過程〔COMP〕/ステップS6の詳細を説明するためのフローチャートである。また、図23は、第2比較演算過程〔COMP〕の量子操作全体を説明するための量子回路図(n=5の例)である。また、図24〜図27は、図23のT1〜T4の各量子操作を説明するための量子回路図である。
第2比較演算過程は、量子状態が|a>,…,|an−1>のn個の量子ビットQA,…,QAn−1と、量子状態が|u>,…,|un−1>のn個の量子ビットQB,…,QBn−1と、量子状態が|γ>(γ∈{0,1})の量子ビットQCとに対する量子操作であり、以下のT1〜T4の量子操作が実行される。
[T1の量子操作]
まず、比較演算部46は、量子ビットQB,・・・,QBn−1に対するNOT演算操作を行う(ステップS121)。次に、演算制御部30は、変数θに1を代入し、これをメモリ20に格納する(ステップS122)。次に、演算制御部30はメモリ20に格納された変数θを読み込み、この変数θに応じた命令を比較演算部46に与える。これに対し、比較演算部46は、QAθ,QCに対するCNOT演算操作と、QBθ,QCに対するCNOT演算操作とを実行(制御ビットQC,目標ビットQAθ,QBθ)する(ステップS123)。
次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θがn−1であるか否かを判断する(ステップS124)。ここで、θ=n−1でなければ、演算制御部30は、メモリ20の変数θに1を加えた値を新たなθとしてメモリ20に格納し、処理をステップS123に戻す(ステップS125)。一方、θ=n−1であれば、以下のT2の量子操作に移る。
[T2の量子操作]
まず、比較演算部46が、量子ビットQA,QB,QCに対するトフォリ演算操作(制御ビットQA,QB,目標ビットQC)を行う(ステップS126)。
次に、演算制御部30が、変数θに1を代入し、これをメモリ20に格納する(ステップS127)。そして、演算制御部30はメモリ20に格納された変数θを読み込み、この変数θに応じた命令を比較演算部46に与える。比較演算部46は、量子ビットQBθ,QAθ,QCに対するMAJ演算操作を行う(ステップS128)。なお、ステップS128のMAJ演算操作は、量子ビットQBθ,QAθ,QCを、それぞれ、図18(a)の入力(1),(2),(3)として行う。次に、比較演算部46は、量子ビットQB,QBθ,QAθに対するトフォリ演算操作(制御ビットQBθ,QAθ、目標ビットQB)を行う(ステップS129)。
次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θがn−2であるか否かを判断する(ステップS130)。ここで、θ=n−2でなければ、演算制御部30は、メモリ20の変数θに1を加えた値を新たなθとしてメモリ20に格納し、処理をステップS128に戻す(ステップS131)。一方、θ=n−2であれば、比較演算部46に命令を与え、比較演算部46は、量子ビットQBn−1,QAn−1,QCに対するMAJ演算操作を行う(ステップS132)。なお、このMAJ演算操作は、量子ビットQBn−1,QAn−1,QCを、それぞれ、図18(a)の入力(1),(2),(3)として行う。
[T3の量子操作]
次に、演算制御部30は、変数θにn−1を代入し、これをメモリ20に格納する(ステップS141)。次に、演算制御部30はメモリ20に格納された変数θを読み込み、この変数θに応じた命令を比較演算部46に与える。これを受けた比較演算部46は、量子ビットQAθ,QBに対するCNOT演算操作(制御ビットQB、目標ビットQAθ)と、量子ビットQBθ,QBに対するCNOT演算操作(制御ビットQB、目標ビットQBθ)とを行う(ステップS142)。さらに、比較演算部46は、量子ビットQB,QAθ−1,QBθ−1に対するトフォリ演算操作(制御ビットQAθ−1,QBθ−1、目標ビットQB)を行う(ステップS143)。
次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θが2であるか否かを判断する(ステップS144)。ここで、θ=2でなければ、演算制御部30は、メモリ20の変数θから1を引いた値を新たなθとしてメモリ20に格納し、処理をステップS142に戻す(ステップS145)。一方、θ=2であれば、以下のT4の量子操作に移る。
[T4の量子操作]
まず、比較演算部46が、QAに対するNOT演算操作を行う(ステップS146)。次に、演算制御部30は、変数θにn−1を代入し、これをメモリ20に格納する(ステップS147)。次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θに応じた命令を比較演算部46に与える。これを受けた比較演算部46は、量子ビットQB,QA,QAθに対するトフォリ演算操作(制御ビットQB,QA、目標ビットQAθ)と、量子ビットQB,QA,QBθに対するトフォリ演算操作(制御ビットQB,QA、目標ビットQBθ)とを行う(ステップS148)。
次に、演算制御部30は、メモリ20に格納された変数θを読み込み、この変数θが2であるか否かを判断する(ステップS149)。ここで、θ=2でなければ、演算制御部30は、メモリ20の変数θから1を引いた値を新たなθとしてメモリ20に格納し、処理をステップS148に戻す(ステップS150)。一方、θ=2であれば、比較演算部46において、量子ビットQAに対するNOT演算操作を行い(ステップS151)、さらに、量子ビットQB,QA,QAに対するトフォリ演算操作(制御ビットQB,QA、目標ビットQA)と、量子ビットQB,QA,QBに対するトフォリ演算操作(制御ビットQB,QA、目標ビットQB)とを行う(ステップS152)。次に、演算制御部30は、量子ビットQB,…,QBn−1,QCに対するNOT演算操作を行う(ステップS153)。
以上の処理により、量子ビットQA,…,QAn−1の量子状態がそれぞれ|a>,…,|an−1>となり、量子ビットQB,…,QBn−1の量子状態がそれぞれ|u>,…,|un−1>となり、量子ビットQCの量子状態が|γ(+)δ>となる。なお、γ=0なのは、a+b=s=u<pの場合である。この場合は、a≦uとなり、δ=1となる。よって、γ(+)δ=1となる。一方、γ=1なのは、a+b=s≧pであり、u=s−p=a+b−pの場合である。そして、b<pなのだから、b−p<0である。よって、u>aとなり、δ=1となる。すなわち、量子ビットQCの量子状態は必ず|1>となる(第2比較演算過程〔COMP〕/ステップS6の詳細の説明終わり)。そして、最後にNOT演算部47が、量子ビットQCにNOT演算を施す(NOT演算過程/ステップS7)のだから、最終的には、量子ビットQCの量子状態は必ず|0>になる。
<本形態の特徴>
以上のように、本形態では、2個の補助ビットを用い、量子フーリエ変換とその逆変換それぞれ1個とO(n)個(具体的には、n≧5で9n2+221n-187個)の基本演算とを、O(n)個の計算ステップで実行し、有限体GF(p)上の加算を行うことができる。このように、本形態では、従来構成に比べ、補助ビット数の削減と基本演算数の低減とを同時に行うことができ、演算誤り率を低減させることができる。
〔第2の実施の形態〕
次に、本発明における第2の実施の形態について説明する。
本形態は、第1の実施の形態の変形例であり、比較演算過程の処理と制御減算演算過程との処理のみが相違する。すなわち、第1の実施の形態では、メモリ20にpを古典情報として保持し、この古典情報を用いたHIGHBIT(p)演算操作やΦADD(p)−1演算操作を行っていた。本形態では、pを古典情報ではなく、量子情報として量子ビットに保持し、この量子情報を用いて行われるHIGHBIT演算操作やΦADD−1演算操作を用い、比較演算過程の処理と制御減算演算過程との処理を実行する。なお、以下では、第1の実施の形態との相違点を中心に説明し、第1の実施の形態と共通する事項については説明を省略する。
<構成>
図28は、第2の実施の形態における量子演算装置100の構成を示したブロック図である。
図28に示すように、本形態の量子演算装置100は、量子ビット110と、メモリ20と、演算制御部130と、量子演算部140とを有している。ここで、量子ビット110は、n個の量子ビットQA,…,QAn−1と、n個の量子ビットQB,…,QBn−1と、2個の量子ビットQC,QCと、n個の量子ビットQP,…,QPn−1とによって構成される。また、量子演算部140は、初期量子状態生成過程を実行する初期量子状態生成部141と、加算演算過程を実行する加算演算部42と、第1比較演算過程を実行する比較演算部143と、制御減算演算過程を実行する制御減算演算部144と、交換演算過程を実行する交換演算部45と、第2比較演算過程を実行する比較演算部46と、NOT演算過程を実行するNOT演算部47とを有している。なお、これらの加算演算部42と、比較演算部143と、制御減算演算部144と、交換演算部45と、比較演算部46と、NOT演算部47との各機能は、基本演算単体或いは基本演算の組合せによって実現される。
<処理>
以下では、初期量子状態生成過程と、HIGHBIT(p)演算操作やΦADD(p)−1演算操作の代わりに行われるHIGHBIT演算操作やΦADD−1演算操作とを説明する。その他処理については、第1の実施の形態と同じであるため説明を省略する。
[初期量子状態生成過程]
本形態の初期量子状態生成過程では、初期量子状態生成部141が、n個の量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、n個の量子ビットQB,…,QBn−1の量子状態をそれぞれ|b>,…,|bn−1>とし、2個の量子ビットQC,QCの量子状態をそれぞれ|0>,|0>し、n個の量子ビットQP,…,QPn−1の量子状態をそれぞれ|p>,…,|pn−1>とする。
[HIGHBIT演算操作]
次に、本形態のHIGHBIT演算操作について説明する。
図29及び図30は、第2の実施の形態のHIGHBIT演算操作を説明するためのフローチャートである。また、図31及び図32は、第2の実施の形態のHIGHBIT演算操作を説明するための量子回路図である。さらに、図33(a)は、図31及び図32のA演算操作を説明するための量子回路図であり、図33(b)は、C演算操作を説明するための量子回路図である。また、図34は、図31及び図32の3トフォリ演算操作を説明するための量子回路である。
HIGHBIT演算操作は、量子状態が|a>,…,|an−1>のn個の量子ビットQA,…,QAn−1と、量子状態が|s’>,…,|sn−1’>のn個の量子ビットQB,…,QBn−1と、量子状態が|s’>の量子ビットQCと、量子状態が|0>の量子ビットQCと、量子状態が|p>,…,|pn−1>の量子ビットQP,…,QPn−1とに対する量子操作である。
まず、比較演算部143が、量子ビットQAn−1,QCに対するCNOT演算操作(制御ビットQAn−1,目的ビットQC)を行う(第1制御NOT演算過程/ステップS201)。次に、比較演算部143が、量子ビットQAn−1,QAn−2,QCに対するトフォリ演算操作(制御ビットQAn−2,QC,目的ビットQAn−1)を行う(第1トフォリ演算過程/ステップS202)。
次に、演算制御部130は、変数θにn−1を代入し、これをメモリ20に格納する(ステップS203)。次に、演算制御部30はメモリ20に格納された変数θとpθとを読み込み、これらの変数θとpθとに応じた命令を比較演算部143に与える。これを受けた比較演算部143は、量子ビットQAθ−1,QAθ−2,QBθ,QPθに対するA演算操作を行う(第1量子操作過程/ステップS204)。
図33(a)に示すように、A演算は、4つの量子ビットQAθ−2,QPθ,QBθ,QAθ−1に対する量子操作である(入力時の各量子状態がv, pθ,v,v∈{0,1}を示すものとする)。A演算では、まず、量子ビットQPθを制御ビットとし、量子ビットQBθを目標ビットとしたCNOT演算を適用する。次に、量子ビットQAθ−2,QBθを制御ビットとし、量子ビットQAθ−1を目標ビットとしたトフォリ演算を適用し、さらに、量子ビットQPθを制御ビットとし、量子ビットQBθを目標ビットとしたCNOT演算を適用する。これらの操作により、4つの量子ビットQAθ−2,QPθ,QBθ,QAθ−1の量子状態は、それぞれv,pθ,v,v(+)(pθ(+)v)・vを示すものとなる。以上がA演算である。
次に、演算制御部130が、メモリ20に格納された変数θを読み込み、この変数θが2であるか否かを判断する(ステップS205)。ここで、θ=2でなければ、演算制御部130は、メモリ20の変数θから1を引いた値を新たなθとしてメモリ20に格納し、処理をステップS204に戻す(ステップS206)。一方、θ=2であれば、演算制御部130は、比較演算部143に、量子ビットQP,QB,QAに対するトフォリ演算操作(制御ビットQP,QB,目標ビットQA)と、量子ビットQP,QBのCNOT演算操作(制御ビットQP,目標ビットQB)とを実行させる(第2量子操作過程/ステップS207)。さらに、演算制御部130は、比較演算部143に、量子ビットQP,QB,QB,QAに対する3トフォリ演算操作(制御ビットQP,QB,QB,目標ビットQA)を実行させる(第3量子演算過程/ステップS208)。なお、3トフォリ演算操作の内容は図34に示す通りである。
次に、比較演算部143は、量子ビットQAθ−1,QAθ−2,QBθ,QPθに対するC演算操作
を行う(第4量子操作過程/ステップS209)。
図33(b)に示すように、C演算は、4つの量子ビットQAθ−1,QPθ,QBθ,QAθ−2に対する量子操作である(入力時の各量子状態がv,pθ,v,v∈{0,1}を示すものとする)。C演算では、まず、量子ビットQPθ,QBθを制御ビットとし、量子ビットQAθ−1を目標ビットとしたトフォリ演算を適用し、さらに、量子ビットQPθを制御ビットとし、量子ビットQBθを目標ビットとしたCNOT演算を適用する。その後、量子ビットQAθ−2,QBθを制御ビットとし、量子ビットQAθ−1を目標ビットとしたトフォリ演算を適用する。これらの操作により、4つの量子ビットQAθ−1,QPθ,QBθ,QAθ−2の量子状態は、それぞれv,pθ,pθ(+)v,v(+)vθ(+)vを示すものとなる。以上がC演算である。
次に、演算制御部130が、メモリ20に格納された変数θを読み込み、この変数θがn−1であるか否かを判断する(ステップS210)。ここで、θ=n−1でなければ、演算制御部130は、メモリ20の変数θに1を加算した値を新たなθとしてメモリ20に格納し、処理をステップS209に戻す(ステップS211)。一方、θ=n−1であれば、演算制御部130は、比較演算部143に、量子ビットQAn−1,QAn−2,QCに対するトフォリ演算操作(制御ビットQAn−2,QC,目的ビットQAn−1)を実行させる(第2トフォリ演算過程/ステップS212)。
次に、比較演算部143が、量子ビットQAn−1,QCに対するCNOT演算操作(制御ビットQAn−1,目的ビットQC)を行う(第2制御NOT演算過程/ステップS221)。次に、比較演算部143が、量子ビットQAn−1,QAn−2,QCに対するトフォリ演算操作(制御ビットQAn−2,QC,目的ビットQAn−1)を行う(第3トフォリ演算過程/ステップS222)。
次に、演算制御部130は、変数θにn−1を代入し、これをメモリ20に格納する(ステップS223)。次に、演算制御部130はメモリ20に格納された変数θとpθとを読み込み、これらの変数θとpθとに応じた命令を比較演算部143に与える。これを受けた比較演算部143は、量子ビットQAθ−1,QAθ−2,QBθ,QPθに対するC−1演算操作を行う(第5量子操作過程/ステップS224)。なお、C−1演算は、C演算の逆演算である。
次に、演算制御部130が、メモリ20に格納された変数θを読み込み、この変数θが2であるか否かを判断する(ステップS225)。ここで、θ=2でなければ、演算制御部130は、メモリ20の変数θから1を引いた値を新たなθとしてメモリ20に格納し、処理をステップS224に戻す(ステップS226)。一方、θ=2であれば、演算制御部130は、比較演算部143に、量子ビットQP,QB,QBを制御ビットとし、量子ビットQAを目標ビットとしたトフォリ演算操作を実行させる(第6量子演算過程/ステップS227)。さらに、演算制御部130は、比較演算部143に、量子ビットQPを目標ビットとし、量子ビットQBを目標ビットとしたCNOT演算操作を実行させ、さらにその後、量子ビットQP,QBを制御ビットとし、量子ビットQA目標ビットとしたトフォリ演算操作を実行させる(第7量子操作過程/ステップS228)。
次に、演算制御部130は、比較演算部143に、量子ビットQAθ−1,QAθ−2,QBθ,QPθ−1に対するA演算操作を行う(第8量子操作過程/ステップS229)。
次に、演算制御部230が、メモリ20に格納された変数θを読み込み、この変数θがn−1であるか否かを判断する(ステップS230)。ここで、θ=n−1でなければ、演算制御部130は、メモリ20の変数θに1を加算した値を新たなθとしてメモリ20に格納し、処理をステップS229に戻す(ステップS231)。一方、θ=n−1であれば、演算制御部130は、比較演算部143に、量子ビットQAn−1,QAn−2,QCに対するトフォリ演算操作(制御ビットQAn−2,QC,目的ビットQAn−1)を実行させる(第4トフォリ演算過程/ステップS232/HIGHBIT演算操作の説明終わり)。
[ΦADD−1演算操作]
次に、本形態のΦADD−1演算操作について説明する。
本形態のΦADD−1演算操作は、量子ビットQCを制御ビットとした制御演算操作である。また、量子ビットQCを制御ビットとして制御されるΦADD−1演算操作は、量子状態がそれぞれ|a>,…,|an−1>,|s>,…,|sn−1>,|s>である量子ビットQA,…,QAn−1,QB,…,QBn−1,QCに対する量子操作であり、ΦADD演算操作の逆演算である。また、ΦADD演算操作の内容は、図44に示した通りである(なお、図44は、n=5の例であり、d,…,dがa,…,aに対応し、f,…,f,gがs,…,s,sに対応する)。
<本形態の特徴>
以上のような構成としても、量子ビットQA,…,QAn−1,QB,…,QBn−1,QC,QCに対して第1の実施の形態と同じ量子操作を施すことができる。そのため、本形態でも、2個の補助ビットを用い、量子フーリエ変換とその逆変換それぞれ1個とO(n)個(具体的には、n≧5で9n2+221n-187個)の基本演算とを、O(n)個の計算ステップで実行し、有限体GF(p)上の加算を行うことができる。その結果、本形態でも、従来構成に比べ、補助ビット数の削減と基本演算数の低減とを同時に行うことができ、演算誤り率を低減させることができる。
〔ハードウェア構成〕
次に各実施の形態の量子演算装置1,100のハードウェア構成を例示する。
本形態の量子演算装置1,100は、量子コンピュータと古典コンユータとの組合せ、或いは量子コンピュータ単体で実現できる。量子コンピュータの実現する物理系としては、例えば、イオントラップを用いる方法(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,100を実現するための具体的なハードウェア構成を例示する。
<量子ビット>
イオントラップ量子コンピュータでは、例えば、イオンの基底状態と励起状態を利用して量子ビットを実現する。また、核スピンを量子ビットとして用いる場合には、例えば、「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)、
1138326796062_1
、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演算を実現してもよい。
<量子ビット単体の操作(NOT演算,アダマール変換,k回転演算)>
イオントラップ量子コンピュータでは、例えば、イオンを直線上に並べ、各イオンに狙いを定めたレーザービーム照射によって量子ビット単体の操作を実現する。核スピンを量子ビットとして用いる場合には、電磁波パルスやレーザービーム照射によって各処理を実現する。また、量子ビットとして光子の偏光を用いる場合には、例えば、偏光回転素子等によって実現する。
<演算制御部30,130,メモリ20>
演算制御部30,130は、例えば公知のコンピュータに所定のプログラムを実行させて実現してもよいし、上述の量子コンピュータによって実現してもよい。また、メモリ20は、DRAM、SRAM、フラッシュメモリ、NV(Nonvolatile)RAM等の読書き可能な半導体メモリであってもよいし、上述の量子メモリであってもよい。
なお、本発明は上述の実施の形態に限定されるものではない。例えば、第1の実施の形態では、pが素数であることとしたが、a+b<2pであるならばpは素数でなくてもよい。また、量子操作後の各量子ビットを他の量子計算に用いる必要がないならば、ステップS5からS7の処理は行わなくてもよい。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
本発明の産業上の利用分野としては、例えば、楕円曲線暗号等の暗号分野を例示できる。
図1は、第1の実施の形態における量子演算装置の構成を示したブロック図である。 図2は、量子演算部の各機能を実現するための基本演算を表した図である。ここで、図2(a)は、1量子ビットに対するNOT演算を表す。図2(b)は、1量子ビットに対するアダマール変換を表す。図2(c)は、1量子ビットに対するk回転演算を表す。図2(d)は、2量子ビットに対するCNOT(制御NOT)演算を表す。 図3は、第1の実施の形態の処理の全体を説明するためのフローチャートである。 図4は、加算演算過程〔ADD〕/ステップS2の詳細を説明するためのフローチャートである。 図5は、加算演算過程〔ADD〕/ステップS2の詳細を説明するためのフローチャートである。 図6は、第1比較演算過程〔COMPARISON(p)〕/ステップS3の詳細の詳細を説明するためのフローチャートである。 図7は、図6のステップS46のHIGHBIT(p)演算操作を説明するためのフローチャートである。 図8は、図6のステップS46のHIGHBIT(p)演算操作を説明するためのフローチャートである。 図9は、制御減算演算過程〔QFT,ΦADD(p)−1,QFT−1〕を説明するためのフローチャートである。 図10は、第2比較演算過程〔COMP〕/ステップS6の詳細を説明するためのフローチャートである。 図11は、第2比較演算過程〔COMP〕/ステップS6の詳細を説明するためのフローチャートである。 図12は、第1の実施の形態の量子操作全体を説明するための量子回路図(n=5の例)である。 図13は、加算演算過程〔ADD〕の量子操作全体を説明するための量子回路図(n=5の例)である。 図14は、図13のW1の各量子操作を説明するための量子回路図である。 図15は、図13のW2の各量子操作を説明するための量子回路図である。 図16は、図13のW3の各量子操作を説明するための量子回路図である。 図17は、図13のW4の各量子操作を説明するための量子回路図である。 図18(a)は、図15に示すMAJ(majority)演算を説明するための量子回路図である。図18(b)は、交換演算過程〔SWAP〕を説明するための量子回路図である。 図19は、第1比較演算過程〔COMPARISON(p)〕を説明するための量子回路図(n=5の例)である。 図20は、HIGHBIT(p)演算を説明するための量子回路図である。 図21は、HIGHBIT(p)演算を説明するための量子回路図である。 図22(a)は、図20及び図21のA(p)演算を説明するための量子回路図であり、図22(b)は、C(p)演算を説明するための量子回路図である。 図23は、第2比較演算過程〔COMP〕の量子操作全体を説明するための量子回路図(n=5の例)である。 図24は、図23のT1の各量子操作を説明するための量子回路図である。 図25は、図23のT2の各量子操作を説明するための量子回路図である。 図26は、図23のT3の各量子操作を説明するための量子回路図である。 図27は、図23のT4の各量子操作を説明するための量子回路図である。 図28は、第2の実施の形態における量子演算装置の構成を示したブロック図である。 図29は、第2の実施の形態のHIGHBIT演算操作を説明するためのフローチャートである。 図30は、第2の実施の形態のHIGHBIT演算操作を説明するためのフローチャートである。 図31は、第2の実施の形態のHIGHBIT演算操作を説明するための量子回路図である。 図32は、第2の実施の形態のHIGHBIT演算操作を説明するための量子回路図である。 図33(a)は、図31及び図32のA演算操作を説明するための量子回路図であり、図33(b)は、C演算操作を説明するための量子回路図である。 図34は、図31及び図32の3トフォリ演算操作を説明するための量子回路である。 図35は、n=5の場合における従来技術1の量子回路図である。 図36は、図35におけるADD1演算の量子回路図である。 図37(a)は、CARRY演算を示す量子回路図であり、図37(b)は、SUM演算を示す量子回路図である。 図38(a)はトフォリ演算を示す図であり、図38(b)はCNOT演算を示す図であり、図38(c)はNOT演算を示す図である。 図39は、ADD1(p)演算の量子回路を示す図である。 図40(a)は、CARRY(p)演算を示す量子回路図であり、図40(b)は、SUM(p)演算を示す量子回路図である。 図41は、n=5の場合における従来技術2の量子回路図である。 図42は、QFT演算を示す量子回路である。 図43(a)は、アダマール変換演算を表す図であり、図43(b)は、制御回転演算を表す図である。 図44は、QFT演算とQFT−1演算との間に実行されるΦADD変換を表した量子回路図である。 図45は、ΦADD(p)演算を表した量子回路図である。 図46は、図45のσ(f)演算を表した量子回路図である。
符号の説明
1,100 量子演算装置

Claims (6)

  1. 2つの2進数a=an−1…a(a∈{0,1},i∈{0,…,n−1})及びb=bn−1…b(b∈{0,1})に対し、(a+b)mod p(p=pn−1…p,p∈{0,1},a+bはpの2倍未満)を算出する量子演算方法であって、
    n個の量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、n個の量子ビットQB,…,QBn−1の量子状態をそれぞれ|b>,…,|bn−1>とし、2個の量子ビットQC,QCの量子状態をそれぞれ|0>,|0>としておき、
    上記量子ビットQA,…,QAn−1,QB,…,QBn−1,QCに対する加算量子操作を行い、上記量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、上記量子ビットQB,…,QBn−1の量子状態をそれぞれ、|s>,…,|sn−1>(a+b=s…s(s∈{0,1},k∈{0,…,n}))とし、上記量子ビットQCの量子状態を|s>とする加算演算過程と、
    上記加算演算過程で上記加算量子操作された上記量子ビットQA,…,QAn−1,QB,…,QBn−1,QCと、上記量子ビットQCとに対する比較量子操作を行い、上記量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、上記量子ビットQB,…,QBn−1の量子状態をそれぞれ|s>,…,|sn−1>とし、上記量子ビットQCの量子状態を|s>とし、上記量子ビットQCの量子状態を|y>(p≦a+bの場合y=1、p>a+bの場合y=0)とする第1比較演算過程と、
    上記第1比較演算過程で上記比較量子操作された上記量子ビットQCの量子状態が|1>であった場合にのみ、上記第1比較演算過程で上記比較量子操作された上記量子ビットQB,…,QBn−1の量子状態をそれぞれ|t>,…,|tn−1>(a+b−p=tn−1…t(t∈{0,1}))とし、上記量子ビットQCの量子状態を|0>とする制御減算演算過程と、
    を実行し、
    上記加算演算過程で行われる上記加算量子操作は、
    θ=1,…,n−1のそれぞれについて昇順で、上記量子ビットQC を制御ビットとし、上記量子ビットQA θ を目標ビットとしたCNOT演算操作と、上記量子ビットQC を制御ビットとし、上記量子ビットQB θ を目標ビットとしたCNOT演算操作とを行うW1量子操作過程と、
    上記量子ビットQA ,QB を制御ビットとし,上記量子ビットQC を目標ビットとしたトフォリ演算操作を行い、θ=1,…,n−2のそれぞれについて昇順で、上記量子ビットQB θ ,QA θ ,QC に対するMAJ演算操作と、上記量子ビットQB θ ,QA θ を制御ビットとし、上記量子ビットQB を目標ビットとしたトフォリ演算操作とを行い、さらに上記量子ビットQB n−1 ,QA n−1 ,QC に対するMAJ演算操作を行うW2量子操作過程と、
    θ=2,…,n−1のそれぞれについて降順で、上記量子ビットQB を制御ビットとし、上記量子ビットQA θ を目標ビットとしたCNOT演算操作と、上記量子ビットQB θ−1 ,QA θ−1 を制御ビットとし,上記量子ビットQB を目標ビットとしたトフォリ演算操作とを行うW3量子操作過程と、
    上記量子ビットQA に対するNOT演算操作を行い、θ=2,…,n−1のそれぞれについて降順で、上記量子ビットQB ,QA を制御ビットとし、上記量子ビットQA θ を目標ビットとしたトフォリ演算操作を行い、さらに、上記量子ビットQA に対するNOT演算操作を行い、上記量子ビットQB ,QA を制御ビットとし,上記量子ビットQA を目標ビットとしたトフォリ演算操作を行い、さらに、θ=0,…,n−1のそれぞれについて昇順で、上記量子ビットQA θ を制御ビットとし、上記量子ビットQB θ を目標ビットとしたCNOT演算操作を行うW4量子操作過程と、を含む操作であり、
    記第1比較演算過程で行われる上記比較量子操作は、
    上記加算演算過程で上記加算量子操作された上記量子ビットQB,…,QBn−1,QCの量子状態をそれぞれ反転させ、各量子状態を|s’>,…,|sn−1’>,|s’>とする第1NOT演算過程と、
    上記第1NOT演算過程で得られた各量子状態が|s ’>,…,|s n−1 ’>,|s ’>の上記量子ビットQB,…,QBn−1,QCと、上記加算演算過程で上記加算量子操作された上記量子ビットQA,…,QAn−1,QCとに対する最上位ビット演算量子操作を行い、当該量子ビットQB,…,QBn−1,QCの量子状態をそれぞれ、|s’>,…,|sn−1’>,|s’>とし、当該量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、当該量子ビットQCの量子状態を|x>(xはs’+p(s’=s’sn−1’…s’)を2進n+2桁表記した際の最上位桁の値)とする最上位ビット演算過程と、
    上記最上位ビット演算過程で上記最上位ビット演算量子操作された上記量子ビットQB,…,QBn−1,QC,QCの量子状態をそれぞれ反転させ、各量子状態を|s>,…,|sn−1>,|s>,|y>とする第2NOT演算過程と、を含む操作であり、
    記最上位ビット演算過程で行われる上記最上位ビット演算量子操作は、
    上記量子ビットQAn−1を制御ビットとし、上記量子ビットQCを目標ビットとした制御NOT演算を行う第1制御NOT演算過程と、
    上記第1制御NOT演算過程による処理の後、上記量子ビットQAn−2,QCを制御ビットとし、上記量子ビットQAn−1を目標ビットとしたトフォリ演算を施す第1トフォリ演算過程と、
    上記第1トフォリ演算過程による処理の後、降順で各j∈{2,…,n−1}に対して、p=1である場合にのみ上記量子ビットQBにNOT演算を施し、pの値に拘らず上記量子ビットQAj−2,QBとを制御ビットとして上記量子ビットQAj−1を目標ビットとしたトフォリ演算を施し、p=1である場合にのみ上記量子ビットQBにNOT演算を施す量子操作を実行する第1量子操作過程と、
    上記第1量子操作過程による処理の後、p=1である場合にのみ、上記量子ビットQBを制御ビットとし、上記量子ビットQAを目標ビットとした制御NOT演算を施し、さらにその後、上記量子ビットQBにNOT演算を施す第2量子操作過程と、
    上記第2量子操作過程による処理の後、p=1である場合にのみ、上記量子ビットQB,QBを制御ビットとし、上記量子ビットQAを目標ビットとしたトフォリ演算を施す第3量子演算過程と、
    上記第3量子操作過程による処理の後、昇順で各jに対して、p=1である場合にのみ上記量子ビットQBを制御ビットとして上記量子ビットQAj−1を目標ビットとした制御NOT演算を施し、p=1である場合にのみ上記量子ビットQBにNOT演算を施し、pの値に拘らず上記量子ビットQAj−2,QBとを制御ビットとし、上記量子ビットQAj−1を目標ビットとしたトフォリ演算を施す量子操作を実行する第4量子操作過程と、
    上記第4量子操作過程による処理の後、上記量子ビットQAn−2,QCを制御ビットとし、上記量子ビットQAn−1を目標ビットとしたトフォリ演算を施す第2トフォリ演算過程と、
    上記第2トフォリ演算過程による処理の後、上記量子ビットQAn−1を制御ビットとし、上記量子ビットQCを目標ビットとした制御NOT演算を行う第2制御NOT演算過程と、
    上記第2制御NOT演算による処理の後、上記量子ビットQAn−2,QCを制御ビットとし、上記量子ビットQAn−1を目標ビットとしたトフォリ演算を施す第3トフォリ演算過程と、
    上記第3トフォリ演算過程による処理の後、降順で各jに対し、上記第4量子操作過程の操作の逆演算操作を、上記量子ビットQAj−2,QB,QAj−1に対して施す第5量子操作過程と、
    上記第5量子操作過程による処理の後、p=1である場合にのみ、上記量子ビットQB,QBを制御ビットとし、上記量子ビットQAを目標ビットとしたトフォリ演算を施す第6量子演算過程と、
    上記第6量子操作過程による処理の後、p=1である場合にのみ、上記量子ビットQBにNOT演算を施し、さらにその後、上記量子ビットQBを制御ビットとし、上記量子ビットQAを目標ビットとした制御NOT演算を施す第7量子操作過程と、
    上記第7量子操作過程による処理の後、昇順で各jに対して、上記第1量子操作過程の演算操作を上記量子ビットQAj−2,QB,QAj−1に対して施す第8量子操作過程と、
    上記第8量子操作過程による処理の後、上記量子ビットQAn−2,QCを制御ビットとし、上記量子ビットQAn−1を目標ビットとしたトフォリ演算を施す第4トフォリ演算過程と、を含む操作であり、
    上記制御減算演算過程は、
    量子状態がそれぞれ|s >,…,|s n−1 >,|s >である上記量子ビットQB ,・・・,QB n−1 ,QC に対して量子フーリエ変換を行い、上記量子ビットQB ,・・・,QB n−1 ,QC の量子状態を|Φ (s)>,…,|Φ n−1 (s)>,|Φ (s)>にするQFT演算過程と、
    上記量子ビットQC を制御ビットとし、上記量子ビットQB ,・・・,QB n−1 ,QC ,QC を目標ビットとした制御ΦADD(p) −1 演算操作を行う制御ΦADD(p) −1 演算過程と、
    上記量子ビットQB ,・・・,QB n−1 ,QC に対して上記量子フーリエ変換の逆演算を行うQFT −1 演算過程と、を含み、
    s=s n−1 …s 、k=0,…,n、eは自然対数であり、
    Figure 0004829623
    であり、
    前記制御ΦADD(p) −1 演算操作は、
    上記量子ビットQC の量子状態が|1>の場合にのみ、上記量子ビットQB ,・・・,QB n−1 ,QC に対するΦADD(p) −1 演算操作を行う操作であり、
    上記ΦADD(p) −1 演算操作は、ΦADD(p)演算の逆演算であり、
    上記ΦADD(p)演算は、
    量子ビットQB の量子状態|g >(k=0,…,n)のそれぞれを
    Figure 0004829623
    にする演算である、
    とを特徴とする量子演算方法。
  2. 請求項1に記載の量子演算方法であって、
    上記pは素数であり、
    上記a,bは上記p未満である、
    ことを特徴とする量子演算方法。
  3. 請求項1に記載の量子演算方法であって、
    上記制御減算演算過程による処理の後、上記量子ビットQCと上記量子ビットQCとの量子状態を交換する交換演算過程と、
    上記交換演算過程による処理の後、上記量子ビットQA,…,QAn−1,QB,…,QBn−1,QCに対する第2比較量子操作を行い、上記量子ビットQA,…,QAn−1,QB,…,QBn−1の量子状態を当該量子操作前のものとし、上記量子ビットQCの量子状態を|γ(+)δ>(γ(+)δはγとδとの排他的論理和を示し、γは当該量子操作前の上記量子ビットQCの量子状態が示す値であり、上記量子ビットQBの各量子状態が示す値をi+1桁目の値とした2進n桁の数βが、上記量子ビットQAの各量子状態が示す値をi+1桁目の値とした2進n桁の数α以上である場合δ=1であり、βがα未満である場合δ=0である)とする第2比較演算過程と、
    上記第2比較演算過程による処理の後、上記量子ビットQCにNOT演算を施す第3NOT演算過程と、
    を有し、
    上記第2比較演算過程で行われる上記第2比較量子操作は、
    上記量子ビットQB ,・・・,QB n−1 に対するNOT演算操作を行い、θ=1,…,n−1のそれぞれについて昇順で、上記量子ビットQC を制御ビットとし、上記量子ビットQA θ を目標ビットとしたCNOT演算操作と、上記量子ビットQC を制御ビットとし、上記量子ビットQB θ を目標ビットとしたCNOT演算操作とを行うT1量子操作過程と、
    上記量子ビットQA ,QB を制御ビットとし,上記量子ビットQC を目標ビットとしたトフォリ演算操作を行い、θ=1,…,n−2のそれぞれについて昇順で、上記量子ビットQB θ ,QA θ ,QC に対するMAJ演算操作と、上記量子ビットQB θ ,QA θ を制御ビットとし、上記量子ビットQB を目標ビットとしたトフォリ演算操作とを行い、さらに上記量子ビットQB n−1 ,QA n−1 ,QC に対するMAJ演算操作を行うT2量子操作過程と、
    θ=2,…,n−1のそれぞれについて降順で、上記量子ビットQB を制御ビットとし、上記量子ビットQA θ を目標ビットとしたCNOT演算操作と、上記量子ビットQB を制御ビットとし、上記量子ビットQB θ を目標ビットとしたCNOT演算操作と、上記量子ビットQA θ−1 ,QB θ−1 を制御ビットとし,上記量子ビットQB を目標ビットとしたトフォリ演算操作とを行うT3量子操作過程と、
    上記量子ビットQA に対するNOT演算操作を行い、θ=2,…,n−1のそれぞれについて降順で、上記量子ビットQB ,QA を制御ビットとし、上記量子ビットQA θ を目標ビットとしたトフォリ演算操作を行い、上記量子ビットQB ,QA を制御ビットとし、上記量子ビットQB θ を目標ビットとしたトフォリ演算操作を行い、さらに、上記量子ビットQA に対するNOT演算操作を行い、上記量子ビットQB ,QA を制御ビットとし、上記量子ビットQA 1 を目標ビットとしたトフォリ演算操作を行い、上記量子ビットQB ,QA を制御ビットとし、上記量子ビットQB 1 を目標ビットとしたトフォリ演算操作を行い、上記量子ビットQB ,…,QB n−1 ,QC に対するNOT演算操作を行うT4量子操作過程と、を含む操作である、
    とを特徴とする量子演算方法。
  4. 2つの2進数a=an−1…a(a∈{0,1},i∈{0,…,n−1})及びb=bn−1…b(b∈{0,1})に対し、(a+b)mod p(p=pn−1…p,p∈{0,1},a+bはpの2倍未満)を算出する量子演算装置であって、
    初期量子状態がそれぞれ|a>,…,|an−1>であるn個の量子ビットQA,…,QAn−1と、初期量子状態をそれぞれ|b>,…,|bn−1>であるn個の量子ビットQB,…,QBn−1と、初期量子状態がそれぞれ|0>,|0>である2個の量子ビットQC,QCと、
    上記量子ビットQA,…,QAn−1,QB,…,QBn−1,QCに対する加算量子操作を行い、上記量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、上記量子ビットQB,…,QBn−1の量子状態をそれぞれ、|s>,…,|sn−1>(a+b=s…s(s∈{0,1},k∈{0,…,n}))とし、上記量子ビットQCの量子状態を|s>とする加算演算部と、
    上記加算演算部で上記加算量子操作された上記量子ビットQA,…,QAn−1,QB,…,QBn−1,QCと、上記量子ビットQCとに対する比較量子操作を行い、上記量子ビットQA,…,QAn−1の量子状態をそれぞれ|a>,…,|an−1>とし、上記量子ビットQB,…,QBn−1の量子状態をそれぞれ|s>,…,|sn−1>とし、上記量子ビットQCの量子状態を|s>とし、上記量子ビットQCの量子状態を|y>(p≦a+bの場合y=1、p>a+bの場合y=0)とする比較演算部と、
    上記第1比較演算部で上記比較量子操作された上記量子ビットQCの量子状態が|1>であった場合にのみ、上記第1比較演算部で上記比較量子操作された上記量子ビットQB,…,QBn−1の量子状態をそれぞれ|t>,…,|tn−1>(a+b−p=tn−1…t(t∈{0,1}))とし、上記量子ビットQCの量子状態を|0>とする制御減算演算部と、
    を有し、
    上記加算演算部で行われる上記加算量子操作は、
    θ=1,…,n−1のそれぞれについて昇順で、上記量子ビットQC を制御ビットとし、上記量子ビットQA θ を目標ビットとしたCNOT演算操作と、上記量子ビットQC を制御ビットとし、上記量子ビットQB θ を目標ビットとしたCNOT演算操作とを行うW1量子操作過程と、
    上記量子ビットQA ,QB を制御ビットとし,上記量子ビットQC を目標ビットとしたトフォリ演算操作を行い、θ=1,…,n−2のそれぞれについて昇順で、上記量子ビットQB θ ,QA θ ,QC に対するMAJ演算操作と、上記量子ビットQB θ ,QA θ を制御ビットとし、上記量子ビットQB を目標ビットとしたトフォリ演算操作とを行い、さらに上記量子ビットQB n−1 ,QA n−1 ,QC に対するMAJ演算操作を行うW2量子操作過程と、
    θ=2,…,n−1のそれぞれについて降順で、上記量子ビットQB を制御ビットとし、上記量子ビットQA θ を目標ビットとしたCNOT演算操作と、上記量子ビットQB θ−1 ,QA θ−1 を制御ビットとし,上記量子ビットQB を目標ビットとしたトフォリ演算操作とを行うW3量子操作過程と、
    上記量子ビットQA に対するNOT演算操作を行い、θ=2,…,n−1のそれぞれについて降順で、上記量子ビットQB ,QA を制御ビットとし,上記量子ビットQA θ を目標ビットとしたトフォリ演算操作を行い、さらに、上記量子ビットQA に対するNOT演算操作を行い、上記量子ビットQB ,QA を制御ビットとし,上記量子ビットQA を目標ビットとしたトフォリ演算操作を行い、さらに、θ=0,…,n−1のそれぞれについて昇順で、上記量子ビットQA θ を制御ビットとし、上記量子ビットQB θ を目標ビットとしたCNOT演算操作を行うW4量子操作過程と、を含む操作であり、
    上記第1比較演算部で行われる上記比較量子操作は、
    上記加算演算部で上記加算量子操作された上記量子ビットQB ,…,QB n−1 ,QC の量子状態をそれぞれ反転させ、各量子状態を|s ’>,…,|s n−1 ’>,|s ’>とする第1NOT演算過程と、
    上記第1NOT演算過程で得られた各量子状態が|s ’>,…,|s n−1 ’>,|s ’>の上記量子ビットQB ,…,QB n−1 ,QC と、上記加算演算部で上記加算量子操作された上記量子ビットQA ,…,QA n−1 ,QC とに対する最上位ビット演算量子操作を行い、当該量子ビットQB ,…,QB n−1 ,QC の量子状態をそれぞれ、|s ’>,…,|s n−1 ’>,|s ’>とし、当該量子ビットQA ,…,QA n−1 の量子状態をそれぞれ|a >,…,|a n−1 >とし、当該量子ビットQC の量子状態を|x>(xはs’+p(s’=s ’s n−1 ’…s ’)を2進n+2桁表記した際の最上位桁の値)とする最上位ビット演算過程と、
    上記最上位ビット演算過程で上記最上位ビット演算量子操作された上記量子ビットQB ,…,QB n−1 ,QC ,QC の量子状態をそれぞれ反転させ、各量子状態を|s >,…,|s n−1 >,|s >,|y>とする第2NOT演算過程と、を含む操作であり、
    上記最上位ビット演算過程で行われる上記最上位ビット演算量子操作は、
    上記量子ビットQA n−1 を制御ビットとし、上記量子ビットQC を目標ビットとした制御NOT演算を行う第1制御NOT演算過程と、
    上記第1制御NOT演算過程による処理の後、上記量子ビットQA n−2 ,QC を制御ビットとし、上記量子ビットQA n−1 を目標ビットとしたトフォリ演算を施す第1トフォリ演算過程と、
    上記第1トフォリ演算過程による処理の後、降順で各j∈{2,…,n−1}に対して、p =1である場合にのみ上記量子ビットQB にNOT演算を施し、p の値に拘らず上記量子ビットQA j−2 ,QB とを制御ビットとして上記量子ビットQA j−1 を目標ビットとしたトフォリ演算を施し、p =1である場合にのみ上記量子ビットQB にNOT演算を施す量子操作を実行する第1量子操作過程と、
    上記第1量子操作過程による処理の後、p =1である場合にのみ、上記量子ビットQB を制御ビットとし、上記量子ビットQA を目標ビットとした制御NOT演算を施し、さらにその後、上記量子ビットQB にNOT演算を施す第2量子操作過程と、
    上記第2量子操作過程による処理の後、p =1である場合にのみ、上記量子ビットQB ,QB を制御ビットとし、上記量子ビットQA を目標ビットとしたトフォリ演算を施す第3量子演算過程と、
    上記第3量子操作過程による処理の後、昇順で各jに対して、p =1である場合にのみ上記量子ビットQB を制御ビットとして上記量子ビットQA j−1 を目標ビットとした制御NOT演算を施し、p =1である場合にのみ上記量子ビットQB にNOT演算を施し、p の値に拘らず上記量子ビットQA j−2 ,QB とを制御ビットとし、上記量子ビットQA j−1 を目標ビットとしたトフォリ演算を施す量子操作を実行する第4量子操作過程と、
    上記第4量子操作過程による処理の後、上記量子ビットQA n−2 ,QC を制御ビットとし、上記量子ビットQA n−1 を目標ビットとしたトフォリ演算を施す第2トフォリ演算過程と、
    上記第2トフォリ演算過程による処理の後、上記量子ビットQA n−1 を制御ビットとし、上記量子ビットQC を目標ビットとした制御NOT演算を行う第2制御NOT演算過程と、
    上記第2制御NOT演算による処理の後、上記量子ビットQA n−2 ,QC を制御ビットとし、上記量子ビットQA n−1 を目標ビットとしたトフォリ演算を施す第3トフォリ演算過程と、
    上記第3トフォリ演算過程による処理の後、降順で各jに対し、上記第4量子操作過程の操作の逆演算操作を、上記量子ビットQA j−2 ,QB ,QA j−1 に対して施す第5量子操作過程と、
    上記第5量子操作過程による処理の後、p =1である場合にのみ、上記量子ビットQB ,QB を制御ビットとし、上記量子ビットQA を目標ビットとしたトフォリ演算を施す第6量子演算過程と、
    上記第6量子操作過程による処理の後、p =1である場合にのみ、上記量子ビットQB にNOT演算を施し、さらにその後、上記量子ビットQB を制御ビットとし、上記量子ビットQA を目標ビットとした制御NOT演算を施す第7量子操作過程と、
    上記第7量子操作過程による処理の後、昇順で各jに対して、上記第1量子操作過程の演算操作を上記量子ビットQA j−2 ,QB ,QA j−1 に対して施す第8量子操作過程と、
    上記第8量子操作過程による処理の後、上記量子ビットQA n−2 ,QC を制御ビットとし、上記量子ビットQA n−1 を目標ビットとしたトフォリ演算を施す第4トフォリ演算過程と、を含む操作であり、
    上記制御減算演算部は、
    量子状態がそれぞれ|s >,…,|s n−1 >,|s >である上記量子ビットQB ,・・・,QB n−1 ,QC に対して量子フーリエ変換を行い、上記量子ビットQB ,・・・,QB n−1 ,QC の量子状態を|Φ (s)>,…,|Φ n−1 (s)>,|Φ (s)>にするQFT演算過程と、
    上記量子ビットQC を制御ビットとし、上記量子ビットQB ,・・・,QB n−1 ,QC ,QC を目標ビットとした制御ΦADD(p) −1 演算操作を行う制御ΦADD(p) −1 演算過程と、
    上記量子ビットQB ,・・・,QB n−1 ,QC に対して上記量子フーリエ変換の逆演算を行うQFT −1 演算過程と、を実行し、
    s=s n−1 …s 、k=0,…,n、eは自然対数であり、
    Figure 0004829623
    であり、
    前記制御ΦADD(p) −1 演算操作は、
    上記量子ビットQC の量子状態が|1>の場合にのみ、上記量子ビットQB ,・・・,QB n−1 ,QC に対するΦADD(p) −1 演算操作を行う操作であり、
    上記ΦADD(p) −1 演算操作は、ΦADD(p)演算の逆演算であり、
    上記ΦADD(p)演算は、
    量子ビットQB の量子状態|g >(k=0,…,n)のそれぞれを
    Figure 0004829623
    にする演算である、
    とを特徴とする量子演算装置。
  5. 請求項4に記載の量子演算装置であって、
    上記pは素数であり、
    上記a,bは上記p未満である、
    ことを特徴とする量子演算装置。
  6. 請求項4に記載の量子演算装置であって、
    上記制御減算演算部による処理の後、上記量子ビットQC と上記量子ビットQC との量子状態を交換する交換演算部と、
    上記交換演算部による処理の後、上記量子ビットQA ,…,QA n−1 ,QB ,…,QB n−1 ,QC に対する第2比較量子操作を行い、上記量子ビットQA ,…,QA n−1 ,QB ,…,QB n−1 の量子状態を当該量子操作前のものとし、上記量子ビットQC の量子状態を|γ(+)δ>(γ(+)δはγとδとの排他的論理和を示し、γは当該量子操作前の上記量子ビットQC の量子状態が示す値であり、上記量子ビットQB の各量子状態が示す値をi+1桁目の値とした2進n桁の数βが、上記量子ビットQA の各量子状態が示す値をi+1桁目の値とした2進n桁の数α以上である場合δ=1であり、βがα未満である場合δ=0である)とする第2比較演算部と、
    上記第2比較演算部による処理の後、上記量子ビットQC にNOT演算を施す第3NOT演算部と、
    を有し、
    上記第2比較演算部で行われる上記第2比較量子操作は、
    上記量子ビットQB ,・・・,QB n−1 に対するNOT演算操作を行い、θ=1,…,n−1のそれぞれについて昇順で、上記量子ビットQC を制御ビットとし、上記量子ビットQA θ を目標ビットとしたCNOT演算操作と、上記量子ビットQC を制御ビットとし、上記量子ビットQB θ を目標ビットとしたCNOT演算操作とを行うT1量子操作過程と、
    上記量子ビットQA ,QB を制御ビットとし,上記量子ビットQC を目標ビットとしたトフォリ演算操作を行い、θ=1,…,n−2のそれぞれについて昇順で、上記量子ビットQB θ ,QA θ ,QC に対するMAJ演算操作と、上記量子ビットQB θ ,QA θ を制御ビットとし、上記量子ビットQB を目標ビットとしたトフォリ演算操作とを行い、さらに上記量子ビットQB n−1 ,QA n−1 ,QC に対するMAJ演算操作を行うT2量子操作過程と、
    θ=2,…,n−1のそれぞれについて降順で、上記量子ビットQB を制御ビットとし、上記量子ビットQA θ を目標ビットとしたCNOT演算操作と、上記量子ビットQB を制御ビットとし、上記量子ビットQB θ を目標ビットとしたCNOT演算操作と、上記量子ビットQA θ−1 ,QB θ−1 を制御ビットとし,上記量子ビットQB を目標ビットとしたトフォリ演算操作とを行うT3量子操作過程と、
    上記量子ビットQA に対するNOT演算操作を行い、θ=2,…,n−1のそれぞれについて降順で、上記量子ビットQB ,QA を制御ビットとし、上記量子ビットQA θ を目標ビットとしたトフォリ演算操作を行い、上記量子ビットQB ,QA を制御ビットとし、上記量子ビットQB θ を目標ビットとしたトフォリ演算操作を行い、さらに、上記量子ビットQA に対するNOT演算操作を行い、上記量子ビットQB ,QA を制御ビットとし、上記量子ビットQA 1 を目標ビットとしたトフォリ演算操作を行い、上記量子ビットQB ,QA を制御ビットとし、上記量子ビットQB 1 を目標ビットとしたトフォリ演算操作を行い、上記量子ビットQB ,…,QB n−1 ,QC に対するNOT演算操作を行うT4量子操作過程と、を含む操作である、
    ことを特徴とする量子演算装置。
JP2006018718A 2006-01-27 2006-01-27 量子演算方法及び量子演算装置 Active JP4829623B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006018718A JP4829623B2 (ja) 2006-01-27 2006-01-27 量子演算方法及び量子演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006018718A JP4829623B2 (ja) 2006-01-27 2006-01-27 量子演算方法及び量子演算装置

Publications (2)

Publication Number Publication Date
JP2007200087A JP2007200087A (ja) 2007-08-09
JP4829623B2 true JP4829623B2 (ja) 2011-12-07

Family

ID=38454636

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006018718A Active JP4829623B2 (ja) 2006-01-27 2006-01-27 量子演算方法及び量子演算装置

Country Status (1)

Country Link
JP (1) JP4829623B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5204698B2 (ja) * 2009-03-19 2013-06-05 日本電信電話株式会社 量子演算方法、量子演算装置、量子回路

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4700413B2 (ja) * 2005-05-31 2011-06-15 日本電信電話株式会社 量子演算装置及び量子回路を用いた量子演算方法

Also Published As

Publication number Publication date
JP2007200087A (ja) 2007-08-09

Similar Documents

Publication Publication Date Title
Bhatia et al. An efficient quantum computing technique for cracking RSA using Shor’s algorithm
Hey Quantum computing: an introduction
JP4847914B2 (ja) 量子加算演算方法及び量子加算演算装置
Khan et al. Quantum ternary parallel adder/subtractor with partially-look-ahead carry
JP4700413B2 (ja) 量子演算装置及び量子回路を用いた量子演算方法
JP5227942B2 (ja) 量子誤り推定装置、量子誤り推定方法、そのプログラム、量子誤り訂正装置、量子誤り訂正方法
JP5204698B2 (ja) 量子演算方法、量子演算装置、量子回路
JP5614658B2 (ja) バタフライネットワーク上でのマルチキャスト量子ネットワーク符号化方法
JP4332167B2 (ja) 近似量子フーリエ変換を行う量子回路、近似量子フーリエ変換演算方法および装置
JP5129646B2 (ja) 量子回路、量子演算装置及び量子演算方法
Hughes Quantum computation
Mondal et al. Synthesis of balanced ternary reversible logic circuit
JP4829623B2 (ja) 量子演算方法及び量子演算装置
Liu Comparisons of Conventional Computing and Quantum Computing Approaches
Jia Comparison of performances for quantum and conventional algorithms: Shor’s algorithm and boson sampling
JP5351862B2 (ja) 量子演算方法、量子演算装置
Kunihiro Quantum factoring algorithm: Resource estimation and survey of experiments
JP4366348B2 (ja) 量子計算方法及び量子計算装置
Galadima et al. QCA Based Design of Reversible Parity Generator and Parity Checker Circuits for Telecommunication
Bhoi et al. A novel vedic divider based crypto-hardware for nanocomputing paradigm: An extended perspective
Kunihiro Exact analyses of computational time for factoring in quantum computers
Tutul et al. Shallow Depth Factoring Based on Quantum Feasibility Labeling and Variational Quantum Search
Dejen et al. A Review of Quantum Computing
JP5496921B2 (ja) 量子演算方法、量子演算装置
Biswas et al. Some basic ternary operations using toffoli gates along with the cost of implementation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110801

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110818

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: 20110906

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: 20110916

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

Free format text: PAYMENT UNTIL: 20140922

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4829623

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