Ergänzungen, Hinweise, Informationen zur Vorlesung Quantum Computing im Sommersemester 2016 Inhaltsverzeichnis 1 Hinweise zur Literatur 1 2 Komplexe Zahlen – Kurzeinführung 2 3 Der Sinn des Komplexitätsbegriffs 5 4 Lösungshinweise zu den Aufgaben 1, 3 und 4 8 5 Lösungshinweise zu den Aufgaben 5 - 10 11 4. März 2016 1 Hinweise zur Literatur Die folgenden Bücher, Artikel und Tutorien sind recht verschiedenartig vom Stil, Niveau und der Zielgruppe der Leser her. Erläuterungen werden in der Vorlesung gegeben. • Nielsen / Chuang [1] • Kaye et al. [7] • Mermin [2] • Vedral [8] • Hirvensalo [3] • Kitaev et al. [9] • Homeister [4] • Audretsch [10, 11] • Sturm, Schulze [5] • Tutorien Oxford / Cambridge [12] • Stolze, Suter [6] • Arrojo Camejo [13] Literatur [1] Michael A. Nielsen and Isaac L Chuang. Quantum Computation and Quantum Information. Cambridge University Press, Cambridge, 2000. [2] N. David Mermin. Quantum Computer Science. An Introduction. Cambridge University Press, Cambridge, UK, 2007. [3] Mika Hirvensalo. Quantum Computing. Springer-Verlag, Berlin, Heidelberg, 2001. [4] Matthias Homeister. Quantum Computing verstehen. Grundlagen, Anwendungen, Perspektiven. Vieweg, 2005. [5] Thomas F. Sturm and Jörg Schulze. Quantum Computation aus algorithmischer Sicht. Oldenbourg, München, Germany, 2009. [6] Joachim Stolze and Dieter Suter. Quantum Computing. A Short Course from Theory to Experiment. Wiley VCH, Weinheim, 2004. [7] Phillip Kaye, Raymond Laflamme, and Michele Mosca. An Introduction to Quantum Computing. Oxford, UK, 2007. [8] Vlatko Vedral. Introduction to Quantum Information Science. Oxford, UK, 2006. [9] A. Yu. Kitaev, A. H. Shen, and M. N. Vyalyi. Classical and Quantum Computation. American Mathematical Society, USA, 2002. [10] Jürgen Audretsch, editor. Quantenrechner – die neue Generation von Supercomputern? WileyVCH, 2002. [11] Jürgen Audretsch. Verschränkte Systeme. Die Quantenphysik auf neuen Wegen. Wiley-VCH, 2005. [12] Centre for Quantum Computation. Available at http://www.qubit.org/index.html. [13] Silvia Arrojo Camejo. Skurrile Quantenwelt. Springer, 2006. 1 4. März 2016 2 Komplexe Zahlen – Kurzeinführung Empfehlung: Es lohnt sich, hierzu die ersten Seiten in Wikipedia durchzulesen. Der gesamte Text geht allerdings zum Teil erheblich über das hinaus, was wir brauchen. Der folgende Text ist gedacht als lose Zusammenstellung einiger Fakten über komplexe Zahlen, nicht als systematischer Aufbau dieses Zahlenkörpers. • Erweiterung von Zahlensystemen: natürliche Zahlen ⊂ ganze Zahlen ⊂ rationale Zahlen ⊂ reelle Zahlen ⊂ komplexe Zahlen geschrieben mit Standardsymbolen (anstelle N häufig auch N0 ): N⊂Z⊂Q⊂R⊂C z.B. (0, )1, 2, 3, . . . 0, ±1, ±2, ±3, . . . 4 2 , ,... 2 3 √ 1, 2, −3, 1.2345, 2, π, e, . . . • Allgemeine Grundidee: gewisse Gleichungen sind in einem der Bereiche nicht lösbar, z.B.: x2 = 2 für x ∈ Q ist nicht lösbar, deshalb Erweiterung von Q zu R. analog: x2 = −1 für x ∈ R ist nicht lösbar, deshalb Erweiterung von R zu C. • Es reicht, eine einzige neue Zahl einzuführen: i mit i2 = −1 (sog. imaginäre Einheit) und zusätzlich einige naheliegende Regeln. • Jede komplexe Zahlen kann in der Form z = x + iy mit x, y reell geschrieben werden. • Komplexe Zahlen kann man als Vektoren auffassen: Man identifiziere x + iy mit (x, y), also insbesondere 1 mit (1, 0) und i mit (0, 1). Das Pluszeichen in x + iy = x · 1 + y · i ist dann die normale Vektoraddition. Außerdem gilt: die komplexe Zahl (x, 0) mit x ∈ R kann man mit der reellen Zahl x identifizieren. In diesem Sinne sind die reellen Zahlen spezielle komplexe Zahlen, nämlich genau die mit Imaginärteil = 0 In der Mathematik werden komplexe Zahlen häufig genau so herum eingeführt, nämlich als Paare (x, y) reeller Zahlen. Die Schreibweise x + iy ist dann nur eine praktische Bezeichnung für das Paar (x, y). • graphische Darstellung und Veranschaulichung: Gaußsche Zahlenebene • Im Folgenden gelte z = x + iy und w = u + iv mit x, y, u, v ∈ R. 2 • Real- und Imaginärteil zu gegebenem z ∈ C: x = <z, y = =z oder auch “Re” und “Im” • Bildung des Negativen: −z = −(x + iy) = −x − iy • Addition z + w = (x + iy) + (u + iv) = x + u + i(y + v) • Subtraktion, zurückgeführt auf Addition: z − w := z + (−w) = x + iy − (u + iv) = x − u + i(y − v) • Multiplikation zw = (x + iy)(u + iv) = xu + i2 yv + iyu + ixv = xu − yv + i(yu + xv) • konjugiert komplexer Wert z = z ∗ = x − iy • Betrag einer komplexen Zahl p p p √ |z| = zz = (x − iy)(x + iy) = x2 − i2 y 2 = x2 + y 2 • reziproker Wert einer komplexen Zahl w−1 = 1 w w u v = = == 2 −i 2 w ww |w|2 u + v2 u + v2 • Division z 1 = z w w • Funktionen im Komplexen: ez = ex+iy = ex eiy = ex (cos y + i sin y) sin z = 1 iz (e − e−iz ) 2i 1 cos z = (eiz + e−iz ) 2 • wichtig: Einheitskreis: eiϕ = cos ϕ + i sin ϕ mit 0 ≤ ϕ < 2π Es gilt |eiϕ | = 1 wegen sin2 ϕ + cos2 ϕ = 1. 3 • Werte, die man wissen sollte: π ei 2 = i eiπ = −1 • alternative Darstellung komplexer Zahlen ( Exponentialform“): ” z = |z|eiϕ |z| = Modul, ϕ = Argument 4 4. März 2016 3 Der Sinn des Komplexitätsbegriffs (aus Vorlesungsskript zur Algorithmik I) In der Informatik werden meistens zwei Anforderungen an Algorithmen gestellt. Sie sollen erstens die gewünschte Wirkung haben, also effektiv sein. Damit ist gemeint, dass sie bei Einhaltung von Vorbedingungen eine Spezifikation korrekt erfüllen. So soll z. B. ein Sortieralgorithmus ein Array mit gegebener Wertebelegung in einen neuen Zustand überführen, in dem das Array sortiert ist. Oder ein Suchalgorithmus wie zum Beispiel das binäre Suchen soll in einem Array ein Element entweder finden, falls es vorhanden ist oder sonst anzeigen, dass es nicht vorhanden ist. Vorbedingung für das korrekte Arbeiten ist in diesem Fall, dass das Array sortiert ist. Algorithmen sollen zweitens aber auch möglichst kleine Anforderungen an Ressourcen stellen, also effizient sein. Das bedeutet insbesondere, dass sie schnell sind und wenig Speicherplatzanforderungen stellen. In diesem Abschnitt wird der Begriff der Effizienz vertieft behandelt: es wird insbesondere diskutiert, wie sich die qualitative Formulierung geringer Ressourcenbedarf quantifizieren läßt. Die Erläuterungen halten sich an das Beispiel Laufzeitverhalten, also der sog. Laufzeitkomplexität. Der nächstliegende Ansatz besteht offensichtlich darin, Laufzeiten einfach in Abhängigkeit von der Problemgröße zu messen und dann in Form einer Tabelle oder auch in Funktionsform die entsprechende Abhängigkeit anzugeben. Diese Methode ist durchaus sinnvoll, wenn man für einen bestimmten Rechner unter gegebenen Betriebsbedingungen wissen will, welches denn die Zeitanforderungen eines Algorithmus sind. Es gibt allerdings mindestens zwei gravierende Nachteile. Erstens erhält man auf diese Weise nicht wirklich eine Aussage über den verwendeten Algorithmus selbst, sondern vielmehr nur eine Information über die Kombination aus Algorithmus, genauer, dessen Implementierung, und der zugrundeliegenden Hardware, wobei möglicherweise auch noch der spezielle Betriebszustand der Rechenanlage eingeht. Zweitens weiß man bei diesem Ansatz nach wie vor nichts über das Zeitverhalten des Algorithmus für Werte außerhalb des Meßbereiches. Eine brauchbare Extrapolation ist bei weitem nicht offensichtlich, denn die vielleicht naheliegende Faustregel aus der Technik, dass doppelte Anforderungen größenordnungsmäßig auch einen doppelten Ressourcenbedarf nach sich ziehen, gilt für Algorithmen i. a. in keiner Weise. Daher ist dieser Ansatz jedenfalls dann nicht sinnvoll, wenn man wirklich Aussagen haben will über den Algorithmus selbst. Man abstrahiert in diesem Fall von der Hardware in der Weise, dass man Programmschritte zählt, wobei Schritte verschiedener Arten wie etwa Vergleiche und Bewegungen, also Kopiervorgänge, durchaus verschieden gewichtet werden können. Häufig werden diese Gewichtsfaktoren aber einheitlich auf 1 gesetzt. Implizit hat man daher ein Modell eines abstrakten Rechners zugrunde gelegt, der ein in einer Hochsprache formuliertes Programm direkt interpretiert, für den die Hochsprache sozusagen als Assembler aufzufassen ist. Dieser Ansatz wird so von Niklaus Wirth in seinem Buch über Algorithmen und Datenstrukturen zugrundegelegt. Einfache Algorithmen kann man auf diese Weise sehr gut und vollständig analysieren. Z. B. ergibt sich für BubbleSort die folgende Tabelle: (aus Wirth-Buch über Algorithmen und Datenstrukturen) Anzahl Vergleiche Anzahl Bewegungen Minimum n(n − 1) 2 0 Mittel n(n − 1) 2 3n(n − 1) 4 Maximum n(n − 1) 2 3n(n − 1) 2 Diese Aussagen sind leicht zu begründen: die Gleichheit der Formeln in der ersten Zeile ergibt sich einfach daraus, dass die Anzahl der Vergleiche bei BubbleSort unabhängig ist von der konkret 5 vorliegenden Arraybelegung. Die konkrete Form folgt dann daraus, dass beim ersten Durchlauf n − 1 Vergleiche gemacht werden, beim zweiten nur noch n − 2 usw. bis 1. Daher gilt also (n − 1) + (n − 2) + · · · + 1 = n(n − 1) 2 Dass die Anzahl der Bewegungen im Mittel gerade die Hälfte der Anzahl im ungünstigsten Fall ist, bei dem mit jedem Vergleich ein Austausch und damit 3 Bewegungen erforderlich sind, mag plausibel erschienen. Man sollte aber nicht vergessen, dass hier bereits ein einfaches stochastisches Modell eingeführt wird, dem die (implizite) Annahme zugrunde liegt, dass jede Permutation der n! möglichen Arraybelegungen gleichwahrscheinlich ist. Wenn diese Annahme nicht zutrifft, wie das praktisch häufig der Fall sein wird, dann stimmt auch diese mittlere Formel nicht. Meistens interessieren diese Formeln nur für größere Werte von n: dann kann man natürlich den 2 exakten Ausdruck n(n−1) ersetzen durch n2 . Wenn man darüberhinaus auch nur an Verhältnissen 2 der Laufzeiten zwischen zwei n-Werten interessiert ist, dann kann die obige Aussage darauf reduziert werden, dass die Laufzeit proportional zu n2 ist. Es ist vielleicht nahe liegend, ähnliche Überlegungen für andere Algorithmen anzustellen: man sucht einfach Näherungsformeln für die Laufzeiten in Abhängigkeit von der Problemgröße. Die konkreten Formeln sind dann vielleicht komplizierter, aber im Prinzip sollte sich das Verfahren allgemein anwenden lassen. Für viele Algorithmen ist das auch so möglich wie z. B. für Quicksort. Leider ist die Realität wesentlich komplizierter. Die (Zeit-) Komplexität von Algorithmen ist ja eine Aussage über diskrete Systeme. Und denen fehlt in der Regel eine Eigenschaft, die technische Systeme sonst meistens haben, nämlich eine Art stetiges Verhalten zu zeigen. Eine Brücke z.B., die ein Gewicht von 1000 Tonnen tragen kann, wird auch ein weiteres Kilogramm aushalten und erst recht ein Kilogramm weniger. Systeme der Informatik sind in dieser Hinsicht fundamental anders. So muß man z. B. bei der Zeitkomplexität von Algorithmen damit rechnen, dass das Laufzeitverhalten für eine Problemgröße, die eine 2er-Potenz ist, ganz anders ist, als etwa für einen Wert unmittelbar darunter. Z. B. MergeSort zeigt ein solch irreguläres Verhalten. Für 2er-Potenzen gibt es zwar eine einfache Formel für die Laufzeit; die sonstige Kurve hat aber eine Art fraktale Struktur. Nun läßt sich in diesem Fall zwar trotzdem noch eine exakte Formel angeben, nicht aber ohne weiteres eine vernünftige Näherung in irgend einem Sinne. Außerdem enthält eine solche exakte Formel viel zu viel Information, an der man z. B. beim Vergleich von Algorithmen gar nicht interessiert ist. Das hat zu einem Ansatz geführt, der nochmal erheblich von solchen Details abstrahiert und der – in voller Absicht – nur noch eine sehr abstrakte Vergleichbarkeit erlaubt. Man sucht für das Laufzeitverhalten nur noch nach oberen und unteren Schranken und läßt dabei Konstanten frei. Wenn also f (n) das Laufzeitverhalten eines Algorithmus als Funktion der Problemgröße n darstellt und wenn es möglich ist, f (n) für hinreichend große n durch die Funktion M g(n) mit frei wählbarer Konstanten M zu beschränken, dann verwendet man die Schreibweise f (n) = O(g(n)). Die mathematisch präzise Formulierung lautet also: Für gegebene Funktionen f (n) und g(n) gilt f (n) = O(g(n)) genau dann, wenn es zwei positive Konstanten n0 und M gibt, so dass f (n) ≤ M g(n) gilt für n ≥ n0 (Positivität der Funktionen unterstellt). Mathematisch handelt es sich ausdrücklich nicht um eine Gleichheitsrelation. Die gelegentlich auch verwendete und präzisere Notation ist f ∈ O(g), die sich aber nicht allgemein durchgesetzt hat. Damit hat man eine Schreibweise an der Hand, mit der man die Laufzeitkomplexität eines jeden Algorithmus abschätzen kann, wenn auch um den Preis einer erheblichen Abstraktion. Insbesondere konkrete Zahlenwerte für das Laufzeitverhalten lassen sich wegen der Freiheit in der Wahl der Konstanten M nicht mehr verläßlich angeben. Aus Sicht der Informatik hat diese Notation zwei Aspekte, sozusagen einen syntaktischen und einen pragmatischen. Der syntaktische Aspekt besteht darin, dass man zunächst die formale Definition richtig erfüllt. Aus dieser Sicht gehört jede Funktion, die z. B. der Klasse O(n2 ) angehört natürlich auch der Klasse O(n3 ) an. Offenbar ist das absolut 6 analog zu der Situation, dass jede Zahl x, die etwa x ≥ 5 erfüllt, natürlich auch x ≥ 0 erfüllt. Der Übergang von der ersten zur zweiten Aussage bedeutet einen Informationsverlust. Solche Abschätzungen sollten natürlich eine möglichst genaue Information liefern; daher ist die Frage nahe liegend, ob man obere Schranken nicht in irgend einem Sinne optimieren kann. Wie also lautet z. B. die optimale obere Schranke für die obige Funkton von BubbleSort? Nach kurzem Nachdenken sieht man, dass die einzig richtige Antwort lautet: es ist die Funktion selbst mit den Konstanten M = 1, n0 = 1. Offenbar ist die Frage so also noch falsch gestellt. Hier kommt nun der pragmatische Aspekt zum Tragen: zumindestens in der Informatik beschränkt man sich auf eine Liste spezieller Vergleichsfunktionen. Nur die sollen als obere Schranken Anwendung finden. Eine mögliche Liste ist z. B. O(1), O(log n), O(n), O(n log n), O(n2 ), O(n3 ), O(2n ). Mit dieser Selbstbeschränkung hat man zwei Probleme gleichzeitig gelöst: das gerade formulierte Optimierungsproblem ist jetzt sinnvoll. Welches ist die beste“ Funktion aus der Liste, die eine ” obere Schranke z.B. für BubbleSort darstellt? O(n log n) ist es nicht, was sich leicht nachrechnen läßt; O(2n ) ist zwar eine obere Schranke, ebenso wie O(n3 ), aber O(n2 ) ist auch in dem obigen Sinne eine obere Schranke und natürlich eine schärfere, also bessere. Für alle diejenigen, die eine Formalisierung des Problems sehen möchten, lautet die Frage: welches ist der kleinste ganzzahlige Wert k, so dass n(n−1) = O(nk ) gilt. Die eindeutige Antwort lautet natürlich 2. 2 Der zweite Punkt ist, dass man nun auch außerordentlich verschiedene Algorithmen gut vergleichen kann wie z.B. BubbleSort und MergeSort, bei denen die exakten Lösungen nicht entfernt irgendwelche Ähnlichkeiten haben. Tatsächlich ist die exakte Funktion bei MergeSort nur formulierbar mit den ceil- und floor-Operationen. Ebenso wie man obere Schranken einführt, kann man analog auch untere Schranken einführen und dann auch nach der gleichzeitigen Existenz beider Schranken fragen. Wenn also eine Funktion f (n) gleichzeitig von oben und von unten bis auf Konstanten durch eine Funktion g(n) beschränkt werden kann, dann wird die Notation f (n) = Θ(g(n)) verwendet. Hier wird nochmal sehr deutlich, weshalb man die freien Konstanten einführt: ein quadratischer Ausdruck wie bei BubbleSort kann natürlich nicht gleichzeitig von oben und von unten etwa durch dieselbe Funktion n2 beschränkt werden. Wenn man aber frei wählbare Konstanten zuläßt, dann gilt in diesem Fall n(n−1) ≤ 12 n2 für n ≥ 1 und 2 n(n−1) gleichzeitig ≥ 14 n2 für n ≥ 2. Daher gehört BubbleSort also zur Komplexitätsklasse Θ(n2 ). 2 So wichtig diese Notationen auch sind, so vorsichtig sollte man im Umgang damit sein und sich vor unzulässigen Schlußfolgerungen hüten. Z. B. können sich zwei O(n)- Algorithmen“ durchaus ” extrem unterscheiden, weil die auftretenden Konstanten natürlich nicht unwichtig sind, oder gar vernachlässigbar“. Ein Beispiel: Reisezeiten sind grob betrachtet – unabhängig vom Verkehrsmittel ” – stets Funktionen der Klasse O(n), wenn n die Entfernung bedeutet (doppelte Entfernung bedeutet doppelte Reisezeit). Die Schlußfolgerung, dass daher die Wahl des Algorithmus“, in diesem Fall also ” des Verkehrsmittels, eigentlich egal ist, ist reichlich gewagt: man denke etwa an eine Urlaubsreise nach Südafrika und die alternativen Verkehrmittel Flugzeug/Fahrrad. 7 12. März 2016 4 Lösungshinweise zu den Aufgaben 1, 3 und 4 Aufgabe 1 a) 5n2 − 6n = Θ(n2 ): zu zeigen ist also: 5n2 − 6n ≤ M n2 und 5n2 − 6n ≥ N n2 5n2 − 6n ≤ 5n2 : M = 5, n ≥ 1 5n2 − 6n ≥ 4n2 , denn 5n2 − 6n = 4n2 + n(n − 6) ≥ 4n2 für n ≥ 6: N = 4 b) n! = O(nn ): zu zeigen ist also: n! ≤ M nn n! = 1 · 2 · · · · · n ≤ nn : M = 1, n ≥ 1 Pn 2 3 c) i=1 i = Θ(n ): P P zu zeigen ist also: ni=1 i2 ≤ M n3 und ni=1 i2 ≥ N n3 Pn 2 2 2 2 2 3 i=1 i = 1 + 2 + · · · + n ≤ n · n = n : M = 1, n ≥ 1 Abschätzung nach unten: entweder aus expliziter Formel: n X i2 = i=1 daraus: ≥ n(n + 1)(2n + 1) 6 n·n·2n 6 = n3 /3 oder durch Vergleich mit der Parabel y = x2 für 0 ≤ x ≤ n: n X i=1 2 Z n 2 Z dx e dx > i = 0 0 n 1 x2 dx = n3 3 Der zweite Weg ist elegant aber nicht ganz einfach zu finden, der erste mit der expliziten Formel nicht besonders gut, da der Sinn des ganzen Formalismus mit O(), Ω() und Θ() ja gerade darin liegt, nur sehr abstrahierte, grobe Aussagen zu bekommen unter Vermeidung längerer Rechnungen und Anwendung fertiger geschlossener Formeln, die viel mehr liefern, als man eigentlich wissen wollte. Eine Alternative an dieser Stelle wäre auch ein Induktionsbeweis. Allerdings ist der Aufwand dann auch kaum kleiner als beim Beweis der exakten Formel durch Induktion. Der Induktionsbeweis im Detail: 1. Induktionsanfang: Die Formel Pn 2 i=1 i ≥ n3 /3 ist offenbar richtig für n = 1. 2. Induktionsschluß n −→ n + 1: 8 Unter der Voraussetzung Pn+1 i=1 i2 = Pn 2 i=1 i Pn 2 i=1 i ≥ n3 /3 ist also Pn+1 i=1 i2 ≥ (n + 1)3 /3 zu zeigen. + (n + 1)2 ≥ n3 /3 + (n + 1)2 = n3 /3 + n2 + 2n + 1 = ≥ 1 3 3 (n 1 3 3 (n + 3n2 + 6n + 3) + 3n2 + 3n + 1) = (n + 1)3 /3 d) zu zeigen: n2 log n 6= Θ(n2 ): angenommen: n2 log n ≤ M n2 : dann folgt log n ≤ M für n ≥ n0 , d. h., der log ist eine beschränkte Funktion: Widerspruch e) f (n) = O(n) gilt genau dann, wenn f (n) = O(n + 1) (war mal eine Frage in der Vorlesung: die Vermutung war, O(n) wäre vielleicht etwas Anderes (Besseres, Schlechteres?) als O(n + 1)) zu zeigen ist also: |f (n)| ≤ M n genau dann, wenn |f (n)| ≤ N (n + 1) (1) ⇒: |f (n)| ≤ M n ≤ M (n + 1), also setze N = M (2) ⇐: |f (n)| ≤ N (n + 1) ≤ 2N n für M = 2N , n ≥ 1 Aufgabe 3 Angenommen, es existieren Zahlen p, q ∈ N, die teilerfremd sind und Dann folgt: p2 = 2q 2 ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ p2 gerade p gerade: p = 2m p2 = 2q 2 = 4m2 q 2 = 2m2 q 2 gerade q gerade p gerade und q gerade: Widerspruch. Aufgabe 4 a) Drücken Sie sowohl D(α)D(β) möglichst einfach aus . . . D(α)D(β) = D(α + β) b) . . . als auch (D(α))n (mit n ≥ 1) und (D(α))−1 . (D(α))n = D(nα) (D(α))−1 = D(−α) c) Was ist die anschauliche Bedeutung von D(α)? Drehung im R2 9 √ 2= p q erfüllen. Man erhält die Lösung natürlich direkt ohne Rechnung, wenn man die Bedeutung der Matrix als Drehmatrix einsieht und der Anschauung vertraut. Formal ergibt sich das Ergebnis durch elementares Ausmultiplizieren der betreffenden Matrizen. Eine Frage ist, ob man das Ergebnis nicht auch (fast) ohne Rechnung formal erhält, ohne sich auf die Anschauung zu berufen. Eine Möglichkeit ist die folgende. Man setze z = x + iy und w = u + iv. Wenn nun D(α) den Vektor (x, y) in (u, v) überführt, kann man fragen, welche Operation dann z in w überführt. Eine kurze Rechnung zeigt, dass dieses gerade die Multiplikation von z mit eiα ist, also w = eiα z Die Fragen in der Aufgabe sind damit reduziert auf elementare Operationen mit der e-Funktion. 10 4. April 2016 5 Lösungshinweise zu den Aufgaben 5 - 10 Aufgabe 5 → A √1 (|0i 2 K,L → √1 i(|0i 2 + i|1i) → S √1 i(|0i 2 + i(α|1i + β|si)) = B √1 (i √1 (|0i 2 2 |0i → + i|1i) √1 (i|0i 2 − α|1i − β|si)) + i|1i) − α √12 (i|0i + |1i) − β|si) = 12 (i(|0i + i|1i) − α(i|0i + |1i) − Terme sortieren nach |0i, |1i, |si, daraus Zustand am Ende: √ 1 |ψi = i(1 − α)|0i − (1 + α)|1i − 2β|si 2 mit α = cos ϕ, β = sin ϕ nützliche Formeln: 1 2 (1 γ 2 2 cos γ2 − cos γ) = sin2 1 2 (1 + cos γ) = √ √ sin π4 = 12 2, cos π4 = 12 2, sin π2 = 1 Wahrscheinlichkeiten: 1 4 (1 − 1 4 (1 + 1 2 2β P [D0 ] = P [D1 ] = P [S ] = ϕ 2 cos4 ϕ2 1 2 2 sin ϕ α)2 = sin4 α)2 = = Bomb test (Elitzur, Vaidman) 1 0.8 D1 0.6 probability S 0.4 0.2 D0 0 0 π 8 π 4 3π 8 ϕ 11 π 2 √ 2β|si) Aufgabe 6 |0i → A √1 (|0i 2 + i|1i) K √1 (|0i 2 + iγ|1i) → L √1 (γ|0i 2 →0 P √1 γ(eiϕ0 |0i 2 + i|1i) →1 P √1 γ(eiϕ0 |0i 2 + ieiϕ1 |1i) B 1 iϕ0 2 γ((e → → + iγ|1i) = √1 γ(|0i 2 + i|1i) − eiϕ1 )|0i + i(eiϕ0 + eiϕ1 )|1i) daher: 2 p0 = 41 |γ|2 eiϕ0 − eiϕ1 2 p1 = 41 |γ|2 eiϕ0 + eiϕ1 iϕ e 0 − eiϕ1 2 = eiϕ0 − eiϕ1 e−iϕ0 − e−iϕ1 = − ei∆ϕ + e−i∆ϕ − 2 mit ∆ϕ = ϕ1 − ϕ0 2 = − ei∆ϕ/2 − e−i∆ϕ/2 2 = 4 (ei∆ϕ/2 − e−i∆ϕ/2 )/2i = 4 sin2 ∆ϕ 2 Wegen |γ| = 1 und p0 + p1 = 1 folgt dann das Endergebnis. 0 p0 = sin2 ϕ1 −ϕ 2 ϕ1 −ϕ0 2 p1 = cos 2 Aufgabe 7 Die Ergebnisse ergeben sich aus den folgenden Aussagen: 1. Die Quadrate der σ’s sind = 1 2. Die σ’s zu verschiedenen Indizes antikommutieren. 3. Es gilt: σ1 σ2 = iσ3 σ2 σ3 = iσ1 σ3 σ1 = iσ2 Einige Hinweise zu den verwendeten Begriffen: • gerade / ungerade Permutation Eine Permutation der natürlichen Zahlen 1, 2, . . . , n heißt gerade bzw. ungerade, wenn man sie durch eine gerade bzw. ungerade Anzahl von Paarvertauschungen erhält. Die natürliche Anordnung 1, 2, . . . , n selbst gilt als gerade Permutation. Eine Paarvertauschung etwa in 1, 9, 4, 6, 3, 7, 5 ist z.B. 1, 3, 4, 6, 9, 7, 5. 12 • A† ist eine Notation für die zur Matrix A adjungierte Matrix (= transponierte und elementweise konjugiert-komplex genommene Matrix). alternative Notationen: A∗ und A+ • Kreuzprodukt: Es seien ~a = (ax , ay , az ) und analog ~b = (bx , by , bz ). Dann gilt (~a × ~b)x = ay bz − az by (~a × ~b)y = az bx − ax bz (~a × ~b)z = ax by − ay bx Im Zusammenhang mit dieser Aufgabe tritt die Frage auf, wie man die Produkte der Pauli-Matrizen berechnen kann, ohne in jedem einzelnen Fall immer wieder die entsprechenden Matrizen explizit auszumultiplizieren. Hier ist eine Möglichkeit: Man berechnet zunächst die Quadrate σ12 = σ22 = σ32 = 1 sowie eines der Produkte, z.B. σ1 σ2 = iσ3 , durch Ausmultiplizieren der betreffenden Matrizen. Die restlichen Produkte erhält man dann durch die folgenden Schlüsse: ... ⇒ ... ⇒ ... ⇒ ... ⇒ ... ⇒ ... ⇒ σ1 σ2 = iσ3 σ1 σ3 = −iσ2 σ2 σ3 = iσ1 σ2 σ1 = −iσ3 σ3 σ1 = iσ2 σ3 σ2 = −iσ1 σ1 σ2 = iσ3 ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ... ⇒ ... ⇒ ... ⇒ ... ⇒ ... ⇒ ... σ1 σ1 σ2 = iσ1 σ3 σ1 σ3 σ3 = −iσ2 σ3 σ2 σ2 σ3 = iσ2 σ1 σ2 σ1 σ1 = −iσ3 σ1 σ3 σ3 σ1 = iσ3 σ2 σ3 σ2 σ2 = −iσ1 σ2 Aus der Tatsache, dass die Schlüsse auf den Ausgangspunkt zurückführen, folgt auch, dass es belanglos ist, welches Produkt man zuerst berechnet. Eine elegante Zusammenfassung von Produkten der Pauli-Matrizen ist in der folgenden allgemeinen Gleichung enthalten: ~σ · ~a ~σ · ~b = ~a · ~b 1 + i ~σ · (~a × ~b) ~a und ~b sind zwei beliebige Vektoren im R3 . Aufgabe 8 |0ih0| = |0ih1| = |1ih0| = |1ih1| = 1 0 1 0 0 1 0 1 ⊗ 1 0 ⊗ 0 1 1 0 0 1 ⊗ ⊗ = = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 = = In diesem (etwas singulären) Fall gilt, dass man anstelle des Tensorprodukts auch das gewöhnliche Matrixprodukt schreiben dürfte. Die beiden Produkte sind im allgemeinen verschiedenen. 13 Aufgabe 9 Das Eigenwertproblem für den Operator M = ~σ · ~n im speziellen Fall ~n = (1, 0, 0)t Eigenwertgleichung: σx |λi = λ|λi explizit: 0 1 1 0 α β =λ α β mit |λi = α , β |α|2 + |β|2 = 1 oder −λ 1 1 −λ α β =0 d.h. −λα + β = 0 α − λβ = 0 Lösbarkeitsbedingung, d. h. Bedingung, dass eine Lösung (α, β) 6= (0, 0) existiert: −λ 1 1 −λ = 0 daraus: λ2 − 1 = 0, Lösungen λ± = ±1 = Eigenwerte Bedingungen an α und β: für λ = λ+ = +1: α+ − β + = 0 iϕ+ β+ = α+ = |α+ |e , |λ+ i = α+ β+ iϕ+ = |α+ |e 1 1 und für λ = λ− = −1: α− + β− = 0 β− = −α− = −|α− |eiϕ− , Normierung: p √ 1 = |α± |2 + |α± |2 = 2|α± |, |λ− i = α− β− = |α− |eiϕ− 1 −1 √ daher |α± | = 1/ 2 setze ϕ± = 0 Dieser sogenannte Phasenfaktor (genauer: globale Phasenfaktor) ist immer frei wählbar und hat auf Messresultate (Messwerte, Messwahrscheinlichkeiten) keinen Einfluss. Dann ergeben sich die Eigenrichtungen zu 1 1 1 1 |λ− i = √2 |λ+ i = √2 1 −1 14 Aufgabe 10 Die Lösung steht im Skript; hier gibt es ein paar zusätzliche Details. Für λ+ = +1: sin 2θ (− sin 2θ α+ + e−iϕ cos 2θ β+ ) = 0 cos 2θ (eiϕ sin 2θ α+ − cos 2θ β+ ) = 0 Der rechte Faktor verschwindet, da sin und cos für kein Argument gemeinsam 0 werden. Zu lösen ist also: θ θ − sin α+ + e−iϕ cos β+ = 0 2 2 mit Nebenbedingung |α+ |2 + |β+ |2 = 1 Die lineare Gleichung liefert α+ , ausgedrückt durch β+ , also α+ als Funktion von zwei freien reellen Parametern. Zusammen mit der Nebenbedingung bleibt also ein freier reeller Parameter. Will man alles sehr strikt formal machen, kann man folgendermaßen vorgehen. Die Nebenbedingung kann man parametrisieren durch |α+ | = cos τ τ und |β+ | = sin mit 0 ≤ τ ≤ π 2 2 insgesamt also τ τ α+ = cos e−iγ und β+ = sin e−iδ 2 2 Setzt man die Gleichungen für die Beträge ein in θ θ sin |α+ | = cos |β+ | 2 2 dann folgt sin2 θ τ θ τ cos2 = cos2 sin2 2 2 2 2 und daraus – wegen der Bereiche der beiden Variablen – dann eindeutig τ =θ Benutzt man diese Tatache in der Ausgangsgleichung, dann folgt γ−δ =ϕ Es bleibt also eine freie gemeinsame Phase in |λ+ i und |λ− i. 15