iX Special 2021
S. 98
Quantenprogrammierung
Einführung

Klassische versus Quantenprogrammierung: der Random Walk

Überlagerte Wege

Sebastian Bock, Prof. Dr. Adrian Paschke

Den Gesetzen der Quantenmechanik folgend wohnt der Quantenprogrammierung eine vollständig andere Logik inne als der traditionellen.

Entwicklerinnen sind mit der Softwareentwicklung auf klassischen Rechnern vertraut. Intuitive Programmiersprachen, die auf bekannten Denk- und Sprachmustern aufbauen, ermöglichen auch Neulingen einen schnellen Einstieg und erste Erfolge bei kleinen Anwendungen. Bei der Programmierung eines Quantencomputers ist die Lage durch die zugrunde liegenden Gesetze der Quantenmechanik komplizierter und deutlich abstrakter. Die Unterschiede bei der Programmierung auf einem klassischen und einem Quantencomputer soll ein Beispiel verdeutlichen.

Steffen fliegt in den Urlaub. Sofort zieht es ihn auf die Strandpromenade. Um fünf Uhr morgens stolpert er reichlich angetrunken aus einer Bar und kann sich nicht mehr erinnern, in welcher Richtung sein Hotel liegt. Dort muss er aber schnellstmöglich hin, will er sich pünktlich um sechs Uhr eine Liege in der ersten Reihe am Hotel-Pool reservieren. Steffen denkt nach: Das Hotel muss irgendwo an dieser Straße liegen. In einer Mathevorlesung vor mehreren Jahren hatte der Professor etwas über Random Walks erzählt und dass der Walker nach beliebig vielen Schritten jeden Punkt auf einer Linie erreichen kann.

Steffen fasst also den Entschluss, eine Münze zu werfen. Bei Kopf geht er nach links, bei Zahl nach rechts jeweils bis zum nächsten Hotel und schaut, ob es das richtige ist. Falls nicht, wirft er wieder eine Münze und geht entsprechend nach links oder rechts. Wenn der Professor recht hatte, müsste er irgendwann an seinem Hotel ankommen (siehe Abbildung 1).

Steffen hat die Orientierung verloren und will zu seinem Hotel zurück. Er wirft eine Münze und geht mit einer Wahrscheinlichkeit von 50 Prozent nach links und mit einer Wahrscheinlichkeit von 50 Prozent nach rechts (Abb. 1).

Steffens Vorgehen entspricht einem einfachen, diskreten Random Walk in einer Dimension, also auf einer Linie. Tatsächlich erreicht man damit nach beliebig vielen Schritten jeden Punkt auf dieser Linie. Der Haken: Steffen hat nicht beliebig viel Zeit, er will in einer Stunde im Hotel sein. Zwei kleine Programme – ein klassisches und ein Quantenprogramm – sollen das Umherirren von Steffen modellieren.

Die klassische Irrfahrt

Für diesen einfachen Fall kann der Ablauf des klassischen Python-Programms der Beschreibung des Random Walk folgen. Eine Funktion Randwalk(n) für den Random Walk bekommt die Anzahl der zu gehenden Schritte n übergeben. Die Funktion erhält außerdem eine Variable für die Position und eine für die verstrichene Zeit. In der for-Schleife, die n-mal durchlaufen wird, übernimmt die Funktion random.choice den Münzwurf. Sie gibt mit einer Wahrscheinlichkeit von jeweils 0,5 False – also Zahl – oder True – für Kopf – zurück. Bei False wird die Positionsvariable x um 1 erhöht, Steffen geht nach rechts, bei True wird x um eins verringert, Steffen geht nach links. Nach Durchlaufen der Schleife gibt die Funktion die Position x nach n Zeitschritten zurück (siehe Listing 1).

Mit diesem kleinen Programm lässt sich untersuchen, wie die Wahrscheinlichkeitsverteilung nach beispielsweise 16 Zeitschritten aussieht. In diesem Fall hat Steffen etwa vier Minuten pro Münzwurf und Gang zum nächsten Hotel, um pünktlich anzukommen. Dazu wird die oben definierte Funktion sehr oft, zum Beispiel 100000 Mal, aufgerufen und die Ergebnisse werden in einem Histogramm dargestellt (siehe Abbildung 2).

Kommentieren