Langkau ke kandungan utama

Wang Kuantum — modul tentang superposisi dan interferens

Untuk modul Qiskit in Classrooms ini, pelajar perlu mempunyai persekitaran Python yang berfungsi dengan pakej-pakej berikut dipasang:

  • qiskit v2.1.0 atau lebih baharu
  • qiskit-ibm-runtime v0.40.1 atau lebih baharu
  • qiskit-aer v0.17.0 atau lebih baharu
  • qiskit.visualization
  • numpy
  • pylatexenc

Untuk menyediakan dan memasang pakej-pakej di atas, lihat panduan Pasang Qiskit. Untuk menjalankan kerja pada komputer kuantum sebenar, pelajar perlu menyediakan akaun dengan IBM Quantum® dengan mengikuti langkah-langkah dalam panduan Sediakan akaun IBM Cloud anda.

Modul ini telah diuji dan menggunakan 47 saat masa QPU. Ini adalah anggaran sahaja. Penggunaan sebenar anda mungkin berbeza.

# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime
# Uncomment and modify this line as needed to install dependencies
#!pip install 'qiskit>=2.1.0' 'qiskit-ibm-runtime>=0.40.1' 'qiskit-aer>=0.17.0' 'numpy' 'pylatexenc'

Tonton panduan modul oleh Dr. Katie McCormick di bawah, atau klik di sini untuk menonton di YouTube.


Pengenalan

Dalam modul ini, kita akan meneroka salah satu prinsip teras yang menjadi jantung teori kuantum: superposisi. Dalam pengalaman harian kita, objek sentiasa mempunyai ciri-ciri yang pasti. Lokasi, saiz, bentuk, warna mereka — segala-galanya tentang mereka — sudah ditentukan dan pasti, walaupun kita sebagai pemerhati belum lagi mengukurnya. Dalam dunia kuantum, ini tidak semestinya berlaku. Sebuah objek kuantum boleh berada dalam sesuatu yang dipanggil "superposisi" daripada beberapa keadaan yang dibenarkan secara klasik. Apabila superposisi diukur, ia akan secara rawak "runtuh" ke salah satu daripada keadaan-keadaan tersebut.

Dalam beberapa cara, mengukur keadaan superposisi adalah seperti melambung duit syiling: tidak ada cara untuk mengetahui terlebih dahulu ke mana ia akan jatuh. Ketakpastian asas ini adalah aspek mekanik kuantum yang tidak selesa, yang bahkan Einstein pun sukar menerimanya. Beliau terkenal dengan kata-katanya, "Tuhan tidak bermain dadu" tentang kerawakan ini. Tetapi, seperti yang akan kita lihat, Tuhan sebenarnya memang bermain dadu — dan melambung duit syiling.

Kita akan memikirkan lambungan duit syiling klasik sebagai analogi kepada pengukuran keadaan superposisi. Dan — dengan bermain dengan "duit syiling kuantum" menggunakan Qiskit dan sebuah qubit pada pemproses kuantum IBM® — kita akan segera menemui had analogi tersebut.

Duit syiling klasik

Mari mulakan dengan duit syiling klasik. Lambungkan duit syiling, dan ia akan jatuh sama ada muka ke atas atau muka ke bawah, dengan peluang 50 ~% bagi setiap satu. Walaupun secara teori, seseorang boleh mengira ke sisi mana duit syiling akan jatuh jika mereka mengetahui keadaan awal duit syiling dan daya/tork lambungan dengan tepat, namun secara praktikalnya, tidak ada cara untuk mengetahui terlebih dahulu ke sisi mana duit syiling akan jatuh. Itulah sebabnya kita menggunakan lambungan duit syiling sebagai contoh kanonial bagi keadaan probabilistik klasik, di mana hasilnya pada dasarnya rawak. Kita boleh menulis keadaan duit syiling sebelum ia jatuh untuk mencerminkan kebarangkalian 50/50 ini:

S(coin)=12up+12downS(coin) = \frac{1}{2}|up\rangle + \frac{1}{2}|down\rangle

Di sini, dua sebutan itu mewakili dua kemungkinan hasil lambungan, dan pekali mereka mewakili kebarangkalian bagi setiap hasil tersebut. Perlu diambil perhatian bahawa lazimnya, "|\rangle" (dikenali sebagai "ket") digunakan untuk mewakili keadaan kuantum, tetapi di sini, kita bercakap tentang keadaan probabilistik klasik. Lihat Pelajaran 1: Sistem Tunggal dalam kursus Asas Maklumat Kuantum untuk mengetahui lebih lanjut tentang cara kita mewakili maklumat klasik dan kuantum.

Jika kita melambung duit syiling 1000 kali dan merekodkan bilangan muka ke atas dan ke bawah, kita akan mendapat sesuatu seperti ini:

# import necessary packages:
import numpy as np
import matplotlib.pyplot as plt
import random

nflips = 1000
fliplist = [random.randint(0, 1) for f in range(nflips)]

# bar plots using get_gaussian_probs function
plt.hist(fliplist)
plt.show()

Output of the previous code cell

Duit syiling kuantum

Kita boleh mencipta keadaan probabilistik yang serupa menggunakan qubit pada komputer kuantum kita. Seperti lambungan duit syiling, sebuah qubit juga boleh diukur dalam dua keadaan yang mungkin: 0|0\rangle dan 1|1\rangle. Kita mencipta keadaan probabilistik "superposisi" dengan bermula dalam keadaan 0|0\rangle, kemudian menerapkan sesuatu yang dipanggil Hadamard Gate pada qubit. Ini meletakkannya dalam superposisi yang sama antara 0|0\rangle dan 1|1\rangle. Perlu diambil perhatian bahawa walaupun keadaan superposisi ini mungkin kelihatan dan berkelakuan seperti duit syiling pada pandangan pertama, kita akan segera mendapati bahawa ia jauh lebih daripada itu. Tujuan modul ini adalah untuk menunjukkan kepada anda bahawa superposisi tidak sama dengan lambungan duit syiling klasik.

Jadi, memandangkan qubit berada dalam superposisi yang sama antara 0 dan 1, apabila kita mengukur qubit, akan ada peluang 50% kita mengukur 0|0\rangle, dan peluang 50% kita mengukur 1|1\rangle. Kita menulis keadaan ini sedikit berbeza daripada kes probabilistik klasik, atas sebab-sebab yang akan menjadi jelas kemudian:

ψ=120+121|\psi\rangle = \frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle

Di sini, kebarangkalian mengukur setiap satu daripada dua keadaan tersebut tidak lagi sama dengan pekali, seperti yang berlaku dalam keadaan probabilistik klasik di atas. Sebaliknya, kuasa dua pekali itulah yang memberikan kita kebarangkalian, dan setiap pekali ini kini boleh menjadi kompleks, bermakna ia boleh mempunyai bahagian nyata dan khayalan.

Walaupun terdapat perbezaan-perbezaan ini, hasil pengukuran keadaan ini pada asasnya sama dengan melambung duit syiling.

from qiskit import QuantumCircuit

qcoin = QuantumCircuit(1)
qcoin.h(0)
qcoin.measure_all()

qcoin.draw("mpl")

Output of the previous code cell

Jadi, pada dasarnya, menerapkan Hadamard Gate adalah analogi kepada melambung duit syiling. Dan sama seperti kita melambung duit syiling 1000 kali untuk melihat statistik duit syiling mendarat muka ke atas atau ke bawah, kita boleh melakukan sesuatu yang serupa pada Qiskit dengan "duit syiling kuantum" kita. Kita boleh menggunakan primitif Qiskit yang dipanggil Sampler, yang akan mengulangi litar beberapa kali untuk mengambil sampel statistik keadaan yang terhasil.

Pertama, kita muatkan perkhidmatan dan primitif Qiskit Runtime, kemudian kita pilih Backend untuk menjalankan litar tersebut.

Terdapat kod di bawah untuk menyimpan kelayakan anda pada kali pertama digunakan. Pastikan anda memadamkan maklumat ini daripada buku nota setelah menyimpannya ke persekitaran anda, supaya kelayakan anda tidak terdedah secara tidak sengaja apabila anda berkongsi buku nota. Lihat Sediakan akaun IBM Cloud anda dan Inisialisasi perkhidmatan dalam persekitaran tidak dipercayai untuk panduan lanjut.

# Load the Qiskit Runtime service
from qiskit_ibm_runtime import QiskitRuntimeService

# Syntax for first saving your token. Delete these lines after saving your credentials.
# QiskitRuntimeService.save_account(channel='ibm_quantum_platform', instance = '<YOUR_IBM_INSTANCE_CRN>', token='<YOUR-API_KEY>', overwrite=True, set_as_default=True)
# service = QiskitRuntimeService(channel='ibm_quantum_platform')

# Load saved credentials
service = QiskitRuntimeService()
# Load the Runtime primitive and session
from qiskit_ibm_runtime import (
SamplerV2 as Sampler,
EstimatorV2 as Estimator,
)

# Use the least busy backend
backend = service.least_busy()
print(backend.name)
ibm_kingston

Jika anda tidak lagi mempunyai masa yang tersedia pada akaun anda, anda juga boleh memilih untuk menjalankannya pada simulator. Hanya nyahkomen kod dan jalankan sel di bawah untuk berbuat demikian:

## Use a local simulator

# from qiskit_aer import AerSimulator

## Generate a simulator that mimics the real quantum system

# backend_sim = AerSimulator.from_backend(backend)

## Import an estimator, this time from qiskit (we will import from Runtime for real hardware)

# from qiskit.primitives import BackendSamplerV2
# sampler_sim = BackendSamplerV2(backend = backend_sim)
# from qiskit.primitives import BackendEstimatorV2
# estimator_sim = BackendEstimatorV2(backend = backend_sim)
## Transpile
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

qc_isa = pm.run(qcoin)
## Execute

# On real hardware:
sampler = Sampler(mode=backend)
pubs = [qc_isa]
job = sampler.run(pubs, shots=1000)
res = job.result()

counts = res[0].data.meas.get_counts()

# or with Aer simulator with noise model from real backend
# job = sampler_sim.run([qc_isa])
# counts=job.result()[0].data.meas.get_counts()
## Analysis
from qiskit.visualization import plot_histogram

plot_histogram(counts)

Output of the previous code cell

Dengan 1000 sampel litar di atas, kita mempunyai sesuatu yang kelihatan pada dasarnya sama dengan histogram duit syiling klasik, dengan sedikit turun naik statistik.

Selain mengambil sampel statistik duit syiling kuantum, kita juga boleh menggunakan primitif Qiskit lain yang dipanggil Estimator untuk mengukur apa yang dikenali sebagai nilai jangkaan bagi sebuah boleh cerapan keadaan tersebut. Untuk menggambarkan apakah nilai jangkaan ini, mari gunakan duit syiling klasik sebagai contoh. Katakan anda menggunakan duit syiling untuk berjudi: setiap kali anda melambung duit syiling dan ia mendarat "muka ke atas," anda menang satu dolar. Tetapi setiap kali ia mendarat "muka ke bawah," anda kalah satu dolar. Jika anda ingin mengetahui berapa banyak wang yang anda jangkakan akan dapat setiap lambungan (nilai jangkaan bagi boleh cerapan "wang"), maka anda akan mengira:

E(money)=12(+1 dollar)+12(1 dollar)=0 dollarsE(money) = \frac{1}{2} (+ \text{1 dollar}) + \frac{1}{2} (- \text{1 dollar}) = \text{0 dollars}

Memandangkan anda sama berkemungkinan untuk menang satu dolar atau kalah satu dolar, nilai jangkaannya adalah $0.

Begitu juga, dengan keadaan kuantum, kita boleh mengira nilai jangkaan bagi boleh cerapan "Z", di mana Z adalah matriks Pauli dengan nilai +1 dan -1 yang dikaitkan dengan keadaan 0|0\rangle dan 1|1\rangle, masing-masing.

ψZψ=120Z0+121Z1=12(+1)+12(1)=0\langle \psi|Z|\psi \rangle = \frac{1}{2} \langle 0 | Z | 0 \rangle + \frac{1}{2} \langle 1 | Z | 1 \rangle = \frac{1}{2} (+1) + \frac{1}{2}(-1) = 0
from qiskit.quantum_info import Pauli

qcoin = QuantumCircuit(1)
qcoin.h(0)

# for Estimator, we do not apply the measurement to the circuit
<qiskit.circuit.instructionset.InstructionSet at 0x136df1ba0>
## Transpile
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

obs = Pauli("Z")

qc_isa = pm.run(qcoin)
obs_isa = obs.apply_layout(layout=qc_isa.layout)
## Execute

# On real hardware:
estimator = Estimator(mode=backend)
pubs = [(qc_isa, obs_isa)]
job = estimator.run([[qc_isa, obs_isa]])
res = job.result()

# On a simulator:
# job = estimator_sim.run([[qc_isa, obs_isa]])
# res=job.result()

print(res[0].data.evs)
-0.014799284701239441

Kita mendapat nilai jangkaan sebesar 0, seperti yang dijangkakan (hah). Ini adalah satu lagi cara untuk mengesahkan bahawa memang terdapat kebarangkalian yang sama untuk mengukur 0 dan 1, dan kelihatan berkelakuan seperti lambungan duit syiling.

Pada ketika ini, "duit syiling kuantum" kelihatan persis sama seperti duit syiling klasik. Tetapi dalam bahagian seterusnya, kita akan menjalankan beberapa eksperimen yang akan mendedahkan perbezaan asas antara keduanya.

Kuantum terdedah: eksperimen dalam tiga dimensi

Mari buat eksperimen pemikiran: Katakan anda melambung duit syiling ke udara, dan daripada membiarkannya jatuh ke tanah, anda mempunyai koordinasi untuk bertepuk tangan semasa ia melintas di antara tangan anda dan menjepit duit syiling di antara tapak tangan anda. Kini, bukannya duit syiling menjadi sama ada muka ke atas atau ke bawah, ia menjadi muka ke kiri atau ke kanan.

Uji kefahaman anda

Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaiannya.

Berapakah kebarangkalian bagi setiap hasil ini, muka ke kiri atau muka ke kanan?

Jawapan:

Kebarangkaliannya masih akan menjadi 50-50. Dimensi mana yang kita pilih untuk mengukur hasil lambungan duit syiling tidak sepatutnya mempengaruhinya.

Diharapkan anda menjawab bahawa kebarangkalian mendapati muka ke kiri atau ke kanan masih 50-50. Dimensi di mana lambungan duit syiling diukur tidak sepatutnya mempengaruhi kebarangkalian hasilnya.

Tetapi bagaimana pula keadaannya berbeza untuk duit syiling kuantum kita? Mari kita semak.

Kita boleh menjadikan superposisi kuantum kita dengan cara yang sama seperti yang kita lakukan sebelum ini, dengan Hadamard Gate. Untuk mengukur "muka ke kiri atau ke kanan" pada duit syiling kuantum kita, kita boleh melakukan apa yang kita lakukan dengan duit syiling klasik: ukur sepanjang paksi yang berbeza. Pengukuran standard kita pada komputer kuantum adalah sepanjang paksi menegak, sama seperti pengukuran biasa "muka ke atas atau ke bawah" pada duit syiling klasik. Tetapi kita juga boleh bertanya kepada duit syiling kuantum kita sama ada ia muka ke kiri atau ke kanan, atau secara setara, sama ada ia berada dalam keadaan +|+\rangle atau |-\rangle, yang menghala sepanjang paksi xx. Sampler hanya mengambil sampel dalam asas pengukuran Z, tetapi kita boleh menggunakan Estimator untuk memberikan kita nilai jangkaan bagi X. Nilai X adalah +1 dan -1 untuk keadaan +|+\rangle atau |-\rangle, masing-masing.

Uji kefahaman anda

Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaiannya.

Jika duit syiling kuantum berkelakuan seperti duit syiling klasik dalam kes ini, kita akan mempunyai kebarangkalian 50-50 untuk mengukur keadaan berada dalam +|+\rangle dan |-\rangle. Apakah nilai jangkaan X yang kita jangkakan Estimator akan kembalikan, jika ini adalah kasusnya?

Jawapan:

Apabila kita menerapkan X pada keadaan +|+\rangle, kita mendapat nilai +1 dan pada keadaan |-\rangle kita mendapat -1, jadi jika kita mempunyai taburan 50-50, kita akan mendapat nilai jangkaan sebesar 0.

# Step 1: map problem

qcoin_lr = QuantumCircuit(1)
qcoin_lr.h(0)

obs = Pauli("X")

# Step 2: Transpile the circuit

pm = generate_preset_pass_manager(target=target, optimization_level=3)
qc_isa = pm.run(qcoin_lr)
obs_isa = obs.apply_layout(layout=qc_isa.layout)

# Step 3: Run the circuit on a real quantum computer

estimator = Estimator(mode=backend)
pubs = [(qc_isa, obs_isa)]
job = estimator.run([[qc_isa, obs_isa]])
res = job.result()

# Run the job on the Aer simulator with noise model from real backend
# job = estimator_sim.run([[qc_isa,obs_isa]])
# res=job.result()

# Step 4: Return the result in classical form, and analyze.

print(res[0].data.evs)
0.9985207100591716

Nilai jangkaan X bagi keadaan ini adalah 1. Jadi, bukan kebarangkalian 50-50 untuk mengukur +|+\rangle dan |-\rangle.

Uji kefahaman anda

Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaiannya.

Apakah yang nilai jangkaan ini beritahu kita tentang keadaan ψ|\psi\rangle? Berapakah kebarangkalian mengukur +|+\rangle dan |-\rangle dalam asas X ini?

Jawapan:

Memandangkan nilai jangkaan adalah sama dengan nilai X untuk keadaan +|+\rangle, itu bermakna kita mempunyai kebarangkalian 100% untuk mengukur keadaan +|+\rangle apabila kita mengukur sepanjang X.

Apa yang berlaku di sini? Nampaknya duit syiling kuantum kita boleh mempunyai hasil rawak dan probabilistik sepanjang satu dimensi, tetapi hasil yang boleh diramal dengan sempurna sepanjang dimensi yang lain. Itu seperti melambung duit syiling dan menjamin bahawa setiap kali ia ditangkap dengan menjepit di antara dua tangan, ia akan berakhir dengan muka menghadap ke kanan.

Fasa kuantum

Perbezaan utama duit syiling kuantum adalah bahawa ia mempunyai satu kualiti lain yang tidak dimiliki oleh duit syiling klasik. Ingat bahawa dalam keadaan probabilistik klasik,

S(coin)=c1up+c2downS(coin) = c_1|up\rangle + c_2|down\rangle

setiap pekali hanyalah nombor nyata positif yang mewakili kebarangkalian mengukur keadaan tertentu. Dalam keadaan kuantum,

ψ=c10+c21|\psi\rangle = c_1 |0\rangle + c_2 |1\rangle

pekali-pekailinya adalah kompleks, jadi ia mengandungi bahagian nyata dan khayalan. Setiap pekali cic_i boleh dinyatakan sebagai vektor dua dimensi pada satah kompleks, dengan magnitud ci|c_i| dan sudut ϕi\phi_i yang dibuatnya dengan paksi nyata:

ci=cieiϕi.c_i = |c_i| e^{i \phi_i}.

Bulatan dalam satah kompleks. Keadaan kuantum diwakili sebagai anak panah berpanjang 1 yang boleh berputar untuk menghala ke mana-mana titik pada bulatan. Komponen mendatar anak panah adalah amplitud nyatanya, dan komponen menegak adalah amplitud kompleksnya.

Kita memanggil ϕi\phi_i sebagai fasa. Fasa memberitahu kita bagaimana dua sebutan dalam keadaan kuantum akan berinterferens, atau bagaimana ia akan menambah atau membatalkan seperti gelombang. Jika dua gelombang berada dalam fasa yang sama antara satu sama lain, supaya puncak dan lembah mereka selari, maka mereka akan bergabung untuk membentuk gelombang yang dua kali lebih tinggi. Kita panggil ini interferens membina. Jika mereka berada di luar fasa, bermakna puncak dari satu selari dengan lembah dari yang lain, dan sebaliknya, mereka berinterferens secara memusnah dan saling membatalkan sepenuhnya.

Seperti gelombang, keadaan kuantum juga boleh menambah secara membina atau memusnah. Ia mungkin lebih sukar untuk dilihat kerana selalunya, kita tidak bercakap tentang gelombang sebenar dalam ruang fizikal. Dalam kes qubit kita, interferens berlaku dalam ruang maklumat abstrak qubit. Perlu diambil perhatian juga bahawa kerana hanya fasa relatif antara dua gelombang yang penting untuk cara mereka akan berinterferens — iaitu, perbezaan fasa Δϕ=ϕ2ϕ1\Delta \phi = \phi_2 - \phi_1 bagi kedua-dua pekali — kita lazimnya menerapkan fasa global sebesar ϕ1-\phi_1 pada keseluruhan keadaan supaya c1c_1 adalah nyata sepenuhnya dan fasa relatif ditangkap sepenuhnya dalam c2c_2.

Untuk melihat bagaimana fasa boleh menyebabkan interferens dalam duit syiling kuantum kita, mari cuba menerapkan Hadamard dua kali dan bukannya sekali sahaja. Secara klasik, ini tidak akan masuk akal — jika menerapkan Hadamard setara dengan melambung duit syiling, maka anda tidak boleh melambung duit syiling yang sudah sedang dilambung. Tetapi mari lihat apa yang berlaku pada duit syiling kuantum:

qcoin_0 = QuantumCircuit(1)
qcoin_0.h(0)
qcoin_0.h(0)
qcoin_0.measure_all()

qcoin_0.draw("mpl")

Output of the previous code cell

Kini, sebelum kita menggunakan Sampler untuk mengukur keadaan yang terhasil, mari fikirkan bagaimana qubit ini akan diubah oleh setiap gate. Ia bermula, seperti biasa, dalam 0|0\rangle. Kemudian, Hadamard pertama mengubah keadaan kepada superposisi, seperti yang telah kita lihat:

H0=120+121.H|0\rangle = \frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle.

Dalam kes ini, kedua-dua pekali adalah nyata dan positif sepenuhnya, bermakna fasanya adalah ϕ=0\phi=0.

Hadamard kedua kemudiannya diterapkan kepada setiap bahagian keadaan superposisi secara berasingan. Kita sudah tahu bagaimana Hadamard mengubah keadaan 0|0\rangle. Tetapi bagaimana pula dengan 1|1\rangle?

H1=120121H|1\rangle = \frac{1}{\sqrt{2}} |0\rangle - \frac{1}{\sqrt{2}} |1\rangle

Ini adalah, sekali lagi, superposisi yang sama antara 0 dan 1, serupa dengan melambung duit syiling, tetapi pekali keadaan ini di hadapan 1|1\rangle mempunyai fasa sebesar ϕ=π\phi = \pi untuk memberikannya tanda negatif.

Uji kefahaman anda

Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaiannya.

Kira keadaan yang terhasil selepas menerapkan Hadamard kedua. Iaitu, kira: H(120+121)H(\frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle). Perlu diambil perhatian bahawa HH adalah teragih, jadi kita boleh menerapkannya kepada setiap sebutan secara berasingan.

Jawapan:

H(120+121)=12H0+12H1=12[(0+1)+(01)]=0H(\frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle) = \frac{1}{\sqrt{2}} H|0\rangle + \frac{1}{\sqrt{2}} H|1\rangle = \frac{1}{2} [(|0\rangle + |1\rangle) + (|0\rangle - |1\rangle)] = |0\rangle

Sekarang mari semak ramalan kita dengan Sampler.

## Transpile

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

qc_isa = pm.run(qcoin_0)

## Execute

# On real hardware:
sampler = Sampler(mode=backend)
pubs = [qc_isa]
job = sampler.run(pubs, shots=1000)
res = job.result()

counts = res[0].data.meas.get_counts()

# or with Aer simulator with noise model from real backend
# job = sampler_sim.run([qc_isa])
# counts=job.result()[0].data.meas.get_counts()

## Analyze
plot_histogram(counts)

Output of the previous code cell

Hadamard kedua telah membatalkan yang pertama, dan kita telah kembali ke keadaan 0 di mana kita bermula! Ini kerana Hadamard mengubah kedua-dua keadaan 0|0\rangle dan 1|1\rangle kepada keadaan yang serupa, tetapi dengan fasa yang bertentangan. Selepas Hadamard kedua, kita lihat bahawa sebutan 0|0\rangle berinterferens secara membina, tetapi sebutan 1|1\rangle berinterferens secara memusnah dan saling membatalkan.

Mari terokai lebih lanjut: kita boleh mengubah fasa menggunakan gate "PHASE". Jadi sekarang mari terapkan Hadamard untuk mencipta superposisi, terapkan peralihan fasa sebesar π\pi radian, kemudian terapkan Hadamard kedua:

qcoin_pi = QuantumCircuit(1)
qcoin_pi.h(0)
qcoin_pi.p(np.pi, 0)
qcoin_pi.h(0)
qcoin_pi.measure_all()

qcoin_pi.draw("mpl")

Output of the previous code cell

## Transpile

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

qc_isa = pm.run(qcoin_pi)

## Execute

# On real hardware:
sampler = Sampler(mode=backend)
pubs = [qc_isa]
job = sampler.run(pubs, shots=1000)
res = job.result()

counts = res[0].data.meas.get_counts()

# or with Aer simulator with noise model from real backend
# job = sampler_sim.run([qc_isa])
# counts=job.result()[0].data.meas.get_counts()

## Analyze
plot_histogram(counts)

Output of the previous code cell

Dan kini qubit diukur berada dalam keadaan 1 dan bukannya 0.

Jadi, walaupun dari beberapa eksperimen mudah ini sahaja, anda sudah boleh melihat perbezaan drastik yang boleh dibuat oleh fasa ini pada litar kuantum. Ia boleh menjadi halus dan sukar untuk dilihat pada mulanya. Dalam eksperimen pertama kita, di mana kita hanya melambung duit syiling kuantum dengan Hadamard Gate dan mengukur hasil lambungan, tiada apa yang mendedahkan kesan fasa tersebut. Hanya apabila kita menggali lebih dalam barulah kita menemui perbezaan yang boleh dibuat oleh fasa. Ia boleh menyebabkan gate kuantum yang sama mempunyai kesan yang benar-benar bertentangan pada qubit.

Cuba sendiri:

Edit sel kod di bawah untuk mengubah fasa supaya Hadamard kedua mencipta keadaan superposisi dengan kebarangkalian 25% dan 75% untuk mendapati keadaan dalam 0|0\rangle dan 1|1\rangle, masing-masing. Sahkan jawapan anda dengan matematik.

qcoin_phase = QuantumCircuit(1)
qcoin_phase.h(0)
# replace "x" below with a phase from 0 to 2*np.pi (this cell won't run if you leave x)
# qcoin_phase.rz(x, 0)
qcoin_phase.h(0)
qcoin_phase.measure_all()

## Transpile

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

qc_isa = pm.run(qcoin_phase)

## Execute

# On real hardware:
sampler = Sampler(mode=backend)
pubs = [qc_isa]
job = sampler.run(pubs, shots=1000)
res = job.result()

counts = res[0].data.meas.get_counts()

# or with Aer simulator with noise model from real backend
# job = sampler_sim.run([qc_isa])
# counts=job.result()[0].data.meas.get_counts()

## Analyze
plot_histogram(counts)

Output of the previous code cell

Analogi syiling lain (yang lebih baik) menggunakan Gate NOT\sqrt{\text{NOT}}

Sekarang kita dah tahu bahawa tindakan melambung syiling agak berbeza daripada mencipta keadaan superposisi. Adakah ada analogi syiling yang lebih baik yang boleh menangkap lebih banyak fenomena seperti superposisi? Ya. Memang ada.

Kita akan buat satu lagi eksperimen pemikiran dengan syiling. Bayangkan syiling terletak di atas meja, bahagian kepala menghadap atas. Untuk menjadikannya menghadap ke bawah, kita boleh membalikkannya sahaja. Ini bersamaan dengan Gate "NOT" dalam pengiraan.

Katakanlah kita nak bina satu operasi yang, jika dilakukan dua kali, bersamaan dengan Gate NOT. Iaitu, kita nak "punca dua NOT," atau NOT\sqrt{\text{NOT}}. Kita boleh buat ini dengan mempertimbangkan bagaimana Gate NOT dilaksanakan secara fizikal pada syiling: ia hanya putaran 180 darjah mengelilingi, contohnya, paksi x. Jadi, kalau kita putar syiling hanya 90 darjah mengelilingi paksi x, ia bersamaan dengan Gate NOT\sqrt{\text{NOT}}.

Bayangkan selepas menggunakan Gate NOT\sqrt{\text{NOT}}, kita nak tanya sama ada syiling menghadap atas atau bawah. Ia bukan mana-mana — ia berdiri di tepinya relatif kepada paksi menegak. Tapi sekarang, mari kita takrifkan semula "pengukuran" syiling kita sebagai pertama, meruntuhkan syiling di sepanjang paksi pengukuran (dengan menghempasnya dengan tangan supaya ia berbaring rata), dan kedua, memeriksa sama ada ia menghadap atas atau bawah.

Kalau kita lakukan "pengukuran" ini pada syiling yang berdiri di tepinya, maka syiling itu akan "runtuh" ke arah atas dan bawah dengan kebarangkalian yang sama. Sama seperti lambungan syiling, pada dasarnya, arah syiling jatuh boleh diramalkan berdasarkan keadaan awal syiling dan cara tepat daya tangan kita digunakan untuk "meruntuhkannya." Tapi dalam praktiknya, sukar untuk meramalkan sisi mana yang akan mendarat di atas, jadi ia pada asasnya rawak.

Kita sebenarnya boleh ukur syiling ini di sepanjang tiga paksi berbeza: xx, yy, dan zz. Kita lihat bahawa tepi syiling menghala di sepanjang xx dan zz, jadi pengukuran dalam arah tersebut memerlukan "keruntuhan" syiling — oleh itu, di sepanjang paksi tersebut, hasilnya akan rawak dengan kebarangkalian 50:50 untuk mengukur kepala atas dan bawah. Tapi di sepanjang paksi yy, ia sudah rata, dengan kepalanya menghadap arah -y. Kita boleh panggil itu "kepala ke hadapan."

Jadi, walaupun pengukuran x dan z menghasilkan keputusan rawak, pengukuran y akan sentiasa menghasilkan keputusan yang sama! Jika anda ingat eksperimen "lambungan syiling kuantum" dari bahagian sebelumnya, ini mengingatkan kita kepada cara syiling kuantum berkelakuan. Ia diukur sebagai 0 atau 1 dengan kebarangkalian 50/50 dalam arah z, tetapi sentiasa +|+\rangle dan tidak pernah |-\rangle di sepanjang X. Ini mencadangkan bahawa mungkin syiling yang duduk diam, berdiri di tepinya, adalah cara yang lebih baik untuk menggambarkan keadaan superposisi Qubit berbanding syiling yang berputar liar di udara.

Mari guna Qiskit untuk melihat sama ada "syiling kuantum" kita berkelakuan sama seperti syiling klasik apabila Gate NOT\sqrt{\text{NOT}} digunakan. Kita akan gunakan NOT\sqrt{\text{NOT}} pada Qubit yang bermula dalam 0|0\rangle, kemudian guna Estimator untuk memeriksa nilai jangkaan tiga boleh ukur, X, Y, dan Z.

qcoin_sx = QuantumCircuit(1)
qcoin_sx.sx(0)

qcoin_sx.draw("mpl")

Output of the previous code cell

obs1 = Pauli("X")
obs2 = Pauli("Y")
obs3 = Pauli("Z")

# Step 2: Transpile the circuit

pm = generate_preset_pass_manager(target=target, optimization_level=3)
qc_isa = pm.run(qcoin_sx)
obs1_isa = obs1.apply_layout(layout=qc_isa.layout)
obs2_isa = obs2.apply_layout(layout=qc_isa.layout)
obs3_isa = obs3.apply_layout(layout=qc_isa.layout)

# Step 3: Run the circuit on a real quantum computer

estimator = Estimator(mode=backend)
pubs = [(qc_isa, [[obs1_isa], [obs2_isa], [obs3_isa]])]
job = estimator.run(pubs)
res = job.result()

# Run the job on the Aer simulator with noise model from real backend
# pubs = [(qc_isa, [[obs1_isa], [obs2_isa], [obs3_isa]])]
# job = estimator_sim.run(pubs)
# res=job.result()

# Step 4: Return the result in classical form, and analyze.

print(res[0].data.evs)
[[-0.01234492]
[-1.00388865]
[ 0.00740695]]

Nilai jangkaan ialah 0, -1, dan 0 untuk X, Y dan Z, masing-masing.

Semak kefahaman anda

Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk melihat penyelesaiannya.

Berdasarkan nilai jangkaan, apakah kebarangkalian untuk mengukur syiling kuantum sebagai kepala atas/bawah (atau kiri/kanan atau ke hadapan/ke belakang) bagi setiap 3 paksi pengukuran?

Jawapan:

Terdapat kebarangkalian 50/50 untuk mengukur sama ada keadaan di sepanjang X dan Z, dan keadaan sentiasa diukur dalam arah -y di sepanjang Y.

Ini adalah keputusan yang sama yang kita dapat dengan eksperimen pemikiran kita yang menggunakan putaran 90 darjah "NOT\sqrt{\text{NOT}}" pada syiling klasik. Malah, kini terdapat analogi yang tepat antara syiling dan keadaan Qubit. Kita boleh menggambarkan keadaan Qubit sebagai vektor yang menghala ke arah kepala pada syiling, normal kepada permukaan syiling. Jadi, kepala atas, atau keadaan 0|0\rangle pada syiling kuantum, bersamaan dengan vektor yang menghala lurus ke atas; kepala bawah, atau 1|1\rangle, menghala lurus ke bawah. Mana-mana superposisi sama rata 0|0\rangle dan 1|1\rangle menghala secara mendatar. Fasa keadaan menentukan arah mendatar yang tepat — arah yang ia hala di sepanjang khatulistiwa adalah sama dengan arah pekali c2c_2 dalam satah kompleks.

Sekarang, setiap Gate yang kita lihat dalam buku nota ini boleh digambarkan sebagai putaran (atau siri putaran) syiling/vektor.

  • NOT: 180 darjah mengelilingi paksi x

  • NOT\sqrt{\text{NOT}}: 90 darjah mengelilingi paksi x

  • PHASE: putaran ϕ\phi mengelilingi paksi z

  • Hadamard: Yang ini agak lebih sukar. Pada mulanya kita menganalogikannya dengan melambung syiling, menyebabkan syiling berputar tanpa kawalan di udara. Tetapi Hadamard sebenarnya adalah putaran syiling yang terkawal dan deterministik, seperti Gate-gate lain. Hadamard dilakukan dengan memutar 90 darjah mengelilingi paksi y, kemudian 180 darjah mengelilingi paksi x.

Jadi, tiada apa yang rawak tentang keadaan superposisi kuantum atau mana-mana operasi standard yang kita lakukan pada Qubit. Setiap operasi adalah deterministik dan boleh diterbalikkan. Satu-satunya masa kerawakan memainkan peranan adalah apabila kita memutuskan untuk mengukur keadaan kuantum.

Keadaan Qubit sebagai vektor Bloch

Vektor yang menghala ke arah "kepala" syiling ini dikenali sebagai "vektor Bloch." Secara rasminya, keadaan Qubit tunggal yang sewenang-wenangnya (terpencil) boleh diwakili oleh vektor yang terletak pada permukaan sfera berjejari 1 dengan koordinat (r,θ,ϕ)(r, \theta, \phi). Ditulis dalam sebutan koordinat ini, keadaan Qubit adalah:

ψ=cosθ20+eiϕsinθ21|\psi\rangle = \cos{\frac{\theta}{2}} |0\rangle + e^{i \phi} \sin{\frac{\theta}{2}} |1\rangle

A diagram of the Bloch sphere. The quantum state is a vector in three dimensions. Since it can point in any direction, the quantum state can be specified using polar angles theta and phi to locate a point on a spherical surphace. Sekarang mari semak dengan Qiskit bagaimana vektor Bloch berubah apabila kita menggunakan pelbagai Gate pada Qubit kita bermula dari keadaan 0|0\rangle.

NOT

from qiskit.visualization import plot_bloch_multivector

qnot = QuantumCircuit(1)
qnot.x(0)

plot_bloch_multivector(qnot)

Output of the previous code cell

NOT\sqrt{\text{NOT}}

qsqrtnot = QuantumCircuit(1)
qsqrtnot.sx(0)

plot_bloch_multivector(qsqrtnot)

Output of the previous code cell

PHASE (ϕ=π\phi = \pi)

qphase = QuantumCircuit(1)
qphase.p(np.pi, 0)

plot_bloch_multivector(qphase)

Output of the previous code cell

Hadamard

qhadamard = QuantumCircuit(1)
qhadamard.h(0)

plot_bloch_multivector(qhadamard)

Output of the previous code cell

Kesimpulan — jadi apakah sebenarnya keadaan superposisi?

Kita memulakan modul ini dengan membandingkan kerawakan pengukuran keadaan superposisi kuantum dengan lambungan syiling. Kita menganalogikan "Gate Hadamard" yang menghasilkan superposisi kuantum dengan tindakan melambung syiling. Tetapi, melalui siri eksperimen, kita mempelajari bahawa terdapat perbezaan asas antara lambungan syiling klasik dan superposisi kuantum.

Kita belajar bahawa sebenarnya tiada apa yang "rawak" tentang Qubit dalam keadaan superposisi. Ia seperti syiling yang duduk diam dalam ruang tiga dimensi. Malah, syiling yang bebas untuk berputar dalam 3 dimensi adalah analogi yang sangat hampir dengan cara tertentu untuk menggambarkan keadaan kuantum Qubit, yang dipanggil vektor Bloch. Gate-gate kuantum memutar syiling/vektor Bloch ini secara deterministik dan boleh diterbalikkan. Hanya apabila kita mengukur Qubit barulah sebarang kerawakan diperkenalkan. Kita membandingkan proses pengukuran ini dengan menghempas syiling supaya ia berbaring rata dalam arah paksi pengukuran.

Sama ada keadaan kuantum berada dalam superposisi atau tidak sebenarnya bergantung kepada sudut pandang pemerhati. Seperti yang mungkin pernah anda temui sebelum ini, kita bebas untuk memilih sistem koordinat kita — xx, yy, dan zz boleh menghala di sepanjang mana-mana tiga arah berserenjang. Jadi, kalau kita ada superposisi 0 dan 1 dalam satu sistem koordinat, kita boleh takrifkan sistem koordinat baru — atau secara setara, "asas pengukuran" baru — di mana keadaan menghala semata-mata dalam arah +z+z, dan oleh itu bukan dalam keadaan superposisi. Jadi, apabila kita katakan Qubit berada dalam superposisi, kita mesti juga menjawab soalan, "superposisi apa?"

Mungkin anda meninggalkan modul ini dengan tanggapan bahawa kita baru sahaja menghilangkan semua misteri daripada mekanik kuantum. Lagipun, salah satu aspek yang kononnya "paling aneh," keadaan superposisi Qubit, sebenarnya semudah vektor tiga dimensi. Tapi ingat bahawa syiling masih hanyalah analogi, dan bahkan vektor Bloch hanyalah alat visualisasi untuk mengira kebarangkalian hasil pengukuran. Kita tidak boleh mengatakan apa yang sebenarnya "dilakukan" oleh keadaan kuantum sebelum diukur. Kerana, untuk menyemak itu memerlukan pengukuran!

Kita akan membincangkan dilema tentang apakah "sifat sebenar" keadaan kuantum ini, bagaimana fenomena kuantum keterikatan boleh membantu kita menjelaskan perkara ini, dalam modul Ketaksamaan Bell.

Soalan

Pengajar boleh meminta versi buku nota ini dengan kunci jawapan dan panduan tentang penempatan dalam kurikulum biasa dengan mengisi tinjauan ringkas ini tentang cara buku nota digunakan.

Konsep kritikal:

  • Walaupun pengukuran Qubit dalam superposisi adalah bersifat kebarangkalian, seperti melambung syiling, keadaan superposisi itu sendiri berkelakuan berbeza daripada syiling yang sedang berputar.
  • Perbezaan utama antara taburan kebarangkalian klasik dan superposisi ialah superposisi mempunyai koheren fasa, yang membolehkannya berinterferensi secara konstruktif atau destruktif.
  • Keadaan Qubit tunggal yang terpencil boleh digambarkan sebagai titik pada apa yang dipanggil "sfera Bloch," di mana amplitud relatif komponen 0|0\rangle dan 1|1\rangle menentukan sudut kutub θ\theta dan fasa relatif antara dua komponen menentukan sudut azimut ϕ\phi.
  • Semua Gate kuantum satu Qubit boleh dilihat sebagai putaran vektor pada sfera ini.

Soalan B/S:

  1. B/S Superposisi kuantum pada dasarnya sama dengan peristiwa kebarangkalian dalam fizik klasik, seperti melambung syiling.

  2. B/S Panjang vektor Bloch yang menggambarkan keadaan Qubit tunggal yang terpencil sentiasa 1.

  3. B/S Gate-gate kuantum satu Qubit tidak mengubah panjang vektor Bloch.

Soalan pelbagai pilihan:

  1. Pilih vektor Bloch yang betul yang mewakili keadaan Ψ=130+eiπ/4231|\Psi\rangle = \sqrt{\frac{1}{3}}|0\rangle + e^{i \pi / 4} \sqrt{\frac{2}{3}}|1\rangle :

Four Bloch spheres are shown. The vector points nearly along +x in option a, halfway between +x and +y and slightly below the xy plane in option b, between +x and -y, and slightly above the xy plane in option c, and along -x in option d.

  1. Sfera Bloch menerangkan: (pilih semua yang berkaitan)

    a. amplitud

    b. keterikatan dengan Qubit lain

    c. fasa

    d. warna

    e. kebarangkalian hasil pengukuran

Soalan perbincangan:

  1. Mengapa keadaan Qubit boleh digambarkan pada sfera Bloch, tetapi taburan kebarangkalian lambungan syiling tidak boleh?

  2. Mengapa syiling yang berputar di udara bukan analogi terbaik kepada keadaan superposisi kuantum? Aspek superposisi apa yang tidak ditangkap dalam analogi ini?

Masalah cabaran:

  1. Guna Qiskit untuk mencipta Circuit yang mengubah keadaan 0|0\rangle kepada keadaan 320+12ei5π61\frac{\sqrt{3}}{2}|0\rangle + \frac{1}{2}e^{i \frac{5\pi}{6}}|1\rangle
Source: IBM Quantum docs — updated 17 Apr 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of approx. 27 Mac 2026