Informatyka kwantowa wykorzystuje kluczowe zjawiska opisujące zachowanie cząstek w mikroskali, takie jak superpozycja, która umożliwia cząstce przebywanie jednocześnie w wielu możliwych stanach. Dopiero wykonanie pomiaru powoduje ujawnienie konkretnej wartości. Superpozycja jest jednym z elementów umożliwiających tworzenie bardzo złożonych stanów kwantowych, trudnych do obliczenia klasycznymi metodami.
Superpozycja to stan, w którym kubit znajduje się w kilku stanach jednocześnie. Jedną z bramek, która może utworzyć stan superpozycji jest bramka Hadamarda. Jej zapis macierzowy ma następującą postać:
Wartość odpowiada za normalizację amplitudy. Zauważmy, że bramka Hadamarda działając na każdy z dwóch stanów bazowych, doprowadza do sytuacji, w której prawdopodobieństwa zmierzenia stanów i są identyczne i równe 50%.
Poniżej przedstawiono przykładowy obwód z bramką Hadamarda, który będzie na wyjściu mierzył 0 i 1 z prawdopodobieństwem równym .
from qiskit import QuantumCircuit
qc = QuantumCircuit(1)
qc.h(0)
qc.measure_all()
qc.draw()
Code language: Python (python)
W praktyce, ponieważ kod jest uruchamiany na symulatorze komputera kwantowego, rzeczywisty rozkład może różnić się od teoretycznego. Ważnym parametrem jest w tym przypadku liczba uruchomień obwodu — parametr shots
. Zwiększenie go sprawia, że wyniki bliższe są teoretycznym przewidywaniom, ale wydłuża obliczenia, zwłaszcza dla bardziej złożonych obwodów.
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)