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.
![Rendered by QuickLaTeX.com \[CNOT = \begin{bmatrix}1 & 0 & 0 & 0 \\0 & 1 & 0 & 0 \\0 & 0 & 0 & 1 \\0 & 0 & 1 & 0\end{bmatrix}\]](https://quantum.psnc.pl/wp-content/ql-cache/quicklatex.com-58d5681d5971a806943ab8a655c3d6da_l3.png)
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)