Visualisierung von Bits und Qubits

In den letzten Jahren war ich ein bisschen besessen von zwei Dingen: Programmierung von Prototypen für Quantencomputer und Gamification. Diese Interessen sind nun unvermeidlich zusammengestoßen, was zu einem spielerischen Tutorial für die Quantenprogrammierung geführt hat.

Ein wichtiger Teil der Erstellung dieses Tutorials war die Visualisierung von Qubits. Dies ist im Allgemeinen ein unlösbares Problem. Wenn es für große Quantenberechnungen einfach wäre, würde sich daraus ergeben, dass es einfach ist, sie zu simulieren. Da dies nicht der Fall ist, wird sich unsere Visualisierung auf ein paar Qubits konzentrieren.

Die Visualisierung ist die Hauptmethode, mit der der Benutzer des Tutorials sein Qubit-Paar versteht und sich darauf bezieht. Aber wir wollen nicht, dass der Nutzen hier endet. Idealerweise sollten wir uns auf Prinzipien stützen, die auch für eine größere Anzahl von Qubits gelten. Der Benutzer kann dann nach diesem Prinzip weiterdenken, wenn er weitaus größere Quantenprogramme entwirft.

In diesem Artikel erkläre ich, was ich und meine Mitarbeiter sich ausgedacht haben.

Visualisierung eines Bitpaares

Beginnen wir mit etwas Schönem und Einfachem: dem Bit. Jedes Bit ist entweder eine 0 oder eine 1. Lassen Sie uns dies in Bildform darstellen.

Die Zustände 0 und 1 eines Bits mit einem ASCII-Zeichenkreis aus irgendeinem Grund.

Hier haben wir einen blauen Balken, der hellblau oder aus ist, um 0 darzustellen, und dunkelblau oder ein, um 1 darzustellen.

Manchmal brauchen wir zufällige Bits. Dies sind natürlich immer noch nur 0 oder 1, aber wir wissen nicht, welche. Stellen wir unsere Ignoranz mit einem Balken dar, der halb an (oder halb aus) ist.

Ist es 0 oder ist es 1? Ja! Wir wissen nur noch nicht welche.

Ein Bit ist für viele nicht nützlich. Schauen wir uns also zwei an. Offensichtlich können wir dies mit zwei Balken darstellen: einen für jedes Bit.

Zwei Bits nebeneinander. Der flotte Winkel ist den Einschränkungen der ASCII-Kunst zu verdanken.

Es gibt vier mögliche Zustände von zwei Bits. Die oben gezeigte ist 01, aber es gibt auch 00, 10 und 11. Diese werden durch verschiedene Kombinationen von Ein und Aus dargestellt.

Die Verwendung von nur zwei Balken ist eine gute Möglichkeit, den Zustand von zwei Qubits zu visualisieren, sofern wir genau wissen, was beide tun. Aber was ist, wenn beide zufällig sind?

Es gibt mehrere verschiedene Dinge, die hier vor sich gehen könnten. Zum einen könnte es sein, dass die Bits durch den gleichen Zufallsprozess erzeugt wurden und daher immer den gleichen Wert haben. Hier ist ein Python-Snippet, das genau das tun würde (beachten Sie, dass False und True Python für 0 und 1 sind).

random_bit = random.choice ([False, True])
bit [0] = random_bit
bit [1] = random_bit

Oder sie könnten so generiert worden sein, dass sie immer einen entgegengesetzten Wert haben.

rand_bit = random.choice ([False, True])
bit [0] = random_bit
Bit [1] =! random_bit # 0, wenn das oben Gesagte 1 ist und umgekehrt

Sie können auch völlig unabhängige Zufallsbits sein.

bit [0] = random.choice ([False, True])
bit [1] = random.choice ([False, True])

Diese verschiedenen Möglichkeiten haben sehr unterschiedliches Verhalten. Daher ist unsere Visualisierung unvollständig, wenn wir nicht wissen, welche wir haben.

Um diese Informationen in unsere Grafiken einzufügen, fügen wir eine weitere Leiste hinzu. Diese zusätzliche Leiste hat die Aufgabe, uns über diese Zusammenhänge zu informieren. Es ist ausgeschaltet, wenn die Zufallsbits immer übereinstimmen sollen.

Und weiter, wenn sie immer anderer Meinung sind.

Wenn sie nichts miteinander zu tun haben und ihre Vereinbarungen und Meinungsverschiedenheiten nur zufällig getroffen wurden, ist der zusätzliche Balken zur Hälfte aktiviert.

Jetzt haben wir eine Möglichkeit, alles darzustellen, was zwei Bits können.

Visualisierung eines Paares von Qubits

Bits sind recht einfach und vertraut. Sie brauchen wirklich keine ausgefallene Visualisierung wie diese. Aber ihre Quantencousins ​​tun es. Fahren wir mit Qubits fort.

Ein Qubit ist ein Quantenobjekt, aus dem wir ein Informationsbit extrahieren können. Es gibt mehrere Möglichkeiten, wie wir diese Extraktion implementieren können, und die Auswahl, die wir treffen, kann zu unterschiedlichen Ergebnissen führen. Um ein Qubit zu visualisieren, müssen wir alle möglichen Ausgaben auf einmal verfolgen.

Wir konzentrieren uns auf zwei Möglichkeiten, aus jedem Qubit ein Bit zu extrahieren, und stellen dies mit zwei Balken dar. Eine blaue (und vertikale) und eine rote (und horizontale).

Dies ist nur ein Qubit

Wenn wir die blaue Ausgabe nehmen, können wir sehen, dass der hier gezeigte Zustand definitiv die Ausgabe 1 ergibt. Wenn wir die rote Ausgabe nehmen, ist das Ergebnis zufällig.

Tatsächlich ist die Zufälligkeit hier etwas ganz Besonderes. Das Qubit ist so darauf konzentriert, auf jeden Fall eine 1 zu geben, wenn es nach einer blauen Ausgabe gefragt wird. Es weiß wirklich nicht, was es tun würde, wenn es nach einer roten Ausgabe gefragt wird. Es müsste sich sofort entscheiden, ob die rote Ausgabe benötigt wird, und das auf völlig unvorhersehbare Weise. Es ist nicht die Pseudozufälligkeit, die Computer uns normalerweise geben. Es ist wahrer Zufall. Dies ist eines der Dinge, die Qubits einzigartig und nützlich machen: etwas, worüber wir in einem anderen Artikel mehr sprechen werden.

Das zweite Qubit wird ebenfalls mit zwei Balken dargestellt, aber wir werden diese vertikal stapeln.

In diesem Beispiel ist es die rote Ausgabe, deren Ergebnis eindeutig ist, und die blaue Ausgabe, die zufällig sein soll.

Da es für Qubits immer eine Zufälligkeit gibt, brauchen wir wieder etwas Besonderes, um die Korrelationen im Auge zu behalten. Für zwei Bits haben wir gesehen, dass nur ein zusätzlicher Riegel ausreicht. Aber für zwei Qubits haben wir mehr mögliche Korrelationen, die wir verfolgen müssen.

Insbesondere gibt es vier Möglichkeiten, wie wir zwei Bits aus zwei Qubits extrahieren können:

  • Eine blaue Ausgabe von beiden Qubits (nennen wir dies BB).
  • Eine rote Ausgabe von beiden Qubits (RR);
  • Ein blauer Ausgang vom einen Qubit und ein roter Ausgang vom anderen (BR);
  • Ein roter Ausgang vom einen Qubit und ein blauer Ausgang vom anderen (RB).

Für jedes dieser Elemente benötigen wir einen zusätzlichen Balken, um die zu erwartenden Korrelationen anzuzeigen.

Hier haben wir ein Qubit, das durch die beiden oberen Balken dargestellt wird (wir nennen dies das obere Qubit) und ein anderes durch die beiden linken (das linke Qubit). Die verbleibenden Balken, die hier zur Verdeutlichung grau hinterlegt sind, beschreiben die Zusammenhänge.

Korrelationen zwischen blauen Ausgaben werden durch die BB-Leiste angezeigt, die ebenfalls blau ist. Korrelationen zwischen den roten Ausgängen werden durch einen roten RR-Balken angezeigt.

Für die beiden Fälle mit einer roten und einer blauen Ausgabe haben wir RB und RR. Als Kompromiss zwischen Blau und Rot sind diese Balken lila (und diagonal).

In dem oben gezeigten Beispiel wissen wir, dass eine blaue Ausgabe des oberen Qubits 1 und eine rote Ausgabe des anderen Qubits 0 ergibt. Der BR-Balken ist daher voll und bestätigt, dass sie definitiv nicht übereinstimmen. Alles andere ist nur zufällig.

Jetzt haben wir uns überlegt, wie man Qubits visualisiert und wie man sie manipuliert.

Qubits manipulieren

Ein Computer betrachtet nicht nur Bits, er verarbeitet sie. Die Bits werden ständig von 0 auf 1 und wieder zurück geändert, während der Computer einen Kurs von der Eingabe zur Ausgabe aufzeichnet. Ein Quantencomputer funktioniert ähnlich, jedoch mit Qubits.

Das Einfachste, was man ein bisschen machen kann, ist die NOT-Operation. Dies kippt 0 zu 1 und 1 zu 0. Mit unserer Visualisierung ist der Effekt

Ein NICHT verhindert nicht, dass ein Zufallsbit zufällig ist. Daher hat es keine Auswirkung auf einen Balken, der zur Hälfte eingeschaltet ist.

Qubits haben Operationen mit ähnlichen Effekten. Es gibt ein x, das die blaue Ausgabe eines Qubits beeinflusst. Und es gibt ein z, das die rote Ausgabe beeinflusst.

Alle diese Operationen, NICHT für Bits und x und z für Qubits, wirken sich auch auf die Balken aus, die Korrelationen beschreiben. Der Grund dafür ist recht einfach: Wenn Sie zwei Bits haben, die übereinstimmen, und Sie dann eines umdrehen, stimmen diese nicht überein.

Das Ergebnis ist, dass x und z im oberen Qubit ganze Spalten des Gitters betreffen. Hier ist der Effekt von z als Beispiel.

Eine einfache Animation eines Z, das auf das obere Qubit angewendet wird

Beachten Sie, dass im Allgemeinen der violette Balken in dieser Spalte auch von z beeinflusst wird. In diesem Beispiel macht es einfach nicht viel, da dieser Balken zur Hälfte eingeschaltet ist.

Die x- und z-Operationen wirken sich stattdessen auf Zeilen aus, wenn sie auf das Qubit auf der linken Seite angewendet werden. Hier ist ein Beispiel mit x.

Eine einfache Animation eines X, das auf das linke Qubit angewendet wird

Diese Operationen x und z sind Beispiele für Clifford-Operationen. Dieser schicke Name sagt uns nur, dass es sich um Operationen handelt, die sich relativ einfach auf die Stangen auswirken. Tatsächlich basiert diese auf Balken basierende Visualisierung genau auf der Art und Weise, wie wir Clifford-Operationen und ihre Auswirkungen betrachten.

Es gibt auch andere Clifford-Operationen. Es gibt h, das die beiden Ausgänge eines Qubits vertauscht und aus Rot das macht, was das Blau gewesen wäre, und umgekehrt. Es gibt auch Operationen, die auf Qubit-Paare einwirken, so genannte kontrollierte Operationen, die für die Art und Weise, wie wir Informationen in Quantencomputern verarbeiten, von entscheidender Bedeutung sind. Wenn Sie mehr darüber erfahren möchten, ist es am besten, das Tutorial zu spielen.

Sobald Sie genug von dem Tutorial gespielt haben, um die Auswirkungen von Cliffords auf zwei Qubits vollständig zu verinnerlichen, sind Sie gut vorbereitet, Clifford-basierte Programme für eine beliebige Anzahl von Qubits zu schreiben. Dies wird für Entwickler von Quantensoftware von großem Nutzen sein, da Clifford-Operationen ein äußerst nützlicher Bestandteil der Quantenberechnung sind. Tatsächlich wird die überwiegende Mehrheit eines Quantenprogramms aus Clifford-Operationen bestehen

Die Anwendungen, die allein mit Cliffords erzielt werden können, sind jedoch begrenzt. Um den tatsächlichen Bau von Quantencomputern zu rechtfertigen, brauchen wir etwas mehr. Wir brauchen die einfallslos genannten Nicht-Clifford-Operationen.

In diesem Artikel werden nur zwei davon behandelt. Einer heißt normalerweise u3 (pi / 4,0,0). Aber da das nicht sehr eingängig ist, nennen wir es q. Das andere ist das ebenso umständliche u3 (-pi / 4,0,0), das wir qdg nennen.

Die q-Operation wird es uns ermöglichen, über Balken hinauszugehen, die einfach an, aus oder halb an sind. Wir werden auch andere Brüche bekommen. Beginnen wir zum Beispiel mit einem Qubit, dessen blaue Box voll eingeschaltet ist.

Jetzt drücken wir ein q.

Die blaue Box ist meistens immer noch an, was bedeutet, dass sie höchstwahrscheinlich 1 ausgibt. Aber es ist nicht sicher. Der Verlust von sicher für das Blau ist ein Gewinn für das Rot. Es geht von völlig zufällig zu einer starken Neigung zu 1.

Um die volle Wirkung eines q zu erklären, ist es hilfreich, die beiden Balken übereinander zu zeichnen. Wenn wir uns ansehen, wo sich ihre Ebenen treffen, können wir einen Punkt ziehen.

Der Effekt von q ist einfach, den Punkt zu drehen und die Ebenen der Balken mit sich zu ziehen.

Die Auswirkungen von 8 aufeinander folgenden q Operationen

Die q-Operation dreht sich im Uhrzeigersinn um 1/8 des Kreises, und qdg macht dasselbe, jedoch gegen den Uhrzeigersinn.

Nun ist es an der Zeit zu sehen, wie sich q auf unser gesamtes 2-Qubit-Gitter auswirkt. Wir beginnen mit einem q auf dem oberen Qubit. Dazu müssen wir die beiden Spalten übereinander zeichnen.

Dies erzeugt drei Kreise. Das obere ist nur der rote und blaue Balken für das obere Qubit, wie wir es zuvor gesehen haben.

Das mittlere Paar besteht aus der BB-Stange und der RB-Stange. Die BB-Leiste ist immer blau und vertikal und spielt somit den Teil der vertikalen Achse. Jetzt brauchen wir eine horizontale Achse, um den Kreis zu vervollständigen. Dies erledigt die nieghbouring RB Bar. Obwohl normalerweise lila und diagonal, wird es rot und horizontal, um den Kreis zu bilden.

Für den unteren Kreis ist das RR-Feld die eindeutige Wahl für die horizontale Achse. Dies bedeutet, dass die BR-Leiste in diesem Fall die Aufgabe hat, blau und vertikal zu sein.

Für jeden dieser Kreise führt die q-Operation ihre Drehung durch. Die Drehung auf dem oberen Kreis zeigt, wie sich das q auf das obere Qubit auswirkt. Die anderen bestimmen, wie die Korrelationen beeinflusst werden.

Um zu sehen, wie sich q auf das linke Qubit auswirkt, müssen wir stattdessen die beiden Zeilen übereinander zeichnen.

Alles geht so ziemlich gleich. Der Unterschied ist, dass die violetten Balken die entgegengesetzte Rolle spielen, als wir die Säulen zusammengedrückt haben.

Diese Kreise sind nicht unsere Erfindung, sondern Blochkreise. Dies sind vereinfachte Formen der Bloch-Sphäre, die so ziemlich jeder populärwissenschaftliche Artikel über Quantencomputing als Infografik verwendet.

Die Blochkugel

Wie viele Möglichkeiten gibt es, eine Ausgabe aus einem Qubit zu extrahieren? Es ist wahr zu sagen, dass es eine unendliche Anzahl gibt. Es ist auch wahr zu sagen, dass es nur einen gibt. Aber die wahrste Antwort von allen ist, dass es drei gibt. Zwei davon sind das Rot und das Blau, die wir bereits getroffen haben. Nennen wir das letzte also grün.

Wenn wir die roten und blauen Balken kombinieren, erhalten wir einen Kreis. Wenn wir die grüne hinzufügen, erhalten wir eine Kugel. Das ist die Bloch-Kugel.

Die Bloch-Kugel ist die beste Möglichkeit, Nicht-Clifford-Operationen auf einem einzelnen Qubit zu visualisieren. Mit zwei Qubits ist es auch nicht schlecht. Wir müssen nur eine grüne Zeile und Spalte zu unserem Raster hinzufügen. Dann können wir Tripletts von Reihen von Spalten in Sammlungen von Kugeln kombinieren, so wie wir es oben mit Kreisen getan haben.

Für drei Qubits benötigen Sie einen 3D-Würfel anstelle eines Gitters. Bei mehr als drei Qubits werden Sie versuchen, Kugeln aus Zeilen und Spalten eines n-dimensionalen Hyperwürfels zu kompilieren. An diesem Punkt ist es wahrscheinlich am besten, die Bloch-Kugel loszuwerden und eine Visualisierung zu entwickeln, die besser mit dem Quantenprogramm übereinstimmt, das Sie schreiben möchten.

Die grünen Balken wurden aus Gründen der Einfachheit nicht in unser Tutorial aufgenommen. Ohne sie gibt es bereits genug, um die Welt der Quantenprogrammierung zu erkunden. Mit ihnen wird alles etwas aufgeblähter. Sogar wir Wissenschaftler, die an Quantencomputern arbeiten, vergessen sie gern, wann immer dies möglich ist. Wenn Sie lernen möchten, wie wir zu denken, ist dies eine wichtige Lektion.

Schlussfolgerungen

Viele Menschen denken an Quantensysteme als seltsame, zufällige philosophische Rätsel, die mehrere Dinge gleichzeitig betreffen. Dies ist nicht der beste Ansatz für einen Quantenprogrammierer, der ein besseres Gespür für die Praxis haben muss. Um Neulinge zu trainieren, besser zu hacken als wir alten Hacks, haben wir eine Methode zur Visualisierung von zwei Qubit-Zuständen und ein Tutorial dazu entwickelt.

Dazu mischen wir vorhandene Methoden. Insbesondere kombinieren wir die Standardmethode des Denkens über Clifford-Operationen (Spiegeln und Vertauschen von Dingen) mit der Standardvisualisierung für einzelne Qubit-Nicht-Clifford-Operationen (die Bloch-Sphäre).

Wenn Sie eine schönere Visualisierung sehen möchten, die wir für die App-Version von Hello Quantum erstellt haben, lesen Sie den folgenden Schwesterartikel.