Erlernen des Quantencomputings mit den Quanten-Katas

Die Quanten-Katas sind eigenverantwortlich zu absolvierende Open Source-Tutorials und Programmierübungen, die das Ziel haben, Ihnen gleichzeitig Elemente des Quantencomputings und der Q# Programmierung zu vermitteln.

Learning by Doing

In den in diesem Projekt enthaltenen Tutorials und Übungen geht es um „Learning by Doing“: Sie enthalten Programmieraufgaben zu bestimmten Themen, die von „Sehr einfach“ bis zu „Sehr anspruchsvoll“ reichen. Für jede Aufgabe müssen Sie etwas Code einfügen. Für die ersten Aufgaben ist vielleicht nur eine Zeile erforderlich, während Sie später ggf. ein größeres Stück Code bereitstellen müssen.

Am wichtigsten ist Folgendes: Die Katas umfassen auch Testframeworks, mit denen die Lösungen für die Aufgaben eingerichtet, ausgeführt und überprüft werden. Auf diese Weise erhalten Sie sofort Feedback zu Ihrer Lösung und können Ihren Ansatz überdenken, falls er nicht korrekt ist.

Sie können die Katas zum Lernen in der Umgebung Ihrer Wahl verwenden:

  • Jupyter-Notebooks online innerhalb der Binder-Umgebung
  • Jupyter-Notebooks, die auf Ihrem lokalen Computer ausgeführt werden
  • Visual Studio
  • Visual Studio Code

Was kann ich mit den Quanten-Katas lernen?

Lernen Sie die Grundlagen des Quantencomputings kennen, oder steigen Sie tiefer ein in Quantenalgorithmen und -protokolle. Wir empfehlen Ihnen, am Anfang diesem Lernpfad zu folgen. So können Sie sicherstellen, dass Sie ausreichend mit den grundlegenden Konzepten des Quantencomputings vertraut sind. Sie können natürlich die Themen überspringen, mit denen Sie sich gut auskennen, z. B. komplexe Arithmetik, und die Algorithmen in der von Ihnen gewünschten Reihenfolge erlernen.

Einführung in die Konzepte des Quantencomputings

Kata Beschreibung
Komplexe Arithmetik Dieses Tutorial erläutert einen Teil der mathematischen Grundlagen, die für das Quantencomputing erforderlich sind, wie etwa imaginäre und komplexe Zahlen.
Lineare Algebra Lineare Algebra wird zur Darstellung von Quantenzuständen und Vorgängen im Quantencomputing verwendet. Dieses Tutorial behandelt die Grundlagen, einschließlich Matrizen und Vektoren.
Das Konzept eines Qubits Erfahren Sie mehr über Qubits – eines der Kernkonzepte des Quantencomputings.
Quantengatter mit einem einzelnen Qubit In diesem Tutorial werden Quantengatter mit einem einzelnen Qubit vorgestellt, die als Bausteine von Quantenalgorithmen fungieren und Quantum-Qubit-Zustände auf verschiedene Weise transformieren.
Systeme mit mehreren Qubits In diesem Tutorial werden Systeme mit mehreren Qubits, ihre Darstellung in mathematischer Notation und Q# Code sowie das Konzept der Verschränkung erläutert.
Quantengatter mit mehreren Qubits Dieses Tutorial folgt dem Tutorial für Quantengatter mit einem einzelnen Qubit und konzentriert sich auf das Anwenden von Quantengattern auf Systeme mit mehreren Qubits.

Grundlagen des Quantencomputings

Kata Beschreibung
Erkennen von Quantengattern Eine Reihe von Übungen, mit denen Sie sich mit den grundlegenden Quanten-Gates in Q# vertraut machen können. Umfasst Übungen für Quantengatter mit einzelnen und mehreren Qubits, Adjoint- und Controlled-Gatter und die Verwendung von Gattern zum Ändern des Zustands eines Qubits.
Erstellen einer Quantenüberlagerung Machen Sie sich mit diesen Übungen mit dem Konzept der Überlagerung und mit der Programmierung in Q# vertraut. Sie umfassen Übungen für Gates mit einzelnen und mehreren Qubits, Überlagerung sowie Flusssteuerung und Rekursion in Q#.
Unterscheiden von Quantenzuständen mit Messungen Machen Sie diese Übungen, und lernen Sie die Quantenmessung und orthogonale und nicht orthogonale Zustände kennen.
Verknüpfte Messungen Erfahren Sie mehr über verknüpfte Paritätsmessungen und die Verwendung des Measure-Vorgangs zum Unterscheiden von Quantenzuständen.

Algorithmen

Kata Beschreibung
Quantenteleportation Dieses Kata untersucht die Quantenteleportation – ein Protokoll, das die Kommunikation eines Quantenzustands mithilfe der klassischen Kommunikation und der zuvor freigegebenen Quantenverschränkung ermöglicht.
Superdichte Codeerstellung Superdichte Codeerstellung ist ein Protokoll, das die Übertragung von zwei Bits mit klassischen Informationen ermöglicht, indem nur ein Qubit mithilfe der zuvor freigegebenen Quantenverschränkung gesendet wird.
Deutsch-Jozsa-Algorithmus Dieser Algorithmus ist bekannt als eines der ersten Beispiele eines Quantenalgorithmus, der exponentiell schneller ist als ein beliebiger deterministischer klassischer Algorithmus.
Untersuchen allgemeiner Eigenschaften des Algorithmus für die Grover-Suche Eine allgemeine Einführung in einen der bekanntesten Algorithmen im Quantencomputing. Dadurch wird das Problem gelöst, eine Eingabe für eine Blackbox (Orakel) zu finden, die eine bestimmte Ausgabe erzeugt.
Implementieren des Algorithmus für die Grover-Suche Dieses Kata befasst sich intensiver mit dem Suchalgorithmus von Grover und deckt das Schreiben von Orakeln, das Durchführen von Schritten des Algorithmus und schließlich das Zusammenführen ab.
Lösen realer Probleme mit dem Grover-Algorithmus: SAT-Probleme Eine Reihe von Übungen, bei denen mit dem Algorithmus von Grover reale Probleme gelöst werden können, wie z. B. Erfüllbarkeitsprobleme der Aussagenlogik (SAT).
Lösen realer Probleme mit dem Grover-Algorithmus: Probleme mit der farblichen Kennzeichnung von Graphen Dieses Kata erläutert den Algorithmus von Grover zum Lösen von Constraint-Satisfaction-Problemen am Beispiel eines Problems mit der farblichen Kennzeichnung von Graphen.

Protokolle und Bibliotheken

Kata Beschreibung
BB84-Protokoll für Quantenschlüsselverteilung Erfahren Sie mehr, und implementieren Sie ein Protokoll für die Quantenschlüsselverteilung, BB84, wobei Sie mithilfe von Qubits kryptografische Schlüssel austauschen.
Korrekturcode für Bit-Flip-Fehler Erkunden Sie die Quantenfehlerkorrektur mit dem einfachsten der QEC-Codes (Quantum Error Correction, Quantenfehlerkorrektur), dem Bit-Flip-Code mit drei Qubits.
Phasenschätzung Phasenschätzalgorithmen zählen zu den grundlegendsten Bausteinen des Quantencomputings. Erfahren Sie anhand dieser Übungen mehr über Phasenschätzung, einschließlich Quantenphasenschätzung und wie Sie Phasenschätzungsroutinen in Q# vorbereiten und ausführen.
Quantenarithmetik: Erstellen von Ripple-Carry-Addierern Eine ausführliche Reihe von Übungen, die die Ripple-Carry-Addition auf einem Quantencomputer behandeln. Erstellen Sie einen direkten Quantenaddierer, erweitern Sie ihn mit einem anderen Algorithmus, und erstellen Sie abschließend einen direkten Quantum-Subtrahierer.

Verschränkungsspiele

Kata Beschreibung
Spiel „CHSH“ Erkunden Sie die Quantenverschränkung mit einer Implementierung des Spiels CHSH. Dieses nicht lokale Spiel zeigt, wie die Quantenverschränkung die Wahrscheinlichkeit des Spielers, zu gewinnen, über die Möglichkeiten einer rein klassischen Strategie hinaus erhöhen kann.
Spiel „GHZ“ Das Spiel „GHZ“ ist ein weiteres nicht lokales Spiel, das jedoch drei Spieler umfasst.
Spiel „Magisches Mermin-Peres-Quadrat“ Eine Reihe von Übungen, die Quantenpseudotelepathie einsetzen, um ein Magisches Quadrat zu lösen.

Ressourcen

Die gesamte Serie der Quanten-Katas ansehen

Onlineausführung der Katas