Programmierung von Quantencomputern für Nicht-Physiker


43

Ich komme aus dem nicht-physikalischen Bereich und bin sehr daran interessiert, Quantum Computing zu betreiben - insbesondere, wie man sie programmiert. Jede Anleitung zum Einstieg ist sehr hilfreich.


Ein klassischer Programmierer muss die Funktionsweise des Elektrons nicht verstehen. Dies gilt auch für QED.
tgm1024

Übrigens scheint der Formatierungsmechanismus hier im Vergleich zu anderen Stack-Exchange-Sites schrecklich kaputt zu sein. Ich habe versucht, eine echte Antwort zu finden und musste aufgeben, um auf einen sehr einfachen Kommentar zurückzugreifen. Die Listen hier verhalten sich nicht in Anführungszeichen. Ich hatte gedacht, dass alle Stackexchange-Sites den gleichen UI-Code haben.
tgm1024

@tgm1024 worauf beziehen Sie sich genau? Welche Formatierung funktioniert hier nicht, aber auf anderen Websites? Listen in Anführungszeichen funktionieren für mich einwandfrei
glS

Antworten:


22

Sie könnten mit einer Einführung in Quantencomputer wie diesen von den Voxxed Days Vienna 2018 beginnen - er richtet sich an Personen mit Programmierkenntnissen, die jedoch keine oder nur geringe Vorkenntnisse in der Quantenmechanik haben. Anschließend können Sie die Handbücher in IBM Quantum Experience oder die für das Microsoft Quantum Development Kit lesen .

Darüber hinaus gibt es zum Beispiel unzählige Videos auf YouTube, mit denen Sie das Thema besser verstehen können.


17

Ich denke, dass Quantenprogrammierer nicht unbedingt etwas über Quantenphysik und lineare Algebra wissen müssen. Dies sind sicherlich Dinge, die dazu beitragen werden, das Wissen eines Quantenprogrammierers zu erweitern, aber sie sollten nicht als Voraussetzung angesehen werden.

Trotzdem beginnen die meisten Ressourcen, die einem angehenden Quantenprogrammierer helfen sollen, mit der Annahme einer linearen Algebra. Diejenigen, die sich nicht hauptsächlich auf QISKit, das SDK für IBMs Quantengerät, konzentrieren (und einige von ihnen wurden von mir geschrieben).

Das einfachste Programm, das Sie entwickeln können, ist „Hello World“. Wie macht man das für Quantencomputer? Mein Vorschlag ist eine Überlagerung von Emoticons .

Sobald Sie sich in der Quantenprogrammierung von „Hello World“ verabschiedet haben, möchten Sie etwas Komplexeres tun. Oft machen die Leute einfache Spiele. Machen wir das also mit einem Quantencomputer. Ich habe Schlachtschiffe gebaut .

Diese und viele weitere Beispiele für die Quantenprogrammierung finden Sie im QISKit-Tutorial . Ich denke, das ist wahrscheinlich der beste Ort für neue Quantenprogrammierer, um zu sehen, was getan werden kann und wie es getan werden kann.


5

pyQuil ist eine Open-Source-Quantenprogrammierbibliothek in Python. Die Dokumentation enthält eine praktische Einführung in das Quantencomputing, das Sie durch Programmieren erlernen. Es wird kein physikalischer Hintergrund vorausgesetzt.

Hier einige Links zu den Hauptthemen:


5

Es ist nicht erforderlich, die Quantenmechanik vollständig zu verstehen, um die Theorie hinter der Qualitätskontrolle zu verstehen. Ich bin ein Mathematik-BSc / Programmierer und habe über das Thema gelesen und auch den alten edX-QC-Kurs gemacht (leider nicht verfügbar, aber es gibt andere). Ich glaube, ich kann sagen, dass ich den Kern der QC verstehe, aber ich weiß so gut wie nichts über Quantenmechanik.

Das Wichtigste ist, dass Quantum Computing hauptsächlich lineare Algebra verwendet, die auf Mathematik basiert, die im Bachelor-Studiengang Ingenieurwesen / Informatik gelehrt wird. Vergleichen Sie dies mit der realen Quantenmechanik, die unendlich dimensionale Räume verwendet (oder mit der Funktionsanalyse, wenn Sie möchten).

Wenn Sie sich mit diesen mathematischen Grundlagenthemen wohl fühlen, können Sie sich Susskinds Quantenmechanik: Theoretisches Minimum ansehen - es geht eigentlich nicht um 'echte' Quantenmechanik, sondern hauptsächlich um Dinge, die für die Qualitätskontrolle nützlich sind. Übrigens richtet sich die gesamte Buchreihe Theoretical Minimum an Personen, die sich mit Mathematik auskennen (z. B. Informatiker oder Ingenieure) und mehr über Physik erfahren möchten. Es gibt auch viele Kurse online, zum Beispiel gibt es neue Kurse auf edX, aber ich habe keinen von ihnen gemacht, daher kann ich keinen empfehlen.


4

Wenn Sie mehr als nur lernen möchten, wie man Quantenschaltungen in den verschiedenen Quantenprogrammierungs-Frameworks wie Q # , pyQuil und QISKit schreibt , empfehle ich dieses kürzlich erschienene Papier mit dem Titel Quantenalgorithmus- Implementierungen für Anfänger vom Los Alamos National Laboratory. Es ist eine großartige Ressource, um zu verstehen, wie mit IBM Q Experience verschiedene Quantenalgorithmen sowie deren Orakel und spezifische Subroutinen als Quantenschaltungen kompiliert und implementiert werden können. Ich empfehle Ihnen, sie in einem der oben genannten Programmierframeworks zu implementieren und die wichtigsten Details zu erfahren.


4

Quantencomputer werden durch (sich entwickelnde Programmiersprachen darstellende) sogenannte Quantenschaltungen programmiert. Dies ist eine Folge von Quantentoren plus der Information, auf welche Quantenbits (Qubits) sie wirken.

Das einzige, was Sie wirklich über Quantentore wissen müssen, ist, dass sie Rotationen darstellen (in einem höherdimensionalen Raum, dem sogenannten Hilbert-Raum). Sie sind also reversibel: Quantencomputer sind mit reversibler Logik programmiert.

|00|01|10|11für ein 2-Qubit-System in der üblichen Dirac-Notation) erhält man eine komplexe Zahl als Koeffizienten oder als sogenannte Wahrscheinlichkeitsamplitude. Die Basisvektoren sind orthogonal und erstrecken sich über den Hilbert-Raum des Staates, wobei die Wahrscheinlichkeitsamplituden als Koordinaten darin gesehen werden können. Dies ist das Bild, in dem Quantentore Rotationen bewirken. Sie werden feststellen, dass Physiker oft ein anderes Bild, die Bloch-Kugel, für Einzel-Qubit-Systeme verwenden, in denen Quantentore ebenfalls Rotationen verursachen (aber manchmal um einen größeren Winkel oder um einen, der in diesem Bild ganz weggelassen ist).

Jede herkömmliche Logik kann von einem Quantencomputer implementiert werden, indem sie zuerst in reversibler Logik ausgedrückt wird (was möglicherweise zusätzliche Bits erfordert). Das klassische NICHT-Gatter entspricht dem X-Quantentor, aber im Gegensatz zu dem klassischen Fall, bei dem die einzigen reversiblen 1-Bit-Gatter die Identität und das NICHT-Gatter sind, hat ein Quantencomputer vier entsprechende Gatter (X, Y, Z entsprechend den Umdrehungen auf der Blochkugel plus Identität). Außerdem können Rotationen auftreten, die sich nur um einen Bruchteil der Rotation dieser Tore drehen. einige besonders interessante haben spezielle Namen und Abkürzungen wie das Hadamard-Tor oder das H-Tor, das die gleiche Überlagerung aller Zustände schafft.

Unglücklicherweise müssen frühe Quanten-Software-Ingenieure wahrscheinlich etwas über die verwendete Quanten-Computer-Hardware wissen: Aufgrund des willkürlich und kontinuierlich wählbaren Winkels der effektiven Drehung eines Quanten-Gates gibt es für Quanten-Computer eine Art analoges Element erzeugt notwendigerweise Fehler (und physikalische Quantencomputer haben noch mehr Fehlerquellen als nur diese). Es gibt eine Möglichkeit, damit umzugehen, eine Quantenfehlerkorrektur, die Fehler diskretisiert und die wahrscheinlichsten Diskretisierungen von ihnen korrigiert, um (idealerweise) beliebig komplexe Berechnungen mit gebundenen Fehlern zu erzielen. Eine Optimierung wird jedoch wahrscheinlich bedeuten, dass ein Quantencomputer mit einer Auswahl an Quantenfehlerkorrekturen für ein bestimmtes Quantentor oder gar Algorithmen geeigneter ist als andere.


Hat sich noch jemand gefragt, ob die einzigen, die verstehen, wie man einfach Quantenalgorithmen schreibt, selbstentwickelte Quanten-KIs sind?
tgm1024
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.