クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

干渉で間違いを打ち消す

このレッスンのあとで: ゲートの並びで、間違った結果の振幅が打ち消されることを示せる。

55分のレッスンコマンド1件量子シミュレーターラボ:JupyterLab で量子ビット、ゲート、測定

干渉は振幅が強め合い弱め合うこと

量子の干渉は、振幅が足し合わされて、強め合ったり打ち消し合ったりする現象です。量子アルゴリズムは、これを使って、間違った答えの振幅を小さくします。

コインを2回振れば半々のままですが、H ゲートを2回当てると、必ず0に戻ります。その理由を、振幅の足し算で説明します。

このレッスンのゴール

メモ

ゲートの並びで、間違った結果の振幅が打ち消されることを示せる。

キーワード

ことばいみ
干渉振幅が足し合わされて、大きさが変わること
強め合い同じ符号の振幅が足されて、大きくなること
弱め合い逆の符号の振幅が足されて、小さくなること
位相振幅の向きを表す、符号や複素数の部分
経路最初の状態から結果まで通る、道すじの1つ

学生が入力するセルは、このプレビューでは空白です。

結果までの道すじの振幅を足す

|0> に H を当てると [0.707, 0.707] になります。もう一度 H を当てるとき、0の振幅には、2つの道すじが届きます。

1つは0から来る道すじで、もう1つは1から来る道すじです。干渉は、この2つの振幅を足すことで決まります。

例: H を2回当てる

結果0から来る振幅1から来る振幅合計
00.707 × 0.707 = 0.50.707 × 0.707 = 0.51
10.707 × 0.707 = 0.50.707 × -0.707 = -0.50

学生が入力するセルは、このプレビューでは空白です。

ラボは H を2回と H Z H を試す

ラボの interfere.py は、|0> に H を2回当てた結果と、H、Z、H の順に当てた結果を表示します。

表示される言葉は英語です。H then H は H を2回当てたという意味で、H then Z then H は間に Z を挟んだ場合です。

H を2回と H Z H を試す

コマンド
docker exec jupyter python3 steps/interfere.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

符号が逆なら打ち消し合う

Z ゲートは、1の振幅の符号を逆にします。すると、最後の H で、0に届く2つの道すじは、逆の符号になります。

0.5 と -0.5 を足すと0です。0の振幅は消え、1の振幅だけが残ります。これが弱め合いです。

2つの道すじを足す

コード: python
import math

s = 1 / math.sqrt(2)

def final_zero(sign):
    # H の後は [s, s]。1の振幅に sign をかけて、もう一度 H を当てます。
    return (s + sign * s) / math.sqrt(2)

print(round(final_zero(1), 3))
print(round(final_zero(-1), 3))
# 最後の行を print(round(abs(final_zero(1j)) ** 2, 3)) に変えて実行してください。
# 0の確率は、いくつになりますか。

よくある間違い

注意

半々の状態にもう一度 H を当てれば、半々をもう一度混ぜるので、半々のままだと考えがちです。足すのは確率ではなく振幅です。符号しだいで、0にも1にも決まります。

位相が変わると結果が変わる

符号や複素数など、振幅の向きを表す部分を位相と呼びます。位相を変えるゲートは、確率を変えませんが、後の干渉を変えます。

間に挟むものを、符号 -1 でなく虚数の 1j にすると、0の確率は0.5になります。完全には強め合わず、打ち消し合いもしません。

間に挟む位相と0の確率

間に挟むもの0の振幅0の確率
何もしない(1)11
Z(-1)00
虚数(1j)(1 + 1j) ÷ 20.5

学生が入力するセルは、このプレビューでは空白です。

さらに挑戦: X を挟む

H、X、H の順に |0> へ当てると、どうなるでしょう。最後の状態を、手で道すじを足して予想します。

ノートブックで apply(H, apply(X, apply(H, zero(1), 0), 0), 0) を実行し、show の表示と比べてください。

このラボとソースについて: 量子シミュレーターラボ:JupyterLab で量子ビット、ゲート、測定

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。