Přeskočit na hlavní obsah

Řazení bitů v Qiskit SDK

Verze balíčků

Kód na této stránce byl vyvinut s použitím níže uvedených závislostí. Doporučujeme použít tyto nebo novější verze.

qiskit[all]~=2.5.2

Pokud máš sadu nn bitů (nebo qubitů), každý bit obvykle označíš číslem 0→n−10 \rightarrow n-1. Různé softwary a zdroje musí zvolit, jak tyto bity uspořádat jak v paměti počítače, tak při zobrazení na obrazovce.

Konvence Qisku​

Takto Qiskit SDK řadí bity v různých situacích.

Kvantové obvody​

Třída QuantumCircuit ukládá své qubity do seznamu (QuantumCircuit.qubits). Index qubitu v tomto seznamu určuje označení qubitu.

# 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>

Schémata Circuit​

Ve schématu Circuit je qubit 00 nejvýše a qubit n−1n-1 nejníže. Toto chování lze změnit argumentem reverse_bits metody QuantumCircuit.draw (viz Změna řazení v Qiskitu).

qc.x(1)
qc.draw()
q_0: ─────
┌───┐
q_1: ┤ X ├
└───┘

Celá čísla​

Při interpretaci bitů jako čísla je bit 00 nejméně významným bitem a bit n−1n-1 nejvýznamnějším. To je užitečné při programování, protože každý bit má hodnotu 2label2^\text{label} (label je index qubitu v QuantumCircuit.qubits). Například následující spuštění obvodu končí tak, že bit 00 je 0 a bit 11 je 1. To se interpretuje jako desítkové celé číslo 2 (naměřené s pravděpodobností 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}

Řetězce​

Při zobrazení nebo interpretaci seznamu bitů (nebo qubitů) jako řetězce je bit n−1n-1 zcela vlevo a bit 00 zcela vpravo. Je to proto, že čísla zapisujeme obvykle s nejvýznamnější cifrou vlevo, a v Qiskitu je bit n−1n-1 považován za nejvýznamnější.

Například následující buňka definuje Statevector z řetězce stavů jednoho qubitu. V tomto případě je qubit 00 ve stavu ∣+⟩|+\rangle a qubit 11 ve stavu ∣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)}

To někdy způsobuje zmatek při interpretaci řetězce bitů, protože bys mohl(a) očekávat, že krajní levý bit je bit 00, zatímco obvykle představuje bit n−1n-1.

Matice Statevector​

Při reprezentaci stavového vektoru jako seznam komplexních čísel (amplitud) Qiskit řadí tyto amplitudy tak, že amplituda na indexu xx reprezentuje výpočetní bázový stav ∣x⟩|x\rangle.

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

Gates​

Každý Gate v Qiskitu může interpretovat seznam qubitů po svém, ale řízené Gate obvykle dodržují konvenci (control, target).

Například následující buňka přidává řízený Gate X, kde qubit 00 je řídící a qubit 11 je cílový.

from qiskit import QuantumCircuit

qc = QuantumCircuit(2)
qc.cx(0, 1)
qc.draw()
q_0: ──■──
┌─┴─┐
q_1: ┤ X ├
└───┘

Na základě všech výše zmíněných konvencí v Qiskitu provede tento CX-Gate transformaci ∣01⟩↔∣11⟩|01\rangle \leftrightarrow |11\rangle, takže má následující matici.

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

Změna řazení v Qiskitu​

Chceš-li nakreslit Circuit s qubity v obráceném pořadí (tj. qubit 00 dole), použij argument reverse_bits. Toto ovlivní pouze vygenerované schéma a nijak nezmění samotný Circuit; Gate X stále působí na qubit 00.

from qiskit import QuantumCircuit

qc = QuantumCircuit(2)
qc.x(0)
qc.draw(reverse_bits=True)
q_1: ─────
┌───┐
q_0: ┤ X ├
└───┘

Metodou reverse_bits můžeš získat nový Circuit s obráceným označením qubitů (původní Circuit se nezmění).

qc.reverse_bits().draw()
q_0: ─────
┌───┐
q_1: ┤ X ├
└───┘

Všimni si, že v tomto novém Circuit působí Gate X na qubit 11.

Další kroky​

Doporučení