Quantum Computing (1)

Systeme und Zustände

Aus der Klassischen Mechanik ist bekannt, dass zu den grundlegenden Begriffen der Physik die Information und der Zustand eines Systems gehören. Dort interessiert man sich für die Gesetze, die die Übergänge zwischen den Zuständen bestimmen, und dass diese Gesetze reversibel sein müssen. All diese Aussage gelten auch für die Quantenmechanik. Ein physikalisch interessantes System muss mindestens über zwei mögliche Zustände verfügen, sonst bleibt es bis in alle Ewigkeit im einzig möglichen Zustand. Das einfachste interessante System ist also ein System, das über zwei Zustände verfügt, wie etwa eine Münze, die Kopf oder Zahl anzeigen kann. Kompliziertere Systeme können nun auch durch Kombination solch einfacher Systeme erzeugt werden.

Dies ist die Basis der heutigen Computertechnik. Das System mit den beiden Zuständen wird durch ein elektronisches Bauteil dargestellt, das eine positive oder negative Ladung enthält. Bezeichnet wir den Zustand „positiv“ mit 1 und den anderen Zustand mit 0, so haben wir definiert, was wir unter einem Bit verstehen. Wir fassen acht Bits zu einem Byte zusammen, und durch andere elektronische Bauteile können diese Bits und Bytes in unfassbarer Geschwindigkeit manipuliert werden, um damit komplizierteste Berechnungen in Bruchteilen von Sekunden auszuführen. Dies ist in den letzten Jahrzehnten zu einer Selbstverständlichkeit geworden; unser gesamtes Leben ist mittlerweile ohne Computer undenkbar geworden.

Warum Quantencomputer?

Mittlerweile gerät die Miniaturisierung elektronischer Schaltkreise an natürlich vorgegebene physikalische Grenzen. Darüber hinaus existieren mathematische Probleme, bei denen man annimmt, dass sie auch mit den zukünftig schnellsten Rechnern nicht innerhalb sinnvoller Zeit gelöst werden können (auch nach Milliarden von Jahren Rechenzeit nicht). Dies liegt am schnellen Wachstum kombinatorischer Funktionen, gegen die exponentiell wachsende Funktionen verblassen. Dazu gehören etwa das Rundreiseproblem oder die Zerlegung großer Primzahlen. Der Ansatz mit klassischen Computern ist grundsätzlich zum Scheitern verurteilt.

Quantencomputer arbeiten völlig anders. Sie basieren auf dem Zustand von Quantensystemen, die sich von klassischen Systemen unterscheiden, da sie sich in einer Superposition von Zuständen befinden können, sowie in einer Verschränkung mit anderen Zuständen. All diese Begriffe sind uns nach Studium des Bandes II vertraut. Doch wie kann man tatsächlich mit diesen Zuständen rechnen?

Das Qubit

Firmen wie IBM haben mit hohem finanziellen Aufwand mittlerweile Rechner konstruieren können, die 50 und mehr Qubits enthalten. Das erscheint nicht viel, aber die technischen Schwierigkeiten sind enorm. Wie wir wissen, zerstört jede Interaktion eines Quantensystems mit äußeren Einflüssen den Zustand des Systems. Qubits müssen vor dieser Dekohärenz geschützt werden, und das ist nicht leicht.

Ich werde hier nicht beschreiben, wie ein Qubit technisch realisiert wird. Ich möchte vielmehr zeigen, wie man mit solchen Qubits rechnen kann. Dazu verwende ich erste einmal dasselbe Quantensystem wie in der Vorlesung: den Spin eines Elektrons. (Der Elektronenspin wird in realen Quantencomputern nicht als Basis des Qubit verwendet. Wie sollte man das Elektron auch festhalten?) Wir werden sehen, dass es gar nicht darauf ankommt, wie das Qubit technisch erzeugt wird, wenn man nur damit rechnen will.

Der Spin des Elektrons ist eine Eigenschaft, die klassisch nicht erklärbar ist, und jeder Versuch, ihn sich als klassische Eigenschaft vorzustellen, führt in eine Sackgasse. Er wird oft mit einem Drehimpuls verglichen, aber wie soll ein Punkt rotieren können? Doch wir brauchen uns den Spin nicht vorzustellen, denn es reicht, wenn wir mit ihm rechnen können, und das haben wir gelernt. Nehmen wir, wie üblich, die z-Komponente des Spins. Er kann entweder up oder down sein. Wir haben die Dirac-Notation gelernt, sowie die Basis-Darstellung dieser Zustände:

    \[ \ket{u} = \begin{pmatrix} 1\\0\end{pmatrix}, \;\; \ket{d} = \begin{pmatrix} 0\\1\end{pmatrix}. \]

Auch andere Quantensysteme mit zwei Zuständen können so beschrieben werden. Vergessen wir also einfach, auf welche Weise das Qubit realisiert wird. Wir nennen die beiden Zustände einfach \ket{0} und \ket{1}, und schrieben dies in der Basisdarstellung als Vektoren

    \[ \ket{0} = \begin{pmatrix} 1\\0\end{pmatrix}, \;\; \ket{1} = \begin{pmatrix} 0\\1\end{pmatrix}. \]

Operationen auf Qubits

Was fangen wir nun mit diesem Qubit an? Nun, erst einmal müssen wir uns ansehen, in welchem Zustand es sich befindet. Eine Messung gibt uns da Auskunft. Nach dieser Messung befindet es sich dann in einem definierten Zustand, entweder im Zustand \ket{0} oder \ket{1}, und in diesem Zustand wird es bleiben, solange keine weiteren Dinge darauf einwirken. jede weitere Messung wird dasselbe Ergebnis liefern. Aber es gibt Möglichkeiten, diesen Zustand zu verändern. Diese Möglichkeiten unterliegen aber den strengen Gesetzen der Quantenmechanik, wie wir gelernt haben. Wir hatten den Begriff des Operators kennengelernt; lineare Abbildungen, die einen Zustand auf einen anderen Zustand abbilden. Und damit keine Information verloren geht, haben wir gesehen, dass die zeitliche Entwicklung nicht nur linear, sondern sogar unitär sein muss. Letztlich haben wir daraus die Schrödingergleichung abgeleitet.

Im Fall eines Qubits ist dies sehr einfach. Nennen wir unseren Operator wieder U. Da U linear sein soll, kann U durch eine 2 \times 2-Matrix dargestellt werden, und Unitarität bedeutet U^\dagger = U^{-1}. Das schränkt die Anzahl der Möglichkeiten schon ziemlich ein!

Ein erstes Beispiel ist die Matrix

    \[  P_x = \begin{pmatrix} 0 & 1\\1 & 0\end{pmatrix},\]

eine der Pauli-Matrizen. Für diese Matrix gilt:

    \[ \begin{split}P_x \ket{0}&= \begin{pmatrix} 0 & 1\\1 & 0 \end{pmatrix} \begin{pmatrix}  1\\0 \end{pmatrix} = \begin{pmatrix} 0\\1 \end{pmatrix} = \ket{1}\\P_x \ket{1} &= \begin{pmatrix} 0 & 1\\1 & 0\end{pmatrix} \begin{pmatrix} 0\\1 \end{pmatrix} = \begin{pmatrix} 1\\0 \end{pmatrix} = \ket{0}.\end{split}\]

Die Pauli-Matrix macht aus dem Qubit \ket{0} das Qubit \ket{1}, und aus dem Qubit \ket{1} das Qubit \ket{0}, d.h. das Qubit wurde invertiert. Die Pauli-Matrix P_x ist also der NOT-Operator in unserem Quantencomputer!

Bits, Register und Gatter

Auch in der klassischen Computertechnik ist der NOT-Operator ein wichtiges Element. Operationen auf Bits werden hier durch elektronische Bauteile erzeugt, die man Gatter nennt. Komplizierte logische Schaltungen werden durch zusammengefasste Bits ermöglicht, die man dann Register nennt. Beim Quantencomputer werden diese Begriffe ebenfalls verwendet, obwohl der technische Aufbau völlig anders ist. Unsere Pauli-Matrix P_x ist das NOT-Gatter unseres Quantenrechners. Es wird daher auch X-Gatter genannt.

Wir können die Wirkung des Gatters nun so schreiben:

    \[ \begin{split}\ket{0} &\overset{X}{\longrightarrow} \ket{1}\\\ket{1} &\overset{X}{\longrightarrow} \ket{0}.\end{split}\]

Üblich ist auch die folgende grafische Darstellung für die Invertierung von \ket{0}:

Rendered by QuickLaTeX.com

Nun, das Invertieren eines Bits erscheint wenig spektakulär und lässt sich natürlich mit klassischen Computern wesentlich einfacher erledigen. Aber wir haben gesehen, dass diese Operation auch mit einem Qubit möglich ist. Bald werden wir andere Operationen kennenlernen, für die es kein klassisches Gegenstück gibt!

Zusammenfassung

Im ersten Teil unserer kleinen Reihe zum Quantum Computing haben wir grundlegenden Begriffe kennengelernt. Wir haben gesehen, dass Operationen auf Quantenregistern durch unitäre Operatoren beschrieben werden, und wir haben das erste Logikgatter kennengelernt: Das NOT-Gatter wird durch die Pauli-Matrix P_x beschrieben.