*** 3 Die Implementierung des Zustandsquantenlaufs *** ist zusammengefasst. Bisher haben wir Quantenläufe mit beliebiger Zyklusgröße durch [Quantencomputer-Implementierung 3 von Quantenlauf] implementiert (https://qiita.com/YNUqw/items/9acf4236bb59323150ad). Alle von ihnen waren jedoch Quantenwanderungen mit zwei Zuständen mit nur zwei Zuständen, 0 oder 1. Daher möchte ich einen Quantenspaziergang mit drei Zuständen in Betracht ziehen. Wie in der vorherigen Zeit finden Sie unter Effiziente Quantenschaltungsimplementierung von Quantenläufen Informationen zu Verschiebungsagenten von Quantenläufen im Zyklus.
Ein Quantenlauf mit drei Zuständen ist ein Quantenlauf mit drei internen Zuständen. Insbesondere wird die als Münzagonist ausgewählte $ 3 \ times 3 $ Grover-Matrix als 3-State-Grover-Walk bezeichnet. Weitere Informationen finden Sie unter Quantum Walk.
Die spezifische Dynamik wird später erklärt, aber das *** Merkmal *** des Grover Walk mit drei Zuständen in einer Dimension ist, dass selbst wenn räumlich einheitliche Münzen platziert werden *** Lokalisierung in der Nähe des Ursprungs ** * Und *** lineare *** Spreads treten gleichzeitig auf. Es ist ein Diagramm der numerischen Simulation zum Zeitpunkt 500 mit der Ursprungsabweichung von 1-dimensionalem Adamal Walk mit 2 Zuständen </ font> und 1-dimensionalem Grover Walk mit 3 Zuständen </ font>. *** Die Lokalisierung in der Nähe des Ursprungs *** ist gut bekannt.
Um es mit einem Quantencomputer zu implementieren, muss es ein endliches System sein, kein unendliches System wie eine Dimension, also werden wir einen Grover Walk mit drei Zuständen im Zyklus implementieren. Gesamtzeitentwicklung
W=\hat{S}\hat{C}
Lassen. Da wir einen Grover Walk mit drei Zuständen in Betracht ziehen, wird die Grover-Matrix $ 3 \ times3 $ zum Schichtagenten $ \ hat {C} $ hinzugefügt.
\hat{C}=I\otimes C\\
\mbox{jedoch}C=\frac{2}{3}\begin{bmatrix}1&1&1\\1&1&1\\1&1&1\end{bmatrix}-I=\frac{1}{3}\begin{bmatrix}-1&2&2\\2&-1&2\\2&2&-1\end{bmatrix}
Wird angenommen. Der Shift-Agonist betrachtet drei Zustände (00,01,10) im Zyklus.
\hat{S}=\sum_{x}(|x-1\rangle\langle x|\otimes|00\rangle \langle 00|+|x\rangle\langle x|\otimes|01\rangle \langle 01|+|x+1\rangle\langle x|\otimes|10\rangle \langle 10|)
Lassen.
Wenn zwei Quantenbits verwendet werden, um Zustand 3 zu implementieren, gibt es vier Zustände, 00,01,10,11. Daher werden das Münzaktionselement und das Verschiebungsaktionselement in die Vier-Zustands-Notation umgewandelt.
Münzaktionselement
\hat{C}=I\otimes C\\
\mbox{jedoch}C=\begin{bmatrix}\frac{-1}{3}&\frac{2}{3}&\frac{2}{3}&0\\\frac{2}{3}&\frac{-1}{3}&\frac{2}{3}&0\\\frac{2}{3}&\frac{2}{3}&\frac{-1}{3}&0\\0&0&0&1\end{bmatrix}
Schichtagonist
\hat{S}=\sum_{x}(|x-1\rangle\langle x|\otimes|00\rangle \langle 00|+|x\rangle\langle x|\otimes|01\rangle \langle 01|+|x+1\rangle\langle x|\otimes|10\rangle \langle 10|+|x\rangle\langle x|\otimes |11\rangle\langle 11|)
Auf diese Weise ist es möglich, einen unabhängigen Zustand 11 zu erzeugen, der nicht mit anderen Zuständen gemischt ist. Wenn daher der Zustand 11 nicht dem Anfangszustand gegeben ist, handelt es sich um eine Implementierung eines Quantenlaufs mit drei Zuständen.
Erstellen Sie eine $ 3 \ times 3 $ Grover-Matrix innerhalb der $ 4 \ times 4 $ -Matrix. Hier wird nur das Ergebnis der Berechnung der Parameter vorgestellt.
import numpy as np
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
from qiskit import execute
import math
th1=3*math.pi/2
th2=(math.pi+math.acos(1/3))*2
th3=math.pi/2
q = QuantumRegister(2, 'q')
grqc = QuantumCircuit(q)
grqc.x(q[0])
grqc.x(q[1])
grqc.cu3(th3,0,0,q[0],q[1])
grqc.cu3(th2,0,0,q[1],q[0])
grqc.cu3(th1,0,0,q[0],q[1])
grqc.x(q[0])
grqc.x(q[1])
Wenn Sie ein Tor wie dieses bauen, erhalten Sie $ 3 \ mal 3 $ Grover-Münzen in $ 4 \ mal 4 $. Überprüfen Sie unten.
from qiskit import BasicAer
#Führen Sie mit dem einheitlichen Simulator-Backend aus
backend = BasicAer.get_backend('unitary_simulator')
job = execute(grqc, backend)
result = job.result()
# Show the results
print(result.get_unitary(grqc, decimals=3))
[[-0.333+0.j 0.667+0.j 0.667+0.j 0. +0.j] [ 0.667+0.j -0.333+0.j 0.667+0.j 0. +0.j] [ 0.667+0.j 0.667+0.j -0.333+0.j 0. +0.j] [ 0. +0.j 0. +0.j 0. +0.j 1. +0.j]]
Betrachten Sie Quantenregister, klassische Register und Quantenschaltungen von ihnen.
def cccx(circ,c1,c2,c3,tg,re):
circ.ccx(c1,c2,re)
circ.ccx(c3,re,tg)
circ.ccx(c1,c2,re)
Ich möchte das cccnot-Gate verwenden. Wenn ich es vorbereite, mache ich eine Schaltung.
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
from qiskit import execute
from qiskit.tools.visualization import plot_histogram
import math
q = QuantumRegister(2, 'q')
qc = QuantumRegister(2, 'qc')
qaf = QuantumRegister(1,'qaf')
c = ClassicalRegister(2, 'c')
gqc = QuantumCircuit(q,qc,qaf,c)
th1=3*math.pi/2
th2=(math.pi+math.acos(1/3))*2
th3=math.pi/2
#Zeit
t=1
#Stellen Sie den Ausgangszustand ein
gqc.x(qc[1])
gqc.barrier()
#Zeitentwicklung
for i in range(t):
#coin-ope
gqc.x(qc[0])
gqc.x(qc[1])
gqc.cu3(th3,0,0,qc[0],qc[1])
gqc.cu3(th2,0,0,qc[1],qc[0])
gqc.cu3(th1,0,0,qc[0],qc[1])
gqc.x(qc[0])
gqc.x(qc[1])
gqc.barrier()
#shift-ope cycle
gqc.x(qc[1])
cccx(gqc,q[1],qc[0],qc[1],q[0],qaf[0])
gqc.ccx(qc[0],qc[1],q[1])
gqc.x(qc[1])
gqc.x(qc[0])
gqc.x(qc[1])
gqc.ccx(qc[0],qc[1],q[1])
cccx(gqc,q[1],qc[0],qc[1],q[0],qaf[0])
gqc.x(qc[0])
gqc.x(qc[1])
gqc.barrier()
#Überwachung
gqc.measure(q,c)
gqc.draw()
Im ersten Teil wird der Ausgangszustand erstellt. Diesmal
\Psi=|00\rangle\otimes|01\rangle
machen. Der zweite Teil ist der Staatsteil *** Münzagonist ***. Der dritte Teil drückt den *** Verschiebungsmittel *** aus, dass "Platz +1 für Zustand 10, Platz -1 für Zustand 00 und Ort sich für Zustand 01 und 11 nicht ändert".
Führen Sie die obigen Schritte im Simulator aus.
provider=IBMQ.get_provider(group='open')
backend_cs=provider.get_backend('ibmq_qasm_simulator')
job_cs = execute(gqc, backend_cs,shots=4096)
result_cs = job_cs.result()
counts_cs = result_cs.get_counts(gqc)
print(counts_cs)
plot_histogram(counts_cs)
Das Ergebnis dieser Simulation ist
\hat{S}\hat{C}|00\rangle\otimes|01\rangle\\
=\hat{S}\left\{|00\rangle\otimes\frac{2}{3}|00\rangle+|00\rangle\otimes\frac{-1}{3}|01\rangle+|00\rangle\otimes\frac{2}{3}|10\rangle\right\}\\
=\frac{2}{3}|11\rangle\otimes|00\rangle+\frac{-1}{3}|00\rangle\otimes|01\rangle+\frac{2}{3}|01\rangle\otimes|10\rangle
Daher sind die Beobachtungswahrscheinlichkeiten der Orte $ 11 $, $ 00 $ und $ 01 $ $ \ frac {4} {9} $, $ \ frac {1} {9} $ bzw. $ \ frac {4} {9} $. Es sollte so sein, dass Sie sehen können, dass die Simulation erfolgreich war.
Quantenwanderungen auf beliebigen Graphen können implementiert werden, indem die Anzahl der Zustände erhöht und entsprechende Münz- und Verschiebungselemente erstellt werden. Ein 4-Zustands-Quantenlauf auf dem Torus kann durch einfache Anwendung des 2-Zustands-Quantenlaufs auf dem Zyklus erzeugt werden.
Der zu Beginn in der Nähe des Ursprungs von Grover in einer Dimension eingeführte Stagnationsterm kann durch das Experiment über den Zyklus des Quantencomputers bestätigt werden, wenn er in Zyklus 16 auf etwa Zeit 7 entwickelt wird.
Recommended Posts