量子コンピューターを使用して1 + 1を追加するにはどうすればよいですか?


29

これは、量子コンピューターがハードウェアレベルで基本的な計算を行う方法を補完するソフトウェアと見なすことができますか?

この質問は、量子情報と量子技術に関するスペイン語ネットワークの第4ネットワークの聴衆のメンバーによって尋ねられました。その人が与えたコンテキストは、「私は材料科学者です。高度な高度な理論的概念を紹介していますが、簡単なタスクのために量子コンピューターの実際の動作を描くのに苦労しています。 1 + 1を追加するために実行する必要がある古典的な操作を自分で簡単に把握できます。量子コンピューターでどのように詳細に実行しますか?

回答:


21

リンクされた質問によると、最も単純な解決策は、可能であれば、古典的なプロセッサにそのような操作を実行させることです。もちろん、それは不可能な場合があるため、adderを作成します。

シングルビット加算器には、半加算器全加算器の 2種類があります。半加算器は、入力かかりA及びBし、 '和'(XOR演算)を出力するS=ABと'キャリー'(AND演算)C=AB。全加算器には、「キャリーイン」Cn入力と「キャリーアウト」出力Coあなたはt置き換えCます。これは、および返します。 C O U T = C I NA + B + A BS=ABCnCoあなたはt=CnA+B+AB


半加算器の量子バージョン

レジスタ制御するキュービットレジスタ CNOTゲートを見る:これは、レジスタの出力をすぐにとして出力します。ただし、キャリーと状態をまだ計算していないB CNOT A B | 0 A | 0 BAB BAB=SBABC| 0AB=CABCABBC

CNOTAB|0A|0B=|0A|0BCNOTAB|0A|1B=|0A|1BCNOTAB|1A|0B=|1A|1BCNOTAB|1A|1B=|1A|0B
BAB=SBレジスタが変更されたため、AND演算も実行する必要があります。これは、3キュービットToffoli(制御CNOT / CCNOT)ゲートを使用して実行できます。これは、レジスタおよびを制御レジスタとして使用し、状態の3番目のレジスタを初期化して、3番目のレジスタの出力をます。レジスタの実装トホリ及びレジスタ制御用いてCNOT続い制御レジスタの出力が得られる加算し、レジスタの出力としてABC|0AB=CABCABBCキャリーとして。半加算器の量子回路図を図1に示します。

半加算器の回路図

図1:CNOTが後に続くToffoliで構成される半加算器の回路図。入力ビットはと、キャリーとの合計を提供します。B S CABSC


全加算器の量子バージョン

図2に示され、単一ビットについてこれを行う簡単な方法を使用することであるここで標識された、量子ビットレジスタを、、と、状態で開始、初期ので状態はです。A B C i n 1 1 | 0 | A | B | C I N | 0 4ABCn11|0|A|B|Cn|0

  1. およびを使用してToffoliをコントロール適用します:B 1 | A | B | C I N | A B AB1|A|B|Cn|AB
  2. 制御すると CNOT :B | A | A B | C I N | A B AB|A|AB|Cn|AB
  3. とが制御するToffoli :C i n 1 | A | A B | C I N| A B A B C I N = C O U TBCn1|A|AB|Cn|ABABCn=Coあなたはt
  4. 制御する CNOT :C i n | A | A B | A B C I N = S | C O U TBCn|A|AB|ABCin=S|Cout

入力とを取得する最後の手順は、レジスタ制御するレジスタ CNOTを適用し、最終的な出力状態をABAB

|ψout=|A|B|S|Cout

これにより、レジスタの出力が合計として、レジスタの出力がキャリーアウトとして提供されます。Cin2

全加算器の量子バージョン

図2:全加算器の回路図。入力ビットは、キャリーイン伴うとで、キャリーアウトとの合計を提供。ABCinSCout


リップルキャリー加算器の量子バージョン

フル加算器の単純な拡張は、リップルキャリー加算器です。これは、キャリーアウトを「リップル」して一連の加算器の次の加算器のキャリーインになるため、任意のサイズの(遅い場合)合計を可能にします。このような加算器の量子バージョンは、たとえばここにあります


半加算器の実際の実装

多くのシステムでは、Toffoliゲートの実装は、単一キュービット(または2キュービット)ゲートの実装ほど単純ではありません。この答えは、トフォリを複数の小さなゲートに分解する方法を提供します。ただし、IBMQXなどの実際のシステムでは、キュービットをターゲットとして使用できる問題もあります。そのため、IBMQX2での実際の実装は次のようになります。 IBMQX2上の単一キュービット半加算器

図3:IBMQX2での半加算器の実装。Toffoliゲートを複数の小さなゲートに分解することに加えて、すべてのキュービットレジスタをターゲットとして使用できるわけではないため、追加のゲートが必要です。レジスタq [0]およびq [1]を追加して、q [1]の合計とq [2]のキャリーを取得します。この場合、結果q [2] q [1]は10である必要があります。これをプロセッサで実行すると、42.8%の確率で正しい結果が得られました(ただし、最も可能性の高い結果でした)。


量子コンピューター加算器はありますか?
ジョンダフィールド

@JohnDuffield おおよその量子(状態)加算器(厳密には状態加算器は明らかに禁止されている)なのか、量子コンピューターでの「古典的な」加算器の実装なのかわからない-この特定のコードは試していない?
Mithrandir24601

数字はどのように表されますか?バイナリーですか?
user3483902

@ user3483902この場合、状態を使用する単一ビットおよび1 | 0 | 1 -であり、「番号」Aがいずれであってもよい0または1缶「数」として、B01|0|1A01B
Mithrandir24601

@ Mithrandir24601:それは重要ですか?どちらの場合も答えはノーではありませんか?実際に自分で並列加算器を作成しました。私はコンピューター科学の学位を取得しています。
ジョンダフィールド

6

`` ダイオードやトランジスタなどを使用していた場合、1 + 1を追加するために実行する必要がある古典的な操作を簡単に把握できました。量子コンピューターでどのように詳細に説明しますか?''

印象的!ほとんどの人は、ダイオードとトランジスタを組み合わせて古典的な2ビット加算を実装する方法を自分で簡単に理解できないと思います(この物質科学者がおそらくできるとは思いませんが)。;)

理論的には、古典的な加算器を実装する方法は、古典的なコンピューターと量子コンピューターでかなり似ています:どちらの場合でも、Toffoliゲートを実装することでそれを行うことができます!(@ Mithrandir24601の回答を参照してください。)

しかし、物質科学者はおそらく、物理デバイス上にそのようなゲート(または他の量子ゲートの等価シーケンス)を実装する方法を理解したいと考えています。異なる量子技術を使用してそれを行うための無限の方法はおそらくありますが、トラップされたイオンと超伝導キュービットを使用したこのゲートの2つの直接的な実現があります。

  1. トラップされたイオンによる量子トフォリゲートの実現、T。モンツ、K。キム、W。ヘンセル、M。リーベ、ASヴィラー、P。シンドラー、M。チュワラ、M。ヘンリッヒ、R。ブラット、Phys。牧師レッツ。102、040501、arXivの:0804.0082
  2. 超伝導回路A.フェドロフ、L.ステファン、M.バウアー、MP・ダ・シルバ&A. Wallraffとトフォリゲートの実装 ネイチャー481、170-172、1108.3966:arXivの

Toffoliゲートを一連の単一キュービットおよびCNOTゲートとして分解することもできます。 https://media.nature.com/lw926/nature-assets/srep/2016/160802/srep30600/images/srep30600-f5.jpgここに画像の説明を入力してください これらをフォトニクス、キャビティQED、およびNielsenのトラップイオンで実装する方法について読むことができます。とチュアン


開示については、私は材料科学者ではなく、終わりのない議論がまだ不十分で抽象的な言葉だったので、私は彼が求めていることを理解し、グーグルで検索し、最小限で満足のいく答えを示した人でした(a量子ゲートの用語の半加算器)。
-agaitaarino

5

量子コンピューターで合計を計算する新しい方法が導入されました。この手法は、量子フーリエ変換を使用し、一時キャリービットの必要性をなくすことにより、加算に必要なキュービットの数を減らします。

Thomas G. Draperによって書かれた「量子コンピューターでの追加」のPDFリンク、1998年9月1日書面、2000年6月15日改訂。

上記のリンクを要約すると、次の回路図に従って追加が実行されます(6ページから取得)。

ここに画像の説明を入力してください

論文を引用するには(6ページ):

n


1

2つのキュービットの合計の並列計算

私は2つのキュービットの合計の並列計算を体験したかったのです。0の重ね合わせと1に1 加えた「位相-1重ね合わせました。Mithrandir24601の答えに触発されました。結果は以下のとおりです。私の答えが、尋ねられたものの文脈内にあることを願っています。1が1に加算され、同時に0に加算される方法を示していますが、両方の答えが計算されている間、計算が実行されるたびに1つの計算に対する答えのみを読み取ることができます。1000回の実行のうち、417回は "1"(1 = 0 + 1)の回答を読み取り、380回は "2"(2 = 1 + 1)の回答を読み取ります。

(1ビットを無効にしたときに34回無効になり、0 = 0 + 1を取得した54回、1 = 1 + 1を取得した29回、2 = 0 + 1を取得した28回、3回取得した42回= 0 + 1、および16回3 = 1 + 1を取得しました;これらのエラーのそれぞれは、ビットフリップ、位相フリップ、またはその両方に疑いの余地はありません。 ここに画像の説明を入力してください

π

1キュービットレジスタの0と「1の位相-1」の重ね合わせは、2キュービットレジスタの1に追加されます。3つのキュービットの場合、左から右への最初の2つのキュービットは合計(または5の3番目と4番目)であり、右端のキュービットは基底状態(0として処理)が追加されたか励起状態(最初の1 -1)のフェーズが追加されました。

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