Erstellen größerer kontrollierter Nots aus einzelnen Qubit-, Toffoli- und CNOT-Gates ohne Arbeitsbereich


8

Übung 4.29 aus Quantenberechnung und Quanteninformation von Nielsen und Chuang hat mich verblüfft.

Suchen Sie eine Schaltung mit Toffoli-, CNOT- und Einzel-Qubit-Gattern, die ein -Gatter (für ) ohne Arbeits-Qubits implementiert .Ö(n2)C.n(X.)n>3

Ich habe herausgefunden, dass dies nicht klassisch möglich ist .

Ich habe herausgefunden, wie es mit exponentiell präzisen Gates geht (verschachteln Sie die Doppelsteuerung aus Einzelsteuerungen und Quadratwurzel der Operation Mal in sich selbst).Ö(2n)n- -2

Ich habe versucht, die obige Konstruktion so zu verallgemeinern, dass eine lineare Kombination von gesteuerten Operationen akkumuliert wird. Wenn ich zum Beispiel 3 Steuerelemente mit den Namen A und B und C habe und einen Vektor aus den verschiedenen Fällen [0, A, B, C, AB, BC, AC, ABC] erstelle, dann:

  • Das bedingungslose Anwenden einer Operation fügt [1, 1, 1, 1, 1, 1, 1, 1] hinzu.
  • Durch Steuern einer Operation auf A werden [0, 1, 0, 0, 1, 1, 0, 1] hinzugefügt.
  • Xoring A in C und anschließende Steuerung einer Operation auf C (dann Rückgängigmachen des xor) würde [0, 1, 0, 1, 1, 1, 0, 0] hinzufügen.
  • Das Xoring (A und B) in C über ein Toffoli-Gate und das anschließende Steuern einer Operation an C würde [0, 0, 0, 1, 1, 1, 1, 0] hinzufügen.

Dann würde ich versuchen, die verschiedenen Vektoren, die ich machen kann, zu addieren (eine Wurzel von X anwenden) und zu subtrahieren (inverse Quadratwurzel anwenden), bis das Ergebnis als [0, 0, 0, 0, 0, 0, 0, N] herauskommt. .

Aber ich treffe immer wieder auf verschiedene Wände, z. B. auf Lösungen, die zu großen Vielfachen führen (dh die von mir verwendeten Tore werden exponentiell präzise, ​​was ich für ein Nein-Nein halte) oder einfach nicht in der Lage sind, das System aufgrund des Zusammenspiels zu lösen Erzeugen von Elementen mit AND / XOR und anschließendes Lösen mit + / * als Nichtstandard oder Erstellen einer exponentiellen Anzahl von Gates.

Welche anderen Ansätze sollten Sie ausprobieren?

Antworten:


5

Schließlich löste ich dies für Tore. Ich habe eine Trilogie mit Blog-Posts darüber geschrieben.Ö(n)

  1. Konstruieren großer kontrollierter Nots (klassisch mit einer Ancilla)

  2. Große Inkremente konstruieren (klassisch mit einer Ancilla)

  3. Verwenden von Quantum Gates anstelle von Ancilla Bits

Natürlich wäre es scheiße, wenn Sie dies in zwanzig Jahren finden würden und meine Website schon lange nicht mehr vorhanden ist. Daher folgen die grundlegenden Schritte in schnell beschriebener Bildform.

1. Booten Sie ein ausleihbares Ancilla-Bit

Verwenden Sie eine Quadratwurzel und ihre Umkehrung, um die maximale Anzahl von Steuerelementen um eins zu reduzieren, und erstellen Sie für jede Operation einen unbeteiligten Draht. Verschieben Sie dann die Steuerelemente iterativ von Nicht-Nicht-Operationen und ordnen Sie die Cruft neu an, die zu großen Inkrement-Gates und Single-Qubit-Phase-Gates führt.

Bootstrapping eines Ancilla-Bits

2. Verwenden Sie ein einzelnes Ancilla-Bit, um die Operationen zu halbieren

Verwenden Sie für jede große Operation den nicht beteiligten Draht als geliehenes Ancilla-Bit. Verwenden Sie es, um das große Inkrement und die gesteuerten Nicht-Gates in kleinere Operationen umzuwandeln, bei denen jeweils ungefähr die Hälfte der Drähte unbeteiligt ist. Wiederholen Sie diesen Vorgang zweimal, falls für den nächsten Schritt genügend Arbeitsraum erforderlich ist.

Halbierung der Größe von Controlled-Not mit Ancilla

Halbierung des Inkrementierers mit Ancilla

3. Verwenden Sie zum Abschluss viele Ancilla-Bits

Leihen Sie sich für jede noch zu große Operation die vielen unbeteiligten Drähte als Ancilla-Bits aus. Verwenden Sie sie, um bis zu Toffoli-oder-kleineren Toren zu gelangen.

Reduziert auf Nicht-Toffolis reduzieren

Inkrementierer auf Toffolis reduzieren

Mit diesen drei Schritten gelangen Sie von einem vollständig kontrollierten, nicht linear zu vielen Toffoli-, CNOT- und Single-Qubit-Gates. Es gibt ein paar implizite Teile, wie man ein Steuerelement zu einem Inkrement-Gate zusammenführt, aber sie sind ziemlich einfach.

(Entschuldigen Sie den inkonsistenten Stil der Diagramme.)

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.