Das Buch "Entwicklung mit Quantencomputern"

BildHallo habrozhiteli! Quantum Computing verändert nicht nur die Realität! Vor unseren Augen entsteht eine völlig neue Branche, um das Undenkbare vorher zu schaffen und einige der Errungenschaften der Vergangenheit abzuwerten. Dieses Buch beschreibt die wichtigsten Komponenten eines Quantencomputers: Qubits, Logikgatter und Quantenschaltungen und erklärt auch den Unterschied zwischen Quantenarchitektur und traditioneller. Mit IBM Q Experience können Sie sowohl im Simulator als auch auf einem realen Quantengerät kostenlos mit ihnen experimentieren.

Sie erfahren, wie Quantenberechnungen mit QISKit (Softwaretools zur Verarbeitung von Quanteninformationen), dem Python SDK und anderen APIs, insbesondere QASM, durchgeführt werden.

Schließlich werden Sie moderne Quantenalgorithmen untersuchen, die Verschränkung, Zufallszahlengenerierung, lineare Suche, ganzzahlige Faktorisierung und andere implementieren. Wir werden uns mit Bell-Zuständen befassen, die die Verschränkung beschreiben, Grovers linearem Suchalgorithmus, Shors Algorithmus zur ganzzahligen Faktorisierung, Optimierungsalgorithmen und vielem mehr. .

Sie werden Folgendes lernen: • Führen Sie Programme mithilfe der Q Experience REST-API remote aus. • Schreiben Sie Algorithmen, die im Vergleich zu Analoga für herkömmliche Computer die höchste Leistung bieten. • Erstellen Sie auf Node.js einen REST-Client, um sich zu authentifizieren, Remote-Geräte abzuhören, Informationen zu Quantenprozessoren anzufordern, Experimente in der Cloud fernzusteuern und auszuführen. • Verwenden Sie die Quantenteleportation. Übertragen Sie mithilfe klassischer Berechnungen und Quantenverschränkung zwischen Sender und Empfänger den genauen Zustand des Qubits (Quanteninformation). • Programmieren und spielen Sie die Quantenversion von Sea Battle. • Verwenden Sie Q Experience Composer, um visuelle Programme / Experimente zu erstellen.

Auszug. Spieltheorie: Mit der Quantenmechanik ist der Vorteil immer auf Ihrer Seite


In diesem Kapitel werden zwei Spielrätsel behandelt, die die beeindruckende Überlegenheit von Quantenalgorithmen gegenüber ihren klassischen Gegenstücken demonstrieren.

  • Das falsche Münzrätsel. Dies ist das klassische Wiegeproblem, das der Mathematiker E. D. Shell 1945 vorgeschlagen hat. Darin müssen Sie unter Verwendung einer Laborwaage für eine begrenzte Anzahl von Wägungen eine Münze bestimmen, deren Gewicht sich vom Gewicht anderer unterscheidet (falsch).
  • Das magische Quadrat von Mermin - Perez. Dies ist ein Beispiel für Quantenpseudotelepathie oder die Fähigkeit der Spieler, Ergebnisse zu erzielen, die nur möglich sind, wenn sie während des Spiels die Gedanken des anderen lesen.

In beiden Fällen befähigt Quantencomputer Spieler mit pseudomagischen Fähigkeiten, als würden sie die ganze Zeit betrügen. Mal sehen, wie das passiert.

Das falsche Münzrätsel


Der Spieler hat acht Münzen und eine Laborwaage. Eine der Münzen ist falsch und wiegt daher weniger als die anderen. Kannst du sie finden? Werfen wir einen kurzen Blick auf die in Abb. 7.1.

1. Legen Sie die Münzen 1-3 auf die linke Seite der Skala und 4-6 auf die rechte Seite. Legen Sie die Münzen 7 und 8 beiseite.

2. Wenn die rechte Seite der Skala überwogen hat, dann falsch - unter den Münzen 1-3 (links). Denken Sie daran, dass gefälschte Münzen einfacher sind. Entfernen Sie dann Münze 3 und legen Sie Münze 1 auf die linke Seite der Waage und Münze 2 auf die rechte Seite.

  • Wenn die richtige Schüssel überwiegt, dann Falschmünze 1.
  • Wenn die linke Schüssel überwiegt, dann die falsche - Münze 2.
  • Wenn das Gleichgewicht ausgeglichen ist, dann Falschmünze 3.

3. Wenn die linke Seite der Skala überwogen hat, dann die falsche - unter den Münzen 4–6. Entfernen Sie Münze 6 und legen Sie Münze 4 auf die linke Seite der Waage und Münze 5 auf die rechte Seite.

  • Wenn die rechte Schüssel überwiegt, dann Falschmünze 4.
  • Wenn die linke Schüssel überwiegt, dann die falsche - Münze 5.
  • Wenn das Gleichgewicht ausgeglichen ist, dann Falschmünze 6.

4. Wenn die Waage ausgeglichen ist, ist die gefälschte Münze entweder 7 oder 8. Legen Sie die Münze 7 auf die linke Seite der Waage und die Münze 8 auf die rechte Seite und wiegen Sie sie.

  • Wenn die rechte Schüssel überwiegt, dann Falschmünze 7.
  • Wenn die linke Schüssel überwiegt, dann die gefälschte Münze 8.

Der klassische Algorithmus kann unabhängig von der Gesamtzahl der Münzen N und der Anzahl der gefälschten Münzen k implementiert werden. Im Allgemeinen beträgt die zeitliche Komplexität für das verallgemeinerte Problem mit gefälschten Münzen O (k log (N / k)).

HINWEIS
Es wurde nachgewiesen, dass mindestens zwei Versuche erforderlich sind, um eine gefälschte Münze mithilfe einer Laborwaage auf einem klassischen Computer zu erkennen.


Bild

Quantenlösung


Ob Sie es glauben oder nicht, es gibt einen Quantenalgorithmus, der eine gefälschte Münze in einem Quantengewicht finden kann, unabhängig von der Anzahl der Münzen N! Im Allgemeinen ist für eine beliebige Anzahl von gefälschten Münzen k unabhängig von N die zeitliche Komplexität eines solchen AlgorithmusBild

HINWEIS Der
Quantenalgorithmus zur Bestimmung einer gefälschten Münze ist ein Beispiel für eine Beschleunigung vierten Grades im Vergleich zu seinem klassischen Gegenstück.

Also, in Abb. 7.2 zeigt die Überlegenheit des Quantenalgorithmus gegenüber dem klassischen Gegenstück bei der Lösung des Rätsels um gefälschte Münzen. Betrachten wir es genauer. Der Quantensuchalgorithmus für eine gefälschte Münze Bildkann in drei Stufen unterteilt werden: eine Anforderung für Quantengewichte, die Erstellung von Quantengewichten und die Definition einer gefälschten Münze.

Bild

Schritt 1. Anforderung von Quantengewichten


Der Quantenalgorithmus fragt die Quantengewichte in Überlagerung ab. Verwenden Sie dazu eine binäre Abfragezeichenfolge, um Münzen auf der Waage zu codieren. Beispielsweise bedeutet die Abfragezeile 11101111, dass sich alle Münzen auf der Waage befinden, mit Ausnahme der Münze mit Index 3. Die Waage wird ausgeglichen, wenn keine gefälschten Münzen vorhanden sind, und ansonsten gekippt. Dies ist in der folgenden Tabelle dargestellt.

Bild

Der Aktionsalgorithmus ist wie folgt.

1. Verwenden Sie zwei Quantenregister, um Quantengewichte abzufragen, wobei das erste Register für die Abfragezeichenfolge und das zweite für das Ergebnis ist.

2. Bereiten Sie eine Überlagerung aller binären Abfragezeichenfolgen mit einer geraden Anzahl von Einheiten vor.

3. Um eine Überlagerung von Zuständen mit einer geraden Anzahl von Einheiten zu erhalten, führen Sie die Hadamard-Transformation im Basiszustand durch und prüfen Sie, ob das Hamming-Gewicht für | x | gilt sogar. Es kann gezeigt werden, dass das Hamming-Gewicht für | x | ist genau dann und nur dann, wenn x1 ⊕ x2 ⊕ ... ⊕ xN = 0 ist.

HINWEIS
Das Hamming-Gewicht (hw) einer Zeichenfolge ist die Anzahl der Zeichen, die nicht das Nullzeichen des verwendeten Alphabets sind. Zum Beispiel ist hw (11101) = 4, hw (11101000) = 4, hw (000000) = 0.

4. Messen Sie abschließend das zweite Register. Wenn eine Bedingung beobachtet wird Bild, ist das erste Register eine Überlagerung aller gewünschten binären Abfragezeichenfolgen. Wenn Sie empfangen werden Bild, müssen Sie den Vorgang wiederholen, bis eine Bedingung erfüllt ist. Bild

Beachten Sie, dass bei jeder Wiederholung die Erfolgswahrscheinlichkeit genau 0,5 beträgt. Nach mehreren Wiederholungen können wir jedoch die gewünschte Überlagerung von Zuständen erhalten. Listing 7.1 zeigt die Implementierung des Quantenprogramms zur Abfrage der Gewichte. Das entsprechende grafische Diagramm ist in Abb. 7 dargestellt. 7.3.

HINWEIS
Um die Wahrnehmung zu vereinfachen, ist das Programm zur Ermittlung einer gefälschten Münze in die Listen 7.1–7.3 unterteilt. Obwohl ich hoffe, dass Sie diese Auflistungen kombinieren können, um das Programm auszuführen, befindet sich der vollständige Code in der Quelle in der Datei Workspace\Ch07\p_counterfeitcoin.py.

Listing 7.1. Querum Weights Query Script

# -------    
Q_program = QuantumProgram()
Q_program.set_api(Qconfig.APItoken, Qconfig.config["url"])

#  numberOfCoins +1 / 
#      
#  
qr = Q_program.create_quantum_register("qr", numberOfCoins + 1)

#     qr
cr = Q_program.create_classical_register("cr", numberOfCoins + 1)

circuitName = "QueryStateCircuit"
circuit = Q_program.create_circuit(circuitName, [qr], [cr])

N = numberOfCoins

#       N
for i in range(N):
     circuit.h(qr[i])

#  XOR(x)     CNOT  qr[0]
#  qr[N–1]     qr[N]
for i in range(N):
     circuit.cx(qr[i], qr[N])

#  qr[N]     cr[N]. ,
#  cr[N]  ,     
circuit.measure(qr[N], cr[N])

#     ,     
# cr[0]...cr[N],     |1>,
#   |0> - |1>  qr[N]
circuit.x(qr[N]).c_if(cr, 0)
circuit.h(qr[N]).c_if(cr, 0)

#      cr[N]
for i in range(N):
     circuit.h(qr[i]).c_if(cr, 2**N)

In Abb. 7.3 ist eine vollständige Übersicht über das Fake-Coin-Puzzle mit acht Münzen und einer Fake mit Index 6. Es zeigt alle hier beschriebenen Schritte für die IBM Q Experience-Plattform. Die zweite Stufe des Algorithmus ist die Erstellung von Gewichten.

Bild

Schritt 2. Quantengewichte erstellen


Im vorherigen Abschnitt haben wir eine Überlagerung aller binären Abfragezeichenfolgen erstellt, für die das Hamming-Gewicht gerade ist. Erstellen Sie in diesem Schritt einen Quantenausgleicher und legen Sie die Position der gefälschten Münze fest. Wenn also k die Position der gefälschten Münze relativ zur Binärzeichenfolge ist, Bildkehren Quantenskalen zurück:

Bild

Dies wird unter Verwendung des CNOT-Gatters mit xk als Steuer-Qubit und dem zweiten Register als Ziel implementiert (siehe Listing 7.2).

Listing 7.2. Quantengewichte erstellen

#-----   
k = indexOfFalseCoin

#       
# (  cr,  )
circuit.cx(qr[k], qr[N]).c_if(cr, 0)

Schritt 3. Identifizieren Sie eine gefälschte Münze


Wenden Sie die Hadamard-Transformation auf die binäre Abfragezeichenfolge an, um nach einer Abfrage der Gewichte eine gefälschte Münze anzuzeigen. Es wird davon ausgegangen, dass wir eine Abfrage zu Quantengewichten mit binären Zeichenfolgen mit einem geraden Hamming-Gewicht durchführen. Nachdem wir nach der Hadamard-Transformation eine Messung auf der Berechnungsbasis durchgeführt haben, können wir eine gefälschte Münze bestimmen, da sich nur ihre Bezeichnung von den meisten Bezeichnungen unterscheidet (siehe Listing 7.3).

Listing 7.3. Gefälschte Münzdefinition

# ---   
#     qr[0] ... qr[N-1]
for i in range(N):
     circuit.h(qr[i]).c_if(cr, 0)

#  qr[0] ... qr[N–1]
for i in range(N):
     circuit.measure(qr[i], cr[i])

results = Q_program.execute([circuitName], backend=backend, shots=shots)
answer = results.get_counts(circuitName)

print("Device " + backend + " counts " + str(answer))

#     
for key in answer.keys():
     normalFlag, _ = Counter(key[1:]).most_common(1)[0]

for i in range(2,len(key)):
     if key[i] != normalFlag:
          print("False coin index is: ", len(key) - i - 1)

Wenn das Bit ganz links 0 ist, kann der Index der gefälschten Münzen bestimmt werden, indem dasjenige gefunden wird, dessen Gewicht sich vom Gewicht der anderen unterscheidet. Beispielsweise sollte bei N = 8 und einem gefälschten Münzindex 6 das Ergebnis 010111111 oder 001000000 sein. Beachten Sie, dass wir cr [N] verwenden, um die Operation vor und nach der Anforderung von Gewichten zu steuern:

  • Wenn das Bit ganz links 0 ist, haben wir die gefälschte Münze erfolgreich identifiziert.
  • Wenn das Bit ganz links 1 ist, haben wir nicht die gewünschte Überlagerung erhalten und müssen den Vorgang erneut wiederholen.

Wenn Sie das Programm auf einem Remote-IBM Q Experience-Simulator ausführen, wird das Ergebnis im Quellcode des Buches angezeigt Workspace\Ch07\p_counterfeitcoin.py. Beachten Sie, dass ich Windows verwende: Wenn Sie keinen Zugriff auf den Quellcode des Buches haben, aber dennoch mit diesem Skript experimentieren möchten, platzieren Sie die Codeausschnitte aus den vorherigen Abschnitten im Skriptcontainer aus Listing 7.4 (überprüfen Sie den Einzug, diese Python-Syntaxfunktion ist einfach verrückt). Listing 7.4. Der Hauptskriptcontainer für das Fake-Coin-Rätsel

c:\python36-64\python.exe p_counterfeitcoin.py
Device ibmq_qasm_simulator counts {'001000000': 1}
False coin index is: 6






import sys
import matplotlib.pyplot as plt
import numpy as np
from math import pi, cos, acos, sqrt
from collections import Counter
from qiskit import QuantumProgram
sys.path.append('../Config/')
import Qconfig

#      
import basic plot tools
from qiskit.tools.visualization import plot_histogram

def main(M = 16, numberOfCoins = 8 , indexOfFalseCoin = 6
      , backend = "local_qasm_simulator" , shots = 1 ):

      if numberOfCoins < 4 or numberOfCoins >= M:
           raise Exception("Please use numberOfCoins between 4 and ", M-1)
      if indexOfFalseCoin < 0 or indexOfFalseCoin >= numberOfCoins:
           raise Exception("indexOfFalseCoin must be between 0 and ",
           numberOfCoins-1)

      //   7.17.3 

#################################################
# main
#################################################
if __name__ == '__main__':
     M = 8                      #    
     numberOfCoins = 4          #  M-1,  M —   
     indexOfFalseCoin = 2             #   0, 1... numberOfCoins — 1

     backend = "ibmq_qasm_simulator"
     #backend = "ibmqx3"
     shots = 1                         #      

     main(M, numberOfCoins, indexOfFalseCoin, backend, shots)

Verallgemeinerter Algorithmus für eine beliebige Anzahl gefälschter Münzen


Um das Rätsel um gefälschte Münzen zu lösen, haben die Mathematiker Terhal und Smolin 1998 einen verallgemeinerten Algorithmus für eine beliebige Anzahl gefälschter Münzen entwickelt (k> 1). Bei ihrer Implementierung wird das Modell "B-Orakel" ("ausgeglichenes Orakel") verwendet, während:

  • am Eingang Bild
  • Es wird eine Abfragezeichenfolge erstellt, die aus N Dreifachbits besteht, so dass Bildmit der gleichen Anzahl von 1 und –1;
  • Die Antwort ist so ein bisschen
    Bild

HINWEIS Das
Oracle ist Teil des Algorithmus, der als Black Box betrachtet wird. Es wird verwendet, um Schemata zu vereinfachen und die Komplexität von Quanten- und klassischen Algorithmen zu vergleichen. Ein gutes Orakel muss schnell, vielseitig und einfach zu implementieren sein.

Ein Beispiel für die Verwendung des B-Orakels für zwei gefälschte Münzen mit k = 2 und N = 6 ist in Abb. 1 dargestellt. 7.4.

Bild

Im Allgemeinen ist das Fake-Coin-Rätsel ein typisches Beispiel für die Beschleunigung des Quantenalgorithmus im Vergleich zum klassischen Gegenstück. Im nächsten Abschnitt werden wir ein weiteres eigenartiges pseudomagisches Puzzle betrachten, das „das magische Quadrat von Mermin - Perez“ genannt wird.

Über den Autor


Vladimir Silva absolvierte die Middle TN State University mit einem Master-Abschluss in Informatik. Fünf Jahre lang arbeitete er als Research Engineer bei IBM, wo er umfangreiche Erfahrungen im Bereich Distributed und GRID Computing sammelte.

Vladimir verfügt über zahlreiche Zertifikate, darunter OCP (Oracle Certified Professional), MCSD (Microsoft Certified Solutions Developer) und MCP (Microsoft Certified Professional). Er ist außerdem Autor zahlreicher technischer Artikel für die IBM developerWorks-Site. Er hat die folgenden Bücher geschrieben: Grid Computing für Entwickler (Charles River Media), Practical Eclipse Rich Client Platform (Apress), Pro Android-Spiele (Apress) und Advanced Android 4 Games (Apress).

Vladimir ist ein begeisterter Marathonläufer, der (zum Zeitpunkt des Schreibens) an 16 Rennen in North Carolina teilgenommen hat. Er liebt es, klassische Gitarre zu spielen und über so erstaunliche Dinge wie die Quantenmechanik nachzudenken.

Über Wissenschaftsredakteure


Original Edition

Jason Whitehorn ist ein erfahrener Unternehmer und Softwareentwickler. Er hat vielen Öl- und Gasunternehmen dabei geholfen, ihre Technologie durch Betriebsdatenerfassung, SCADA (Aufsichtskontrolle und Datenerfassung) und maschinelles Lernen zu automatisieren und zu verbessern. Jason absolvierte die Arkansas State University mit einem Bachelor-Abschluss in Informatik.

Jason liebt es, Freizeit mit seiner Frau und vier Kindern zu verbringen. Lebt in Tulsa, Oklahoma. Weitere Informationen über Jason finden Sie auf seiner Website jason.whitehorn.us .

Russische Ausgabe

Mikhail Korobko- Ein Physiker beschäftigt sich mit Theorie und Experimenten zur Anwendung von Quantenoptik, Optomechanik und Quantenmessungen zur Verbesserung der Empfindlichkeit von Gravitationswellendetektoren. Seit 2012 ist es Mitglied der internationalen Zusammenarbeit von Wissenschaftlern am LIGO-Gravitationswellendetektor.

Mikhail absolvierte das Physik-Institut der Moskauer Staatlichen Universität. Lomonosov ist derzeit Doktorand am Institut für Laserphysik der Universität Hamburg. Er verbringt seine Freizeit mit seiner Familie, schreibt populärwissenschaftliche Artikel über Quantenphysik und veröffentlicht Beiträge auf Twitter (@hbar_universe).

»Weitere Informationen zum Buch finden Sie auf der Website des Herausgebers.
» Inhaltsverzeichnis
» Auszug

für Sparkassen 25% Rabatt auf den Gutschein - Silva

Nach Zahlung der Papierversion des Buches wird ein elektronisches Buch per E-Mail verschickt.

All Articles