[PYTHON] Ich habe die Quantenbits (Anfänger) kurz zusammengefasst.

\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}

Eine kurze Zusammenfassung des "mathematischen Umgangs mit Quantenbits", der die Grundlage für das Erlernen von Quantencomputern bildet. Dieses Mal konzentrieren wir uns nicht auf das Quantengatter, sondern nur auf das mathematische System der Quantenbits.

Etwa 1 Quantenbit

1 Quantenbit verwendet Klammersymbol, $ \begin{align} \ket{Q} &= \alpha\ket{0} + \beta\ket{1} \\\ \end{align} $ Kann beschrieben werden als Es repräsentiert den Überlagerungszustand des normalen Bit 0, 1-Zustands ($ \ ket {0}, \ ket {1} ) und ist ein linearer Verbindungszustand der standardisierten konstanten (α, β) Zeiten. Da dies als Wahrscheinlichkeitsamplitude interpretiert wird, sind die folgenden Bedingungen erfüllt. $ \begin{align} |\alpha|^{2} + |\beta|^{2} = 1 \end{align} $$

Da $ \ ket {0} und \ ket {1} $ unabhängige Zustände sind, ist es außerdem zweckmäßig, sie wie folgt als normale orthogonale Basen zu beschreiben, wenn sie als Zustandsvektoren beschrieben werden. $ \begin{align} \ket{0} = \binom{1}{0},\ket{1} = \binom{0}{1} \end{align} $ Daher erfüllen $ \ ket {0} und \ ket {1} $ die folgende Gleichung. $ \braket{i}{j} = \delta_{ij} $ $ \ Delta_ {ij} $ ist das Kronecker Delta. Nun, es fühlt sich wie eine lineare Zahl an.

Für mehrere Quantenbits

Betrachten wir diesmal der Einfachheit halber den Fall von 2 Quantenbits. Für klassische Bits sind die in 2 Bits gespeicherten Datenkombinationen 00, 01, 10, 11 ($ \ ket {00}, \ ket {01}, \ ket {10}, \ ket {11} $ ) 4 Muster. Wie zuvor kann der allgemeine Quantenzustand durch Überlagerung beschrieben werden, so dass der Zustand von 2 Quantenbits ist $ \ket{Q} = \alpha_{00}\ket{00} + \alpha_{01}\ket{01} + \alpha_{10}\ket{10} + \alpha_{11}\ket{11} $ Und dies wird auch als Wahrscheinlichkeitsamplitude interpretiert, $ \sum _{ij} |\alpha _{ij} | ^{2} = 1 $ Treffen. Außerdem wird das Tensorprodukt von 1 Quantenbitzuständen als neuer Zustandsvektor für 2 Quantenbits eingeführt. $ \ket{00} = \ket{0}\otimes\ket{0} = \begin{pmatrix} 1 \begin{pmatrix} 1 \\\ 0 \end{pmatrix} \\\ 0 \begin{pmatrix} 1 \\\ 0 \end{pmatrix} \end{pmatrix} =\begin{pmatrix} 1 \\\ 0 \\\ 0 \\\ 0 \end{pmatrix}, \\\ \ket{01} = \ket{0}\otimes\ket{1} = \begin{pmatrix} 1 \begin{pmatrix} 0 \\\ 1 \end{pmatrix} \\\ 0 \begin{pmatrix} 0 \\\ 1 \end{pmatrix} \end{pmatrix} =\begin{pmatrix} 0 \\\ 1 \\\ 0 \\\ 0 \end{pmatrix}, \\\ \ket{10} = \ket{1}\otimes\ket{0} = \begin{pmatrix} 0 \begin{pmatrix} 1 \\\ 0 \end{pmatrix} \\\ 1 \begin{pmatrix} 1 \\\ 0 \end{pmatrix} \end{pmatrix} =\begin{pmatrix} 0 \\\ 0 \\\ 1 \\\ 0 \end{pmatrix}, \\\ \ket{11} = \ket{1}\otimes\ket{1} = \begin{pmatrix} 0 \begin{pmatrix} 0 \\\ 1 \end{pmatrix} \\\ 1 \begin{pmatrix} 0 \\\ 1 \end{pmatrix} \end{pmatrix} =\begin{pmatrix} 0 \\\ 0 \\\ 0 \\\ 1 \end{pmatrix} . $

Wie Sie den Ergebnissen entnehmen können, erzeugt das Tensorprodukt einer normalen orthogonalen Basis eine normale orthogonale Basis. Die 3 Quantenbits und die 4 Quantenbits werden auf die gleiche Weise wie die 2 Quantenbits erweitert. Nun, es fühlt sich an wie eine lineare Zahl (´ 艸 `)

In Anbetracht des Zustands eines Quantencomputers, der ein realistisches Problem lösen kann, ist die Dimension der Matrix hässlich ... (; ^ ω ^)

Ich habe es mit einem Simulator überprüft

Ich habe die Erklärung bisher tatsächlich mit Blueqat überprüft. Eine ausführliche Erläuterung von Blueqat selbst finden Sie im Tutorial, das von MDR veröffentlicht wurde.

Im Fall von 1 Quantenbit

#Bibliotheksimport
from blueqat import Circuit

#Definieren Sie eine 1-Quantenbit-Schaltung
c = Circuit(1)
c.m[:].run()

Dies ist ein Programm, das den Zustandsvektor anzeigt, wenn an einem Quantenbit keine Gate-Operation ausgeführt wird. In Blueqat ist der Anfangszustand des Quantenbits "0", daher sollte der Zustandsvektor von (1,0) angezeigt werden. Das Ausführungsergebnis ist wie folgt.

array([1.+0.j, 0.+0.j])

In Übereinstimmung mit der vorherigen Erklärung.

Als nächstes wird das Programm ausgegeben, wenn der Status "1" ist.

#Bibliotheksimport
from blueqat import Circuit

#Definieren Sie eine 1-Quantenbit-Schaltung
c = Circuit(1)
c.x[0].m[:].run()

Dies ist der mit dem X-Gate. Das X-Gate bewirkt eine Umkehrung des Quantenzustands. Daher sollte der Zustandsvektor von (0,1) angezeigt werden. Das Ausführungsergebnis ist wie folgt.

array([0.+0.j, 1.+0.j])

Dies stimmte auch mit der vorherigen Erklärung überein.

Für 2 Quantenbits

Wie bei 1 Quantenbit betrachten wir die Zustandsvektoren für $ \ ket {00}, \ ket {01}, \ ket {10} und \ ket {11} $.

Programm

#Bibliotheksimport
from blueqat import Circuit

#2 Definieren Sie eine Quantenbitschaltung
c = Circuit(2)
c.m[:].run()

Ausführungsergebnis

array([1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j])

Programm

#Bibliotheksimport
from blueqat import Circuit

#2 Definieren Sie eine Quantenbitschaltung
c = Circuit(2)
c.x[0].m[:].run()

Ausführungsergebnis

array([0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j])

Programm

#Bibliotheksimport
from blueqat import Circuit

#2 Definieren Sie eine Quantenbitschaltung
c = Circuit(2)
c.x[1].m[:].run()

Ausführungsergebnis

array([0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j])

Programm

#Bibliotheksimport
from blueqat import Circuit

#Definieren Sie eine 1-Quantenbit-Schaltung
c = Circuit(2)
c.x[0].x[1].m[:].run()

Ausführungsergebnis

array([0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j])

Alle stimmten mit der vorherigen Erklärung überein.

Schließlich

Das nächste Mal möchte ich das mathematische System von Quantentoren anhand von Simulationen erklären. Wir sehen uns im nächsten Beitrag!

Recommended Posts

Ich habe die Quantenbits (Anfänger) kurz zusammengefasst.
Eine kurze Zusammenfassung von Linux
Eine kurze Zusammenfassung der Python-Sammlung
Eine kurze Zusammenfassung der Pinax-Übersicht #djangoja
Eine grobe Zusammenfassung der Geschichte des Betriebssystems
Die Zusammenfassung des maschinellen Lernens in Python für Anfänger ist sehr kurz.
[Für Anfänger] Eine Wortzusammenfassung der gängigen Programmiersprachen (Version 2018)
Eine kurze Zusammenfassung von Graphviz in Python (nur für Mac erklärt)
Ich habe versucht, das Entwicklungsstartverfahren von Django kurz zusammenzufassen
[Django] Eine einfache Zusammenfassung der Protokollausgabefunktion, damit auch Anfänger sie verstehen können.
[Linux] Liste der Linux-Befehle, die Anfänger kennen sollten
Eine verschiedene Zusammenfassung dessen, was ich über Ansible recherchiert habe
Zusammenfassung der Verwendung von pyenv
Zusammenfassung der Vorverarbeitungsmethoden für Python-Anfänger (Pandas-Datenrahmen)
Zusammenfassung der Zeichenfolgenoperationen
Eine Zusammenfassung dessen, was ich wie ein Blog berührt habe
Zusammenfassung der Python-Argumente
Was ist ein empfohlener Motor? Zusammenfassung der Typen
Zusammenfassung der Testmethode
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
Zusammenfassung des mit einer Geschwindigkeit von einer Sekunde durchgeführten Bildcrawls
Eine grobe Zusammenfassung der Unterschiede zwischen Windows und Linux
Zusammenfassung der Python-Dateivorgänge
Zusammenfassung der Python3-Listenoperationen
Ein einfaches Beispiel für pivot_table.
Hinweis zur Kernel-Kompilierung
2017.3.6 ~ 3.12 Zusammenfassung unserer Aktivitäten
Linux eine Zusammenfassung Tastenkombination
Ein kleines Memorandum von openpyxl
Bequeme Nutzungsübersicht von Flask
Zusammenfassung der Linux-Verteilungstypen
Übersicht über Docker (für Anfänger)
Zusammenfassung der grundlegenden Verwendung von Pandas
Zusammenfassung der Proxy-Verbindungseinstellungen
Ein Memorandum zur Verwendung von eigen3
[Für Anfänger] Zusammenfassung des Leidens an Kaggles EDA und seines Kampfes