Drugim zjawiskiem, które jest wykorzystywane w obliczeniach kwantowych, jest splątanie. Oznacza to, że stany kwantowe dwóch cząstek są powiązane ze sobą i zależne od siebie, a pomiar stanu jednej z nich natychmiast powoduje zmianę stanu drugiej. Ta właściwość cząstek pozwala tworzyć stany kwantowe składające się z większej liczby cząstek, dzięki czemu liczba jednocześnie obliczanych rozwiązań przyrasta w sposób wykładniczy.
Splątanie wiąże ze sobą co najmniej dwa kubity przez określone bramki wielokubitowe. Najprostszym przykładem takiej bramki może być kontrolowana bramka (zapisywana często jako ), w której jeden kubit kontroluje czy na drugim zostanie wykonana operacja negacji.
W prostym obwodzie zaprezentowanym poniżej bramka splątuje ze sobą dwa kubity. Na wyjściu mogą się pojawić tylko dwa możliwe stany: lub , ponieważ mimo probabilistycznego charakteru pomiaru stan pierwszego kubitu determinuje stan drugiego.
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
qc.draw('mpl')
Code language: Python (python)
from qiskit.primitives import StatevectorSampler
from qiskit.visualization import plot_histogram
sampler = StatevectorSampler()
job = sampler.run([qc], shots=1024)
result = job.result()[0]
counts = result.data.meas.get_counts()
plot_histogram(counts)
Code language: Python (python)