Lumaktaw sa pangunahing nilalaman
Ang proyektong ito ay nasa beta. Nakakita ng bug? Mag-bukas ng GitHub issue. May tanong o ideya? Magtanong sa Discussions โ€” gusto naming marinig ang iyong feedback!
Gaano kaganda ang kalidad ng pagsasalin sa pahinang ito?

Bit-ordering sa Qiskit SDK

Mga bersyon ng package

Ang code sa pahinang ito ay ginawa gamit ang mga sumusunod na kinakailangan. Inirerekomenda naming gamitin ang mga bersyong ito o mas bago pa.

qiskit[all]~=2.5.2

Kung mayroon kang hanay ng nn bits (o qubits), karaniwang ina-label ang bawat bit mula 0โ†’nโˆ’10 \rightarrow n-1. Ang iba't ibang software at mapagkukunan ay kailangang pumili kung paano nila i-order ang mga bit na ito sa memory ng computer at kapag ipinapakita sa screen.

Mga convention ng Qiskitโ€‹

Narito kung paano ini-order ng Qiskit SDK ang mga bits sa iba't ibang sitwasyon.

Primitivesโ€‹

Bilang default, sinusunod ng Qiskit ang little-endian na convention ng bit ordering. Gayunpaman, ang default para sa BitArray ay big (endian), na nagdudulot ng ilang pagkakaiba sa output ng primitive, depende kung binabago ng primitive ang setting na ito. Halimbawa, ang mga primitive na Sampler at Estimator ng IBMยฎ Quantum Compute Service ay nagbabalik ng big-endian na resulta, ngunit little-endian na resulta ang ibinabalik ng Executor.

Mga Quantum circuitโ€‹

Ang klase ng QuantumCircuit ay nag-iimbak ng mga qubit nito sa isang listahan (QuantumCircuit.qubits). Ang index ng isang qubit sa listahang ito ang nagtatakda ng label ng qubit.

# Added by doQumentation โ€” installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit": "qiskit"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
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>

Mga circuit diagramโ€‹

Sa isang circuit diagram, ang qubit 00 ay ang pinakataas na qubit, at ang qubit nโˆ’1n-1 ang pinakababa. Maaari mong baguhin ito gamit ang argument na reverse_bits ng QuantumCircuit.draw (tingnan ang Baguhin ang order sa Qiskit).

qc.x(1)
qc.draw()
q_0: โ”€โ”€โ”€โ”€โ”€
โ”Œโ”€โ”€โ”€โ”
q_1: โ”ค X โ”œ
โ””โ”€โ”€โ”€โ”˜

Mga integerโ€‹

Kapag binibigyang-kahulugan ang mga bits bilang isang numero, ang bit 00 ang least significant bit (LSB), at ang bit nโˆ’1n-1 ang most significant bit (MSB). Ito ay nakakatulong kapag nagco-code dahil ang bawat bit ay may value na 2label2^\text{label} (ang label ay ang index ng qubit sa QuantumCircuit.qubits). Halimbawa, ang sumusunod na circuit execution ay nagtatapos nang ang bit 00 ay 0, at ang bit 11 ay 1. Ito ay binibigyang-kahulugan bilang decimal integer na 2 (nasukat na may probability na 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}

Mga stringโ€‹

Kapag nagpapakita o nagbibigyang-kahulugan ng listahan ng mga bits (o qubits) bilang isang string, ang bit nโˆ’1n-1 ang pinakakaliwa, at ang bit 00 ang pinakakanan. Ito ay dahil karaniwang sinusulat natin ang mga numero nang may pinaka-significant na digit sa kaliwa, at sa Qiskit, ang bit nโˆ’1n-1 ay itinuturing na pinaka-significant na bit.

Halimbawa, ang sumusunod na cell ay nagtatakda ng isang Statevector mula sa isang string ng mga single-qubit state. Sa kasong ito, ang qubit 00 ay nasa state na โˆฃ+โŸฉ|+\rangle, at ang qubit 11 ay nasa state na โˆฃ0โŸฉ|0\rangle.

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)}

Minsan nagdudulot ito ng kalituhan kapag binibigyang-kahulugan ang isang string ng mga bits, dahil maaari mong asahan na ang pinakakaliwa ay bit 00, samantalang karaniwang kinakatawan nito ang bit nโˆ’1n-1.

Mga Statevector matrixโ€‹

Kapag kinakatawan ang isang statevector bilang isang listahan ng mga kumplikadong numero (amplitudes), ino-order ng Qiskit ang mga amplitude na ito upang ang amplitude sa index xx ay kumakatawan sa computational basis state na โˆฃxโŸฉ|x\rangle.

print(sv[1]) # amplitude of state |01>
print(sv[2]) # amplitude of state |10>
(0.7071067811865475+0j)
0j

Mga gateโ€‹

Ang bawat gate sa Qiskit ay maaaring bigyan ng sariling kahulugan ang isang listahan ng mga qubit, ngunit ang mga controlled gate ay karaniwang sumusunod sa convention na (control, target).

Halimbawa, ang sumusunod na cell ay nagdaragdag ng isang controlled-X gate kung saan ang qubit 00 ang control at ang qubit 11 ang target.

from qiskit import QuantumCircuit

qc = QuantumCircuit(2)
qc.cx(0, 1)
qc.draw()
q_0: โ”€โ”€โ– โ”€โ”€
โ”Œโ”€โ”ดโ”€โ”
q_1: โ”ค X โ”œ
โ””โ”€โ”€โ”€โ”˜

Batay sa lahat ng naunang convention ng Qiskit, ang CX-gate na ito ay nagsasagawa ng transformation na โˆฃ01โŸฉโ†”โˆฃ11โŸฉ|01\rangle \leftrightarrow |11\rangle, kaya mayroon itong sumusunod na matrix.

(1000000100100100)\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ \end{pmatrix}

Baguhin ang order sa Qiskitโ€‹

Para iguhit ang isang circuit nang may mga qubit sa baligtad na order (ibig sabihin, ang qubit 00 sa ibaba), gamitin ang argument na reverse_bits. Nakakaapekto lamang ito sa nabuong diagram at hindi nakakaapekto sa circuit; ang X-gate ay gumagana pa rin sa qubit 00.

from qiskit import QuantumCircuit

qc = QuantumCircuit(2)
qc.x(0)
qc.draw(reverse_bits=True)
q_1: โ”€โ”€โ”€โ”€โ”€
โ”Œโ”€โ”€โ”€โ”
q_0: โ”ค X โ”œ
โ””โ”€โ”€โ”€โ”˜

Maaari mong gamitin ang method na reverse_bits para ibalik ang isang bagong circuit nang may mga label ng qubit na binaliktad (hindi nito binabago ang orihinal na circuit).

qc.reverse_bits().draw()
q_0: โ”€โ”€โ”€โ”€โ”€
โ”Œโ”€โ”€โ”€โ”
q_1: โ”ค X โ”œ
โ””โ”€โ”€โ”€โ”˜

Pansinin na sa bagong circuit na ito, ang X-gate ay gumagana sa qubit 11.

Mga susunod na hakbangโ€‹

Mga rekomendasyon