[PYTHON] Implémentation informatique quantique de Quantum Walk 1

Implémentation informatique quantique de la marche quantique 1 ~ Cycle 4 sur la marche d'Adamar ~

Je suis un étudiant diplômé en mathématiques appartenant au Konno Lab de l'Université Yokokuni qui étudie les marches quantiques. A commencé à étudier l'information quantique en 2017 avec les membres du laboratoire. Depuis 2018, nous l'avons également implémenté à l'aide d'IBM Q. Depuis que j'ai accumulé jusqu'à présent des notes sur la mise en œuvre des algorithmes quantiques et des marches quantiques, je vais les résumer un par un.

Cette fois, nous mettrons en œuvre la Marche Adamal sur *** Cycle 4 ***. La méthode présentée ici est presque la même que Implémentation efficace du circuit quantique des marches quantiques.

À propos de Hadamard Walk sur le cycle 4

Marche quantique

Quantum Walk est la [version quantique de Random Walk](https://ja.wikipedia.org/wiki/%E9%87%8F%E5%AD%90%E3%82%A6%E3%82%A9%E3 Il a été introduit comme% 83% BC% E3% 82% AF). La différence par rapport à la marche aléatoire est que la probabilité est obtenue en considérant l'évolution temporelle de l'amplitude de probabilité, et non l'évolution temporelle de la probabilité, et en prenant le carré normal de l'amplitude de probabilité. En tant que livre d'explication des mathématiques "Quantum Walk", et également résumé des mathématiques à la physique, l'ingénierie et les sciences de l'information ["New Quantum Walk" Développement ~ Approfondissement et application de la structure mathématique ~ "](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).

Nous définirons le modèle avec une brève explication. Le cycle auquel penser cette fois est C4image.png Est. La marche quantique sur ce cycle (00,01,10,11 $ (0 à 3 en décimal)) est définie ci-dessous.

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

ici,

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}

Laisser.

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

Cependant, $ \ Psi (x) $ est l'amplitude de probabilité de l'emplacement $ 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}

Cependant, puisque $ x + 1 et x-1 $ sont sur le cycle, considérez $ mod4 $.

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

Agents de pièces et de quart

L'expression ci-dessus est facile à comprendre la dynamique, mais comme la dynamique de l'ensemble du système à mettre en œuvre $ W=\hat{S}\hat{C}\\ $ Il est représenté par. Chaque agoniste est illustré ci-dessous.

\hat{C}=(I\otimes H)\\
\mbox{cependant,}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|

Laisser. Aussi,

Compte tenu des portes de *** élément d'action de pièce *** et de *** élément d'action de décalage ***, l'évolution temporelle de la marche quantique peut être exprimée comme une marche quantique.

En particulier, *** Coin agoniste *** $ \ hat {C} = I \ otimes H $ peut être exprimé en ne passant $ H $ que par les bits quantiques de l'état. *** Agoniste de décalage *** $ \ hat {S} $ est -Si l'état est 0 '', l'emplacement $ x $ est soustrait. ・ Si l'état est 1 '', l'emplacement $ x $ sera ajouté. Pensez à une porte à faire.

Implémentation dans IBM Q

3qubits ($ q [0] q [1] q [2] $) est utilisé pour cette implémentation. Considérons $ q [0] q [1] $ comme le qbit correspondant à l'emplacement (00,01,10,11) et $ q [2] $ comme le qubit correspondant à l'état.

Construction d'agonistes de décalage (vers le cycle 4)

Bien qu'il s'agisse d'une chute, le calcul suivant est effectué pour le nombre binaire à 2 chiffres $ q [0] q [1] $ et l'état $ q [2] $.

q[0]q[1]endroit(Nombre décimal 0~3) q[2](État 0 ou 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

Comme indiqué dans le tableau, Entrée: $ q [0] q [1] q [2] \ Rightarrow $ Sortie: $ (q [0] \ oplus \ override {q [1]} \ oplus q [2]) (\ Lorsqu'il est combiné avec overline {q [1]}) (q [2]) $, il est soustrait si l'état est 0``` et ajouté si l'état est 1```. Cela correspond. Cette entrée / sortie doit être implémentée dans un circuit quantique.

Création d'une partie circuit

Registre quantique, registre classique et configuration du circuit quantique qwqc à partir d'eux

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)

Partie développement du temps

#Nombre de développements temporels
t=1

#Définir l'état initial
qwqc.h(q[2])
qwqc.s(q[2])

#Développement du temps
for i in range(t):
    #Élément d'action de pièce
    qwqc.h(q[2])
    #Agoniste de décalage
    qwqc.x(q[1])
    qwqc.cx(q[2],q[0])
    qwqc.cx(q[1],q[0])
#endroit(q[0]q[1])État observé (q[2]) N'est pas observé
qwqc.measure(q[0],c[0])
qwqc.measure(q[1],c[1])

#Dessin de circuit
qwqc.draw()

image.png

Résultat du simulateur avec 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

Théoriquement

\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}

Que

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

Il devient. Puisqu'il s'agit d'un simulateur, le résultat était raisonnable.

Résultats de la machine réelle à 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

Résumé

On peut dire que la marche d'Adamal au cycle 4 résulte du fait que les erreurs ne s'accumulent pas tellement parce que le circuit est relativement simple et que l'évolution temporelle est t = 1.

De plus, si la matrice Adamar $ H $ de l'agoniste des pièces est remplacée par une autre matrice unitaire $ U $, elle devient une marche quantique d'une autre pièce quantique spatialement uniforme. Avec IBM Q, vous pouvez créer votre pièce quantique préférée avec $ U_3 (\ theta, \ phi, \ lambda) $.

À l'avenir, je voudrais résumer d'autres cycles, d'autres graphiques, des modèles numériques multi-états et des modèles spatio-temporels non uniformes en séquence. Je voudrais également résumer l'algorithme utilisant la marche quantique.

Recommended Posts

Implémentation informatique quantique de Quantum Walk 2
Implémentation informatique quantique de Quantum Walk 3
Implémentation informatique quantique de Quantum Walk 1
Implémentation informatique quantique de la marche quantique à 3 états
Qiskit: Implémentation de Quantum Boltsman Machine
Qiskit: Implémentation des états d'hypergraphes quantiques
Qiskit: mise en œuvre de l'apprentissage des circuits quantiques (QCL)
Implémentation de la séquence de Fibonacci
Implémentation de TF-IDF à l'aide de gensim
Explication et mise en œuvre de SocialFoceModel
Mise en œuvre de la théorie des jeux - Le dilemme du prisonnier -
Mise en œuvre d'une analyse de composants indépendante
Implémentation Python du filtre à particules
Implémentation du tri rapide en Python
Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
Implémentation de Scale-Space pour SIFT
Lire "Principes de base du recuit quantique" Jour 5
Introduction et mise en œuvre de JoCoR-Loss (CVPR2020)
Explication et implémentation de l'algorithme ESIM
Introduction et mise en œuvre de la fonction d'activation
Implémentation Python du filtre à particules auto-organisateur
Résumé de l'implémentation de base par PyTorch
Mise en place d'un filtre à particules simple
Implémentation de la fonction de connexion dans Django
[Débutant] Site d'apprentissage informatique quantique [gratuit]
Implémentation du jeu de vie en Python
Explication et mise en œuvre du perceptron simple
Bases de la théorie de l'information quantique: Entropie (2)
Implémentation des notifications de bureau à l'aide de Python
implémentation de c / c ++> RingBuffer (N marges)
Implémentation Python de l'arborescence de segments non récursive
Implémentation de Light CNN (Python Keras)
Qiskit: Implémentation de QAOA sans Qiskit Aqua
Implémentation du tri original en Python
Implémentation de la méthode Dyxtra par python
Lire "Les bases du recuit quantique" Jour 6
Lisez "Ordinateur Quantum fabriqué en 14 jours". Jour 5 Amélioration du puits quantique / ajout de barrières