\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.
1 Quantenbit verwendet Klammersymbol,
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.
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
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 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.
#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.
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.
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