Visualisierung von Bits und Qubits

In den letzten Jahren war ich ein bisschen besessen von zwei Dingen: dem Programmieren von Quantencomputern und Gamification. Diese Interessen sind nun unweigerlich zusammengestoßen, was zu einem gamifizierten Tutorial für die Quantenprogrammierung geführt hat.

Ein wichtiger Teil 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, konzentriert sich unsere Visualisierung nur auf ein Paar Qubits.

Die Visualisierung ist die Hauptmethode, mit der der Benutzer des Tutorials sein Qubit-Paar versteht und sich darauf bezieht. Aber wir wollen nicht, dass seine Nützlichkeit dort endet. Im Idealfall sollten wir alles auf Prinzipien stützen, die auch für eine größere Anzahl von Qubits gelten. Der Benutzer kann dann weiter nach diesen Prinzipien denken, wenn er viel größere Quantenprogramme entwirft.

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

Visualisierung eines Bitpaars

Beginnen wir mit etwas Schönem und Einfachem: dem Bit. Jedes Bit ist entweder eine 0 oder eine 1. Stellen wir dies in Bildform dar.

Die Zustände 0 und 1 eines Bits mit einem ASCII-Kunstkreis 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. Das sind natürlich immer noch nur 0 oder 1, aber wir wissen nicht welche. Stellen wir unsere Unwissenheit mit einem Balken dar, der halb eingeschaltet (oder halb ausgeschaltet) ist.

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

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

Zwei Bits nebeneinander. Der unbeschwerte 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, solange 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 denselben zufälligen Prozess erzeugt wurden und daher immer denselben 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 erzeugt 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 genannte 1 ist, und umgekehrt

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

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

Diese unterschiedlichen Möglichkeiten haben ein sehr unterschiedliches Verhalten. Unsere Visualisierung ist also unvollständig, wenn sie uns nicht sagt, welche wir haben.

Um diese Informationen in unsere Grafiken aufzunehmen, 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 zufälligen Bits 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 sind, ist der zusätzliche Balken zur Hälfte aktiviert.

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

Visualisierung eines Qubit-Paares

Bits sind recht einfach und vertraut. Sie brauchen keine ausgefallene Visualisierung wie diese. Aber ihre Quantencousins ​​tun es. Kommen wir zu Qubits.

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

Wir werden uns auf zwei Arten konzentrieren, um ein bisschen aus jedem Qubit zu extrahieren, und dies mit zwei Balken darstellen. 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, definitiv eine 1 zu geben, wenn es nach einer blauen Ausgabe gefragt wird, dass es wirklich nicht weiß, 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 dies auf völlig unvorhersehbare Weise. Es ist nicht die Pseudozufälligkeit, die uns Computer normalerweise geben. Es ist wahre Zufälligkeit. Dies ist eines der Dinge, die Qubits einzigartig und nützlich machen: etwas, das wir in einem anderen Artikel näher erläutern 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 bleibt.

Da Qubits immer zufällig sind, brauchen wir wieder etwas Besonderes, um die Korrelationen im Auge zu behalten. Für zwei Bits haben wir gesehen, dass nur ein zusätzlicher Balken ausreicht. Aber für zwei Qubits haben wir mehr mögliche Korrelationen, die wir verfolgen können.

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);
  • Eine blaue Ausgabe von dem einen Qubit und eine rote Ausgabe von dem anderen (BR);
  • Ein roter Ausgang von dem einen Qubit und ein blauer von dem anderen (RB).

Für jeden dieser Punkte benötigen wir einen zusätzlichen Balken, der uns sagt, welche Korrelationen zu erwarten sind.

Hier haben wir ein Qubit, das durch die beiden Balken oben dargestellt wird (wir nennen dies das obere Qubit), und ein anderes durch die beiden links (das linke Qubit). Die verbleibenden Balken, die der Übersichtlichkeit halber grau hinterlegt sind, beschreiben die Korrelationen.

Korrelationen zwischen blauen Ausgängen 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 einem roten und einem blauen Ausgang 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 vom oberen Qubit 1 ergibt und eine rote vom anderen Qubit 0. Der BR-Balken ist daher voll, was bestätigt, dass sie definitiv nicht übereinstimmen. Alles andere ist nur zufällig.

Jetzt haben wir herausgefunden, wie man Qubits visualisiert. Lassen Sie uns anfangen, sie zu manipulieren.

Qubits manipulieren

Ein Computer betrachtet Bits nicht nur, sondern verarbeitet sie. Die Bits werden ständig von 0 auf 1 und wieder zurück geändert, während der Computer einen Kurs von Eingabe zu Ausgabe aufzeichnet. Ein Quantencomputer macht fast dasselbe, aber mit Qubits.

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

Ein NOT verhindert nicht, dass ein zufälliges Bit zufällig ist, daher hat es keine Auswirkung auf einen Balken, der zur Hälfte aktiviert ist.

Qubits haben Operationen mit ähnlichen Effekten. Es gibt ein x, das die blaue Ausgabe eines Qubits beeinflusst. Und es gibt einen namens z, der 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 ganz einfach: Wenn Sie zwei Bits haben, die übereinstimmen, und dann eines umdrehen, werden sie stattdessen nicht übereinstimmen.

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

Eine einfache Animation von az, die auf das obere Qubit angewendet wird

Beachten Sie, dass der violette Balken in dieser Spalte im Allgemeinen auch von z beeinflusst wird. In diesem Beispiel macht es einfach nicht viel, weil diese Leiste halb eingeschaltet ist.

Die x- und z-Operationen wirken sich stattdessen auf Zeilen aus, wenn sie auf das Qubit links 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 ausgefallene Name sagt uns nur, dass es sich um Operationen handelt, die sich relativ einfach auf die Balken auswirken. Tatsächlich stammt diese barbasierte Visualisierung genau aus der Art und Weise, wie wir über Clifford-Operationen und ihre Auswirkungen nachdenken.

Es gibt auch andere Clifford-Operationen. Es gibt h, das die beiden Ausgänge eines Qubits vertauscht und die rote Ausgabe so macht, wie die blaue gewesen wäre, und umgekehrt. Es gibt auch Operationen, die auf Qubit-Paare wirken, sogenannte 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, spielen Sie am besten das Tutorial.

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 eine große Fähigkeit für Entwickler von Quantensoftware sein, da Clifford-Operationen ein äußerst nützlicher Teil der Quantenberechnung sind. Tatsächlich wird die überwiegende Mehrheit aller Quantenprogramme aus Clifford-Operationen bestehen

Trotzdem sind die Anwendungen, die nur mit Cliffords erreicht werden können, begrenzt. Um den tatsächlichen Bau von Quantencomputern zu rechtfertigen, brauchen wir etwas mehr. Wir brauchen die einfallslos benannten Nicht-Clifford-Operationen.

Wir werden in diesem Artikel nur zwei betrachten. Man wird normalerweise u3 genannt (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 ermöglicht es uns, über Balken hinauszugehen, die einfach ein-, ausgeschaltet oder halb eingeschaltet sind. Wir werden auch andere Fraktionen bekommen. Beginnen wir zum Beispiel mit einem Qubit, dessen blaue Box vollständig aktiviert ist.

Jetzt schlagen wir es mit einem q.

Die blaue Box ist meistens noch eingeschaltet, was bedeutet, dass sie höchstwahrscheinlich 1 ausgeben wird. 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 von aq 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 besteht einfach darin, den Punkt zu drehen und die Ebenen der Balken mit sich zu ziehen.

Die Auswirkungen von 8 aufeinanderfolgenden q-Operationen

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

Jetzt ist es Zeit zu sehen, wie q unser gesamtes Zwei-Qubit-Gitter beeinflusst. Wir beginnen mit aq am oberen Qubit. Dazu müssen wir die beiden Spalten übereinander zeichnen.

Dadurch entstehen drei Kreise. Der oberste ist nur der rote und blaue Balken für das obere Qubit, wie wir zuvor gesehen haben.

Das mittlere Paar besteht aus der BB-Leiste und der RB-Leiste. Der BB-Balken ist immer blau und vertikal und spielt somit die Rolle der vertikalen Achse. Jetzt brauchen wir eine horizontale Achse, um den Kreis zu schließen. Dies geschieht durch 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 klare Wahl für die horizontale Achse. Dies bedeutet, dass der BR-Balken in diesem Fall blau und vertikal ist.

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 selbst auswirkt. Die anderen bestimmen, wie die Korrelationen beeinflusst werden.

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

Alles läuft ähnlich. Der Unterschied besteht darin, dass die violetten Balken die entgegengesetzte Rolle spielen, als wenn wir die Spalten zusammengedrückt hätten.

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

Die Bloch-Kugel

Wie viele Möglichkeiten gibt es, eine Ausgabe aus einem Qubit zu extrahieren? Es ist wahr zu sagen, dass es unendlich viele 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 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. Dies ist die Bloch-Kugel.

Die Bloch-Kugel ist der beste Weg, um Nicht-Clifford-Operationen auf einem einzigen Qubit zu visualisieren. Es ist auch nicht schlecht mit zwei Qubits. Wir müssen nur eine grüne Zeile und Spalte zu unserem Raster hinzufügen. Dann können wir Tripletts von Spaltenreihen zu 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 Rasters. Bei mehr als drei Qubits versuchen Sie am Ende, Kugeln aus Zeilen und Spalten eines n-dimensionalen Hyperwürfels zu kompilieren. An diesem Punkt ist es wahrscheinlich am besten, die Bloch-Sphäre loszuwerden und eine Visualisierung zu entwickeln, die besser auf das Quantenprogramm abgestimmt ist, 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 nur ein bisschen aufgeblähter. Sogar wir Wissenschaftler, die am Quantencomputer arbeiten, vergessen sie gerne, wann immer dies möglich ist. Wenn Sie lernen möchten, wie wir zu denken, ist dies eine wichtige Lektion.

Schlussfolgerungen

Viele Menschen betrachten Quantensysteme als seltsame, zufällige philosophische Rätsel, bei denen mehrere Dinge gleichzeitig auftreten. Das ist nicht der beste Ansatz für einen Quantenprogrammierer, der praktischer denken muss. Um Neulinge auf dem Feld darin zu schulen, besser als wir alten Hacks zu hacken, 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 Standard-Denkweise über Clifford-Operationen (Umdrehen und Tauschen von Dingen) mit der Standardvisualisierung für Einzel-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.