Was kann ein Qubit, das ein Bit nicht kann?
Ein Bit ist 0 oder 1. Ein Qubit wird durch zwei Zahlen beschrieben, eine für jede Antwort, und eine Messung macht daraus zufällig eine einzige 0 oder 1. Diese Regel baust du selbst nach, in einer kurzen Python-Datei, die du lesen kannst. Sie läuft auf einem gewöhnlichen Computer, also ist sie ein Simulator, kein Quantencomputer, und sie kann nicht zeigen, ob ein Quantencomputer schneller ist. Sie zeigt die Regeln.
Am Ende dieser Lektion
Notiz
Ich kann ein Qubit erzeugen, ein Gatter anwenden, messen und sagen, was die Zählung zeigt.
Schlüsselwörter
- Qubit: die Quantenversion eines Bits, beschrieben durch zwei Amplituden.
- Amplitude: eine Zahl für ein Ergebnis. Ihr Quadrat ist die Wahrscheinlichkeit dieses Ergebnisses.
- Gatter: ein Schritt, der die Amplituden verändert, zum Beispiel X oder H.
- Messung: das Auslesen des Qubits, das zufällig eine einzige 0 oder 1 liefert.
- Durchlauf (Shot): ein ganzer Ablauf, der mit einer Messung endet.
- Simulator: ein Programm auf einem gewöhnlichen Computer, das den Regeln folgt.
Zum Einstieg: was du schon weißt
Notiz
Antworte im Kopf. 1. Wie viele verschiedene Werte können 2 Bits halten? 2. Wenn man eine faire Münze 1000-mal wirft, wie oft erwartest du ungefähr Kopf? 3. Was ergibt 0,5 zum Quadrat? Antworten: 4 Muster, aber immer nur eins auf einmal; ungefähr 500-mal; 0,25.
Bevor du anfängst
Notiz
Klicke oben in der Leiste dieser Lektion auf Lab starten und warte, bis dort steht, dass es läuft. Es gibt einen Container, jupyter, und das Terminal erreicht sein Python mit docker exec jupyter, das einen Befehl darin ausführt. Der Link JupyterLab öffnet seine Webseite, Port 8888. Jede Schaltfläche Ausführen unten tippt ihren Befehl ins Terminal deines Labs, einen nach dem anderen in derselben Sitzung. Wenn du zuschauen oder eigene Befehle tippen willst, klicke in der Leiste auf Terminal öffnen (neuer Tab).
Ein Simulator ist eine Datei, die du lesen kannst
ls listet den Arbeitsordner auf: qsim.py, den Simulator, weniger als 70 Zeilen NumPy, das Notebook start.ipynb und den Ordner steps. Das erste Skript erzeugt ein Qubit im Zustand |0>. Die erste ausgegebene Zeile, 1.000|0>, liest sich als „Amplitude 1 für die Antwort 0“. Die Wahrscheinlichkeiten sind [1. 0.]: Beim Lesen kommt sicher 0. Zwei Qubits brauchen 4 Amplituden, eine für jedes von 00, 01, 10 und 11.
docker exec jupyter lsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
docker exec jupyter python3 steps/qubit.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Gatter verändert die Amplituden
Das X-Gatter vertauscht 0 und 1, aus |0> wird also 1.000|1>. Das H-Gatter macht eine gleichmäßige Mischung: 0.707|0> + 0.707|1>. Jede Amplitude ist 0,707, und 0,707 zum Quadrat ist 0,5, die Wahrscheinlichkeiten sind also [0.5 0.5].
docker exec jupyter python3 steps/gates.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine Messung gibt eine einzige Antwort, zufällig
Das Skript misst den H-Zustand 1000-mal, mit festem Startwert, damit jeder Lauf gleich ist. Startwert 1 ergibt 507-mal 0 und 493-mal 1. Startwert 2 ergibt 503 und 497. Startwert 1 noch einmal ergibt genau das erste Ergebnis. Beide nah an der Hälfte, nie genau die Hälfte: Das ist Zufall.
docker exec jupyter python3 steps/measure.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Prüfe dich
Tipp
Der H-Zustand hat für jede Antwort eine Amplitude von 0,707. Warum liegen die Zählwerte nahe bei 500 und 500 und nicht bei 707 und 707? Antwort: Die Wahrscheinlichkeit ist die Amplitude zum Quadrat, 0,707 zum Quadrat ist 0,5, und beide Wahrscheinlichkeiten ergeben zusammen 1.
Zwei Qubits können verbunden werden
H auf das erste Qubit und danach CNOT ergibt einen Bell-Zustand: 0.707|00> + 0.707|11>. Die Zählung enthält nur 00 und 11 (507 und 493). Nie 01 oder 10: Die beiden Qubits stimmen immer überein, obwohl jedes für sich ein Münzwurf ist.
docker exec jupyter python3 steps/bell.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Amplituden können sich auslöschen
H und gleich noch einmal H ergibt 1.000|0>, und H, Z, H ergibt 1.000|1>. Das zweite H addiert die Amplituden, und mit dem Z dazwischen löscht sich eine der beiden Antworten aus. Das ist Interferenz, und so lenkt ein Quantenprogramm die Wahrscheinlichkeiten.
docker exec jupyter python3 steps/interfere.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Wahrscheinlichkeiten auf eine Antwort lenken
Vier Einträge sind mit 00, 01, 10 und 11 nummeriert, und 11 ist markiert. Jeder beginnt mit der Amplitude 0,500, also mit der Wahrscheinlichkeit 0,25. Das Vorzeichen des markierten umzudrehen ändert keine Wahrscheinlichkeit, aber ein weiterer Schritt, der jede Amplitude am Mittelwert spiegelt, lässt 1.000|11> übrig: Der markierte Eintrag ist jetzt sicher.
docker exec jupyter python3 steps/amplify.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele glauben, ein Quantencomputer probiere alle Antworten gleichzeitig aus und zeige einfach die beste. Eine Messung liefert eine Antwort, zufällig gewählt nach den quadrierten Amplituden. Die Kunst ist, die Amplituden mit Gattern und Interferenz so zu ordnen, dass die gewünschte Antwort die wahrscheinliche ist.
Was ein Simulator nicht zeigen kann
Das ist qsim.py auf einem gewöhnlichen Computer. Er speichert jede Amplitude, also verdoppelt jedes weitere Qubit die Arbeit, und er kann keinen Geschwindigkeitsgewinn zeigen. Er folgt den Regeln genau, deshalb eignet er sich zum Lernen, und er sagt nichts darüber, wie eine echte Maschine gebaut ist oder wie schnell sie wäre.
Dieselbe Arbeit in einem Notebook
Öffne JupyterLab über die Leiste und doppelklicke auf start.ipynb. Es macht, was die Skripte gemacht haben, Zelle für Zelle, und endet mit einem Balkendiagramm der Zählung eines Bell-Zustands. Klicke auf eine Zelle und drücke Umschalt und Enter, um sie auszuführen. In der letzten Zelle ist Platz für deine eigene Frage.
Abschlussprüfung
Tipp
Antworte, ohne zurückzublättern. 1. Wie groß ist die Wahrscheinlichkeit eines Ergebnisses bei gegebener Amplitude? 2. Was macht das H-Gatter mit |0>? 3. Welche Antwortpaare treten in einem Bell-Zustand auf? 4. Kann dieser Simulator zeigen, dass ein Quantencomputer schneller ist? Antworten: die Amplitude zum Quadrat; es macht eine gleichmäßige Mischung, je 0,707; nur 00 und 11; nein, er ist ein Simulator auf einem gewöhnlichen Computer.
Für Lehrkräfte
Tipp
Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab abläuft: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die eigene Kopie jeder lernenden Person. Das Lab ist ein Dienst, JupyterLab mit einem kleinen NumPy-Simulator, den die Lernenden lesen können, und nichts hier bewertet sich selbst: Die Lernenden geben ein eigenes Notebook ab, das qsim.py benutzt, aus JupyterLab heruntergeladen, und einen Satz dazu, was es gezeigt hat. Kernpunkte: 1. Ein Qubit sind zwei Amplituden, und die Wahrscheinlichkeit ist ihr Quadrat. 2. Gatter verändern Amplituden, und eine Messung liefert zufällig eine Antwort. 3. Interferenz lenkt die Wahrscheinlichkeiten. Häufiger Fehler: „probiert alle Antworten gleichzeitig aus“. Material: das Lab und ein Browser. Tipp: Lassen Sie jede Ausgabe vorhersagen, bevor „Ausführen“ gedrückt wird. Die Startwerte sind fest, jede Kopie gibt also dieselben Zahlen aus, und das Lab sagt klar, dass es keine Geschwindigkeit zeigen kann. Kopieren Sie die Lektion in Ihr eigenes Modul und ändern Sie sie, oder bauen Sie im Lektionseditor über das Menü Lab eine neue von Grund auf.