Quantum Computing: Anwendungen in Kryptographie und der Darstellung Boolescher Funktionen Diplomarbeit vorgelegt von Hecke Schrobsdorff aus Göttingen angefertigt im Institut für Numerische und Angewandte Mathematik der Georg-August-Universität zu Göttingen 2006 ii Inhaltsverzeichnis Vorwort 1. Einleitung 1.1. Quantum Computing . . . 1.2. Kryptographie . . . . . . 1.3. Komplexitätstheorie . . . 1.4. Der Beitrag dieser Arbeit I. v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Allgemeine Einführung: Quantum Computing 2. Einführung Quantenmechanik 2.1. Grundlegende Postulate . . . . . . 2.2. Quantenmechanische Zustände . . 2.3. Hilbertraum . . . . . . . . . . . . . 2.4. Dualer Hilbertraum . . . . . . . . 2.5. Operatoren . . . . . . . . . . . . . 2.6. Messen eines quantenmechanischen 2.7. Produkthilberträume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systems . . . . . 3. Quantum Computing 3.1. Quantenbits . . . . . . . . . . . . . . . 3.2. Messen beim Quantum Computing . . 3.3. Unitäre Transformationen von Qubits 3.4. Quantenregister . . . . . . . . . . . . . 3.5. Quantenschaltkreise . . . . . . . . . . 3.6. Verschränkung . . . . . . . . . . . . . 3.7. No Cloning Theorem . . . . . . . . . . . . . . . . . 4. Wichtige Quantenalgorithmen 4.1. Deutsch-Problem . . . . . . . . . . . . . 4.2. Deutsch-Jozsa Algorithmus . . . . . . . 4.3. Grovers unstrukturierte Datenbanksuche 4.4. Shors Faktorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 3 4 5 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II. Brechen klassischer Verschlüsselung mit Quantenalgorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 12 13 14 14 14 15 16 . . . . . . . 19 20 21 21 22 25 26 27 . . . . 29 29 31 33 38 43 iii Inhaltsverzeichnis 5. Fiat-Shamir Code 5.1. Zero-Knowledge Beweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Fiat-Shamir Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3. Sicherheit des Fiat-Shamir Verfahrens . . . . . . . . . . . . . . . . . . . . . 47 47 49 50 6. Direkter Ansatz 6.1. Algorithmus für das Wurzelziehen in Restklassenringen . . . . . . . . . . . . 6.2. Analyse des Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 52 52 7. Algebraischer Ansatz 7.1. Allgemeine Fouriertransformation . . . . . . . . . . . . . . . . . . . . . . . . 7.2. Suche nach der versteckten Untergruppe . . . . . . . . . . . . . . . . . . . . 7.3. Zusammenhang mit dem Fiat-Shamir Protokoll . . . . . . . . . . . . . . . . 55 55 56 57 III. Synthese von Quantum Ordered Binary Decision Diagrams aus Quantenschaltkreisen 59 8. Klassische OBDDs 8.1. Branchingprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2. Ordered Binary Decision Diagrams . . . . . . . . . . . . . . . . . . . . . . . 8.3. Synthese und Reduktion von OBDDs . . . . . . . . . . . . . . . . . . . . . . 63 63 64 66 9. Quanten OBDDs 9.1. Quantenbranchingprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2. Quantum Ordered Binary Decision Diagrams . . . . . . . . . . . . . . . . . 69 69 72 10. Synthese und Reduktion von QOBDDs 10.1. Synthese von QOBDDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2. Reduktion eines QOBDDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3. Reduktion und Synthese einfacher Quantenschaltkreise . . . . . . . . . . . . 77 77 79 82 11. Diskussion und Ausblick 11.1. Brechen klassischer Verschlüsselung mit Quantenalgorithmen . . . . . . . . 11.2. Quantum Ordered Binary Decision Diagrams . . . . . . . . . . . . . . . . . 11.3. Reflektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 91 92 94 Anhang 95 Index 97 Literaturverzeichnis 102 Danksagung 103 iv Vorwort Die Vorgeschichte zu dieser Arbeit ist lang. Den Begriff Quantencomputer hörte ich erstmals von Boris Marx aus der von mir betreuten DIFF-I Übungsgruppe. Damals fand ich die Sache nicht besonders interessant. Hätte nicht Matthias Homeister deutlich später eine Vorlesung über das Thema gehalten, und hätte ich nicht mit ein paar Freunden verabredet, sie, hauptsächlich wegen des Dozenten, zu hören, so wäre ich dem Quantum Computing gegenüber noch immer recht misstrauisch eingestellt. Allerdings hatte ich in der Zwischenzeit in meinem Physikstudium eine gute Einführung in die Quantenmechanik erhalten, so dass ich recht schnell die Schönheit dieses Konzepts erkennen konnte. Am Ende der Vorlesung eröffnete uns Matthias Homeister, dass er gedenke ein einführendes Buch zum Quantum Computing zu schreiben. Da ich schon Feuer gefangen hatte, bot ich mich an, es Korrektur zu lesen. Im Laufe der Zeit kam dann noch dazu, dass ich die Skizzen für das Buch erstellte. Durch diese intensive Einarbeitung in das Thema keimte in mir die Hoffnung, doch noch mein schon länger scheinfreies Mathematikstudium zu beenden. Dank der Unterstützung von Herrn Prof. Waack und Matthias scheint sie sich jetzt zu erfüllen. Diese Arbeit versucht die Möglichkeiten zu beleuchten, die das recht neue Themenfeld des Quantum Computing im Bezug auf klassische Probleme beziehungsweise bekannte klassische Datenstrukturen eröffnet. Der Blickwinkel der Darstellung ist der eines theoretischen Informatikers. Insofern müssen die Grundlagen des Quantum Computing, die sich in der Quantenmechanik finden, zumindest soweit sie benötigt werden detailliert eingeführt werden. Deswegen baut sich die Arbeit aus drei Teilen zusammen. Teil I beinhaltet die Einführung in das Quantum Computing, angefangen bei einem kurzen Überblick über die Quantenmechanik. Teil II beschäftigt sich mit der ersten Anwendung, dem Versuch ein kryptographisches Protokoll mit einem Quantencomputer zu brechen. Unabhängig davon steht Teil III, der die Frage bespricht, wie sich eine klassische Datenstruktur auf einen Quantencomputer übertragen lässt und welche komplexitätstheoretischen Konsequenzen dies hat. Eingerahmt werden die drei Teile von einer überblickhaften Einleitung und einem Kapitel, welches die behandelten Themen noch einmal diskutiert. Im Anhang befinden sich ein Index, die Literaturliste und die Danksagung. v Inhaltsverzeichnis vi 1. Einleitung Diejenigen, die nicht schockiert sind, wenn sie zum ersten mal mit Quantenmechanik zu tun haben, haben sie nicht verstanden. Niels Bohr Wenn man aber diesen ersten Schock überwunden hat, so eröffnen sich zum einen eine ganz neue Weltsicht, und zum anderen eine wunderschöne Theorie. So wie die philosophischen Konsequenzen der Quantenmechanik kontrovers diskutiert wurden, hat sich aber auch ihre Schönheit bis heute nicht nur gehalten, sondern ist durch viele Experimente und Anwendungen immer weiter gereift. Eine dieser Anwendungen der Quantenmechanik auf völlig neue Bereiche ist das Thema dieser Arbeit. Wie sieht ein Rechnermodell aus, das sich auf die Grundlagen der Quantenmechanik stützt? Diese Frage wurde Ende des letzten Jahrhunderts mit fortschreitender Zeit immer intensiver diskutiert, siehe für einen Überblick [32, 42, 30]. Mittlerweile ist aus dieser anfänglichen Gedankenspielerei eine ausgewachsene Wissenschaft geworden, da sich vielfältige Anwendungen ergeben. Es existieren sogar schon erste Quantencomputer. Diese sind allerdings noch fern der Praxisreife, da der Rekord im Augenblick bei acht Bits Rechenbreite liegt [27]. Die Belange der Quantenhardware sollen allerdings in dieser Arbeit gar nicht zur Sprache kommen. Wir werden uns hier auf der völlig theoretischen Ebene dem Thema allgemein nähern, um die Anwendung auf zwei konkrete Probleme vorzubereiten, die die Hauptteile der Arbeit bilden. Diese behandeln zum einen die Möglichkeit, dass Quantencomputer der Universalschlüssel zu klassischen Kryptographieverfahren sein können, und zum anderen die Frage, ob sich Ergebnisse für Quantenkomplexitätsklassen analog zu den klassischen entwickeln lassen. Die wichtigste Grundlage der Arbeit ist die Einführung ins Quantum Computing von Matthias Homeister [32], deren Erstellung zu begleiten die beste Einarbeitung in das Thema bot. Viele der Skizzen sowie die Notation sind identisch. Es wurde hier aber ein weniger pädagogischer Ansatz gewählt, sondern versucht, die Probleme systematisch einzuführen, um die nötigen Grundlagen zügig zur Verfügung zu stellen. Weitere Einführungen zum Thema Quantum Computing sind die Bücher von Dan und Gabriela Marinescu [42] und Mika Hirvensalo [30], die allerdings einen wesentlich komplizierteren Einstieg wählen, wobei ersteres aus der Sicht eines Physikers berichtet und letzteres den Weg über Quanteninformation wählt. Den eigentlichen Teilen der Arbeit über das Brechen eines kryptographischen Protokolls und die Übertragung einer klassischen Datenstruktur auf ein Quantensystem geht ein recht ausführlicher Teil voran, der die nötigen Grundlagen bereitstellt. Anfangs werden kurz die relevanten Aspekte der Quantenmechanik besprochen, und von dort ausgehend die revolutionäre Idee erläutert, einen Rechner auf diesen Gesetzen zu konstruieren, das Quantum 1 1. Einleitung Computing. Zur Illustration werden am Ende des ersten Teils noch einige Quantenalgorithmen besprochen, die in den beiden nachfolgenden Teilen wieder aufgegriffen werden. Die Einleitung vollzieht den Ablauf der Arbeit nach, indem jedem Teil ein Abschnitt gewidmet ist, der kurz überblickhaft auf die dort behandelten Punkte eingeht. Der nächste Abschnitt 1.1 bespricht, wie aus einer erfolgreichen, wenn auch unintuitiven, physikalischen Theorie ein Rechnermodell entwickelt wurde, welches sehr überraschende Möglichkeiten liefert, neue Algorithmen zu konstruieren, die den klassischen in Teilen deutlich überlegen sind. Abschnitt 1.2 greift eine dieser Möglichkeiten auf, die bereits für viel Aufsehen über Quantencomputer gesorgt haben. Quantenalgorithmen sind bei speziellen Aufgaben exponentiell schneller als klassische. Dies kann nun dazu genutzt werden, kryptographische Anwendungen anzugreifen. In Abschnitt 1.3 wird ein komplett anderer Blickwinkel auf das Quantum Computing eingenommen, das neue Rechenmodell wird als eigenständiges Gebiet begriffen, und nicht nur als Hilfsmittel um gewisse Engpässe im klassischen Fall zu umgehen. Als solches soll eine Datenstruktur besprochen werden, die dazu benutzt werden kann, Platzkomplexität eines Quantenrechners zu untersuchen. 1.1. Quantum Computing Anfang des 20. Jahrhunderts wurde mit der Entwicklung der Quantenmechanik ein großer Teil der damals offenen Probleme der Physik gelöst, so zum Beispiel die Schwarzkörperstrahlung. Auch wenn die Konsequenzen, die diese neue Theorie mit sich brachte, so massiv den Grundsätzen der klassischen Physik widersprachen, dass viele Wissenschaftler sie als unsinnig ablehnten, gelang ihr doch über vielfältige Bestätigung durch Experimente nach und nach der Durchbruch zu dem was sie heute ist: Die gültige theoretische Beschreibung der Welt auf mikroskopischer Ebene. Auch der Zusammenhang mit der klassischen Physik, die sich als Grenzfall erwies, in dem Quantenphänomene keine Rolle mehr spielen, ist geklärt. Nichts destotrotz bleibt die Quantenmechanik dem Alltagsverständnis weiterhin fern, was auch nicht weiter schlimm ist, da sich unsere Wahrnehmung im makroskopischen Bereich abspielt, so sie denn nicht über aufwendige Messapparaturen verstärkt wird. Allerdings gibt es immer wieder Berührungspunkte von Alltag und Quantenmechanik, zum Beispiel wenn man verstehen möchte wie ein Laser funktioniert. Einen kompletten Abriss der Quantenmechanik zu liefern, kann nicht Ziel dieser Arbeit sein, dennoch sind die dem Quantum Computing zugrunde liegenden quantenmechanischen Prinzipien alles andere als offensichtlich, weswegen sie eine kurze Einführung erfahren sollen. Der fundamentalste Begriff der Quantenmechanik ist wohl der des Zustands. Dieser beschreibt vollständig alle Eigenschaften eines Quantensystems zu einem bestimmten Zeitpunkt. Allerdings sind nicht alle diese Eigenschaften dem Beobachter zugänglich, wie es in einem klassischen System der Fall wäre. Der Zustand kann lediglich über Messungen beobachtet werden, die nicht nur Informationen über den Zustand des Systems preisgeben, sondern diesen auch direkt beeinflussen, da die Messapparatur gegenüber dem Quantensystem nicht mehr vernachlässigt werden kann. Dazu kommt, dass ein quantenmechanischer Zustand bezüglich einer Eigenschaft nicht entschieden sein muss, sondern mehrere sich eventuell widersprechende Eigenschaften zu 2 1.2. Kryptographie bestimmten Anteilen innehaben kann. Erst die Messung zwingt das System sich für einen bestimmten Wert der Eigenschaft zu entscheiden. Dies passiert stochastisch, bezüglich der Größe der jeweiligen Anteile. Nach der Messung ist das System dann allerdings wirklich entschieden. Es hat dann tatsächlich die gemessene Eigenschaft, und keine Anteile mehr, die dieser widersprechen würden. Diese sogenannte Wahrscheinlichkeitsinterpretation bringt einige rechnerische Konsequenzen mit sich, die allesamt im Kapitel 2 erläutert werden. So wird die Quantenmechanik in das mathematische Gerüst der Hilberträume gewiesen, das einen Großteil der rechnerische Schönheit ausmacht, die einem bei der Arbeit mit Quantensystemen immer begleitet. Die Entwicklung von Computern steuert zu immer kleineren Bauteilen, so dass hier früher oder später zwangsweise Quanteneffekte wirksam werden. Welche Auswirkungen das auf die Arbeitsweise eines Computers haben wird, wurde bereits in den achtziger Jahren des 20. Jahrhunderts als Gedankenexperiment begonnen [19, 15]. Damals hatte sich die Quantenmechanik bereits ihren festen Platz in der Physik erobert, und die mathematische Klarheit dieser Theorie hatte sich herumgesprochen. Die anfängliche Fragestellung ist ziemlich schnell gegeben: Wie arbeitet ein Rechner, der sich nicht auf die kleinste Informationseinheit Boolesches Bit, sondern auf ein sogenanntes Quantenbit stützt. Dieses zeichnet sich dadurch aus, dass es nicht nur die Werte 1 und 0 sicher annehmen und halten kann, sondern sich in einem quantenmechanischen Zustand befindet, der die Zustände |1i und |0i als Basis hat, sie aber zu gewissen Anteilen gleichzeitig annehmen kann. Der Hauptvorteil liegt auf der Hand: Es ist mit einem Quantenrechner möglich, auf vielen Eingaben simultan zu rechnen. Dies liefert an sich eine erhebliche Beschleunigung gegenüber klassischen Computern. Aber man erkauft sich die neuen Rechenmöglichkeiten damit, sich den Gesetzen der Quantenmechanik unterordnen zu müssen. So können zum Beispiel in einem Quantensystem nicht mehr beliebige Rechenoperationen durchgeführt werden, sondern die Änderung eines Quantenzustands kann nur unitär erfolgen. Es können daher auch nicht einfach so Quantenbits gelöscht werden. Allerdings liefert die Einschränkung auch Gutes, da reversible Berechnungen keine Energie verbrauchen, das Problem der starken Hitzeentwicklung klassischer Computer tritt nicht auf. Diese ungewöhnlichen Rechenregeln machen eine sorgfältige Beschäftigung mit Quantenalgorithmen notwendig. Dies soll in Kapitel 4 erfolgen, nachdem Kapitel 3 die grundlegenden Punkte des Quantum Computing besprochen hat. Es werden zwei der bahnbrechenden Quantenalgorithmen besprochen, die die Vorteile des Quantum Computing eindrucksvoll präsentieren, aber auch Schwierigkeiten werden aufgezeigt, auf die man bei Design von Quantenalgorithmen stößt. Ebenso werden sie offenbaren, dass, obwohl das Konzept des Quantum Computing auf den ersten Blick wie ein Wundermittel zur Berechnung klassisch schwieriger Problem erscheint, der Beschleunigung auch harte Grenzen gesetzt sind. 1.2. Kryptographie Mit dem in Abschnitt 4.4 besprochenen Quantenalgorithmus von Shor zur effizienten Faktorisierung wurde die Befürchtung wach, dass Quantencomputer grundsätzlich in der 3 1. Einleitung Lage sein könnten, aktuelle Kryptographieverfahren zu brechen. So wie sich die RSAKryptographie darauf stützt, dass das Faktorisieren nicht in Polynomialzeit zu erreichen ist, basieren viele kryptographische Verfahren auf der Annahme, dass ein bestimmtes, meist zahlentheoretisches Problem nicht schnell zu lösen ist. Dass sich nicht jedes Problem zwangsläufig mit Hilfe eines Quantencomputers lösen lassen kann, liefert die Einschränkung der Beschleunigung in Abschnitt 4.3, die im Zusammenhang mit Grovers Algorithmus behandelt wird. Trotzdem hält sich die Hoffnung, dass mit einem ausreichend pfiffigen Quantenalgorithmus doch ein Großteil der klassisch schwierigen Probleme zu lösen sei. Auf dieser Hoffnung basiert Teil II, welcher ein spezielles kryptographisches Protokoll zu brechen versucht. Bei dem untersuchten Fiat-Shamir Protokoll handelt es sich um ein Zero-Knowledge Protokoll, also ein Kommunikationsprotokoll, welches es erlaubt, eine andere Partei zu überzeugen in Besitz eines Geheimnisses zu sein, ohne dasselbe preisgeben zu müssen. Dieses konkrete Verfahren wird zum Beispiel für Autorisierungsvorgänge verwendet. Die Grundlage der Sicherheit des Fiat-Shamir Protokolls liegt in der Annahme, dass es nicht möglich ist, effizient Quadratwurzeln in einem Restklassenring zu berechnen. Konkret besitzt die beweisende Partei eine Zahl, die in einem öffentlich bekannten Restklassenring Z∗n quadriert wird, wobei n = p · q das Produkt zweier großer Primzahlen ist. Bei der Quadratur entsteht nun eventuell ein Überlauf, so dass die Operation Wurzelziehen nicht mehr eindeutig ist, sondern in unserem speziellen Fall vier Lösungen hat. Außerdem kann man die Wurzel nicht mehr mit Näherungsverfahren eingrenzen, da wegen der Endlichkeit des Ringes prinzipiell jedes Element infrage kommt. Ein naiver Ansatz zur Brechung des Fiat-Shamir Protokolls wird nun einen Quantenzustand erzeugen, der alle Zahlen aus Z∗n zusammen mit ihren jeweiligen Quadraten in verschränkter Form enthält. Nun gilt es nur noch die gesuchte Quadratzahl zusammen mit ihren Wurzeln durch geschicktes Messen herauszufiltern. Bei der näheren Betrachtung dieser Vorgehensweise wird allerdings klar, dass genau darin der Haken liegt. Es ist nicht schwer, ein Quantensystem zu erzeugen, dass die gesuchte Information enthält. Diese nun aus dem System herauszubekommen, ist die wirkliche Kunst, einen guten Quantenalgorithmus zu entwickeln. Ein etwas bedachterer Ansatz versucht, die bekannten erfolgreichen Quantenalgorithmen auf Ähnlichkeiten zu unserem Problem abzusuchen, um diese dann soweit abzuwandeln, dass sie Quadratwurzeln berechnen. Dies soll in Kapitel 7 angedacht werden. Leider wird dabei recht schnell deutlich, wie tief man in die Darstellungstheorie eintauchen muss, um den wirklichen Kern der populären Quantenalgorithmen zu verstehen. Insofern muss sich diese Arbeit darauf beschränken, die Parallelen zu benennen, die zwischen den bekannten Algorithmen und einer möglichen Lösung des Quadratwurzelproblems bestehen. 1.3. Komplexitätstheorie Eine andere Sichtweise auf das Quantum Computing liefert Teil III. Mit dem Aufkommen eines neuen Berechnungsmodells taucht natürlich auch die Frage auf, in wieweit die dort erreichten Fortschritte auf die bestehende Informatik zurückwirken. So gerät zum Beispiel 4 1.4. Der Beitrag dieser Arbeit die Churchsche These ins Wanken, nach der sich alle effizient berechenbaren Probleme mit einer Turingmaschine effizient berechnen lassen. Es ist nicht schwer eine Quantenberechnung anzugeben, die mit Hilfe einer Turingmaschine niemals lösbar sein wird. Ebenso steht die Frage in Raum, ob Quantenrechner in der Lage sind, NP-vollständige Probleme effizient zu berechnen. Daraus allerdings Folgerungen über die Gleichheit von P und NP abzuleiten ist falsch. Es handelt sich schließlich um völlig neue Komplexitätsklassen, die im Rahmen des Quantum Computing aufgestellt werden müssen. Diese sind im allgemeinen anders gelagert als klassische . Insofern ist es sinnvoll, die bekannten klassischen Komplexitätsklassen auf das Modell der Quantenberechnung zu übertragen und dort zu untersuchen, ob sie ähnlich zueinander gelagert sind, wie ihre klassischen Gegenstücke. Um das zu erreichen, werden nach und nach die Betrachtungen, die zur Trennung beziehungsweise Vereinigung klassischer Komplexitätsklassen geführt haben, auf Quantencomputer übertragen. In dieser Arbeit wird dazu eine Darstellungsweise Boolescher Funktionen betrachtet, die Ordered Binary Decision Diagrams (OBDDs). Ihr Vorteil liegt darin, dass sie wenig Platz benötigen, und insofern die Platzkomplexität gewisser Funktionen angeben. Um aber mit einem solchen Modell arbeiten zu können, sind gewisse Eigenschaften wünschenswert. So soll zum Beispiel die Synthese zweier Boolescher Formeln effizient nachvollzogen werden können. Um dies zu erreichen, wurden für klassische OBDDs Algorithmen zur Synthese, und vor allem zur Reduktion eines OBDDs entwickelt. Die Reduktion führt sogar zu einer eindeutigen minimalen Darstellung. Dies wäre natürlich auch für QuantenOBDDs (QOBDDs) wunderbar. Dass dies nicht einfach möglich ist, ergibt sich ziemlich schnell aus der Verwandtschaft, die zwischen QOBDDs und probabilistischen OBDDs besteht. Der Suchraum für eine Reduktion ist einfach viel zu groß, als dass sie effizient zu bewältigen wäre. Also wurden die Ziele für diese Arbeit kleiner gesteckt. Es soll der Versuch skizziert werden, wie man aus einem Quantenschaltkreis, einer kompakten Beschreibung von Quantenalgorithmen, der nur zwei bekannte Gatter enthält, nach und nach einen QOBDD synthetisiert. In diesem Fall ist eine gewisse Reduktion möglich. 1.4. Der Beitrag dieser Arbeit Das Fazit dieser Arbeit sei gleich vorweggenommen: Quantum Computing ist harte Mathematik. Beide Ansätze dieser Arbeit, sich der Thematik zu nähern, laufen geradewegs in die Tiefen der Darstellungstheorie. Insofern konnte auch keiner der Wege bis zu einem fulminanten Ergebnis geführt werden. Stattdessen werden möglichst detailliert die aufgetretenen Schwierigkeiten benannt, um dadurch einen tieferen Einblick in die Komplexität des Quantum Computing zu liefern, als durch eine vordergründige Beschäftigung mit den mittlerweile sehr ausgefeilt beschriebenen bahnbrechenden Quantenalgorithmen erreichbar ist. Dort wird dem Interessierten eher vermittelt, dass Quantum Computing auf eine sehr klare, einfache Weise in der Lage ist, klassisch schwierige Probleme zu lösen. Teil II liefert eine Wegbeschreibung, wie das Fiat-Shamir Protokoll durch einen zu dem Algorithmus von Grover verwandten Ansatz gebrochen werden kann. Dies direkt zu versuchen wird hier als unzulänglich gezeigt. Aber ein etwas überlegterer Ansatz, der eine 5 1. Einleitung speziell angepasste Fouriertransformation benutzt, ähnlich zu Shors Faktorisierungsalgorithmus, mag zum Erfolg führen. Dies auszuarbeiten, und vor allem die Effizienz dieses zweiten Ansatzes zu untersuchen muss aber auf spätere Arbeiten vertagt werden. Teil III bespricht die Schwierigkeiten, einen QOBDD zu Zwecken der Verifikation von Quantenschaltkreisen zu synthetisieren und zu reduzieren. Dass dafür hier eine allgemeine Lösung angegeben werden kann, war nicht zu erwarten, es ist sogar fragwürdig, ob dies überhaupt möglich ist. Deswegen wird abschließend noch eine vereinfachte Situation betrachtet, in der eine Reduktion möglich ist, indem nur zwei verschiedene Gatter in dem zu darzustellenden Quantenschaltkreis zugelassen werden. 6 Teil I. Allgemeine Einführung: Quantum Computing 7 Überblick Quantum Computing ist ein interdisziplinäres Forschungsfeld, da sich die zugrundeliegende Technik und Begriffswelt auf die Quantenmechanik als Teilbereich der theoretischen Physik bezieht, aber die Arbeitsweisen und Beweisverfahren der theoretischen Informatik entspringen. Um die einzelnen Aspekte dieser Arbeit sinnvoll beschreiben zu können, ist viel Vorarbeit vonnöten. So werden die Anwendungen bezüglich Kryptographie und Boolescher Funktionen nach Teil II beziehungsweise Teil III zurückgestellt, um in diesem Teil Raum für eine umfassende Einführung in die Thematik zu geben. Einerseits fußt das gesamte Quantum Computing auf dem theoretischen Konzept der Quantenmechanik. Allerdings sind die zugrundeliegenden Ideen zum Teil so kontraintuitiv, dass es einiger Zeit bedarf, sich mit den Denkweisen anzufreunden. Also sollen diese Grundlagen in der nötigen Tiefe eingeführt werden, um dem Anspruch dieser Arbeit gerecht zu werden, aus dem Blickwinkel der theoretischen Informatik zu berichten. Zum Anderen basieren einige der Resultate dieser Arbeit auf wichtigen Ergebnissen des Quantum Computing, die ebenfalls nicht zum Allgemeinwissen eines Informatikers gehören, und deswegen besprochen werden sollen. Auch hier ist wieder eine gewisse Vorarbeit zu leisten, um die Notation und die Hauptkniffe, die nachher wieder aufgegriffen werden, einzuführen. Dieser Teil baut sich aus drei Kapiteln auf. Kapitel 2 führt die für diese Arbeit wichtigen Aspekte der Quantenmechanik ein. Kapitel 3 erklärt die Konsequenzen, die sich ergeben, wenn man die Gedankenwelt der Quantenmechanik einem Rechnermodell zugrundelegt. Hier wird auch versucht, ein intuitives Verständnis für die Arbeitsweise eines Quantencomputers zu legen. In Kapitel 4 werden dann mit dem Algorithmus von Grover zur unstrukturierten Datenbanksuche und dem Algorithmus von Shor zur Faktorisierung zwei der wichtigsten Ergebnisse des Quantum Computing beschrieben. 9 10 2. Einführung Quantenmechanik Die Quantenmechanik ist ein sehr gutes Beispiel dafür, wie weit man sich von natürlicher Intuition entfernen kann, wenn man ein theoretisches Konzept konsequent zu Ende denkt. Die zugrundeliegenden Konzepte sind mit gesundem Menschenverstand nicht zu greifen, sondern müssen anfangs akzeptiert werden, auf dass sich im Laufe der Zeit ein gewisses Verständnis dafür entwickelt. Das Schöne an dieser Theorie ist, dass sie sich sehr formal aus wenigen Annahmen ableiten lässt und dennoch in erstaunlich genauem Maße die Realität beschreibt. Dies ist bei weitem nicht bei jeder physikalischen Theorie der Fall. Häufig werden Gleichungen postuliert, die der phänomenologischen Seite eines Experiments möglichst nahe kommen, und diese werden mit jedem kontradiktorischen Ergebnis weiter verkompliziert. Eine ähnliche Entwicklung hätte Schrödingers Ansatz einer Wellenmechanik nehmen können [50]. Er postulierte eine Wellengleichung, die nirgendwo abgeleitet werden kann, sondern nur auf der Annahme beruht, dass alle Materie als Welle aufgefasst werden kann. Allerdings erwies sich die Schrödingergleichung als äquivalent zur diskontinuierlichen frühen Quantenmechanik, die er eigentlich ablehnte. Dieses Kapitel basiert stark auf den Einführungsbüchern zur Quantenmechanik von Wolfgang Nolting [46, 47], die eine äußerst verständliche Einführung in die Thematik bieten. In Abschnitt 2.1 sollen kurz die dem Dirac-Formalismus, einer Notationsweise der Quantenmechanik, zugrundeliegenden Postulate angegeben werden, die eine Motivation für die danach getätigten mathematischen Betrachtungen und Definitionen liefern. In den folgenden Abschnitten geht es dann um die Dirac-Notation, die eine wunderbar kompakte, klar definierte Sprache liefert, um sich über die mathematisch nicht trivialen Objekte unterhalten zu können ohne sich mit dem Ballast herumzuplagen, der ihnen anhaftet. Abschnitt 2.2 legt den Grundstein für die Einführung des Begriffs des Zustands. Im folgenden Abschnitt 2.3 wird das mathematische Konstrukt des Hilbertraumes besprochen, in dem alle Quantensysteme beschrieben werden. Abschnitt 2.4 geht auf die Schreibweise des Skalarprodukts im Dirac-Formalismus ein, welche das Rechnen mit Quantensystemen immens vereinfacht. Ebenso wird der dabei auftauchende Dualraum zum Hilbertraum erklärt. Die möglichen Manipulationen eines Quantensystems erfolgen über eine spezielle Klasse von Transformationen. Gerade im Zusammenhang mit Quantum Computing spielt dies eine besondere Rolle, da die nötigen Einschränkungen in den Transformationen das Design von Quantenalgorithmen sehr erschweren. Abschnitt 2.5 trägt dem Rechnung und beschreibt ihre Besonderheiten ausführlich. Ein für das Quantum Computing ebenfalls sehr wichtiger Punkt wird in Abschnitt 2.6 erläutert. Man kann niemals durch Beobachtungen den exakten Zustand eines Quantensystems bestimmen, sondern nur bestimmte Eigenschaften desselben. In Abschnitt 2.7 soll die Erweiterung der Berechnungsbreite von einem auf mehrere Quantenbits besprochen werden. 11 2. Einführung Quantenmechanik 2.1. Grundlegende Postulate Die Herangehensweise an die Quantenmechanik, die einem Mathematiker besonders nahe liegt, ist der Dirac-Formalismus. Er geht völlig axiomatisch vor, entwickelt durch Folgerungen die gesamte Theorie und benutzt dafür eine deutlich kompaktere Notation, als es in der Alternativbeschreibung mit Hilfe der Schrödingergleichung der Fall ist. Die abstrakte Sichtweise, die nur über Zustände eines Quantensystems redet, ist aus der Sicht der Informatik deutlich intuitiver. Da die theoretische Physik den Anspruch hat, die Realität zu modellieren, muss allerdings noch der Zusammenhang von real messbaren Größen, die unsere Erfahrungswelt ausmachen, und den abstrakten Gebilden des Dirac-Formalismus festgelegt werden. Die folgenden fünf Postulate, dargestellt nach [46], bieten die vollständige Grundlage, auf die sich die Quantenmechanik aus der Sicht des Dirac-Formalismus stützt. Hier sollen sie kurz wiedergegeben werden, wobei die neuen Begriffe dann in den folgenden Abschnitten erläutert werden. Postulat 1 Dem aktuellen Zustand eines Quantensystems entspricht ein Hilbert-Vektor. Postulat 2 Wird eine physikalische Größe gemessen, so entspricht diesem Vorgang die Anwendung eines linearen hermiteschen Operators. Postulat 3 Eine Messung, die am System vorgenommen wird, ändert dieses. Diese Tatsache wird dadurch beschrieben, dass der zur Messgröße gehörige Operator, sowie die Projektion auf einen seiner Eigenvektoren hintereinander ausgeführt werden. Das System befindet sich nach der Messung in dem gemessenen Eigenzustand. Postulat 4 Die möglichen Messergebnisse der untersuchten Größe entsprechen den Eigenwerten des Operators. Postulat 5 Der Ausgang einer Messung ist nicht in jedem Fall vorhersehbar. Vielmehr haftet jedem Eigenwert des Messoperators abhängig vom aktuellen Zustand eine bestimmte Wahrscheinlichkeit an, diesen bei einer Messung zu erhalten. Diese entspricht dem Quadrat des Skalarprodukts vom aktuellen Zustand und dem jeweiligen Eigenvektor. Die Postulate lassen schon den Weg erkennen, den die Quantenmechanik wählt um die Welt zu beschreiben. Es geht um Vektoren eines Hilbertraumes, die dem Systemzustand entsprechen, und Operatoren, die selbigen verändern können. Die nächsten Abschnitte sollen nun die mathematische Seite obiger Postulate erläutern und die quantenmechanische Begriffswelt auf solide Definitionen stellen. 12 2.2. Quantenmechanische Zustände 2.2. Quantenmechanische Zustände Die Interaktion eines Beobachters mit einem physikalischen System erfolgt immer über eine Messung. Das Ergebnis derselben hängt natürlich von der aktuellen Situation des Systems ab. Definition 2.1 Die Gesamtkonfiguration eines quantenmechanischen Systems heißt Zustand, auch Zustandsvektor. Er wird für gewöhnlich |ψi geschrieben. Ein Problem des quantenmechanischen Begriffs Zustand ist, dass es im allgemeinen keine Möglichkeit gibt, alle Eigenschaften eines Systems vollständig zu bestimmen, wie es in der klassischen Physik (als Gegensatz zur Quantenmechanik) der Fall ist. Da jede Messung eine Veränderung des aktuellen Zustands mit sich bringt, ist es völlig normal, wenn ein Quantensystem bei zwei Messungen derselben Größe sehr unterschiedliche, zum Teil sogar gegensätzliche Messwerte liefert, nur weil zwischen den Messungen noch eine andere Größe bestimmt wurde. Dies führt zur Notwendigkeit eines weiteren Zustandsbegriffes, der die maximale Bestimmtheit eines Systems angibt. Definition 2.2 Gleichzeitige Messung eines maximalen Satzes von verträglichen Eigenschaften präpariert einen reinen Zustand |ψi. Verträglich heißen Eigenschaften, die simultan messbar sind. In Abschnitt 2.5 wird darauf weiter eingegangen werden. Der reine Zustand |ψi beinhaltet also alle Informationen, die wir zu einem Zeitpunkt von dem System haben können. Da bei Quantenberechnungen der Ausgangspunkt klar definiert sein muss, um eine Korrektheit des Algorithmus zu gewährleisten, ist der Begriff der Präparation von enormer Bedeutung für die Praktikabilität des Quantum Computing. Definition 2.3 Ein Quantensystem wird präpariert, indem es bezüglich einer speziellen Größe gemessen wird. Nach der Messung befindet sich das System sicher in dem gemessenen Zustand bezüglich der entsprechenden Größe. Dies besagt auch, dass die Beschreibung eines Quantensystems in Form eines Zustandsvektors stark von der Basis abhängt, in der der Zustand dargestellt wird. Bezüglich einer beliebigen Basis muss er aber nicht in einem Basiszustand vorliegen, sondern kann aus einer Linearkombination der Basisvektoren bestehen. Diese Zustände nennt man Superposition. Definition 2.4 Ein Zustand der sich bezüglich einer Basis aus mehreren Basiszuständen zusammensetzt, heißt Superposition. Allgemein ist der Zustand eines Systems aber immer eine abstrakte Größe, da er prinzipiell nie genau bestimmt werden kann. Messungen (siehe Abschnitt 2.6) liefern immer nur Informationen über einen Teilaspekt des Gesamtsystems. Auf der abstrakten Ebene aber hilft er die Abläufe in einem System komplett zu beschreiben. Es gibt immer nur den Zustand des Gesamtsystems, nie einen isolierten Zustandsvektor der Teilsysteme, es sei denn, die Teilsysteme sind völlig voneinander isoliert. Dies wird in Abschnitt 2.7 aufgegriffen, wo der Übergang von Teilzuständen zu einem Gesamtsystem beschrieben wird. 13 Zustand reiner Zustand Präparation eines Zustandes Superposition 2. Einführung Quantenmechanik 2.3. Hilbertraum Hilbertraum Wie im letzten Abschnitt bereits erwähnt, heißen quantenmechanische Zustände auch Zustandsvektoren. Dies hat seinen Ursprung darin, dass sie laut Postulat 1 tatsächlich in einem Vektorraum leben, der allerdings bestimmte Eigenschaften hat. Mathematisch gesehen handelt es sich um einen Hilbertraum. Definition 2.5 Ein vollständiger unitärer Vektorraum H heißt Hilbertraum. Als solcher hat er ein Skalarprodukt und darüber auch eine Norm. normiert Definition 2.6 Ein Zustandsvektor heißt normiert, wenn er die Norm Eins hat. orthogonal Die Wahrscheinlichkeitsinterpretation der Quantenmechanik, die sich in Postulat 5 äußert, hat eine interessante Implikation, die große Kreise zieht. Wenn das Quadrat der Projektion des aktuellen Zustands auf den gemessenen Eigenzustand gleich der Wahrscheinlichkeit ist, diesen zu messen ist, so muss die Summe dieser Wahrscheinlichkeiten 1 ergeben, da auf jeden Fall einer der Eigenzustände angenommen wird. Demnach ist jeder quantenmechanische Zustand normiert. Definition 2.7 Zwei Zustandsvektoren heißen orthogonal, wenn ihr Skalarprodukt verschwindet. Auch wenn ein Hilbertraum im allgemeinen nicht endlich dimensional ist, bleibt seine Dimension aber immer abzählbar. Dies ermöglicht die Definition eines Vollständigen Orthonormalsystems als Basis. 2.4. Dualer Hilbertraum Dualer Hilbertraum Ein wichtiger Punkt in der Kompaktheit des Dirac-Formalismus auf den noch nicht näher eingegangen wurde, ist die Bedeutung des Symbols | · i für einen Zustand. Dieses Symbol wird ”ket”-Vektor genannt, da er die zweite Hälfte einer Klammer (von englisch bracket) ist, die als Symbol für das Skalarprodukt im Hilbertraum h · | · i steht. Der ”bra”-Vektor h · | ist also ein Funktional, dass einen ket-Vektor auf das Skalarprodukt mit einem bestimmten Vektor abbildet. Definition 2.8 Der zu H duale Hilbertraum H∗ ist der Raum der linearen Funktionale der Elemente von H H∗ = {hψ | |hψ | : H → C, hψ | linear } (2.1) 2.5. Operatoren Bis jetzt haben wir den Zustand eines Systems beschrieben, können ihn aber weder beeinflussen, noch Informationen über ihn gewinnen. In der Sprache der Hilberträume sind 14 2.6. Messen eines quantenmechanischen Systems Manipulationen des Systems, also Messungen ebenfalls, durch lineare Operatoren beschrieben. Definition 2.9 Operator Ein Operator A ist eine Abbildung, die jedes Element |ψi ∈ DA ⊆ H eindeutig auf ein Element |φi ∈ WA ⊆ H abbildet. Dabei sind DA die Definitionsmenge und WA die Wertemenge von A. Man schreibt |φi = A|ψi = |Aψi. Definition 2.10 Observable Ein Operator A mit reellen Messwerten, die also direkt beobachtbar sind, heißt Observable. Die Forderung, dass die Eigenwerte von Operatoren, die Messungen beschreiben, reell sein sollen impliziert, dass Observablen hermitesche Operatoren sind. Das heißt, dass A gleich seinem adjungierten Operator A+ ist. Dieser definiert sich darüber, dass er auf die bra-Komponente des Skalarprodukts so wirkt, wie A auf die ket-Komponente: hφ | Aψi = hA+ φ | ψi. Wie in Abschnitt 2.3 erläutert, ist jeder Quantenzustand normiert. Dies muss natürlich auch für die Dauer einer Berechnung so beibehalten werden. Dass heißt, dass die Transformationen, die man zum Berechnen von Zustandsübergängen von Quantensystemen benutzen kann, alle normerhaltend sein müssen. Wir haben also nur Drehungen und Spiegelungen zur Verfügung. Dies sind in einem Hilbertraum gerade die unitären Transformationen. Definition 2.11 T Eine Matrix M heißt unitär, wenn M ∗ := M = M −1 gilt. Dies entspricht den orthogonalen Matrizen, wenn man sich nicht über C sondern über R bewegt. 2.6. Messen eines quantenmechanischen Systems Wie sich in Postulat 4 andeutet, ist die Hauptaufgabe in der Berechnung quantenmechanischer Systeme das Eigenwertproblem des zur interessanten Messgröße gehörigen hermiteschen Operators. Da die Eigenvektoren eines hermiteschen Operators orthogonal sind, im Falle eines entarteten Eigenwertes können sie orthogonal gewählt werden, kann man für jede Observable eine Basis des aktuellen Hilbertraumes aus Eigenvektoren bestimmen. Beim Messen des Systems bezüglich einer Eigenschaft wird nun, nach den Postulaten 3, 4 und 5, der Zustand in die Basis aus den Eigenvektoren der Observablen transformiert und mit der Wahrscheinlichkeit, die dem Quadrat des Koeffizienten des jeweiligen Eigenvektors entspricht, auf diesen abgebildet. Wir haben also nach einer Messung die Gewissheit, dass das System in der gemessenen Eigenschaft den gemessenen Wert hat, unabhängig davon, wie groß der Anteil des Eigenvektors an der Darstellung des ursprünglichen Zustands war. Man sagt, dass die Superposition eines Zustands zum Zeitpunkt der Messung zusammenbricht. Natürlich gewinnt man nur Informationen über die gemessene Größe. Allerdings ist ein wichtiges Ergebnis der Quantenmechanik, dass es Messgrößen gibt, die sich gleichzeitig 15 unitär 2. Einführung Quantenmechanik messen lassen, und eben auch solche, bei denen das prinzipiell unmöglich ist. Über die Korrespondenz von Messgrößen und hermiteschen Operatoren zusammen mit der Vorschrift, wie ein System gemessen wird, ist dies sehr einfach einzusehen: Wir transformieren den aktuellen Zustand in die Eigenbasis einer Observablen A, und ziehen per Messung einen Eigenwert ai . Das System befindet sich nach der Messung im dazugehörigen Eigenzustand der Observablen |ai i. Misst man nun eine weitere Größe B, die eine komplett verschiedene Eigenbasis hat, so hat der vorherige Zustand nun eine Repräsentation, die einer SuperpoP sition der Eigenvektoren von B entspricht: |ai i = hbj | ai i|bj i. Die Messung von B ergibt nun mit der Wahrscheinlichkeit |hbj | ai i|2 den Wert bj . Nehmen wir an, dass dies eingetreten ist, das System befindet sich nach der Messung also im Zustand |bj i. Man könnte meinen, dass man nun die zwei Größen A und B des Systems bestimmt hat, wie es ja in der klassischen Physik der Fall wäre. Sollte man jetzt aber wieder die Größe A messen, so würde man nur mit der Wahrscheinlichkeit |hai | bj i|2 den Wert |ai i beobachten. Das Quantensystem hat also durch die Messung von B seine Eigenschaft bezüglich A massiv geändert. Sollten die Eigenbasen von A und B aber dieselben sein, so steht einer simultanen Messbarkeit nichts im Wege, da die Darstellung nach dem Basiswechsel immer noch immer ein Basiszustand ist, und keine Superposition. Wird im Verlauf der Zeitentwicklung eines Quantensystems gemessen, ohne dass das Messergebnis bekannt ist, erhält man über die Superposition hinaus einen gemischten Zustand, der einer Wahrscheinlichkeitsverteilung über die möglichen Messergebnisse entspricht. Dies ist bei den hier besprochenen Quantensystemen nicht nötig, da wir immer am Ende der Berechnung messen werden. 2.7. Produkthilberträume Die Quantenmechanik geht davon aus, dass man ein abgeschlossenes System betrachtet, das heißt, dass es nicht mit seiner Umgebung wechselwirkt. Dies ist natürlich in der Realität niemals zu erreichen. Allerdings ist dies eine fundamentale Annahme, die für die Physik sehr grundlegend ist. Wenn man den Ehrgeiz entwickelt, immer das Gesamtsystem – Würde das dann lediglich unser Universum beinhalten? – zu beschreiben, so wäre man nie in der Lage, irgendwelche Aussagen zu treffen. Auch wenn nun die Annahme eines abgeschlossenen Systems häufig praktisch sein mag, gibt es doch auch immer wieder Situationen, wo es gerade darauf ankommt, dass das betrachtete System aus mehr als einem Teilchen besteht, es also Wechselwirkungen gibt. In der Quantenmechanik ist dies der Übergang vom Einteilchen- auf ein Mehrteilchensystem, im Quantum Computing der Übergang von der Berechnung auf einem Bit hin zu einem Quantenregister (siehe dazu Abschnitt 3.4). Nun ist aber die Verknüpfung der Hilberträume zweier Einzelsysteme nicht einfach eine Addition der jeweiligen Basisvektoren in eine neuere, größere Basis, sondern die Räume verschmelzen, indem komplett neue Basisvektoren gebildet werden, die sich aus je einem der Basisvektoren des einen, sowie des anderen Systems ergeben. Die Dimension des neuen Systems entspricht also dem Produkt der beiden Ursprungsdimensionen. Sollten wir die zwei Einzelsysteme H1 und H2 haben, wobei H1 die Basis 16 2.7. Produkthilberträume {|ai, |bi, |ci} hat, und H2 die Basis {|di, |ei}, so hat das Gesamtsystem H3 die Basis {|adi, |aei, |bdi, |bei, |cdi, |cei}. Dadurch bleibt die ganze Rechnung über klar, welches Subsystem in welchem Zustand ist. Mathematisch gesehen erfolgt die Erweiterung eines Systems über das äußere, das Kroneckerprodukt. Sollte es mit dem inneren Produkt verträglich sein, so ist es identisch mit dem Tensorprodukt, dessen Notation wir hier verwenden wollen. Dementsprechend erweitern sich auch die Operatoren folgendermaßen: A11 · B · · · .. . A⊗B = A21 · B .. . Amm · B Damit ist das Repertoire der quantenmechanischen Requisiten vollständig, dass zum Verstehen der Eigenheiten des Quantum Computing vonnöten ist. Im nächsten Abschnitt soll dann auch endlich konkret über die Realisierung eines Rechenmodells mit den Mitteln eines Quantensystems gesprochen werden. 17 2. Einführung Quantenmechanik 18 3. Quantum Computing Ein klassischer Computer ist ein Digitalrechner. Das heißt, seine kleinste Informationseinheit sind Bits, die den Zustand 1 oder 0 haben können. Diese Bits werden in Einheiten, sogenannten Registern zusammengefasst, deren Zustand also auch nur endlich viele Werte annehmen kann. Rechenoperationen können nun in Abhängigkeit von Inhalten bestimmter Register den Inhalt von eventuell anderen Registern manipulieren. Wie auch immer dies in der Hardware realisiert ist, erfolgt doch jegliche Berechnung eines klassischen Rechners diskret. Wenn man sich die Entwicklung von heutigen Rechnern ansieht wird man feststellen, dass die Hardwareeinheit, die ein Bit hält immer kleiner und kleiner wird. Nun ist bekannt, dass Quanteneffekte bei großen Skalen keinen merklichen Einfluss auf unsere Umwelt haben, wenn man aber zu entsprechend kleinen Skalen geht, nicht mehr vernachlässigbar sind. Die Computerindustrie hätte sich also früher oder später die Frage stellen müssen, die in den achtziger Jahren des zwanzigsten Jahrhunderts aufkam: Was passiert, wenn ein Rechenmodell nicht auf klassischen Bits basiert, sondern davon ausgeht, dass jede kleinste Informationseinheit eine Superposition der Zustände |1i und |0i hält, wenn also jedes sogenannte Quantenbit einem quantenmechanischen Teilchen entspricht. Dies hat natürlich weitreichende Konsequenzen, wie das letzte Kapitel schon angedeutet hat, da eben die gesamte Quantentheorie in solch einem System zum Einsatz kommt. Wie sich nun die verschiedenen Begrifflichkeiten aus der klassischen Informatik für das Quantum Computing übersetzen, soll Thema dieses Kapitels sein. Hauptsächlich werden Begriffe definiert, zum Beispiel im nächsten Abschnitt 3.1 der des Qubits. Es werden aber auch Besonderheiten des Quantum Computing erläutert, die aus der konsequenten Anwendung der Quantenmechanik resultieren, wie zum Beispiel das Messen von Qubits, was Thema von Abschnitt 3.2 ist, oder Abschnitt 3.3, der die Manipulatonsmöglichkeiten eines Qubits mit Hilfe von unitären Transformationen bespricht. Abschnitt 3.4 betrachtet die Konsequenzen des Übergangs von einem Quantenbit auf ein ganzes Quantenregister. Andersherum sind aber Hilberträume von Subsystemen so gut trennbar, dass man jede Transformation eines Quantenregisters auch wieder als Nacheinanderausführung von mehreren Transformationen, die jeweils nur auf dem Hilbertraum eines einzelnen Quantenbits wirken, zerlegen kann. Man spricht vom Prinzip der Lokalität. Deutlich übersichtlicher wird die Beschreibung von Quantenalgorithmen, wenn man sich der Darstellungsform der Schaltkreise bedient. Diese werden in Abschnitt 3.5 eingeführt. Der Vollständigkeit halber wird in Abschnitt 3.6 noch der Aspekt Verschränkung besprochen, den es so nur in Quantensystemen gibt und der die Möglichkeiten des Quantum Computing enorm erweitert. Mit Abschnitt 3.7 wird die neben der Unitaritätsbedingung schwerste Einschränkung, die einem im Quantencomputing begegnet, besprochen, dass nämlich Quantenbits nicht kopiert werden können. 19 3. Quantum Computing 3.1. Quantenbits Qubit Wie bereits oben erwähnt wurde, liegt der fundamentale Unterschied zwischen Quantum Computing und dem klassischen Rechnermodell in der kleinsten Informationseinheit. Klassischerweise kann ein Bit zwei Zustände annehmen, die mit 0 und 1 bezeichnet werden. Wenn man aber an Schrödingers Katze denkt, einer der wenigen Punkte, der über Quantenmechanik allgemein bekannt ist, fällt einem ein, dass ein Quantensystem nicht auf einen definierten Zustand festgelegt ist, sondern sich auch irgendwo dazwischen aufhalten darf. So befindet sich die Katze zu entsprechend geminderten Anteilen sowohl im Zustand tot wie auch im Zustand lebendig . Mit unserem Quantenbit ist es nun ähnlich. Es kann nicht nur die Zustände |0i und |1i annehmen, sondern auch beliebige normierte Superpositionen derselben. So kann man die Zustände |0i und |1i als Repräsentanten der klassischen Zustände 0 und 1 ansehen. Dies ist wichtig, wenn man mit einem Quantencomputer ein klassisches Problem lösen möchte. Dazu muss man das Messergebnis, dass ja einen der Quantenbasiszustände liefert, noch auf die möglichen klassischen Ergebnisse abbilden. Definition 3.12 Ein Quantenbit, kurz Qubit, hat die Form α · |0i + β · |1i mit: α, β ∈ C, |α|2 + |β|2 = 1 Die Koeffizienten α, β heißen Amplitude. Dies rührt aus der wellenmechanischen Sichtweise Schrödingers her, der jeden Zustand als Wellenfunktion auffasst. Allerdings finden sich auch Wellenelemente in der Dirac-Notation eines Qubits. Addiert man zwei Qubits mit entgegengesetztem Vorzeichen, also entgegengesetzter Phase, so annullieren sie sich, wie man es aus der Vektorrechnung gewöhnt ist. Dies ist ein Verhalten, dass man sonst von der linearen Überlagerung von Wellen kennt. Da die Koeffizienten α, β jeweils zu den Basisvektoren des Hilbertraumes gehören, ist es möglich ein Quantenbit als Vektor, wie in der Analytischen Geometrie zu schreiben. α β Die gesamten Berechnungen lassen sich also auch in der Form von Vektoren für Zustände und Matrizen für Transformationen schreiben. Um überhaupt sinnvolle Quantenberechnungen anzustellen, ist es wichtig, mit einem definierten Zustand, dem Startzustand, anzufangen. Dies geschieht, wie es in Abschnitt 2.2 beschrieben wurde, indem ein maximaler Satz verträglicher Messungen durchgeführt wird (siehe auch Abschnitt 3.2). Sollte man einen Zustand messen, der nicht dem gewünschten Startzustand entspricht, so misst man das nächste Teilchen, bzw. wendet entsprechende Transformationen an, die aus dem dann bekannten Zustand sicher den gewünschten Startzustand herstellen. 20 3.2. Messen beim Quantum Computing 3.2. Messen beim Quantum Computing Das Messen eines Quantensystems offenbart ziemlich deutlich die Verschiedenheit von klassischen und Quantensystemen. Zum einen muss man akzeptieren, dass eine Messung keine berührungslose Beobachtung des Systems ist, sondern ein direkter Eingriff, der den aktuellen Zustand massiv ändern kann. Auf der anderen Seite ist, selbst wenn man maximale Sicherheit über den Zustand des Systems gewonnen hat, das Messergebnis in vielen Fällen nicht vorhersagbar. Quantenmechanische Messungen sind im Allgemeinen nicht deterministisch. Wichtig bei einer Messung ist immer die Information bezüglich welcher Messgröße, welches hermiteschen Operators, beziehungsweise bezüglich welcher Orthonormalbasis gemessen wird. Wie in Abschnitt 2.6 besprochen, befindet sich das System nach der Messung in einem der Eigenzustände des zur Messgröße gehörigen hermiteschen Operators. Welcher dieser Basiszustände angenommen wird, kann nur über Wahrscheinlichkeiten angegeben werden. Diese errechnen sich nach Postulat 5 aus den Projektionen des aktuellen Zustands auf die Basiszustände. Konkret heißt das für unser Qubit, das sich im Zustand α · |0i + β · |1i befindet, dass eine Messung bezüglich der Basis {|0i, |1i} mit Wahrscheinlichkeit |α|2 den Eigenwert zum Eigenzustand |0i und mit Wahrscheinlichkeit |β|2 den Eigenwert zum Eigenzustand |1i ergibt. Es ist prinzipiell nicht möglich das Ergebnis vorherzusagen, wenn keine der beiden Amplituden verschwindet. Lediglich bei häufig wiederholter Messung von identisch präparierten Zuständen offenbart sich die jeweilige Wahrscheinlichkeit über die relativen Häufigkeiten. Ein wichtiger Trick, mit dem man sich das Design von Quantenalgorithmen erheblich vereinfachen kann ist, die richtige Basis zu wählen, bezüglich derer man misst. Im Allgemeinen liefert eine Messung nur mit einer gewissen Wahrscheinlichkeit das eine oder das andere Messergebnis. Es sei denn, wir messen bezüglich einer Basis, die den aktuellen Zustand als Basisvektor enthält. Da beim Design eines Quantenalgorithmus die gesamte Zeit über der Zustand des Systems bekannt ist, kann man sich manchmal eine Basis heraussuchen, die mit Sicherheit die gesuchte Information über das Rechenergebnis liefert. 3.3. Unitäre Transformationen von Qubits Der Hilbertraum eines Qubits ist zweidimensional, seine Standardbasis ist {|0i, |1i}. Demnach sind die möglichen Transformationen als unitäre 2 × 2-Matrizen darstellbar. Auf der Ebene von Einzelqubits bis hin zu einfachen Berechnungen bietet sich die VektorMatrixschreibweise an, da sie die Intuition begünstigt, wenn man ausblendet, dass die Amplituden komplex sind. 21 3. Quantum Computing Hadarmardmatrix Um die Wirkungsweise von unitären Transformationen auf ein Qubit zu zeigen, und gleichzeitig eine wichtige Transformation und die neben der Standardbasis wichtigste Basis unseres H einzuführen, soll hier ein Beispiel besprochen werden. Definition 3.13 Die Hadamardmatrix die auf einen Einqubitzustand wirkt ist ! √1 √1 1 1 1 2 2 H1 := √ = √1 √1 − 2 1 −1 2 2 (3.1) Beispiel 3.1 Die Basiszustände der Standardbasis werden durch H1 auf eine bis auf Vorzeichen gleich Gewichtete Superposition abgebildet. Misst man den resultierenden Zustand bezüglich der Standardbasis erhält man in beiden Fällen mit Wahrscheinlichkeit 21 einen der beiden Basisvektoren. H1 |0i = H1 |1i = 1 √ (|0i + |1i) 2 1 √ (|0i − |1i) 2 Die Hadamardtransformation hat noch die angenehme Eigenschaft, dass sie zu sich selbst invers ist. Man kann also eine mit H erzeugte gleichgewichtete Superposition sehr einfach wieder auf die Standardbasis abbilden. 1 H1 √ (|0i + |1i) = |0i 2 1 H1 √ (|0i − |1i) = |1i 2 Hadarmardbasis Definition 3.14 Die Basis 1 |+i = √ (|0i + |1i) , 2 1 |−i = √ (|0i − |1i) 2 in die die Standardbasis von der Hadamardtransformation überführt wird, nennt man Hadamardbasis. Dass die Hadamardbasis zur Standardbasis genau um pi 4 gedreht ist, zeichnet sie unter allen möglichen Basen aus. Bei Quantenalgorithmen, die viele mögliche Eingaben simultan betrachten, wird der anfangs präparierte Zustand |0i auf |+i abgebildet, so dass wirklich alle Basiszustände gleichermaßen vorkommen. 3.4. Quantenregister Aus der Sicht eines Informatikers ist der Übergang von einem Bit zu einem ganzen Register eine völlig natürliche Sache. Dieser Übergang ist auch für das Quantum Computing 22 3.4. Quantenregister von erheblicher Bedeutung, da Berechnungen auf einem Qubit alles andere als spannend sind. Allerdings treten aus Gründen die schon in Abschnitt 2.7 besprochen wurden bei der Kombination mehrerer Quantensysteme zu einem Gesamtsystem Effekte auf, die es im klassischen Fall nicht gibt. Die Definition ist aber erstmal völlig geradlinig. Definition 3.15 2n Die Standardbasis eines n-Qubitregisters besteht aus 2n Vektoren. Sie werden mit den möglichen Inhalten eines klassischen n-Bitregisters benannt. |x( n − 1)i...|x1 i|x0 i =: |xn−1 ... x1 x0 i (3.2) Jeder dieser Zustände entspricht dem Zustand, bei dem sich alle n Qubits im jeweiligen Zustand |xi i für Qubit i befindet. Formal lebt jedes der Qubits weiter in seinem L eigenen Hilbertraum Hi . Der Gesamtzustand lebt im äußeren Produkt HRegister = ni=1 Hi der einzelnen Hilberträume Hi . Naiverweise würde man annehmen, dass es sich hierbei um die Kombination von Vektoren in derselben Basis handelt, allerdings würde das vektorielle Addieren der einzelnen Zustände die Information darüber zerstören, welches Qubit sich in welchem Zustand befindet. Effektiv bekommt man bei obiger Schreibweise eine binäre Nummerierung der Basiszustände, wie man es von klassischen Registern gewohnt ist. Dies macht es wieder recht einfach, auch kompliziertere Quantenalgorithmen zu verstehen, da man sich nicht dauernd mit solch aufgeblasenen Hilberträumen herumplagen muss. Mit der Superposition über die gewohnten Binärzustände hat man eine angenehm direkte Notation, mit der sich gut rechnen lässt. Der Übersichtlichkeit halber verwendet man folgende Schreibweise, die ja ebenfalls in der Informatik üblich ist: |xn−1 ... x1 x0 i =: |ii wobei i = n−1 X j=0 xj · 2j Um ein tieferes Verständnis für die Vorgänge in Quantenregistern zu bekommen, bietet es sich an, für das Beispiel n = 3 die Zusammenfassung von zwei Qubits zu einem Quantenregister anzuschauen. Bei n = 2 tritt der Effekt der Multiplikativität der Dimensionen noch nicht hervor. Beispiel 3.2 Für n = 3 haben wir drei zweidimensionale Hilberträume, die zu einem Gesamtraum verkettet werden sollen. Jedes der drei Qubits sei zur Basis |0i, |1i dargestellt. Um die verschiedenen Hilberträume in solch spezifischen Beispielen unterscheiden zu können, verwendet man Indizes an den ket-Klammern. Also ist der jeweilige Zustand: Qubit 1: Qubit 2: Qubit 3: |ψ1 i = α1 · |0i1 + β1 · |1i1 |ψ2 i = α2 · |0i2 + β2 · |1i2 |ψ3 i = α3 · |0i3 + β3 · |1i3 . 23 Quantenregister 3. Quantum Computing Der Registerzustand hat nun acht Basisvektoren: {|0i3 |0i2 |0i1 , |0i3 |0i2 |1i1 , |0i3 |1i2 |0i1 , |0i3 |1i2 |1i1 , = = |1i3 |0i2 |0i1 , |1i3 |0i2 |0i1 , |1i3 |0i2 |1i1 , |1i3 |1i2 |1i1 } {|000i, |001i, |010i, |011i, |100i, |101i, |110i, |111i} {|0i, |1i, |2i, |3i, |4i, |5i, |6i, |7i} Die Verkettung der Zustände |ψ3 i, |ψ2 i und |ψ1 i hat dann folgende Amplituden: |ψ3 ψ2 ψ1 i = α1 α2 α3 · |0i + β1 α2 α3 · |1i + α1 β2 α3 · |2i + β1 β2 α3 · |3i + α1 α2 β3 · |4i + β1 α2 β3 · |5i + α1 β2 β3 · |6i + β1 β2 β3 · |7i Um auf einem n-Qubitregister rechnen zu können, müssen auch die Transformationen, die auf den einzelnen Hilberträumen wirken zu entsprechenden Transformationen die auf dem Gesamtraum arbeiten zusammengefasst werden. Dementsprechend liegt jedem Berechnungsschritt eine Transformation zugrunde, die sich aus dem direkten Produkt der einzelnen Transformationen dieses Schritts errechnet. Am einfachsten für ein intuitives Verständnis der Transformation von Registern ist die Vektor-Matrix-Schreibweise. Der Hilbertraum eines n-Qubitregisters hat die Dimension 2n , die Vektoren haben also ebenso 2n Einträge und Manipulationen an n-Qubitregistern werden dann durch unitäre 2n × 2n -Matrizen beschrieben. Beispiel 3.3 Sei n = 2. Betrachten wir die unitäre Form des XOR. Eine wichtige Folgerung aus der Unitarität von Transformationen ist, dass sie auch reversibel sein müssen. Man muss also den Anfangszustand aus der Ausgabe der Transformation wieder herausrechnen können. Dafür bietet sich folgende Form für das XOR an, die auch controlled NOT (CNOT) genannt wird, da das zweite Bit genau dann negiert wird, wenn das erste Bit x den Wert 1 hat. XOR : |x, yi 7→ |x, x ⊕ yi |00i |01i |10i |11i 1 0 0 0 ⇒ XOR = ˆ 0 1 0 0 0 0 0 1 0 0 1 0 |00i |01i |10i |11i Allerdings gilt auf der anderen Seite das wichtige Prinzip der Lokalität, nach dem sich jede Transformation eines n-Qubitregisters in Einzeltransformationen zerlegen lässt, die jeweils nur in einem zweidimensionalen Hilbertraum leben, siehe [32]. Das liegt an der Struktur des äußeren Produktes, welches die einzelnen Hilberträume nicht direkt miteinander verschränkt, sondern lediglich eine simultane Beschreibung aller Einzelzustände liefert. Die allgemeine Hadamardtransformation verdeutlicht gut, wie sich eine Registertransformation nach dem Prinzip der Lokalität wieder als Einzeltransformationen schreiben lässt. 24 3.5. Quantenschaltkreise Definition 3.16 Hn Sei |xi ein n-Qubit Quantenregister |xn xn−1 ...x1 i. 1 Hn |xi = √ n 2 X x·y (−1) y∈{|0i,|1i}n |yi, wobei x · y = n M xi y i (3.3) i=1 ist die verallgemeinerte Hadamardtransformation. Die Summe läuft über alle möglichen Zustände des Registers. |xi taucht nur noch im Vorzeichen auf. Beispiel 3.4 n n 2 −1 2 −1 1 X 1 X (−1)0 |yi = √ |yi Hn |0i = Hn |00...0i = √ n 2n y=0 2 y=0 erzeugt also die gleichgewichtete Superposition aller Zustände. Dies wird in vielen Quantenalgorithmen ausgenutzt, um eine Operation auf viele Zustände gleichzeitig anzuwenden. 3.5. Quantenschaltkreise Quantenschaltkreise geben eine sehr übersichtliche Beschreibung eines Quantenalgorithmus, da auf einen Blick die wichtigen Berechnungsschritte des Algorithmus offen liegen, und sich nicht hinter umständlichen äußeren Produkten von Transformationen verstecken. Auch spart man sich die Indizes an den Zuständen der einzelnen 1-Qubit-Hilberträume. Außerdem ermöglichen Quantenschaltkreise eine sehr praktikable Definition der Komplexität eines Quantenalgorithmus über die Anzahl der Einqubit-Gatter, welche grundlegend für die Quantenkomplexität ist. Analog zu klassischen Schaltkreisen werden Quantenalgorithmen mit Hilfe von Leitungen für einzelne Registereinträge sowie Boxen für Berechnungsschritte, also Transformationen als Quantenschaltkreise dargestellt. Beispiel 3.5 Das Schaltbild des XOR von aus Beispiel 3.3 ist: |x1i |x1i |x2i |x1 ⊕ x2i Abbildung 3.1.: Das Gatter für die Verknüpfung XOR. Beispiel 3.6 Ein Quantencomputer ist, im Gegensatz zum klassischen Computer, in der Lage echte Zufallszahlen zu generieren. Dies sieht man folgendermaßen ein: 25 3. Quantum Computing |0i H M |0i H Abbildung 3.2.: Ein Quantenschaltkreis für die Generierung echter Zufallszahlen. Durch die Hadamardtransformationen wird eine gleichgesichtete Superposition über alle Basiszustände erzeugt. Eine Messung liefert dann jedes der Elemente mit derselben Wahrscheinlichkeit. Aufgrund der Lokalität entspricht das jeweilige Anwenden von H1 auf jedes Qubit der Anwendung von Hn auf den Quantenregister |x1 ...xn i = |0...0i. n 2 −1 1 X |0..0i −→ √ |ii, 2n i=0 Hn wobei i wieder in Binärdarstellung zu interpretieren ist. Die Messung liefert in diesem Zustand mit Wahrscheinlichkeit 21n einen der 2n Basiszustände. Wir haben also die Gleichverteilung erzeugt. 3.6. Verschränkung Für unseren Angriff auf ein kryptographisches Protokoll in Teil II benötigen wir die Verschränkung von Qubits miteinander, die schon von Einstein als Spooky action at a distan” ce“ bezeichnet wurde, ist eines der seltsamen Phänomene der Quantenmechanik, ist aber formal schnell erklärt. Genaugenommen handelt es sich bei der Verschränkung lediglich um eine Abhängigkeit der Zustände der einzelnen Qubits eines Registers voneinander, indem bestimmte Amplituden der Superposition Null sind, so das nur spezielle Kombinationen von Zuständen bei einer Messung ermittelt werden können. So kann die Messung des einen Qubits den Zustand des anderen vollständig festlegen, wie das folgende Beispiel illustriert. Beispiel 3.7 Wir stellen ein verschränktes Qubitpaar her. Siehe Abbildung 3.3. |00i H⊗id −→ CNOT −→ 1 1 √ (|0i + |1i)|0i = √ (|00i + |10i) 2 2 1 √ (|00i + |11i) 2 Sollte man nun eines der beiden Qubits messen, so weiß man, in welchem der beiden Zustände sich dieses Qubit befindet. Damit ist aber auch klar, in welchem der beiden möglichen Zustände sich das andere Qubit nach der Messung befindet. 26 3.7. No Cloning Theorem |0i H |φi |0i Abbildung 3.3.: Schaltkreis zur Erzeugung des verschränkten Zustands |φi = √12 (|00i + |11i). Hier lässt sich die Belegung der beiden Leitungen auf der rechten Seite nicht mehr isoliert angeben, da die Belegungen einander bedingen. Das Ausnutzen von Verschränkung ist einer der Hauptvorteile des Quantum Computers gegenüber einem klassischen Rechner, da so das doch recht komplizierte Messen zumindest etwas vereinfacht werden kann. Es wird auch in vielen Algorithmen angewandt, wie zum Beispiel der superschnellen Fast Fourier Transform [35] oder in der Quantenkommunikation. 3.7. No Cloning Theorem Neben der Unitaritätsbedingung macht einem das No cloning Theorem das Design von Quantenalgorithmen schwer. Da im Gegensatz zum klassischen Rechenmodell ein Quantencomputer nicht in der Lage ist, Qubits zu kopieren. Dies ist auch wieder das Ergebnis einfacher, konsequenter Anwendung der Theorie, aber an sich völlig unintuitiv. Wir betrachten ein Quantensystem im Zustand |ψi ⊗ |si, wobei |ψi beliebig und |si beliebig aber fest gewählt ist. Satz 3.1 (No Cloning Theorem) Es gibt keine unitäre Transformation, die dieses System für jedes |ψi in den Zustand |ψi ⊗ |ψi versetzt. Beweis Annahme: U |ψi ⊗ |si → |ψi ⊗ |ψi U |φi ⊗ |si → |φi ⊗ |φi ⇒ hU (ψ ⊗ s) | U (φ ⊗ s)i = hψ ⊗ ψ | φ ⊗ φi außerdem ist hU (ψ ⊗ s) | U (φ ⊗ s)i = hψ ⊗ s | φ ⊗ si = = ⇒ hψ ⊗ ψ | φ ⊗ φi ⇒ hψ | φi = = hψ | φi · hs | si hψ | φi hψ | φihψ | φi (hψ | φi)2 Das geht nur für orthogonale oder identische Zustände 2 27 3. Quantum Computing 28 4. Wichtige Quantenalgorithmen Nachdem im letzten Kapitel die wichtigsten Begriffe und Implikationen des Quantum Computing eingeführt wurden, soll in diesem Kapitel eine gewisse Intuition für die Arbeitsweise von Quantenalgorithmen erarbeitet werden. Deswegen ist als Einstieg das DeutschProblem in Abschnitt 4.1 und gleich im Anschluss in Abschnitt 4.2 die Verallgemeinerung zum Deutsch-Josza Algorithmus gewählt. Sie berühren die Eigenart von Quantenalgorithmen, auf vielen Eingaben simultan rechnen zu können. Sie vermitteln so die Faszination, die vom Quantum Computing ausgeht, da es in einigen Belangen erhebliche Beschleunigung gegenüber klassischer Berechnung liefert. Die Darstellungen dieses Kapitels sind [32] nachempfunden. Dort sind Beweise für die Ergebnisse nachzulesen. Im weiteren Verlauf des Kapitels werden dann die Algorithmen von Grover in Abschnitt 4.3 und von Shor in Abschnitt 4.4 besprochen. Sie sind ebenso wie die Lösung des DeutschProblems Meilensteine des Quantum Computing. Für diese Arbeit sind sie wichtig, da sich einige der Lösungsstrategien, die in Teil II benutzt werden, an diesen beiden Algorithmen anlehnen. Beide Algorithmen sind leider etwas kompliziert, und nehmen daher in ihrer Behandlung viel Raum ein. Allerdings liefern sie auch weiteres Verständnis für die Arbeitsweise aber auch für die Grenzen des Quantum Computing. 4.1. Deutsch-Problem Großes Interesse erweckt das Quantumcomputing, wenn es darum geht, Probleme in teilweise wesentlich weniger Aufwand zu berechnen, als es mit klassischen Rechnern möglich ist. Ein solches Problem ist das von Deutsch [15]. Gegeben sei eine Blackbox, die eine Funktion f : {0, 1} → {0, 1} berechnet. Ziel des Spiels ist es nun, zu entscheiden, ob f konstant (f (0) = f (1)) oder f balanciert (f (0) 6= f (1)) ist. Es ist uns erlaubt, für bestimmte Werte das Orakel zu befragen, was die Funktion in diesem Fall tun würde. Ein klassischer Computer muss zwei solcher Abfragen tätigen, nämlich einmal für 0, einmal für 1, da das Wissen um einen der Werte noch keinerlei Informationen über die gesuchte Antwort enthält. Es gibt aber einen Quantenalgorithmus, der dieses Problem mit nur einer einzigen Orakelabfrage löst. Wir verwenden für unsere Berechnung ein Quantenregister R aus zwei Bits. Zunächst brauchen wir eine unitäre Form des Funktionsaufrufs, da f an sich nicht reversibel ist. Betrachten wir also: Uf : |xyi 7→ |x, y ⊕ f (x)i Dann ist Uf−1 = Uf . 29 4. Wichtige Quantenalgorithmen 4.1.1. Algorithmus für das Deutschproblem GS1: R = |x, yi ← |01i GS2: R ← H2 R GS3: R ← Uf R GS4: |xi ← H1 |xi GS5: Messe das erste Bit |xi bezüglich der Basis {|0i, |1i} Sage konstant“ falls das Ergebnis |1i ist, sonst balanciert“. ” ” 4.1.2. Analyse Uf wurde tatsächlich nur einmal evaluiert. Der Algorithmus ist korrekt: H 2 |01i −→ = = Uf −→ = = = = H1 auf |xi −→ = = 1 (|0i + |1i) · (|0i − |1i) 2 1 (|0i · (|0i − |1i) + |1i · (|0i − |1i)) 2 1 1 1 1 |00i − |01i + |10i − |11i 2 2 2 2 1 (|0i · (|0 ⊕ f (0)i − |1 ⊕ f (0)i) + |1i · (|0 ⊕ f (1)i − |1 ⊕ f (1)i)) 2 1 1 1 1 |0, f (0)i − |0, 1 ⊕ f (0)i + |1, f (1)i − |1, 1 ⊕ f (1)i 2 2 2 2 1 |0i · (−1)f (0) (|0i − |1i) + |1i · (−1)f (1) (|0i − |1i) 2 1 (−1)f (0) |0i + (−1)f (1) |1i (|0i − |1i) 2 1 1 √ (−1)f (0) |0i + (−1)f (1) |1i · √ (|0i − |1i) 2 2 1 1 1 f (1) 1 f (0) √ √ (|0i + |1i) + (−1) √ (|0i − |1i) · √ (|0i − |1i) (−1) 2 2 2 2 1 1 √ (−1)f (0) + (−1)f (1) |0i + (−1)f (0) + (−1)f (1) |1i · √ (|0i − |1i) 2 2 1 √ ±|1i · (|0i − |1i) falls f (0) = f (1) 2 ±|0i · √12 (|0i − |1i) falls f (0) 6= f (1) |{z} | {z } |xi |yi Das Deutsch-Problem zeigt sehr deutlich die Möglichkeiten, die aus der Verwendung von Superpositionen erwachsen. Es lässt sogar hoffen, dass zum Beispiel Datenbanksuchen mit nur einem Aufruf auskommen könnten, wenn man nur einen geschickten Quantenalgorithmus findet. Leider ist dies nicht der Fall, wie wir in Abschnitt 4.3 über den Algorithmus von Grover sehen werden. Eine direkte Erweiterung des Deutsch-Algorithmus ist der Algorithmus von DeutschJozsa, der im nächsten Abschnitt besprochen werden soll, da das Deutsch-Problem mit der 30 4.2. Deutsch-Jozsa Algorithmus |0i H |1i H H M f Abbildung 4.1.: Schaltkreis für eine Lösung des Deutsch-Problems durch einen Quantenalgorithmus. die Berechnungsbreite beträgt zwei Qubit. Die Messung findet nur in ersten Qubit statt. Frage nach einer Funktion, die nur auf einem Bit arbeitet praktisch nicht sehr interessant ist. 4.2. Deutsch-Jozsa Algorithmus Hier wird das Deutsch-Problem erweitert auf eine Funktion, die nicht nur auf einem Qubit arbeitet, sondern auf einem n-Qubitregister, allerdings bildet sie auf Boolesche Werte ab. Gegeben sei wieder eine Blackbox, die eine Funktion f : {0, 1}n → {0, 1} berechnet. Die Funktion f sei entweder konstant f (i) = f (j) ∀i, j ∈ {0, 1}n oder balanciert, das heißt, es werden gleich viele Eingaben auf 0 wie auf 1 abgebildet. Dann ist also |f −1 (0)| = |f −1 (1)| = 2n−1 . Ein klassischer Computer muss im schlechtesten Fall (2n−1 +1) Orakelabfragen tätigen. Wieder bringt ein Quantenalgorithmus eine erhebliche Beschleunigung, da er nur einmal schauen muss [16]. GS1: R = |xn−1 . . . x0 i|yi ← |0 . . . 0i|1i GS2: R ← Hn+1 R GS3: R ← Uf R GS4: R ← (Hn ⊗ id1 )R GS5: Messe |xi. GS6: Sage konstant falls das Ergebnis |0 . . . 0i ist, sonst balanciert. 4.2.1. Analyse Wieder wurde das Orakel nur einmal befragt. Außerdem ergibt die Messung am Ende mit Sicherheit das Ergebnis |0i, wenn f konstant ist, bzw. mit Sicherheit ein Ergebnis ungleich 31 4. Wichtige Quantenalgorithmen |0i H H M |0i H |1i H H f Abbildung 4.2.: Schaltkreis eines Quantenalgorithmus, der das Deutsch-Jozsa-Problem löst. Die Berechnung findet auf einem (n + 1)-Quantenregister statt. |0i, wenn f balanciert ist. Die im Verlauf der Berechnung eingenommenen Zustände sind: ! 2n −1 1 1 X Hn+1 √ |xi · √ (|0i − |1i) |0 . . . 0i|1i → n 2 x=0 2 ! n −1 2X Uf 1 1 √ |xi √ (|f (x)i − |1 ⊕ f (x)i) −→ 2n x=0 2 ! n 2 −1 1 1 X f (x) √ (−1) |xi · √ (|0i − |1i) = n 2 x=0 2 ! n n 2 −1 2 −1 1 X X 1 Hn −→ (−1)f (x) (−1)x·z |zi · √ (|0i − |1i) , n 2 2 z=0 x=0 wobei x · z das Vektorskalarprodukt von x und z ist. Dies sieht sehr kompliziert aus, aber durch das Vorwissen, dass f entweder konstant oder balanciert ist, lässt sich das Messergebnis klassifizieren. Die Messung von |xn−1 . . . x0 i ergibt für festes z: 2n −1 1 X (−1)f (x) (−1)x·z |zi 2n x=0 Fall: konstant Für z = 0 gilt x · z = 0: n n 2 −1 2 −1 1 X 1 X f (x) x·z (−1) (−1) |zi = n ±|0i = ±|0i. 2n 2 x=0 x=0 Da der Zustand ansonsten symmetrisch ist verschwindet die Amplitude von jedem |zi mit z 6= 0. Fall: balanciert Für z = 0 ist n n 2 −1 2 −1 1 X 1 X f (x) x·z (−1) (−1) |zi = (−1)f (x) |0 . . . 0i. 2n 2n x=0 32 x=0 4.3. Grovers unstrukturierte Datenbanksuche Da f aber balanciert ist, ist für die eine Hälfte der x f (x) = 0, für die andere f (x) = 1. Also ist die Amplitude von |0i gleich 0. 4.3. Grovers unstrukturierte Datenbanksuche Ein sehr wichtiges Ergebnis für das Quantum Computing ist der Algorithmus für die unstrukturierte Suche von Grover [26]. Er startet mit einem sehr optimistischen Ansatz, der die simultane Auswertung einer Funktion auf einer ganzen Superposition realisiert, ähnlich, wie es beim Algorithmus von Deutsch-Jozsa der Fall war. Allerdings ergibt die Analyse des Grover-Algorithmus, dass es allgemein nicht möglich ist, aus dem so erhaltenen Quantenzustand die gesuchte Information sofort auszulesen, da das Ergebnis wieder eine Superposition ist, in der die Amplitude des gesuchten Ergebnisses nicht aus der anderer Basiszustände hervorsticht. Eine Messung liefert also nur mit gewisser Wahrscheinlichkeit das gesuchte Ergebnis. Der Algorithmus behilft sich, indem die Amplitude des gesuchten Basiszustands sukzessive verstärkt wird, allerdings macht dieser Vorgang die enorme Beschleunigung der simultanen Auswertung zunichte. Insofern ist der Algorithmus von Grover auch einer der größten Dämpfer, den die Euphorie über die neuen Möglichkeiten des Quantum Computing hinnehmen musste, hofften doch viele, dass Quantencomputer für jedes Problem in NP effiziente Lösungen liefern könnten. Gegeben ist eine Datenbank mit N Elementen {0, . . . , N −1} es ist N = 2n . Die Schlüssel sind die Elemente {0, 1}n . Die Satellitendaten werden nicht betrachtet. Das gesuchte Element sei x̂. Die Datenbank wird als eine Funktion f : {0, 1}n → {0, 1} modelliert. Die Funktion f ist der Test auf Übereinstimmung mit dem Element x̂: es gibt also genau ein Element x̂, für das gilt f (x̂) = 1. Für alle x ∈ {0, 1}n mit x 6= x̂ gilt demnach f (x) = 0. Eine Datenbankanfrage entspricht der Auswertung von f . Um f in einem Quantenalgorithmus verwenden zu können, bringen wir f in die Form eines Quantenorakels Uf : |x, yi 7→ |x, y ⊕ f (x)i. Gesucht ist nun das Element x̂ für das f den Wert 1 ergibt. 4.3.1. Der Grover-Algorithmus GS1: Beginne mit der gleichverteilten Superposition GS2: Führe solange aus, bis die Amplitude von |x̂i groß ist: a) Negiere das Vorzeichen des gesuchten Elementes |x̂i b) Spiegele die Amplituden der aktuellen Superposition am Mittelwert aller Amplituden. GS3: Messe |xi und gib das Ergebnis aus. Beispiel 4.8 Für den Fall N = 4 ist die Situation sehr einfach, wie die Abbildungen 4.3 und 4.4 zeigen. Nehmen wir an, dass x̂ = 1 ist. Nach der Negation der Amplitude von x̂ aus der gleichgewichteten Superposition 1 1 1 1 |0i + |1i + |2i + |3i 2 2 2 2 33 4. Wichtige Quantenalgorithmen Uf x̂ x̂ Abbildung 4.3.: Negieren des Vorzeichens der Amplitude von x̂ im Fall N = 4 während der ersten Iteration des Grover-Algorithmus. ergibt sich der Zustand 1 1 1 1 |0i − |1i + |2i + |3i 2 2 2 2 Der Mittelwert der Amplituden ist also 3 · x̂ 1 4 Spiegeln an 41 1 2 − 1 2 = 14 . x̂ Abbildung 4.4.: Spiegeln der Amplituden des gesamten Registers am Mittelwert 41 aller Amplituden, im Fall N = 4 während der ersten Iteration des GroverAlgorithmus. Spiegelt man nun alle Amplituden des Zustands aus Abbildung 4.3 so ergibt sich der Zustand 0 · |0i + |1i + 0 · |2i + 0 · |3i = |1i Das betrachtete Quantenregister befindet sich also mit Amplitude 1 im gesuchten Zustand. Eine Messung liefert mit Sicherheit das Ergebnis |1i. Dass nach einmaliger Spiegelung ein sicheres Messergebnis erwartet werden kann, liegt an der sehr günstigen Konfiguration, die bei N = 4 auftaucht. Die Fälle, in denen man mit einer Spiegelung hinkommt, sind aber rar, so dass der Algorithmus nicht so einfach verallgemeinert werden kann. Spiegeln x̂ x̂ Abbildung 4.5.: Spiegelung während einer Grover-Iteration für allgemeines N . Die Amplitude von x̂ wächst, aber es bleibt eine Restwahrscheinlichkeit, bei einer Messung ein falsches Element zu erhalten. 34 4.3. Grovers unstrukturierte Datenbanksuche Für allgemeines N sieht die Situation leider nicht so rosig aus: wie Abbildung 4.5 verdeutlicht, man erhält im Allgemeinen nicht Amplitude 1 bei x̂. Wiederholen der GroverIteration kann die Amplitude von x̂ weiter erhöhen. Dabei muss aber bedacht werden, dass die Amplitudenverstärkung periodisch verläuft. Das heißt, dass man sich nach einer bestimmten Anzahl an Iterationen wieder in dem Zustand befindet, mit dem man begonnen hatte, der gleichgewichteten Superposition. 4.3.2. Formalisierung des Grover-Algorithmus Wir benötigen wie beim Deutsch-Problem ein weiteres Qubit |yi, um die Reversibilität der nötigen Transformationen gewährleisten zu können. Dieses Qubit versetzen wir anfangs in den Zustand |yi = H|1i = √12 (|0i − |1i) = |−i. Das Orakel findet sich in der gewohnten Transformation Uf wieder. Uf 1 |xi|−i −→ |xi √ (|f (x)i − |1 ⊕ f (x)i) 2 f (x) = (−1) |xi|−i Die Grover Iteration verläuft in den zwei Schritten: Kippen und Spiegeln.P Das Kippen N −1 wird vom Orakel Uf besorgt. Das Spiegeln von einer Superposition |xi = i=0 αi |ii an PN −1 αj x̄ = j=0 N wird durch folgende Abbildung realisiert. N −1 X i=0 αi |ii 7→ N −1 X i=0 Diese Operation entspricht der Matrix 2 −1 + N2 N 2 −1 + N DN = .. .. . . 2 N 2 N 2 · x̄ − αi |ii 2 N ... ... .. . 2 N 2 N .. . . . . −1 + 2 N Um aber die Komplexität dieses Algorithmus zu bestimmen, ist es nötig, die Transformationen in lokaler Form anzugeben. Die Spiegelung kann man folgendermaßen schreiben: −1 0 . . . 0 . . .. 0 . . 1 DN = −Hn · RN · Hn mit RN = . . .. ... 0 .. 0 ... 0 1 Dabei ist Hn die bekannte Hadamardmatrix, die sich, wie im Abschnitt 3.5 über Quantenschaltkreise besprochen, lokal darstellen lässt. die Matrix RN ist ein Spezialfall des bedingten Vorzeichenwechsels. Betrachten wir die spezielle Funktion g mit 1 für xn−1 = . . . = x0 = 0 g(xn−1 , . . . , x0 ) = , 0 sonst. 35 4. Wichtige Quantenalgorithmen so erhalten wir wie oben die Transformation Ug , wobei das Hilfsqubit |yi ebenfalls als |−i präpariert wird. Dann ergibt Ug : |xi|yi 7→ |xi|y ⊕ g(x)i auf |xi die Transformation RN . Wir benutzen ein zu der Black Box analoges Bauteil, um uns ein Zwischenergebnis berechnen zu lassen. 4.3.3. Laufzeit des Grover-Algorithmus Die große Frage ist jetzt: Wie oft müssen wir die Grover-Iteration ausführen, bis die Amplitude von x̂ ihren höchsten Wert erreicht hat? Erst dann sollte gemessen werden, um möglichst sicher das richtige Ergebnis zu messen. Die Anzahl an Iterationen, die maximale Amplitude von x̂ garantiert heißt im folgenden G(N ). Sie hängt nur von der Größe des Raumes ab. Um G(N ) zu bestimmen, betrachten wir die Auswirkung der Grover-Iteration geometrisch. Mit N −1 1 X |xi |si = √ N x=0 gilt −DN Uf = IN − 2|sihs | und = IN − 2|x̂ihx̂ |. Die Groveriteration ist also eine Drehung, die sich auf zwei Spiegelungen zurückführen lässt. Wie eine dieser Spiegelungen zustande kommt verdeutlicht die Abbildung 4.6. Dass wir hier −DN haben und nicht die gewünschte Transformation lässt sich kompensieren, indem wir nicht um |x̂i drehen, sondern um |x̂⊥ i, dieser Wechsel ändert das Vorzeichen und verkleinert die auftretenden Drehwinkel. |si hs | xi |xi 2 · hs | xi |xi − 2 · hs | xi · |si Abbildung 4.6.: Die Wirkungsweise der Spiegelung −DN , der Spiegelung eines Vektors |xi an der Hyperebene die auf |si senkrecht steht. In jedem Iterationsschritt liegen die Vektoren |x̂⊥ i und |si den Spiegelungen zugrunde, so dass jeder Schritt zwei Spiegelungen in der von |x̂⊥ i und |si aufgespannten Ebene bedeuten. 36 4.3. Grovers unstrukturierte Datenbanksuche Die Drehung hängt immer von dem von |x̂⊥ i und |si eingeschlossenen Winkel ab. Dieser ergibt sich aus cos α = hx̂⊥ | si beziehungsweise N −1 1 X sin α = hx̂ | √ xi N x=0 = = Für großes N gilt arcsin √1N ≈ N −1 1 X √ hx̂ | xi N x=0 1 √ . N √1 . N Nach m Iterationen haben wir insgesamt um den √ Winkel (2m+1) √1N gedreht. Das heißt, dass für m = π4 N der Drehwinkel π2 + √1N erreicht ist. Für große N sollten wir also hinreichend nahe an |x̂i angelangt sein. Dann gilt für die Anzahl nötiger Iterationen G(N ) ≈ √ π√ N =O N . 4 Um die Komplexität des Algorithmus zu bestimmen, betrachten wir die einzelnen Gatter: Das Orakel Uf zählt als ein Gatter. Die Transformation −RN benötigt log N lokale Gatter. Jeder Iterationsschritt ist also mit O (log N ) Gattern realisierbar, also hat der gesamte Schaltkreis die Größe √ O log N · N . 4.3.4. Implikationen für die Komplexitätstheorie Eine der wichtigsten Fragen die mit dem Quantum Computing aufgekommen sind, ist, ob sich N P -vollständige Probleme mit Quantencomputern effizient lösen lassen. Gilt also für die Quantenkomplexitätsklasse BQP , dass N P ⊂ BQP ? Das Ergebnis des Grover-Algorithmus zusammen mit dem folgenden Satz ergibt leider ein sehr ernüchterndes Bild. Satz 4.2 Kein Quantenalgorithmus zur Datenbanksuche kommt mit weniger als O kanfragen aus. In diesem Sinne ist Grovers Algorithmus optimal. [32] √ N Datenban- Man kann jedes N P -vollständige Problem in eine Datenbanksuche über die Ergebnisse umwandeln, indem man ein Orakel konstruiert, das eine Testfunktion realisiert, ob diese Eingabe eine Lösung des Problems ist. Aber die eben ermittelte quadratische Beschleunigung reicht nicht, um einen exponentiellen Algorithmus effizient zu machen. 37 4. Wichtige Quantenalgorithmen 4.4. Shors Faktorisierung Das wohl aufsehenserregendste Ergebnis in der kurzen Geschichte des Quantum Computing ist der Faktorisierungsalgorithmus von Shor [51]. Dieser liefert eine Möglichkeit effizient eine beliebige Zahl in ihre Primfaktoren zu zerlegen. Da heutzutage in der Kryptographie viele Verschlüsselungsverfahren, zum Beispiel die RSA-Verschlüsselung, auf der Annahme beruhen, dass dies nicht effizient möglich ist, kommt dem Algorithmus eine besondere Bedeutung zu, da mit einer praktikablen Realisierung des Quantencomputers diese kryptographischen Verfahren auf einen Schlag unsicher würden. Shors Faktorisierungsalgorithmus basiert auf einem Quantenalgorithmus, der die Periode einer Funktion bestimmt. Dazu wird die Quantenfouriertransformation genutzt. Hat man erst einmal die Möglichkeit, effizient die Periode einer Funktion, beziehungsweise die Ordnung eines Elements zu bestimmen, so kann man einen effizienten klassischen Algorithmus angeben, der eine Zahl faktorisiert. 4.4.1. Mathematische Grundlagen Periode In diesem Abschnitt werden einige Begriffe und Sätze gebraucht, die hier kurz wiedergegeben werden sollen. Definition 4.17 Die Periode einer Funktion f ist die kleinste Zahl p, für die gilt: f (x + p) = f (x) ∀x ∈ Df Ordnung Definition 4.18 Die Ordnung einer Zahl ist die kleinste Zahl p, für die gilt: ap ≡ 1 mod (n) Satz 4.3 Ist n ∈ Z ungerade und keine Primpotenz, so gilt für mindestens die Hälfte der Zahlen a in {0, . . . , n − 1}, die mit n teilerfremd sind: die Periode p der Funktion f (x) = ax mod (n) ist gerade, und n teilt ap/2 + 1 nicht. 4.4.2. Klassischer Hauptalgorithmus Der klassische Algorithmus wird später einen Quantenalgorithmus aufrufen, der die Periode eines Elements effizient berechnen kann. Hier wollen wir erst einmal davon ausgehen, dass wir das bereits können. Eingabe: eine ungerade ganze Zahl n, die keine Primpotenz ist Ausgabe: ein echter Teiler von n GS1: Wähle zufällig eine Zahl a aus {2, . . . , n − 1}. 38 4.4. Shors Faktorisierung GS2: z ← ggT(a, n). Falls z 6= 1: Ausgabe z. Abbruch. GS3: Ermittle die Periode p von ax mod (n). GS4: Falls p ungerade ist: Beginne wieder mit GS1. GS5: Ermittle ggT(ap/2 + 1, n) und ggT(ap/2 − 1, n) Hat sich kein echter Teiler ergeben, beginne erneut mit Schritt 1. Sonst: Ausgabe z. 4.4.3. Analyse des klassischen Algorithmus Angenommen, wir haben die Möglichkeit, die Ordnung p eines Elements a effizient zu bestimmen: ap ≡ 1 mod (n). Damit wissen wir: ap = 1 + k · n für ein k mit ap − 1 = (ap/2 − 1)(ap/2 + 1) ⇒ k · n = (ap/2 − 1)(ap/2 + 1) Man kann zeigen, dass (ap/2 − 1) kein Vielfaches von n ist. Der ggT(ap/2 + 1, n) oder ggT(ap/2 − 1, n) ergeben einen echten Teiler von n, außer (ap/2 − 1) ist mit n teilerfremd, und (ap/2 +1) ist ein Vielfaches von n. Nach Satz 4.3 ist dieser Fall jedoch unwahrscheinlich. Ist n ungerade und nicht die Potenz einer Primzahl (n 6= pk , für p Primzahl), so führt dieser Algorithmus mit Wahrscheinlichkeit größer 1/2 beim ersten Versuch zum Erfolg. 4.4.4. Laufzeit des klassischen Shor Im Verlauf des klassischen Algorithmus sind der Euklidische Algorithmus zur Bestimmung des ggT sowie die Berechnung von ap/2 mod (n) die aufwendigsten Operationen. Sie können beide in O (log n)3 erledigt werden [32]. Die erwartete Laufzeit beträgt X k · O (log n)3 = O (log n)3 k 2 k≥1 4.4.5. Shors Quantenalgorithmus Nun müssen wir noch effizient die Ordnung eines Elements bestimmen können. Der dazu nötige Quantenalgorithmus basiert zum großen Teil auf der Quantenfouriertransformation. Leider ist die Darstellung derselben äußerst umfangreich, so dass hier nur auf die umfassende Darstellung in [32] verwiesen sei. Wir benötigen ein 2N -Quantenregister R = |xi ⊗ |yi, dessen Größe N eine Zweierpotenz der Größenordnung des Quadrats der zu faktorisierenden Zahl ist. Eingabe: Eine Funktion f : {0, . . . , N − 1} → {0, . . . , N − 1} mit Periode p in Form eines Quantenorakels. Uf : |xi ⊗ |yi 7→ |xi ⊗ |y ⊕ f (x)i Ausgabe: Wenn p|N wird j · N/p für ein j ausgegeben. Wenn p6 | N so wird nur etwas in der Nähe von j · N/p ausgegeben. 39 4. Wichtige Quantenalgorithmen GS1: Präpariere R = |xi|yi ← |0 . . . 0i|0 . . . 0i GS2: R ← (HN ⊗ idN )R GS3: R ← Uf R GS4: Messe Register |yi. GS5: R ← (QFTN ⊗ idN )R GS6: Messe |xi und gib den Inhalt aus. |0i H QFT |0i M H |0i f M |0i Abbildung 4.7.: Schaltkreis für den Quantenteil des Shor-Algorithmus. Dass die Ausgabe des Algorithmus nicht direkt die gesuchte Periode p ergibt, ist nicht tragisch, da man sie sehr leicht klassisch aus der Ausgabe berechnen kann, indem man sich des Verfahrens der Näherungsbrüche bedient (siehe [23]). Da der Algorithmus garantiert, dass das Ergebnis schon nahe an der gesuchten Zahl liegt, führt dieses Verfahren mit hoher Wahrscheinlichkeit zur wirklichen Periode. 4.4.6. Analyse des Quantenalgorithmus von Shor Sehen wir uns die Entwicklung des Zustands von R im Verlauf der Berechnung an: R = HN ⊗id −→ Uf → |xi|yi ← |0 . . . 0i|0 . . . 0i N −1 1 X √ |ii|0 . . . 0i N i=0 N −1 1 X √ |ii|f (i)i = |φi N i=0 Wenn nun |yi gemessen wird, so wird mit der Wahrscheinlichkeit 1/N eines eines der |ii gemessen. Zum einen ist dieser Zustand durch die Messung bekannt, zum anderen befindet sich R tatsächlich mit seiner zweiten Hälfte im Zustand |f (i)i. Da die Amplituden aller |ji 40 4.4. Shors Faktorisierung für j 6= i verschwunden sind, liegen in der ersten Hälfte von R, |xi, nun die ganzen Urbilder von |f (i)i mit gleicher Amplitude vor. Wir wissen, dass f die Periode p hat. also haben die Urbilder die Form |ki, |k + pi und so weiter. Es seien A viele verschiedene Urbilder. Sei nun erst einmal N ein Vielfaches von p. Dann ist A = N/p. Dann befindet sich R nach der Messung also im Zustand: |φi 1 √ (|ki + |k + pi + · · · + |k + (A − 1)pi) , A Messen von |yi −→ wobei diese Darstellung nicht ganz korrekt ist, da die Zustände noch bezüglich mod (N ) zusammengefasst sind. Das Messergebnis ist also A−1 1 X √ |k + j · p A j=0 mod (N )i|f (k)i. Der nächste Schritt sieht nun die Anwendung der Quantenfouriertransformation vor. Sie fasst, grob gesprochen, einen Vektor als Koeffizientendarstellung eines Polynoms auf, und bestimmt dessen Entwicklung bezüglich periodischer Funktionen. Der resultierende Vektor enthält nun die Frequenzanteile des Polynoms. Definition 4.19 Auf dem Basisvektor |ji ∈ {|0i, . . . , |N − 1i} wirkt die Quantenfouriertransformation QFTN folgendermaßen: N −1 1 X j·i QFTN |ji = √ ωN |ii, N i=0 l die l-te N -te Einheitswurzel e2πl/N bezeichnet. wobei ωN Wir erhalten also in R: QFTN (|xi) −→ = N −1 A−1 1 X X (k+j·p)·w √ |wi|f (k)i ω N A w=0 j=0 N A−1 N −1 1 X k·w X j·p·w √ ωN |wi|f (k)i ωN N A w=0 j=0 k·w lediglich die Phase. Sie beeinflusst die WahrWie man sieht, verschiebt der Faktor ωN jpw jw scheinlichkeit nicht, bei einer Messung |wi zu erhalten. Es ist außerdem noch ωN = ωA , da wir A = N/p angenommen hatten. Also messen wir |wi mit der Wahrscheinlichkeit: 1 0 (A−1)pw 2 py P (w) = ω + ωN + · · · + ωN NA N 1 0 (A−1)w 2 y = ωA + ωN + · · · + ωN NA jw A )hj = 1. Also ist auch = (ωA Für den Fall, dass nun w = h · A ist, gilt ωA P (w) = A 1 1 2 A = = NA N p 41 QFTN 4. Wichtige Quantenalgorithmen (A−1)pw 0 + ω py + · · · + ω Ist nun w kein Vielfaches von A, so ist P (w) = 0, da die Summe ωN N N alle N -ten Einheitswurzeln genau einmal enthält und diese sich zu Null addieren. Im Fall p|N erhalten wir sicher ein richtiges Ergebnis. Für den Fall p6 | N ist es leider jpw nicht so einfach. Der Trick, ωN als A-te Einheitswurzel auszudrücken, klappt nun nicht. Allerdings kann man zeigen, dass unser Ergebnis bereits so nahe bei dem gesuchten Wert liegt, dass die Näherungsbrüche uns mit hoher Wahrscheinlichkeit die gesuchte Periode geben. 4.4.7. Laufzeit des quantischen Shor Hadamardtransformation und Quantenfouriertransformation werden auf 2 log n Quantenbits ausgeführt. Damit ist die Hadamardtransformation mit 2 log n und die Quantenfou 2 riertransformation mit O (log n) Gattern realisierbar. Die modularen Potenzen lassen 3 Gattern realisieren. Daraus folgt eine Gesamtlaufzeit von sich klassisch mit O (log n) O (log n)3 für den Quantenteil. Allerdings fehlt noch die Ermittlung der genauen Periode, für den Fall, dass der Quantenalgorithmus nur einen approximativen Wert ausgegeben hat. Die Methode der Näherungsbrüche liefert uns den wahren Wert leider nurmit einer Erfolgswahrscheinlichkeit von ≈ 1/(20 log log n) in einer Laufzeit von O (log n)3 . Diese Ergebnisse zusammengefasst, liefern nun die erwartete Gesamtlaufzeit von Shors Algorithmus O log log n · (log n)3 = O (log n)4 . 42 Teil II. Brechen klassischer Verschlüsselung mit Quantenalgorithmen 43 Überblick Das aufsehenserregendste Ergebnis des Quantum Computing ist der Faktorisierungsalgorithmus von Shor, der im letzten Abschnitt 4.4 besprochen wurde. Er hat weitreichende Konsequenzen, da eine Aufgabe gelöst wird, von deren Unlösbarkeit lange ausgegangen wurde, und sogar sich technisch darauf verlassen wurde. Zum Beispiel basiert das RSAVerfahren auf der Annahme, dass man große Zahlen nur sehr mühsam faktorisieren kann. Sollte nun ein Quantencomputer gebaut werden, der auf einer realistischen Bitbreite rechnen kann, so würden all diese Verfahren über Nacht nutzlos. Dies wirft die Frage auf, wie es denn mit anderen Möglichkeiten aussieht, seine Datenübertragung vor unbefugtem Zugriff zu sichern. Bis auf wenige Ausnahmen wie zum Beispiel One-Time-Pads, wo Bücher voller ausgewürfelter Bits direkt ausgetauscht werden müssen, die für den alltäglichen Gebrauch viel zu aufwendig sind, basieren alle kryptographischen Verfahren auf Annahmen, dass ein bestimmtes, meist zahlentheoretisches, Problem, wie obige Faktorisierung, nicht effizient lösbar ist. In diesem Teil soll das Fiat-Shamir Protokoll, ein praktikables Verifizierungsverfahren, auf Angriffe mit einem Quantencomputer getestet werden. Das Verfahren selber soll in Kapitel 5 beschrieben werden. Leider, oder für die Benutzer des Protokolls, zum Glück, ist es mir nicht gelungen einen effizienten Angriff zu entwickeln. Dafür liefern die Versuche eine gute Beschreibung der möglichen Ansatzpunkte eines Quantenalgorithmus. In Kapitel 6 wird ein direkter Ansatz vorgestellt, der aber nicht die nötige Beschleunigung liefert um effizient zu sein. Kapitel 7 bespricht dann die Möglichkeit tiefe Erkenntnisse aus der Algebra und Gruppentheorie in einen Quantenalgorithmus einfließen zu lassen. Das Ende dieses Teils ist offen gehalten, da eine vollständige Betrachtung der algebraischen Situation den Rahmen dieser Arbeit sprengen würde. 45 46 5. Fiat-Shamir Code Ein wichtiger Teilbereich der Kryptographie sind neben Verschlüsselungsverfahren, mit denen Daten vor fremdem Zugriff geschützt werden, Verifizierungsverfahren. Diese erlauben die Identität des Kommunikationspartners zu sichern, wobei nur ein unsicherer Kanal für die Übermittlung zur Verfügung steht. Dies wird im Fall des Fiat-Shamir Protokolls [20] mit dem Prinzip des Zero-Knowledge realisiert. Auch wenn der Grad an Sicherheit des Verfahrens umstritten ist [24], ist es praktisch relevant. Die zugrunde liegende Idee dabei ist, dass ein Prover einen Verifier überzeugt, im Besitz eines Geheimnisses zu sein. Dieses kann zum Beispiel seine Identität eindeutig beweisen. Dieser Vorgang soll allerdings vonstatten gehen, ohne das Geheimnis preisgeben zu müssen, da dann ja sowohl der Verifier, wie auch jeder Lauscher an der Leitung in der Lage wären, sich für den Prover auszugeben. Das Fiat-Shamir Protokoll stützt sich nun auf die Annahme, dass es (noch) keine effiziente Möglichkeit gibt, Quadratwurzeln in einem Restklassenring zu berechnen. Dazu wird vom Prover eine Quadratzahl v veröffentlicht. In Abhängigkeit von Anfragen des Verifiers und eines pro Kommunikationszyklus zufällig gewählten Elements wird dem Verifier eine Zahl übermittelt, in die die Wurzel von v eingewoben ist. Dieser kann nun testen, ob er v wiederfindet, nachdem er die erhaltene Zahl bestimmt manipuliert hat. Um das Protokoll mit seinen Eigenheiten einzuführen, wird Abschnitt 5.1 ZeroKnowledge besprechen, im darauffolgenden Abschnitt 5.2 soll das Verfahren detailliert vorgestellt werden. Abschließend bespricht Abschnitt 5.3 die Sicherheit des Verfahrens indem bewiesen wird, dass sich die Berechnung von Wurzeln in Restklassenringen auf die Faktorisierung zurückführen lässt. 5.1. Zero-Knowledge Beweise Wenn von Kryptographie die Rede ist, wollen sich traditionell Alice und Bob unterhalten, ohne dass Eve mithören kann. Diese Personen sollen auch hier kommunizieren. Alice hat Informationen, die für Bob bestimmt sind, aber nicht für Eve. Die meisten herkömmlichen Kryptographieverfahren haben das Problem, dass Alice einen Schlüssel an Bob weitergeben muss, mit dem dieser die von Alice verschlüsselten Daten wieder lesbar machen kann. Gerät der Schlüssel nun in die Hände von Eve, so kann diese ohne weiteres die Informationen erhalten, nämlich auf dieselbe Art und Weise, wie es Bob möglich sein soll, aus der chiffrierten Nachricht den Klartext zurückzugewinnen. Dies ist bei den in den achtziger Jahren entwickelten Zero-Knowledge Beweisen [25] nicht der Fall. Sie sind aber nicht so sehr zum Datenaustausch geeignet, sondern eher dazu, einen Beweis zu führen, ohne seine Durchführung Schritt für Schritt preiszugeben. Dies ist zum Beispiel dann wichtig, wenn mit dem Verfahren, das der Beweis benutzt, viel Geld verdient werden kann. 47 5. Fiat-Shamir Code Um die Idee hinter Zero-Knowledge Beweisen zu vermitteln, ist folgendes Beispiel am geeignetsten: Angenommen, Alice habe das Rezept für den Stein der Weisen. Sie wäre sehr dumm, es zum Patentamt zu tragen, um es dort registrieren zu lassen, da schon bald der Patentbeamte alle Bleileitungen des Gebäudes vergoldet hätte, kurze Zeit später kein Blei mehr auf der Welt existieren würde, und der Goldpreis so sehr gefallen wäre, dass sich niemand mehr für einem Stein der Weisen interessieren würde. Allerdings ist es nicht so einfach, ein Patent anzumelden, ohne dem Amt den Beweis vorzulegen, dass man wirklich ein entsprechendes Verfahren beherrscht. Dem Beamten einfach für jeden Bleiklumpen ein Stück Gold zu geben mag im Einzelfall zu einer Patenteintragung führen, ist noch kein endgültiger Beweis für die Existenz des Steins der Weisen. Also muss Alice sich etwas Raffinierteres einfallen lassen, um das Patentamt zu überzeugen. Beim Zero-Knowledge geht es nun darum, dass Alice Bob überzeugt, etwas zu können oder zu wissen, ohne dass sie ihm verrät, wie es geht. Bob ist dabei gar nicht so sehr die vertrauensunwürdige Person, sondern es ist vielmehr der Vorgang, ihm das Geheimnis anzuvertrauen, der anfällig ist für Angriffe von Eve. Deswegen ist das Entscheidende der Verfahren die Zero-Knowledge-Eigenschaft, die besagt, dass Eve nichts über das Geheimnis erfahren kann, wenn sie Alice und Bob beim Überzeugungsprozess zusieht. Ein Teil der Zero-Knowledge Protokolle basiert auf einem Dialog von Alice und Bob, sie werden interaktive Verfahren genannt. Dabei stellt Bob Aufgaben an Alice, die diese nur bearbeiten kann, wenn sie das Geheimnis tatsächlich kennt. Bob muss dabei die Aufgaben so stellen, dass Alice die Antworten nur raten kann, wenn sie nicht im Besitz der Information ist, so dass sich die Fehlerwahrscheinlichkeit, dass sie richtig antwortet, obwohl sie das Geheimnis nicht kennt, mit jeder richtigen Antwort auf Bobs Nachfragen halbiert. Damit kann Bob in annehmbarer Zeit praktisch sicher sein. Mathematisch kann man natürlich nicht von einem Beweis sprechen, da dieser, zumindest theoretisch, vom Leser nachvollzogen können werden muss. Zero-Knowledge Verfahren müssen nicht nur durchführbar sein, dass heißt, dass Alice die Aufgabe von Bob auch erfüllen kann, und die Zero-Knowledge Eigenschaft haben, das heißt, dass ein Simulator in der Lage sein muss, in Polynomialzeit einen Beweis nachzustellen, der von Eve nicht vom Originalvorgang unterschieden werden kann, sondern auch noch korrekt sein, Alice darf keine Chance haben, eine der Aufgaben von Bob mit einer größeren Wahrscheinlichkeit als 1 2 richtig zu lösen, wenn sie das Geheimnis nicht kennt. Die Verbindung von Komplexitätstheorie und Zero-Knowledge Verfahren besteht darin, dass jeglicher Algorithmus in NP leicht zu einem Zero-Knowledge Verfahren ausgebaut werden kann [8]. Sollte also jemand die effiziente Berechnung eines in NP liegenden Problems gefunden habe, so kann er dies in Zero-Knowledge Beweisform der Welt mitteilen, da diese nicht in der Lage ist, schnell genug nachzurechnen. Im folgenden Abschnitt soll es nun um ein spezielles, technisch auch realisiertes, interaktives Zero-Knowledge Verfahren gehen. Das Fiat-Shamir-Verfahren, nach seinen Entwicklern benannt [20], wird unter anderem im VideoCrypt-Protokoll von Pay-TV Decodern benutzt, um sich dem Sender zu authentifizieren, ohne einen Schlüssel zu verschicken. Dieser könnte leicht abgefangen, und dazu benutzt werden, von einem beliebigen Gerät aus den Empfang freizuschalten. Hier ist also Alice der Decoder, der den gekauften Chipschlüssel besitzt, Bob der Sender des Programms, das es zu bezahlen gilt und Eve wäre der Kunde des Senders, der seinen Schlüssel einem Freund zur Verfügung stellen möchte. 48 5.2. Fiat-Shamir Protokoll 5.2. Fiat-Shamir Protokoll Das Zero-Knowledge Beweisverfahren von Fiat und Shamir [20] beruht auf der Annahme, dass es sehr schwer ist, in der multiplikativen Gruppe des Restklassenrings Z∗n , Quadratwurzeln zu berechnen. Alice besitzt also die geheime Quadratwurzel einer veröffentlichten Zahl aus Z∗n und kann Bob davon überzeugen, ohne ihm die Wurzel zu offenbaren. Durch die relativ einfachen Berechnungen, die im Laufe des Protokolls vollführt werden müssen, wird dieses Verfahren für Authentifizierungsaufgaben anwendbar, wie zum Beispiel am Geldautomaten, wo nichts über die Person herausgefunden werden muss, außer ihre Identität. Zur Datenübertragung beziehungsweise -verschlüsselung eignet es sich hingegen nicht. Als erstes muss Alice einen Schlüssel generieren. Dazu denkt sie sich zwei große Primzahlen p und q aus und veröffentlicht deren Produkt n = p · q. Das ist nötig, um den Ring Z∗n zu bestimmen, in dem gerechnet wird. Die Zahl, die ihr die eindeutige Authentifizierung gegenüber Bob ermöglicht, ist eine weitere Zahl s, deren Quadrat v ≡ s2 mod (n) wiederum veröffentlicht wird. Die Zahl v benutzt Bob, um zu testen, ob Alice s wirklich kennt. Das Fiat-Shamir Protokoll sieht folgendermaßen aus (Darstellung nach [39]): Alice wählt zufällig eine Zahl y ∈ Z∗n , bildet x ≡ y 2 mod (n) und sendet x an Bob. Bob wirft eine Münze und sendet das erzeugte Zufallsbit b an Alice. y falls b = 0 Alice antwortet mit z = y · s mod (n) falls b = 1 z 2 mod (n) = x falls b = 0 Bob testet nun ob 2 z mod (n) = x · v mod (n) falls b = 1 ⋆ ⋆ ⋆ ⋆ Wenn dieser Vorgang m mal durchgeführt wird und Bobs Tests immer wahr ergeben haben, kann Bob sagen, dass die Wahrscheinlichkeit, dass Alice s nicht kennt, unter 21m liegt. Satz 5.4 Das Fiat-Shamir Protokoll ist ein Zero-Knowledge Verfahren. Beweis Durchführbarkeit Alice kennt sowohl s wie auch y, so dass sie Bobs Anfragen richtig beantworten kann. Korrektheit Eve, die s nicht kennt, kann auf Bobs Anfrage nicht antworten, wenn er das Bit 1 sendet. Aber sie kann in jedem der beiden Möglichkeiten für Bobs Bit entsprechende Vorkehrungen treffen und Bob ein geschummeltes x übermitteln. Deswegen ist die Interaktivität der Beweisform sehr wichtig. Wenn Eve nicht vorhersehen kann, welches Bit Bob schickt, kann sie nur mit Wahrscheinlichkeit 21 seine Anfrage korrekt beantworten. Wenn Eve annimmt, dass Bob das Bit 0 schickt, braucht sie nicht viel zu tun, da sie s dafür nicht benötigt. Sollte sie aber b = 1 antizipieren, so bildet sie Anfangs x = y 2 v −1 mod (n). Sollte Bobs Anfrage wie erwartet 1 sein, schickt sie z = y und Bob stellt fest, 49 5. Fiat-Shamir Code dass z 2 ≡ y 2 ≡ y 2 v −1 v ≡ xv mod (n) ist. Sollte Bobs Anfrage aber b = 0 sein, so müsste Eve s kennen, um seine Anfrage zu bearbeiten. Zero-Knowledge-Eigenschaft Eine beobachtende Eve kann keine Informationen aus dem Gesehenen ziehen, da ihr die Möglichkeit fehlt, die Anfragen von Bob zu steuern, beziehungsweise nachzuprüfen, ob diese nicht abgesprochen wurden. Der für einen formalen Beweis nötige Argumentationsweg ist, dass Eve durch eine Videoaufzeichnung des Vorganges niemand anderes in der Art überzeugen kann, wie Alice es getan hat. Jeder wäre in der Lage, eine Videoaufnahme zu generieren, die durch nichts von der Originalsequenz unterscheidbar wäre. 2 5.3. Sicherheit des Fiat-Shamir Verfahrens Um den Sicherheitsgrad des Fiat-Shamir-Protokolls abschätzen zu können, hilft folgender Satz: Satz 5.5 Sei n = p · q, p 6= q prim. Dann ist das Berechnen von Quadratwurzeln tens so schwierig, wie das Faktorisieren von n. mod (n) mindes- Beweis Angenommen, wir haben eine Möglichkeit, effizient Wurzeln in Z∗n zu berechnen. Wähle b1 ∈ Z∗n zufällig und bilde a = b21 mod (n). Bestimme eine Wurzel b2 von a. Da n das Produkt zweier Primzahlen ist, hat a genau vier Quadratwurzeln nach dem Gaußschen Reziprozitätssatz [14]. Diese sind {x, n − x, y, n − y}. Mit Wahrscheinlichkeit 12 erhalten wir b1 oder n − b1 . Dies nützt uns nichts, also starten wir nochmal und würfeln ein neues b1 aus. Im Mittel sollten wir nach dem zweiten Versuch ein b2 6∈ {b1 , n − b1 } erhalten haben. Nun gilt in Z∗n aber (b1 + b2 )(b1 − b2 ) ≡ b21 − b22 ≡ a − a ≡ 0 mod (n) das heißt, dass p und q das Produkt (b1 + b2 )(b1 − b2 ) teilen. Jetzt muss also nur noch der ggT(n, b1 + b2 ) berechnet werden und wir haben einen Teiler von n und damit auch den zweiten. 2 Um die Frage, wie leicht das Protokoll mit Hilfe eines Quantenalgorithmus angegriffen werden kann, wird in den nächsten zwei Kapiteln dieses Teils besprochen. Beide beschäftigen sich mit der Frage, ob die Berechnung von Quadratwurzeln mit Hilfe eines Quantencomputers effizient zu bewerkstelligen ist. Anfangs soll ein naiver Ansatz besprochen werden, der leider nicht zum Ziel führt, da er sich auf die Datenbanksuche zurückführen lässt, deren quadratische Beschleunigung nicht ausreicht, die Berechnung effizient zu machen. Danach wird die Richtung aufgezeigt, in die eine umfassende Behandlung des Problems gehen müsste. Dieser Ansatz führt aber sehr schnell in solche Tiefen der Darstellungstheorie, dass eine Behandlung im Rahmen dieser Arbeit nicht möglich ist. 50 6. Direkter Ansatz Wenn man sich die Quantenalgorithmen aus Kapitel 4 ansieht, ist man versucht, die Aufgabe der zu findenden Wurzeln geradeheraus anzugehen. Dies soll hier in diesem Kapitel beschrieben werden, wobei, damit sei der Schluss dieses Kapitels vorweggenommen, die Grenzen des Quantum Computing noch einmal an eigenen Leibe erfahren werden können. Die Idee ist so naheliegend wie einfach. Es wird eine Superposition erzeugt, die sowohl alle Zahlen wie deren Quadrate in verschränkter Form enthält. Das weitere Vorgehen ähnelt dem Algorithmus von Grover aus Abschnitt 4.3. Dies war mir allerdings bei der anfänglichen Konstruktion nicht klar. Die Fragestellung ist wie gehabt. Wir haben eine Quadratzahl v ∈ Z∗n , wobei n = p · q das Produkt zweier Primzahlen ist. Die Gleichung s2 = v hat demnach vier Lösungen für s. Wir erstellen uns ein Quantenregister in dem alle Zahlen aus Z∗n mit ihren Quadraten verschränkt sind. Nun gilt es noch die Anteile von v herauszufiltern. Dazu benötigen wir eine Funktion fv , die auf Gleichheit mit v testet, also genau dann fv (x) = 1 ist, wenn x = v. Diese Funktion ist direkt über das Skalarprodukt h· | ·i in H gegeben. Wenn man diese Funktion nun so benutzt, wie die Datenbankfunktion im Algorithmus von Grover, bekommt man bei den richtigen vier Einträgen ein negatives Vorzeichen in der Amplitude und kann die normale Amplitudenverstärkung nutzen. |xi |yi |xi A |y ⊕ x2i Abbildung 6.1.: Bauteil A für die unitäre Berechnung eines Quadrats. Seien |xi, |yi n-Qubitregister. Wir betrachten ein (2n + 1)-Qubitregister R = |x, y, zi, das anfangs auf den Zustand |0, 0, −i präpariert wird. Die auftretenden Transformationen sind die Hadamardtransformation Hn auf einem n-Qubitregister, die Transformation A, die die Quadrate von |xi nach |yi schreibt, A|x, y, −i = |x, y ⊕ x2 , −i und die Transformation, die die Funktion fv realisiert, wobei fv (y) = hy|vi Uf : |yn−1 , ..., y0 , bi 7→ |yn−1 , ..., y0 , b ⊕ fv (y)i In Abbildung 6.2 ist der Schaltkreis der Berechnung angegeben. 51 6. Direkter Ansatz |0i H |0i |φi A |−i U fv Abbildung 6.2.: Schaltkreis für den wesentlichen Teil des Algorithmus zur Berechnung einer Quadratwurzel in Z∗n . Die zwei oberen Leitungen fassen je einen nQbitregister zusammen. Die gestrichelte Box ist die Stelle der Amplitudenverstärkung, da in dem Fall die Transformation Ufv wiederholt angewendet werden muss. Das Ergebnis Ausführung P der zweiten LeitungPbei einmaliger n−1 2 −n/2 von Ufv ist |φi = 2 i2 =v |i, v, −i , siehe Anai=0, i2 6=v |i, i , −i − lyse. 6.1. Algorithmus für das Wurzelziehen in Restklassenringen GS1: R = |x, y, zi ← |0, 0, −i GS2: |xi ← Hn |xi GS3: R ← AR GS4: R ← Ufv R GS5: ausreichend häufige Amplitudenverstärkung GS6: Messe |xi. 6.2. Analyse des Algorithmus Die Zwischenschritte der Berechnung sind |0, 0, −i Hn |xi 7−→ A 7−→ U fv 7−→ = n−1 1 X √ n |i, 0, −i 2 i=0 n−1 1 X |i, i2 , −i √ n 2 i=0 n−1 1 X 2 (−1)fv (i ) |i, i2 , −i √ n 2 i=0 n−1 X X 1 2 = |φi |i, i , −i − |i, v, −i √ n 2 i=0 i2 =v i2 6=v 52 6.2. Analyse des Algorithmus Die Amplitude der Wurzeln von v ist negativ, die restlichen Amplituden sind alle positiv. Analog zum Vorgehen in Grovers Amplitudenverstärkung lassen sich nun die Wahrscheinlichkeiten, bei einer Messung von |xi eine der Wurzeln von v zu messen erhöhen. Prinzipiell lassen sich mit diesem Konzept nun Wurzeln in Restklassenringen berechnen. Aber wie wir bereits im Zusammenhang mit Grovers Algorithmus in Abschnitt 4.3 besprochen haben, sind wir tatsächlich dem Irrweg aufgesessen, aus unserem Problem eine Datenbanksuche zu konstruieren. So attraktiv dies auch ist, so haben wir doch zu einer exponentiell großen Datenbank nur eine quadratische Beschleunigung. Dieser Ansatz ist nicht effizient. Deswegen seien hier auch alle Detailfragen, wie genau die Transformationen A und Ufv zu realisieren sind, dahingestellt. Es würde uns eh nichts nützen. Aus dieser Erkenntnis heraus fasst das nächste Kapitel das Problem noch einmal von einer ganz neuen Seite an. Man kann die Suche nach der Quadratwurzel als Suche nach einer versteckten Untergruppe auffassen, und diese mit Hilfe einer verallgemeinerten Quantenfouriertransformation berechnen, siehe zum Beispiel [37]. 53 6. Direkter Ansatz 54 7. Algebraischer Ansatz Wie das letzte Kapitel gezeigt hat, ist es nicht immer möglich, obwohl sich das Quantum Computing noch in der Pionierphase befindet, mit einem naiv-direkten Ansatz ein schweres Problem mit einem Quantenalgorithmus zu lösen. Es tauchen in der Literatur aber immer wieder Hinweise auf, dass es doch möglich sein sollte, das Fiat-Shamir-Protokoll mit Hilfe eines Quantencomputers zu brechen, zum Beispiel in [13, 28, 29, 36, 38]. Allerdings wurde das nirgends detailliert beschrieben, da die Veröffentlichungen, die sich dem Problem von der gruppentheoretischen, klassisch kryptographischen Seite nähern, sich nicht auf konkrete Protokolle beziehen, sondern eher Klassen von Kryptographiesystemen behandeln. Auf der anderen Seite steht die Behandlung der diskreten Fouriertransformation, beziehungsweise des diskreten Logarithmus mit Quantenalgorithmen, dem sehr viele Veröffentlichungen gewidmet sind. Der Zusammenhang ist in der Suche nach sogenannten versteckten Untergruppen gegeben. Dieser Suche entspricht das Bestimmen der Quadratwurzeln um das Fiat-ShamirProtokoll zu brechen. Dieses Kapitel beschränkt sich darauf, kurz die jeweilige Literatur vorzustellen, in der die Hinweise zu finden sind und die besprochenen Probleme zu definieren. Aus Zeitgründen muss ein konkretes Nachvollziehen der einzelnen Schritte bezogen auf das Finden der Quadratwurzeln in Restklassenringen leider ausbleiben, auch wenn es sehr wünschenswert gewesen wäre. Allerdings liegt die nötige Tiefe der Materie außerhalb des Rahmens dieser Arbeit. In diesem Kapitel wird erst die allgemeine Fouriertransformation und ihre Rolle in den erfolgreichen Quantenalgorithmen in Abschnitt 7.1 besprochen. Abschnitt 7.2 wird die Suche nach einer versteckten Untergruppe definieren und den Zusammenhang zur allgemeinen Fouriertransformation angeben. Abschließend soll in Abschnitt 7.3 erklärt werden, wie dies nun dazu genutzt werden kann, das Fiat-Shamir-Protokoll zu brechen. 7.1. Allgemeine Fouriertransformation Es gibt eine der klassischen diskreten Fouriertransformation übergeordnete Klasse von Fouriertransformationen, die bezüglich einer beliebigen abelschen Gruppe arbeiten. In [36] wird herausgearbeitet, dass alle Quantenalgorithmen, die eine exponentielle Beschleunigung gegenüber klassischer Berechnung liefern, allesamt auf einer Fouriertransformation bezüglich verschiedener Gruppen beruhen. Das sind der Algorithmus von Deutsch [16] und der Algorithmus von Shor [51], die in Kapitel 4 beschrieben wurden, sowie der Algorithmus von Simon [55], der für eine Funktion entscheidet, ob sie bijektiv oder periodisch ist. Dies weist darauf hin, dass auch für unser Problem ein solcher Ansatz der Erfolgversprechendste ist. In der Physik, vor allem in der Signaltechnik, ist die Fouriertransformation eins der wichtigsten rechnerischen Hilfsmittel, da sie eine verlustfreie Übersetzung einer Funktion, von der Zeitdarstellung in die Frequenzdarstellung, beziehungsweise von der Orts- in die 55 7. Algebraischer Ansatz Impulsdarstellung liefert. Durch diesen Trick lassen sich vor allem Faltungen und ähnliches sehr einfach ausrechnen. Diese Form der Fouriertransformation ist aber nur einer ihrer Spezialfälle. Das Konzept eines solch umfassenden Basiswechsels lässt sich verallgemeinern, so dass die Transformation bezüglich einer beliebigen endlichen Gruppe stattfindet. Eine prägnante Beschreibung der allgemeinen Fouriertransformation liefert [34]. Dies wollen wir kurz wiedergeben. Sei G eine endliche Gruppe. Wir schreiben sie multiplikativ, η sei die Ordnung von G. Sei CG die komplexe Gruppenalgebra von G. Sei BZeit = {g1 , . . . , gη } die Standardbasis von P u(g)v(g) sei das natürliche innere Produkt in CG. Die multiplikative CG, und (u, v) = g∈G Darstellung einer Gruppe Fouriertransformation Gruppe der invertierbaren (d × d)-Matrizen mit komplexen Einträgen sei GLd (C). Definition 7.20 Eine komplexe Matrixdarstellung ρ von G ist ein Gruppenhomomorphismus ρ : G → GLd (C). Die Dimension d = dρ heißt Grad oder Dimension der Darstellung ρ. Zwei Darstellungen ρ1 und ρ2 vom Grad d heißen äquivalent, wenn es eine invertierbare Matrix A ∈ GLd (C) gibt, so dass ρ2 (g) = A−1 ρ1 (g)A für alle g ∈ G gilt. Eine Darstellung ρ : G → GLd (C) heißt irreduzibel, wenn es keinen Unterraum von Cd gibt, der invariant unter ρ(g) für alle g ∈ G ist, außer der Null. Die Darstellung ρ heißt unitär, wenn ρ(g) für alle g ∈ G unitär ist. Für jede Darstellung existiert eine äquivalente unitäre Darstellung. Bis auf Äquivalenz gibt es nur endlich viele irreduzible Darstellungen von G. Diese Anzahl sei mit ν bezeichnet, sie ist gleich der Anzahl verschiedener Konjugationsklassen von G. Für die darstellungstheoretischen Sätze siehe [22]. Sei R = {ρ1 , . . . , ρν } eine vollständige Menge nichtäquivalenter, irreduzibler, unitärer Darstellungen von G. Der jeweilige Grad von ρi sei di . Für jede der Darstellungen ρ ∈ R heißt der Vektor ρkl ∈ CG Matrixkoeffizient von R, er definiert sich über den (k, l)-ten Eintrag von ρ(g) für alle g ∈ G. Das innere Produkt zweier Matrixkoeffizienten aus R ist genau dann ungleich Null, wenn sie gleich sind. Für jeden Matrixkoeffizienten ρkl sei bρ,k,l der normalisierte Matrixkoeffizient, und BFrequenz = {bρ,k,l } die Menge der normalisierten Matrixkoeffizienten. Man kann zeigen, dass die Grade di der Darstellungen ρi ∈ R der Pν 2 Relation i=1 di = η genügt. Daraus folgt, dass BFrequenz eine Orthonormalbasis des Vektorraumes CG ist. Definition 7.21 Der lineare Operator FG auf CG, der einen Vektor v ∈ CG in der Standardbasis BZeit auf seine Darstellung v̂ ∈ CG in der Basis BFrequenz abbildet, heißt Fouriertransformation für CG auf R. Jeder Eintrag von v̂ heißt Fourierkoeffizient von v. Die gewöhnliche Fouriertransformation ergibt sich für G = Z2n [17]. Jede Fouriertransformation kann effizient implementiert werden [36, 40]. 7.2. Suche nach der versteckten Untergruppe Die Anwendung der Fouriertransformation in Quantenalgorithmen ist formal gruppentheoretisch gesehen die Suche nach einer versteckten Untergruppe. In diesem Abschnitt soll 56 7.3. Zusammenhang mit dem Fiat-Shamir Protokoll zum einen das Problem definiert werden, wobei sich die Darstellung an [18] anlehnt, zum anderen soll beschrieben werden, wie der Zusammenhang zwischen versteckter Untergruppe und allgemeiner Fouriertransformation aussieht. Definition 7.22 H-periodisch Eine Funktion f auf G mit beliebigem Wertebereich heißt H-periodisch, wenn sie konstant auf den Linksnebenklassen einer Untergruppe H von G ist. Nimmt f auf jeder Nebenklasse einen unterschiedlichen Wert an, so heißt f strikt H-periodisch. Definition 7.23 versteckte Untergruppe Ist f strikt H-periodisch, so heißt H versteckte Untergruppe von G. Definition 7.24 Die Suche nach der versteckten Untergruppe lautet wie folgt: Gegeben ist eine Beschreibung von G und eine Funktion f , die zu einer Untergruppe H strikt H-periodisch ist. Finde eine erzeugende Menge von H. Einen guten Überblick über die Zusammenhänge von der Suche nach versteckten Untergruppen und Quantenalgorithmen, die sich auf eine Fouriertransformation stützen, liefert [41]. Dort wird ein allgemeiner Quantenalgorithmus angegeben, der für die Darstellung einer Gruppe G, welche eine versteckte Untergruppe H beinhaltet, H berechnet, indem die Fouriertransformation bezüglich G benutzt wird. Die Autoren geben außerdem an, dass die so vorgenommene Bestimmung der Untergruppe H nicht immer effizient, in manchen Fällen sogar gar nicht, realisierbar ist. Zum Beispiel ist das Problem der versteckten Untergruppe nicht implementierbar, wenn es sich bei G um eine unendliche Gruppe handelt. Im Einzelfall ist es aber noch möglich, die Berechnung einer irreduziblen Komponente vorzunehmen, die sich dann klassisch in Polynomialzeit auf das vollständige Ergebnis erweitern lässt. 7.3. Zusammenhang mit dem Fiat-Shamir Protokoll Erste Hinweise darauf, dass sich die Quadratwurzelberechnung auf das Ermitteln einer Untergruppe zurückführen lässt, liefert [13]. In dieser Publikation wird ein Überblick über die bestehenden Kryptographieverfahren gegeben, die auf schweren Problemen in quadratischen Zahlkörpern beruhen. Das von uns untersuchte Fiat-Shamir-Protokoll gehört zwar nicht zu dieser Klasse, aber die dort geleistete Arbeit gibt Anhaltspunkte, wie man verfahren kann, um ein ähnlich gelagertes Problem auf die gruppentheoretische Ebene zu bekommen. Der Zusammenhang des Fiat-Shamir-Protokolls und reellen quadratischen Zahlkörpern gibt [29]. In [28] wird ein Polynomialzeitalgorithmus angegeben, der in solchen reellen quadratischen Zahlkörpern Regulatoren errechnet, die wiederum benutzt werden können, um die oben genannten Probleme zu lösen. Eine leichte Variation des Fiat-Shamir-Protokolls existiert, dass auf der Berechnung eines Hauptideals beruht [12]. Diese Variante wird mit dem in [28] angegebenen Polynomialzeit-Quantenalgorithmus gebrochen. 57 hidden subgroup problem 7. Algebraischer Ansatz Im Bezug auf unser Problem ist es aber hilfreicher, sich von der anderen Seite zu nähern, und die versteckte Untergruppe zu identifizieren, die uns die Quadratwurzeln offenbart. Die effiziente Implementierung der Suche kann aber leider nicht angegeben werden. Analog zu der in [41] gegebenen Formulierung des Algorithmus von Grover als Berechnung einer versteckten Untergruppe, können wir nun zumindest formal die Lösung zur Bestimmung der Quadratwurzeln in Restklassenringen angeben. Nehmen wir an, dass wir die Situation aus dem letzten Kapitel haben. Wir haben in einem (2n + 1)-Quantenregister aus Hn ⊗ Hn ⊗ H1 den Zustand |φi = n−1 X 1 X √ n |i, i2 , −i − |i, v, −i . 2 2 i=0 i =v i2 6=v In den ersten n Qubits befinden sich die Zahlen von 1 bis n codiert. Sie befinden sich allesamt in einer gleichgewichteten Superposition. In den zweiten n Qubits befinden sich die Quadratzahlen aus {1, . . . , n}. Sie sind jeweils mit ihren vier Wurzeln verschränkt. Die uns interessierende Gruppenoperation ist Sn , die symmetrische Gruppe auf den Symbolen 1, . . . , n. Sie soll nur auf den zweiten n-Hilbertraum wirken. Die von uns gesuchte Untergruppe ist der Stabilisator Stabv = {g ∈ Sn |g(v) = v} bezüglich |yi = |vi. Wir haben also Invarianz unter der Gruppenoperation ! n−1 n−1 X X ai |g(i)i. ai |ii 7→ Stabv × H → H, g, i=0 i=0 Da die Stabilisatoren in Sn eindeutig den stabilisierten Elementen entsprechen, genügt zur Bestimmung der Quadratwurzel die Ermittlung von Stabv . Wendet man ihn auf obigen verschränkten Zustand an, so stabilisiert er auf dem ersten n-Hilbertraum genau die gesuchten Quadratwurzeln. Diese Erkenntnisse in einen effizient arbeitenden Quantenalgorithmus zu übersetzen ist leider nicht so offensichtlich, wie es an dieser Stelle scheint, da sich in vielen Detailfragen nach konkreten Transformationen Probleme auftun, die man nicht erwartet. Auch die Ausformulierung dieser recht konkreten Punkte ist also leider zurückzustellen. 58 Teil III. Synthese von Quantum Ordered Binary Decision Diagrams aus Quantenschaltkreisen 59 Überblick Eine Richtung, sich mit Quantum Computing zu beschäftigen, ist, den neuen Fundus an algorithmischen Möglichkeiten zu nutzen, um Probleme anzugehen, die klassisch nicht oder nur ineffizient lösbar sind. Dies war die dem letzten Teil zugrunde liegende Motivation. In diesem Teil soll nun Quantum Computing als eigenständiges Rechenmodell betrachtet werden. Die Theoretische Informatik ist zwar, verglichen mit einer Disziplin wie Mathematik oder Physik, ein sehr junges Gebiet, blickt aber doch auf eine lange Entwicklung zurück, in deren Verlauf viele Bereiche sehr detailliert erforscht wurden. Um nun eine möglichst umfassende Beschreibung des Quantum Computing zu bekommen, kann jeder Ansatz aus dem klassischen Computing nach und nach übertragen werden. Durch das Korrespondenzprinzip der Quantenmechanik ergibt sich eine natürliche Übersetzung der Begriffe. Ob diese allerdings denselben Anforderungen genügen, wie ihr klassischer Gegenpart, ist nicht klar. Es ist sogar sehr wahrscheinlich, dass sich die so erschaffenen Quantengebilde stark abweichend verhalten. Nicht zuletzt das No-Cloning-Theorem (Abschnitt 3.7) sorgt dafür, dass viele im Klassischen völlig selbstverständliche Dinge, wie das Kopieren von Bits, im Quantenfall einfach nicht möglich sind. In diesem Teil der Arbeit soll nun untersucht werden, welche Konsequenzen es hat, wenn man das Konzept der Ordered Binary Decision Diagrams (OBDD), einer Graphendarstellung Boolescher Funktionen, mit einem Quantenrechner realisiert. Dazu wird Kapitel 8 das klassische Konzept der OBDDs vorstellen und ihre Relevanz besprechen. In Kapitel 9 wird dieses Konzept konsequent auf den Quantenfall übertragen. Im abschließenden Kapitel 10 wird der Frage nachgegangen, ob es möglich ist, QOBDDs zur Verifizierung von Quantenschaltkreisen zu verwenden. 61 62 8. Klassische OBDDs Boolesche Funktionen sind eine für die Informatik wichtige Funktionenklasse, da sie viele Probleme beschreiben können und trotzdem gut theoretisch behandelbar sind. Außerdem sind natürlich alle Programme im PC Boolesch realisiert. Um nun Boolesche Funktionen darzustellen, gibt es verschiedene Modelle: zum Beispiel Formeln, Wertetabellen und Schaltkreise, aber auch Branchingprogramme, die eine Oberklasse der Ordered Binary Decision Diagrams (OBDDs) darstellen. Letztere bieten den Vorteil, gleichzeitig noch eine algorithmische Auswertung der Funktion zu beschreiben. Dieses Kapitel folgt in seiner Darstellung der sehr klar formulierten Dissertation von Detlef Sieling [52], in der OBDD-Algorithmen beschrieben und untere Schranken bewiesen werden. In Abschnitt 8.1 soll das Konzept der Branchingprogramme im allgemeinen eingeführt werden. Abschnitt 8.2 erläutert, welche Einschränkungen aus einem allgemeinen Branchingprogramm ein OBDD machen. Die Hauptaufgabe dieses Teils der Arbeit wird in Kapitel 10 in der Synthese von Quanten-OBDDs aus Quantenschaltkreisen liegen. Um dies einzuführen widmet sich Abschnitt 8.3 erst einmal der Synthese klassischer OBDDs. 8.1. Branchingprogramme Eine sehr anschauliche Art Boolesche Funktionen darzustellen, nutzt gerichtete Graphen. Jeder Knoten ist mit je einer Variablen xi beschriftet und von ihm gehen je eine Null- und eine Einskante aus. Ist man an einem Knoten angelangt, so testet man die angegebene Variable, und je nach Ergebnis wählt man den Knoten, zu dem die entsprechende Kante weist. Definition 8.25 Ein Branchingprogramm ist ein gerichteter azyklischer Graph mit genau einer Quelle. Der Graph enthält nur innere Knoten mit Ausgangsgrad 2 und Senken mit Ausgangsgrad 0. Die inneren Knoten sind mit Variablennamen markiert, und die ausgehenden Kanten sind den Werten 0 und 1 zugeordnet. Die Senken sind mit 0 oder 1 markiert. Die Berechnung einer Booleschen Funktion mit einem Branchingprogramm startet in der Quelle. An jedem Knoten v wird die dort angegebene Variable xi getestet. Im Fall xi = 1 wird der mit der 1-Kante an v gebundene Knoten angenommen. Ist xi = 0 so wird in den Knoten gewechselt, der an der 0-Kante von v hängt. Wird eine Senke erreicht, so ist die Berechnung beendet, und als Ergebnis wird die Markierung der Senke ausgegeben. Jede Boolesche Funktion kann durch ein Branchingprogramm dargestellt werden. Dies sieht man mit folgender Überlegung ein: mit Hilfe der sogenannten Shannon-Zerlegung teilen wir unsere Funktion f = x̄1 f |x1=0 ∨ x1 f |x1 =1 . Dann erzeugen wir den ersten Knoten unseres Branchingprogramms und markieren ihn mit der Variable x1 . An die Nullkante hängen wir das Ergebnis der weiteren Zerlegung von f |x1 =0 , an die Einskante das Ergebnis 63 Branchingprogramm 8. Klassische OBDDs Berechnungspfad für f |x1=1 . Dies können wir fortsetzen, bis ein vollständiger Entscheidungsbaum für f aufgebaut wurde. Definition 8.26 Die Abfolge von Knoten, die im Verlauf einer Berechnung einer Booleschen Funktion durch ein Branchingprogramm besucht werden, nennt man Berechnungspfad. In einem Branchingprogramm muss nun nicht zwingend der Eingangsgrad eines jeden Knotens gleich eins sein, sondern ist beliebig. Man kann also die Darstellung eines Entscheidungsbaumes innerhalb der Klasse der Branchingprogramme noch erheblich reduzieren, indem isomorphe Teilgraphen verschmolzen werden. Dies wird in Abbildung 8.1 für die Funktion f (x1 , x2 , x3 ) = x̄2 ∨ x̄3 illustriert. x1 x1 0 1 0 x2 x2 0 1 x3 x3 x2 1 0 x3 0 1 0 1 0 1 1 1 0 1 1 1 0 x3 1 1 x3 0 1 1 0 0 x3 1 1 0 1 0 Abbildung 8.1.: Entscheidungsbaum und reduziertes Branchingprogramm für die Funktion f (x1 , x2 , x3 ) = x̄2 ∨ x̄3 Diese Reduktion eines Entscheidungsbaumes liefert eine deutlich kompaktere Darstellung. So hat ein Entscheidungsbaum ganze 2n − 1 innere Knoten, es gibt aber zu jeder Booleschen Funktion ein Branchingprogramm der Größe O (2n /n) [56]. Man kann zeigen, dass für fast alle Booleschen Funktionen die Darstellung als Branchingprogramm mindestens die Größe Ω(2n /n) haben. In sofern ist obiges Ergebnis optimal. Leider ist der Begriff des Branchingprogramms sehr allgemein. Es sind keine Techniken bekannt, daraus Schranken abzuleiten, die die Diskussion der Komplexitätstheorie, speziell der Platzkomplexität, voranbringen würden. Dazu bedarf es einer Einschränkung von Branchingprogrammen, die im nächsten Abschnitt eingeführt werden soll. 8.2. Ordered Binary Decision Diagrams Wenn man Branchingprogramme betrachtet, deren Knoten so markiert sind, dass auf jedem Berechnungspfad durch den Graphen die Variablen in derselben Reihenfolge und jeweils höchstens ein Mal abgetestet werden, erhält man Ordered Binary Decision Diagrams als nichtuniforme Darstellung für Boolesche Funktionen {0, 1}n → {0, 1} [10]. 64 8.2. Ordered Binary Decision Diagrams Definition 8.27 Ein Ordered Binary Decision Diagram, OBDD, ist ein Branchingprogramm, in dem auf jedem Berechnungspfad alle Variablen höchstens einmal und gemäß einer vorgegebenen Ordnung getestet werden. Das heißt, es gibt eine Permutation π ∈ Sn , so dass für jede Kante, die von einem mit xi markierten Knoten zu einem mit xj markierten Knoten führt, π(i) < π(j) gilt. Wie wir im letzten Abschnitt in Abbildung 8.1 gesehen haben, kann man jede Boolesche Funktion als OBDD darstellen, da ein Entscheidungsbaum ja ebenfalls eine feste Variablenordnung respektiert. Die Einschränkung von Branchingprogrammen zu OBDDs beschneidet also nicht die darstellbaren Funktionen, sondern bläht nur die Darstellungen bestimmter Funktionen auf, die mit einem kompakten Branchingprogramm aber nur mit einem exponentiell großen OBDD darstellbar sind. Leider gilt dies für fast alle Booleschen Funktionen. So unter anderem auch für die praktisch sehr relevante Multiplikation zweier Binärzahlen. Da beim Verschmelzen isomorpher Teilgraphen (siehe Abbildung 8.1) keine Knoten direkt gelöscht, sondern nur vereinigt wurden, ist die Einhaltung der Variablenordnung π = id auch in der reduzierten Darstellung gewährleistet. Auch wurde kein Knoten hinzugefügt, so dass die Variablen immer noch nur ein einziges Mal getestet wurden. Der rechte Graph in Abbildung 8.1 ist also auch ein OBDD. Der Vorteil der OBDDs liegt in ihrer Schichtstruktur. Durch die auf jedem Berechnungspfad gleiche Variablenordnung kann man sämtliche Knoten, die mit derselben Variablen markiert sind, in eine Schicht schreiben. Durch die feste Variablenordnung ist gewährleistet, dass alle Kanten in eine tiefere Schicht weisen. Es gibt weder Kanten innerhalb einer Schicht, noch in höhere Schichten. Nach jedem Test einer Variablen wechselt die Berechnung aus der aktuellen Schicht in die nächste. Dadurch ist es möglich Aussagen über den Platzverbrauch dieser Berechnung zu machen. Die Intuition, die Berechnung bräuchte soviel Platz dass der gesamte Graph G repräsentiert werden kann, ist falsch [4]. Es wird zu jedem Zeitpunkt ein Knoten einer bestimmten Schicht angenommen. Wir müssen also nur soviele Register zur Verfügung stellen, wie nötig sind, um alle Knoten der breitesten Schicht zu repräsentieren. Zusammen mit einer Zuordnung der einzelnen Knoten jeder Schicht zu diesen Registern, ist die Berechnung eines großen Graphen auf sehr wenig Speicherplatz realisiert. Die Datenstruktur OBDD ist eine sehr stark eingeschränkte Variante eines Branchingprogramms. Wenn man sich mit solch restriktiven Modellen befasst taucht schnell die Frage auf, wie sich Aussagen verändern, wenn man die Einschränkung etwas aufweicht. Die naheliegendste Erweiterung von OBDDs sind die sogenannten k-OBDDs die eine kfache Auswertung der Variablen, aber bezüglich einer einzigen Variablenordnung, erlauben [6]. Damit OBDDs zu einem erfolgreichen Konzept werden können, sind eine Menge Punkte wichtig. Eine geeignete Darstellung einer Booleschen Funktion sollte gewisse Aufgaben erledigen können, die hier kurz nach [52] zusammengefasst werden. Sei Gf eine Darstellung einer Booleschen Funktion f : {0, 1}n → {0, 1}, Gg eine Darstellung der Booleschen Funktion g : {0, 1}n → {0, 1}. 1. Auswertung: Berechne f (a) für eine Eingabe a ∈ {0, 1}n . 65 OBDD 8. Klassische OBDDs 2. Erfüllbarkeit: Gibt es eine Eingabe a mit f (a) = 1? 3. Erfüllbarkeit-Anzahl: Berechne |f −1 (1)|. 4. Erfüllbarkeit-Alle: Gib f −1 (1) an. 5. Reduktion/Minimierung: Berechne für f eine Darstellung G′ minimaler Größe. Ist G′ eindeutig bestimmt, so heißt dies Reduktion. 6. Äquivalenztest: Teste anhand Gf , Gg , ob f = g gilt. 7. Synthese: Berechne eine Darstellung für f ⊗ g anhand Gf , Gg , wobei ⊗ : {0, 1}2 → {0, 1} irgendeine binäre Verknüpfung ist. 8. Ersetzung durch Konstanten: Berechne eine Darstellung für f |xi =c , wobei xi eine Variable und c eine Konstante ist. 9. Ersetzung durch Funktionen: Berechne aus Gf und Gg eine Darstellung für f |xi =g . 10. Quantifizierung: Berechne eine Darstellung für (∀xi : f ) := f |xi =0 ∧ f |xi =1 , beziehungsweise (∃xi : f ) := f |xi =0 ∨ f |xi =1 11. Redundanztest: Teste, ob f |xi =0 = f |xi =1 für gegebenes xi . Da in dieser Arbeit in Kapitel 10 Punkt 5 und Punkt 7 für den Quantenfall untersucht werden, soll deren Behandlung im nächsten Abschnitt für klassische OBDDs wiedergegeben werden. Die anderen Punkte sind ebenso wichtig, jedoch teilweise direkt ersichtlich oder aber zu weitgehend, als dass eine umfassende Besprechung hier sinnvoll wäre. 8.3. Synthese und Reduktion von OBDDs Ein gutes Konzept für die Darstellung Boolescher Funktionen muss die im vorigen Abschnitt gegebenen Aufgaben auf einfache Weise und vor allem effizient bewältigen können. Die hier zu besprechenden Vorgänge der Synthese und Reduktion hängen eng zusammen. Um zum Beispiel die Äquivalenz zweier Boolescher Formeln zu prüfen, bietet es sich an, jeweils die Darstellung als OBDD zu bestimmen, diese zu reduzieren, und die erhaltenen Darstellungen auf Gleichheit zu testen. Dazu benötigt man aber einen Algorithmus, der sukzessive einen OBDD aus einer Booleschen Formel aufbaut. Dies passiert naheliegenderweise indem, angefangen mit den Atomen, immer wieder die OBDDs zu den Teilformeln vereinigt werden. Um den Aufwand für diese sukzessive Synthese zu minimieren, ist es äußerst praktisch, die erhaltene Darstellung vor der nächsten Synthese zu reduzieren. Dass die Synthese von OBDDs effizient möglich ist, wurde schon bewiesen bevor der Begriff eingeführt wurde [21]. Dasselbe Ergebnis für die Reduktion entstand wesentlich später [11]. Anhand zweier einfacher Reduktionsregeln kann man jeden OBDD zu einer Minimaldarstellung bringen. Diese reduzierten OBDDs sind eindeutig. Um nun einen OBDD zu reduzieren, benötigt man nur folgende zwei Regeln, die man solange in beliebiger Reihenfolge anwendet, bis keine der Regeln mehr angewandt werden kann. 66 8.3. Synthese und Reduktion von OBDDs 1. Deletion Rule: Wenn beide ausgehenden Kanten eines Knotens, der mit xi markiert sei, auf denselben Folgeknoten weisen, so ist der Test von xi überflüssig, der xi -Knoten kann also gelöscht werden, seine Eingangskanten weisen nun auf den Folgeknoten, siehe Abbildung 8.2. 2. Merging Rule: Gibt es zwei Knoten, die mit derselben Variablen gekennzeichnet sind, und deren Null- und Einskanten jeweils zu demselben Knoten verweisen, so kann man beide vereinigen, da die nachfolgende Berechnung jeweils gleich wäre. Es entsteht ein Knoten mit den Nachfolgern und allen Eingangskanten der beiden alten Knoten, siehe Abildung 8.3. xi 0 1 xi+1 xi+1 Abbildung 8.2.: Illustration der Deletion Rule xi xi 1 0 xi+1 0 1 xi+1 xi 0 xi+1 1 xi+1 Abbildung 8.3.: Illustration der Merging Rule Die Synthese zweier OBDDs ist leider etwas komplizierter, da ein völlig neuer Graph aufgebaut wird, dessen Knoten aus Kombinationen aus je zwei Ursprungsknoten bestehen. Betrachten wir zwei OBDDs Gf und Gg die jeweils die Darstellung der Booleschen Funktion f, g : {0, 1}n → {0, 1} bezüglich derselben Variablenordnung sind. Diese beiden Funktionen sollen nun bezüglich des Booleschen Operators ⊗ : {0, 1}2 → {0, 1} verknüpft werden. Wir wollen also ein OBDD Gf ⊗g von f ⊗ g ermitteln. Im Prinzip werden simultan beide OBDDs durchlaufen, und wenn beide eine Senke erreicht haben, werden die beiden Ergebnisse bezüglich ⊗ verknüpft. Allerdings müssen nicht alle Variablen im Verlauf einer Berechnung durch Gf und Gg getestet werden. So kann es vorkommen, dass die Nachfolgeknoten in den Einzel-OBDDs nach dem Test von xi mit unterschiedlichen Variablen markiert sind. Da wir an die gemeinsame Variablenordnung, 67 8. Klassische OBDDs sie sei der Einfachheit halber die Identität, gebunden sind, müssen wir mit der Auswertung in dem einen OBDD warten, bis der andere OBDD in der Testfolge an derselben Stelle angekommen ist. Bei Senken gilt natürlich dasselbe, sollte ein OBDD noch nicht fertig gerechnet haben, der andere aber schon eine Senke erreicht haben, so wird das Ergebnis des fertigen OBDD gehalten, und am Ende, wenn der andere OBDD soweit ist, werden die Ergebnisse verknüpft. Formal sieht das folgendermaßen aus: Der Gesamt-OBDD Gf ⊗g hat für jedes Paar von Knoten vf ∈ Gf und vg ∈ Gg einen Knoten (vf , vg ). Als Quelle haben wir die Kombination aus den beiden Quellen. Die Markierung eines Knotens wird wie folgt gegeben. Seien jeweils vf,c , vg,c die c-Nachfolger von vf in Gf beziehungsweise von vg in Gg für c ∈ {0, 1}. 1. Fall: vf und vg sind beide mit xi markiert. Dann wird (vf , vg ) ebenfalls mit xi markiert. Sein Nullnachfolger ist (vf,0 , vg,0 ) sein Einsnachfolger ist (vf,1 , vg,1 ). 2. Fall: vf ist mit xi markiert und vg mit xj und i > j. Dann wird (vf , vg ) mit xj markiert. Sein Nullnachfolger ist (vf , vg,0 ) sein Einsnachfolger ist (vf , vg,1 ). 3. Fall: vf ist eine Senke und vg mit xj markiert. Dann wird (vf , vg ) mit xj markiert. Sein Nullnachfolger ist (vf , vg,0 ) sein Einsnachfolger ist (vf , vg,1 ). 4. Fall: vf ist mit xi markiert und vg mit xj und i < j. Dann wird (vf , vg ) mit xi markiert. Sein Nullnachfolger ist (vf,0 , vg ) sein Einsnachfolger ist (vf,1 , vg ). 5. Fall: vf ist mit xi markiert und vg ist eine Senke. Dann wird (vf , vg ) mit xi markiert. Sein Nullnachfolger ist (vf,0 , vg ) sein Einsnachfolger ist (vf,1 , vg ). 6. Fall: vf und vg sind Senken. Der Knoten (vf , vg ) ist eine Senke in Gf ⊗g . Seine Markierung wird über die Verknüpfung der beiden Senkenmarkierungen ermittelt. Der so erhaltene Produktgraph ist allerdings noch kein OBDD. Es gibt im allgemeinen Knoten, die von der Quelle aus nicht erreicht werden können. Es wurden Synthesealgorithmen vorgeschlagen, die überflüssige Knoten von vornherein nicht erzeugen [11], allerdings sind sie nicht so schnell, wie diese etwas speicheraufwendigere Variante, bei der im Nachhinein alle überflüssigen Knoten gelöscht werden, wenn anschließend reduziert wird. 68 9. Quanten OBDDs Die Übertragung des Konzepts OBDD auf einen Quantencomputer liefert uns eine Möglichkeit, die Platzkomplexität von nichtuniformen Quantenalgorithmen zu untersuchen, siehe zum Beispiel [49]. Einen guten Einstieg bietet die graphentheoretische Definition über probabilistische Branchingprogramme [45], die in diesem Kapitel wiedergegeben werden soll. Sie schließt sich nahtlos an die Einführung der klassischen OBDDs des letzten Kapitels an. Dem gegenüber steht der Weg, QOBDDs direkt zu definieren [1], ohne den Vergleich zu einer Graphenrepräsentation zu suchen. Diese Beschreibung von QOBDDs ist allerdings weniger anschaulich. In dem Sinne wird Abschnitt 9.1 Quantenbranchingprogramme definieren, indem erst die oben eingeführten Branchingprogramme zu probabilistischen Branchingprogrammen erweitert werden, und dann der Übergang zum Quantenfall erfolgt. In Abschnitt 9.2 erfolgt dann die Einschränkung zu Quanten-OBDDs. 9.1. Quantenbranchingprogramme Um Quantenbranchingprogramme zu definieren ist die Definition von probabilistischen Branchingprogrammen ein guter Zwischenschritt. Diese sind dem Quantenfall sehr nah, bieten aber nicht dieselben rechnerischen Möglichkeiten. Der Hauptunterschied zwischen deterministischen und probabilistischen Branchingprogrammen ist, dass nun die ausgehenden Kanten nicht mehr mit Eins und Null markiert sind, sondern es pro Knoten zwei Mengen von ausgehenden Kanten gibt. Die eine der Mengen wird betrachtet, wenn die zum Knoten gehörige Variable Eins ist, die andere im Fall Null. Die Elemente der Kantenmengen sind nun ihrerseits mit Wahrscheinlichkeiten markiert, die den jeweiligen Übergang gewichten. An jedem Knoten wird nun die dort zu testende Variable ausgewertet und bezüglich der jeweiligen Wahrscheinlichkeitsverteilung einer der Nachfolgeknoten gezogen. Definition 9.28 Ein probabilistisches Branchingprogramm, PBP, ist ein gerichteter azyklischer Graph mit zwei Senken, die mit 0 beziehungsweise 1 markiert sind. Die internen Knoten sind mit Booleschen Variablen xi , i ∈ {1, . . . , n} markiert. Ein ausgezeichneter Knoten hat den Eingangsgrad Null, er ist die Quelle. Zu jedem inneren Knoten v gehören zwei Mengen von ausgehenden Kanten, die 1-Kanten E1 (v) und die 0-Kanten E0 (v). Jede Kante e trägt ein positives Gewicht w(e) ≤ 1. Die Summe der Gewichte von E1 (v) und E0 (v) ist jeweils 1. Ein probabilistisches Branchingprogramm berechnet aufgrund einer Eingabe von n Bits einen Booleschen Wert, analog zu den deterministischen Branchingprogrammen, siehe Definition 8.25. Gestartet wird an der Quelle. An jedem Knoten wird die dort angegebene Variable getestet. Je nach Wert wird nach der durch die Gewichte gegebenen Wahrscheinlichkeitsverteilung eine der Kanten aus E1 (v) beziehungsweise E0 (v) gezogen. Wenn eine 69 PBP 9. Quanten OBDDs Senke erreicht ist, wird der zugehörige Wert ausgegeben. Ein probabilistisches Branchingprogramm berechnet eine Boolesche Funktion f (mit Fehlerrate e = 1/2 − δ, δ > 0) wenn es den korrekten Wert von f für einen beliebigen Input mindestens mit Wahrscheinlichkeit 1/2 + δ ausgibt. Beispiel 9.9 Um den Übergang von deterministischen auf probabilistische Branchingprogramme zu verdeutlichen gibt Abbildung 9.1 zwei Beispiele. Ihre Berechnung ist trivial und die probabilistische Berechnung liefert keinen Vorteil gegenüber der deterministischen, sie sollen lediglich das Prinzip der zwei Kantenmengen zeigen. Sie berechnen beide die Funktion f (x1 , x2 ) = x1 · x2 , jedoch mit unterschiedlicher Fehlerwahrscheinlichkeit. Da der linke Graph lediglich Kanten mit Gewicht 1 hat, ist er deterministisch, berechnet f also mit Fehler 0. Betrachten wir den rechten Graphen. Gestartet wird im oberen Knoten. Ist x1 = 1, so gelten die durchgezogenen Kanten. Wir befinden uns nur mit Wahrscheinlichkeit 45 im zweiten inneren Knoten. Mit der Restwahrscheinlichkeit 15 sind wir falsch“ gegangen. Im Fall x1 = 0 ist es andersherum. Das heißt, das ” wir für alle Eingaben mit einem Fehler von 51 rechnen. x1 1 5 1 1 4 5 4 5 x2 1 0 E0 E1 x1 1 1 1 x2 1 5 0 1 1 Abbildung 9.1.: Zwei probabilistische Branchingprogramme, die die Funktion f (x1 , x2 ) = x1 ·x2 mit Fehlerrate 0 (links) beziehungsweise 51 (rechts) berechnen. Durchgezogene Linien gehören zu 1-Kanten, gestrichelte zu 0-Kanten. Der Übergang zu einem Quantenbranchingprogramm ist nicht mehr schwer. Dieses ist ein Quantensystem, das in einem Hilbertraum lebt, der pro Knoten des probabilistischen Branchingprogramms einen assoziierten Zustandsvektor enthält. Der Zustand des Quantenbranchingprogrammes ist demnach eine Superposition dieser Vektoren. Die folgende Definition wird der Einfachheit erst einmal davon ausgehen, dass jeder Knoten einen neuen Basisvektor definiert. Dies ist nicht nötig, wenn es darum geht, wenig Platz zu verbrauchen. Es werden jetzt komplexe Kantengewichte zugelassen, und es wird auch nicht nach jedem Test einer Variable eine Kante ausgewählt, sondern der Zustand geht zu entsprechenden Amplitudenanteilen in die verschiedenen nachfolgenden Knoten. Vor jedem Schritt wird allerdings gemessen, ob sich das Programm bereits in einem terminalen Zustand befindet. Sollte die Messung einen terminalen Zustand feststellen, so wird das zugehörige Ergebnis ausgegeben, wenn nicht, wird weitergerechnet. 70 9.1. Quantenbranchingprogramme Definition 9.29 QBP Ein Quantenbranchingprogramm, QBP, ist eine Erweiterung eines probabilistischen Branchingprogramms. Wir erlauben komplexe Gewichte, deren Betrag zwischen 0 und 1 liegt. Aufgrund der Normierung muss nun gelten: X e∈E0 (v) ||w(e)||2 = 1, X e∈E1 (v) ||w(e)||2 = 1 Außerdem müssen alle Nachfolgeknoten eines Knotens mit derselben Variable markiert sein, damit auch im nächsten Schritt nur eine Variable getestet werden braucht. Die Knoten des Graphen werden in drei Mengen aufgeteilt: akzeptierende (Qacc ), verwerfende (Qrej ) und nicht haltende Knoten (Qnon ). Jedem der Knoten q ∈ Q = Qacc ∪ Qrej ∪ Qnon wird ein Basisvektor |qi zugeordnet, so dass der von diesen Basisvektoren aufgespannte Hilbertraum sämtliche möglichen Konfigurationen des QBPs beschreibt. Die Gewichte finden sich in der Übergangsfunktion γ wieder: γ : (Q × {0, 1} × Q) → C, γ(v, b, v ′ ) = w(e), wobei w(e) das Gewicht der b-Kante von Knoten v zu Knoten v ′ ist, beziehungsweise 0, wenn die Kante nicht existiert. Der zu einem Berechnungsschritt gehörige Operator ist: Txγ |vi = X v′ ∈Q γ(v, x(v), v ′ )|v ′ i, wobei x = (x1 , . . . , xn ) der Inputvektor ist, und x(v) der Wert der Variable mit der v markiert ist. Damit wir ein wohldefiniertes Quantensystem haben, muss Txγ unitär sein. Für die Messung benutzen wir die Observable O = Eacc ⊕ Erej ⊕ Enon , wobei Eacc , Erej und Enon die von den jeweiligen Basisvektoren aufgespannten Unterräume sind. Die Berechnung erfolgt wieder ausgehend von der ausgezeichneten Quelle. In jedem Schritt wird der Operator Txγ angewandt, nachdem bezüglich O gemessen wurde. Dadurch wird |ψi+1 i auf einen der drei Unterräume Eacc , Erej und Enon projiziert. Befindet er sich im Unterraum Eacc so wird 1 ausgegeben, befindet er sich in Erej , so wird 0 ausgegeben und beide Male die Berechnung abgebrochen. Andernfalls ist der resultierende Zustand |ψi+1 i = Txγ |ψi i. Ein Quantenbranchingprogramm berechnet eine Boolesche Funktion f (mit Fehlerrate e = 1/2−δ, δ > 0) wenn es den korrekten Wert von f für einen beliebigen Input mindestens mit Wahrscheinlichkeit 1/2 + δ ausgibt. Dass Quantenbranchingprogramme beschränkter Breite mächtiger sind als probabilistische Branchingprogramme beschränkter Breite, wurde mit Hilfe der Funktion HALFn gezeigt. 1 falls |{xi |xi = 1}| = n2 HALFn (x1 , . . . , xn ) = 0 sonst Diese Funktion kann im Quantenfall dargestellt werden, dem klassischen Modell ist es aber nicht möglich [45]. 71 9. Quanten OBDDs 9.2. Quantum Ordered Binary Decision Diagrams QOBDD Der Schritt von einem Quantenbranchingprogramm zu einem Quanten-OBDD ist nun wieder derselbe, wie im klassischen Fall. Wir schränken das Testen der Variablen ein, indem jede Variable nur einmal getestet werden darf und außerdem eine feste Variablenordnung eingehalten werden muss. Definition 9.30 Ein Quantum Ordered Binary Decision Diagram, QOBDD, ist ein Quantenbranchingprogramm, das auf jedem Berechnungspfad jede Variable nur einmal und bezüglich einer festgelegen Variablenordnung testet. Der Übergang von klassische auf Quanten-OBDDs, den wir in den letzten Seiten nachvollzogen haben, war sehr organisch, da immer recht kleine Schritte durchgeführt wurden. Wir haben kurz die klassische Einschränkung von Branchingprogrammen auf OBDDs besprochen, dann den Weg angetreten von klassischen deterministischen Branchingprogrammen über eine Erweiterung der Übergangsfunktion des Graphen G zu probabilistischen Branchingprogrammen. Durch die Auswahl immer einer Kante in jedem Berechnungsschritt ändert sich strukturell nicht viel. Auch der nächste Schritt war gut nachzuvollziehen, indem nun diese Entscheidung nicht in jedem Schritt gefällt wurde, sondern über den quantenmechanischen Zustand eine Art Wahrscheinlichkeitsverteilung über die vorhandenen Knoten erlaubt wurde, auch die Erweiterung der Gewichte auf komplexe Zahlen ändert nichts radikal. Da die Einschränkung von Quantenbranchingprogrammen zu QOBDDs analog zum klassischen Fall verlief, ist auch hier nichts dramatisches geschehen. Die Unterschiede machen sich eher subtil bemerkbar, zum Beispiel, dass die Forderung nach unitären Transformationen gleichzeitig die Einschränkung hin zu einem reversiblen OBDD liefert. Die gegebenen Definitionen liefern zwar eine gültige Beschreibung eines QOBDDs, beschreiben aber die konkrete platzgünstige Realisierung nicht. Ähnlich wie im klassischen Fall, wo die konkret benutzten Register immer nur eine Schicht pro Zeitschritt repräsentieren, müssen wir auch im Quantenfall untersuchen, wie groß der reale Platzverbrauch des Programms ist. Wir haben hier die Graphendarstellung eines QOBDDs besprochen, in der jeder Knoten jeder Schicht einzeln repräsentiert wird. Demgegenüber steht die speichergünstige Variante, ganz analog zum klassischen Fall aus Abschnitt 8.2, die sich der Vorteile der Schichtung bewusst ist, und nur soviele Qubits zur Berechnung des QOBDDs benutzt, wie benötigt werden, um die breiteste Schicht darzustellen. Nachdem das kommende Beispiel demonstriert hat, wie eine Realisierung von einem QOBDD aussieht, wenn man sich strikt an Definition 9.30 hält wird eine alternative Definition besprochen, die sich direkt den Vorteilen der Schichtstruktur bedient. Beispiel 9.10 Ein Beispiel für ein QOBDD für die Funktion f = x1 ⊕ x2 ist in Abbildung 9.2 als Quantenbranchingprogramm gemäß Definition 9.1 gegeben. Alle Übergangsamplituden sind komplexe Zahlen, die 1- sowie die 0-Kanten sind je Knoten normiert. Vom Startknoten q1 erreicht man nur die Knoten q2 und q3 . Deswegen müssen sie mit derselben Variable, in diesem Fall x2 markiert sein, da sonst nicht bestimmt wäre, welche Variable im nächsten Schritt getestet werden muss. Der Graph enthält keine Zyklen, er besitzt eine Quelle mit Eingangsgrad Null, und zwei Senken mit Ausgangsgrad Null. 72 9.2. Quantum Ordered Binary Decision Diagrams q1 x1 √1 2 − √12 q2 √1 2 q3 x2 x2 √1 2 q4 − √12 1 E0 E1 √1 2 √1 2 √1 2 √1 2 √1 2 √1 2 0 − √12 q5 Abbildung 9.2.: Das Quantenbranchingprogramm aus Beispiel 9.10 als Graph, der die Funktion f = x1 ⊕ x2 mit Fehler 0 berechnet [45]. Die Überführungsfunktion γ explizit anzugeben, ist nicht sinnvoll, da dies sehr lang und unübersichtlich wäre. Besser ist es, gleich die anzuwendenden Operatoren anzugeben. Gestartet wird im Zustand |q1 i. Je nach dem Wert von x1 wird eine der Transformationen Tx01 : |q1 i → √12 (|q2 i + |q3 i) beziehungsweise Tx11 : |q1 i → √12 (−|q2 i + |q3 i) angewandt. Um die Transformationen in ihrer Allgemeinheit anzugeben, müssen wir 5 × 5-Matrizen verwenden. Die Basis von H ist {|q1 i, |q2 i, |q3 i, |q4 i, |q5 i} = {|1i, |2i, |3i, |4i, |5i}. Die Unterteilung der Knoten ist Qacc = {q5 }, Qrej = {q4 } und Qnon = {q1 , q2 , q3 }. Eine Möglichkeit für die erste Transformation Tx1 ist die Folgende. Es ist nicht bestimmt, wie die Basisvektoren |2i, |3i, |4i, |5i transformiert werden. Hier wurde lediglich eine möglichst simple Erweiterung auf eine unitäre Matrix gewählt. 0 0 1 0 0 0 0 1 0 0 √1 − √1 √1 0 0 0 √1 0 0 0 2 2 2 2 √1 Tx01 = √12 − √12 0 0 0 0 0 0 Tx11 = √12 2 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 Interessant sind hier nur die Einträge der ersten Spalte, da wir anfangs unseren QOBDD auf den Zustand |q1 i präparieren. Wo es möglich ist, ohne die Unitarität der Matrizen zu verletzen, wurde nur eine 1 in die Diagonale geschrieben. An anderer Stelle sind eventuell verwirrende Übergangsamplituden eingefügt, die aber im Verlauf einer Berechnung nicht zum Tragen kommen. Mögliche Realisierungen der 1 0 0 0 0 0 0 0 0 0 Tx2 = 0 √1 √1 2 2 0 √12 − √12 Transformation Tx2 sind 1 0 0 0 0 0 1 0 1 0 0 1 Tx2 = 0 0 − √1 0 0 2 0 0 0 √12 0 0 0 √1 2 √1 2 0 1 0 0 0 0 0 1 0 0 73 9. Quanten OBDDs Erst nach der zweiten Transformation besteht die Möglichkeit bei der Messung einen terminalen Zustand zu messen. Dies ist dann allerdings sicher. Nach der ersten Transformation haben nur die zu q2 und q3 gehörigen Basisvektoren nicht verschwindende Amplitude. Also ist eine Messung bezüglich terminaler Zustände nach der ersten Transformation ohne Effekt. Insofern können wir die beiden Transformationen zusammenfassen, und in Abhängigkeit vom Input x den Zustand vor der Messung angeben. Betrachten wir beispielsweise x = (0, 1). |ψfinal i = Tx|q1 i = Tx12 · Tx01 |q1 i 0 0 1 0 0 0 0 1 1 0 √ √ 0 0 1 0 2 2 0 0 0 1 = 0 · √12 − √12 0 − √1 √1 0 0 0 0 2 2 √1 0 √12 0 0 0 0 2 0 0 1 0 0 1 0 0 0 1 0 0 = 0 0 0 0 1 · 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 ˆ 1 , da q5 ∈ Qacc = 0 = |q5 i = 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 · 1 0 0 0 0 Indem man nun für die verschiedenen Inputs das Produkt von Txǫ11 und Txǫ22 für x = (ǫ1 , ǫ2 ) bildet und die erste Spalte, das Bild vom Startzustand, betrachtet, sieht man, dass obiger QOBDD f ohne Fehler berechnet. ⋆ QOBDD, alternativ Beispiel 9.10 zeigt ziemlich deutlich die Redundanzen, die auftreten, wenn man jedem Knoten des Graphen einen eigenen Basisvektor zuweist. Zum Beispiel wird unnötigerweise der Fortschritt der Berechnung gespeichert, obwohl doch eine fest definierte Anzahl an Transformationen angewendet werden muss, bevor ein Ergebnis feststeht. Eine Funktion, die als klassischer OBDD eine Breite von 2 hätte, benötigt einen 5-dimensionalen Hilbertraum, um durch einen QOBDD dargestellt zu werden. Genau wie bei der Bestimmung des Platzverbrauchs eines klassischen OBDDs reicht es aber aus, die breiteste Stelle des Graphen zu ermitteln, und für jeden Knoten auf diesem Niveau einen Basisvektor zu verwenden. Um schnell zu einer nachvollziehbaren Darstellung zu kommen, soll nun ein alternativer Zugang zu QOBDDs betrachtet werden, wie er von [1, 33] benutzt wird. Definition 9.31 Ein Quantum Ordered Binary Decision Diagram, QOBDD, auf einer Eingabe x = (x1 , . . . , xn ) der Breite w und Länge n besteht aus 74 einer Menge B = {|1i, . . . , |wi} von Basisvektoren des zugrundeliegenden Hilbertraumes H, 9.2. Quantum Ordered Binary Decision Diagrams einer Abfolge von Paaren unitärer Transformationen (Ty0i , Ty1i ), i = 1, . . . , n auf H, wobei die Abfolge y1 , . . . , yn eine Permutation von x1 , . . . , xn ist, einem ausgezeichneten Startzustand |1i und einer Menge akzeptierender Basisvektoren aus B, die den akzeptierenden Unterraum aufspannen. ⋆ ⋆ ⋆ Die Rechenweise ist dieselbe wie in Definition 9.1, außer dass wir nur messen, wenn alle n Transformationen abgearbeitet wurden. Die Vorteile dieser Definition liegen auf der Hand. Wir sparen uns die redundante Zeitrepräsentation in zusätzlichen Basisvektoren und benötigen keine reinen terminalen Zustände, da ja erst am Ende gemessen wird. Dass wir das tun können ist offensichtlich. In der Darstellung als geschichteter Graph werden die terminalen Zustände in der untersten Schicht liegen. Jede der Messungen, die in den Berechnungsschritte vor erreichen dieser Schicht durchgeführt wurden, werden mit Wahrscheinlichkeit 1 einen nichtterminalen Zustand ergeben, und keinerlei Auswirkungen auf den aktuellen Zustand haben, da keine Amplitude der terminalen Zustände vorhanden ist, die wegfallen würde. Die so erreichte Darstellung ist formal sehr sauber, da die Struktur eines QOBDDs dadurch sehr vereinfacht werden kann. Pro getesteter Variable xi haben wir die zwei Transformationen Tx0i und Tx1i die je nach Belegung ǫi von xi angewendet werden. Eine kompakte Notation eines QOBDDs ist demnach |ψi = (Tx0n , Tx1n ) · ... · (Tx01 , Tx11 )|1i. Für eine feste Belegung x = (ǫ1 , . . . , ǫn ) hat jeder QOBDD die Form |ψi = Txǫnn · ... · Txǫ11 |1i. (9.1) Wieviel schlanker ein nach Definition 9.31 definierter QOBDD ist, zeigt die Fortführung von Beispiel 9.10. Beispiel 9.11 Stellen wir anhand von Definition 9.31 einen QOBDD für die Funktion f = x1 ⊕ x2 zusammen. Die Eingabe ist zweidimensional x = (x1 , x2 ). Unser Startzustand ist |1i, der akzeptierende Zustand |2i. Wie man an der Graphendarstellung des QOBDD für die Funktion in Abbildung 9.2 sehen kann, reichen zwei Basiszustände aus, siehe Abbildung 9.3. Also ist B = {|1i, |2i}. Die Transformationen sind ebenfalls schnell ersichtlich, da sie klassisch sind. 1 0 0 1 0 1 Tx1 = Tx1 = 0 1 1 0 1 0 0 1 0 1 Tx2 = Tx2 = 0 1 1 0 Nun haben wir das Thema Quantum Ordered Binary Decision Diagrams ausreichend eingeführt um uns dem Ziel dieses Teils der Arbeit, der Synthese und Reduktion von QOBDDs zu widmen. 75 9. Quanten OBDDs q1 x1 √1 2 − √12 q2 √1 2 q4 − √12 1 x1 , x2 = 0 x , x = 1 x1 , x2 = 0 1 2 q3 x2 x2 √1 2 E0 E1 √1 2 √1 2 √1 2 √1 2 √1 2 √1 2 0 |1i − √12 |2iacc x1 , x2 = 1 q5 Abbildung 9.3.: Die speichergünstige Realisierung des QOBDDs aus Abbildung 9.2, die die Funktion f = x1 ⊕ x2 mit Fehler 0 berechnet und lediglich einen zweidimensionalen Hilbertraum benötigt. 76 10. Synthese und Reduktion von QOBDDs Ursprüngliches Ziel dieses Kapitels und auch des dritten Teils dieser Arbeit ist, zu klären, ob sich QOBDDs dazu eignen, Quantenschaltkreise darzustellen, die eine Boolesche Funktion realisieren. Außerdem könnten sie Hilfsmittel bereitstellen, um zum Beispiel verschiedene Quantenschaltkreise auf Äquivalenz zu untersuchen, wie klassische OBDDs es für Boolesche Formeln liefern. Was wir prinzipiell gerne erreichen würden, ist bereits für den klassischen Fall in Abschnitt 8.2 aufgelistet. An dieser Liste ändert sich im Quantenfall nichts. Da aber wegen der komplexen Übergangsamplituden die Anzahl möglicher verschiedener QOBDDs gegenüber den klassischen OBDDs immens steigt, ist es fragwürdig, ob die Punkte obiger Liste überhaupt realisierbar sind. Um dieser Frage nachzugehen, soll sich dieses Kapitel mit den Aspekten Synthese und Reduktion von QOBDDs befassen. Da QOBDDs Boolesche Funktionen darstellen, kann es in diesem Kapitel auch nur um Schaltkreise gehen, die eine Boolesche Funktion realisieren. Dazu schränken wir den Eingabebereich auf klassische Bits ein, und verlangen eine Vorschrift, wie aus dem Ergebnis des Quantenschaltkreises ein Boolescher Wert als Ergebnis extrahiert wird. Für die Verifikation von Quantenschaltkreisen benötigen wir die sukzessive Synthese eines QOBDDs aus einem Quantenschaltkreis. Angefangen von der Eingabeebene sollen nach und nach einzelne Gatter als Verknüpfung zwischen den atomaren QOBDDs dienen. Die so erhaltenen Graphen werden nun, sofern sie im Schaltkreis durch Gatter verbunden sind, zu größeren QOBDDs verschmolzen. Die allgemeine Synthese, das Thema von Abschnitt 10.1, lässt allerdings die Dimension des zugrundeliegenden Hilbertraumes explodieren, da sich in jedem Syntheseschritt die Dimensionen multiplizieren, wie es im Abschnitt 2.7 über die Verkettung einzelner Quantensysteme besprochen wurde. Um nun die Synthese trotzdem effizient bewältigen zu können, ist eine sinnvolle, effiziente Minimisierung drängendste Notwendigkeit. Die Reduktion ist das Thema von Abschnitt 10.2. Eine allgemeine effiziente Reduktion ist allerdings nicht zu erwarten. Zum einen ist nicht ersichtlich, ob es sie überhaupt geben kann, zum anderen wäre eine vollständige Besprechung im Rahmen dieser Arbeit nicht zu leisten. Die Schwierigkeiten, die bei einem solchen Unterfangen auftreten werden also in Abschnitt 10.2 im Vordergrund stehen. Im Anschluss in Abschnitt 10.3 soll eine vereinfachte Situation betrachtet werden, in der eine Reduktion möglich ist. Unter der Annahme, dass der zu synthetisierende Quantenschaltkreis als Gatter lediglich die einwertige Hadamardtransformation (Definition 3.13) und das zweiwertige XOR (Beispiel 3.3) enthält, wird die Problematik noch einmal konkret durchgesprochen. 10.1. Synthese von QOBDDs Formal gesehen verläuft die Synthese zweier QOBDDs sehr gradlinig analog zu der Synthese zweier klassischer OBDDs, die in Abschnitt 8.3 besprochen wurde [33]. Die Bildung 77 10. Synthese und Reduktion von QOBDDs der Produktzustände (vf , vg ) ist im Quantenfall noch viel naheliegender, da bei der Verknüpfung von zwei Quantensystemen |φi und |ψi über das äußere Produkt ebenfalls solche Produktzustände |φ ⊗ ψi gebildet werden. Wenn wir die Darstellung eines QOBDD aus Gleichung (9.1) benutzen, die am Ende des letzten Abschnittes eingeführt wurde, ist die Synthese noch wesentlich einfacher, da sich das System in jedem Berechnungsschritt bezüglich des äußeren Produkts der aktuellen Transformationen entwickelt. Seien Gf und Gg die QOBDDs, die die Booleschen Funktionen f : {0, 1}n → {0, 1} und g : {0, 1}n → {0, 1} mit Fehlerwahrscheinlichkeit ef und eg berechnen. Wir beschreiben sie hier in der Graphendarstellung, die Definition 9.30 liefert. Die Eingabe muss für beide QOBDDs die gleiche Dimension haben. Die Variablenordnung sei ohne Einschränkung der Einfachheit halber die Identität. Die Hilberträume Hf und Hg haben folgenden Basen, die den Zuständen der Graphen entsprechen: Hf = Span({|p1 i, . . . , |pk i}) Hg = Span({|q1 i, . . . , |ql i}) Ihre Darstellung bezüglich der Variablenbelegung x = (ǫ1 , . . . , ǫn ) sei: Gf : Gg : Sxǫnn · ... · Sxǫ11 |1i Txǫnn · ... · Txǫ11 |1i Die jeweiligen Ergebnisse werden aus der Messung von Of = Span(Pacc ) ⊕ Span(Prej ) ⊕ Span(Pnon ) beziehungsweise Og = Span(Qacc ) ⊕ Span(Qrej ) ⊕ Span(Qnon ) ermittelt. Der QOBDD Gf ∗g bezüglich einer beliebigen Booleschen Operation ∗ : {0, 1}2 → {0, 1} lebt nun im Hilbertraum Hf ∗g = span({|r1 i, . . . , |rl·k i}), wobei |rj+(i−1)·l i = |pi ⊗ qj i, i ∈ {1, . . . , k}, j ∈ {1, . . . , l}. Seine Darstellung bezüglich der Variablenbelegung x = (ǫ1 , . . . , ǫn ) ist Gf ∗g : (Sxǫnn ⊗ Txǫnn ) · ... · (Sxǫ11 ⊗ Txǫ11 )|1i. Das Funktionsergebnis von Gf ∗g wird nun aus den entsprechend generierten akzeptierenden beziehungsweise zurückweisenden Mengen ermittelt. Für ∗ = ∧ ist zum Beispiel Racc = {rj+(i−1)·l |pi ∈ Pacc ∧ qj ∈ Qacc } Rrej = {rj+(i−1)·l |pi ∈ Prej ∨ qj ∈ Qrej } Rnon = {r|r 6∈ Racc ∧ r 6∈ Rrej }. Die Fehlerwahrscheinlichkeit ef ∗g des Synthese-QOBDDs ist ef ∗g = (1 − (1 − ef )(1 − eg )). 78 10.2. Reduktion eines QOBDDs Damit ist der synthetisierte QOBDD nach Definition 9.30 bestimmt. Allerdings explodiert die Dimension des neuen QOBDDs mit jedem weiteren Syntheseschritt, da sich die Anzahlen der Basisvektoren multiplizieren. Auch wenn zur Synthese die Speichergünstige Darstellung gewählt wird, ist das Ergebnis ein übermäßig großer QOBDD. Um sinnvoll einen QOBDD aus einem Schaltkreis zusammenbauen zu können, muss der erhaltene QOBDD noch reduziert werden. Die hier benutzte Darstellungsweise vermittelt bereits ganz gut, wie aussichtslos dieses Unterfangen ist. Wir haben n unitäre Transformationen, die jeweils von der Eingabe abhängen. Die Frage ist nun, welcher QOBDD dieselbe Funktion mit demselben oder einem geringeren Fehler berechnet, und dessen Hilbertraum minimale Dimension hat. Dasselbe Problem taucht bereits auf, wenn man einen QOBDD in der Graphendarstellung vorliegen hat, und seine speichergünstige Realisierung laut Definition 9.31 ermitteln möchte. In völlig allgemeiner Form nützen allerdings die schön anschaulichen Vergleiche zu gerichteten Graphen recht wenig, da, um zum Beispiel ein Äquivalent der Merging-Rule für QOBDDs ausführen zu können, völlige Gleichheit der mit komplexen Amplituden belegten Kanten vorliegen muss. Der nächste Abschnitt wird anfangs versuchen das Problem der Reduktion eines QOBDDs anschaulich anzugehen, um die Behauptung, dass eine Reduktion nicht einfach möglich ist, zu stützen. Bearbeiten lässt sich das Problem nur in abstrakt algebraischer Form, was aber lediglich in Grundzügen angedeutet werden soll. 10.2. Reduktion eines QOBDDs Der Produkt-QOBDD, den wir im letzten Abschnitt konstruiert haben, ist leider unnötig groß, da er alle kombinatorisch möglichen Zustandspaare in die Basis des neuen Hilbertraumes aufnimmt, ohne danach zu fragen, ob sie im Verlauf einer Berechnung tatsächlich einmal eine von Null verschiedene Amplitude tragen können. Betrachten wir zum Beispiel zwei QOBDDs in der Graphendarstellung. Nach dem Test der ersten Variable x1 wechseln beide QOBDDs von ihrem Startzustand zu einem Zustand der nächsten Schicht. Dann ist es offensichtlich, dass die Zustandspaare mit genau einem Startzustand niemals benutzt werden, da die beiden Startzustände gleichzeitig verlassen wurden, und sie auch niemals wieder erreicht werden können, da G azyklisch ist. Eine Möglichkeit der Minimisierung des Produkt-QOBDDs wäre also, die Zustände durchzugehen, und anhand von Beobachtungen, wie die des letzten Absatzes, bestimmte Zustände aus der Basis von H auszuschließen, um somit die Berechnungsbreite zu reduzieren. Es ist allerdings sehr schwierig, zu garantieren, dass dabei tatsächlich alle unnützen Zustände gefunden werden. Eine weitere Idee, wie man einen QOBDD verkleinern könnte, entspringt der Beobachtung, dass die auftretenden Matrizen, zumindest bei der Berechnung klassischer Probleme, wie es ja Boolesche Funktionen auch sind, häufig lediglich Permutationen sind. Dies ist immer dann der Fall, wenn die aktuelle Transformation eine deterministische Berechnung repräsentiert. Ein prominentes Beispiel im Zusammenhang mit QOBDDs ist das Einlesen eines Inputbits. Hier muss das System sicher das Bit verstanden haben, wenn korrekt weitergerechnet werden soll. Die Hoffnung ist, Permutationen von Nichtpermutationen zu trennen, und den deterministischen Bereich klassisch reduzieren zu können. Damit das 79 10. Synthese und Reduktion von QOBDDs funktioniert, muss sich der deterministische Bereich in den unteren Lagen befinden, da sich die deletion rule wie auch die merging rule auf die unter einem Knoten liegenden Kanten beziehen. Es ist zwar möglich, sämtliche Nicht-Permutationen in die erste Transformation zu schieben, und so den QOBDD von unten her reduzieren zu können, allerdings wird die erste Transformation damit explizit vom gesamten Input abhängig, und arbeitet auf der vollen Breite von H, wie das folgende Beispiel zeigt. Die Konsequenz ist, dass 2n Matrizen simultan darauf zu untersuchen sind, ob sie bestimmte Basisvektoren nicht benötigen, die bei der klassischen Reduktion wegrationalisiert wurden, leider ein hoffnungsloses Unterfangen. Beispiel 10.12 Angenommen, wir haben einen QOBDD vorliegen, dessen Transformationen allesamt Permutationen sind. Seine Darstellung sei |ψi = Pxǫnn · ... · Pxǫ11 |1i. Er sei bereits klassisch reduziert. Nun fügen wir wegen unserer sukzessiven Synthese aus einem fiktiven Quantenschaltkreis eine Einqubit-Hadamardtransformation H1i = idi−1 ⊗ H1 ⊗ idw−i auf Qubit |qi i an. Sie wirkt direkt auf |ψi. Vor der Synthese mit dem nächsten Teil-QOBDD muss diese Nichtpermutation nun in die erste Transformation geschoben werden, damit nach der Synthese die Transformationen 2 bis n nur Permutationen sind und wieder klassisch reduziert werden kann. Da die Hadarmardtransformation aber nicht mit den Permutationen, die zusätzlich noch von der Eingabe abhängen, kommutiert, sieht unser QOBDD nach dem Hochschieben folgendermaßen aus: H1i |ψi = H1i · Pxǫnn · ... · Pxǫ11 · |1i n−1 = Pxǫnn · ((Pxǫnn )−1 · H1i · Pxǫnn ) · Pxǫn−1 · ... · Pxǫ11 · |1i .. . = Pxǫnn · ... · ((Pxǫ22 )−1 · ... · (Pxǫnn )−1 · H1i · Pxǫnn · ... · Pxǫ11 ) · |1i ,...,ǫn = Pxǫnn · ... · Pxǫ22 · Txǫ11,...,x · |1i n Wir waren zwar erfolgreich in unserem Vorhaben, dass bis auf die erste Transformation alle anderen Transformationen Permutationen sind, und könnten jetzt munter von unten her klassisch reduzieren. Allerdings haben wir uns diese Situation damit erkauft, dass nun die erste Transformation von allen n Eingabebits abhängt. Selbst wenn wir bis zum zweiten Niveau einen wunderbar schlanken QOBDD erhalten hätten, müsste auch die erste Transformation darauf getestet werden, ob sie mit entsprechend wenigen Basisvektoren auskommen kann, da unser QOBDD auf einer festen Breite, also Dimension des zugrundeliegenden Hilbertraumes rechnet, und diese richtet sich nach der breitesten Stelle. Effektiv handelt es sich bei der ersten Transformation aber um 2n verschiedene Matrizen. Wir haben also unser Problem nicht nur nicht vereinfacht, sondern es 80 10.2. Reduktion eines QOBDDs sogar exponentiell aufgeblasen, da im Urzustand nur 2n verschiedene Matrizen vorgelegen haben. Das Problem muss also grundsätzlich anders angegangen werden. Wir interessieren uns für den minimalen Unterraum U von H, den die Berechnung benötigt. Dazu wäre es hilfreich, von jeder der 2n Transformationen die Drehebenen und Spiegelachsen zu bestimmen. Der von ihnen aufgespannte Raum ist U . Die alternative Vorgehensweise, die eventuell algorithmisch günstiger ist, betrachtet zu jeder der 2n Transformationen den fixen Unterraum und schneidet diese alle. Dadurch erhält man H \ U . Um die Unterräume zu bestimmen, auf denen die Transformationen arbeiten, beziehungsweise, die sie fix lassen, hilft die Algebra, genauer die Darstellungstheorie [22], die sich mit der Repräsentation von Gruppenelementen als Matrizen beschäftigt, die auf einem Vektorraum operieren. Dort ist die Hauptaufgabe die Unterräume zu bestimmen, die von allen Gruppenelementen in sich überführt werden. Unsere Anforderung ist schwächer. Wir interessieren uns erst einmal für eine einzelne Matrix, und wollen die fix gelassenen Unterräume von den nur invarianten Unterräumen, die also in sich selbst abgebildet werden, der Dreh- beziehungsweise Spiegelebene, trennen. Wir wollen eine Matrix in ihre irreduziblen Bestandteile zerlegen, und dann entscheiden, welcher Unterraum jeweils bei der Berechnung eine Rolle spielt. Sollte ein Unterraum zweidimensional sein, so ist er eine Drehebene. Ist ein Unterraum eindimensional, so kann es sich entweder um eine irrelevante Dimension handeln, die fix bleibt, oder aber dies ist die Normale auf eine Spiegelebene. Nur leider müssen diese abstrakten Aspekte konkret umgesetzt werden. In den mathematischen Betrachtungen der Darstellungstheorie werden nur Äquivalenzklassen behandelt, so dass keine Vorschläge gemacht werden, wie denn nun eine konkrete Matrix in Blockdiagonalform gebracht werden kann. Diese Techniken finden sich in den Dissertationen von Minkwitz [44], der den Zusammenhang zwischen schneller Fouriertransformation und der Darstellungstheorie beschreibt, und Püschel [48], der dessen Ergebnisse verallgemeinert und konkrete Algorithmen angibt, mit denen die Zerlegungsmatrizen gefunden werden können, die aus einer beliebigen Matrix eine Blockdiagonalmatrix machen. Die Wiedergabe der verwendeten Technik würde aber den Rahmen dieser Arbeit sprengen. Also sollen lediglich die Hauptideen kurz aufgelistet werden. Ziel von [48] ist es, ein Algorithmenpaket aufzubauen, welches eine effiziente Zerlegung von Matrizen, ja sogar ganzer Gruppen, in ihre irreduziblen Bestandteile realisiert. Dazu werden viele der allgemeinen algebraischen Sätze ins Konkrete verfeinert, und darauf aufbauend ein Verfahren angegeben, mit dem sukzessive die Zerlegungsmatrix aufgebaut wird, so dass in jedem Schritt ein irreduzibler Bestandteil herausgefiltert wird. Außerdem werden die irreduziblen Bestandteile sortiert ermittelt. Dazu wird eine Matrix auf Symmetrien untersucht, und die gefundenen Symmetrien genutzt, um die Matrix zu zerlegen. Wir können nun für jede der 2n Transformationen den fixen Unterraum bestimmen, indem wir uns die irreduziblen Komponenten besorgen, die identischen Abbildungen herausfiltern und über die Zerlegungsmatrix die zur Drehebene beziehungsweise Spiegelnormalen gehörigen Eigenvektoren bestimmen. Nun fassen wir alle so erhaltenen Vektoren zusammen, und bestimmen mit Hilfe eines Orthonormierungsverfahrens eine Basis des Berechnungsraumes. Diese liefert uns auch direkt die Basiswechselmatrix, die alle 2n Matrizen in Blockdiagonalform überführt, wobei durch Umbenennung dafür gesorgt sei, dass die in 81 10. Synthese und Reduktion von QOBDDs allen Transformationen überflüssigen Dimensionen die letzten k Vektoren der neuen Basis sind. Nun kann man den Hilbertraum H des QOBDDs einschränken, indem die letzten k Basiszustände herausgeteilt werden. Die Matrizen der Transformationen verkleinern sich um die letzten k Zeilen und Spalten. Zusammen mit dem anfänglichen Herausteilen von Zuständen, die genau einen der alten Startzustände enthalten, und die aufgrund der ersten Transformation nicht erreicht werden können, und dem abschließenden Zusammenfassen der akzeptierenden und zurückweisenden Zustände in jeweils einem Basisvektor ergibt die oben genannte Art der Reduktion schon eine deutlich verkleinerte Darstellung der Booleschen Funktion als QOBDD. Dies ist eine sehr formale Minimisierung eines QOBDDs, die aber einen praktikablen Eindruck erweckt. Leider trügt das. Zum Beispiel kann die Realisierung der Berechnung dermaßen ungünstig gewählt sein, dass mehr Dimensionen in den einzelnen Transformationen benutzt werden, als zur Darstellung der Booleschen Funktion nötig gewesen wäre. Der geschickte Wechsel in eine andere Basis macht einen der Hauptvorteile des Quantum Computing aus. Die Möglichkeit an jeder Stelle der Berechnung beliebig die Basis zu wechseln wird durch obigen Weg einen QOBDD zu reduzieren gar nicht berücksichtigt. Er funktioniert nur, wenn die Matrizen simultan diagonalisierbar sind, also eine gemeinsame Basis aus Eigenvektoren besitzen. Aber selbst dann ist nicht gewährleistet, dass keine Optimierung mehr möglich ist. Obwohl die strukturelle Reduktion im klassischen sehr schön anschaulich über die deletion rule und die merging rule erreichbar war, ist es im Quantenfall nicht so einfach. Erschwerend kommt hinzu, dass die Übergangsamplituden kontinuierliche Werte annehmen können. Also sind solche Dinge, wie isomorphe Teilbäume extrem unwahrscheinlich, man muss sich zwangsläufig auf ein formales Niveau zurückziehen und kann nicht auf anschauliche Argumente zurückgreifen. Aus diesen Gründen ist die strukturelle Reduktion eines QOBDDs im Rahmen dieser Arbeit nicht erreichbar gewesen. 10.3. Reduktion und Synthese einfacher Quantenschaltkreise Auch wenn man davon absieht, dass der letzte Abschnitt das Problem nicht einmal überblickweise abschließend behandeln konnte, bleiben die dort besprochenen Techniken ziemlich abstrakt. Um nun aber doch eine gewisse Vorstellung davon zu bekommen, welche Schwierigkeiten sich bei der Reduktion von QOBDDs ergeben, soll in diesem Abschnitt eine abgespeckte Version von Quantenschaltkreisen synthetisiert werden. Wir erlauben als einzige Gatter die Einqubithadamardtransformation H1 und das zweiwertige XOR. |x1i |x2i H |H1 · x1i |(H1 · x1) ⊕ x2i Abbildung 10.1.: Eine Verallgemeinerung des Schaltkreises aus Abbildung 3.3 als Beispiel für einen Quantenschaltkreis, der lediglich die Hadarmardtransformation und XOR als Gatter enthält. Er soll als anschauliches Beispiel dienen, um die Verfahren die dieser Abschnitt einführt zu illustrieren. 82 10.3. Reduktion und Synthese einfacher Quantenschaltkreise Damit der gesamte Hergang der Synthese nachvollziehbar wird, beginnen wir in Abschnitt 10.3.1 mit dem Einlesen der Eingabebits, für das anfangs ebenfalls ein eigener QOBDD aufgebaut werden muss, analog zum ITE-Algorithmus, der eine Implementation von klassischen OBDDs angibt [43]. Danach wird Abschnitt 10.3.2 die Konsequenzen der Hadamardtransformation eines Quantenregisters beleuchten. Die Synthese zweier durch XOR verknüpfter QOBDDs wird Thema von Abschnitt 10.3.3 sein. Abschließend wird in Abschnitt 10.3.4 untersucht, inwieweit die Beschränkung auf diese zwei einfachen Gatter eine Erleichterung der Reduktion des resultierenden QOBDDs gebracht hat. Als Bild kann man sich eine abgewandelte Form des Quantenschaltkreises zur Herstellung zweier verschränkter Qubits aus Abbildung 3.3 vorstellen, wie sie hier in Abbildung 10.1 gegeben ist. Die nächsten Abschnitte werden sich nun von links nach rechts durch diesen Quantenschaltkreis bewegen und die dort nötigen Schritte mit ihren Schwierigkeiten besprechen. 10.3.1. Das Einlesen der Eingabebits als QOBDD Der erste Schritt bei der Realisierung eines Quantenschaltkreises als QOBDD ist der, die Eingabebits einzulesen. Schließlich werden die Leitungen eines Quantenschaltkreises ganz zu Beginn mit den Eingaben belegt. Wenn wir nun von links nach rechts den Schaltkreis entlang gehen, und jedes auftauchende Gatter zu einer Erweiterung beziehungsweise Synthese der bereits existierenden atomaren QOBDDs nutzen, müssen anfangs Mini-OBDDs erzeugt werden, die jeweils das Einlesen eines Bits besorgen. |x1i |x2i H |H1 · x1i |(H1 · x1) ⊕ x2i Abbildung 10.2.: Wir beginnen ganz links damit, dass die beiden Eingabebits x1 und x2 auf die beiden Leitungen des Quantenschaltkreises gelegt werden. Da wir den Quantenschaltkreis aus Abbildung 10.1 in einen QOBDD umwandeln wollen, werden wir hier gleich zwei Bits einlesen. Die zwei folgenden QOBDDs stellen also die Funktionen f1 (x1 ) = x1 und f2 (x2 ) = x2 mit Fehler Null dar. Wir wollen sie später vereinigen. Da sie gerade noch völlig verschiedene Eingabebits betrachten, müssen sie erst einmal zu QOBDDs mit gleicher Anzahl von Variablen und gleicher Variablenordnung gemacht werden. Dazu müssen wir also auch den Input der beiden QOBDDs jeweils um ein im Augenblick noch unsinniges Bit erweitern. Die Darstellung als Graph lebt in einem dreidimensionalen Hilbertraum, da wir die drei orthogonalen Unterräume der akzeptierenden, zurückweisenden und nichtterminalen Zustände benötigen. Wir wollen hier aber gleich mit der speichergünstigen Variante arbeiten. Für die zwei Senken des untersten Niveaus benötigen wir eine Breite von zwei. Demnach ist die Basis von Hf1 {|p1 i, |p2 i} und die von Hf2 ist {|q1 i, |q2 i}, wobei der ersten Dimension jeweils der Startzustand, sowie der zurückweisende Zustand in den verschiedenen Schichten zugeordnet sei, der zweiten der akzeptierende Zustand in der terminalen Schicht. Der QOBDD Gf1 entwickelt sich bezüglich der Einlesetransformation und danach 83 10. Synthese und Reduktion von QOBDDs bezüglich der Identität, da er nicht von x2 abhängt. 0 1 1 0 1 0 Sx1 = Sx1 = 1 0 0 1 Sx12 = id2 Sx02 = id2 In der ersten Schicht befindet sich der Zustand mit Amplitude 1 im Startzustand |1i, der Übergang von |2i in der zweiten Spalte der Matrix Tx1 ist also unbestimmt. Allerdings ist die obige Form die einzige Erweiterung auf eine unitäre Transformation. Bei Gf2 ist es umgekehrt. 0 Tx11 = id2 id2 Tx1 = 0 1 1 0 1 0 Tx2 = Tx2 = 1 0 0 1 Analog zu obigem Vorgehen kann man nun n QOBDDs für alle n Eingabebits eines Quantenschaltkreises erstellen. Sie alle beziehen sich auf die gleiche Variablenordnung und -anzahl. Demnach enthalten sie jeweils (n − 1) mal die Identität als Transformation. Um das weiterführende Einbauen der wirklichen Transformationen vorzubereiten, könnte man diese n Mini-QOBDDs bereits vereinigen. Das würde allerdings den Vorteil zunichte machen, dass wir in jedem Schritt eine recht überschaubare Situation erhalten, wenn es ans Reduzieren geht, da wir den QOBDD nach und nach aufbauen wollen. Formal wäre eine Synthese eines QOBDDs aus einem Quantenschaltkreis natürlich sehr einfach, wie bereits die allgemeine Synthese von zwei beliebigen QOBDDs gleicher Variablenordnung. Wir erstellen obige Mini-QOBDDs, vereinigen sie alle zu einem großen QOBDD auf einem 2n dimensionalen Hilbertraum, der am Ende den Input gespeichert hält. Die Darstellung des QOBDD bezüglich der Eingabe (ǫ1 , . . . , ǫn ) sei |ψi = Pxǫnn · ... · Pxǫ11 |1i. Die Einlesetransformationen sind allesamt Permutationen. Diese Darstellung lässt sich nicht weiter reduzieren, da am Ende eine sichere Repräsentation der Eingabe vorliegen muss, und dafür benötigen wir eine Breite von 2n . Jede weitere Transformation hängt nun nicht mehr von der Eingabe ab, da sie ja durch die einzelnen Dimensionen codiert ist. Sie können ohne weiteres links an die obige Darstellung angesetzt werden, und formal mit der n-ten Permutation verschmolzen werden, um nur n vom Input abhängende Transformationen zu haben. Dass dies nicht ganz im Sinne unserer Idee ist, ist offensichtlich. Wir haben ein QOBDD exponentieller Breite, das in dieser Form nicht vernünftig reduziert werden kann, wie ja bereits in Beispiel 10.12 besprochen wurde. Mehr unserem Ziel entsprechend ist es also, die Mini-QOBDDs nicht gleich anfangs zu vereinigen, sondern nur dann, wenn zwei Leitungen des Quantenschaltkreises durch eine übergreifende Transformation, in unserem vereinfachten Fall XOR, miteinander verbunden werden. Der so erhaltene QOBDD hat dann eine sehr gut definierte Struktur, und es kann der Versuch einer Reduktion der neuen Breite gestartet werden. Um aber diese definierte Situation in unserem Fall genauer zu kennen, müssen die nächsten Abschnitte erst einmal die Auswirkungen der Anwendung der zwei erlaubten Transformationen untersuchen. 84 10.3. Reduktion und Synthese einfacher Quantenschaltkreise 10.3.2. Anfügen des Hadamardgatters zu einem QOBDD |x1i |H1 · x1i H |x2i |(H1 · x1) ⊕ x2i Abbildung 10.3.: Als nächster Schritt soll die obere Leitung hadamardtransformiert werden. Das eine erlaubte Gatter in unserer vereinfachten Ausgangssituation ist die Hadamardtransformation H1 auf einem Qubit, wie sie in Definition 3.13 gegeben ist. Sie liegt in der Form H1i = idi−1 ⊗ H1 ⊗ idw−i vor, die bereits in Beispiel 10.12 benutzt wurde. Wie aus Abbildung 10.1 ersichtlich ist, werden durch das Einfügen einer Hadamardtransformation keine zwei Teil-QOBDDs zusammengeführt, sondern lediglich die letzte Transformation des aktuellen QOBDDs, der die entsprechende Leitung beinhaltet, im Falle unseres Beispieles also Gf1 . Diese Art der Erweiterung des QOBDDs ändert wie bereits besprochen nur die letzte der Transformationen. In unserem Beispiel wird also ! ! 1 1 1 1 Sx12 = H1 · id = √ 2 √1 2 √ 2 − √12 und Sx02 = H1 · id = √ 2 √1 2 √ 2 − √12 . Dass nach dem Einfügen einer Hadamardtransformation keine Reduktion möglich ist, leuchtet ein, da wir annehmen, dass vor der Aufnahme des nächsten Gatters die QOBDDs bereits reduziert wurden, und die Hadamardtransformation die Breite nicht verändert, sondern eher noch, im Sinne von Abschnitt 10.2, den zur Berechnung genutzten Unterraum vergrößert. Auf jeden Fall haben wir mit einer Hadamardtransformation die Permutationseigenschaft der letzten Transformation zerstört. Dies erschwert uns nachher die Reduktion. Die Hadamardtransformation nach oben zu verschieben, bringt uns auch keine Vereinfachung, wie wir bereits in Beispiel 10.12 gesehen hatten. 10.3.3. Die Synthese zweier mit XOR verknüpfter QOBDDs Spannender wird die Situation, wenn tatsächlich Leitungen des Quantenschaltkreises verbunden werden, und Produkt-QOBDDs konstruiert werden müssen. Dieser Fall soll in diesem Abschnitt durchgegangen werden. Dazu ist zu sagen, dass das XOR-Gatter klassischer Natur ist. Es ist also prinzipiell möglich, einen XOR-QOBDD genauso wie den klassischen OBDD für XOR mit einer Breite von zwei darzustellen, wie es am Ende von Abschnitt 9.2 gezeigt wurde. Insofern sind die umständlichen Darstellungen dieses Abschnitts nur zu Demonstrationszwecken gedacht. Es ist aber einfacher ein Problem, dessen Lösung, wie hier über die klassische Korrespondenz, bekannt ist, möglichst nah an der formalen Definition zu halten, um deren Arbeitsweise zu erklären, als ein Beispiel zu wählen, dessen Lösung im Dunkeln verbleibt. Wir wollen also für die Synthese des in Abbildung 10.1 dargestellten Quantenschaltkreis die in den letzten beiden Abschnitten ermittelten Teil-QOBDDs nun bezüglich XOR zusammenfügen, und dabei möglichst formal, wie in Abschnitt 10.1 eingeführt, vorgehen. 85 10. Synthese und Reduktion von QOBDDs |x1i |H1 · x1i H |x2i |(H1 · x1) ⊕ x2i Abbildung 10.4.: Als letzter Syntheseschritt werden die beiden Leitungen über das XORGatter verbunden. Wir müssen also die bis hierhin eigenständigen QOBDDs verschmelzen. Dazu ermitteln wir erst einmal den Produkthilbertraum. H = Span({|1i ⊗ |1i, |1i ⊗ |2i, |2i ⊗ |1i, |2i ⊗ |2i, }) = Span({|1, 1i, |1, 2i, |2, 1i, |2, 2i, }) = Span({|1i, |2i, |3i, |4i}) Der Startzustand des Synthese-QOBDDs ist |1i, da dieser das Produkt aus den zwei ursprünglichen Startzustände ist. Die Berechnung bezüglich der Eingabe x = (ǫ1 , . . . , ǫn ) ist G : |ψi = (Sx2 ⊗ Tx2 )ǫ2 · (Sx1 ⊗ Tx1 )ǫ1 |1i. Die einzelnen Transformationen sind (Sx1 ⊗ Tx1 )1 (Sx1 ⊗ Tx1 )0 (Sx2 ⊗ Tx2 )1 (Sx2 ⊗ Tx2 )0 0 0 0 0 = 1 0 0 1 1 0 0 1 = 0 0 0 0 0 1 1 = √ 2 0 1 1 1 0 = √ 1 2 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 , 0 0 0 0 = id4 , 0 1 0 1 1 0 , 0 −1 −1 0 1 0 0 1 . −1 0 0 −1 Um nun die Menge Qacc richtig zuzuordnen, müssen wir uns noch klarmachen, welche Boolesche Funktion unser Quantenschaltkreis überhaupt darstellen soll. Eigentlich interessierte uns in Abschnitt 3.6 die Verschränkung der zwei Qubits. Dies ist nun keine Boolesche Funktion. Wenn wir aber annehmen, dass die Hadamardtransformation lediglich Fehlerquelle in dem oberen Teil-QOBDD ist, und wir eigentlich nur XOR berechnen wollen, 86 10.3. Reduktion und Synthese einfacher Quantenschaltkreise ergäbe sich die folgende Zuordnung: Racc = {|2i, |3i} = {|1, 2i, |2, 1i} Damit haben wir den zum Quantenschaltkreis aus Abbildung 10.1 gehörigen QOBDD gemäß Definition 9.31 vollständig bestimmt. Nun ist aber die Frage, ob es möglich ist, diesen weiter zu reduzieren. Dieser Frage widmet sich der folgende abschließende Abschnitt dieses Teils. 10.3.4. Die Reduktion des synthetisierten QOBDDs Eine völlig allgemeine Reduktion hat sich bereits in Abschnitt 10.2 als schwierig erwiesen. Wir werden uns hier also speziell an der Situation festhalten, die der Beispielquantenschaltkreis aus Abbildung 10.1 liefert. Eine naheliegende Idee ist nun, sich wieder auf die Intuition der klassischen Reduktion zurückzubesinnen. Deswegen gibt Abbildung 10.5 die Graphendarstellung des aktuellen QOBDDs an. |1i |2i |3i |4i x1 x1 x1 x1 x2 x2 x2 x2 (Sx1 ⊗ Tx1 ) E0 E1 Amplituden 1 √1 2 − √12 (Sx2 ⊗ Tx2 ) 0 1 1 0 Abbildung 10.5.: Graphendarstellung des QOBDDs der aus dem Schaltkreis in Abbildung 10.1 synthetisiert wurde. Nun können wir das bekannte Arsenal verwenden. Das unterste Niveau ist reduzierbar, da es je zwei akzeptierende wie zurückweisende Knoten gibt. Dort benötigen wir also nur zwei Knoten, wenn wir die zwei gleich markierten Knoten jeweils vereinigen. Wir werden uns erst einmal durch den Graphen reduzieren, und im Nachhinein begutachten, wie weit wir die einzelnen Schichten wieder auffüllen müssen, um überall dieselbe Breite vorliegen zu haben. Das Resultat der Vereinigung ist in Abbildung 10.6 gegeben. Eine weitere Überlegung, die unseren QOBDD verkleinern kann, ist die Beobachtung, dass der Startzustand |1i durch (Sx1 ⊗ Tx1 ) unabhängig vom Input nur auf die Zustände |1i beziehungsweise |2i der zweiten Schicht abgebildet wird. In der zweiten Schicht sind also die Zustände |3i und |4i überflüssig. Dass wir in der obersten Schicht nur den Startzustand |1i benötigen, ist offensichtlich. Wenn wir sie herausnehmen, haben wir in unserem QOBDD überall eine Breite von 2. Die Graphendarstellung des so reduzierten QOBDDs zeigt Abbildung 10.7 Wie man nun aber leicht sehen kann, hängt der QOBDD nicht mehr von der Variable x2 ab, da zwischen der zweiten und dritten Schicht die Kanten aus E1 und E0 völlig parallel 87 10. Synthese und Reduktion von QOBDDs |1i |2i |3i |4i x1 x1 x1 x1 x2 x2 x2 x2 0 E0 E1 Amplituden 1 √1 2 1 √ − 2 1 Abbildung 10.6.: Die akzeptierenden, sowie die zurückweisenden Knoten wurden jeweils vereinigt. |1i |2i x1 x1 x2 x2 E0 E1 Amplituden 1 √1 2 0 1 Abbildung 10.7.: Die Zustände |3i und |4i, die im Laufe einer Berechnung in der zweiten Schicht niemals angenommen werden, sind dort herausgeteilt. verlaufen. Wenn man klassisch weiter reduziert, würde die merging rule die beiden Knoten der zweiten Schicht vereinigen und anschließend die deletion rule die zweite Schicht ganz herausteilen. Das Ergebnis hängt also noch nicht einmal von der ersten Variablen ab. Dieses Ergebnis aus dem Quantenschaltkreis oder der Graphendarstellung von Abbildung 10.5 herauszusehen ist nicht einfach. Für den Schaltkreis hatten wir allerdings auch noch nicht festgelegt, welche Boolesche Funktion wir damit darstellen wollen. Erst durch die Festlegung der akzeptierenden Zustände haben wir den Test der beiden Variablen überflüssig gemacht. Ein Blick auf Abbildung 10.5 macht deutlich, dass eine andere Wahl als |2i und |3i auch nicht zu diesem Ausgang geführt hätte. Das Ergebnis wäre allerdings deutlich weniger überraschend gewesen, wenn wir vorher eine Analyse der Situation vorgenommen hätten. Die Hadamardtransformation der oberen Leitung des Quantenschaltkreises führt zu den Zuständen |−i beziehungsweise |+i, je nach Wert von x1 . Diese sind eine gleichwertige Superposition der Zustände |0i und |1i bis auf Vorzeichen. Die Verkettung dieser Zustände 88 10.3. Reduktion und Synthese einfacher Quantenschaltkreise mit der Eingabe x2 mittels XOR liefert logischerweise auch immer eine gleichwertige Superposition von |0i und |1i, die verschiedenen Ergebnisse unterscheiden sich lediglich in einem Vorzeichen. Da dieses bei einer Messung, die wir durchführen müssen, wenn wir ein klassisches Bit als Ergebnis erhalten wollen, wegfällt, sind die Ergebnisse für den Beobachter alle identisch. Dies erklärt das Zusammenbrechen des QOBDDs unter der Reduktion. Die Reduktion bedarf also eines umständlichen Weges, den QOBDD in seine Graphendarstellung zu übersetzen, nachdem er durch die Synthese erst einmal in der abstrakten Form gegeben ist. Dieser Graph kann dann mit den klassischen Reduktionsregeln verkleinert werden, wenn eine so günstige Situation wie in unserem Beispiel vorliegt, dass alle von Null verschiedenen Übergangsamplituden einer Transformation den gleichen Betrag haben. Allerdings ist dies in unseren vereinfachten Quantenschaltkreisen der Fall. Die Hadamardtransformation hat nur √12 mit unterschiedlichem Vorzeichen als Einträge, XOR ist sowieso klassisch, hat also nur die Einträge 0 und 1. Jedes Produkt der auftretenden Matrizen, sowie jede durch Synthese via XOR entstandene Transformation enthält nur Nullen und Einsen, wenn man den richtigen Vorfaktor herauszieht. Dies könnte jetzt der Ausgangspunkt für detaillierte Analysen sein, welche praktisch relevanten Booleschen Funktionen sich mit diesen zwei Gattern darstellen lassen, um abschätzen zu können, welchen Stellenwert das Ergebnis dieses Abschnittes hat. Außerdem schließen sich Untersuchungen an, um welche Gatter dieses vereinfachte Quantenschaltkreismodell erweitert werden kann, ohne die Eigenschaft der Reduzierbarkeit zu verlieren. Dies würde aber den Rahmen dieser Arbeit zeitlich wie platzmäßig sprengen. Also schließen wir diesen Teil mit der Feststellung, dass man die Reduktion eines QOBDDs nicht allgemein, wohl aber in einer Teilmenge der Probleme durchführen kann. 89 10. Synthese und Reduktion von QOBDDs 90 11. Diskussion und Ausblick Dieses Kapitel soll noch einmal abschließend die in dieser Arbeit behandelten Themen durchgehen, jeweils die Resultate zusammenfassen und beschreiben, in welche Richtung sich Fragen ergeben haben, die es nun im Anschluss zu klären gilt. Der letzte Abschnitt ist einer persönlichen Reflektion gewidmet. Insgesamt ist aus dieser Arbeit ein Erlebnisbericht geworden, der den Weg beschreibt von den anfänglichen Berührungsängsten aber auch der Faszination, die die Quantenmechanik mit sich bringt, wenn sie kurzerhand mathematisch unumstößlich die sichere Alltagssicht auf unsere Welt und unsere Wahrnehmung ins Wanken bringt, bis hin in die tiefsten Tiefen des Quantum Computing, einem florierenden Forschungsgebiet, dessen technische Anwendung noch in den Sternen steht. Der Pioniergeist, der dem Thema noch anhaftet, wird aber im Laufe der Arbeit massiv gedämpft, da man, um sich wirksam in diesen Forschungszweig einzuklinken, schnell bei verstaubten Büchern über Darstellungstheorie landet. Trotzdem liefert diese Arbeit mehr als eine Auflistung von Leidensstationen, nämlich den Blick durch die Tür hinaus ins Neuland des Quantum Computing. Es zielstrebig zu durchwandern muss aber auf einen späteren Zeitpunkt vertagt werden. 11.1. Brechen klassischer Verschlüsselung mit Quantenalgorithmen Der Faktorisierungsalgorithmus von Shor hat die Hoffnung beziehungsweise Befürchtung geweckt, ein Quantencomputer wäre in der Lage sämtliche Verschlüsselungsverfahren brechen zu können, die sich auf ein schwer zu berechnendes mathematisches Problem stützen. Dass das Ergebnis von Grover der Goldgräberstimmung im Quantum Computing einen starken Dämpfer verpasst hat, hat an dieser Allmachtsvermutung wenig Abbruch getan. In dieser Arbeit wurde ein Authentifizierungsverfahren untersucht, dass sich auf die Vermutung stützt, dass es nicht effizient möglich ist, in einem Restklassenring Quadratwurzeln zu berechnen. In der Tat lassen sich Ähnlichkeiten zu den durch Quantenalgorithmen gelösten Problemen feststellen. Ein Brechen des Protokolls durch einen Quantencomputer einscheint machbar. 11.1.1. Resultate Die Suche nach einem Quantenalgorithmus, der das Protokoll bricht, führt aber sehr schnell tief in die Feinheiten des Quantum Computing: der geschickten Entwicklung einer speziellen auf das Problem angepassten diskreten Fouriertransformation. Dieser Trick hat bisher allen erfolgreichen Quantenalgorithmen zu ihrer exponentiellen Beschleunigung verholfen. Der naive Ansatz, der anfangs beschrieben wurde, zeigt noch einmal deutlich, dass es im Quantum Computing nichts umsonst gibt. Um konkrete Probleme zu lösen, ist der 91 11. Diskussion und Ausblick gesamte Methodenapparat dieser Forschungsrichtung vonnöten. Teil II zeigt aber lediglich die Techniken auf, ohne eine konkrete Umsetzung in einem Algorithmus vorzuschlagen. Mit dem Stabilisator der veröffentlichten Quadratzahl ist eine sogenannte versteckte Untergruppe identifiziert, deren Suche mittels einer abgewandelten Quantenfouriertransformation realisiert werden kann. Dies wäre der mögliche Lösungsweg für unser Problem im Rahmen der bekannten Techniken des Quantum Computing. Allerdings bedarf diese Lösung noch einer genaueren Ausformulierung, sowie einer detaillierten Laufzeitanalyse, da die Nähe des Wurzelziehens zu Grovers Algorithmus die Vermutung nahelegt, dass der beschriebene Weg nicht effizient arbeitet. 11.1.2. Offene Fragen Wie bereits im letzten Abschnitt angedeutet, bleiben einige Punkte offen, die sich direkt an diese Arbeit anschließen, da noch nicht abschließend geklärt ist, ob wirklich ein effizienter Quantenalgorithmus entwickelt wurde, der das Fiat-Shamir Protokoll bricht, oder ob er doch an der mangelnden Beschleunigung des Algorithmus von Grover scheitert. Leider konnte in dieser Arbeit kein neuer Beitrag für den Fundus an Rechentricks des Quantum Computing geleistet werden, sondern es wurden lediglich altbekannte Techniken untersucht, ob sie für dieses spezielle Problem eingesetzt werden können. Dies hat zwar pädagogischen Wert, hauptsächlich für den Verfasser, ist aber von mäßigem wissenschaftlichem Interesse. 11.2. Quantum Ordered Binary Decision Diagrams Deutlich interessanter haben sich dagegen die QOBDDs erwiesen, da sie ein erfolgreiches klassisches Konzept übernehmen, das noch nicht vollständig auf den Quantenfall übertragen wurde. QOBDDs sind ein Mittel platzbeschränkte Quantenalgorithmen zur Auswertung klassischer Boolescher Funktionen zu beschreiben. Insofern sind sie ein probates Mittel Quantenplatzkomplexität zu untersuchen. Ein besonders wichtiges Resultat klassischer OBDDs ist die Eindeutigkeit der Reduktion und die Möglichkeit einer einfachen Synthese eines OBDDs aus einer Booleschen Formel. Dies für QOBDDs ebenfalls zu finden ist sehr unwahrscheinlich, nicht zuletzt wegen der geringen Wahrscheinlichkeit, gleich gewichtete Kanten in einem allgemeinen Quantenbranchingprogramm zu finden, die man vereinigen könnte. Als Analogon für die Synthese klassischer OBDDs aus Booleschen Formeln bietet sich im Quantenfall die Synthese eines QOBDDs aus Quantenschaltkreisen an, die eine übliche Beschreibung von Quantenalgorithmen sind. Diese können von links nach rechts in der zeitlichen Abfolge der Berechnung durchgegangen werden, und sukzessive jedes Gatter in den QOBDD mit aufgenommen werden. 11.2.1. Resultate Die Synthese eine QOBDDs aus einem Quantenschaltkreis ist sehr gradlinig zu realisieren. Die Produktkonstruktion zweier QOBDDs mit derselben Variablenordnung ist dank 92 11.2. Quantum Ordered Binary Decision Diagrams der Struktur des äußeren Produkts in der Quantenmechanik eine sehr natürliche Angelegenheit. Einzig das Einlesen der Eingabebits ist nicht sehr offensichtlich. Allerdings gibt hier der ITE-Algorithmus, der eine Beschreibung der im Rechner realisierten Auswertung eines OBDDs liefert, bereits alles nötige vor. Bevor die eigentlichen Transformationen des QOBDD betrachtet werden, wird für jedes Eingabebit ein QOBDD aufgebaut, der zwar alle Variablen bezüglich der vereinbarten Variablenordnung abruft. Aber lediglich ein spezielles Bit hat Auswirkungen, so dass es schließlich in diesem Teil-QOBDD gespeichert vorliegt. Diese Mini-QOBDDs werden dann nach Bedarf, also wenn es ein verbindendes Gatter gibt, vereinigt. Insofern konnte diese Arbeit auch eine vollständige Beschreibung der Synthese liefern. Allerdings gehört zu einer effizienten Synthese auch eine einfach mögliche Reduktion, da die Produktkonstruktion alleine die Dimension des unterliegenden Hilbertraumes explodieren lässt. Wünschenswert wäre also, wie im klassischen Fall nach jedem einzelnen Syntheseschritt eine Reduktion des neuen QOBDDs durchzuführen, um die Größe des QOBDDs konsequent klein zu halten. Dass die Reduktion eines QOBDD allgemein möglich ist, wurde in dieser Arbeit begründet in Frage gestellt. Die Frage nach der Eindeutigkeit stellt sich demnach natürlich nicht. Eine gewisse Reduktion ist aber dennoch denkbar, wenn auch unter Verwendung eines sehr aufwendigen Apparates algebraischer Techniken. Die zugrundeliegende Idee ist, dass alle unitären Transformationen nur Drehungen und Spiegelungen sind. Sie arbeiten also jeweils auf einem maximal zweidimensionalen Unterraum des Gesamtraumes. Man kann sich alle diese relevanten Unterräume heraussuchen, und den von ihnen aufgespannten Hilbertraum als verkleinerten Rechenraum benutzen. Allerdings ist nicht gesagt, dass die Transformationen schon bestmöglich gewählt sind. Es ist denkbar, dass das Problem mit wesentlich geringerer Breite berechnet werden kann, wenn einige Transformationen in eine geschicktere Basis transformiert würden. Diese Optimierung der Basis dürfte schon bei zwei kleinen Transformationen ein Problem sein, für das keine effiziente Lösung existiert. Wenn zum einen die Transformationen größer werden, zum anderen es deutlich mehr werden, ist an einen effizienten Algorithmus nicht mehr zu denken. Um die oben benannte Explosion der Registergröße einzudämmen, wurde eine vereinfachte Ausgangssituation eingeführt, indem angenommen wurde, dass die zu synthetisierenden Quantenschaltkreise als Gatter nur die Hadamardtransformation auf einem Qubit, sowie XOR enthalten. In diesem Fall ist es möglich, die klassischen Reduktionsregeln zu verwenden, und so zumindest eine gewisse Reduktion algorithmisch angeben zu können. 11.2.2. Offene Fragen Einige Punkte wurden bereits am Ende von Teil III angesprochen. Der in dieser Arbeit erreichte Stand regt direkt einige Erweiterungen an. Zum einen gilt es zu klären, welche Booleschen Funktionen überhaupt mit den vereinfachten Quantenschaltkreisen dargestellt werden können, zum anderen sind andere Transformationen darauf zu untersuchen, ob sie ähnlich angenehme Eigenschaften haben, dass wenn man sie erlaubt immer noch die angegebene Reduktion möglich ist. Desweiteren liefert Abschnitt 8.2 eine detaillierte Auflistung, welche Anforderungen eine 93 11. Diskussion und Ausblick vernünftige Darstellung Boolescher Funktionen erfüllen muss. Auch wenn nicht klar ist, welche der Punkte sich in welchem Maße realisieren lassen, wäre es doch lohnenswert, in diese Richtung weiterzuarbeiten. 11.3. Reflektion Eigentlich hatte ich mir nach meiner Physikdiplomarbeit geschworen, nie wieder etwas anzufangen, dessen Ausgang so im Ungewissen steht, dass nicht einmal klar ist, ob die Aufgabe lösbar ist. Irgendwie scheine ich dann aber doch in der Wissenschaft richtig aufgehoben zu sein, da ich mich wieder mit großer Begeisterung an diese Arbeit setzte. Man könnte argumentieren, dass anfangs alles noch sehr einfach aussah, als fehlte nur die zündende Idee. Aber die Aufforderung sei doch mal kurz genial hat schon früher nicht funktioniert, und dürfte fast wie sei doch mal spontan bei den wenigsten Menschen zum Erfolg führen. Die Vorstellung, ein wirklich verwendetes Kryptoverfahren zu brechen, hatte genug Faszination bei mir ausgelöst, um mich einige Zeit am Thema zu halten. Als sich aber die Hinweise häuften, dass das Problem eventuell im Rahmen irgendwelcher allgemeiner Abhandlungen bereits gelöst worden war, wurde mein Eifer deutlich geringer, nicht zuletzt da die Thematik doch ein längeres Studium der Darstellungstheorie verlangt hätte, mit dem ich nicht aufwarten konnte. Also griff ich dankbar nach dem Strohhalm QOBDD, zwar nicht mit so großer Euphorie wie es bei der Fiat-Shamir Problematik der Fall gewesen war, aber doch mit genügend Spaß, den mir Graphentheorie schon immer bereitet hat, vor allem, wenn es so schön einfache wie anschauliche Techniken gibt, wie die beiden Reduktionsregeln. Dass diese sich nicht auf den Quantenfall übertragen ließen, nehme ich ihnen heute noch übel. Meine Schwierigkeiten im Umgang mit den QOBDDs, die dazu geführt haben, dass das Thema nicht umfassender behandelt wurde, haben sich erst im Zusammenhang mit dem Aufschreiben der Arbeit bemerkbar gemacht. Vorher existierte immer ein diffuses Gefühl eines Knotens im Hirn, der sich nicht richtig greifen ließ. Als ich die Definitionen von QOBDDs im Detail zu Papier brachte, wurde mir erst der Unterschied zwischen der Graphendarstellung und der Zustandsbeschreibung bewusst. Vorher nahm ich an, die Graphendarstellung sei eher für den klassischen Fall praktikabel, für QOBDDs sollte man sich aber im Sinne der Allgemeinheit an die Darstellung einer Sequenz von Transformationen halten. Insgesamt bin ich sehr froh, dieses Unterfangen nur zum Spass tatsächlich realisiert zu haben. Es hat mir wirklich viel Spaß gemacht, neben meinen doch eher physikalisch anzugehenden Problemen im Bereich Neuroscience eine Alternativbeschäftigung in der theoretischen Informatik gefunden zu haben. Auch der Kontakt in ein anderes Institut hat mir gut getan, nicht ganz in meinem eigenen Sumpf zu versinken. 94 Anhang 95 Index Alice, 47 Amplitude, 20 balanciert, 29 Blei, 48 Bob, 47 h· |, 14 bra-Vektor, 14 Churchsche These, 5 CNOT, 24 controlled NOT, 24 Darstellung einer Gruppe, 56 Dirac-Formalismus, 12 Drehungen, 15 Dualer Hilbertraum, 14 durchführbar, 48 Eigenschaft, 15 Eigenwertproblem, 15 Eve, 47 gemischter Zustand, 16 gesunder Menschenverstand, 11 H, 14 Hadarmardbasis, 22 Hadarmardmatrix, 22 H1 , 22 Hn , 25 hermitescher Operator, 15 hidden subgroup problem, 57 Hilbertraum, 14 H-periodisch, 57 interaktive Verfahren, 48 irreduzibel, 56 isoliert, 13 Katze, 20 |·i, 14 ket-Vektor, 14 kippen, 35 klassische Physik, 13 konstant, 29 korrekt, 48 lebendig, 20 lineare Funktionale, 14 Lokalität, 24 Messung, 12 normiert, 14 OBDD, 65 Observable, 15 Operator, 15 Orakel, 29 Ordnung, 38 orthogonal, 14 PBP, 69 Periode, 38 Postulate, 12 Präparation eines Zustandes, 13 Prover, 47 QBP, 71 QFTN , 41 QOBDD, 72 QOBDD, alternativ, 74 Quantenfouriertransformation, 41 Quantenregister, 23 Qubit, 20 reiner Zustand, 13 reversibel, 24 97 Index Reziprozitätssatz, 50 Schicht, 65 Schichtstruktur, 65 Shannon-Zerlegung, 63 spiegeln, 35 Spiegelungen, 15 strikt H-periodisch, 57 Superposition, 13 System, 13 tot, 20 Überzeugungsprozess, 48 unitär, 15 unitäre Darstellung, 56 Verifier, 47 Verschränkung, 26 versteckte Untergruppe, 57 verträgliche Messungen, 13 Wahrscheinlichkeitsinterpretation, 12 XOR, 24 Zero-Knowledge, 47 Zero-Knowledge Eigenschaft, 48 Zustand, 13 Zustandsvektor, 13 98 Literaturverzeichnis [1] F. Ablayev, A. Gainutdinova, and M. Karpinski. Fundamentals of Computation Theory : 13th International Symposium, FCT 2001, Riga, Latvia, August 22-24, 2001, Proceedings, volume 2138 of Lecture Notes in Computer Science, chapter On Computational Power of Quantum Branching Programs, pages 59 – 70. Springer Berlin / Heidelberg, 2001. [2] F. Ablayev, C. Moore, and C. Pollett. Quantum and stochastic branching programs of bounded width. Lecture Notes in Computer Science, 2380:343–354, 2002. [3] M. Artin. Algebra. Birkhäuser, 1998. [4] D. A. Barrington. Bounded-width polynomial-size branching programs recognize exactly those languages in NC1. In STOC ’86: Proceedings of the eighteenth annual ACM symposium on Theory of computing, pages 1–5, New York, NY, USA, 1986. ACM Press. [5] E. Bernstein and U. Vazirani. Quantum complexity theory. Annual Acm Symposium On Theory Of Computing, 25, 1993. [6] B. Bollig, M. Sauerhoff, and I. Wegener. Hierarchy theorems for kobdds and kibdds. Theoretical Computer Science, 205:45 – 60, 1998. [7] D. Bouwmeester, A. Ekert, and A. Zeilinger, editors. The physics of quantum information. Springer-Verlag, 2000. [8] G. Brassard, C. Crapeau, and M. Yung. Everything in NP can be argued in perfect zero-knowledge in a bounded number of rounds. In Proceedings of the 16th ICALP, 1989. [9] I. N. Bronstein, K. A. Semendjajew, G. Musiol, and H. Mühlig. Taschenbuch der Mathematik. Verlag Harri Deutsch, Frankfurt am Main, Thun, 4 edition, 1999. [10] R. Bryant. Symbolic manipulation of boolean functions using a graphical representation. In 22nd Conference on Design Automation, 1985., pages 688–694, 23-26 June 1985. [11] R. E. Bryant. Graph-based algorithms for boolean function manipulation. IEEE Trans. Comput., 35(8):677–691, 1986. [12] J. Buchmann, M. Maurer, and B. Moller. Cryptography based on number fields with large regulator, 2000. 99 Literaturverzeichnis [13] J. Buchmann, T. Takagi, and U. Vollmer. Number field cryptography. Technical Report TI-03/11, TU Darmstadt, 2003. [14] P. Bundschuh. Einführung in die Zahlentheorie. Springer Verlag Berlin Heidelberg, 1988. [15] D. Deutsch. Quantum theory, the church-turing principle and the universal quantum computer. Proceedings of the Royal Society of London. Series A, Mathematical and Physical Sciences, 400(1818):97–117, Jul 1985. [16] D. Deutsch and R. Jozsa. Rapid solution of problems by quantum computation. Proceedings: Mathematical and Physical Sciences, 439(1907):553–558, Dec 1992. [17] A. Ekert and R. Jozsa. Quantum algorithms: Entanglement-enhanced information processing. Proc. Trans. R. Soc. Lond. A, 356:1769 – 1782, 1998. [18] M. Ettinger, P. Hoyer, and E. Knill. The quantum query complexity of the hidden subgroup problem is polynomial, 2004. [19] R. E. Feynman. Simulating physics with computers. International Journal of Theoretical Physics, 21:467–488, 1982. [20] A. Fiat and A. Shamir. How to prove yourself: Practical solutions to identification and signature problems. In A. Odlyzko, editor, Lecture Notes in Computer Science: Advances in Cryptology - CRYPTO ’86: Proceedings, volume 263, page 186, 1987. [21] S. Fortune, J. E. Hopcroft, and E. M. Schmidt. The Complexity of Equivalence and Containment for Free Single Variable Program Schemes. ICALP, 1978. [22] W. Fulton and J. Harris. Representation Theory, A First Course. Springer Verlag New York, 1991. [23] W. Gellert, D. H. Küstner, D. M. Hellwich, and H. Kästner. Kleine Enzyklodädie Mathematik. VEB Bibliographisches Institut Leipzig, 11 edition, 1979. [24] S. Goldwasser and Y. Kalai. On the (in)security of the fiat-shamir paradigm. In 44th Annual IEEE Symposium on Foundations of Computer Science, 2003. Proceedings., pages 102– 113, 2003. [25] S. Goldwasser, S. Micali, and C. Rackoff. The knowledge complexity of interactive proof-systems. In STOC ’85: Proceedings of the seventeenth annual ACM symposium on Theory of computing, pages 291–304, New York, NY, USA, 1985. ACM Press. [26] L. K. Grover. A fast quantum mechanical algorithm for database search. In STOC ’96: Proceedings of the twenty-eighth annual ACM symposium on Theory of computing, pages 212–219, New York, NY, USA, 1996. ACM Press. [27] H. Häffner, W. Hänsel, C. F. Roos, J. Benhelm, D. Chek-al-kar, M. Chwalla, T. Körber, U. D. Rapol, M. Riebe, P. O. Schmidt, C. Becher, O. Gühne, W. Dür, and R. Blatt. Scalable multiparticle entanglement of trapped ions. Nature, 438:643–646, December 2005. 100 Literaturverzeichnis [28] S. Hallgren. Polynomial-time quantum algorithms for pell’s equation and the principal ideal problem. Annual ACM Symposium on Theory of Computing, 34:653–658, 2002. [29] S. Hamdy and M. Maurer. Feige-Fiat-Shamir identification based on real quadratic fields. Technical Report TI-23/99, TU Darmstadt, Fachbereich Informatik, Fachbereich Theoretische Informatik, 1999. [30] M. Hirvensalo. Quantum Computing. Springer Verlag Berlin, 2 edition, 2004. [31] M. Homeister. Lower bounds for the sum of graph-driven read-once parity branching programs. Technical Report 68, Electronic Colloquium on Computational Complexity, 2003. [32] M. Homeister. Quantum Computing verstehen. Vieweg Verlag Wiesbaden, September 2005. [33] M. Homeister and S. Waack. Quantum ordered binary decision diagrams with repeated tests. ArXiv Quantum Physics e-prints, July 2005. [34] P. Hoyer. Efficient quantum transforms. arXiv:quant-ph, 1997. [35] R. Jozsa. Entanglement and quantum computation. In S. Hugett, L. Mason, K. P. Tod, S. T. Tsou, and N. M. J. Woodhouse, editors, Geometric Issues in the Foundations of Science. Oxford University Press, 1997. [36] R. Jozsa. Quantum algorithms and the fourier transform. Proceedings of the Royal Society A: Mathematical, Physical and Engineering Sciences, 454(1969):323 – 337, 1998. [37] R. Jozsa. Quantum factoring, discrete logarithms, and the hidden subgroupproblem. Computing in Science & Engineering, 3(2):34–43, Apr 2001. [38] R. Jozsa. Quantum computation in algebraic number theory: Hallgren’s efficient quantum algorithm for solving Pell’s equation. Annals of Physics, 306(2):241–279, August 2003. [39] V. Junghanns. Zero-Knowledge Protokolle. Vortrag, Universiät Ulm, December 1999. [40] A. Y. Kitaev. Quantum measurements and the abelian stabilizer problem. arXiv:quantph 9511026, Nov 1995. [41] S. J. Lomonaco Jr and L. H. Kauffman. Quantum hidden subgroup algorithms: An algorithmic toolkit, 2006. [42] D. C. Marinescu and G. M. Marinescu. Approaching Quantum Computing. Pearson Prentice Hall, 2005. [43] C. Meinel and T. Theobald. Algorithms and Data Structures in VLSI Design. SpringerVerlag New York, Inc., Secaucus, NJ, USA, 1998. 101 Literaturverzeichnis [44] T. Minkwitz. Algorithmensynthese für lineare Systeme mit Symmetrie. PhD thesis, Universität Karlsruhe, 1993. [45] M. Nakanishi, K. Hamaguchi, and T. Kashiwabara. Ordered quantum branching programs are more powerful than ordered probabilistic branching programs under a bounded-width restriction. In COCOON ’00: Proceedings of the 6th Annual International Conference on Computing and Combinatorics, pages 467–476, London, UK, 2000. Springer-Verlag. [46] W. Nolting. Quantenmechanik - Grundlagen. Number 5/1 in Grundkurs Theoretische Physik. Vieweg Verlag Wiesbaden, 4 edition, 2000. [47] W. Nolting. Quantenmechanik - Methoden und Anwendungen. Number 5/2 in Grundkurs Theoretische Physik. Vieweg Verlag Wiesbaden, 3 edition, 2000. [48] M. Püschel. Konstruktive Darstellungstheorie und Algorithmengenerierung. PhD thesis, Universität Karlsruhe (Technische Hochschule), Augsburg, Jul 1998. [49] M. Sauerhoff and D. Sieling. Quantum branching programs and space-bounded nonuniform quantum complexity. Theor. Comput. Sci., 334(1-3):177–225, 2005. [50] E. Schrödinger. An Undulatory Theory of the Mechanics of Atoms and Molecules. Physical Review, 28:1049–1070, Dec. 1926. [51] P. W. Shor. Polynomial-time algorithms for prime factorization and discrete logarithms on a quantum computer. SIAM Journal on Computing, 26(5):1484 – 1509, 1997. [52] D. Sieling. Algorithmen und untere Schranken für verallgemeinerte OBBDs. PhD thesis, Universität Dortmund, 1994. [53] D. Sieling and I. Wegener. NC-algorithms for operations on binary decision diagrams. Parallel Processing Letters, 3:3–12, 1993. [54] D. Sieling and I. Wegener. Reduction of OBDDs in linear time. Inf. Process. Lett., 48(3):139–144, 1993. [55] D. R. Simon. On the power of quantum computation. SIAM J. Comput., 26(5):1474– 1483, 1997. [56] I. Wegener. The Complexity of Boolean Functions. Wiley-Teubner, 1987. 102 Danksagung An dieser Stelle möchte ich den Leuten danken, die, ob bewusst oder nicht, beim Entstehen dieser Arbeit geholfen haben. Herrn Prof. Stephan Waack danke ich für die Offenheit für ungewöhnliche Themen, die nötige Motivationsrede, als ich aufgeben wollte, und seinen unerschütterliches Vertrauen in mein Können. Matthias Homeister habe ich für eigentlich alles zu danken. Das ist unter vielem anderen: trotz der Rolle des Vorgesetzen ein guter Freund geworden zu sein, mich mit dem Thema Quantum Computing bekannt gemacht zu haben, an seinem Buch teilhaben zu lassen und nicht zuletzt, bis in die Rechtschreibkorrektur diese Arbeit betreut zu haben. Carsten Damm danke ich für spaßige Informatikpraktika, eine interessante Vorlesung über Kryptographie und das Einspringen, als Matthias vom Prüfungsausschuss nicht als Korreferent akzeptiert wurde. Den Luxus, eine zweite Diplomarbeit zu verfassen, verdanke ich Prof. Theo Geisel, dem es egal ist, was ich neben meiner halben Stelle als Doktorand mit meiner Zeit anstelle. Der ganzen Besatzung der Gruppe für Nichtlineare Dynamik des Max Planck Instituts für Dynamik und Selbstorganisation, speziell meinen Büromitbewohnern Dominik Heide, Vincent David und Sven Jahnke, danke ich für die beste Arbeitsatmosphäre der Welt. Astrid und Heiner danke ich vor allem fürs Dasein, nicht nur aus dem offensichtlichen Grund, dass ich ohne sie gar nicht existierte. Ganz besonderer Dank geht an die Bodenstation, Ilka und Tom. Erstere hat sich teilweise mehr Stress gemacht als ich, wann ich diese Arbeit schreiben soll, zweiterer ist so friedlich, dass er mich nächtelang diese Arbeit verfassen ließ. ⋆ ⋆ ⋆ ⋆ ⋆ ⋆ ⋆ Vielen Dank an euch alle! 103