量子コンピューターは、ハードウェアレベルで基本的な計算をどのように行いますか?


27

このRedditスレッドを読んで私は、量子コンピューティングについて数か月学習した後でも、量子コンピューターが実際にどのように機能するかについてまったく手がかりがないことに気付きました。

質問をより正確にするために、超伝導量子ビットベースの5量子ビット量子コンピューター(5量子ビットIBM量子コンピューターのような)があるとしましょう。キーボードを使用してモニターにと入力します(たとえば、量子コンピューターに搭載されている可能性のある基本的な電卓アプリ)。その後、が返されます。しかし、ハードウェアレベルで行われていますか?入力に対応する電気信号のいくつかの並べ替えている、及びコンピュータの処理ユニットに行くの?それはどういうわけかクーパー対の電子を「初期化」しますか?何がその後クーパーペアの電子の量子ビットに何が起こる(彼らはいくつかによってで働いたことだろうと思い量子ゲートを再び順番にある、ブラックボックス2+32 3 +523+)?最終的にどのようにして出力返されますか?5

ネット上で検索しても、量子コンピューターの基本的な動作について思い付くことができなかったことに驚いています。

回答:


26

まず、古典的なコンピューターは、算術論理演算装置(ALU)のハードウェアレベルで基本的計算を行います。論理ゲートは、低および高入力電圧を受け取り、CMOSを使用して論理ゲートを実装し、個々のゲートを実行および構築して、より大規模で複雑な操作を実行できるようにします。この意味で、キーボードで入力すると電気信号が送信され、最終的にコマンド(より多くの電気信号の形式)がALUに送信され、正しい操作が実行され、より多くの信号が返されます。画面に数字の形でピクセルを表示します。

量子コンピューターはどうですか?

量子プロセッサを使用するには、2つの方法があります。それ自体、または従来のプロセッサと組み合わせて使用​​します。ただし、ほとんどの(超伝導の例を含む)量子プロセッサは実際には電気信号を使用しませんが、これはマウス、キーボード、モニターなどが情報を送受信する方法です。そのため、電気信号を量子プロセッサが使用する信号に変換する方法(後で説明します)と、プロセッサに何をしたいかを伝える方法が必要です。これらの問題は両方とも、IBMのQISKitなどの従来の前処理および後処理によって一度に解決できます。MicrosoftはQ#でトップダウンアプローチをもう少し取っています。、量子プロセッサ用のプログラムは、スクリプトではなく「古典的な」プログラムのように記述れ、ハードウェア用にコンパイルされ、潜在的に最適化されます。つまり、関数を持っている場合、古典的な操作を実行できるだけでなく、量子プロセッサを呼び出して必要な量子操作を実行できます。これは最初のポイントに私を導きます:

量子プロセッサーにアクセスできるコンピューターになどの計算を依頼する場合、非常に有効な解決策の1つは、通常どおり従来のプロセッサーで計算することです。2+3

OK、あなたがこのような場合には使用して、IBMの超伝導チップの1つである量子プロセッサ、使用する古典プロセッサを強制しているとしましょうtransmonの、のは言わせて量子ビットをIBM QX4を。これは小さすぎてエラーを修正できないため、無視してみましょう。回路モデルプロセッサの使用には、初期化、単一進化、測定の3つの部分があります。これらについては、以下で詳細に説明します。それ以前は、

トランスモンとは何ですか?

可能にするために超伝導ループを取るクーパー対 1つのまたは2つの追加のジョセフソン接合のジョセフソン結合エネルギーを有する2つのジョセフソン接合との間の領域にクーパー対ボックス島を与える、磁束量子およびは接合の臨界電流です。このボックスに電圧を印加すると、「ゲート容量」が得られ、これが電荷キュービットになります。単一のクーパーペアのクーロンエネルギー、ここでΦ 0 = H / 2 E I C V G C G E C = 2 E 2 / 2 C C H = E C N - N G 2 - E J COS ϕ n ϕ n g = C g V gEJ=IcΦ0/2π Φ0=h/2eIcVgCgEC=(2e)2/2CC島の総静電容量の合計です。このようなシステムのハミルトニアンは、与えられますここで、はクーパーペアの数、はジャンクションおよび位相変化。ユニタリ操作を実行する場合、システムの2つの最低状態、およびのみが考慮されます。各エネルギーのととキュビット周波数

H=EC(nng)2EJcosϕ,
nϕng=CgVg/2e|n=|0|n=|1E0=ω0E1=ω1ω=ω1ω0、キュービットの計算基盤を記述する。典型的な電荷キュービットはます。とtransmonがあるように、大きなシャント容量を追加し、ゲート容量を増やすとこの比率が切り替わります。これには、コヒーレンス時間が長くなるという利点がありますが、非調和性が低下します(最初の2つを超えるエネルギーレベルが互いに近くなり、漏れが発生する可能性があります)。EC=5EJEJEC

最後に、メインの質問に行きます:

トランスモンをどのように初期化し、進化させ、測定するのですか?

  • シングルキュービットユニタリ進化:マイクロ波パルスの適用のために周波数のとなって回転波近似する理想的なケースにおけるキュービット状態のハミルトニアン()を与えるとしてただし、非調和性が低いため、マイクロ波パルスは、E(t)=Ex(t)cos(ωdt)+Ey(t)sin(ωdt)0<t<tgωd
    H=(ω1ωd12Ex(t)i2Ey(t)12Ex(t)+i2Ey(t)ω22ωd)
    断熱ゲート(DRAG)によるデリバティブ除去。パルスを変化させることで、異なるハミルトニアンを実現できます。これは、パルスの時間に応じて、単一のキュービットで異なるユニタリ演算を実装するために使用できます。
  • 測定/読み出し:共振周波数マイクロ波共振器は、コンデンサを使用してに結合できます。この相互作用により、トランスモン共振システムでラビ振動が発生(減衰)します。キャビティとキュービットの結合強度場合、これは分散レジームとして知られています。このレジームでは、キャビティの透過率スペクトルはキュービットの状態に応じてだけシフトされるため、マイクロ波パルスを適用して透過率と反射率を分析します(その後、コンピューターで)を使用してキュービットを測定できます。 G « ω - ω R ± G 2 / ω - ω R ωrgωωr±g2/(ωωr)
  • 複数キュービットのユニタリー進化:キュービットをマイクロ波共振器に結合するというこの考え方は、共振器を別のキュービットに結合することで拡張できます。シングルキュービットゲートの場合のように、結合のタイミングとマイクロ波パルスを使用して、最初のキュービットをキャビティに結合し、次にキャビティを2番目のキュービットに結合して特定の2キュービットゲートを実行できます。また、より高いエネルギーレベルを使用して、キャビティによって引き起こされるより高いレベル間の相互作用により、特定のゲートを実装しやすくすることができます。そのような例の1つを次に示します。ここで、空洞はとの状態間の相互作用を引き起こし| 1 | 1 |2|0|1|1。これらの状態間の交差を回避するということは、2量子ビットフェーズゲートを実装できることを意味しますが、一般に2量子ビットゲートは単一量子ビットゲートよりも実装が劣ります(忠実度が低くなります)。
  • 初期化:すべてのキュービットが状態開始することを保証するために、潜在的に単一のキュービットPauliゲートが続く(状態にあると測定された各キュービット)。| 1 | 0 X|1|0

2と3を追加することは、キュービットを初期化し、古典的な可逆加算器と同等のゲートを実行し、結果を測定する「簡単な」問題であり、すべて自動的に実装されます。その後、通常どおり、測定結果が古典的なコンピューターによって返されます。

ボーナスとして、とにかく古典的なコンピューターで行うことができるゲートを実装するためにすべてを通過することは少し無意味であるように見えるので、2つの量子を追加する量子加算器をほぼ実装することが可能であることがわかりますIBMのプロセッサーの1つで、いくつかのエラーを含む)状態になります。


15

これが、量子コンピューターで算術を行うための私のプロセスです。

ステップ1:興味のあることを行う古典的な回路を見つけます。

この例では、全加算器。

古典的な全加算器

ステップ2:各古典的なゲートを可逆ゲートに変換します。

最初から出力ビットを用意し、CNOT、CCNOTなどで初期化します。

半可逆全加算器

ステップ3:一時的な出力を使用します。

たとえば、グローバーオラクルが-1でフェーズするかどうかを制御するためにこの追加を行っていた場合は、出力キュービットにZゲートを適用するときです。

ステップ4:中間値を計算するために行ったのとまったく逆の操作を行って、中間値を取り除きます。

これには、回路がアルゴリズム全体にどのように適合するかに応じて、出力ビットを取り除くことが含まれる場合と含まれない場合があります。

半可逆全加算器2

ステップ5:(時々)保持する出力ビットごとに、入力ビットを取り除きます。

「床に落とす」という意味ではなく、確実に0になるような操作を適用するということです。

を計算するc+=aと、の元の値のコピーを残すのはc悪い傾向があります。それは一貫性を破壊します。したがって、加算回路(または何でも)を見て、出力ビットを使用して入力ビットを削除する方法があるかどうかをよく考える必要があります。たとえば、計算後c+a、一時的なアウトオブプレース減算をレジスタrに、xまたはrをの不要なコピーを格納するレジスタに実行してからc、一時的な減算を元に戻すことができます。

(「出力を保持する場合、入力をあまり保持しない」ことの注目すべき例外は、Shorのアルゴリズムです。Shorのアルゴリズムは、意図的に入力デコヒーリングしますが、期間検出に役立つ非常に特殊な方法です。)

ステップ6:効率的にする

ステップ5で、アウトオブプレース加算とそれに続く一時的なアウトオブプレース減算を行うことにより、インプレース加算の入力の計算を解除できると述べました。これは少しばかげています。全体的な追加プロセスは4nキュービット(nはホールドa、nはホールドc、nはホールドc+a、nはホールド(c+a)-a)にまたがっています。あなたがより巧妙であれば、あなたはにすべてを収めることができる2n量子ビット(多少簡単に)か2n+1キュービット

クッカロ加算器

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.