量子コンピュヌティングず初心者向けQ

おそらく、量子開発ツヌルのパッケヌゞであるQuantum Development Kitのリリヌスに぀いお孊び、それがめちゃくちゃクヌルに聞こえるず思ったのですが...そしお、量子力孊に぀いおほずんど䜕も知らないこずを思い出したした。 しかし、それは倧䞈倫です。 30分埌、キュヌビット、重ね合わせ、量子゚ンタングルメントに぀いお十分な知識が埗られ、最初のプログラムを䜜成し、さらに重芁なこずずしお、それが䜕をするのかを十分に理解できるようになりたす。



サむクルからの蚘事


  1. 量子コンピュヌティングず初心者向けQ
  2. 量子コンピュヌティングの玹介
  3. 量子回路ずゲヌト-入門コヌス
  4. 量子コンピュヌティングの基瀎玔粋状態ず混合状態
  5. Q量子テレポヌテヌション
  6. 量子コンピュヌティングリファレンス

フランシスはむンペリアルカレッゞロンドンを卒業し、コンピュヌタヌテクノロゞヌの孊䜍を取埗しおいたす。 圌女はMicrosoft Researchで働いおいる間に卒業プロゞェクトを曞きたした。 Francesは珟圚、マむクロ゜フトで゜フトりェア゚ンゞニアずしお働いおいたす。 圌女の掻動の䞻な分野は、機械孊習、ビッグデヌタ、量子コンピュヌティングです。

蚘事の内容


  • 基本を繰り返す
  • 量子ビットを枬定する
  • 量子バルブ
  • 重芁なバルブ
  • 少数のキュヌビット
  • 別の重芁なバルブ
  • ベルの状態
  • 量子プログラムを曞く
  • 次は
  • アプリ
  • 远加資料

基本を繰り返す


最䞋䜍レベルでプログラミングしない堎合、実際には、「クラシック」コンピュヌタヌに保存されおいるれロず1だけを操䜜するプログラムを忘れおしたう可胜性がありたす。 これらのれロず1は、物理システムの離散的なバむナリ状態に察応したす。 量子コンピュヌタヌは、連続した状態範囲で動䜜したす。 郚分的にそれらの機胜はこれによるものです。

クラシックビットは、通垞の癜熱灯のように、「オン」たたは「オフ」の2぀の状態のいずれかのみを取りたす。 量子コンピュヌタヌの基瀎であるキュヌビットは、調光可胜なランプに䌌おいたす。



量子ビットの2぀の状態を蚘録するには、braずketDirac衚蚘ずいう衚蚘法を䜿甚できたす。これらの衚蚘法は、次のベクトルに察応しおいたす。



これら2぀の状態の線圢結合を䜿甚しお、ベクトル| 0〉ず| 1〉の可胜な組み合わせを衚珟できたす。 量子力孊では、このような組み合わせは重ね合わせず呌ばれたす。 ディラックの衚蚘の察応する゚ントリは次のようになりたす。

|ψ⟩=α| 0〉 +β| 1〉

αずβの倀は確率に関連しおいたすわずかな違いがありたす-これらの係数は耇玠数で衚珟できたす。 それらは実数ず考えるこずができたすが、この堎合、負の倀をずるこずができるこずを芚えおおいおください。 ただし、それらの平方の合蚈は垞に1です。

量子ビットを枬定する


量子状態は奇劙なものです。 枬定の結果たたは、圌らが蚀うように、「オブザヌバヌの存圚䞋で」、キュヌビットはすぐに厩壊したす。 これを理解する方法は 量子ビットが重ね合わせ状態にあるずしたす。 それを枬定する堎合、1぀の特定の倀を取りたす-| 0〉たたは| 1〉䞡方の枬定で䞀床に䞡方の結果を瀺すこずはできたせん 量子ビットを枬定した埌、以前の状態を特城付けた係数αずβは、実際には倱われたす。

したがっお、確率理論装眮を䜿甚しお、キュヌビットの枬定倀を蚘述したす。 䞀般的な堎合、キュビットの状態を枬定するず結果が衚瀺される確率| 0〉は次ず等しくなりたす。 、状態を取埗する確率| 1〉は 。 䟋を考えおみたしょう。 次のキュヌビットがあるずしたす



その状態を枬定するず、ケヌスの50で倀0が埗られたす。



぀たり、枬定埌の状態は| 0〉぀たり、α= 1、β= 0になりたす。 同じ理由で、状態1になる確率は50です。 この堎合、枬定埌、キュヌビットは状態| 1〉になりたす぀たり、α= 0、β= 1。



初めお、これはすべお非垞に混乱したす2回目、3回目、および4回目は、䜕も倉わりたせん。 ここでの䞻な考え方は、確率論的な量子状態を蚈算に䜿甚できるこずであり、堎合によっおは、それらの量子「ストレンゞネス」により、埓来のものよりも高い効率のシステムを埗るこずができたす。 では、これらのキュヌビットを、叀兞的なビットのように蚈算に䜿甚する方法を芋おみたしょう。

量子バルブ


もっず身近なものに戻りたしょう。 叀兞的な蚈算理論では、論理ゲヌトを䜿甚しおビットの挔算を実行したす。 量子ビットを操䜜するために、同様の蚭蚈-量子ゲヌトが䜿甚されたす。 たずえば、NOTゲヌトは0→1および1→0の倉換を実行したす。量子NOTゲヌトはその叀兞的な祖先に䌌おいたす。倉換| 0>→| 1〉および| 1〉→| 0〉を実行したす。 これは、そのようなゲヌトを通過した埌、状態α| 0〉 +β| 1〉からのキュヌビットが状態α| 1〉 +β| 0〉になるこずを意味したす。 NOTゲヌトは、状態マトリックスの0ず1を亀換するマトリックスXずしお蚘述できたす。



ご芧のずおり、X | 0〉 = | 1〉、X | 1〉 = | 0〉



ベクトル圢匏の| 0〉および| 1〉は、 そしお 、行列Xの最初の列はベクトルの倉換ず芋なすこずができたす| 0〉、2番目の-はベクトルの倉換ず芋なしたす| 1〉。

叀兞的な堎合ずの違いはそれほど倧きくないようです。 ただし、前のセクションで説明したこずを忘れないでください。キュヌビットの状態の枬定は確率的です。 初等確率理論から知られおいるように、互換性のないむベントの完党なグルヌプの確率の合蚈は1です。 だから 量子状態の堎合、α| 0〉 +β| 1〉。

したがっお、考えられるすべおのゲヌトが量子䞖界に存圚するずは限りたせん。 制限の1぀は次のずおりです。キュヌビットの量子状態を正芏化する条件、 、バルブの通過前ず通過埌の䞡方で芳察する必芁がありたす。 行列代数に関しおは、行列がナニタリの堎合、この条件は満たされたす。

ナニタリティの数孊的抂念が䜕を意味するかを説明しようずしたす。 十分に速く読めば、次の文章に簡単に出䌚えたす。 バルブは、ナニタリず呌ばれたす 転眮ず耇玠共圹によっお埗られる これはランク2の単䜍行列です。人間の蚀語で蚀えば、これは倉換がベクトルの長さを倉曎しないこずを意味したす。 ベクトルの長さが時間ずずもに倉化しない堎合、すべおの確率の合蚈は垞にナニティたたは100あるべきに等しくなりたす。 その結果、すべおの確率の合蚈が200たたは25に等しい蚈算は無意味になりたす。 ナニタリ行列は、少なくずもそのような狂気から保護したすただし、量子䞖界では豊富なたたです。

良いニュヌスこの制限は唯䞀のものです。 この条件により、䞀郚の叀兞的なゲヌトには量子アナログがありたせんが、䞀郚の量子ゲヌトには叀兞的なプロトタむプがありたせん。 次に、最も重芁な量子ゲヌトを分析したす。

重芁なバルブバルブZおよびアダマヌルバルブ


以䞋で説明するゲヌトは、最初の量子プログラムで䜿甚されるので、芚えおおいおください。 ゲヌトZは非垞に簡単に機胜したす。コンポヌネント| 0〉を保存し、コンポヌネントの笊号を倉曎したす| 1〉。 行列ずしお曞くこずができたす



量子ビット状態を次のように倉換したす| 0〉→| 0〉、| 1〉→-| 1〉行列の最初の列はベクトルの倉換を衚すこずに泚意しおください| 0〉、2番目-ベクトルの倉換| 1〉。

アダマヌルバルブは、䞊蚘ず同様の状態| 0〉ず| 1〉の重ね合わせを䜜成したす。 圌のマトリックス゚ントリは次のようになりたす。



次の量子ビット状態の倉換に察応したす。 、

ナニタリマトリックスおよびゲヌトの芖芚的衚珟の方法に関する詳现情報は、「远加資料」セクションに含たれるリ゜ヌスに蚘茉されおいたす。

少ない量子ビット


もっず身近なものを考えおください。 叀兞的なビットは、1぀ず぀だけでなく、組み合わせの圢匏たずえば、00、01、10、11でも存圚したす。量子蚈算では、同様の組み合わせが䜿甚されたす| 00〉、| 01〉、| 10〉、および11〉。 2぀のキュヌビットの状態は、次のベクトルを䜿甚しお説明できたす。



前ず同様に、枬定の結果ずしお00になる確率は 、
01の堎合、確率は など

䞡方のキュヌビットではなく、最初のキュヌビットの状態を枬定したいずしたす。 0になる確率は 。 私たちが思い出すように、枬定は状態を倉えるので、その埌はベクトルが重芁になりたす



分子に泚意しおください。最初のビットが1であるすべおの項を削陀したした条件により、枬定結果は0であるため。 ベクトルが蚱容可胜な量子状態を蚘述するためには、振幅の合蚈の2乗が1に等しいこずが必芁です倉換の前ず埌の䞡方。 この条件が満たされるように、正芏化係数行列匏の平方根に逆の倀を远加したす。

別の重芁なバルブ


NOTバルブの操䜜はすでに分解されおいたす。 次に続くのは、CNOT制埡-NOTバルブです。 2぀のキュヌビットがその入力に䟛絊されたす。 最初はマネヌゞャヌず呌ばれ、2番目は管理されたす。 制埡キュヌビットが| 0〉の堎合、制埡キュヌビットの状態は倉化したせん。 制埡キュヌビットが| 1〉の堎合、NOT挔算が制埡キュヌビットに適甚されたす。

CNOT操䜜はいく぀かの方法で解釈できたす。 バルブX、Z、Hず同様に、マトリックス圢匏で蚘述できたす。これは文字Uで瀺されたす。



マトリックスの列が次の倉換に察応しおいるこずがわかりたす| 00〉→| 00〉、| 01〉→| 01〉、| 10〉→| 11〉、| 11〉→| 10〉。 分析したマトリックスのように 、それはナニタリです、぀たり 。

次の指定もこのバルブに䜿甚されたす䞊郚は制埡キュヌビットに察応し、䞋郚は制埡キュヌビットに察応したす。



珟代矎術展の展瀺のようです。

ベルの幞運


セクション党䜓をこの重芁なトピックに圓おる必芁がありたす。 合蚈で4぀のベル状態がありたす。 それらの1぀| ϕ +⟩は、以䞋の量子プログラムで䜿甚されたす。 それを芋おみたしょう。



最初のキュヌビットの状態を枬定するずしたす。 結果| 0〉確率で埗る 。 これは、同じ確率0.5で|ψ '⟩= | 00〉、たたは| 1〉を枬定した埌の状態、および|ψ'⟩= | 11〉を枬定した埌の状態を意味したす。 奜奇心のために、ベル状態の完党なセットを提瀺したす量子゚ンタングルメントの最も単玔なケヌスです



次に、2番目のキュヌビットの状態を枬定したずしたす。 同じ理由によるず、蒞気を枬定した埌の状態は| 00〉たたは| 11〉になりたす。 その埌、最初のキュヌビットの状態を枬定するこずにした堎合、確率は0.5でなくなりたす。 枬定結果が䜕であったかに応じお、1たたは0の確率で| 0〉を取埗したす。 これらの結果は関連しおいるこずを理解するこずが重芁です。 これに最初に気づいたのは、アルバヌト・アむンシュタむン、ボリス・ポドルスキヌ、ネむサン・ロヌれンでしたしたがっお、これらの州は「EPRペア」ず呌ばれるこずもありたす。 その埌、圌らの理論はゞョン・ベルによっお開発されたした。

最埌に、アダマヌルバルブずCNOTバルブを䜿甚しおベル状態を生成できたす。 私の意芋では、これは立掟です。 アダマヌル匁は、最初のキュヌビットを重ね合わせ状態にしたす。 この量子ビットは、CNOTバルブの制埡入力に送られたす。 以䞋に、回路図を䜿甚しおこのプロセスを衚す方法を瀺したす。



これらの各倉換がどのように機胜するかの詳现に぀いおは、远加の資料を参照しおくださいリストは以䞋のずおりです。 量子ビット状態、量子ゲヌト、ベル状態に぀いおは、最初の量子ビットプログラムを曞くのに十分な知識がありたす。

量子プログラムを曞く


ドキュメントの指瀺に埓いたす 。

このチュヌトリアルは、次の手順を実行するのに圹立ちたす。量子プログラム開発パッケヌゞをむンストヌルし手順1〜2、量子ビットを遞択しおいく぀かの簡単な操䜜を実行したす。たずえば、特定の状態に蚭定しお枬定し手順3〜5、翻蚳したす量子ビットを重ね合わせ状態に倉換しステップ6、2぀の量子ビットをも぀れ状態ベル状態、たたはEPRのペアに倉換したすステップ7。

䞊蚘のマニュアルの指瀺に埓い、ヒントや远加の説明が必芁な堎合はこの資料に戻るこずをお勧めしたす。

ステヌゞ1.プロゞェクトの䜜成ず゜リュヌション


Qはこのリストの䞀番䞋にありたす。



ステヌゞ2オプション。 NuGetパッケヌゞの曎新


このアドバむスに埓いたしたが、特にリスクを冒したい堎合は、これは必芁ありたせん。

ステップ3. Qコヌドを入力したす


namespace Quantum.Bell { open Microsoft.Quantum.Primitive; open Microsoft.Quantum.Canon; operation Set (desired: Result, q1: Qubit) : () { body { let current = M(q1); if (desired != current) { X(q1); } } } } 

この操䜜はキュヌビットを状態私たちが遞択-0たたは1に転送したす。最初にキュヌビットを枬定しこの操䜜は文字Mで瀺されたす、状態0たたは1に折りたたたれたす。 NOT、X。そうでなければ、䜕もする必芁はありたせん。
 operation BellTest (count : Int, initial: Result) : (Int,Int) { body { mutable numOnes = 0; using (qubits = Qubit[1]) { for (test in 1..count) { Set (initial, qubits[0]); let res = M (qubits[0]); // Count the number of ones we saw: if (res == One) { set numOnes = numOnes + 1; } } Set(Zero, qubits[0]); } // Return number of times we saw a |0> and number of times we saw a |1> return (count-numOnes, numOnes); } } 

この小さなコヌドは、先ほど曞いた操䜜をテストするために蚭蚈されおいたす。 これは非垞に単玔なプログラムです。キュヌビットが必芁な状態に転送されたこずを確認したす。

これを行うために、圌女はルヌプで枬定を行い、倉数numOnesを䜿甚しお結果1の数をカりントしたす。

「Qubit [1]」ずいう衚蚘は、「1぀の芁玠からキュヌビットの配列を䜜成する」こずを意味したす。 配列芁玠のむンデックス付けはれロからです。 2぀のキュヌビットを区別するには埌でこれを行う必芁がありたす、「Qubit [2]」ず曞く必芁がありたす。 このような配列のキュヌビットは、番号0ず1に察応したす。

forルヌプでは、特定の初期状態に割り圓おられたキュヌビットをOneたたはZeroに蚭定したす Driver.csファむルで、すぐに取埗したすが、これは明瀺的に行われたす。 この状態を枬定し、1の堎合、カりンタヌ倀を1増やしたす。 この関数は、1ず0の芳枬された状態の数を返したす。 最埌に、キュヌビットはれロ状態になりたす既知の状態のたたにするため。

ステップ4. Cドラむバヌコヌドの入力


  using (var sim = new QuantumSimulator()) { // Try initial values Result[] initials = new Result[] { Result.Zero, Result.One }; foreach (Result initial in initials) { var res = BellTest.Run(sim, 1000, initial).Result; var (numZeros, numOnes) = res; System.Console.WriteLine( $"Init:{initial,-4} 0s={numZeros,-4} 1s={numOnes,-4}"); } } System.Console.WriteLine("Press any key to continue..."); System.Console.ReadKey(); 

このドラむバヌは、量子シミュレヌタヌずチェックする初期倀の配列れロず1を䜜成したす。 次に、シミュレヌションが1000回繰り返され、デバッグの結果がSystem.Console.WriteLine関数を䜿甚しお衚瀺されたす。

ステヌゞ5.アセンブリず実装


Init:Zero 0s=1000 1s=0
Init:One 0s=0 1s=1000
Press any key to continue...

すべおが正垞な堎合、画面の出力は䞊蚘のようになりたす。 この結果は、初期キュヌビットをれロ状態に転送し、1000回の繰り返しを実行するず、芳枬結果に応じた状態の数| 0〉は1000になるこずを意味したす。1぀の状態に぀いおも同様です。

ステップ6.重ね合わせの䜜成


もっず面癜いものを詊しおみたしょう。 ここで、NOTゲヌトを䜿甚しおキュヌビットの状態を倉曎したす。
  X(qubits[0]); let res = M (qubits[0]); 

次に、プログラムを再床実行し、結果が逆になるこずを確認したす。
Init:Zero 0s=0 1s=1000
Init:One 0s=1000 1s=0


次に、NOTバルブをアダマヌルバルブHに亀換したす。 その結果、私たちが知っおいるように、キュヌビットは状態の重ね合わせになり、その枬定結果は確率で| 0〉ず| 1〉に等しくなりたす。
  H(qubits[0]); let res = M (qubits[0]); 

プログラムを再床実行するず、かなり興味深い結果が埗られたす。
Init:Zero 0s=484 1s=516
Init:One 0s=522 1s=478

枬定の数| 0〉ず| 1〉はほが等しくなりたす。

ステップ7.も぀れた状態の準備


次に、ベル状態を䜜成したす。 以䞋のコヌドをご芧ください。 たず、2぀のキュヌビットの配列を䜜成したすQubit [2]。 最初のキュヌビット回路の前の図ではシンボルxで瀺されおいたしたを䜕らかの初期状態に倉換し、2番目図のyをれロに蚭定したす。 これは、Xに応じお| 00〉たたは| 10〉を入力するのずほが同じです。
 operation BellTest (count : Int, initial: Result) : (Int,Int) { body { mutable numOnes = 0; using (qubits = Qubit[2]) { for (test in 1..count) { Set (initial, qubits[0]); Set (Zero, qubits[1]); H(qubits[0]); CNOT(qubits[0],qubits[1]); let res = M (qubits[0]); // Count the number of ones we saw: if (res == One) { set numOnes = numOnes + 1; } } Set(Zero, qubits[0]); Set(Zero, qubits[1]); } // Return number of times we saw a |0> and number of times we saw a |1> return (count-numOnes, numOnes); } } 

図によるず、最初のキュヌビットであるキュヌビット[0]は、アダマヌル匁を通過する必芁がありたす。 その結果、圌は重ね合わせになりたす。 次に、CNOTバルブにキュヌビットを枡しキュヌビット[0]-制埡キュヌビット、キュヌビット[1]-制埡、結果を枬定したす。

結果が予想されるものを理解するために、ベル状態がどのように機胜するかをもう䞀床繰り返したしょう。 最初のキュヌビットを枬定するず、確率| 0〉が埗られたす 。 これは、同じ確率0.5で|ψ '⟩= | 00〉たたは| 1〉を枬定した埌の状態、および|ψ'⟩= | 11〉を枬定した埌の状態を意味したす。 したがっお、2番目のキュヌビットの状態を枬定した結果は、最初のキュヌビットが状態| 0〉にある堎合は| 0〉、最初のキュヌビットが状態| 1〉にある堎合は| 1〉になりたす。 2぀のキュヌビットの状態がうたく混同された堎合、結果は、最初ず2番目のキュヌビットが同じ状態にあるこずを瀺すはずです。

コヌドでは、ifステヌトメントを䜿甚しお、量子ビット[1]の枬定結果が量子ビット[0]の枬定結果ず等しいかどうかを確認したす。
 operation BellTest (count : Int, initial: Result) : (Int,Int,Int) { body { mutable numOnes = 0; mutable agree = 0; using (qubits = Qubit[2]) { for (test in 1..count) { Set (initial, qubits[0]); Set (Zero, qubits[1]); H(qubits[0]); CNOT(qubits[0],qubits[1]); let res = M (qubits[0]); if (M (qubits[1]) == res) { set agree = agree + 1; } // Count the number of ones we saw: if (res == One) { set numOnes = numOnes + 1; } } Set(Zero, qubits[0]); Set(Zero, qubits[1]); } // Return number of times we saw a |0> and number of times we saw a |1> return (count-numOnes, numOnes, agree); } } 


結果を確認する前に、Driver.csファむルにもう1぀倉曎を加える必芁がありたす。agree倉数を远加したす。
 using (var sim = new QuantumSimulator()) { // Try initial values Result[] initials = new Result[] { Result.Zero, Result.One }; foreach (Result initial in initials) { var res = BellTest.Run(sim, 1000, initial).Result; var (numZeros, numOnes, agree) = res; System.Console.WriteLine( $"Init:{initial,-4} 0s={numZeros,-4} 1s={numOnes,-4} agree={agree,-4}"); } } System.Console.WriteLine("Press any key to continue..."); System.Console.ReadKey(); 

これで、プログラムを起動できたす。 これらの結果はどういう意味ですか 最初のキュヌビットが最初にれロ状態になった堎合぀たり、倀| 00〉を入力した堎合、アダマヌルバルブはキュヌビットを重ね合わせ状態にし、枬定結果は50の堎合は0、50の堎合は1になりたす。 この条件が満たされるかどうかは、れロず1の数で掚定できたす。 最初のビットの状態の枬定が2番目のビットの状態に圱響しなかった堎合、| 0〉に等しくなり、499の堎合にのみ䞀貫性が達成されたす。

しかし、ご芧のずおり、1番目ず2番目のキュヌビットの状態は完党に䞀貫しおいたす。結果の数| 0〉ず| 1〉ほがは䞀臎したす。 したがっお、結果は1000の各ケヌスで䞀貫しおいたす。 それがベルの州の仕組みです。
Init:Zero 0s=499 1s=501 agree=1000
Init:One 0s=490 1s=510 agree=1000

これで終わりたす。 最初の量子プログラムを䜜成し、最埌たで到達したのでおそらくそれが䜕をしおいたかを理解したでしょう。 お茶を䞀杯飲むのは泚目に倀したす。



次は


GitHubリポゞトリには倚くの䟋がありたす。

次の蚘事では、量子テレポヌテヌションの理論に぀いお説明し、コヌド䟋を怜蚎したす。

量子ゲヌトに぀いおは、Anitaのブログで詳しく説明しおいたす泚Anitaは最高です。

远加資料


議論されおいるトピックを掘り䞋げたい堎合、以䞋は私たちにずっお非垞に有甚なリ゜ヌスのリストです。 最初の本は「量子コンピュヌティングず量子情報」M. Nielsen、I。Changです。 2぀目は、Microsoft SDKのドキュメントです。

これが読者にずっお興味深い堎合コメントを残しおください、他のリ゜ヌスに぀いおの別の出版物を曞くこずができたす。

アプリケヌション。 ベルの幞運




ベル状態は、アダマヌルバルブずCNOTバルブを䜿甚しお生成できたす。 アダマヌル匁は、最初のキュヌビットを重ね合わせ状態にしたす。 この量子ビットは、CNOTバルブの制埡入力に送られたす。 回路図では、次のようになりたす。
状態| 00〉のキュヌビットのペアが入力に䟛絊される最初のケヌスから始めたす。 最初のキュヌビット| 0〉は、アダマヌル匁を通過しお、 。 2番目のキュヌビットは倉曎されたせん。 結果



その埌、キュヌビットはCNOTバルブを通過したす倉換は| 00〉→| 00〉および| 10〉→| 11〉を実行したす。 今、圌らの状態は匏で蚘述されたす



2番目のケヌスキュヌビット| 01〉が入力されたす。 アダマヌルバルブは、最初のキュヌビット| 0〉を状態に転送したす 。 2番目のキュヌビットは倉曎されたせん。 結果



次に、量子ビットがCNOTゲヌトを通過するようにしたす。CNOTゲヌトは、倉換| 01​​〉→| 01〉および| 11〉→| 10〉を実行したす。 䞀察のキュヌビットの最終状態は次のようになりたす。



3番目のケヌスキュヌビット| 10〉が入力に送られたす。 アダマヌルゲヌトは最初のキュヌビット|1⟩を状態にする 。 2番目のキュヌビットは倉曎されたせん。 結果



その埌、キュヌビットはCNOTバルブを通過したす倉換は| 00〉→| 00〉および| 10〉→| 11〉を実行したす。 今、圌らの状態は匏で蚘述されたす



4番目のケヌスキュヌビット| 11〉が入力されたす。 アダマヌルゲヌトは最初のキュヌビット|1⟩を状態にする 。 2番目のキュヌビットは倉曎されたせん。 結果



次に、量子ビットがCNOTゲヌトを通過するようにしたす。CNOTゲヌトは、倉換| 01​​〉→| 01〉および| 11〉→| 10〉を実行したす。 䞀察のキュヌビットの最終状態は次のようになりたす。



すべおのケヌスを敎理したした。

Source: https://habr.com/ru/post/J351622/


All Articles