[PYTHON] Quantum Computer Implementierung von Quantum Walk 1

Quantencomputer-Implementierung von Quantum Walk 1 ~ Zyklus 4 auf Adamar Walk ~

Ich bin ein Doktorand der Mathematik des Konno Lab der Yokokuni Universität, der Quantenwanderungen studiert. Begann 2017 mit den Mitgliedern des Labors mit dem Studium von Quanteninformationen. Seit 2018 implementieren wir es auch mit IBM Q. Da ich bisher Hinweise zur Implementierung von Quantenalgorithmen und Quantenwanderungen gesammelt habe, werde ich sie einzeln zusammenfassen.

Dieses Mal werden wir den Adamal Walk in *** Cycle 4 *** durchführen. Die hier vorgestellte Methode ist fast dieselbe wie Effiziente Quantenschaltungsimplementierung von Quantenwanderungen.

Über Hadamard Walk on Cycle 4

Quantenwanderung

Quantum Walk ist [Quantum Version von Random Walk](https://ja.wikipedia.org/wiki/%E9%87%8F%E5%AD%90%E3%82%A6%E3%82%A9%E3 Es wurde als% 83% BC% E3% 82% AF) eingeführt. Der Unterschied zum Random Walk besteht darin, dass die Wahrscheinlichkeit erhalten wird, indem die zeitliche Entwicklung der Wahrscheinlichkeitsamplitude und nicht die zeitliche Entwicklung der Wahrscheinlichkeit berücksichtigt wird und das Normquadrat der Wahrscheinlichkeitsamplitude genommen wird. Als Erklärungsbuch der Mathematik "Quantum Walk" und auch zusammengefasst von Mathematik über Physik, Ingenieurwesen und Informationswissenschaft ["New Quantum Walk" Entwicklung ~ Vertiefung und Anwendung der mathematischen Struktur ~ "](https://www.amazon.co.jp/%E9%87%8F%E5%AD%90%E3%82%A6%E3%82%A9%E3 % 83% BC% E3% 82% AF% E3% 81% AE% E6% 96% B0% E5% B1% 95% E9% 96% 8B% E2% 80% 95% E6% 95% B0% E7% 90 % 86% E6% A7% 8B% E9% 80% A0% E3% 81% AE% E6% B7% B1% E5% 8C% 96% E3% 81% A8% E5% BF% 9C% E7% 94% A8 -% E4% BB% 8A% E9% 87% 8E-% E7% B4% 80% E9% 9B% 84 / dp / 4563011622).

Wir werden das Modell mit einer kurzen Erklärung definieren. Der Zyklus, um über diese Zeit nachzudenken, ist C4image.png Ist. Der Quantenlauf in diesem Zyklus ($ 00,01,10,11 $ (0 bis 3 in Dezimalzahl)) ist unten definiert.

U=\frac{1}{\sqrt{2}}\begin{bmatrix}
1&1 \\
1&-1  
\end{bmatrix}

Hier,

P=\frac{1}{\sqrt{2}}\begin{bmatrix}
1&1 \\
0&0  
\end{bmatrix}\\
Q=\frac{1}{\sqrt{2}}\begin{bmatrix}
0&0 \\
1&-1  
\end{bmatrix}

Lassen.

\Psi(0)=\frac{1}{\sqrt{2}} \begin{bmatrix}1\\i\end{bmatrix}, \Psi(1)=\Psi(2)=\Psi(3)=\begin{bmatrix}0\\0\end{bmatrix}

$ \ Psi (x) $ ist jedoch die Wahrscheinlichkeitsamplitude des Ortes $ x $.

\begin{align}
\Psi(x)=&P\Psi(x+1)+Q\Psi(x-1)\\
=&\frac{1}{\sqrt{2}}\begin{bmatrix}
1&1\\0&0
\end{bmatrix} \Psi(x+1)+\frac{1}{\sqrt{2}}\begin{bmatrix}
0&0\\1&-1
\end{bmatrix}\Psi(x-1)
\end{align}

Da sich jedoch $ x + 1 und x-1 $ im Zyklus befinden, sollten Sie $ mod4 $ berücksichtigen.

\mu(x)=\|\Psi(x)\|^2

Münz- und Schichtagenten

Der obige Ausdruck ist leicht zu verstehen, aber als die Dynamik des gesamten Systems zu implementieren $ W=\hat{S}\hat{C}\\ $ Es wird vertreten durch. Jeder Agonist ist unten gezeigt.

\hat{C}=(I\otimes H)\\
\mbox{Jedoch,}I=\sum_{x}|x\rangle\langle x|,\quad H=\frac{1}{\sqrt{2}}\begin{bmatrix}
1&1\\1&-1
\end{bmatrix}
\hat{S}=\sum_{x}|x-1\rangle\langle x|\otimes|0\rangle\langle 0|+|x+1\rangle\langle x|\otimes|1\rangle\langle 1|

Lassen. Ebenfalls,

Unter Berücksichtigung der Tore des *** Münzaktionselements *** und des *** Verschiebungsaktionselements *** kann die zeitliche Entwicklung des Quantenlaufs als Quantenlauf ausgedrückt werden.

Speziell, *** Münzagonist *** $ \ hat {C} = I \ otimes H $ kann ausgedrückt werden, indem $ H $ nur durch die Quantenbits des Zustands geleitet wird. *** Shift Agonist *** $ \ hat {S} $ ist -Wenn der Zustand `0``` ist, wird die Position $ x $ subtrahiert. ・ Wenn der Status `1``` ist, wird der Speicherort $ x $ hinzugefügt. Denken Sie an ein Tor zu tun.

Implementierung in IBM Q.

Für diese Implementierung werden 3 Qubits ($ q [0] q [1] q [2] $) verwendet. Betrachten Sie $ q [0] q [1] $ als das dem Ort entsprechende qbit (00,01,10,11) und $ q [2] $ als das dem Zustand entsprechende Qubit.

Konstruktion von Schichtagonisten (ca. Zyklus 4)

Obwohl es sich um einen Sturz handelt, wird die folgende Berechnung für die zweistellige Binärzahl $ q [0] q [1] $ und den Zustand $ q [2] $ durchgeführt.

q[0]q[1]Ort(Dezimalzahl 0~3) q[2](Zustand 0 oder 1) (q[0]\oplus\overline{q[1]}\oplus q[2])(\overline{q[1]})
00 0 \Rightarrow 11
01 0 \Rightarrow 00
10 0 \Rightarrow 01
11 0 \Rightarrow 10
00 1 \Rightarrow 01
01 1 \Rightarrow 10
10 1 \Rightarrow 11
11 1 \Rightarrow 00

Wie in der Tabelle gezeigt, Eingabe: $ q [0] q [1] q [2] \ Rightarrow $ Ausgabe: $ (q [0] \ oplus \ override {q [1]} \ oplus q [2]) (\ In Kombination mit Overline {q [1]}) (q [2]) $ wird es subtrahiert, wenn der Zustand `0``` ist, und addiert, wenn der Zustand` 1``` ist. Es entspricht. Dieser Eingang / Ausgang sollte in einer Quantenschaltung implementiert werden.

Erstellung des Schaltungsteils

Quantenregister, klassisches Register und eingestellte Quantenschaltung qwqc von ihnen

from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
from qiskit import execute
from qiskit.tools.visualization import plot_histogram

q = QuantumRegister(3, 'q')
c = ClassicalRegister(2, 'c')
qwqc = QuantumCircuit(q,c)

Zeitentwicklungsteil

#Anzahl der zeitlichen Entwicklungen
t=1

#Stellen Sie den Ausgangszustand ein
qwqc.h(q[2])
qwqc.s(q[2])

#Zeitentwicklung
for i in range(t):
    #Münzaktionselement
    qwqc.h(q[2])
    #Agonist verschieben
    qwqc.x(q[1])
    qwqc.cx(q[2],q[0])
    qwqc.cx(q[1],q[0])
#Ort(q[0]q[1])Beobachteter Zustand (q[2]) Wird nicht beobachtet
qwqc.measure(q[0],c[0])
qwqc.measure(q[1],c[1])

#Schaltungszeichnung
qwqc.draw()

image.png

Simulatorergebnis mit t = 1

from qiskit import BasicAer

backend = BasicAer.get_backend('qasm_simulator')
job = execute(qwqc, backend,shots=1024)
result = job.result()
counts = result.get_counts(qwqc)
plot_histogram(counts)

image.png

Theoretisch

\begin{align}
W\Psi&=\hat{S}\times\left(|0\rangle\otimes\frac{1+i}{2}|0\rangle+|0\rangle\otimes\frac{1-i}{2}|1\rangle\right)\\
&=\frac{1+i}{2}|3\rangle\otimes|0\rangle+\frac{1-i}{2}|1\rangle\otimes|1\rangle
\end{align}

Als

\mu(1)=\mu(3)=\frac{1}{2}

Es wird. Da es sich um einen Simulator handelt, war das Ergebnis angemessen.

Ergebnisse der tatsächlichen Maschine bei t = 1

from qiskit import IBMQ
from qiskit.tools.monitor import job_monitor

provider = IBMQ.get_provider(hub='ibm-q')
provider.backends()

backend_r=provider.get_backend('ibmqx2')
job_r = execute(qwqc, backend=backend_r,shots=1024)
job_monitor(job_r)

Job Status: job has successfully run

result_r= job_r.result()
counts_r = result_r.get_counts(qwqc)
plot_histogram(counts_r)

image.png

Zusammenfassung

Man kann sagen, dass der Adamal Walk in Zyklus 4 das Ergebnis ist, dass Fehler nicht so stark akkumuliert werden, weil die Schaltung relativ einfach ist und die zeitliche Entwicklung t = 1 ist.

Wenn die Adamar-Matrix $ H $ des Münzagonisten durch eine andere einheitliche Matrix $ U $ ersetzt wird, wird sie zu einem Quantenlauf einer anderen räumlich einheitlichen Quantenmünze. Mit IBM Q können Sie Ihre Lieblingsquantenmünze mit $ U_3 (\ theta, \ phi, \ lambda) $ erstellen.

In Zukunft möchte ich andere Zyklen, andere Diagramme, Zahlenmodelle mit mehreren Zuständen und räumlich-zeitliche ungleichmäßige Modelle nacheinander zusammenfassen. Ich möchte den Algorithmus auch mithilfe des Quantenlaufs zusammenfassen.

Recommended Posts

Quantum Computer Implementierung von Quantum Walk 2
Quantum Computer Implementierung von Quantum Walk 3
Quantum Computer Implementierung von Quantum Walk 1
Quantencomputer-Implementierung eines 3-Zustands-Quantenlaufs
Qiskit: Implementierung einer Quantenbolzenmaschine
Qiskit: Implementierung von Quantenhypergraphzuständen
Qiskit: Implementierung von Quantum Circuit Learning (QCL)
Implementierung der Fibonacci-Sequenz
Implementierung von TF-IDF mit Gensim
Erklärung und Implementierung von SocialFoceModel
Implementierung der Spieltheorie - Gefangenendilemma -
Implementierung einer unabhängigen Komponentenanalyse
Python-Implementierung des Partikelfilters
Implementierung der schnellen Sortierung in Python
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
Implementierung von Scale-Space für SIFT
Lesen Sie "Grundlagen des Quantenglühens", Tag 5
Einführung und Implementierung von JoCoR-Loss (CVPR2020)
Erklärung und Implementierung des ESIM-Algorithmus
Einführung und Implementierung der Aktivierungsfunktion
Python-Implementierung eines selbstorganisierenden Partikelfilters
Zusammenfassung der grundlegenden Implementierung von PyTorch
Implementierung eines einfachen Partikelfilters
Implementierung der Login-Funktion in Django
[Anfänger] Quantencomputer-Lernseite [Kostenlos]
Implementierung eines Lebensspiels in Python
Erklärung und Implementierung von einfachem Perzeptron
Grundlagen der Quanteninformationstheorie: Entropie (2)
Implementierung von Desktop-Benachrichtigungen mit Python
Implementierung von c / c ++> RingBuffer (N Ränder)
Python-Implementierung eines nicht rekursiven Segmentbaums
Implementierung von Light CNN (Python Keras)
Qiskit: Implementierung von QAOA ohne Qiskit Aqua
Implementierung der ursprünglichen Sortierung in Python
Implementierung der Dyxtra-Methode durch Python
Lesen Sie "Grundlagen des Quantenglühens", Tag 6
Lesen Sie "Quantencomputer hergestellt in 14 Tagen". Tag 5 Verbesserung der Quantentopfung / Hinzufügung von Barrieren