![見出し画像](https://assets.st-note.com/production/uploads/images/70076786/rectangle_large_type_2_dc2aabaaeca03b366b98d86e10490a11.png?width=1200)
量子コンピュータを作るには?【量子ハードウェアに必要な条件: DiVincenzo Criteria】
本記事では、量子コンピュータを作るにはどうすればいいのかについて解説します。実際にどうすれば量子コンピュータを物理的に作ることができるのか、つまりハードウェアの部分に焦点を当ててみたいと思います。
DiVincenzo Criteria
今日、様々な研究機関や企業が量子コンピュータの開発に取り組んでいます。例えば、GoogleやIBMは超伝導をベースにした量子コンピュータ、IonQやQuantinuumは原子イオンをベースにした量子コンピュータを開発しています。ほかにも、中性原子やリュドベルグ原子を用いた量子コンピュータや光(フォトン)、半導体をベースにした量子コンピュータ等が開発されています。
さて、量子コンピュータを実現するためには、当然「量子」物理系が必要なわけです。しかし、量子系であればなんでもいいわけではありません。実は、量子ハードウェアとして活用されるためには、いくつかの条件が存在しています。それらの条件をDiVincenzo Criteriaと呼びます[1]。
先ほど例に挙げた量子物理系は、このDiVincenzo Criteriaを満たしているものがほとんどです。さて、DiVincenzo Criteriaには5つの条件があります。これらを一つずつ解説したいと思います。
条件1: 良く特性が理解された量子ビット系で構成される拡張可能な物理系
A scalable physical system with well characterized qubits
大前提として、量子ビットが定義できるような量子物理系が必要です。量子ビットに関しては、こちらの記事をご覧ください。
二準位系
量子ビットを実現するためには、少し専門的な用語になりますが、「二準位系」と呼ばれるシステムが必要になります。
![二準位系 - コピー](https://assets.st-note.com/production/uploads/images/57580360/picture_pc_fa2014b032a0d118cbeafd3b714e84ae.png?width=1200)
二準位系とは、二つの準位からなる量子的なシステムのことです。量子”ビット”なので、例えば$${\ket{0}}$$と$${\ket{1}}$$のような2つの値が必要になります。それを物理的に表現するためには、量子的な二準位系が必要になるわけです。
さらに、一つだけの量子ビットを表現するだけでなく、その量子ビットを沢山用意することができるシステムが必要になります。量子計算を行うためには、量子ビットが一つだけではまったく意味がなく、沢山の量子ビットが必要になります。大きな問題を量子コンピュータで処理するには、たくさんの量子ビットが必要になるため、拡張可能な量子ビット系が必要になるわけですね。
![スケーラブルな量子ビット - コピー](https://assets.st-note.com/production/uploads/images/57580864/picture_pc_c0b28e6773bde142fddb75b8d781d481.png?width=1200)
条件2: 量子ビットの初期化が可能
The ability to initialize the state of the qubits to a simple fiducial state
何らかの量子計算を行う際には、初めに量子ビットを綺麗な状態に用意します。これを量子ビットの初期化といいます。
![初期化 - コピー](https://assets.st-note.com/production/uploads/images/57731235/picture_pc_31cfda620e163a787e05da775a382089.png?width=1200)
綺麗な状態とは、例えば全ての量子ビットが$${\ket{0}}$$の状態のようなものです。何か計算を開始するときに、使いたい量子ビットが良くわからない量子状態だと使い物になりません。初期化が可能なことは、量子コンピュータを実現するための量子ハードウェアには必須の能力なのです。
条件3: 量子ゲート操作にかかる時間よりも、量子ビットのコヒーレンス時間が長い
Long relevant decoherence times, much longer than the gate operation time
コヒーレンス時間とは、量子ビットが量子的な性質(波として扱うことができる性質)をどれくらい保ことができるかという時間の長さです。
![コヒーレンス時間 - コピー](https://assets.st-note.com/production/uploads/images/57792704/picture_pc_ba04cafd509965191efad8063298f996.png?width=1200)
量子コンピュータは、量子ビットの量子的な性質を使って計算を行っています。つまり、量子ビットが量子的な性質を失う前に計算を行うことが必要となります。そのため、長いコヒーレンス時間というのは大事な要件になります。
条件4: ユニバーサル量子ゲートセットが実現可能
A “universal” set of quantum gates
ユニバーサル量子ゲートセットというのは、特定の量子ゲートの組み合わせがあれば、任意の量子計算が実行できるというものです。そしてこのような量子コンピュータを万能(ユニバーサル)量子コンピュータと呼びます。
万能量子コンピュータ
さてここで、万能量子コンピュータについて解説したいと思います。万能量子コンピュータとは、どのような演算でも実行可能な量子コンピュータという意味になります。先ほど少し述べたように、特定の量子ゲートが使用可能であれば、任意の演算を量子コンピュータ上で実行できることが分かっています。
古典コンピュータの場合
万能量子コンピュータの中身に入る前に、古典コンピュータの場合について考えてみましょう。結論から答えると、NANDゲートが実現できれば、古典論理回路のどのような演算も実行可能になります。
![](https://assets.st-note.com/img/1641710104758-aggGF0wFHX.png?width=1200)
![](https://assets.st-note.com/img/1641710119784-bTOoZNby4w.png?width=1200)
このような、任意の演算を実行できることを万能性と呼びます。(正確には、NANDゲートだけではなく、他のゲートの組み合わせでも、この万能性を示すことができますが、ここではNANDゲートを例にします。)
脱線: 量子コンピュータで古典計算?
少し話がそれますが、量子コンピュータで古典計算が実行できるのかを考えてみましょう。結論から申し上げると、量子コンピュータで古典計算を行うことは可能です。
そもそも古典コンピュータの場合、NANDゲートが実行できれば、どのような古典論理回路の演算も実行可能なのでした。つまり、量子コンピュータで任意の古典計算を行うためには、量子コンピュータ上で古典回路のNANDゲートと同じ働きをする量子ゲートを実現できればいいことがわかります。実はそのような量子ゲートが存在するのです。
それが、3量子ビットゲートのToffoliゲートです。このToffoliゲートを用いることで、古典コンピュータのNANDゲートを再現することができます。
Toffoliゲート: 量子版NANDゲート
量子版のNANDゲートである、Toffoliゲートについて解説します。Toffoliゲートは、入力が3つ存在する3量子ビットゲートです。Toffoliゲートは、3入力3出力の3量子ビットゲートです。入力される量子ビットをそれぞれ$${\ket{\psi_1}}$$, $${\ket{\psi_2}}$$, $${\ket{\psi_3}}$$とすると、Toffoliゲートは、以下のような回路記号で表現されます。
![](https://assets.st-note.com/img/1641710483290-zQbNLkECdX.png?width=1200)
Toffoliゲートの作用を以下の真理値表にまとめています。
![](https://assets.st-note.com/img/1641710501428-EP17jBicu4.png?width=1200)
これを数学的に記述すると、
$${(\ket{0}_1\ket{0}_2\bra{0}_1\bra{0}_2+\ket{0}_1\ket{1}_2\bra{0}_1\bra{1}_2+\ket{1}_1\ket{0}_2\bra{1}_1\bra{0}_2)I+(\ket{1}_1\ket{1}_2\bra{1}_1\bra{1}_2)X}$$
となります。つまり、入力の量子ビット1と量子ビット2がともに、$${\ket{1}}$$の場合のみ、量子ビット3に対してXゲートを作用させるゲート操作になります。
ここで、3番目の量子ビット3が$${\ket{1}}$$の場合を考えます。この時、真理値表を書きだすと以下のようになります。
![](https://assets.st-note.com/img/1641710531797-myq9llhk0B.png?width=1200)
この時、このToffoliゲートの作用はNANDゲートとまったく同じものになります。つまり、量子計算という概念は、古典計算も内包しているということなのです。(ただし、量子コンピュータ上で古典計算を実行することで、量子計算の恩恵を得ることができるかは、まったくの別問題です。)
ユニバーサル量子ゲートセット
さて話を戻しましょう。量子計算における万能性とは、つまり量子コンピュータで、任意のユニタリ演算$${U}$$を実現するということになります。そして、古典コンピュータの場合と同じように、量子コンピュータでも、とある量子ゲートの組み合わせを実現することができれば、このような任意のユニタリ演算が実装できることがわかっています。
結論から答えると、
アダマールゲート: $${H}$$
Tゲート: $${T}$$ ($${z}$$軸周りでの$${\pi/4}$$回転)
CNOTゲート
![](https://assets.st-note.com/img/1641711016432-kFseXie3hL.png?width=1200)
この三種類の量子ゲートを組み合わせることで、任意のユニタリ演算を再現することができます。そして、このような量子ゲートの組み合わせのことを、ユニバーサル量子ゲートセットと呼ぶのです。(ちなみに、このユニバーサル量子ゲートセットは、他の量子ゲートの組み合わせも存在します。)
つまり、これらの量子ゲートセットを実現できることが、量子コンピュータのハードウェアとしては必須の条件となっているのです。
条件5: 量子ビットの観測が可能
A qubit-specific measurement capability
最後に、量子ビットがどんな量子状態なのかを判別する能力がハードウェアには求められます。量子ビットの量子状態を読み出すということは、量子コンピュータが出力する結果を読み出すことであり、必須の能力になります。
参考文献
[1]: D. P. DiVincenzo, Fortschr. Phys. 48, 771 (2000).