Abo
  • Services:
Anzeige
Versuchsaufbau im Quantenlabor in Innsbruck
Versuchsaufbau im Quantenlabor in Innsbruck (Bild: Werner Pluta)

Ein Programmierbeispiel mit Quipper

Die erste Funktion, plus_minus, erzeugt zunächst mit qinit aus einem gewöhnlichen Bit ein Qubit, das den gleichen Messwert wie das Bit hat, also entweder 0 oder 1. Die Funktion soll aber als Ausgabewert ein Qubit liefern, das mit 50 Prozent Wahrscheinlichkeit mit 0 oder 1 gemessen wird. Es gibt aber zwei unterschiedliche Zustände eines Qubits, die diese Eigenschaft haben: der Zustand Plus und der Zustand Minus. Dazu muss der Quantencomputer ein Hadamard-Gatter auf das Qubit anwenden.

Anzeige

Wenn das Hadamard-Gatter auf ein Qubit im Zustand 0 angewendet wird, nimmt es den Zustand Minus ein, sonst den Zustand Plus. Eine zweite Anwendung des Hadamard-Gatters würde das Qubit danach wieder in seinen ursprünglichen Zustand zurückversetzen. Da der Code von Quipper an Haskall angelehnt ist, beginnt die Implementierung der Funktion hier mit "do".

  1. plus_minus :: Bool -> Circ Qubit
  2. plus_minus b = do
  3. q <- qinit b
  4. r <- hadamard q
  5. return r

Die Share-Funktion erzeugt ein Qubit und verschränkt es durch ein kontrolliertes (quanten-)NOT-Gatter mit einem anderen Qubit. Die Funktion benötigt also ein Qubit als Eingabewert, das verschränkt werden soll, und gibt die beiden verschränkten Qubits als Ausgabewert zurück.

  1. share :: Qubit -> Circ (Qubit, Qubit)
  2. share a = do
  3. b <- qinit False
  4. b <- qnot b 'controlled' a
  5. return (a,b)

Mit beiden Funktionen zusammen kann der Quantencomputer angewiesen werden, ein Paar verschränkter Qubits zu erzeugen. Ganz konkret wird hier der Bellzustand 00 erzeugt. Das ist ein Paar verschränkter Qubits, die beide den Zustand Minus haben, aber durch Anwendung eines Hadamard-Gatters wieder in den Zustand 0 versetzt werden können. Sie dienen in der Teleportation nur als Vermittler.

  1. bell00 :: Circ (Qubit, Qubit)
  2. bell00 = do
  3. a <- plus_minus False
  4. (a,b) <- share a
  5. return (a,b)

Die eigentliche Teleportation findet in diesen sechs Zeilen statt. Alice will das Qubit q teleportieren. Dazu wird mit bell00 ein Paar verschränkter Qubits (a,b) erzeugt. Alice benutzt das erste Qubit, a, und ihr eigenes Qubit, q, um ein Paar herkömmlicher Bits (x,y) zu erzeugen. Das geschieht durch eine Funktion "alice", die hier noch nicht definiert ist. Die Messwerte dieser beiden Bits sind vollkommen zufällig. Die Messwerte werden aber von Bob benötigt.

Denn Bob bekommt nur das Qubit b zugeschickt, das noch keine Informationen trägt. Aber mit Hilfe der beiden Bits (x,y) kann Bob das Qubit b so manipulieren, dass es den Wert annimmt, den das Qubit q anfangs hatte. Das alles passiert in der Funktion "bob", die auch noch zu definieren ist.

  1. teleport :: Qubit -> Circ Qubit
  2. teleport q = do
  3. (a,b) <- bell00
  4. (x,y) <- alice q a
  5. b <- bob b (x,y)
  6. return b

Die Funktion alice benötigt das Qubit q, das teleportiert werden soll, und eines der beiden verschränkten Qubits a und b. Auf das Qubit a wird ein kontrolliertes NOT Gatter angewendet, mit dem Zustand q als Kontrollvariable. Sollte q den Zustand 1 haben, wird der Zustand von a umgekehrt, sonst nicht. Anschließend wird ein Hadamard-Gatter auf q angewendet. Wie schon bei der Plus_minus-Funktion führt das bei der anschließenden Messung dazu, dass q mit 50 Prozent Wahrscheinlichkeit mit 1 oder 0 gemessen wird.

Die Funktion alice misst anschließend q und a. Dabei werden die Zustände dieser beiden Qubits zerstört und die erste Hälfte der Teleportation ist vollzogen. Was bleibt, sind zwei Bits als Messwerte, die Rückgabewerte der Funktion. Diese beiden Bits werden anschließend an Bob weitergegeben, der damit das Qubit q wieder herstellen kann.

  1. alice :: Qubit -> Qubit -> Circ (Bit,Bit)
  2. alice q a = do
  3. a <- qnot a 'controlled' q
  4. q <- hadamard q
  5. (x,y) <- measure (q,a)
  6. return (x,y)

Die Messergebnisse von q und a lassen sich nicht vorhersagen. Aber beide Qubits sind direkt oder indirekt mit Bobs Qubit b verschränkt. Die Messung des Zustands von q und a liefert alle Informationen, die Bob braucht, um aus b wieder den Zustand q zu erzeugen, vorausgesetzt er hat das Qubit b erhalten und es wurde nicht verändert. Das ist der einzige Weg, den ursprünglichen Zustand des Qubits q wieder zu erzeugen, denn der wurde bei der Messung der Qubits zerstört.

Die Messergebnisse y und x sagen Bob, was er mit dem Qubit b tun muss, um daraus den Zustand des zerstörten Qubits q zu erzeugen. Falls y eine 1 ist, muss er ein X Gate anwenden, ein Phasenschieber mit einem bestimmten Winkel, der den Zustand des Qubits um die X-Achse rotiert. Falls x eine 1 ist, wird ein Z Gate angewendet, das ganz ähnlich funktioniert. Die beiden Bits werden jetzt nicht mehr benötigt und b ist in dem Zustand, den ursprünglich das von Alice teleportierte Qubit q hatte.

  1. bob :: Qubit -> (Bit,Bit) -> Circ Qubit
  2. bob b (x,y) = do
  3. b <- gate_X b 'controlled' y
  4. b <- gate_Z b 'controlled' x
  5. cdiscard (x,y)
  6. return b

Die Implementierung fortgeschrittenerer Algorithmen ist entsprechend komplexer. Sie wird mehr Funktionen erfordern, aber auch mehr Komfort durch vorhandene Bibliotheken bieten, in der die Teleportation eines Qubits von einer Speicherstelle zu einer anderen mit einem einzigen Befehl geschieht. Diese Grundlagen sollen schon jetzt gelegt werden, noch bevor die Technik tatsächlich Anwendungsbereit ist.

Wenn die Hardware existiert, sollen die ersten Programme schon längst mit Hilfe der Simulatoren entwickelt sein und in den Datenbanken auf ihre Ausführung warten. Und so wird die Programmierung von Quantencomputern heute schon zu einem realen Problem.

 Simulatoren: Quantencomputer werden heute schon programmiert

eye home zur Startseite
jnv 08. Aug 2017

wtf. So eine blöde Einstellung...

divStar 08. Aug 2017

Ich würde dir gerne glauben, denn ich traue das allen genannten Akteuren absolut zu...

NitroX007 07. Aug 2017

@Tollversteher +1



Anzeige

Stellenmarkt
  1. Online Verlag GmbH Freiburg, Freiburg
  2. IBM Client Innovation Center Germany GmbH, Braunschweig
  3. über duerenhoff GmbH, Raum Essen
  4. msg DAVID GmbH, Braunschweig


Anzeige
Top-Angebote
  1. 189€
  2. (u. a. Galaxy S8 für 499€ und S8+ für 579€, S7 für 359€, 65"-UHD-TV für 1.199€ und 850...

Folgen Sie uns
       


  1. Microsoft

    Windows on ARM ist inkompatibel zu 64-Bit-Programmen

  2. Fehler bei Zwei-Faktor-Authentifizierung

    Facebook will keine Benachrichtigungen per SMS schicken

  3. Europa-SPD

    Milliardenfonds zum Ausbau von Elektrotankstellen gefordert

  4. Carbon Copy Cloner

    APFS-Unterstützung wird wegen Datenverlustgefahr beschränkt

  5. Die Woche im Video

    Spezialeffekte und Spoiler

  6. Virtual RAN

    Telekom und Partner bauen Edge-Computing-Testnetz

  7. Basemental

    Mod erweitert Die Sims 4 um Drogen

  8. Verschlüsselung

    TLS 1.3 ist so gut wie fertig

  9. Colt Technology

    Mobilfunk ist Glasfaser mit Antennen

  10. Robotik

    Defekter Robonaut kommt zurück zur Erde



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Ryzen 5 2400G und Ryzen 3 2200G im Test: Raven Ridge rockt
Ryzen 5 2400G und Ryzen 3 2200G im Test
Raven Ridge rockt
  1. Krypto-Mining AMDs Threadripper schürft effizient Monero
  2. AMD Zen+ und Zen 2 sind gegen Spectre gehärtet
  3. Pinnacle Ridge Asus aktualisiert Mainboard für Ryzen 2000

Dorothee Bär: Netzbetreiber werden über 100 MBit/s angeblich kaum los
Dorothee Bär
Netzbetreiber werden über 100 MBit/s angeblich kaum los
  1. FTTH/B Glasfaser wird in Deutschland besser nachgefragt
  2. Koalitionsvertrag fertig "Glasfaser möglichst direkt bis zum Haus"
  3. Glasfaser Telekom weitet FTTH-Pilotprojekt auf vier Orte aus

Hightech im Haushalt: Der Bügel-Battle fällt leider aus
Hightech im Haushalt
Der Bügel-Battle fällt leider aus
  1. Smart Home Hardwareteams von Nest und Google werden zusammengeführt
  2. Lingufino Sprachgesteuerter Kobold kuschelt auch mit Datenschützern
  3. Apple Homepod soll ab Frühjahr 2018 in Deutschland erhältlich sein

  1. Re: Geht doch auch mit alter Hardware...

    sidmos6581 | 06:46

  2. Re: Kupfer ist besser als eine Antenne

    wire-less | 06:41

  3. Re: Wasserstoff wäre billiger

    Bradolan | 06:21

  4. Re: Noch in den Kinderschuhen, aber sehr interessant.

    DAGEGEN | 04:38

  5. Re: neuer C64 statt C64 Mini

    gehtjanx | 04:36


  1. 19:40

  2. 14:41

  3. 13:45

  4. 13:27

  5. 09:03

  6. 17:10

  7. 16:45

  8. 15:39


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel