Wie rechnet ein Quantencomputer auf Hardwareebene?


27

Als ich diesen Reddit-Thread las, stellte ich fest, dass ich selbst nach einigen Monaten des Lernens über Quantencomputer absolut keine Ahnung habe, wie ein Quantencomputer tatsächlich funktioniert.

Um die Frage zu präzisieren, nehmen wir an, wir haben einen supraleitenden Qubit-basierten 5-Qubit-Quantencomputer (wie den 5-Qubit-IBM-Quantencomputer). Ich tippe 2+3 mit einer Tastatur auf einem Monitor ein (etwa in einer einfachen Taschenrechner-App, die der Quantencomputer haben könnte). Danach sollte es mir 5 . Aber geht es auf Hardware-Ebene weiter? Gehen elektrische Signale, die den Eingängen , und , zur Verarbeitungseinheit des Computers? "Initialisiert" das irgendwie das Cooper-Elektronenpaar? Was passiert mit dem Elektronenpaar Qubits Cooper danach (erraten , würden sie auf dem von einigen gearbeitet werden Quantengatter , die wiederum ihrerseits23+Blackboxen )? Wie gibt es mir endlich die Ausgabe ?5

Ich wundere mich, wie wenig ich über die grundlegende Funktionsweise eines Quantencomputers nachdenken konnte, wenn ich im Internet suchte.

Antworten:


26

Erstens führt ein klassischer Computer grundlegende Berechnungen auf Hardwareebene in der Arithmetik- und Logikeinheit (ALU) durch. Die Logikgatter nehmen niedrige und hohe Eingangsspannungen auf und verwenden CMOS , um Logikgatter zu implementieren, die es ermöglichen, einzelne Gatter auszuführen und aufzubauen, um größere, kompliziertere Operationen auszuführen. In diesem Sinne bedeutet das Tippen auf einer Tastatur, dass elektrische Signale gesendet werden, die schließlich in einem Befehl (in Form von mehr elektrischen Signalen) an die ALU enden, die korrekten Vorgänge ausgeführt werden und mehr Signale zurückgesendet werden, die in umgewandelt werden Zeigen Sie Pixel in Form einer Zahl auf Ihrem Bildschirm an.

Was ist mit einem Quantencomputer?

Quantenprozessoren können auf zwei Arten verwendet werden: allein oder in Verbindung mit einem klassischen Prozessor. Die meisten (einschließlich Ihres Beispiels für supraleitende) Quantenprozessoren verwenden jedoch keine elektrischen Signale, obwohl Maus, Tastatur und Monitor usw. auf diese Weise weiterhin Informationen senden und empfangen. Es muss also eine Möglichkeit geben, das elektrische Signal in das vom Quantenprozessor verwendete Signal umzuwandeln (auf das ich später noch eingehen werde) und dem Prozessor zu sagen, was Sie tun möchten. Beide Probleme können gleichzeitig durch klassische Vor- und Nachbearbeitung gelöst werden, z. B. in IBMs QISKit . Microsoft geht in Q # etwas mehr von oben nach unten vorHier werden Programme für einen Quantenprozessor im Gegensatz zu einem Skript eher wie ein "klassisches" Programm geschrieben und dann kompiliert und möglicherweise für die Hardware optimiert . Das heißt, wenn Sie eine Funktion haben, kann sie klassische Operationen ausführen sowie den Quantenprozessor aufrufen, um alle erforderlichen Quantenoperationen auszuführen. Dies führt mich zum ersten Punkt:

Wenn Sie einen Computer mit Zugriff auf einen Quantenprozessor bitten, etwas wie zu berechnen , besteht eine sehr gültige Lösung darin, es wie gewohnt auf dem klassischen Prozessor zu berechnen.2+3

OK, sagen wir mal , dass Sie den klassischen Prozessor sind zwingt den Quantenprozessor zu verwenden, die in diesem Fall eine von IBM supraleitenden Chips ist, mit Transmon Qubits, sagen wir mal, die IBM QX4 . Dies ist zu klein, um eine Fehlerkorrektur durchzuführen. Lassen Sie uns das ignorieren. Die Verwendung eines Schaltungsmodellprozessors besteht aus drei Teilen: Initialisierung, einheitliche Entwicklung und Messung, die im Folgenden näher erläutert werden. Davor,

Was ist ein Transmon?

EJ=ichcΦ0/2π Φ0=h/2eichcVGCGEC=(2e)2/2CC

H=EC(n-nG)2-EJcosϕ,
nϕnG=CGVG/2e|n=|0|n=|1E0=ω0E1=ω1ω=ω1-ω0EC=5EJEJEC

Schließlich kommen wir zur Hauptfrage:

Wie initialisieren, entwickeln und messen wir ein Transmon?

  • E(t)=Ex(t)cos(ωdt)+Ey(t)Sünde(ωdt)0<t<tGωd
    H=(ω1-ωd12Ex(t)-ich2Ey(t)12Ex(t)+ich2Ey(t)ω2-2ωd)
  • ωrGω-ωr±G2/(ω-ωr) Abhängig vom Zustand des Qubits kann dann durch Anlegen eines Mikrowellenimpulses und Analysieren der Durchlässigkeit und des Reflexionsvermögens (durch einen Computer) das Qubit gemessen werden.
  • |2|0|1|1. Ein vermiedenes Kreuzen zwischen diesen Zuständen bedeutet, dass ein 2-Qubit-Phasengatter implementiert werden kann, obwohl im Allgemeinen 2-Qubit-Gatter weniger gut implementiert sind (eine geringere Wiedergabetreue aufweisen) als einzelne Qubit-Gatter.
  • X|1|0

Das Hinzufügen von 2 und 3 ist nun eine "einfache" Angelegenheit, die Qubits zu initialisieren, die einem klassischen reversiblen Addierer entsprechenden Gates auszuführen und das Ergebnis zu messen, alles wird automatisch implementiert. Das Messergebnis wird dann wie gewohnt von einem klassischen Computer zurückgegeben.

Als Bonus erscheint es ein wenig sinnlos, alles durchzugehen, um Gates zu implementieren, die sowieso auf einem klassischen Computer ausgeführt werden könnten, und es stellt sich heraus, dass es möglich ist, einen Quantenaddierer näherungsweise zu implementieren , der zwei Quanten addiert (im Gegensatz dazu) zu klassischen) Zuständen, mit einigen Fehlern, auf einem der Prozessoren von IBM.


15

Hier ist mein Verfahren zum Rechnen auf einem Quantencomputer.

Schritt 1: Finden Sie eine klassische Rennstrecke, die genau das macht, woran Sie interessiert sind.

In diesem Beispiel ein Volladdierer.

klassischer Volladdierer

Schritt 2: Wandeln Sie jedes klassische Tor in ein reversibles Tor um.

Halten Sie Ihre Ausgangsbits von Anfang an bereit und initialisieren Sie sie mit CNOTs, CCNOTs usw.

semi-reversibler Volladdierer

Schritt 3: Verwenden Sie temporäre Ausgänge.

Wenn Sie dies tun, um beispielsweise zu steuern, ob ein Grover-Orakel mit -1 phasiert oder nicht, ist es jetzt an der Zeit, ein Z-Gatter an Ihr Ausgangs-Qubit anzulegen.

Schritt 4: Befreien Sie sich von Zwischenwerten, indem Sie genau das Gegenteil von dem tun, was Sie getan haben, um sie zu berechnen.

Dies kann je nach dem, wie die Schaltung in Ihren Gesamtalgorithmus passt, das Entfernen der Ausgangsbits umfassen oder nicht.

Halbreversibler Volladdierer 2

Schritt 5: (Manchmal) Beseitigen Sie für jedes Ausgangsbit, das Sie behalten, ein Eingangsbit.

Und ich meine nicht "Lass sie auf den Boden fallen", ich meine, wende Operationen an, die dazu führen, dass sie mit Sicherheit 0 werden.

Wenn Sie rechnen c+=a, ist es cin der Regel schlecht, eine Kopie des ursprünglichen Werts von zurückzulassen . Es zerstört die Kohärenz. Sie müssen sich also Ihre Addiererschaltung (oder was auch immer) ansehen und überlegen, ob es eine Möglichkeit gibt, Ihre Ausgangsbits zu verwenden, um Ihre Eingangsbits loszuwerden. Beispielsweise c+akönnten Sie nach der Berechnung eine vorübergehende Subtraktion außerhalb des Platzes in ein Register r, x oder r in das Register durchführen, in dem die unerwünschte Kopie von gespeichert ist c, und dann die vorübergehende Subtraktion zurücksetzen.

(Eine bemerkenswerte Ausnahme zu "Wenn Sie Ihre Ausgabe behalten, behalten Sie nicht so viel von Ihrer Eingabe" ist Shors Algorithmus. Shors Algorithmus entschlüsselt seine Eingabe absichtlich , aber auf eine ganz bestimmte Weise, die bei der Periodenfindung hilft.)

Schritt 6: Seien Sie effizient

In Schritt 5 habe ich gesagt, dass Sie die Eingabe einer Inplace-Addition aufheben können, indem Sie eine Out-Place-Addition gefolgt von einer temporären Out-Place-Subtraktion ausführen. Das ist ein bisschen albern. Der gesamte Additionsprozess wird 4n Qubits umfassen (n zum Halten a, n zum Halten c, n zum Halten c+a, n zum Halten (c+a)-a). Wenn Sie schlauer sind, können Sie alles in 2nQubits oder (etwas einfacher) in 2n+1Qubits einpassen :

Cuccaro-Addierer

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.