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

無料レッスン

量子ビットと状態ベクトル

このレッスンのあとで: 量子ビットの状態を2つの数で書き、そこから確率を求められる。

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

量子ビットは何を持つのか

量子ビット(キュービット)は、量子コンピュータが使う情報の単位です。ふつうのビットは0か1を持ちますが、量子ビットは0になりやすさと1になりやすさを、2つの数で持ちます。

このモジュールのラボは、シミュレータです。量子コンピュータではなく、ふつうのパソコンで規則を再現します。シミュレータは、速さの利点を見せることができません。

このレッスンのゴール

メモ

量子ビットの状態を2つの数で書き、そこから確率を求められる。

キーワード

ことばいみ
量子ビット量子コンピュータが使う、情報の最小の単位
状態ベクトル状態を表す、数の並び
振幅結果への重みを表す数。負にも複素数にもなる
確率その結果が出る見込み。振幅の大きさの2乗
正規化確率の合計が1になるように、全体を割ること
シミュレータ別の機械のふるまいを、ふつうのパソコンで再現するもの

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

状態は2つの振幅で書く

量子ビットの状態は、2つの数の組で書きます。1つ目が0の振幅、2つ目が1の振幅です。振幅は、その結果への重みを表す数です。

振幅は、負の数や複素数でもかまいません。Python は、複素数の虚数部を j を付けて書きます。2つの数の並びを状態ベクトルと呼びます。

例: いくつかの状態

状態0の振幅1の振幅意味
[1, 0]10必ず0になる
[0, 1]01必ず1になる
[0.6, 0.8]0.60.81のほうが出やすい
[0.707, 0.707]0.7070.7070と1が同じくらい

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

ラボのスクリプトは英語で表示する

ラボは、qsim.py という短いシミュレータを持ちます。次の実行ボタンは、量子ビットを1つ作って表示します。

画面に出る言葉は英語です。a qubit in |0> は、0の状態の量子ビットという意味です。chance of 0 and of 1 は、0の確率と1の確率です。

量子ビットを1つ作る

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

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

確率は振幅の大きさの2乗

結果が出る確率は、その振幅の大きさを2乗したものです。大きさは、Python の abs() で求めます。

振幅 0.6 の確率は 0.36、つまり36%です。0.6 そのものではありません。複素数でも負の数でも、大きさの2乗は0以上になります。

数の大きさを abs で求める

コード: python
# 虚数部のある数の大きさです。j が虚数部を表します。
print(abs(3 + 4j))
print(abs(-5))
print(abs(0.6j))
# 4j を 12j に変えると、答えはいくつになりますか。

振幅から確率を出す

コード: python
# 量子ビットの状態: 0の振幅と1の振幅の組です。
state = [0.6, 0.8]
chance_zero = abs(state[0]) ** 2
chance_one = abs(state[1]) ** 2
print("0の確率:", round(chance_zero, 2))
print("1の確率:", round(chance_one, 2))
print("合計:", round(chance_zero + chance_one, 2))
# 0.6 と 0.8 を 0.8 と 0.6 に変えて、もう一度実行してください。
# 0の確率と1の確率は、どう入れ替わりますか。

よくある間違い

注意

振幅をそのまま確率だと考えがちです。0.6 の振幅は60%ではありません。大きさを2乗した 0.36、つまり36%です。確率を出すときは、いつも2乗します。

確率の合計は必ず1になる

どれかの結果は必ず出るので、確率の合計は1です。この約束を守る状態を、正規化されているといいます。

[3, 4] は、2乗の合計が25なので、正規化されていません。大きさ5で割ると [0.6, 0.8] になり、合計は1になります。

例: [3, 4] を正規化する

手順0の振幅1の振幅2乗の合計
もとの状態3425
全体の大きさ555 の2乗
5 で割る0.60.81
確率0.360.641

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

さらに挑戦: 3つの状態を調べる

次の3つの状態が、正規化されているかを、手で確かめてください。[0.5, 0.5]、[0.6, 0.8]、[1, 1]。

正規化されていないものは、全体の大きさで割って直し、確率を書き出します。1/sqrt(2) が出てきたら、約 0.707 と読みます。

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

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