Quantencomputing: Geschichte und Hintergrund

In den letzten Jahren wurden verschiedene neue Computertechnologien entwickelt. Das Quantencomputing ist wohl die Technologie, für die von Entwicklern der größte Paradigmenwechsel verlangt wird. Quantencomputer wurden in den 1980er Jahren erstmals von Richard Feynman und Yuri Manin vorgeschlagen. Die Idee des Quantencomputings basiert darauf, was häufig als eines der größten Probleme der Physik angeführt wird: bemerkenswerter wissenschaftlicher Fortschritt bei gleichzeitiger Unfähigkeit, auch einfachste Systeme zu modellieren. Die Quantenmechanik wurde zwischen 1900 und 1925 entwickelt und ist bis heute der entscheidende Baustein, auf dem die Chemie, die Physik der kondensierten Materie und die Technologien von Computerchips bis zur LED-Beleuchtung letztendlich basieren. Aber trotz aller Erfolge war es so, dass auch die einfachsten Systeme von Menschen per Quantenmechanik scheinbar nicht modelliert werden konnten. Dies liegt daran, dass auch für die Simulation von Systemen mit nur einigen Dutzend interagierenden Partikeln mehr Rechenleistung erforderlich ist, als mit jedem verfügbaren herkömmlichen Computer in Tausenden von Jahren bereitgestellt werden kann.

Es gibt viele Wege, um zu verdeutlichen, warum die Simulation der Quantenmechanik so schwierig ist. Die einfachste Erklärung lautet vielleicht wie folgt: Die Quantentheorie lässt sich so interpretieren, dass Materie auf Quantenebene viele verschiedene mögliche Konfigurationen (als Zustände bezeichnet) aufweist. Anders als bei der klassischen Wahrscheinlichkeitstheorie können sich diese vielen Konfigurationen des Quantenzustands, die sich potenziell beobachten lassen, einander überlagern – wie Wellen in einem Gezeitenbecken. Durch diese Beeinträchtigung wird die Verwendung der statistischen Stichprobenentnahme zum Abrufen der Konfigurationen von Quantenzuständen verhindert. Stattdessen müssen wir jede mögliche Konfiguration nachverfolgen, die ein Quantensystem ggf. aufweist, wenn wir die Quantenevolution verstehen möchten.

Stellen Sie sich ein System mit Elektronen vor, in dem sich die Elektronen an einer von $40$ Positionen befinden können. Die Elektronen können hierbei über eine von $2^{40}$ Konfigurationen verfügen (da jede Position entweder ein Elektron oder kein Elektron aufweist). Zum Speichern des Quantenzustands der Elektronen im Arbeitsspeicher auf einem herkömmlichen Computer müsste dieser eine Größe von mehr als $130$ GB haben! Dies ist ein sehr hoher Wert, der für einige Computer aber durchaus im Bereich des Möglichen liegt. Falls wir für die Partikel eine von $41$ möglichen Positionen zulassen, ergeben sich doppelt so viele Konfigurationen ($2^{41}$). Hierfür wäre zum Speichern des Quantenzustands ein Arbeitsspeicher mit einer Größe von mehr als $260$ GB erforderlich. Diese Erhöhung der Anzahl von Positionen lässt sich nicht unendlich weitertreiben, wenn wir den Zustand auf herkömmliche Weise speichern möchten. Wir gelangen sehr schnell an den Punkt, an dem die Speicherkapazitäten der leistungsstärksten Computer der Welt überschritten werden. Bei einer Zahl von einigen Hundert Elektronen übersteigt der Arbeitsspeicherwert, der zum Speichern des Systems benötigt wird, die Anzahl von Partikeln im Universum. Daher besteht keinerlei Hoffnung, die entsprechende Quantendynamik mit unseren herkömmlichen Computern jemals simulieren zu können. In der Natur findet die Evolution solcher Systeme im Laufe der Zeit aber basierend auf den Gesetzen der Quantenmechanik statt – völlig ungeachtet dessen, dass diese Evolution mit herkömmlicher Rechenleistung nicht technisch hergestellt und simuliert werden kann.

Diese Beobachtung hat dazu geführt, dass sich die ersten Visionäre im Bereich des Quantencomputings eine einfache und gleichzeitig schwerwiegende Frage gestellt haben: Können wir dieses Problem in eine Chance verwandeln? Genauer gesagt: Wenn die Simulation der Quantendynamik so schwierig ist, was würde dann passieren, wenn wir Hardware bauen, die über Quanteneffekte in Form von grundlegenden Vorgängen verfügt? Können wir Systeme mit interagierenden Partikeln mit einem System simulieren, bei dem genau die gleichen Gesetze wie in der Natur genutzt werden? Können wir Aufgabenstellungen untersuchen, die nichts mit der Natur zu tun haben, aber auf den Gesetzen der Quantenmechanik basieren bzw. davon profitieren? Diese Fragen haben zur Entstehung des Quantencomputings geführt.

Der Kern des Quantencomputings ist die Speicherung von Informationen in Quantenzuständen von Materie und die Verwendung von Quanten-Gatevorgängen, um Berechnungen mithilfe dieser Informationen durchzuführen, indem Quantenüberlagerung genutzt und deren „Programmierung“ erlernt wird. Ein frühes Beispiel für die Programmierung von Überlagerungen zum Lösen eines Problems, das mit herkömmlichen Computern nur sehr schwer gelöst werden kann, wurde von Peter Shor im Jahr 1994 für ein als „Faktorzerlegung“ bezeichnetes Problem entwickelt. Per Faktorzerlegung können viele unserer Verschlüsselungssysteme mit öffentlichen Schlüsseln, auf denen unsere heutige E-Commerce-Sicherheit basiert (z. B. RSA und Kryptografie für elliptische Kurve), geknackt werden. Seitdem wurden schnelle und effiziente Quantencomputeralgorithmen für schwierige klassische Aufgaben entwickelt: Simulieren von physischen Systemen in der Chemie, Physik und Materialwissenschaft, Durchsuchen einer unsortierten Datenbank, Lösen von Systemen mit linearen Gleichungen und maschinelles Lernen.

Der Entwurf eines Quantenprogramms zur Nutzung von Interferenzen mag wie eine gewaltige Herausforderung klingen, und das ist es auch. Dennoch wurden viele Techniken und Tools, darunter das Quantum Development Kit (QDK), eingeführt, um die Quantenprogrammierung und die Entwicklung von Algorithmen leichter zugänglich zu machen. Es gibt einige grundlegende Strategien, mit denen Quantenüberlagerungen so manipuliert werden können, dass sie für das Computing nützlich sind – während gleichzeitig dafür gesorgt wird, dass sich die Lösung nicht in den vielen unterschiedlichen Möglichkeiten des Quantenbereichs verliert. Die Quantenprogrammierung unterscheidet sich deutlich von der klassischen Programmierung und erfordert völlig andere Tools, um die Denkweise hinter Quantenalgorithmen verstehen und ausdrücken zu können. Ohne die allgemeinen Tools als Hilfe für einen Quantenentwickler bei der Quantenprogrammierung ist die Entwicklung von Quantenalgorithmen nicht so einfach.

Das Quantum Development Kit gibt einer wachsenden Community Tools an die Hand, mit denen sie die Quantenrevolution für ihre Aufgaben, Probleme und Lösungen nutzbar machen können. Unsere allgemeine Programmiersprache Q# wurde konzipiert, um die Herausforderungen im Zusammenhang mit der Verarbeitung von Quanteninformationen zu bewältigen. Sie ist in einen Softwarestapel integriert, der es ermöglicht, einen Quantenalgorithmus bis hinunter zu den primitiven Operationen eines Quantencomputers zu kompilieren. Bevor Sie sich an die Programmiersprache heranwagen, ist es ratsam, sich mit den Grundprinzipien vertraut zu machen, auf denen das Quantencomputing basiert. Wir behandeln die grundlegenden Regeln des Quantencomputings als Axiome, anstatt detailliert deren Grundlagen in der Quantenmechanik darzustellen. Darüber hinaus setzen wir voraus, dass Sie über Grundkenntnisse in linearer Algebra (Vektoren, Matrizen usw.) verfügen. Falls Sie die Geschichte und die Prinzipien des Quantencomputings eingehender studieren möchten, helfen Ihnen die Informationen im Referenzabschnitt weiter.