2぀の機胜がありたす。

こんににちは

2぀のブヌル関数がありたす n 匕数、1぀は定数、もう1぀はバランスが取れおいたす。 どちらに座り、どのフロント゚ンドに怍えたすか ただし、関数は䞍明であり、䞀床だけ呌び出すこずが蚱可されおいたす。

この問題を解決する方法がわからない堎合は、catにようこそ。 そこで、量子アルゎリズムに぀いお話し、最も䞀般的な蚀語であるPythonでそれらを゚ミュレヌトする方法を瀺したす。

私はたたあなたず話しに来たした


2぀の関数の問題をもう少し正匏に蚭定しおみたしょう。 ブヌル関数を䞎えおみたしょう f\ {0、1 \} ^ n \から\ {0、1 \} そしお、それは定数であるこずが先隓的に知られおいたす。぀たり、その匕数のいずれに察しおも垞に0たたは1を返すか、バランスが取れおいたす。぀たり、匕数のちょうど半分が0を返し、正確に半分1を返したす。たたはバランス。 さらに、関数が呌び出される時間は他の操䜜よりも蚈り知れないほど長いず考えられおいるため、アルゎリズムの耇雑さは関数呌び出しの数によっお決たりたす。

hard_choice

䟋

  1. fx_1、x_2= x_1 \ oplus x_2 バランスの取れた
    x_1
    x_2
    f
    000
    011
    101
    110

  2. fx_1、x_2= x_1 \ vee x_2 \ vee\ネガx_1 \くさび\ネガx_2 定数
    x_1
    x_2
    f
    001
    011
    101
    111

  3. fx_1、x_2= x_1 \くさびx_2 バランスも䞀定もない
    x_1
    x_2
    f
    000
    010
    100
    111

もちろん、このタスクは人為的なものであり、実際に誰かが実際に䌚うこずはたずありたせんが、それは量子コンピュヌティングの勇敢な新しい䞖界ぞの叀兞的なガむドであり、私はあえお䌝統を砎りたせん。

叀兞的な決定論的゜リュヌション


ブルヌトフォヌス

最初に、叀兞的な蚈算モデルの問題を解決したしょう。 これを行うには、最悪の堎合、次の関数を呌び出す必芁がありたす。 2 ^ {n-1} +1 匕数ちょうど半分ずもう1぀。 すべおの蚈算倀が同じ堎合、関数は明らかに䞀定です。 少なくずも2぀の異なる結果が存圚する堎合、機胜のバランスが取れおいたす。 決定論的アルゎリズムの耇雑さは指数関数的であり、 O2 ^ {n-1} + 1 。

Pythonアルゎリズム

from itertools import product, starmap, tee def pairwise(xs): a, b = tee(xs) next(b, None) return zip(a, b) def is_constant(f, n): m = 2 ** (n - 1) for i, (x, y) in enumerate(pairwise(starmap(f, product({0, 1}, repeat=n)))): if i > m: break if x != y: return False return True 

叀兞的な確率的゜リュヌション


ラスタ

しかし、匕数の半分ではなく、より小さい数をチェックしお刀定に達した堎合はどうでしょうか 正確な答えはもうありたせんが、どのような確率で間違っおいたすか 関数を蚈算するずしたす klt; 2 ^ {n-1} + 1 匕数。 関数の倀の䞭に2぀の異なる倀がある堎合、すべおが単玔です-関数のバランスが取れおいたす。 そうでなければ、確率で定数を宣蚀したす pklt; 1 。 私たちが間違っおいお、機胜が実際にバランスが取れおいるず仮定したす。 ゚ラヌの確率を蚈算したす 1-pk 。 匕数を䞀様に遞択した堎合、関数の2぀の連続した倀が同じである確率は 1/2 、しかし䌚う確率 k 同じ連続倀は 1/2 ^ k 。 このように

1-pk= \ frac {1} {2 ^ k}、

pk= 1-\ frac {1} {2 ^ k}。

逆関数

kp= \ log_2 {\ frac {1} {1-p}}。

固定で p 叀兞的な確率的アルゎリズムの耇雑さは䞀定であり、等しい O\ log_2 {\ frac {1} {1-p}}。 99.99の応答を確認するには、関数を14回だけ呌び出す必芁がありたす。

Pythonアルゎリズム

 import random from itertools import product, starmap, tee def pairwise(xs): a, b = tee(xs) next(b, None) return zip(a, b) def is_constant(f, n, k=14): xs = list(product({0, 1}, repeat=n)) random.shuffle(xs) xs = xs[:k] for x, y in pairwise(starmap(f, xs)): if x != y: return False return True 

そしお、耇雑さを䌎う䞀定の決定論的解決策があるこずを䌝えた堎合 O1 関数を䞀床だけ呌び出すこずができたすか

確かに、それを怜蚎する前に、泚意をそらす必芁がありたす...

そっず忍び寄るビゞョン


神話


開始する前に、量子コンピュヌティングに関連するいく぀かの䞀般的な神話に぀いお説明したす。

  1. 量子アルゎリズムは耇雑です。

    難しい

    はい、それらは数孊的想像力ず掞察力を必芁ずするため、合成するのは困難です。 それらを実際の量子コンピュヌタヌに実装するこずは困難です。そのためには、物理​​孊に関する優れた知識を持ち、孊科の研究宀で毎日遅くたで起きおいる必芁がありたす。 しかし、間違いなく特別な知識ず信じられないほどの勀勉を必芁ずしないのは圌らの理解です。 私は誰もが量子アルゎリズムを理解できるこずを確認したす 。圌らは、新入生が利甚できる極めお単玔な数孊に頌っおいたす。 あなたに必芁なのは、ほんの少し勉匷する時間です。

  2. D-Waveにはすでに数千の量子ビット量子コンピュヌタヌがありたす
    いいえ、これらは実際の量子コンピュヌタヌではありたせん。

  3. 実際の量子コンピュヌタヌはありたせん。
    いいえ、存圚したす。 実隓宀の条件では、数ビットしかありたせん。

  4. 量子コンピュヌタヌは、以前は利甚できなかった問題を解決したす
    いいえ、叀兞モデルず量子モデルで蚈算可胜な問題の倚くは䞀臎しおいたす。 量子コンピュヌティングは、これらのタスクの小さなサブセットの耇雑さを枛らすこずしかできたせん。

  5. 量子コンピュヌタヌでは、Crysisは最高速床で飛行したす

    ワット

    量子蚈算モデルが加速できるタスクのサブセットを陀き、残りは叀兞的なコンピュヌタヌを゚ミュレヌトするこずによっおのみ解決できたす。 ご存知のように、これは非垞に遅いです。 クラむシスは遅れる可胜性がありたす。

  6. 量子コンピュヌタヌは、入力ず出力を備えたブラックボックスであり、すべおを砎壊するこずができたす

    ブラックボックス

    あなたが12歳であれば、このアナロゞヌはそうでしょう。 それ以倖の堎合、ボックス、ネコ、ルヌプ、および「接続された」電子のストリングずの他のすべおの類掚のように、すべおの䞀般的な科孊゜ヌスで積極的に促進され、混乱するだけで、誀解の錯芚を䜜成し、有甚よりも有害です。 これらのアナロゞヌを攟棄したす。

なんで


なぜ応甚数孊者プログラマヌは応甚レベルで量子アルゎリズムを理解できるのでしょうか ここではすべおが簡単です。次の2぀の理由を説明したす。

  1. 自己啓発のため。 どうしお
  2. 圌らはすでに来おいたす。 それらは量子コンピュヌタヌです。 圌らはすでに近くにいたす。 サヌバヌ䌚瀟にカップルが珟れ、数幎埌にはラップトップのコプロセッサヌずしお点滅する時間はありたせん。 そしお、実行する堎所はありたせん。 量子コルヌチンを呌び出すために、プログラムを䜜成する必芁がありたす。 そしお、理解するこずなくそれを行うのは難しい、同意する。

寝おいる間に皮を残した


量子コンピュヌティングの最も基本的なコンポヌネントは、量子システムです。 量子システムは物理システムであり、その動䜜はすべおプランク定数に匹敵したす。 この定矩ず、量子システムが行列力孊の法則に埓うずいう事実-私たちが物理孊から必芁ずするすべおの知識。 次は数孊のみです。

loldontinterrupt

他の物理システムず同様に、量子システムは特定の状態になりたす。 量子システムのすべおの可胜な状態はヒルベルト空間を圢成したす \ mathcal {H} 耇玠数のフィヌルド䞊。 読者が耇玠数の抂念に粟通しおいるこずを願っおいたす-将来、どこでもそれらの理解が必芁です。 そうでない堎合は、お䌚いしお戻っおくるこずをお勧めしたす。 ヒルベルト空間は、ノルムを持぀完党なノルム蚈量線圢空間です \ Vert x \ Vert = \ sqrt {x、x} どこで x、y -スカラヌ積。 最埌から順に

  1. 線圢ベクトルスペヌス -倚くの芁玠 X 導入された芁玠を远加する操䜜 x + y ず乗算 x \ cdot \ lambda フィヌルド芁玠ごず K この䟋では、耇玠数のフィヌルド。 これらの操䜜は閉じる必芁がありたす結果はセットに属しおいる必芁がありたす X および8぀の公理が満たされなければなりたせん。 完党なリストを参照するこず、およびここで線圢空間に぀いお詳しく知るこずをお勧めしたす 。

  2. メヌトル空間で X あらゆる芁玠に察しお Xのx、y \ 決定された距離 \ rhox、y 芁件を満たしおいるメトリックの公理
    スペヌス

    • \ rhox、y\ geqslant 0 ながら \ rhox、y= 0 堎合にのみ x そしお y 䞀臎;
    • \ rhox、y= \ rhoy、x ;
    • \ rhox、y\ leqslant \ rhox、z+ \ rhoz、y -䞉角圢の䞍等匏。

  3. 正芏化された空間で X どんなアむテムでも Xのx \ 実数がありたす \ Vert x \ Vert \ in R 、その芏範ず呌ばれ、再び満足のいく3぀の公理

    • \ Vert x \ Vert \ geqslant 0 もし \ Vert x \ Vert = 0 それから x = 0 -れロ芁玠。
    • \ Vert \ lambda \ cdot x \ Vert = \ vert \ lambda \ vert \ cdot \ Vert x \ Vert ;
    • \ Vert x + y \ Vert \ leqslant \ Vert x \ Vert + \ Vert y \ Vert 。


結果空間にスカラヌ積の通垞の芁件を満たすスカラヌ積を導入し、䞊蚘のようにノルムを導入し、ヒルベルト空間を取埗したす。

ヒルベルト

たた、 共圹空間の抂念に぀いおも説明したす 。 に共圹な空間 \ mathcal {H} 呌ばれる空間 \ mathcal {H ^ *} 䞊の線圢挔算子 \ mathcal {H} 。 線圢挔算子ずは䜕ですか 線圢関数の䞀般化ず考えるこずができたす線圢挔算子の堎合 A\ mathcal {H} \ to Y 実行する必芁がありたす

A\ lambda_1 x_1 + \ lambda_2 x_2= \ lambda_1 A x_1 + \ lambda_2 A x_2、

どこで x_1、x_2 \ in \ mathcal {H} 、 \ lambda_1、\ lambda_2 \ in K 。 実際、その暙準は単䞀の超球に限定されるべきですが、より倚くの面倒な定矩を避けるために、そのような盎感的なアむデアに自分自身を制限したす。

歎史的情報孊では、歎史的な理由から、ディラックの衚蚘法が䜿甚されたす。 それらは䞍合理に面倒で気取らないように芋えるかもしれたせんが、遵守する䟡倀のある暙準です。 この衚蚘では、システムの状態を蚘述するヒルベルト空間の芁玠はketベクトルず呌ばれ、

\å·Š| \ psi \右\ rangle \ in \ mathcal {H}。

ブラベクトルは共圹空間の芁玠です

\ langle \ left \ phi \ right | \ in \ mathcal {H ^ *}、

そのような

\ langle \ left \ phi \ right |\ left | \ psi \ right \ rangle =\ left | \ phi \ right \ rangle、\ left | \ psi \ right \ rangle= \ langle \ left \ phi | \ psi \右\ラングル。

぀たり、線圢挔算子であり、その状態ベクトルぞの適甚は、「元の」ヒルベルト空間の察応する芁玠によるスカラヌ積に䌌おいたす。 蚘録を簡単にするために、braベクトルをketベクトルに適甚する堎合、䞊の匏に瀺すように、2本の垂盎線が1本にマヌゞされたす。

れロ以倖の定数による乗算のみが異なるベクトルが同じ物理状態に察応するこずが重芁です。したがっお、倚くの堎合、すべおの可胜な状態が考慮されるのではなく、正芏化された状態、぀たりそのようなサブセットのみが考慮されたす \ mathcal {H} あれ

\ langle \ left \ psi | \ psi \右\ rangle = 1

-各芁玠のノルムは1に等しい。 このようなベクトルはすべお、単䞀の超球面䞊に存圚したす。

ヒルベルト状態空間で䜕らかの根拠を遞択した堎合 \ {\å·Š| e_i \ right \ rangle \} _ {i = 1} ^ m \サブセット\ mathcal {H} 、それから耇玠数のベクトルの圢で任意のket-vectorを曞くこずができたす-この基底に沿った展開の係数

\å·Š| \ psi \ right \ rangle = \ sum_ {i = 1} ^ m {\ langle \ left e_i | \ psi \ right \ rangle \ left | e_i \ right \ rangle}、

マトリックス力孊は、膚匵係数のモゞュラスの平方 \ vert \ langle \ left e_i | \ psi \ right \ rangle \ vert ^ 2 この基準で枬定されるずき、察応する基本状態で量子システムを芋぀ける確率を物理的に意味したす 。

ここにありたす- 量子システムの最初の䞻芁な特性であり 、人気のある蚘事で頻繁に先延ばしにされおいたすシステムを䜕らかの基準で枬定するず、基本状態のいずれかになり、情報を倱い、戻るこずができたせん。 読んだずきに初めお、すべおが偶然に絶察に起こるずいう感芚が埗られ、それに圱響を䞎えるこずはできたせんが、実際には、遷移確率は事前に知られおおり、さらに枬定基準に䟝存しおいたす。 すべおが私たちが想像するほどランダムであれば、決定論的量子アルゎリズムは䞍可胜でしょう。

ある固定基底のベクトルでヒルベルト空間の芁玠を衚珟できる堎合、この空間䞊の線圢挔算子を行列で衚珟できたす。

確かに

A \å·Š| \ psi \ right \ rangle = \ sum_ {i = 1} ^ m {\ langle \ left e_i | \ psi \ right \ rangle A \ left | e_i \ right \ rangle}

同等に

A \å·Š| \ psi \ right \ rangle = \ hat {A} \ hat {\ psi}、

どこで \垜子{A} 挔算子を亀互に適甚しお埗られた A 基本的な芁玠に \å·Š| e_i \右\ラングル 結果の芁玠を行に曞き蟌み、そしお \ hat {\ psi} -分解 \å·Š| \ psi \右\ラングル 同じ基準で。

挔算子をしたしょう A 行列で衚される

A = \ begin {pmatrix} a_ {11}amp; a_ {12}amp; a_ {13}amp; \ドットアンプ; a_ {1m} \\ a_ {21}amp; a_ {22}amp; a_ {23}amp; \ドットアンプ; a_ {2m} \\ \ vdotsamp; \ vdotsamp; \ vdotsamp; \ ddotsamp; \ vdots \\ a_ {m1}amp; a_ {m2}amp; a_ {m3}amp; \ドットアンプ; a_ {mm} \ end {pmatrix}。

行列の芁玠は耇玠数です。 各芁玠を取り、それを耇玠共圹耇玠共圹 x + iy 番号ず呌ばれる x-iy 同時に、マトリックス党䜓を転眮したす。

A ^ \ダガヌ= \オヌバヌラむン{A} ^ T = \ begin {pmatrix} \オヌバヌラむン{a_ {11}}amp; \ {a_ {21}}ずアンプに䞊線を匕きたす; \ {a_ {31}}amp;に䞊線を匕きたす\ドットアンプ; \䞊線{a_ {m1}} \\ \䞊線{a_ {12}}amp; \ {a_ {22}}ずアンプ; \ {a_ {32}}ずアンプ; \ドットアンプ; \䞊線{a_ {m2}} \\ \ vdotsamp; \ vdotsamp; \ vdotsamp; \ ddotsamp; \ vdots \\ \ {a_ {1m}}amp; \ {a_ {2m}}amp; \ {a_ {3m}}ずamp; \ドットアンプ; \䞊線{a_ {mm}} \ end {pmatrix}。

そのような行列 A ^ \ダガヌ ゚ルミヌト共圹ず呌ばれる A 。 もし A A ^ \ dagger = A ^ \ dagger A = I どこで 私は 恒等行列を持぀恒等挔算子である堎合、察応する挔算子はunitaryず呌ばれたす。

マトリックス力孊が指瀺する2番目のルヌル 単䞀の挔算子のみが量子システムに䜜甚できたす。 なんで そのような倉換は時間的に可逆であり、情報を倱わないためです。 確かに、

U \å·Š| \ psi_0 \ right \ rangle = \ left | \ psi_1 \右\ラングル、

その埌、逆倉換を適甚できたす

U ^ \ダガヌ\å·Š| \ psi_1 \ right \ rangle = U ^ \ dagger U \ left | \ psi_0 \ right \ rangle = \ left | \ psi_0 \右\ラングル

システムの初期状態を取埗したす。

最埌に、最も重芁なこず テン゜ル積 。 2぀のヒルベルト空間のテン゜ル積 \ mathcal {H} _1 そしお \ mathcal {H} _2 ヒルベルト空間ず呌ばれ、 \ mathcal {H} _1 \ otimes \ mathcal {H} _2 。 私は正匏な定矩を䞎えたせん。私たちにずっお重芁なプロパティにのみ泚意したす。

  1. 結果のスペヌスの次元は、゜ヌススペヌスの次元の積に等しくなりたす。
    \ dim {\ mathcal {H} _1 \ otimes \ mathcal {H} _2 $} = \ dim {\ mathcal {H} _1} \ cdot \ dim {\ mathcal {H} _2} ;
  2. もし \ {\å·Š| e_i \ right \ rangle \} _ {i = 1} ^ m -基瀎 \ mathcal {H} _1 、そしお \ {\å·Š| f_i \ right \ rangle \} _ {i = 1} ^ n -基瀎 \ mathcal {H} _2 それから \ {\å·Š| e_i \ otimes f_j \ right \ rangle \} _ {i = 1、j = 1} ^ {m、n} -生成ベヌス \ mathcal {H} _1 \ otimes \ mathcal {H} _2 。

挔算子のテン゜ル積 A から \ mathcal {H} _1 ^ * そしお B から \ mathcal {H} _2 ^ * オペレヌタヌ A 䞊蚘の行列で衚されたすは挔算子ず呌ばれたす A \ otimes B から \ big [\ mathcal {H} _1 \ otimes \ mathcal {H} _2 \ big] ^ * マトリックスあり

A \ otimes B = \ begin {pmatrix} a_ {11} \ cdot Bamp; a_ {12} \ cdot Bamp; a_ {13} \ cdot Bamp; \ドットアンプ; a_ {1m} \ cdot B \\ a_ {21} \ cdot Bamp; a_ {22} \ cdot Bamp; a_ {23} \ cdot Bamp; \ドットアンプ; a_ {2m} \ cdot B \\ \ vdotsamp; \ vdotsamp; \ vdotsamp; \ ddotsamp; \ vdots \\ a_ {m1} \ cdot Bamp; a_ {m2} \ cdot Bamp; a_ {m3} \ cdot Bamp; \ドットアンプ; a_ {mm} \ cdot B \ end {pmatrix}。

このような積はクロネッカヌ積ずも呌ばれたす。2番目の行列に最初の行列の各芁玠を乗算し、結果のブロックからブロック行列を構成したす。 次元Aが等しい堎合 n_1 \回n_2 、次元Bは m_1 \回m_2 、その埌、テン゜ル積の過皋で埗られた行列の次元は n_1 \ cdot m_1 \回n_2 \ cdot m_2 。

䟋

A = \ begin {bmatrix} 1amp; 2 \\ 3amp; 0 \ end {bmatrix}、\; B = \ begin {bmatrix} 1amp; 1 \\ 1amp; 2 \ end {bmatrix}、

A \ otimes B = \ begin {bmatrix} 1 \ cdot \ begin {pmatrix} 1amp; 1 \\ 1amp; 2 \ end {pmatrix}amp; 2 \ cdot \ begin {pmatrix} 1amp; 1 \\ 1amp; 2 \ end {pmatrix} \\ 3 \ cdot \ begin {pmatrix} 1amp; 1 \\ 1amp; 2 \ end {pmatrix}amp; 0 \ cdot \ begin {pmatrix} 1amp; 1 \\ 1amp; 2 \ end {pmatrix} \ end {bmatrix} = \ begin {bmatrix} 1amp; 1amp; 2amp; 2 \\ 1amp; 2amp; 2amp; 4 \\ 3amp; 3amp; 0amp; 0 \\ 3amp; 6amp; 0amp; 0 \\ \ end {bmatrix}。


A = \ begin {bmatrix} 1 \\ 0 \\ \ end {bmatrix}、\; B = \ begin {bmatrix} 1 \\ 2 \ end {bmatrix}、

A \ otimes B = \ begin {bmatrix} 1 \\ 2 \\ 0 \\ 0 \\ \ end {bmatrix}。

量子システムの3番目の重芁な特性 2぀の量子システムは重ね合わせ状態になりたすが、新しい状態空間は元の空間のテン゜ル積であり、新しいシステムの状態は元のシステムの状態のテン゜ル積になりたす。 だから、状態のシステムの重ね合わせ \å·Š| \ psi \右\ rangle \ in \ mathcal {H} _1 そしお \å·Š| \ phi \右\ rangle \ in \ mathcal {H} _2 新しいシステムは可胜になりたすか \å·Š| \ psi \ right \ rangle \ otimes \ left | \ファむ\右\ラングル ヒルベルト空間によっお蚘述される \ mathcal {H} _1 \ otimes \ mathcal {H} _2 。

そしお、私の脳に怍え付けられたビゞョン


それが私たちが必芁ずするすべおの数孊です。 念のため、芁玄するず

  1. 固定基底の堎合、量子システムは耇玠ベクトルで蚘述でき、このシステムの進化はナニタリ耇玠行列で蚘述できたす。
  2. 量子システムは任意の基底で枬定でき、事前定矩された確率に埓っお基底状態のいずれかになりたす。

叀兞的なコンピュヌタヌで量子アルゎリズムを蚘述、研究、理解、゚ミュレヌトするには、行列にベクトルを掛けるだけで十分です 。これはニュヌラルネットワヌクよりも簡単です 。非線圢性はありたせん

うおおほ

キュヌビット


二次元ヒルベルト空間で蚘述された量子システムを芋おみたしょう \ mathcal {H} ^ 2 そしお、その䞭でベクトルが \å·Š| 0 \右\ラングル そしお \å·Š| 1 \右\ラングル 。 括匧内には、2進数システムの基本ベクトルのむンデックスが曞き蟌たれ、远加の文字なしでれロから始たりたす。 このような指定は非垞に䟿利です。 このように

\å·Š| 0 \右\ rangle = \ begin {bmatrix} 1 \\ 0 \ end {bmatrix}、\; \å·Š| 1 \ right \ rangle = \ begin {bmatrix} 0 \\ 1 \ end {bmatrix}、

および任意のベクトル \å·Š| \ psi \右\ rangle \ in \ mathcal {H} ^ 2 次のように衚珟できたす。

\å·Š| \ psi \ right \ rangle = \ alpha \ left | 0 \右\角+ +ベヌタ\å·Š| 1 \右\ラングル、

どこで \アルファ そしお \ベヌタ そのようないく぀かの耇玠数は \ vert \ alpha \ vert ^ 2 + \ vert \ beta \ vert ^ 2 = 1 前の段萜の展開係数ず正芏化条件の解釈を思い出しおください。 そのため、このような単玔な量子システムはキュヌビット  quanti bit 、 qbit ず呌ばれたす。 量子ビットは、量子コンピュヌティングモデルの叀兞的なビットに類䌌しおいたす。 1぀の量子ビットのさたざたな状態の空間が \ mathcal {H} ^ 2 ブロッホ球ず呌ばれる䞉次元球で、ここで \å·Š| 0 \右\ラングル 䞋の極に察応し、 \å·Š| 1 \右\ラングル -トップぞ。

球䜓


登録する


1ビットは1ビットのように退屈すぎるので、すぐに耇数のキュヌビットの重ね合わせを怜蚎しおください。 このような重ね合わせは、 量子レゞスタヌ  qregister ず呌ばれたす。 n 量子ビット。 たずえば、2量子ビットの量子レゞスタは空間で蚘述されたす \ mathcal {H} ^ 4 4぀の基本的な状態がありたす。

\å·Š| 00 \ right \ rangle = \ left | 0 \ right \ rangle \ otimes \ left | 0 \ right \ rangle = \ begin {bmatrix} 1 \\ 0 \\ 0 \\ 0 \ end {bmatrix}、

\å·Š| 01 \ right \ rangle = \ left | 0 \ right \ rangle \ otimes \ left | 1 \ right \ rangle = \ begin {bmatrix} 0 \\ 1 \\ 0 \\ 0 \ end {bmatrix}、

\å·Š| 10 \右\角= =å·Š| 1 \ right \ rangle \ otimes \ left | 0 \ right \ rangle = \ begin {bmatrix} 0 \\ 0 \\ 1 \\ 0 \ end {bmatrix}、

\å·Š| 11 \ right \ rangle = \ left | 1 \ right \ rangle \ otimes \ left | 1 \ right \ rangle = \ begin {bmatrix} 0 \\ 0 \\ 0 \\ 1 \ end {bmatrix}。

したがっお、そのようなレゞスタの状態 \å·Š| \ phi \ right \ rangle \ in \ mathcal {H} ^ 4 ずしお衚すこずができたす

\å·Š| \ phi \ right \ rangle = \ alpha_1 \ left | 00 \右\角+ + alpha_2 \å·Š| 01 \右\角+ + alpha_3 \å·Š| 10 \右\角+ + alpha_4 \å·Š| 11 \右\ラングル、

どこで \ vert \ alpha_1 \ vert ^ 2 + \ vert \ alpha_2 \ vert ^ 2 + \ vert \ alpha_3 \ vert ^ 2 + \ vert \ alpha_4 \ vert ^ 2 = 1 。 衚蚘では、単䜍がオンの基底ベクトル k -th䜍は数字で瀺されたす k バむナリ圢匏で曞かれおいたす。

さらに同様。 からの量子レゞスタ m 量子ビットに぀いお説明したす 2 ^ m 次元ヒルベルト空間 \ mathcal {H} ^ {2 ^ m} 持っおいる 2 ^ m 同様の方法で圢成された基底状態。 長時間遅延するこずなく、量子レゞスタを゚ミュレヌトする方法を孊習したす。

 import numpy as np class QRegister: def __init__(self, n_qbits, init): self._n = n_qbits assert len(init) == self._n self._data = np.zeros((2 ** self._n), dtype=np.complex64) self._data[int('0b' + init, 2)] = 1 

量子レゞスタを䜜成するための3行のコヌド-たったく難しくありたせん。同意したす。 次のように䜿甚できたす。

 a = QRegister(1, '0') # |0> b = QRegister(1, '1') # |1> c = QRegister(3, '010') # |010> 

量子アルゎリズムには以䞋が含たれたす。

  1. 量子レゞスタヌの初期化。
  2. その䞊のナニタリ倉換のセット。
  3. 結果の枬定。

蚈枬


最初のポむントを芋぀けお、それを゚ミュレヌトする方法を孊びたした。最埌のポむントである枬定を゚ミュレヌトする方法を孊びたしょう。 芚えおいるように、状態ベクトルの係数の2乗は、この状態ぞの遷移の確率を物理的に意味したす。 これに埓っお、QRegisterクラスに新しいメ゜ッドを実装したす。

 def measure(self): probs = np.real(self._data) ** 2 + np.imag(self._data) ** 2 states = np.arange(2 ** self._n) mstate = np.random.choice(states, size=1, p=probs)[0] return f'{mstate:>0{self._n}b}' 

次のいずれかを遞択する確率の確率を生成したす 2 ^ n 状態を状態化し、 np.random.choiceを䜿甚しおランダムに遞択したす。 残っおいるのは、察応するパディングれロの数を持぀バむナリ文字列を返すこずだけです。 明らかに、基本的な状態の堎合、答えは垞にこの状態自䜓ず同じで等しくなりたす。 チェック

 >>> QRegister(1, '0').measure() '0' >>> QRegister(2, '10').measure() '10' >>> QRegister(8, '01001101').measure() '01001101' 

ほずんどすべおが問題を解決する準備ができおいたす 量子レゞスタに圱響を䞎える方法を孊ぶこずだけが残っおいたす。 ナニタリ倉換によっおこれができるこずはすでにわかっおいたす。 量子情報孊では、ナニタリ倉換はゲヌトず呌ばれたす 量子ゲヌト 、 qgate 、 ゲヌト 。

ゲむツ


この蚘事では、私たちにずっお有甚な最も基本的なゲヌトのごく䞀郚を怜蚎したす。実際、もっずたくさんありたす。

シングル


怜蚎するのが最も簡単なのは、単䞀のゲヌトです。その行列は次のずおりです。

I = \begin{bmatrix}
    1 & 0\\
    0 & 1
\end{bmatrix}.

圱響するキュヌビットは倉曎したせん。

I \left| 0 \right\rangle = \left| 0 \right\rangle,\; I \left| 1 \right\rangle = \left| 1 \right\rangle, \; I \left| \psi \right\rangle = \left| \psi \right\rangle,

しかし、それは圹に立たないず考えないでください-私たちはそれを必芁ずしたす、そしお耇数回。

ゲヌトアダマヌル


H = \frac{1}{\sqrt{2}}
\begin{bmatrix}
1 & 1\\
1 & -1
\end{bmatrix}

マトリックスがナニタリであるこずを確認するこずは難しくありたせん。

H H^\dagger = \frac{1}{\sqrt{2}}
\begin{bmatrix}
1 & 1\\
1 & -1
\end{bmatrix} \cdot \frac{1}{\sqrt{2}}
\begin{bmatrix}
1 & 1\\
1 & -1
\end{bmatrix} = \frac{1}{2} \begin{bmatrix}
2 & 0\\
0 & 2
\end{bmatrix} = I.

基本的なキュヌビットに察するアダマヌルゲヌトの動䜜を考えたす。

H \left| 0 \right\rangle = \frac{1}{\sqrt{2}}
\begin{bmatrix}
1 & 1\\
1 & -1
\end{bmatrix}
\begin{bmatrix}
1\\
0
\end{bmatrix} = \frac{1}{\sqrt{2}}
\begin{bmatrix}
1\\
1
\end{bmatrix} = \frac{1}{\sqrt{2}} (\left| 0 \right\rangle + \left| 1 \right\rangle),

H \left| 1 \right\rangle = \frac{1}{\sqrt{2}}
\begin{bmatrix}
1 & 1\\
1 & -1
\end{bmatrix}
\begin{bmatrix}
0\\
1
\end{bmatrix} = \frac{1}{\sqrt{2}}
\begin{bmatrix}
1\\
-1
\end{bmatrix} = \frac{1}{\sqrt{2}} (\left| 0 \right\rangle - \left| 1 \right\rangle).

たたは、䞀般的な圢匏[1]

H \left| x \right\rangle = \frac{1}{\sqrt{2}} \sum_{y \in \lbrace 0,1 \rbrace} (-1)^{x \cdot y} \left| y \right\rangle.

ご芧のように、アダマヌルゲヌトは基本的な状態を同等の確率に倉換したす。等しい確率で枬定するず、任意の結果を埗るこずができたす。

ゲむツパりリ


Wolfgang Pauliによっお導入された行列が察応する3぀の重芁なゲヌト

X =
\begin{bmatrix}
0 & 1\\
1 & 0
\end{bmatrix},\;
Y =
\begin{bmatrix}
0 & -i\\
i & 0
\end{bmatrix},\;
Z =
\begin{bmatrix}
1 & 0\\
0 & -1
\end{bmatrix}.

ゲヌトはXNOT ゲヌトずも呌ばれたす。

X \left| 0 \right\rangle = \left| 1 \right\rangle, \; X \left| 1 \right\rangle = \left| 0 \right\rangle,

幟䜕孊的にその適甚は\ pi、軞を䞭心にラゞアンでブロッホ球をオンにするこずず同等ですx 。

X gate

ゲむツ Y そしお Zゲヌトに䌌おいXたすが、察応する軞を䞭心に回転する点が異なりたす。

ゲヌトを䜿甚する定理がありたす私は 、 X 、 Y そしお Z 任意の単䞀キュヌビットゲヌトを衚珟できたす。 䟋

H = \frac{1}{\sqrt{2}}\big(X + Z\big),

アダマヌルゲヌトは幟䜕孊的に\ pi軞を䞭心ずしたラゞアンによる回転を意味するこずがわかりたす\frac{x + z}{\sqrt{2}} 。

考慮されるすべおのゲヌトをPythonに実装したす。これを行うには、別のクラスを䜜成したす。

 class QGate: def __init__(self, matrix): self._data = np.array(matrix, dtype=np.complex64) assert len(self._data.shape) == 2 assert self._data.shape[0] == self._data.shape[1] self._n = np.log2(self._data.shape[0]) assert self._n.is_integer() self._n = int(self._n) 


そしお、クラスQRegisterにゲヌトを適甚する操䜜を远加したす。

 def apply(self, gate): assert isinstance(gate, QGate) assert self._n == gate._n self._data = gate._data @ self._data 


そしお、すでにわかっおいるゲヌトを䜜成したす。

 I = QGate([[1, 0], [0, 1]]) H = QGate(np.array([[1, 1], [1, -1]]) / np.sqrt(2)) X = QGate([[0, 1], [1, 0]]) Y = QGate([[0, -1j], [1j, 0]]) Z = QGate([[1, 0], [0, -1]]) 

むヌグルたたは尟



coin

簡単な量子アルゎリズムの䟋を芋おみたしょう。ランダムビットを生成したす-れロたたは1、ワシ、たたは尟。これは宇宙で最も正盎なコむンになりたす-結果は枬定された堎合にのみ知られ、偶然の性質は宇宙のたさしくその基瀎に瞫い蟌たれ、いかなる方法でもそれに圱響を䞎えるこずは䞍可胜です。

アルゎリズムには、1぀のキュヌビットのみが必芁です。最初の瞬間の状態にする\left| 0 \right\rangle 

\left| 0 \right\rangle = \begin{bmatrix}
1\\
0
\end{bmatrix}.

アダマヌルゲヌトを適甚しHお状態を取埗したす

H \left| 0 \right\rangle = \frac{1}{\sqrt{2}}
\begin{bmatrix}
1\\
1
\end{bmatrix}.

結果のシステムを枬定する堎合\Big\vert \frac{1}{\sqrt{2}} \Big\vert^2 = \frac{1}{2}、状態にある可胜性が高く\left| 0 \right\rangle、状態にある確率はたったく同じです\left| 1 \right\rangle 。結果を蚘録するためだけに残りたす。

叀兞的なコンピュヌタヌで゚ミュレヌトするアルゎリズムを確認したしょう。

 from quantum import QRegister, H def quantum_randbit(): a = QRegister(1, '0') a.apply(H) return a.measure() for i in range(32): print(quantum_randbit(), end='') print() 

結果

 ➜ python example-randbit.py 11110011101010111010011100000111 ➜ python example-randbit.py 01110000111100011000101010100011 ➜ python example-randbit.py 11111110011000001101010000100000 

䞊蚘のアルゎリズム党䜓は、1組の匏で蚘述できたす。

\left| q_0 \right\rangle = \left| 0 \right\rangle\\
\left| q_1 \right\rangle = H \left| q_0 \right\rangle\\
r = measure(\left| q_1 \right\rangle)

ただし、このようなレコヌドを扱うのはあたり䟿利ではありたせん。リスト構造叀兞的なアルゎリズムに適した䞀連のアクションは、量子の堎合には適甚できたせん。ここでは、サむクルも条件もなく、 。したがっお、量子回路は、量子コンピュヌタヌ科孊のアルゎリズムを蚘述するために広く䜿甚されおいたす。䞊蚘のアルゎリズムの図は次のずおりです。
simple

巊偎には、システムの初期状態が垞に衚瀺されたす。長方圢は、この状態で実行されたナニタリ倉換を瀺し、最埌に、枬定デバむスのアむコン枬定操䜜がすべおたたはいく぀かのキュヌビットにありたす。ドット、ブランチ、円の圢のいく぀かのマルチキュヌビット倉換には「構文糖」もありたす。それだけです。 正方圢を䞉角圢や円ず区別できれば、量子アルゎリズムのスキヌムを簡単に理解できたす。

holes

量子ビットの神ぞのより倚くの量子ビット


しかし、1぀のキュヌビットではなく、レゞスタ党䜓で䜜業するずどうなりたすかそしお、1぀のキュヌビットのみにゲヌトを適甚するずしたすかテン゜ル補品の特性が助けになりたす。挔算子のテン゜ル積の定矩によりA: V \to W そしお B: X \to Y 

(A \otimes B)(v \otimes x) = Av \otimes Bx,

どこで v \in V 、 Xのx \ 。 次に

(A \otimes I)(v \otimes x) = Av \otimes Ix = Av \otimes x,

぀たり、ゲヌトを1぀のキュヌビットに適甚し、それを2぀目のキュヌビットに接続しお量子レゞスタを取埗するか、挔算子をレゞスタ党䜓に適甚するかは問題ではありたせん。 A \otimes I 。同様Aに、2番目のキュヌビットにのみ挔算子を適甚する堎合は、レゞスタ党䜓に挔算子を適甚できたすI \otimes A 。 これは、そのようなスキヌムが次のこずを意味したす。

example0

これに完党に䌌おいたす

example1

䟿宜䞊、単䞀のゲヌトのみが省略されおいたす。

そしお、逆に、䞀床に耇数のキュヌビットにゲヌトを適甚したい堎合はどうでしょうか繰り返しになりたすが、テン゜ル積の定矩から、このためにこのゲヌトを適甚するこずができたす。必芁な回数だけテン゜ルを乗算したす。

Hv \otimes Hx = (H \otimes H) (v \otimes x) = H^{\otimes2} (v \otimes x).

A^{\otimes n} テン゜ルべき乗を意味したす。 ちなみに \left| \psi \right \rangle^{\otimes n} 簡朔にするために、 \left| \psi^n \right \rangle 。 このように

H^{\otimes n} \left| 0^n \right \rangle

意味nれロ量子ビットの量子レゞスタの各量子ビットにアダマヌル倉換を適甚したす。

にテン゜ル積ずべき乗を远加したすQGate。

 def __matmul__(self, other): return QGate(np.kron(self._data, other._data)) def __pow__(self, n, modulo=None): x = self._data.copy() for _ in range(n - 1): x = np.kron(x, self._data) return QGate(x) 

量子神蚗


各バむナリ関数は、f : \{0, 1\}^n \to \{0, 1\}唯䞀mnogokubitnyゲヌト寞法察応n + 1で瀺され、U_fそしお呌ばれる量子オラクルこの機胜のために。関数に関するすべおの情報が含たれおおり、fすべおの可胜な匕数で同時に呌び出すこずができたす。

なぜその次元n + 1 問題は、量子コンピュヌティングの別の基本的な特性によれば、情報は倱われず、時間的に可逆であるずいうこずです。叀兞的な蚈算モデルで関数を呌び出しおf(x, y) = x \oplus y結果を取埗した堎合、その関数がどの匕数で呌び出されたかを刀断できないため、時間内に蚈算を元に戻すこずはできたせん。

diagram0


これを回避する1぀の方法は、関数が呌び出された匕数を蚘憶するこずです。

diagram1


コンピュヌティングの量子モデルでも同じこずが起こりたすが、それがたさにその性質に組み蟌たれおいるだけです。完党な情報を保存せずに、単䞀の倉換を構築するこずは䞍可胜です。

量子オラクルはU_f、状態\left| x \right \rangle \left| y \right \rangleを状態に移行する単䞀倉換ずしお定矩されたす\left| x \right \rangle \left| y \oplus f(x) \right \rangle どこで nマヌクされた量子ビットはx、関数の匕数に関する情報を保持し、倉曎されないたたで、唯䞀の量子ビットyはその結果です。\oplus2を法ずする加算を

瀺したす。䟋を芋おみたしょう。1぀の匕数の関数に察しおOracleを構築したいずしたしょうf(x) = x 。したがっお、察応する挔算子U_fは2キュヌビットであり、次元の正方行列で蚘述できたす2^2 = 4 。 䞊蚘の芏則に埓っお、可胜なすべおの基本的なレゞスタヌの状態がどの状態になるかを調べたす。

\left| 00 \right \rangle  = \left| 0 \right \rangle \left| 0 \right \rangle \to \left| 0 \right \rangle \left| 0 \oplus f(0) \right \rangle = \left| 00 \right \rangle

\left| 01 \right \rangle  = \left| 0 \right \rangle \left| 1 \right \rangle \to \left| 0 \right \rangle \left| 0 \oplus f(1) \right \rangle = \left| 01 \right \rangle

\left| 10 \right \rangle  = \left| 1 \right \rangle \left| 0 \right \rangle \to \left| 1 \right \rangle \left| 1 \oplus f(0) \right \rangle = \left| 11 \right \rangle

\left| 11 \right \rangle  = \left| 1 \right \rangle \left| 1 \right \rangle \to \left| 1 \right \rangle \left| 1 \oplus f(1) \right \rangle = \left| 10 \right \rangle

ナニット行列挔算子は、私はi番目の行で行列を乗算するずき私はに、ベクトルのi番目のコンポヌネントを取埗しお同じ堎所に配眮するため、状態をそれ自䜓に取り蟌みたす。私はi番目の行の行列で、i番目以倖のすべおの芁玠jがれロで1である堎合j、結果のベクトルの私は代わりに、元のベクトルのth番目にあった芁玠を眮きたす。䞊蚘の䟋では、そのたたにする必芁がありたす{00}_2 = 0 そしお {01}_2 = 1 状態ベクトル芁玠ずスワップ {10}_2 = 3 そしお {11}_2 = 4 芁玠。 それから U_f 次のようになりたす。

U_f = \begin{bmatrix}
1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 0 & 1\\
0 & 0 & 1 & 0\\
\end{bmatrix}.

チェック

\begin{bmatrix}
1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 0 & 1\\
0 & 0 & 1 & 0\\
\end{bmatrix}\begin{bmatrix}
x_{00} \\
x_{01} \\
x_{10} \\
x_{11} \\
\end{bmatrix} = \begin{bmatrix}
x_{00} \\
x_{01} \\
x_{11} \\
x_{10} \\
\end{bmatrix}.

同様に、他の関数の堎合、任意の数の匕数。実装したす

 def U(f, n): m = n + 1 U = np.zeros((2**m, 2**m), dtype=np.complex64) def bin2int(xs): r = 0 for i, x in enumerate(reversed(xs)): r += x * 2 ** i return r for xs in product({0, 1}, repeat=m): x = xs[:~0] y = xs[~0] z = y ^ f(*x) instate = bin2int(xs) outstate = bin2int(list(x) + [z]) U[instate, outstate] = 1 return QGate(U) 

ただ残っおいる


さお、問題を解決するために必芁なすべおの基瀎を調べ、この゜リュヌションの怜蚌に圹立぀小さなpythonフレヌムワヌクを䜜成するこずさえできたした。1぀の関数呌び出しで関数が定数か平衡かを刀断できるアルゎリズムは、Deutsch-Jojiアルゎリズムず呌ばれたす。1぀の倉数の関数のアルゎリズムのバヌゞョンは、1985幎にDavid Deutschによっお開発され、1992幎にRichard Yogiの助けを借りおいく぀かの倉数のケヌスに䞀般化されたした。このアルゎリズムの図は次のずおりです。

dj

枬定結果が0の堎合、関数は䞀定です。それ以倖の堎合はバランスがずれおいたす。アルゎリズムをすぐに実装したす。

 from quantum import QRegister, H, I, U def is_constant(f, n): q = QRegister(n + 1, '0' * n + '1') q.apply(H ** (n + 1)) q.apply(U(f, n)) q.apply(H ** n @ I) if q.measure()[:~0] == '0' * n: return True else: return False 

そしおチェック

 def f1(x): return x def f2(x): return 1 def f3(x, y): return x ^ y def f4(x, y, z): return 0 print('f(x) = x is {}'.format('constant' if is_constant(f1, 1) else 'balansed')) print('f(x) = 1 is {}'.format('constant' if is_constant(f2, 1) else 'balansed')) print('f(x, y) = x ^ y is {}'.format('constant' if is_constant(f3, 2) else 'balansed')) print('f(x, y, z) = 0 is {}'.format('constant' if is_constant(f4, 3) else 'balansed')) 

結果

 f(x) = x is balansed f(x) = 1 is constant f(x, y) = x ^ y is balansed f(x, y, z) = 0 is constant 

動䜜したす。 いいねなぜ機胜するのですかアルゎリズムの正しさを蚌明するず同時に、その動䜜原理を芋おみたしょう。任意の基本状態の量子レゞスタヌ

に察するゲヌトの動䜜を考えおみたしょうH[1]

H^{\otimes n} \left|x_1, x_2, \ldots, x_n\right\rangle =

テン゜ル積の特性による

= H \left| x_1 \right\rangle \otimes H \left| x_2 \right\rangle \otimes \dots \otimes H \left| x_n \right\rangle =

個々のキュヌビットに適甚可胜

=\frac{1}{\sqrt{2^n}} \Big(\sum \limits_{y_1 \in \lbrace 0,1 \rbrace} (-1)^{x_1 \cdot y_1} \left| y_1 \right\rangle \otimes \sum \limits_{y_2 \in \lbrace 0,1 \rbrace} (-1)^{x_2 \cdot y_2} \left| y_2 \right\rangle \otimes \ldots \otimes \sum \limits_{y_n \in \lbrace 0,1 \rbrace} (-1)^{x_n \cdot y_n} \left| y_n \right\rangle \Big) =

テン゜ル積の笊号ずしお-1を取りたす

=\frac{1}{\sqrt{2^n}} \sum \limits_{(y_1, y_2, \ldots, y_n) \in \lbrace 0,1 \rbrace^n} (-1)^{x_1 \cdot y_1 \oplus x_2 \cdot y_2 \oplus \dots \oplus x_n \cdot y_n} \left| {y_1 y_2 \ldots y_n} \right\rangle =

コンパクト化のために再割り圓お

=\frac{1}{\sqrt{2^n}} \sum \limits_{y \in \lbrace 0,1 \rbrace^n} (-1)^{(x, y)} \left| y \right\rangle,

どこで \oplus-2を法ずする加算、および2を法ず(x, y)するスカラヌ積。

最初の時点で、システムは状態に\left| {q_0} \right\rangle \left| {q_1} \right\rangle = \left| 0 \right\rangle^{\otimes n} \left| 1 \right\rangleあり、アダマヌル倉換の圱響䞋で状態になりたす。

H^{\otimes n} \left| 0 \right\rangle^{\otimes n} (H \left| 1 \right\rangle) = \frac{1}{\sqrt{2^{n+1}}}\displaystyle\sum_{x=0}^{2^n} \left| x \right\rangle \big(\left| 0 \right\rangle - \left|1 \right\rangle \big).

オラクル U_f システムを状態にしたす

\frac{1}{\sqrt{2^{n+1}}}\displaystyle\sum_{x=0}^{2^n} \left| x \right\rangle \Big(\left| {f(x)} \right\rangle \oplus \big(\left| 0 \right\rangle - \ \left| 1 \right\rangle \big) \Big) = \frac{1}{\sqrt{2^{n+1}}}\displaystyle\sum_{x=0}^{2^n} \left| x \right\rangle \Big( \left| {f(x)} \right\rangle - \left| {f(x) \oplus 1} \right\rangle \Big).

固定匕数の堎合 x 機胜 f(x)倀0をずるず、前の係数\left| x \right\rangleは倉化したせん。そうでなければ、笊号が倉化したす。この芳察に基づいお、珟圚の状態を次のように曞き換えるこずができたす。

\frac{1}{\sqrt{2^{n+1}}}\displaystyle\sum_{x=0}^{2^n} (-1)^{f(x)} \left| x \right\rangle \big( \left| 0 \right\rangle - \left| 1 \right\rangle \big).

この段階で、未䜿甚の最埌のキュヌビットを砎棄し、最初のnキュヌビットにアダマヌル倉換を適甚しお状態を取埗したす

H^{\otimes n} \Big( \frac{1}{\sqrt{2^n}}\displaystyle\sum_{x=0}^{2^n} (-1)^{f(x)} \left| x \right\rangle \Big) = \frac{1}{2^n}\displaystyle\sum_{y=0}^{2^n} \Big( \displaystyle\sum_{x=0}^{2^n} (-1)^{f(x) + x \cdot y} \Big) \left| y \right\rangle.

そしおx \cdot 0^n = 0、結果を芳察する確率\left| {0^n} \right\rangleは

\frac{1}{2^n}\displaystyle\sum_{x=0}^{2^n} (-1)^{f(x)} = 
\begin{cases}
   1 &\text{,  $f(x)$ }\\
   0 &\text{,  $f(x)$ }
\end{cases}.

以䞊です。量子コンピュヌティングのかなり単玔化されたモデルを調べ、叀兞的なコンピュヌタヌで゚ミュレヌトするためのPythonミニフレヌムワヌクを䜜成し、最も単玔な「実際の」量子アルゎリズムの1぀であるDeutsch-Jojiアルゎリズムを分析したした。怠け者ではない人のための猫です。蚘事を読んでトピックを理解したした。

。

→コヌドはGitHubで入手できたす

読んでくれおありがずうたずえば、プロファむルを賌読し、コメントを残し、有甚なこずを行いたす。远加は倧歓迎です。

文孊



PShabrのフォヌミュラ-吞いたす。おかげで、ロヌマParpalakサヌビスupmath.meは、非垞に倚くの数匏を持぀ポストなしには䞍可胜だったでしょう。

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


All Articles