量子ビットは何を持つのか
量子ビット(キュービット)は、量子コンピュータが使う情報の単位です。ふつうのビットは0か1を持ちますが、量子ビットは0になりやすさと1になりやすさを、2つの数で持ちます。
このモジュールのラボは、シミュレータです。量子コンピュータではなく、ふつうのパソコンで規則を再現します。シミュレータは、速さの利点を見せることができません。
このレッスンのゴール
メモ
量子ビットの状態を2つの数で書き、そこから確率を求められる。
キーワード
| ことば | いみ |
|---|---|
| 量子ビット | 量子コンピュータが使う、情報の最小の単位 |
| 状態ベクトル | 状態を表す、数の並び |
| 振幅 | 結果への重みを表す数。負にも複素数にもなる |
| 確率 | その結果が出る見込み。振幅の大きさの2乗 |
| 正規化 | 確率の合計が1になるように、全体を割ること |
| シミュレータ | 別の機械のふるまいを、ふつうのパソコンで再現するもの |
学生が入力するセルは、このプレビューでは空白です。
状態は2つの振幅で書く
量子ビットの状態は、2つの数の組で書きます。1つ目が0の振幅、2つ目が1の振幅です。振幅は、その結果への重みを表す数です。
振幅は、負の数や複素数でもかまいません。Python は、複素数の虚数部を j を付けて書きます。2つの数の並びを状態ベクトルと呼びます。
例: いくつかの状態
| 状態 | 0の振幅 | 1の振幅 | 意味 |
|---|---|---|---|
| [1, 0] | 1 | 0 | 必ず0になる |
| [0, 1] | 0 | 1 | 必ず1になる |
| [0.6, 0.8] | 0.6 | 0.8 | 1のほうが出やすい |
| [0.707, 0.707] | 0.707 | 0.707 | 0と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 で求める
# 虚数部のある数の大きさです。j が虚数部を表します。
print(abs(3 + 4j))
print(abs(-5))
print(abs(0.6j))
# 4j を 12j に変えると、答えはいくつになりますか。
振幅から確率を出す
# 量子ビットの状態: 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乗の合計 |
|---|---|---|---|
| もとの状態 | 3 | 4 | 25 |
| 全体の大きさ | 5 | 5 | 5 の2乗 |
| 5 で割る | 0.6 | 0.8 | 1 |
| 確率 | 0.36 | 0.64 | 1 |
学生が入力するセルは、このプレビューでは空白です。
さらに挑戦: 3つの状態を調べる
次の3つの状態が、正規化されているかを、手で確かめてください。[0.5, 0.5]、[0.6, 0.8]、[1, 1]。
正規化されていないものは、全体の大きさで割って直し、確率を書き出します。1/sqrt(2) が出てきたら、約 0.707 と読みます。