[PYTHON] Quantenteleportation mit Qiskit!

Einführung

Ich möchte mit Quantenteleportation mit IBMs Qiskit experimentieren. Es ist schwierig, dies theoretisch zu erklären, daher werde ich dieses Mal versuchen, eine Schaltung zu erstellen und sie mit einem Simulator auszuführen. Es bedeutet: "Lass es uns zuerst tun, anstatt es zu verstehen." Lass uns anfangen.

Umgebung

Q Experience JupyterNotebook

Was ist Qiskit?

Es ist ein Python-OSS, das tatsächlich "IBM Q" ausführen kann, einen IBM-Quantencomputer. Es enthält auch eine Simulatorfunktion, mit der Sie die Quantenprogrammierung üben können. Jeder kann es sofort in IBM Q Experience verwenden (https://www.ibm.com/quantum-computing/technology/experience/).

Was ist Quantenteleportation?

Es ist ein Phänomen, dass der vorliegende ** Quantenzustand sofort weit weg übertragen wird **.

In Einsteins Relativitätstheorie ist nichts schneller als Licht. Es gibt jedoch eine ** Lüge **, dass Quantenteleportation Interaktionen über die Lichtgeschwindigkeit hinaus übertragen kann.

Wird die Quantenteleportation die Welt verändern?

Da der vorliegende Quantenzustand weit entfernt reproduziert werden kann, denke ich, dass eine Art Transportproblem gelöst werden kann. Da es sich jedoch tatsächlich um ein sehr kleines Weltereignis handelt, wird erwartet, dass es eher auf Information und Kommunikation als auf Materialtransport angewendet wird.

Aber wenn die Anwendung fortschreitet, ist echte Teleportation möglicherweise kein Traum ...?

Quantenteleportation Quantenexperiment

Die Erklärung ist im Begriff, das Experiment zu starten.

Qiskit vorbereiten

Für die Verwendung von Q Experience sind keine Vorbereitungen erforderlich. Wenn Sie es lokal ausführen möchten, können Sie es mit pip installieren.

pip install qiskit

Machen Sie eine Quantenschaltung und führen Sie sie mit einem Simulator aus

Zunächst aus der Bibliotheksvorbereitung.

#Bibliothek importieren
from qiskit import QuantumRegister, ClassicalRegister, BasicAer

Machen Sie eine Basisschaltung.

#Bereiten Sie klassische Register vor (untere 3 des Schaltplans)
cr0 = ClassicalRegister(1)
cr1 = ClassicalRegister(1)
cr2 = ClassicalRegister(1)

#Machen Sie eine Basisschaltung (3 Quantenregister + 3 klassische Register)
circ = QuantumCircuit(QuantumRegister(3), cr0, cr1, cr2)

#Bestätigung anzeigen
circ.draw(output='mpl')

output_2_0.png

Es ist fertig. Die Rolle der Schaltung ist wie folgt. Es wird angenommen, dass das dritte Quantenregister und das dritte klassische Register weit entfernt sind.

image.png

Als nächstes platzieren wir das Gate in der Schaltung. Es ist einfach zu machen, platzieren Sie einfach das Tor auf der Rennstrecke.

#Machen Sie einen Stromkreis bis zur Messung
circ.h(0)
circ.h(1)
circ.cx(1,2)
circ.cx(0,1)
circ.h(0)

#Bestätigung anzeigen
circ.draw(output='mpl')

output_3_0.png

Es ist sehr leicht. Machen wir den Rest der Strecke. Nach einer Pause mit einer Barriere werde ich das Tor wieder setzen. Der Wert des klassischen Registers (1. und 2.) bewirkt die Gate-Operation des Quantenregisters (3.), so dass c_if enthalten ist, die Prozedur jedoch dieselbe ist.

#Machen Sie den Rest der Schaltung
circ.barrier(range(3))
circ.measure(0, 0)
circ.measure(1, 1)
circ.z(2).c_if(cr0, 1)
circ.x(2).c_if(cr1, 1)
circ.measure(2, 2)

#Bestätigung anzeigen
circ.draw(output='mpl')

output_4_0.png

Es ist sehr einfach, die Schaltung ist jetzt abgeschlossen. Quantenteleportation scheint schwierig, aber es ist nur dies in der Schaltungsdarstellung.

Lassen Sie es uns auf dem Simulator ausführen.

#Im Simulator ausführen
backend = BasicAer.get_backend('qasm_simulator')
#Standardmäßig 1024 Mal ausführen
job = execute(circ, backend) 
result = job.result()

Damit ist die Ausführung abgeschlossen. Sehen wir uns das Ausführungsergebnis an.

#Zeigen Sie das Ausführungsergebnis insgesamt 1024 Mal mit 8 Mustern an
result.get_counts(circ)

Das Ausgabeergebnis ist wie folgt.

    {'0 0 0': 100,
     '1 1 0': 127,
     '1 0 1': 147,
     '1 0 0': 140,
     '0 0 1': 131,
     '0 1 0': 128,
     '0 1 1': 131,
     '1 1 1': 120}

Die Ansicht ist wie folgt.

image.png

Beim tatsächlichen Teleportieren wird das dritte Quantenregister nicht gemessen und so verwendet, wie es ist.

Wenn keine Messung durchgeführt wird, wird der gleiche Zustand wie das erste Quantenregister der Übertragungsquelle im dritten Quantenregister reproduziert (teleportiert). Wenn ich es messe, ist der Zustand "Überlagerung" unterbrochen, aber da dies ein Experiment ist, messe ich es, um zu sehen, ob es sich wirklich teleportiert.

Warte eine Minute

Schauen wir uns die resultierende Schaltung genauer an.

image.png

Führen Sie basierend auf dem ersten und zweiten klassischen Register, das die Übertragungsquelle darstellt (entsprechend den Messergebnissen des ersten und zweiten Quantenregisters), die Gate-Operation (Z, X) des Quantenregisters (drittes) des Übertragungsziels durch. Sie können sehen, dass es gibt.

Um eine Quantenteleportation zu realisieren, ist es tatsächlich notwendig, "das Übertragungsziel über die Messergebnisse der Übertragungsquelle zu informieren". Wie sagst du ...? Ist es LINE?

Wenn Sie dies nicht tun, befindet sich das Quantenbit am Übertragungsziel möglicherweise in einem geringfügig anderen Zustand als die Übertragungsquelle.

Es gibt Fallstricke bei der Quantenteleportation! !! (Am Ende war es eine Geschichte, dass klassische Kommunikation nicht notwendig ist!)

abschließend

Diesmal habe ich dort einen Kommentar geschrieben. Da es zunächst schwierig ist, das Konzept eines Quantencomputers zu verstehen, denke ich, dass es möglich ist, "es zuerst zu berühren". Lassen Sie uns berühren und lernen, Ihr Verständnis zu vertiefen. (Ich sage es mir, weil die Theorie schwierig ist)

Referenz

https://qiskit.org/documentation/index.html https://github.com/Qiskit/qiskit-iqx-tutorials/blob/master/qiskit/fundamentals/1_getting_started_with_qiskit.ipynb https://github.com/maru-labo/ibm-q-handson/blob/master/5_ibm_q.ipynb

Recommended Posts

Quantenteleportation mit Qiskit!
Qiskit: Quanten-Fourier-Transformation
Qiskit: Realisierung künstlicher Neuronen mit Quantenschaltungen (Implementierung)
Kombinationsoptimierung mit Quantenglühen
Qiskit: Implementierung einer Quantenbolzenmaschine
Qiskit: Implementierung von Quantenhypergraphzuständen
Qiskit: Implementierung von Quantum Circuit Learning (QCL)