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:
qiskitv2.1.0 oder neuerqiskit-ibm-runtimev0.40.1 oder neuerqiskit-aerv0.17.0 oder neuerqiskit.visualizationnumpypylatexenc
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:
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 „" (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()
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: und . Wir erzeugen den probabilistischen „Superpositions"-Zustand, indem wir im Zustand starten und dann ein sogenanntes Hadamard-Gate auf das Qubit anwenden. Dies versetzt es in eine gleichmäßige Superposition von und . 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, zu messen, und eine 50%ige Chance, zu messen. Wir schreiben diesen Zustand etwas anders als den klassisch probabilistischen Fall, aus Gründen, die später klar werden:
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")
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)
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:
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 bzw. zugeordnet sind.
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 oder befindet, die entlang der -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 bzw. .
Ü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 und zu messen. Welchen Erwartungswert von X würden wir erwarten, dass Estimator zurückgibt, wenn dies der Fall wäre?
Estimator zurückgibt, wenn dies der Fall wäre?Antwort:
Wenn wir X auf den Zustand anwenden, erhalten wir den Wert +1 und für den Zustand 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, und 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 ? Wie groß sind die Wahrscheinlichkeiten, und in dieser X-Basis zu messen?
Antwort:
Da der Erwartungswert gleich dem Wert von X für den Zustand ist, bedeutet das, dass wir eine 100%ige Wahrscheinlichkeit haben, den Zustand 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,
jeder Koeffizient einfach eine reelle, positive Zahl ist, die die Wahrscheinlichkeit repräsentiert, einen bestimmten Zustand zu messen. In einem Quantenzustand,
sind die Koeffizienten komplex, sie enthalten also einen Real- und einen Imaginärteil. Jeder Koeffizient kann als zweidimensionaler Vektor in der komplexen Ebene ausgedrückt werden, mit dem Betrag und dem Winkel , den er mit der reellen Achse bildet:

Wir nennen 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 der beiden Koeffizienten – weshalb wir typischerweise eine globale Phase von auf den gesamten Zustand anwenden, sodass rein reell ist und die relative Phase vollständig in 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")
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 . Dann transformiert das erste Hadamard den Zustand in die Superposition, wie wir bereits gesehen haben:
In diesem Fall sind beide Koeffizienten vollständig reell und positiv, was bedeutet, dass die Phase ist.
Das zweite Hadamard wird dann auf jeden Teil des Superpositionszustands separat angewendet. Wir wissen bereits, wie das Hadamard den Zustand transformiert. Aber was ist mit ?
Dies ist wiederum eine gleichmäßige Superposition von 0 und 1, vergleichbar mit dem Werfen einer Münze, aber der Koeffizient dieses Zustands vor hat eine Phase von , 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: . Beachte, dass distributiv ist, sodass wir es auf jeden Term einzeln anwenden können.
Antwort:
Ü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)
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 als auch in ähnliche Zustände transformiert, aber mit entgegengesetzten Phasen. Nach dem zweiten Hadamard sehen wir, dass die -Terme konstruktiv interferieren, aber die -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 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")
## 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)
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 bzw. 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)
Eine weitere (bessere) Münzanalogie mit dem -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 . 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 -Gate.
Stelle dir vor, dass wir nach dem Anwenden des -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: , und . Wir sehen, dass die Kante der Münze entlang der - und -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 -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 und nie . 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 -Gate angewendet wird. Wir wenden auf ein Qubit im Zustand 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")
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 „" 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 auf einer Quantenmünze, äquivalent zu einem Vektor, der gerade nach oben zeigt; Kopf unten, oder , zeigt gerade nach unten. Jede gleichmäßige Superposition von und 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 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
-
: 90 Grad um die x-Achse
-
PHASE: Drehung um 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 liegt. In diesen Koordinaten geschrieben, ist der Qubit-Zustand:
Überprüfen wir nun mit Qiskit, wie sich der Bloch-Vektor ändert, wenn wir verschiedene Gates auf unser Qubit anwenden, ausgehend vom Zustand .
NOT
from qiskit.visualization import plot_bloch_multivector
qnot = QuantumCircuit(1)
qnot.x(0)
plot_bloch_multivector(qnot)
qsqrtnot = QuantumCircuit(1)
qsqrtnot.sx(0)
plot_bloch_multivector(qsqrtnot)
PHASE ()
qphase = QuantumCircuit(1)
qphase.p(np.pi, 0)
plot_bloch_multivector(qphase)
Hadamard
qhadamard = QuantumCircuit(1)
qhadamard.h(0)
plot_bloch_multivector(qhadamard)
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 – , und 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 -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 - und -Komponenten den Polarwinkel bestimmen und die relativen Phasen zwischen den beiden Komponenten den Azimutwinkel bestimmen.
- Alle Einzel-Qubit-Quanten-Gates können als Drehungen des Vektors auf dieser Kugel betrachtet werden.
Wahr/Falsch-Fragen:
-
W/F Eine Quantensuperposition ist im Grunde dasselbe wie ein probabilistisches Ereignis in der klassischen Physik, wie das Werfen einer Münze.
-
W/F Die Länge des Bloch-Vektors, der den Zustand eines einzelnen isolierten Qubits beschreibt, ist immer 1.
-
W/F Einzel-Qubit-Quanten-Gates ändern die Länge des Bloch-Vektors nicht.
Multiple-Choice-Fragen:
- Wähle den korrekten Bloch-Vektor, der den Zustand darstellt:

-
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:
-
Warum kann der Zustand eines Qubits auf der Bloch-Kugel visualisiert werden, die Wahrscheinlichkeitsverteilung eines Münzwurfs jedoch nicht?
-
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:
- Verwende Qiskit, um einen Circuit zu erstellen, der den Zustand in den Zustand transformiert.