Lewati ke konten utama

Mengukur Qubit

Versi paket

Kode di halaman ini dikembangkan menggunakan persyaratan berikut. Kami menyarankan untuk menggunakan versi ini atau yang lebih baru.

qiskit[all]~=2.3.0
qiskit-ibm-runtime~=0.43.1

Untuk mendapatkan informasi tentang keadaan sebuah Qubit, kamu bisa mengukurnya ke sebuah classical bit. Di Qiskit, pengukuran dilakukan dalam basis komputasional, yaitu basis Pauli-ZZ satu-Qubit. Oleh karena itu, pengukuran menghasilkan 0 atau 1, tergantung pada tumpang tindih dengan eigenstate Pauli-ZZ 0|0\rangle dan 1|1\rangle:

qmeasure{0(outcome+1),with probability p0=q02,1(outcome1),with probability p1=q12.|q\rangle \xrightarrow{measure}\begin{cases} 0 (\text{outcome}+1), \text{with probability } p_0=|\langle q|0\rangle|^{2}\text{,} \\ 1 (\text{outcome}-1), \text{with probability } p_1=|\langle q|1\rangle|^{2}\text{.} \end{cases}

Pengukuran di tengah Circuit

Pengukuran di tengah Circuit adalah komponen utama dari dynamic circuits. Sebelum qiskit-ibm-runtime v0.43.0, measure adalah satu-satunya instruksi pengukuran di Qiskit. Namun, pengukuran di tengah Circuit punya persyaratan tuning yang berbeda dari pengukuran terminal (pengukuran yang terjadi di akhir Circuit). Misalnya, kamu perlu mempertimbangkan durasi instruksi saat menyetel pengukuran di tengah Circuit karena instruksi yang lebih lama menghasilkan Circuit yang lebih berisik. Kamu tidak perlu mempertimbangkan durasi instruksi untuk pengukuran terminal karena tidak ada instruksi setelah pengukuran terminal.

Di qiskit-ibm-runtime v0.43.0, instruksi MidCircuitMeasure diperkenalkan. Seperti namanya, ini adalah instruksi pengukuran baru yang dioptimalkan untuk pengukuran di tengah Circuit pada QPU IBM®.

catatan

Instruksi MidCircuitMeasure dipetakan ke instruksi measure_2 yang dilaporkan di supported_instructions Backend. Namun, measure_2 tidak didukung di semua Backend. Gunakan service.backends(filters=lambda b: "measure_2" in b.supported_instructions) untuk menemukan Backend yang mendukungnya. Pengukuran baru mungkin ditambahkan di masa mendatang, tapi ini tidak dijamin.

Menerapkan pengukuran ke Circuit

Ada beberapa cara untuk menerapkan pengukuran ke Circuit:

Metode QuantumCircuit.measure

Gunakan metode measure untuk mengukur sebuah QuantumCircuit.

Contoh:

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
from qiskit import QuantumCircuit

qc = QuantumCircuit(5, 5)
qc.x(0)
qc.x(1)
qc.x(4)
qc.measure(
range(5), range(5)
) # Measures all qubits into the corresponding clbit.
<qiskit.circuit.instructionset.InstructionSet at 0x7fdc54260490>
from qiskit import QuantumCircuit

qc = QuantumCircuit(3, 1)
qc.x([0, 2])
qc.measure(1, 0) # Measure qubit 1 into the classical bit 0.
<qiskit.circuit.instructionset.InstructionSet at 0x7fdc54260820>

Kelas Measure

Kelas Qiskit Measure mengukur Qubit yang ditentukan.

from qiskit.circuit import Measure

qc = QuantumCircuit(3, 1)
qc.x([0, 1])
qc.append(Measure(), [0], [0]) # measure qubit 0 into clbit 0
<qiskit.circuit.instructionset.InstructionSet at 0x7fdc54260df0>

Metode QuantumCircuit.measure_all

Untuk mengukur semua Qubit ke classical bits yang sesuai, gunakan metode measure_all. Secara default, metode ini menambahkan classical bits baru di sebuah ClassicalRegister untuk menyimpan hasil pengukuran ini.

from qiskit import QuantumCircuit

qc = QuantumCircuit(3, 1)
qc.x([0, 2])
qc.measure_all() # Measure all qubits.

Metode QuantumCircuit.measure_active

Untuk mengukur semua Qubit yang tidak idle, gunakan metode measure_active. Metode ini membuat ClassicalRegister baru dengan ukuran yang sama dengan jumlah Qubit non-idle yang diukur.

from qiskit import QuantumCircuit

qc = QuantumCircuit(3, 1)
qc.x([0, 2])
qc.measure_active() # Measure qubits that are not idle, that is, qubits 0 and 2.

Metode MidCircuitMeasure

Gunakan MidCircuitMeasure untuk menerapkan pengukuran di tengah Circuit (memerlukan qiskit-ibm-runtime v0.43.0 atau lebih baru). Meskipun kamu bisa menggunakan QuantumCircuit.measure untuk pengukuran di tengah Circuit, karena desainnya, MidCircuitMeasure biasanya pilihan yang lebih baik. Misalnya, ini menambahkan overhead yang lebih sedikit ke Circuit kamu dibandingkan saat menggunakan QuantumCircuit.measure.

from qiskit import QuantumCircuit
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime.circuit import MidCircuitMeasure
from qiskit.circuit import Measure

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

circ = QuantumCircuit(2, 2)
circ.x(0)
circ.append(MidCircuitMeasure(), [0], [0])
# circ.measure([0], [0])
# circ.measure_all()
print(circ.draw(cregbundle=False))
┌───┐┌────────────┐
q_0: ┤ X ├┤0 ├
└───┘│ │
q_1: ─────┤ Measure_2 ├
│ │
c_0: ═════╡0 ╞
└────────────┘
c_1: ═══════════════════
Catatan penting
  • Harus ada setidaknya satu classical register untuk menggunakan pengukuran.
  • Primitif Sampler memerlukan pengukuran Circuit. Kamu bisa menambahkan pengukuran Circuit dengan primitif Estimator, tapi pengukuran tersebut diabaikan.

Langkah berikutnya

Rekomendasi
Source: IBM Quantum docs — updated 1 Apr 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of 11 Mar 2026