Susunan bit dalam Qiskit SDK
Versi pakej
Kod dalam halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau yang lebih baharu.
qiskit[all]~=2.3.0
Jika anda mempunyai set bit (atau qubit), anda biasanya akan melabel setiap bit . Perisian dan sumber yang berbeza perlu memilih cara susunan bit ini dalam memori komputer dan semasa dipaparkan pada skrin.
Konvensyen Qiskitβ
Berikut ialah cara Qiskit SDK menyusun bit dalam senario berbeza.
Circuit Quantumβ
Kelas QuantumCircuit menyimpan qubitnya dalam senarai
(QuantumCircuit.qubits). Indeks sesebuah qubit dalam senarai ini menentukan
label qubit tersebut.
# Added by doQumentation β required packages for this notebook
!pip install -q qiskit
from qiskit import QuantumCircuit, QuantumRegister
from qiskit.circuit import Qubit
qc = QuantumCircuit(2)
qc.qubits[0] # qubit "0"
Qubit(QuantumRegister(2, "q"), 0)
<Qubit register=(2, "q"), index=0>
Gambar rajah Circuitβ
Dalam gambar rajah Circuit, qubit ialah qubit paling atas, dan qubit ialah
qubit paling bawah. Anda boleh mengubah ini dengan argumen reverse_bits pada
QuantumCircuit.draw (lihat Ubah susunan dalam
Qiskit).
qc.x(1)
qc.draw()
q_0: βββββ
βββββ
q_1: β€ X β
βββββ
Integerβ
Apabila mentafsir bit sebagai nombor, bit ialah bit paling tidak bererti, dan
bit adalah yang paling bererti. Ini memudahkan pengekodan kerana setiap bit mempunyai
nilai (label ialah indeks qubit dalam
QuantumCircuit.qubits). Sebagai contoh, pelaksanaan Circuit berikut berakhir
dengan bit bernilai 0, dan bit bernilai 1. Ini ditafsirkan sebagai
integer perpuluhan 2 (diukur dengan kebarangkalian 1.0).
from qiskit.primitives import StatevectorSampler as Sampler
qc.measure_all()
job = Sampler().run([qc])
result = job.result()
print(f" > Counts: {result[0].data.meas.get_counts()}")
> Counts: {'10': 1024}
Rentetanβ
Apabila memaparkan atau mentafsir senarai bit (atau qubit) sebagai rentetan, bit ialah bit paling kiri, dan bit ialah bit paling kanan. Ini kerana kita biasanya menulis nombor dengan digit paling bererti di sebelah kiri, dan dalam Qiskit, bit ditafsirkan sebagai bit paling bererti.
Sebagai contoh, sel berikut mentakrifkan Statevector daripada rentetan
keadaan qubit tunggal. Dalam kes ini, qubit berada dalam keadaan , dan
qubit dalam keadaan .
from qiskit.quantum_info import Statevector
sv = Statevector.from_label("0+")
sv.probabilities_dict()
{np.str_('00'): np.float64(0.4999999999999999),
np.str_('01'): np.float64(0.4999999999999999)}
Ini kadangkala menimbulkan kekeliruan semasa mentafsir rentetan bit, kerana anda mungkin menjangka bit paling kiri sebagai bit , sedangkan ia biasanya mewakili bit .
Matriks Statevectorβ
Apabila mewakili statevector sebagai senarai nombor kompleks (amplitud), Qiskit menyusun amplitud ini supaya amplitud pada indeks mewakili keadaan asas pengkomputeran .
print(sv[1]) # amplitude of state |01>
print(sv[2]) # amplitude of state |10>
(0.7071067811865475+0j)
0j
Gateβ
Setiap Gate dalam Qiskit boleh mentafsir senarai qubit mengikut caranya tersendiri, tetapi
Gate berkawal biasanya mengikuti konvensyen (kawalan, sasaran).
Sebagai contoh, sel berikut menambah Gate X berkawal di mana qubit ialah kawalan dan qubit ialah sasaran.
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
qc.cx(0, 1)
qc.draw()
q_0: βββ ββ
βββ΄ββ
q_1: β€ X β
βββββ
Mengikuti semua konvensyen Qiskit yang disebutkan sebelum ini, Gate CX ini melakukan transformasi , jadi mempunyai matriks berikut.
Ubah susunan dalam Qiskitβ
Untuk melukis Circuit dengan qubit dalam susunan terbalik (iaitu, qubit di
bawah), gunakan argumen reverse_bits. Ini hanya mempengaruhi gambar rajah yang dijana
dan tidak mempengaruhi Circuit; Gate X masih bertindak pada qubit .
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
qc.x(0)
qc.draw(reverse_bits=True)
q_1: βββββ
βββββ
q_0: β€ X β
βββββ
Anda boleh menggunakan kaedah reverse_bits untuk mengembalikan Circuit baharu dengan
label qubit yang diterbalikkan (ini tidak mengubah Circuit asal).
qc.reverse_bits().draw()
q_0: βββββ
βββββ
q_1: β€ X β
βββββ
Perhatikan bahawa dalam Circuit baharu ini, Gate X bertindak pada qubit .
Langkah seterusnyaβ
- Lihat contoh penggunaan Circuit dalam tutorial Algoritma Grover.
- Terokai rujukan QuantumCircuit API.