Langkau ke kandungan utama

Ukur qubit

Versi pakej

Kod dalam halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau lebih baru.

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

Untuk mendapatkan maklumat tentang keadaan qubit, anda boleh mengukurnya ke dalam bit klasik. Dalam Qiskit, pengukuran dilakukan dalam asas pengiraan, iaitu asas Pauli-ZZ satu-qubit. Oleh itu, pengukuran menghasilkan 0 atau 1, bergantung pada pertindihan 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 pertengahan Circuit

Pengukuran pertengahan Circuit adalah komponen utama Circuit dinamik. Sebelum qiskit-ibm-runtime v0.43.0, measure adalah satu-satunya arahan pengukuran dalam Qiskit. Walau bagaimanapun, pengukuran pertengahan Circuit mempunyai keperluan penalaan yang berbeza berbanding pengukuran terminal (pengukuran yang berlaku di penghujung Circuit). Sebagai contoh, anda perlu mempertimbangkan tempoh arahan semasa menala pengukuran pertengahan Circuit kerana arahan yang lebih panjang menghasilkan Circuit yang lebih berhalangan. Anda tidak perlu mempertimbangkan tempoh arahan untuk pengukuran terminal kerana tiada arahan selepas pengukuran terminal.

Dalam qiskit-ibm-runtime v0.43.0, arahan MidCircuitMeasure telah diperkenalkan. Seperti namanya, ia adalah arahan pengukuran baru yang dioptimumkan untuk pertengahan Circuit pada QPU IBM®.

nota

Arahan MidCircuitMeasure dipetakan ke arahan measure_2 yang dilaporkan dalam supported_instructions Backend. Walau bagaimanapun, measure_2 tidak disokong pada semua Backend. Gunakan service.backends(filters=lambda b: "measure_2" in b.supported_instructions) untuk mencari Backend yang menyokongnya. Pengukuran baru mungkin ditambah pada masa hadapan, tetapi ini tidak dijamin.

Gunakan pengukuran pada Circuit

Terdapat beberapa cara untuk menerapkan pengukuran pada Circuit:

Kaedah QuantumCircuit.measure

Gunakan kaedah measure untuk mengukur 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 Measure Qiskit mengukur qubit yang dinyatakan.

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>

Kaedah QuantumCircuit.measure_all

Untuk mengukur semua qubit ke dalam bit klasik yang sepadan, gunakan kaedah measure_all. Secara lalai, kaedah ini menambah bit klasik baru dalam ClassicalRegister untuk menyimpan pengukuran ini.

from qiskit import QuantumCircuit

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

Kaedah QuantumCircuit.measure_active

Untuk mengukur semua qubit yang tidak melahu, gunakan kaedah measure_active. Kaedah ini mencipta ClassicalRegister baru dengan saiz yang sama dengan bilangan qubit bukan-melahu 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.

Kaedah MidCircuitMeasure

Gunakan MidCircuitMeasure untuk menerapkan pengukuran pertengahan Circuit (memerlukan qiskit-ibm-runtime v0.43.0 atau lebih baru). Walaupun anda boleh menggunakan QuantumCircuit.measure untuk pengukuran pertengahan Circuit, disebabkan reka bentuknya, MidCircuitMeasure biasanya pilihan yang lebih baik. Sebagai contoh, ia menambah lebih sedikit overhead pada Circuit anda berbanding 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: ═══════════════════
Nota penting
  • Mesti ada sekurang-kurangnya satu daftar klasik untuk menggunakan pengukuran.
  • Primitif Sampler memerlukan pengukuran Circuit. Anda boleh menambah pengukuran Circuit dengan primitif Estimator, tetapi ia diabaikan.

Langkah seterusnya

Cadangan
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 Mac 2026