Informatik-Lexikon

Q

Quantencomputer
Quantenprogrammiersprachen

Quantencomputer

 

Kurzinfo Herkömmliche Rechner werden seit langer Zeit in relativ konstanten Zeitintervallen besser und schneller, und das wird auch noch eine Weile so bleiben. Aber es ist absehbar, dass Grenzen erreicht werden, spätestens dann, wenn die Miniaturisierung auf der atomaren Ebene ankommt. Zudem gibt es schon heute eine Vielzahl von Problemen, die in der Praxis von größter Wichtigkeit sind, für die es aber keine effizienten Lösungsverfahren gibt.

 

Erläuterung

Diese beiden Aspekte führen zu starken Aktivitäten, um neuartige Rechnerkonzepte zu erfinden und nutzbar zu machen. In den letzten 20 Jahren haben hier zwei Modelle besondere Beachtung gefunden; das eine ist eine Art Bio-Maschine, in der im wesentlichen DNS-Stränge als Prozessoren fungieren. Damit kann man im Prinzip einen enormen Grad an Parallelität realisieren, idealerweise in der Größenordnung von 10**25 . Das würde zwar einen großen Fortschritt bedeuten, die genannten schweren Probleme würden allerdings nach wie vor schwer bleiben (nur dass die Schwierigkeit erst bei etwas größeren Eingaben beginnen würde).

Das zweite Modell ist der Quantencomputer, in dem versucht werden soll, quantenmechanische Effekte auszunutzen, um Berechnungen tatsächlich essentiell zu beschleunigen (d.h. nicht nur um einen konstanten Faktor).

Die Idee stammt ursprünglich von Richard Feynman [1], der bereits 1982 aus der Feststellung, dass man quantenmechanische Effekte nicht effizient im Rechner darstellen konnte, den Umkehrschluss zog, dass ein auf solchen Effekten basierender Rechner schneller sein könnte als herkömmliche Rechner.
Es dauerte noch 12 Jahre, bis durch den Aufsehen erregenden Algorithmus von Peter Shor [4] klar wurde, dass ein Quantencomputer in der Lage wäre, große Zahlen effizient zu faktorisieren. Das hätte große Auswirkungen, denn weit verbreitete kryptographische Verfahren, wie etwa die RSA-Verschlüsselung, würden dadurch sofort unbrauchbar.

Quanteneffekte

Was ist ein Quanteneffekt? Das folgende sehr populäre Beispiel soll das verdeutlichen. Es sei vorausgeschickt, dass man intuitiv Hemmungen haben wird, diesen Effekt als Realität hinzunehmen. Er ist aber durch nachprüfbare Experimente einwandfrei nachgewiesen.

Sendet man Photonen auf einen im 45-Grad-Winkel aufgestellten halb durchlässigen Spiegel, so kann man in zwei Detektoren, die hinter dem Spiegel geradlinig bzw. im rechten Winkel aufgestellt sind, jeweils etwa 50 Prozent der abgesendeten Photonen messen. Führt man dagegen durch zwei voll reflektierende Spiegel beide Wege wieder zusammen und stellt am Treffpunkt einen weiteren halb durchlässigen Spiegel auf, so erreichen alle Photonen Detektor 1 und keines Detektor 2 (Abb. 1).

Abb. 1. Anordnung zum Nachweis des Quanteneffekts

Das könnte man nun so interpretieren, dass es einfach eine Eigenschaft der Photonen ist, durch halbdurchlässige Spiegel durchzugehen (d.h. immer) oder nicht (d.h. nie). Dass diese Interpretation falsch ist, zeigt folgender überraschender Effekt: Blockiert man einen der Wege (z.B. durch eine absorbierende Fläche), dann werden in beiden Detektoren etwa gleich viele Photonen registriert.

Dieses Experiment kann nur durch die Folgerung erklärt werden, dass die Photonen generell gleichzeitig beide Wege verfolgen, d.h., jedes Photon befindet sich in einer sog. „kohärenten Superposition" zweier möglicher Zustände. Die Zustände sind hier: oberen Weg nehmend oder unteren Weg nehmend.

Die Tatsache, dass sich ein System gleichzeitig in zwei Zuständen befinden kann, ist die Neuigkeit, die man auszunutzen versucht, um einen sog. Quantenrechner zu bauen. Während ein Bit im klassischen Computer immer einen der Werte 0 oder 1 annimmt, kann man, auf Quanteneffekten aufbauend, ein Qubit definieren, das eine gewichtete Überlagerung dieser zwei Basiszustände als aktuellen Wert annehmen kann. Die jeweiligen Gewichte, mit denen die Basiszustände in der Überlagerung vorkommen, nennt man Amplituden. Aus ihnen berechnet sich die Wahrscheinlichkeit, im Falle einer Messung den entsprechenden Basiszustand zu erhalten.

Realisierung

Zunächst erscheint es nicht allzu wertvoll, ein einzelnes Qubit zur Verfügung zu haben. Zwar kann man (je nachdem, welche Amplituden in der Überlagerung realisierbar sind) evtl. auch schon mit einem Qubit erstaunliche Ergebnisse erzielen, richtig interessant wird Quantencomputing aber erst dann, wenn man viele Qubits nutzen kann. Ein Computer mit n Qubits befindet sich nämlich in einer Überlagerung von 2**n Basiszuständen, d.h., er verfügt über 2**n parallele Prozessoren.

Hier ergeben sich natürlich große praktische Probleme. Qubits können nur dann funktionieren, wenn sie von äußeren Einflüssen völlig abgeschottet werden. Zudem sind auch die Amplituden als physikalische Größen grundsätzlich fehlerbehaftet. Die Herstellung und schrittweise gezielte Manipulation einer großen Zahl von Qubits stellt daher ein enormes technisches Problem dar, an dessen Lösung aber zur Zeit massiv gearbeitet wird. Das aktuelle Highlight ist ein System mit 5 Qubits.

Schliesslich muss man noch beachten, dass zwar ein System mit n Qubits eine Überlagerung von 2**n Basiszuständen darstellen kann, dass es aber nicht allgemein möglich ist, alle Informationen, die in dieser Superposition vorliegen, auch auf die Außenwelt zu übertragen.

Stattdessen muss man mit einer sog. „Messung" das System zwingen, in einen der Basiszustände überzugehen, wobei die einzige nach außen abgegebene Information der tatsächlich angenommene Basiszustand ist. Eine gezielte Nutzung dieses Effekts muss also dadurch geschehen, dass man die Wahrscheinlichkeiten (die sich aus den oben erwähnten Amplituden berechnen lassen) für die verschiedenen möglichen Messergebnisse entsprechend manipuliert, so dass man mit hoher Wahrscheinlichkeit das gewünschte Resultat erhält.

Algorithmen

Um Quantenalgorithmen exakt zu beschreiben, muss man den gesamten mathematischen Apparat, der zur Beschreibung quantenmechanischer Systeme herangezogen wird, einführen; hierbei handelt es sich im Wesentlichen um einen Hilbert-Raum der Dimension 2**n , wenn das System n Qubits verwendet. Für eine angemessene Darstellung dieser Theorie ist an dieser Stelle nicht genug Raum. Aber wir können einen Eindruck vermitteln, wie kohärente Superpositionen im Idealfall genutzt werden könnten. Wir betrachten zwei Algorithmen, die wir jeweils grob skizzieren. Einzelheiten zu beiden Algorithmen kann man z.B. dem Buch von J. Gruska [3] entnehmen. Zuerst wollen wir von einer Blackbox, die eine (unbekannte) Funktion f: {0, 1}->{0, 1} berechnet, herausbekommen, ob sie eine konstante Funktion realisiert oder nicht. Mit einem klassischen Algorithmus benötigt man offensichtlich zwei Testfragen an die Blackbox, einmal für die Berechnung von f(0) und dann für die Berechnung von f(1).

Ein Quantencomputer kann nun ein Qubit in die Zustände 0 und 1 mit gleicher Amplitude bringen und dieses Qubit als Eingabe für die Blackbox verwenden. Die Ausgabe der Blackbox ist dann eine Superposition der beiden Funktionswerte.

Nun bleibt nur zu testen, ob das Ergebnis ein Basiszustand ist (d.h. beide Funktionswerte waren gleich) oder nicht (d.h. es wurden zwei verschiedene Funktionswerte geliefert).

Für den zweiten Algorithmus betrachten wir das folgende Datenbankzugriffsproblem: Es liegt eine Datenbank mit n verschiedenen Datensätzen (die alle verschieden sein sollen) vor, etwa x1 ,. . .,x n . Zudem ist ein Element t vorgegeben.

Die Frage soll beantwortet werden, ob t in der Datenbank vorkommt, d.h., ob ein i existiert mit t = x i . Ein klassischer Computer braucht hierfür im schlimmsten Fall n Operationen, da er jedes xi mit t vergleichen muss. Selbst dann, wenn der Algorithmus probabilistisch arbeiten darf, muss man noch mehr als n/2 viele Schritte ausführen. Der Quantenalgorithmus, den Lov Grover 1996 entwarf [2], benutzt log n viele Qubits, um zunächst eine gleichverteilte Superposition aller Indizes aus dem Bereich {1,. . .,n} zu erzeugen. Dann prüft er (gleichzeitig in Quantensuperposition für alle Indizes), ob der gespeicherte Index zu dem Element t führt. Die Antwort auf diese Frage kann in der Superposition notiert werden. Nun würde man gerne durch eine einfache Instruktion die Frage beantworten lassen: Kommt in der Superposition ein Basiszustand vor, in dem die Antwort JA gespeichert ist? Leider ist das nicht möglich.

Stattdessen muss man ganz allmählich durch Anwendung geeigneter Operationen die Wahrscheinlichkeit, dass man bei einer Messung des gespeicherten Index gerade denjenigen bekommt, an dem t in der Datenbank steht (falls ein solcher existiert), erhöhen, bis sie hoch genug ist, dass man notfalls durch mehrmaliges Ausführen eine zuverlässige Aussage erhält. Eine sorgfältige Analyse hat ergeben, dass man mit einem solchen Algorithmus in Zeit proportional zu Wurzel aus n eine mit hoher Wahrscheinlichkeit richtige Aussage finden kann.

Grenzen

Der Datenbankalgorithmus von Grover kann zwar benutzt werden, um beliebige NP-vollständige Probleme zu lösen. Allerdings ist der Gewinn relativ gering, denn der nahe liegende Exponentialzeitalgorithmus, bei dem man alle Möglichkeiten probiert und nachprüft, ob eine Lösung dabei ist, würde selbst dann, wenn er nicht aus Platzgründen scheitert, nur eine Verbesserung von Rechenzeit 2**p(n) auf 2**p(n)/2 bringen (dabei ist p ein Polynom).

Tatsächlich ist sogar mit komplexitätstheoretischen Untersuchungen (unter Benutzung sog. „Relativierungen") gezeigt worden, dass es höchst wahrscheinlich keine effizienten Quantenalgorithmen für NP-harte Probleme geben kann. Dennoch gibt der oben erwähnte Algorithmus von Shor für das Faktorisieren großer Zahlen Anlass zur Hoffnung auf essentielle Fortschritte durch Quantencomputing.

                   Artikelanfang  Seitenanfang

Literatur

  1. Feynman, R. P.: Simulating physics with computers. International Journal of Theoretical Physics 21, 467–488 (1982)
  2. Grover, L. K.: A fast quantum mechanical algorithm for database search. Proceedings of the 28th ACM STOC, 212–219 (1996)
  3. Gruska, J.: Quantum computing. New York: McGraw-Hill 1999
  4. Shor, P. W.: Algorithms for quantum computation: discrete log and factoring. Proceedings of the 35th IEEE FOCS, 124–134 (1994)

                   Artikelanfang  Seitenanfang

Autor & Copyright
Ulrich Hertrampf
Universität Stuttgart,
Institut für Informatik,
Abteilung Theoretische Informatik,
Breitwiesenstraße 20–22,
D-70565 Stuttgart

© 2000 Informatik Spektrum, Springer-Verlag Berlin Heidelberg

                   Artikelanfang  Seitenanfang

Quantenprogrammiersprachen

 

Kurzinfo Algorithmen für Quantenrechner wie der Faktorisierungsalgorithmus von Shor lassen sich mittels neuer Programmiersprachen formulieren, die neben konventionellen auch über für Quantenrechner spezifische Sprachkonstrukte verfügen. In Verbindung mit Simulatoren kann man so auch bereits heute Programme für Quantenrechner entwickeln und testen.

 

Erläuterung

Quantensysteme können durch herkömmliche Rechner nicht effizient simuliert werden.

Richard Feynman war der erste, der im Jahre 1982 den positiven Aspekt dieser Tatsache gesehen hat. Wenn es nämlich umgekehrt möglich wäre, mit Quantensystemen zu rechnen, dann sollten diese manche Probleme effizienter lösen können als klassische Rechner, vorausgesetzt, es lassen sich entsprechende Algorithmen finden, die den sogenannten Quantenparallelismus auszunutzen erlauben.

Einen regelrechten Boom an Forschungsaktivitäten zu solchen Quantenrechnern [2] hat die Entdeckung eines Algorithmus durch Peter Shor im Jahre 1994 ausgelöst, jetzt Shor-Algorithmus genannt, durch den ein hinreichend großer Quantenrechner die Primfaktorzerlegung einer natürlichen Zahl in bezüglich der Stellenzahl polynomialer Zeit durchführen könnte. Demgegenüber besitzen die derzeitig besten Verfahren (Siebverfahren) eine exponentielle Zeitkomplexität. Damit ist zumindest der theoretische Nachweis geführt, dass verbreitete kryptographische Verfahren, die auf der Faktorisierung von Zahlen und dem diskreten Logarithmus beruhen wie RSA und ElGamal potenziell unsicher sind.

Die Beschreibung von Algorithmen bedarf einer Notation. In der Literatur zur Quanteninformationstheorie (Zitate s. unter [3]) werden Algorithmen, wie in der Informatik-Literatur üblich, als ein Gemisch aus mathematischer Notation und Beschreibung in natürlicher Sprache formuliert. Es ist daher naheliegend, hier einen Schritt weiter zu gehen und zu versuchen, eine Notation zu definieren, die eine echte Programmiersprache darstellt, mit der Algorithmen also in eine auf einem Rechner lauffähige Form gebracht werden können.

Solche Sprachen werden als Quantenprogrammiersprachen („quantum programming languages", kurz QPLs) bezeichnet, wobei durch Bibliotheken entsprechend erweiterte konventionelle Sprachen auch dieser Kategorie zugerechnet werden.

Man kann sicherlich einwenden, dass eine Beschäftigung mit QPLs noch verfrüht ist angesichts der Tatsache, dass Quantenrechner mit einer großen Zahl von qubits, wie sie für eine brauchbare Implementierung etwa des Shor-Algorithmus erforderlich sind, nach vorherrschender Meinung auf absehbare Zeit nicht zur Verfügung stehen werden.

Es gibt aber durchaus eine Reihe guter Gründe für solche Arbeiten. Niklaus Wirth hat stets betont, dass Programmiersprachen auch ein Kommunikationsmittel zwischen Menschen sind. In diesem Sinn erlauben QPLs, über Quantensysteme in einer aus Sicht der Physik durchaus neuartigen Weise zu sprechen; viele altbekannte Phänomene der Quantenphysik erscheinen so in neuem Licht, wenn konkrete Probleme in einer QPL formuliert werden.

Vor allem können die bisher bekannten Algorithmen in einer wesentlich genaueren und detaillierteren Weise formuliert werden, als es mit einer Art Pseudocode-Notation möglich ist; das hat insbesondere auch einen didaktischen Wert.

Natürlich sollte man seine Erwartungen nicht zu hoch ansetzen. Informatik-Konzepte stammen aus physikalischer Sicht aus einer klassischen Welt, d.h. also einer solchen, in der die spezifischen Phänomene der Quantenphysik keine Rolle spielen.

Man kann daher nicht erwarten, dass alle programmiersprachlichen Konzepte beim Umgang mit Quantenrechnern, also Quantensystemen, tragfähig bleiben. Man kann erst recht nicht erwarten, dass man Antworten auf Fragen erhält, die als Merkwürdigkeiten oder - aus der Sicht vieler Physiker nach wie vor - als Paradoxa der Theorie gelten, also im Sinne von Roger Penrose der Z- und der X-Rätsel („puzzles" und „paradoxa").

Die Modularisierung als eines der zentralen Konzepte im Software- und Sprachdesign bildet ein typisches Beispiel für ein nicht unmittelbar übertragbares Konzept. Wenn in einem (klassischen) Programm mit einem Modul (modul-globaler) Speicher verbunden ist, so verhält sich dieser beim Zusammensetzen von Modulen naturgemäß additiv. Setzt man dagegen in einem Quantenprogramm zwei Module zusammen, in denen jeweils n bzw. m qubits allokiert sind, und die damit jeweils einen Speicherplatz für die komplexen Amplituden eines (reinen)Zustandes von 2n bzw 2m bereitstellen, so ist der Speicherplatz des zusammengesetzten Systems 2n+m. Hinzufügen eines qubits bedeutet also Verdopplung des Speichers. Das ist ein Ausdruck für die Existenz von nichtklassischen Korrelationen, wie sie typisch für Mehrkomponenten-Quantensysteme sind.

Gelegentlich wird in der Literatur die Hoffnung geäußert, dass QPLs hilfreich sein könnten beim Auffinden neuer Algorithmen für Quantenrechner. Hier ist sicherlich eine gewisse Skepsis angebracht: nur durch das Erlernen einer Sprache wie Pascal wird ein Programmieranfänger auch nicht Quicksort (wieder)entdecken.

Sprachdesign

Beim Design einer QPL geht es nicht um Fragen der Numerik: die Simulation eines Quantenrechners mit n qubits bedeutet im wesentlichen den Umgang mit 2n × 2n -Matrizen über C, bildet also - von der Größe der Matrizen abgesehen - im Prinzip kein Problem, wenn man jederzeit Zugriffe auf den Simulatorzustand zulässt. Es soll vielmehr eine Sprache geschaffen werden, die konventionelle programmiersprachliche Konstrukte zum Teil übernimmt und gleichzeitig anreichert um spezifische Funktionen eines Quantenrechners. Korrektes Design impliziert insbesondere natürlich, dass die Gesetze der Quantenphysik beachtet werden, so dass also ein angeschlossener Simulator durch einen Quantenrechner ausgetauscht werden könnte unter Beibehaltung der Schnittstelle.

Man kann daher über Design einer QPL nicht sprechen, wenn nicht wenigstens ein rudimentäres Bild von der Hardware vorhanden ist. Verwendet wird heute ein Modell, dem eine Master-Slave-Architektur zugrunde liegt: der Master ist ein klassischer Rechner, der über einen „quantum device driver" den eigentlichen Quantenrechner, also ein parametrisiertes physikalisches Quantenexperiment, steuert (Quantum Random Access Machine, QRAM, Zitate zu Details in [5]).Das eigentliche Programm läuft auf dem klassischen Rechner, für den die einzige blockierende Aktion eine am Quantenrechner ausgelöste Messung ist mit einer Rücksendung des Messergebnisses. In diesem Modell ist der Quantenrechner also anzusprechen wie eine exotische Hardware, eine in der Informatik nicht ganz ungewöhnliche Situation.

Das Design einer QPL setzt voraus, dass zunächst mehrere Grundsatzentscheidungen getroffen werden.

  1. Soll eine gänzlich neue Sprache geschaffen werden oder wird eine konventionelle Sprache in ihrer Funktionalität über eine Bibliothek erweitert?
  2. Welcher Sprachfamilie soll die Sprache angehören?

Mehrere der bereits realisierten Möglichkeiten sind im nächsten Abschnitt beschrieben.

Ein aus Sicht der Informatik besonders attraktiv erscheinender Weg besteht sicherlich in einer Schnittstellendefinition des Quantenrechners als abstraktem Datentyp (ADT), ein Ansatz, der zuerst von Bettelli et al. [1] auf der Basis von C++ detailliert ausgearbeitet worden ist. Der Ansatz wird allerdings kontrovers diskutiert (Zitate in [5]).Für konkrete Programmierarbeiten bedeutet ein derartiger ADT-basierter Zugang, dass ein Programmierer, der auf der Basis dieser Schnittstelle ein syntaktisch korrektes Programm schreibt, jedenfalls nichts programmieren kann, was gegen Gesetze der Quantenphysik verstößt. Jede Aktion auf der Schnittstelle belässt das System, gegebenenfalls also repräsentiert durch den angeschlossenen Simulator, in einem physikalisch realisierbaren Quantenzustand.

Existierende Implementierungen

Aus Sicht der Physik ist der Ablauf eines Algorithmus auf einem Quantenrechner ein Experiment an einem Quantensystem. Zu diesem gehören eine initiale Zustandspräparation und die abschließende Messung des Zustands. Die zeitliche Zustandsentwicklung dazwischen wird nach den Regeln der Quantenmechanik durch unitäre Transformationen im Raum der Zustände, einem Hilbert-Raum, beschrieben. Jede Implementierung einer QPL muss auf diesen theoretischen Grundlagen aufsetzen.

Die zur Zeit am weitesten ausgearbeiteten Implementierungen von QPLs sind QCL von B. Ömer [4] und Q language von Bettelli et al. [1]. QCL ist eine eigene C/Pascal-ähnliche prozedurale interpretierte Sprache, die neben den klassischen Konstrukten einer traditionellen klassischen Sprache auch Sprachkonstrukte enthält, die sich spezifisch auf den Quantenrechner beziehen. Prozedural bedeutet hier insbesondere, dass nichttriviale unitäre Operationen Funktionen in der Sprache sind. Zu den spezifischen Sprachkonstrukten gehören insbesondere das automatische Speichermanagement, welches im Zusammenhang mit der Allokation lokaler qubits wie auch bei der Berechnung von Werten von Funktionen eine Rolle spielt, wenn temporäre Register benötigt werden. Eine einfache Freigabe von Speicherplatz wie bei dem klassischen „garbage collection" reicht nicht; die temporären Register müssen in einen definierten Zustand zurückversetzt werden, um die Interferenzeigenschaften des Systems nicht zu zerstören (auch als Bennett-style uncomputation bezeichnet). Die Idee stammt aus Arbeiten (u.a. von C. H.Bennett) zu der Frage, wie klassische Schaltkreise aus rein reversibel arbeitenden Bauelementen aufgebaut werden können. In QCL wird dieses Speicher-Management in einer für den Programmierer transparenten Weise durchgeführt.

Im Unterschied zu QCL ist die Sprache Q language von Bettelli et al. [1] eine Sammlung von C++-Klassen, die Quantenoperationen als Objekte bereitstellt. Die eigentliche Programmierung besteht daher in einer konventionellen objektorientierten Entwicklung von C++-Programmen auf der Basis dieser Bibliothek. Der Hauptvorteil dieses Ansatzes ist nach Meinung der Autoren, dass damit - analog zu Techniken für die Vereinfachung klassischer Schaltkreise - zusammengesetzte Operationen automatisch vereinfacht werden können, bevor das Quantenprogramm vom Master an den Slave übermittelt wird. Beide Ansätze kann man ansehen als Hochsprachen, die als eine Art Erweiterung einen Assembler auf Quantenebene enthalten: man geht in jedem Fall z.B. direkt mit (Quanten)registern um.

Eine Reihe von Autoren stellen eher theoretische Aspekte in den Vordergrund; dazu gehört insbesondere die formale Definition einer Semantik. Das wesentliche Argument dafür ist, dass das Verhalten von Quantensystemen hochgradig nichtintuitiv ist, so dass im Prinzip eine formale Programm-Verifikation gegen eine Spezifikation erreichbar sein sollte. Von P. Selinger [7] stammt eine solche neue funktionale Sprache, die insbesondere über eine formal definierte Semantik verfügt. Programme können hier alternativ graphisch oder textuell dargestellt werden. Van Tonder [8] führt frühere Arbeiten fort, in denen der Lambda-Kalkül für Zwecke des Quantum computing erweitert wird; hierzu gibt es auch einen in Scheme implementierten Simulator.

Die Sprache qGCL von J. W.Sanders und P. Zuliani [6] ist eine Spezifikationssprache, ,ebenfalls mit einer formal definierten Semantik, die auf der probabilistischen Sprache pGCL beruht. Diese basiert ihrerseits auf GCL („guarded command language"),einer Sprache, die von Dijkstra geschaffen wurde, um Korrektheitsbeweise von Programmen führen zu können.

Die Arbeiten, eine für Quantenrechner angemessene Programmiersprache zu definieren, werden zur Zeit von vielen Autoren in verschiedenen Richtungen weiter verfolgt. Nach dem derzeitigen Stand kann man feststellen, dass die Sprachen QCL von Ömer sowie Q language von Bettelli et al., die beide mit Simulatoren verbunden sind, sich sehr gut dazu eignen, eigene Experimente zu unternehmen. Der Schwerpunkt der anderen erwähnten. Arbeiten liegt eher auf der theoretischen Seite; dazu gehört insbesondere die Formulierung einer Semantik zur spezifizierten Sprache.

Weitere Details und Beispiele sowie eine ausführliche Zitatenliste zu QPLs findet sich unter [5]. Eine breite Basis für den Einstieg in die wesentlich allgemeinere Thematik Quanteninformationstheorie bietet die www-Seite des Instituts für mathematische Physik der TU Braunschweig [3].

Danksagung

Ich danke R. F. Werner und der Arbeitsgruppe an seinem Lehrstuhl im Institut für Mathematische Physik (IMaPh) der TU Braunschweig für die freundliche Aufnahme und viele hilfreiche, klärende Diskussionen zu Fragen der Quanteninformationstheorie.

                   Artikelanfang  Seitenanfang

Literatur

  1. Bettelli S., Calarco T., Serafini L.: Toward an architecture for quantum programming. Eur Phys J D 25(2):181-200 (2003)
    http://arXiv.org/abs/cs.PL/0103009
  2. Hertrampf U.:Quantencomputer. Informatik Spektrum 23(5):322-324 (2000)
  3. Institut für mathematische Physik (IMaPh), TU Braunschweig.
    http://www.imaph. tu-bs.de/qi/
  4. Ömer B.: Classical concepts in quantum programming, 2002.
    http://tph.tuwien. ac.at/~oemer/papers.html
  5. Rüdiger R.: Quantum Programming Languages - A Survey, 2003.
    http://cms.fh-wolfenbuettel.de/fb/i/organisation/personal/ ruediger/
    talks/QPLSeminar.IMaPh.pdf
  6. Sanders J. W., Zuliani P.: Quantum programming. In: Mathematics of Program Construction, volume 1837 of LNCS. Heidelberg: Springer 2000, pp. 80-99.
    http://web.comlab.ox.ac.uk/oucl/publications/tr/tr-5-99.html
  7. Selinger P.: Towards a quantum programming language. Mathematical Structures in Computer Science (im Druck)
    http://quasar.mathstat.uottawa.ca/~selinger/papers.html#qpl
  8. Tonder A. van: A lambda calculus for quantum computation. 2003.
    http://arxiv.org/abs/quant-ph/0307150

Hinweis: Die URLs entsprechen dem Stand bei der Veröffentlichung des Artikels und werden nicht aktualisiert.

                   Artikelanfang  Seitenanfang

Autor & Copyright
Prof. Dr. R. Rüdiger
FH Braunschweig/Wolfenbüttel,
Salzdahlumer Str. 46/48,
38302 Wolfenbüttel
Fachbereich Informatik
r.ruediger@fh-wolfenbuettel.de

DOI 10.1007/s00287-003-0350-0
© Springer-Verlag 2003

                   Artikelanfang  Seitenanfang