Wie erfolgt die Berechnung in einem 2D-Oberflächencode-Array?


10

In einem 2D-Oberflächencode-Gitter gibt es einige Daten-Qubits und einige Mess-Qubits. Angenommen, wir möchten eine 2-Qubit-Berechnung durchführen, beispielsweise ein X-Gate auf Qubit-1, gefolgt von einem CNOT-Gate mit Qubit-1 als Steuerbit und Qubit-2 als Zielbit.

F: Wie wird diese Berechnung in einem Quantencomputer mit einer 2D-Oberflächencode-Anordnung von Qubits realisiert? dh welche Tore werden angewendet und auf welche Qubits?


Vielleicht möchten Sie klären, ob Sie meinen, dass sich alle Qubits in einem 2D-Array befinden oder nur, dass sich die codierten Qubits in Segmenten befinden, die 2D-Arrays sind.
Niel de Beaudrap

Antworten:


9

Ich werde veranschaulichen, wie man Operationen mit logischen Operationen an den Qubits und mit Gitteroperationen für Zwei-Qubit-Operationen ausführen kann.

In den folgenden Diagrammen sind alle 'Punkte' Daten-Qubits: Mess-Qubits werden weggelassen, um die Grundprinzipien klarer zu demonstrieren. Die Mess-Qubits dienen dazu, wenn Sie Stabilisatormessungen durchführen, und sind immer nur an Stabilisator-Messungen beteiligt. In der Geschichte geht es also darum, was Sie mit den Daten-Qubits tun - einschließlich der Stabilisator-Messungen, die Sie an den Daten-Qubits durchführen.

Oberflächencodes und logische Single-Qubit-Pauli-Operationen

Man kann Fragmente der Ebene verwenden, um Qubits zu speichern. Das Bild unten zeigt vier Qubits, die als Teil eines größeren Gitters codiert sind: Die hellen Punkte mit schwarzen Umrissen sind Qubits, die nicht an den codierten Qubits beteiligt sind und sich im Prinzip in einem beliebigen Zustand befinden können, der von den anderen entwirrt ist.


In jedem dieser Fragmente wird das Qubit durch die Stabilisatorrelationen definiert, die (idealerweise ohne Fehler) zwischen den Qubits gelten. Bei Oberflächencodes mit den hier dargestellten Arten von Randbedingungen sind dies entweder 3-Qubit- X- oder -Z- Stabilisatoren um die Grenze und entweder 4-Qubit- X- oder -Z- Stabilisatoren in der Masse oder im Hauptteil des Codes. Das Muster dieser Stabilisatoren ist unten dargestellt. Beachten Sie, dass jeder X- Stabilisator, der sich mit einem Z- Stabilisator überlappt , dies bei zwei Qubits tut, so dass sie miteinander pendeln. (Entschuldigung für die Bildgröße: Ich kann es nicht schaffen, dass es in einer angemessenen Größe angezeigt wird.)



Beachten Sie, dass bei Verwendung der Regelmäßigkeit dieser Stabilisatoren das Oberflächencodefragment nicht quadratisch (oder im Prinzip sogar rechteckig) sein muss. * Dies wird später wichtig.

Es gibt eine Reihe von (Tensorprodukt-) Pauli-Operationen, die mit all diesen Stabilisatoren pendeln. Diese können verwendet werden, um logische Pauli-Operatoren zu definieren , die beschreiben, wie Sie auf die logischen Qubits zugreifen und sie transformieren können . Beispielsweise pendelt ein Produkt von Z- Operatoren über eine beliebige Zeile von Grenze zu Grenze mit allen Stabilisatoren und kann als logischer Z- Operator angesehen werden. Ein Produkt von X- Operatoren über eine beliebige Spalte von Grenze zu Grenze kann auf ähnliche Weise als logischer X- Operator angesehen werden:



Es spielt keine Rolle, welche Zeile oder welche Spalte Sie verwenden: Dies folgt aus der Tatsache, dass ein Produkt aus zwei beliebigen Zeilen von Z- Operatoren oder aus zwei beliebigen Spalten von X- Operatoren als Produkt von Stabilisatoren generiert werden kann und daher eine realisiert Identitätsoperation auf dem codierten Qubit (da die Stabilisatorgeneratoren selbst Operatoren sind, die die Identitätsoperation per Definition auf einem codierten Qubit-Zustand ausführen). Also: Wenn Sie eine X- Operation auf ein codiertes Qubit anwenden möchten , besteht eine Möglichkeit darin, eine solche logische X- Operation anzuwenden , indem Sie X realisieren Operatoren auf jedem Qubit in einer Spalte, die zwischen zwei Grenzen reicht. **

Logische Single-Qubit-Pauli-Messungen

Ein Vorteil des Denkens der codierten Qubits in Form von logischen Operatoren besteht darin, dass Sie auch bestimmen können, wie Sie eine "logische Messung" durchführen können - das heißt, eine Messung nicht nur (einiger) Qubits im Code, sondern auch der Daten, die sie codieren. Nehmen Sie zum Beispiel den obigen logischen X- Operator: Der Operator XX ⊗ ... ⊗ X ist nicht nur einheitlich, sondern auch hermitisch, was bedeutet, dass es sich um eine beobachtbare Zahl handelt, die Sie messen können . (Die gleiche Idee wird natürlich immer mit den Stabilisatoren des Codes verwendet, die wir messen, um Fehler zu erkennen.) Dies bedeutet, dass es ausreicht, die logische X- Messung zu messen , um eine logische X- Messung zu realisieren X.beobachtbar. (Gleiches gilt für das beobachtbare logische Z , wenn Sie eine Standard-Basismessung für Ihr codiertes Qubit durchführen möchten. Alles, was ich unten sage, kann mit den entsprechenden Modifikationen auch auf logische Z- Messungen angewendet werden .)

Nun - das Messen des logischen X- Observablen ist nicht genau das Gleiche wie das Messen jedes dieser Einzel-Qubit- X- Operatoren nacheinander. Der Operator XX ⊗ ... ⊗ X hat nur zwei Eigenwerte, +1 und −1, so dass die Messung dieses präzisen Operators nur zwei Ergebnisse haben kann, während die Messung jedes der n Qubits 2 n Ergebnisse hat. Wenn Sie jeden dieser Single-Qubit- X- Operatoren messen, bleiben Sie nicht im Code-Bereich: Wenn Sie Berechnungen für einen projizierten Zustand nach der Messung durchführen möchten, müssen Sie eine Menge Aufräumarbeiten durchführen, um den wiederherzustellen Qubit in einen ordnungsgemäß codierten Zustand.

Allerdings: Wenn es Ihnen nichts ausmacht, diese Aufräumarbeiten durchzuführen, oder wenn Sie nicht daran interessiert sind, mit dem Status nach der Messung zu arbeiten, können Sie die logische X- Messung simulieren, indem Sie diese Einzel-Qubit-Messungen durchführen und +1 und erhalten −1 Ergebnisse und dann Berechnung ihrer Produkte, um das Ergebnis der Messung von XX ⊗ ... ⊗ X "zu erhalten". (Genauer gesagt: Das Messen all dieser Single-Qubit- X- Operatoren stört keinen Zustand, der sich aus einer Messung des Tensorproduktoperators XX ⊗ ... ⊗ X ergeben würdeund das Produkt dieser Einzel-Qubit-Messungen müsste ein konsistentes Ergebnis mit dem Tensorproduktoperator XX ⊗ ... ⊗ X liefern , damit wir diese kompliziertere Messung simulieren können, wenn wir dies nicht tun. Beachten Sie, dass alle Qubits als Nebeneffekt auf konjugierte Basiszustände projiziert werden.)

Gitterchirurgie für logische Zwei-Qubit-Operationen

Zur Realisierung eines Zwei-Qubit - Betriebes können Sie eine Technik , die als bekannt verwenden Gitter Chirurgie , wobei Sie ‚Merge‘ und ‚split‘ verschiedenes Patches der 2D - Gitter - Operationen zwischen diesen Flecken zu erkennen (siehe [ arXiv: 1111,4022 ], [ arXiv: 1612.07330 ] oder [ arXiv: 1704.08670 ] für eine vollständige Beschreibung dieser Operationen. Offenlegung: Ich bin Autor des dritten dieser Artikel.) Dies kann zwischen zwei benachbarten Flecken des planaren Gitters (wie oben dargestellt) durch Vorbereitung dieser realisiert werden "unbeteiligte" Zeilen und Spalten von Qubits in einem geeigneten Zustand und dann Messen von Stabilisatoren, die Sie zuvor nicht gemessen habenum den Speicher auf ein größeres System zu erweitern. (In der folgenden Abbildung ist der horizontale Abstand zwischen den Codesegmenten und der Qubitspalte in den Zuständen | 0⟩ für die Wirkung übertrieben.)



Dies wirkt sich nicht einheitlich auf die logischen Operatoren des Systems aus und wird am häufigsten verwendet (siehe z. B. [ arXiv: 1612.07330 ]), um eine kohärente XX- oder ZZ- Messung zu realisieren, die zur Realisierung zusammengesetzt werden kann eine CNOT-Operation [arXiv: 1612.07330, Fig. 1 (b)]:

Auf diese Weise können Sie eine CNOT-Operation zwischen einem Paar codierter Qubits realisieren. ***

Fußnoten

* Sie können auch geringfügige Modifikationen des regulären Musters von Stabilisatoren verwenden, wie Letinsky [ arXiv: 1808.02892 ] zeigt, um vielseitigere planare Oberflächendarstellungen von codierten Qubits zu erzielen.

** In der Praxis würden Sie nicht explizit (unvollständige Einzel-Qubit-) Operationen ausführen, sondern die Tatsache ausnutzen, dass der Referenzrahmen für die codierten Qubits einer ist, den Sie gemäß Konvention festlegen und aktualisieren (oder "transformieren"). der Referenzrahmen und nicht der Zustand selbst, wenn Sie eine Pauli-Operation realisieren möchten. Dies ist auch der clevere Weg, um Fehler zu korrigieren: Fehler nicht als "Fehler" zu behandeln, die "behoben" werden müssen, sondern als unkontrollierte, aber beobachtbare Abweichung in Ihrem Referenzrahmen infolge der Interaktion mit der Umgebung. Sie hoffen dann, dass diese Drift langsam genug ist, um sie genau zu verfolgen und die Änderung des Referenzrahmens bei Ihrer Berechnung zu kompensieren. Insbesondere im Zusammenhang mit Tracking-Fehlern,Pauli-Rahmen , und seine Aufgabe besteht darin, den Referenzrahmen in Bezug auf die Pauli-Operationen zu beschreiben, die erforderlich wären, um das System in den Zustand zu versetzen, der normalerweise durch einen fehlerfreien Fehlerkorrekturcode beschrieben wird.

*** Viele Autoren würden diese Konstruktion als den Punkt der Gitterchirurgie beschreiben, und es ist sicherlich die ursprüngliche konkrete Anwendung davon, die im ursprünglichen Artikel beschrieben wurde [ arXiv: 1111.4022 ]. Grundsätzlich ist es möglich, aufwendigere Operationen unter Verwendung von Splits und Merges durchzuführen, indem die Merges und Splits als eigenständige primitive Operationen und nicht nur als Komponenten eines CNOT behandelt werden und vielseitigere (aber nicht besonders schaltungsähnliche) Transformationen verwendet werden - Dies ist im Wesentlichen der Punkt meines Artikels mit Dom Horsman [ arXiv: 1704.08670 ], der die Möglichkeit eröffnet, dass der ZX-Kalkül (eine etwas heterodoxe Darstellung der Quantenberechnung) für Oberflächencode-Speicher direkt praktisch nützlich ist.


1
gute Antwort. Übrigens, falls Sie es nicht wussten, können Sie die Größe der Bilder mithilfe von HTML-Tags direkt anpassen. Zum Beispiel:<img src="https://i.stack.imgur.com/H94nX.png" width="300"/>
glS

@gIS: Danke, meine HTML-Kenntnisse waren schwach, als ich das ursprünglich versuchte! Es scheint jetzt besser zu sein.
Niel de Beaudrap

1
@ AbdullahAsh-Saki: Im Anschluss an Ihre Frage in den Kommentaren zu JamesWooton habe ich einige Anmerkungen zu Messungen von codierten Zuständen hinzugefügt.
Niel de Beaudrap

5

Eine Möglichkeit, Qubits im Oberflächencode zu speichern, sind Paare von "Löchern". Ein Loch ist ein Teil der Oberfläche, in dem Sie nichts tun, anstatt die Stabilisatormessungen durchzuführen, mit denen festgestellt wird, ob Fehler auftreten.

Es gibt zwei verschiedene Arten von Löchern, je nachdem, ob sich die Grenze des Lochs entlang potenzieller X-Mess-Qubits oder entlang potenzieller Z-Mess-Qubits bewegt. Ein CNOT wird durchgeführt, indem ein Loch eines Typs um ein Loch des anderen Typs herumgeführt wird.

Diagrammatisch sieht es so aus:

Geben Sie hier die Bildbeschreibung ein

Im (b) Diagramm bewegt sich die Zeit von links nach rechts. Jeder Balken entspricht der Position eines Lochs im Zeitverlauf. Jedes Qubit wird zwischen den entsprechenden Paaren weißer Balken gespeichert. Der schwarze Balken stellt das Loch dar, das zur Durchführung des CNOT verwendet wird. Es vermeidet das mittlere Qubit (das nicht beteiligt ist), umgibt einen der Balken des unteren Qubits (das das Ziel ist) und umgeht einen "Querbalken", der in das obere Qubit (das die Kontrolle ist) eingeführt wird. So sieht ein Oberflächencode-CNOT aus.


Wo kann ich mehr über Abb. (B) erfahren? Ich habe ähnliche Zahlen in einem der Vorträge von Austin Fowler gesehen. Es bleibt jedoch immer noch sehr schwer fassbar.
Abdullah Ash-Saki

@ AbdullahAsh-Saki arxiv.org/abs/1208.0928 definiert sehr detailliert, was ich unter "Löchern" verstehe. Wenn Sie jedes Mal Scheiben durch das Diagramm ziehen, wird angezeigt, wo sich die Löcher befinden. Nehmen Sie also die Zeitscheibendiagramme von diesem Papier und stellen Sie sich vor, wie sie übereinander gestapelt aussehen würden, und das ist ein Flechtdiagramm.
Craig Gidney

3

Es gibt mehrere Möglichkeiten, Informationen in Oberflächencodes zu speichern. Abhängig von der verwendeten Methode gibt es dann mehrere Möglichkeiten, Gates auszuführen. Zu diesem Thema gibt es also viel zu sagen!

Trotz der Vielzahl von Methoden kommen sie praktisch alle ziemlich gleich: Wenn Sie möchten, dass Ihr Gate durch den Code fehlertolerant gehalten wird, können Sie nur Clifford-Gates (wie X, Z, H, CNOT) ausführen , S). Für andere Tore müssen Sie zusätzliche Mechanismen aufrufen, um fehlertolerant zu werden, z. B. die Destillation im magischen Zustand.

Aber Sie haben in Ihrem Beispiel nichts anderes als Clifford verlangt. Sie wollten nur ein X und ein CNOT. Das macht die Sache einfach.

Nehmen wir als konkretes Beispiel den unten gezeigten 17-Qubit-Oberflächencode (wie in diesem Artikel dargestellt , dessen Autor ich bin).

Geben Sie hier die Bildbeschreibung ein

n=908

σxσx0σx1σx3σx4σx1σx2σz

σxσx0σx3σx6σxσz3σz4σz5

σxsigmazXZ

X=σx0σx3σx6,Z=σz3σz4σz5

X

AB0,1,2,0A0A

CNOT(A,B)AB

CNOT(0A,0B)CNOT(1A,1B)CNOT(1A,1B)

|0|1

|0~=|0n|0|1~=X|0~|1|0

|0|0~|0~|1|1~|1~

Wenn Sie über die Wirkung der transversalen CNOTs in Bezug auf diese Zustände nachdenken, sollten Sie hoffentlich sehen können, wie sie als CNOT auf den logischen Qubits wirken.


2
X=σx0σx3σx6X=σx0σx3σx4

Du hast recht. Ich habe es korrigiert.
James Wootton

Eine ergänzende Frage: Wie ist die Beziehung zwischen dem Messoperator und dem physikalischen Auslesen eines Qubits? (Ich habe viele Stellen gefunden, an denen erwähnt wird, dass "die Messung vom Messoperator Pauli-X definiert wird".)
Abdullah Ash-Saki,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.