Zum Hauptinhalt springen

Quantenmünzen — ein Modul über Superposition und Interferenz

Für dieses Qiskit-in-Classrooms-Modul benötigen Studierende eine funktionierende Python-Umgebung mit den folgenden installierten Paketen:

  • qiskit v2.1.0 oder neuer
  • qiskit-ibm-runtime v0.40.1 oder neuer
  • qiskit-aer v0.17.0 oder neuer
  • qiskit.visualization
  • numpy
  • pylatexenc

Um die oben genannten Pakete einzurichten und zu installieren, siehe die Anleitung Qiskit installieren. Um Jobs auf echten Quantencomputern auszuführen, müssen Studierende ein Konto bei IBM Quantum® einrichten, indem sie den Schritten in der Anleitung IBM Cloud-Konto einrichten folgen.

Dieses Modul wurde getestet und verbrauchte 47 Sekunden QPU-Zeit. Dies ist nur eine Schätzung. Dein tatsächlicher Verbrauch kann abweichen.

# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime
# Uncomment and modify this line as needed to install dependencies
#!pip install 'qiskit>=2.1.0' 'qiskit-ibm-runtime>=0.40.1' 'qiskit-aer>=0.17.0' 'numpy' 'pylatexenc'

Schau dir den Modul-Walkthrough von Dr. Katie McCormick unten an, oder klicke hier, um ihn auf YouTube anzusehen.


Einführung

In diesem Modul werden wir eines der Kernprinzipien im Herzen der Quantentheorie erforschen: die Superposition. In unserer alltäglichen Erfahrung haben Objekte immer bestimmte Eigenschaften. Ihr Ort, ihre Größe, Form, Farbe – alles an ihnen – ist festgelegt und sicher, auch wenn wir als Beobachter sie noch nicht gemessen haben. In der Quantenwelt ist das nicht unbedingt der Fall. Ein Quantenobjekt kann sich in einer sogenannten „Superposition" mehrerer klassisch erlaubter Zustände befinden. Wenn die Superposition gemessen wird, „kollabiert" sie zufällig in einen dieser Zustände.

In gewisser Weise ist das Messen eines Superpositionszustands wie das Werfen einer Münze: Es gibt keine Möglichkeit, im Voraus zu wissen, auf welcher Seite sie landen wird. Dieser fundamentale Indeterminismus ist ein unbequemer Aspekt der Quantenmechanik, mit dem selbst Einstein Schwierigkeiten hatte. Er sagte bekanntlich über diese Zufälligkeit: „Gott würfelt nicht." Aber wie wir sehen werden, würfelt Gott tatsächlich – und wirft auch Münzen.

Wir werden einen klassischen Münzwurf als Analogie zur Messung eines Superpositionszustands betrachten. Und – indem wir mit einer „Quantenmünze" mithilfe von Qiskit und einem Qubit auf einem IBM®-Quantenprozessor spielen – werden wir schnell die Grenzen dieser Analogie erkennen.

Klassische Münze

Beginnen wir mit einer klassischen Münze. Wirf eine Münze, und sie landet entweder mit Kopf oben oder Kopf unten, mit jeweils 50 ~% Wahrscheinlichkeit. Obwohl man prinzipiell berechnen könnte, auf welcher Seite die Münze landen wird, wenn man die genauen Anfangsbedingungen der Münze und die Kraft/das Drehmoment des Wurfs kennt, gibt es in der Praxis keine Möglichkeit, a priori zu wissen, auf welcher Seite die Münze landen wird. Deshalb verwenden wir den Münzwurf als kanonisches Beispiel für einen klassisch probabilistischen Zustand, bei dem das Ergebnis im Wesentlichen zufällig ist. Wir können den Zustand der Münze vor dem Landen so schreiben, dass diese 50/50-Wahrscheinlichkeit widergespiegelt wird:

S(coin)=12up+12downS(coin) = \frac{1}{2}|up\rangle + \frac{1}{2}|down\rangle

Hier repräsentieren die beiden Terme die zwei möglichen Ergebnisse des Wurfs, und ihre Koeffizienten repräsentieren die Wahrscheinlichkeiten jedes der Ergebnisse. Beachte, dass typischerweise „|\rangle" (bekannt als „Ket") verwendet wird, um einen Quantenzustand darzustellen, aber hier sprechen wir über einen klassisch probabilistischen Zustand. Siehe Lektion 1: Einzelne Systeme im Kurs „Basics of Quantum Information", um mehr darüber zu erfahren, wie wir klassische und Quanteninformation darstellen.

Wenn wir eine Münze 1000 Mal werfen und die Anzahl von Kopf oben und unten aufzeichnen würden, bekämen wir so etwas wie dies:

# import necessary packages:
import numpy as np
import matplotlib.pyplot as plt
import random

nflips = 1000
fliplist = [random.randint(0, 1) for f in range(nflips)]

# bar plots using get_gaussian_probs function
plt.hist(fliplist)
plt.show()

Output of the previous code cell

Quantenmünze

Wir können einen ähnlichen probabilistischen Zustand mit einem Qubit auf unserem Quantencomputer erzeugen. Wie beim Münzwurf kann auch ein Qubit in zwei möglichen Zuständen gemessen werden: 0|0\rangle und 1|1\rangle. Wir erzeugen den probabilistischen „Superpositions"-Zustand, indem wir im Zustand 0|0\rangle starten und dann ein sogenanntes Hadamard-Gate auf das Qubit anwenden. Dies versetzt es in eine gleichmäßige Superposition von 0|0\rangle und 1|1\rangle. Beachte, dass dieser Superpositionszustand auf den ersten Blick wie die Münze aussehen und sich so verhalten mag, wir aber bald sehen werden, dass viel mehr dahintersteckt. Der Sinn dieses Moduls ist es, dir zu zeigen, dass eine Superposition nicht dasselbe ist wie ein klassischer Münzwurf.

Da sich das Qubit also in einer gleichmäßigen Superposition von 0 und 1 befindet, gibt es beim Messen des Qubits eine 50%ige Chance, 0|0\rangle zu messen, und eine 50%ige Chance, 1|1\rangle zu messen. Wir schreiben diesen Zustand etwas anders als den klassisch probabilistischen Fall, aus Gründen, die später klar werden:

ψ=120+121|\psi\rangle = \frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle

Hier sind die Wahrscheinlichkeiten, jeden der beiden Zustände zu messen, nicht mehr gleich den Koeffizienten, wie es beim klassisch probabilistischen Zustand oben der Fall war. Stattdessen gibt uns das Quadrat der Koeffizienten die Wahrscheinlichkeiten, und jeder dieser Koeffizienten kann nun komplex sein, was bedeutet, dass er sowohl einen Real- als auch einen Imaginärteil haben kann.

Trotz dieser Unterschiede ist das Ergebnis der Messung dieses Zustands im Wesentlichen dasselbe wie ein Münzwurf.

from qiskit import QuantumCircuit

qcoin = QuantumCircuit(1)
qcoin.h(0)
qcoin.measure_all()

qcoin.draw("mpl")

Output of the previous code cell

Tatsächlich ist das Anwenden des Hadamard-Gates das Analogon zum Werfen einer Münze. Und genau wie wir die Münze 1000 Mal geworfen haben, um die Statistik des Landens auf Kopf oben oder unten zu betrachten, können wir etwas Ähnliches auf Qiskit mit unserer „Quantenmünze" tun. Wir können ein Qiskit-Primitiv namens Sampler verwenden, das einen Circuit mehrmals wiederholt, um die Statistik des resultierenden Zustands zu sampeln.

Zuerst laden wir den Qiskit Runtime Service und die Primitives, dann wählen wir ein Backend, auf dem wir den Circuit ausführen.

Es gibt unten Code zum Speichern deiner Anmeldedaten bei der ersten Nutzung. Stelle sicher, dass du diese Informationen nach dem Speichern in deiner Umgebung aus dem Notebook löschst, damit deine Anmeldedaten nicht versehentlich geteilt werden, wenn du das Notebook teilst. Siehe IBM Cloud-Konto einrichten und Initialize the service in an untrusted environment für weitere Anleitungen.

# Load the Qiskit Runtime service
from qiskit_ibm_runtime import QiskitRuntimeService

# Syntax for first saving your token. Delete these lines after saving your credentials.
# QiskitRuntimeService.save_account(channel='ibm_quantum_platform', instance = '<YOUR_IBM_INSTANCE_CRN>', token='<YOUR-API_KEY>', overwrite=True, set_as_default=True)
# service = QiskitRuntimeService(channel='ibm_quantum_platform')

# Load saved credentials
service = QiskitRuntimeService()
# Load the Runtime primitive and session
from qiskit_ibm_runtime import (
SamplerV2 as Sampler,
EstimatorV2 as Estimator,
)

# Use the least busy backend
backend = service.least_busy()
print(backend.name)
ibm_kingston

Wenn du keine Zeit mehr auf deinem Konto verfügbar hast, kannst du dies stattdessen auch auf einem Simulator ausführen. Entkommentiere einfach den Code und führe die Zelle unten aus:

## Use a local simulator

# from qiskit_aer import AerSimulator

## Generate a simulator that mimics the real quantum system

# backend_sim = AerSimulator.from_backend(backend)

## Import an estimator, this time from qiskit (we will import from Runtime for real hardware)

# from qiskit.primitives import BackendSamplerV2
# sampler_sim = BackendSamplerV2(backend = backend_sim)
# from qiskit.primitives import BackendEstimatorV2
# estimator_sim = BackendEstimatorV2(backend = backend_sim)
## Transpile
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

qc_isa = pm.run(qcoin)
## Execute

# On real hardware:
sampler = Sampler(mode=backend)
pubs = [qc_isa]
job = sampler.run(pubs, shots=1000)
res = job.result()

counts = res[0].data.meas.get_counts()

# or with Aer simulator with noise model from real backend
# job = sampler_sim.run([qc_isa])
# counts=job.result()[0].data.meas.get_counts()
## Analysis
from qiskit.visualization import plot_histogram

plot_histogram(counts)

Output of the previous code cell

Mit 1000 Stichproben des obigen Circuits haben wir etwas, das im Wesentlichen identisch mit dem Histogramm der klassischen Münze aussieht, bis auf statistische Schwankungen.

Zusätzlich zum Sampeln der Statistik der Quantenmünze können wir auch ein weiteres Qiskit-Primitiv namens Estimator verwenden, um den sogenannten Erwartungswert einer Observablen des Zustands zu messen. Um zu veranschaulichen, was dieser Erwartungswert ist, verwenden wir die klassische Münze als Beispiel. Angenommen, du verwendest die Münze zum Wetten: Jedes Mal, wenn du die Münze wirfst und sie mit „Kopf oben" landet, gewinnst du einen Dollar. Aber jedes Mal, wenn sie mit „Kopf unten" landet, verlierst du einen Dollar. Wenn du wissen willst, wie viel Geld du pro Wurf erwarten kannst (den Erwartungswert der Observablen „Geld"), dann berechnest du:

E(money)=12(+1 dollar)+12(1 dollar)=0 dollarsE(money) = \frac{1}{2} (+ \text{1 dollar}) + \frac{1}{2} (- \text{1 dollar}) = \text{0 dollars}

Da es gleich wahrscheinlich ist, einen Dollar zu gewinnen wie einen Dollar zu verlieren, ist der Erwartungswert $0.

Ähnlich können wir bei einem Quantenzustand den Erwartungswert der Observablen „Z" berechnen, wobei Z die Pauli-Matrix mit den Werten +1 und -1 ist, die den Zuständen 0|0\rangle bzw. 1|1\rangle zugeordnet sind.

ψZψ=120Z0+121Z1=12(+1)+12(1)=0\langle \psi|Z|\psi \rangle = \frac{1}{2} \langle 0 | Z | 0 \rangle + \frac{1}{2} \langle 1 | Z | 1 \rangle = \frac{1}{2} (+1) + \frac{1}{2}(-1) = 0
from qiskit.quantum_info import Pauli

qcoin = QuantumCircuit(1)
qcoin.h(0)

# for Estimator, we do not apply the measurement to the circuit
<qiskit.circuit.instructionset.InstructionSet at 0x136df1ba0>
## Transpile
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

obs = Pauli("Z")

qc_isa = pm.run(qcoin)
obs_isa = obs.apply_layout(layout=qc_isa.layout)
## Execute

# On real hardware:
estimator = Estimator(mode=backend)
pubs = [(qc_isa, obs_isa)]
job = estimator.run([[qc_isa, obs_isa]])
res = job.result()

# On a simulator:
# job = estimator_sim.run([[qc_isa, obs_isa]])
# res=job.result()

print(res[0].data.evs)
-0.014799284701239441

Wir erhalten einen Erwartungswert von 0, wie erwartet (hah). Dies ist eine weitere Möglichkeit zu bestätigen, dass tatsächlich eine gleiche Wahrscheinlichkeit besteht, 0 oder 1 zu messen, und sich wie ein Münzwurf verhält.

An diesem Punkt sieht die „Quantenmünze" genau wie die klassische Münze aus. Aber im nächsten Abschnitt werden wir einige Experimente durchführen, die die grundlegenden Unterschiede zwischen den beiden offenbaren.

Das Quantenhafte enthüllt: ein Experiment in drei Dimensionen

Machen wir ein Gedankenexperiment: Angenommen, du wirfst eine Münze in die Luft, und anstatt sie auf den Boden fallen zu lassen, hast du die Koordination, sie zwischen deinen Händen einzufangen und die Münze zwischen deinen Handflächen einzuklemmen. Jetzt ist die Münze nicht mehr Kopf oben oder unten, sondern Kopf links oder rechts.

Überprüfe dein Verständnis

Lies die Frage(n) unten, denke über deine Antwort nach und klicke dann auf das Dreieck, um die Lösung zu sehen.

Wie groß ist die Wahrscheinlichkeit für jedes dieser Ergebnisse, Kopf links oder Kopf rechts?

Antwort:

Die Wahrscheinlichkeit wird immer noch 50-50 betragen. Es sollte keine Rolle spielen, in welcher Dimension wir das Ergebnis des Münzwurfs messen.

Hoffentlich hast du geantwortet, dass die Wahrscheinlichkeit, Kopf links oder rechts zu finden, immer noch 50-50 ist. Die Dimension, entlang der der Münzwurf gemessen wird, sollte die Wahrscheinlichkeit der Ergebnisse nicht beeinflussen.

Aber wie würden die Dinge für unsere Quantenmünze anders aussehen? Lass uns nachprüfen.

Wir können unsere Quantensuperposition auf die gleiche Weise wie beim letzten Mal erzeugen, mit einem Hadamard-Gate. Um „Kopf links oder rechts" an unserer Quantenmünze zu messen, können wir das tun, was wir mit der klassischen Münze gemacht haben: entlang einer anderen Achse messen. Unsere Standardmessungen auf dem Quantencomputer erfolgen entlang der vertikalen Achse, genau wie die übliche „Kopf oben oder unten"-Messung der klassischen Münze. Aber wir können unsere Quantenmünze auch fragen, ob sie Kopf links oder rechts zeigt, oder äquivalent, ob sie sich in den Zuständen +|+\rangle oder |-\rangle befindet, die entlang der xx-Achse zeigen. Sampler sampelt nur in der Messbasis Z, aber wir können Estimator verwenden, um uns den Erwartungswert von X zu geben. Die Werte von X sind +1 und -1 für die Zustände +|+\rangle bzw. |-\rangle.

Überprüfe dein Verständnis

Lies die Frage unten, denke über deine Antwort nach und klicke dann auf das Dreieck, um die Lösung zu sehen.

Wenn sich die Quantenmünze in diesem Fall wie die klassische Münze verhalten würde, hätten wir eine 50-50-Wahrscheinlichkeit, den Zustand in +|+\rangle und |-\rangle zu messen. Welchen Erwartungswert von X würden wir erwarten, dass Estimator zurückgibt, wenn dies der Fall wäre?

Antwort:

Wenn wir X auf den Zustand +|+\rangle anwenden, erhalten wir den Wert +1 und für den Zustand |-\rangle erhalten wir -1, also würden wir bei einer 50-50-Verteilung einen Erwartungswert von 0 erhalten.

# Step 1: map problem

qcoin_lr = QuantumCircuit(1)
qcoin_lr.h(0)

obs = Pauli("X")

# Step 2: Transpile the circuit

pm = generate_preset_pass_manager(target=target, optimization_level=3)
qc_isa = pm.run(qcoin_lr)
obs_isa = obs.apply_layout(layout=qc_isa.layout)

# Step 3: Run the circuit on a real quantum computer

estimator = Estimator(mode=backend)
pubs = [(qc_isa, obs_isa)]
job = estimator.run([[qc_isa, obs_isa]])
res = job.result()

# Run the job on the Aer simulator with noise model from real backend
# job = estimator_sim.run([[qc_isa,obs_isa]])
# res=job.result()

# Step 4: Return the result in classical form, and analyze.

print(res[0].data.evs)
0.9985207100591716

Der Erwartungswert von X für diesen Zustand ist 1. Es gibt also keine 50-50-Wahrscheinlichkeit, +|+\rangle und |-\rangle zu messen.

Überprüfe dein Verständnis

Lies die Frage(n) unten, denke über deine Antwort nach und klicke dann auf das Dreieck, um die Lösung zu sehen.

Was sagt uns dieser Erwartungswert über den Zustand ψ|\psi\rangle? Wie groß sind die Wahrscheinlichkeiten, +|+\rangle und |-\rangle in dieser X-Basis zu messen?

Antwort:

Da der Erwartungswert gleich dem Wert von X für den Zustand +|+\rangle ist, bedeutet das, dass wir eine 100%ige Wahrscheinlichkeit haben, den Zustand +|+\rangle zu messen, wenn wir entlang X messen.

Was ist hier los? Es scheint, als könnte unsere Quantenmünze entlang einer Dimension zufällige, probabilistische Ergebnisse haben, aber entlang einer anderen perfekt vorhersagbare Ergebnisse. Das wäre so, als würde man eine Münze werfen und garantieren, dass jedes Mal, wenn sie zwischen zwei Händen aufgefangen wird, der Kopf nach rechts zeigt.

Die Quantenphase

Der entscheidende Unterschied der Quantenmünze ist, dass sie eine weitere Eigenschaft hat, die die klassische Münze nicht besitzt. Erinnere dich, dass in einem klassisch probabilistischen Zustand,

S(coin)=c1up+c2downS(coin) = c_1|up\rangle + c_2|down\rangle

jeder Koeffizient einfach eine reelle, positive Zahl ist, die die Wahrscheinlichkeit repräsentiert, einen bestimmten Zustand zu messen. In einem Quantenzustand,

ψ=c10+c21|\psi\rangle = c_1 |0\rangle + c_2 |1\rangle

sind die Koeffizienten komplex, sie enthalten also einen Real- und einen Imaginärteil. Jeder Koeffizient cic_i kann als zweidimensionaler Vektor in der komplexen Ebene ausgedrückt werden, mit dem Betrag ci|c_i| und dem Winkel ϕi\phi_i, den er mit der reellen Achse bildet:

ci=cieiϕi.c_i = |c_i| e^{i \phi_i}.

A circle in a complex plane. The quantum state is represented as an arrow of length 1 that can rotate to point to any point on the circle. The horizontal component of the arrow is its real amplitude, and the vertical is its complex amplitude.

Wir nennen ϕi\phi_i die Phase. Die Phase sagt uns, wie zwei Terme in einem Quantenzustand interferieren, also wie sie sich wie Wellen addieren oder auslöschen. Wenn zwei Wellen in Phase miteinander sind, sodass ihre Wellenberge und -täler übereinstimmen, dann kombinieren sie sich zu einer doppelt so hohen Welle. Wir nennen das konstruktive Interferenz. Wenn sie phasenverschoben sind, was bedeutet, dass ein Wellenberg der einen mit einem Wellental der anderen zusammenfällt und umgekehrt, interferieren sie destruktiv und löschen sich vollständig aus.

Wie Wellen können auch Quantenzustände konstruktiv oder destruktiv addiert werden. Es kann schwieriger zu erkennen sein, weil wir oft nicht über eine tatsächliche Welle im physischen Raum sprechen. Im Fall unserer Qubits geschieht die Interferenz im abstrakten Informationsraum der Qubits. Beachte auch, dass nur die relative Phase zwischen den beiden Wellen für die Art ihrer Interferenz wichtig ist – also die Differenz der Phasen Δϕ=ϕ2ϕ1\Delta \phi = \phi_2 - \phi_1 der beiden Koeffizienten – weshalb wir typischerweise eine globale Phase von ϕ1-\phi_1 auf den gesamten Zustand anwenden, sodass c1c_1 rein reell ist und die relative Phase vollständig in c2c_2 erfasst wird.

Um zu sehen, wie die Phase Interferenz in unserer Quantenmünze verursachen kann, versuchen wir, das Hadamard-Gate zweimal statt nur einmal anzuwenden. Klassisch würde das keinen Sinn ergeben – wenn das Anwenden des Hadamard-Gates dem Werfen einer Münze entspricht, dann kann man keine Münze werfen, die bereits in der Luft ist. Aber schauen wir, was mit der Quantenmünze passiert:

qcoin_0 = QuantumCircuit(1)
qcoin_0.h(0)
qcoin_0.h(0)
qcoin_0.measure_all()

qcoin_0.draw("mpl")

Output of the previous code cell

Bevor wir nun Sampler verwenden, um den resultierenden Zustand zu messen, denken wir darüber nach, wie dieses Qubit von jedem Gate transformiert wird. Es startet, wie üblich, in 0|0\rangle. Dann transformiert das erste Hadamard den Zustand in die Superposition, wie wir bereits gesehen haben:

H0=120+121.H|0\rangle = \frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle.

In diesem Fall sind beide Koeffizienten vollständig reell und positiv, was bedeutet, dass die Phase ϕ=0\phi=0 ist.

Das zweite Hadamard wird dann auf jeden Teil des Superpositionszustands separat angewendet. Wir wissen bereits, wie das Hadamard den Zustand 0|0\rangle transformiert. Aber was ist mit 1|1\rangle?

H1=120121H|1\rangle = \frac{1}{\sqrt{2}} |0\rangle - \frac{1}{\sqrt{2}} |1\rangle

Dies ist wiederum eine gleichmäßige Superposition von 0 und 1, vergleichbar mit dem Werfen einer Münze, aber der Koeffizient dieses Zustands vor 1|1\rangle hat eine Phase von ϕ=π\phi = \pi, die ihm das negative Vorzeichen verleiht.

Überprüfe dein Verständnis

Lies die Frage unten, denke über deine Antwort nach und klicke dann auf das Dreieck, um die Lösung zu sehen.

Berechne den resultierenden Zustand nach Anwendung des zweiten Hadamard. Das heißt, berechne: H(120+121)H(\frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle). Beachte, dass HH distributiv ist, sodass wir es auf jeden Term einzeln anwenden können.

Antwort:

H(120+121)=12H0+12H1=12[(0+1)+(01)]=0H(\frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle) = \frac{1}{\sqrt{2}} H|0\rangle + \frac{1}{\sqrt{2}} H|1\rangle = \frac{1}{2} [(|0\rangle + |1\rangle) + (|0\rangle - |1\rangle)] = |0\rangle

Überprüfen wir nun unsere Vorhersage mit Sampler.

## Transpile

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

qc_isa = pm.run(qcoin_0)

## Execute

# On real hardware:
sampler = Sampler(mode=backend)
pubs = [qc_isa]
job = sampler.run(pubs, shots=1000)
res = job.result()

counts = res[0].data.meas.get_counts()

# or with Aer simulator with noise model from real backend
# job = sampler_sim.run([qc_isa])
# counts=job.result()[0].data.meas.get_counts()

## Analyze
plot_histogram(counts)

Output of the previous code cell

Das zweite Hadamard hat das erste aufgehoben, und wir sind zum 0-Zustand zurückgekehrt, in dem wir gestartet sind! Das liegt daran, dass das Hadamard sowohl den Zustand 0|0\rangle als auch 1|1\rangle in ähnliche Zustände transformiert, aber mit entgegengesetzten Phasen. Nach dem zweiten Hadamard sehen wir, dass die 0|0\rangle-Terme konstruktiv interferieren, aber die 1|1\rangle-Terme destruktiv interferieren und sich gegenseitig auslöschen.

Erkunden wir weiter: Wir können die Phase mit einem „PHASE"-Gate ändern. Wenden wir also jetzt ein Hadamard an, um die Superposition zu erzeugen, dann eine Phasenverschiebung von π\pi Radiant, und dann das zweite Hadamard:

qcoin_pi = QuantumCircuit(1)
qcoin_pi.h(0)
qcoin_pi.p(np.pi, 0)
qcoin_pi.h(0)
qcoin_pi.measure_all()

qcoin_pi.draw("mpl")

Output of the previous code cell

## Transpile

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

qc_isa = pm.run(qcoin_pi)

## Execute

# On real hardware:
sampler = Sampler(mode=backend)
pubs = [qc_isa]
job = sampler.run(pubs, shots=1000)
res = job.result()

counts = res[0].data.meas.get_counts()

# or with Aer simulator with noise model from real backend
# job = sampler_sim.run([qc_isa])
# counts=job.result()[0].data.meas.get_counts()

## Analyze
plot_histogram(counts)

Output of the previous code cell

Und jetzt wird das Qubit im Zustand 1 statt 0 gemessen.

Selbst aus diesen wenigen, einfachen Experimenten kannst du bereits den drastischen Unterschied sehen, den diese Phase auf einen Quanten-Circuit haben kann. Er kann subtil und anfangs schwer zu erkennen sein. In unserem ersten Experiment, bei dem wir einfach unsere Quantenmünze mit einem Hadamard-Gate geworfen und das Ergebnis des Wurfs gemessen haben, zeigte sich nichts von der Wirkung der Phase. Erst als wir tiefer gruben, entdeckten wir den Unterschied, den eine Phase ausmachen kann. Sie kann dazu führen, dass dasselbe Quanten-Gate buchstäblich den gegenteiligen Effekt auf ein Qubit hat.

Probiere es selbst:

Bearbeite die Code-Zelle unten, um die Phase so zu ändern, dass das zweite Hadamard einen Superpositionszustand mit Wahrscheinlichkeiten von 25% und 75% erzeugt, den Zustand in 0|0\rangle bzw. 1|1\rangle zu finden. Überprüfe deine Antwort rechnerisch.

qcoin_phase = QuantumCircuit(1)
qcoin_phase.h(0)
# replace "x" below with a phase from 0 to 2*np.pi (this cell won't run if you leave x)
# qcoin_phase.rz(x, 0)
qcoin_phase.h(0)
qcoin_phase.measure_all()

## Transpile

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)

qc_isa = pm.run(qcoin_phase)

## Execute

# On real hardware:
sampler = Sampler(mode=backend)
pubs = [qc_isa]
job = sampler.run(pubs, shots=1000)
res = job.result()

counts = res[0].data.meas.get_counts()

# or with Aer simulator with noise model from real backend
# job = sampler_sim.run([qc_isa])
# counts=job.result()[0].data.meas.get_counts()

## Analyze
plot_histogram(counts)

Output of the previous code cell

Eine weitere (bessere) Münzanalogie mit dem NOT\sqrt{\text{NOT}}-Gate

Inzwischen haben wir gelernt, dass das Werfen einer Münze sich ziemlich vom Erzeugen eines Superpositionszustands unterscheidet. Gibt es eine bessere Analogie zu einer Münze, die mehr der superpositionsartigen Phänomene einfängt? Ja. Ja, die gibt es.

Wir werden ein weiteres Gedankenexperiment mit einer Münze durchführen. Stelle dir die Münze auf dem Tisch liegend vor, Kopf oben. Um sie auf Kopf unten zu bringen, können wir sie einfach umdrehen. Das ist das rechnerische Äquivalent eines „NOT"-Gates.

Angenommen, wir wollen eine Operation konstruieren, die, zweimal angewendet, dem NOT-Gate entspricht. Das heißt, wir wollen eine „Quadratwurzel von NOT", oder NOT\sqrt{\text{NOT}}. Wir können dies tun, indem wir betrachten, wie das NOT-Gate physisch auf die Münze angewendet wird: Es ist einfach eine Drehung um 180 Grad um beispielsweise die x-Achse. Wenn wir also die Münze nur um 90 Grad um die x-Achse drehen würden, wäre das äquivalent zu einem NOT\sqrt{\text{NOT}}-Gate.

Stelle dir vor, dass wir nach dem Anwenden des NOT\sqrt{\text{NOT}}-Gates fragen wollen, ob die Münze Kopf oben oder Kopf unten zeigt. Sie zeigt weder noch – sie steht relativ zur vertikalen Achse auf ihrer Kante. Aber jetzt definieren wir unsere „Messung" der Münze neu: erstens, die Münze entlang der Messachse zusammenzuklappen (indem du sie mit deiner Hand flachdrückst, sodass sie flach liegt), und zweitens, zu prüfen, ob sie Kopf oben oder unten zeigt.

Wenn wir diese „Messung" an der auf ihrer Kante stehenden Münze durchführen, dann wird die Münze mit gleicher Wahrscheinlichkeit zu Kopf oben oder Kopf unten „kollabieren". Ähnlich wie beim Münzwurf kann prinzipiell die Richtung, in die die Münze fällt, anhand der Anfangsbedingungen der Münze und der genauen Krafteinwirkung unserer Hand beim „Kollabieren" vorhergesagt werden. Aber in der Praxis sollte es schwierig sein vorherzusagen, welche Seite oben landet, also ist es im Wesentlichen zufällig.

Wir können diese Münze tatsächlich entlang drei verschiedener Achsen messen: xx, yy und zz. Wir sehen, dass die Kante der Münze entlang der xx- und zz-Achse zeigt, sodass die Messung in diesen Richtungen ein „Zusammenklappen" der Münze erfordert – daher wird es entlang dieser Achsen zufällig mit 50:50-Wahrscheinlichkeit sein, Kopf oben oder unten zu messen. Aber entlang der yy-Achse liegt sie bereits flach, mit dem Kopf in die -y-Richtung zeigend. Wir können das „Kopf vorwärts" nennen.

Während die x- und z-Messungen also zufällige Ergebnisse lieferten, wird die y-Messung immer dasselbe Ergebnis liefern! Wenn du dich an das Experiment „Quantenmünzwurf" aus dem vorherigen Abschnitt erinnerst, erinnert das daran, wie sich die Quantenmünze verhalten hat. Sie wurde in z-Richtung mit 50/50-Wahrscheinlichkeit als 0 oder 1 gemessen, aber entlang X immer +|+\rangle und nie |-\rangle. Das deutet darauf hin, dass eine Münze, die still auf ihrer Kante steht, vielleicht eine bessere Vorstellung eines Superpositionszustands eines Qubits ist als eine wild durch die Luft fliegende Münze.

Verwenden wir Qiskit, um zu sehen, ob sich unsere „Quantenmünze" genauso verhält wie unsere klassische Münze, wenn ein NOT\sqrt{\text{NOT}}-Gate angewendet wird. Wir wenden NOT\sqrt{\text{NOT}} auf ein Qubit im Zustand 0|0\rangle an und verwenden dann Estimator, um den Erwartungswert der drei Observablen X, Y und Z zu überprüfen.

qcoin_sx = QuantumCircuit(1)
qcoin_sx.sx(0)

qcoin_sx.draw("mpl")

Output of the previous code cell

obs1 = Pauli("X")
obs2 = Pauli("Y")
obs3 = Pauli("Z")

# Step 2: Transpile the circuit

pm = generate_preset_pass_manager(target=target, optimization_level=3)
qc_isa = pm.run(qcoin_sx)
obs1_isa = obs1.apply_layout(layout=qc_isa.layout)
obs2_isa = obs2.apply_layout(layout=qc_isa.layout)
obs3_isa = obs3.apply_layout(layout=qc_isa.layout)

# Step 3: Run the circuit on a real quantum computer

estimator = Estimator(mode=backend)
pubs = [(qc_isa, [[obs1_isa], [obs2_isa], [obs3_isa]])]
job = estimator.run(pubs)
res = job.result()

# Run the job on the Aer simulator with noise model from real backend
# pubs = [(qc_isa, [[obs1_isa], [obs2_isa], [obs3_isa]])]
# job = estimator_sim.run(pubs)
# res=job.result()

# Step 4: Return the result in classical form, and analyze.

print(res[0].data.evs)
[[-0.01234492]
[-1.00388865]
[ 0.00740695]]

Die Erwartungswerte sind 0, -1 und 0 für X, Y bzw. Z.

Überprüfe dein Verständnis

Lies die Frage unten, denke über deine Antwort nach und klicke dann auf das Dreieck, um die Lösung zu sehen.

Wie groß sind angesichts der Erwartungswerte die Wahrscheinlichkeiten, die Quantenmünze als Kopf oben/unten (oder links/rechts oder vorwärts/rückwärts) für jede der 3 Messachsen zu messen?

Antwort:

Entlang X und Z gibt es eine 50/50-Wahrscheinlichkeit, einen der beiden Zustände zu messen, und entlang Y wird der Zustand immer in der -y-Richtung gemessen.

Das ist dasselbe Ergebnis, das wir mit unserem Gedankenexperiment erhalten haben, bei dem wir eine 90-Grad-Drehung „NOT\sqrt{\text{NOT}}" auf die klassische Münze angewendet haben. Tatsächlich gibt es eine präzise Analogie zwischen der Münze und dem Qubit-Zustand. Wir können den Qubit-Zustand als einen Vektor visualisieren, der in die Richtung des Kopfes auf einer Münze zeigt, senkrecht zur Oberfläche der Münze. Also ist Kopf oben, oder der Zustand 0|0\rangle auf einer Quantenmünze, äquivalent zu einem Vektor, der gerade nach oben zeigt; Kopf unten, oder 1|1\rangle, zeigt gerade nach unten. Jede gleichmäßige Superposition von 0|0\rangle und 1|1\rangle zeigt horizontal. Die Phase des Zustands bestimmt die genaue horizontale Richtung – die Richtung, in die er entlang des Äquators zeigt, entspricht der Richtung, in die der Koeffizient c2c_2 in der komplexen Ebene zeigt.

Nun kann jedes Gate, das wir in diesem Notebook gesehen haben, als Drehung (oder Abfolge von Drehungen) der Münze/des Vektors visualisiert werden.

  • NOT: 180 Grad um die x-Achse

  • NOT\sqrt{\text{NOT}}: 90 Grad um die x-Achse

  • PHASE: Drehung um ϕ\phi um die z-Achse

  • Hadamard: Dieses ist etwas kniffliger. Wir haben es anfangs mit dem Werfen einer Münze verglichen, wobei die Münze unkontrolliert in der Luft rotiert. Aber das Hadamard ist eigentlich eine kontrollierte, deterministische Drehung der Münze, wie die anderen Gates. Das Hadamard wird ausgeführt, indem man 90 Grad um die y-Achse dreht und dann 180 Grad um die x-Achse.

An einer Quantensuperposition oder den Standardoperationen, die wir auf das Qubit anwenden, ist also nichts Zufälliges. Jede Operation ist deterministisch und reversibel. Zufälligkeit kommt erst dann ins Spiel, wenn wir uns entscheiden, den Quantenzustand zu messen.

Der Qubit-Zustand als Bloch-Vektor

Dieser Vektor, der in die Richtung des „Kopfes" der Münze zeigt, ist als „Bloch-Vektor" bekannt. Formal kann ein beliebiger (isolierter) Qubit-Zustand durch einen Vektor dargestellt werden, der auf der Oberfläche einer Kugel mit Radius 1 und den Koordinaten (r,θ,ϕ)(r, \theta, \phi) liegt. In diesen Koordinaten geschrieben, ist der Qubit-Zustand:

ψ=cosθ20+eiϕsinθ21|\psi\rangle = \cos{\frac{\theta}{2}} |0\rangle + e^{i \phi} \sin{\frac{\theta}{2}} |1\rangle

A diagram of the Bloch sphere. The quantum state is a vector in three dimensions. Since it can point in any direction, the quantum state can be specified using polar angles theta and phi to locate a point on a spherical surphace. Überprüfen wir nun mit Qiskit, wie sich der Bloch-Vektor ändert, wenn wir verschiedene Gates auf unser Qubit anwenden, ausgehend vom Zustand 0|0\rangle.

NOT

from qiskit.visualization import plot_bloch_multivector

qnot = QuantumCircuit(1)
qnot.x(0)

plot_bloch_multivector(qnot)

Output of the previous code cell

NOT\sqrt{\text{NOT}}

qsqrtnot = QuantumCircuit(1)
qsqrtnot.sx(0)

plot_bloch_multivector(qsqrtnot)

Output of the previous code cell

PHASE (ϕ=π\phi = \pi)

qphase = QuantumCircuit(1)
qphase.p(np.pi, 0)

plot_bloch_multivector(qphase)

Output of the previous code cell

Hadamard

qhadamard = QuantumCircuit(1)
qhadamard.h(0)

plot_bloch_multivector(qhadamard)

Output of the previous code cell

Fazit – was ist also ein Superpositionszustand?

Wir haben dieses Modul damit begonnen, die Zufälligkeit der Messung eines Quantensuperpositionszustands mit einem Münzwurf zu vergleichen. Wir haben das „Hadamard-Gate", das eine Quantensuperposition erzeugt, mit dem Werfen einer Münze verglichen. Aber durch eine Reihe von Experimenten haben wir gelernt, dass es fundamentale Unterschiede zwischen einem klassischen Münzwurf und einer Quantensuperposition gibt.

Wir haben gelernt, dass an einem Qubit in einem Superpositionszustand eigentlich nichts „Zufälliges" ist. Es ist wie eine Münze, die still im dreidimensionalen Raum steht. Tatsächlich ist eine Münze, die sich frei in 3 Dimensionen drehen kann, eine sehr genaue Analogie zu einer bestimmten Methode, den Quantenzustand eines Qubits zu visualisieren, dem sogenannten Bloch-Vektor. Quanten-Gates drehen diese Münze/diesen Bloch-Vektor deterministisch und reversibel. Erst wenn wir das Qubit messen, wird Zufälligkeit eingeführt. Wir haben diesen Messprozess damit verglichen, die Münze zusammenzudrücken, sodass sie flach in Richtung der Messachse liegt.

Ob ein Quantenzustand überhaupt in einer Superposition ist, liegt wirklich im Auge des Betrachters. Wie du wahrscheinlich schon einmal erfahren hast, steht es uns frei, unser Koordinatensystem zu wählen – xx, yy und zz können in beliebige drei orthogonale Richtungen zeigen. Wenn wir also eine Superposition von 0 und 1 in einem Koordinatensystem haben, können wir ein neues Koordinatensystem definieren – oder äquivalent eine neue „Messbasis" – in dem der Zustand rein in die +z+z-Richtung zeigt und sich daher nicht in einem Superpositionszustand befindet. Wenn wir also sagen, ein Qubit ist in einer Superposition, müssen wir auch die Frage beantworten: „Superposition von was?"

Du verlässt dieses Modul vielleicht mit dem Eindruck, dass wir gerade jedes Mysterium aus der Quantenmechanik entfernt haben. Immerhin ist einer der angeblich „seltsamsten" Aspekte, der Superpositionszustand eines Qubits, wirklich nur so einfach wie ein dreidimensionaler Vektor. Aber bedenke, dass die Münze immer noch nur eine Analogie ist, und selbst der Bloch-Vektor ist nur ein Visualisierungswerkzeug zur Berechnung von Wahrscheinlichkeiten von Messergebnissen. Wir können nicht sagen, was ein Quantenzustand wirklich vor der Messung tut. Denn das zu überprüfen erfordert eine Messung!

Wir werden dieses Rätsel, was die „wahre" Natur eines Quantenzustands ist und wie das Quantenphänomen der Verschränkung uns helfen kann, dies aufzuklären, im Modul zur Bellschen Ungleichung besprechen.

Fragen

Lehrende können Versionen dieser Notebooks mit Lösungsschlüsseln und Hinweisen zur Einordnung in gängige Lehrpläne anfordern, indem sie diese kurze Umfrage zur Nutzung der Notebooks ausfüllen.

Zentrale Konzepte:

  • Während die Messung eines Qubits in einer Superposition probabilistisch ist, wie beim Münzwurf, verhält sich der Superpositionszustand selbst anders als eine geworfene Münze.
  • Ein Hauptunterschied zwischen einer klassischen Wahrscheinlichkeitsverteilung und einer Superposition ist, dass die Superposition Phasen-Kohärenz besitzt, die ihr ermöglicht, konstruktiv oder destruktiv zu interferieren.
  • Der Zustand eines einzelnen, isolierten Qubits kann als Punkt auf der sogenannten „Bloch-Kugel" visualisiert werden, wobei die relativen Amplituden der 0|0\rangle- und 1|1\rangle-Komponenten den Polarwinkel θ\theta bestimmen und die relativen Phasen zwischen den beiden Komponenten den Azimutwinkel ϕ\phi bestimmen.
  • Alle Einzel-Qubit-Quanten-Gates können als Drehungen des Vektors auf dieser Kugel betrachtet werden.

Wahr/Falsch-Fragen:

  1. W/F Eine Quantensuperposition ist im Grunde dasselbe wie ein probabilistisches Ereignis in der klassischen Physik, wie das Werfen einer Münze.

  2. W/F Die Länge des Bloch-Vektors, der den Zustand eines einzelnen isolierten Qubits beschreibt, ist immer 1.

  3. W/F Einzel-Qubit-Quanten-Gates ändern die Länge des Bloch-Vektors nicht.

Multiple-Choice-Fragen:

  1. Wähle den korrekten Bloch-Vektor, der den Zustand Ψ=130+eiπ/4231|\Psi\rangle = \sqrt{\frac{1}{3}}|0\rangle + e^{i \pi / 4} \sqrt{\frac{2}{3}}|1\rangle darstellt:

Four Bloch spheres are shown. The vector points nearly along +x in option a, halfway between +x and +y and slightly below the xy plane in option b, between +x and -y, and slightly above the xy plane in option c, and along -x in option d.

  1. Die Bloch-Kugel beschreibt eines Qubits: (wähle alle zutreffenden aus)

    a. Amplitude

    b. Verschränkung mit anderen Qubits

    c. Phase

    d. Farbe

    e. Wahrscheinlichkeit von Messergebnissen

Diskussionsfragen:

  1. Warum kann der Zustand eines Qubits auf der Bloch-Kugel visualisiert werden, die Wahrscheinlichkeitsverteilung eines Münzwurfs jedoch nicht?

  2. Warum ist eine in der Luft fliegende Münze nicht die beste Analogie zu einem Quantensuperpositionszustand? Welcher Aspekt von Superpositionen wird in dieser Analogie nicht erfasst?

Aufgaben für Fortgeschrittene:

  1. Verwende Qiskit, um einen Circuit zu erstellen, der den Zustand 0|0\rangle in den Zustand 320+12ei5π61\frac{\sqrt{3}}{2}|0\rangle + \frac{1}{2}e^{i \frac{5\pi}{6}}|1\rangle transformiert.