【Qiskit】3量子ビットをすべて重ね合わせにしてみよう!一斉測定の実験
1量子ビットでの重ね合わせ(Hゲート)の仕組みが分かったところで、次はスケールを大きくして「3つの量子ビット」を同時に重ね合わせ状態にする実験に挑戦してみましょう!
量子ビットを増やすと、一度に扱える状態の数が爆発的に増えるのが量子コンピュータのすごいところです。実際にコードを書いて、どのような結果になるか確かめてみます。
1. サンプルコード
3つの量子ビットと3つの古典ビットを準備し、すべての量子ビットにHゲートをかけてから一斉に測定するコードです。
from qiskit import QuantumCircuit
from qiskit.providers.basic_provider import BasicSimulator
# 3量子ビット、3古典ビットを準備
qc = QuantumCircuit(3, 3)
# すべての量子ビット(0, 1, 2番目)にHゲートを適用して「確率の波」にする
qc.h(0)
qc.h(1)
qc.h(2)
# それぞれの量子ビットを測定し、対応する古典ビットに保存
qc.measure([0, 1, 2], [0, 1, 2])
# 回路図をテキスト形式で出力
print("--- 回路図 ---")
print(qc.draw(output='text'))
# シミュレータで1000回実行
simulator = BasicSimulator()
result = simulator.run(qc, shots=1000).result()
counts = result.get_counts()
print("\n--- 実行結果 ---")
print(f"実行結果: {counts}")
2. 実行結果と回路図
上記のコードを実行すると、次のような回路図と結果が得られます。
--- 回路図 ---
┌───┐┌─┐
q_0: ┤ H ├┤ M├──────
├───┤└╥--┌-┐
q_1: ┤ H ├─╫--┤M├───
├───┤ ║ └╥┘┌-┐
q_2: ┤ H ├─╫──╫─┤M├
└───┘ ║ ║ └╥┘
c: 3/══════╩══╩══╩═
0 1 2
--- 実行結果 ---
実行結果: {'100': 123, '111': 125, '001': 132, '010': 131, '110': 133, '011': 125, '000': 96, '101': 135}
3. 解説:3ビットで「8通り」の重ね合わせが誕生!
実行結果を見ると、000 から 111 まで、3ビットで表現できる全8パターン(000, 001, 010, 011, 100, 101, 110, 111)が、それぞれ約125回ずつ(均等に約12.5%の確率で)出現していることが分かります。
- 独立した確率の波:それぞれの量子ビットにHゲートをかけることで、個別に「0か1か分からない波」になり、全体として 2^3 = 8 通りの組み合わせの波が同時に存在している状態になります。
- 測定による一瞬の収縮:測定(Measure)を行った瞬間、広がっていた8通りの確率の波がガツンと収縮し、どれか1つのパターン(例:
100や111など)にピシッと決まります。これを1000回繰り返したため、8つの結果が綺麗に分散して現れました。
量子ビットを増やすと、扱える状態の数が「 2^n 」に爆発的に増加!
これが、量子コンピュータが膨大なパターンを同時に扱えると言われる秘密の片鱗です。
これが、量子コンピュータが膨大なパターンを同時に扱えると言われる秘密の片鱗です。
まとめ
今回は3つの量子ビットをすべて重ね合わせにする実験を行いました。たった3ビット増やすだけで、一気に8通りものパラレルな世界を作り出すことができました。量子ビットを増やしていくと、さらに面白い現象(量子もつれなど)が顔を出してきます。Qiskitを使った実験、本当にワクワクしますね!
PR