Quantencomputing ist das Gebiet der Technologie, das Prinzipien der Quantenmechanik nutzt (d. h Überlagerung Und Verstrickung) Informationen grundsätzlich anders verarbeiten als klassische Laptop. Um es in einfachen Worten auszudrücken: Quantencomputer verwenden anstelle von Bits (0 oder 1). Qubits um komplexe, hochdimensionale Probleme in der Chemie, Materialwissenschaft und Optimierung zu lösen, möglicherweise in Sekunden statt in Jahren.
In der Praxis werden Probleme durch den Aufbau sogenannter mathematischer Modelle gelöst Quantenschaltungen: Sequenzen von Operationen und Anweisungen, die einige Eingaben entgegennehmen und eine Ausgabe zurückgeben (ähnlich wie bei linearer Regression und neuronalen Netzen). Im Quantencomputing werden diese Operationen aufgerufen Tore die Daten (Qubits) auf andere Weise modifizieren. Im Grunde ist ein Schaltkreis ein Satz, und die Gatter sind die Wörter, aus denen der Satz besteht.
Für die Durchführung von Experimenten werden Schaltkreise verwendet. Konkret gibt es zwei Arten Quantensimulationen:
- Verwendung eines normalen Computer systems zur Simulation eines Quantencomputers. Als würde man Python verwenden, um eine Schaltung zu schreiben, und einen Simulator, um sie auszuführen, während ein echter Quantencomputer die Schaltung physisch implementieren würde.
- Mit einem Quantencomputer ein reales Quantensystem simulieren (wie Atome oder Elektronen). In der Natur existieren bereits Quantensysteme, und klassische Laptop haben Schwierigkeiten, sie zu simulieren, da der Zustandsraum exponentiell wächst. Andererseits können Quantenmaschinen diese Systeme effizienter modellieren, da sie natürlich denselben Regeln folgen.
In diesem Tutorial zeige ich Ihnen, wie Sie eine Quantensimulation auf Ihrem Laptop ausführen. Dieser Artikel ist die Fortsetzung von „Ein Anfängerleitfaden zum Quantencomputing mit Python„.
Aufstellen
Zuerst müssen wir installieren Qiskit (pip set up qiskit), eine von IBM entwickelte Open-Supply-Bibliothek für die Arbeit mit Quantencomputern, mit der Sie ein Quantengerät auf Ihrem lokalen Laptop simulieren können.
Der einfachste Code, den wir schreiben können, besteht darin, einen zu erstellen Quantenschaltung (Umgebung für Quantenberechnungen) mit nur einem Qubit und initialisieren Sie es auf 0. Um den Zustand des Qubits zu messen, benötigen wir a Zustandsvektorwas Ihnen im Grunde die aktuelle Quantenrealität Ihrer Schaltung verrät.
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
q = QuantumCircuit(1,0) #circuit with 1 quantum bit and 0 basic bit
state = Statevector.from_instruction(q) #measure state
state.possibilities() #print prob%

Dies bedeutet, dass die Wahrscheinlichkeit, dass das Qubit 0 ist (erstes Component), 100 % beträgt und die Wahrscheinlichkeit, dass das Qubit 1 ist (zweites Component), 0 % beträgt. Lassen Sie uns den Zustand visualisieren:
from qiskit.visualization import plot_bloch_multivector
plot_bloch_multivector(state, figsize=(3,3))

Schaltungen
Ein Quantengatter ist eine einzelne Operation, die den Quantenzustand ändert. Ein Quantenschaltkreis ist eine Folge von Gattern, die im Laufe der Zeit auf Qubits angewendet werden.
Beginnen wir mit dem Aufbau einer einfachen Schaltung.
q = QuantumCircuit(1,0) #circuit with 1 quantum bit and 0 basic bit
q.draw(output="mpl", scale=0.7) #present circuit with matplotlib

Wir haben ein Qubit, aber um es zu messen, müssen wir unserem Schaltkreis ein klassisches Bit hinzufügen.
q = QuantumCircuit(1,1) #add 1 basic bit
q.draw(output="mpl", scale=0.7)

Um eine Rennstrecke aufzubauen, sollte man wissen, was man erreichen möchte, oder anders ausgedrückt, man muss die Tore und ihre Funktion kennen. Der Ansatz ähnelt dem neuronaler Netze: Sie verwenden einfach eine Ebene nach der anderen, um die gewünschte Ausgabe zu erhalten (z. B. Faltungen in Bildern und Einbettungen in Textual content). Die häufigste Operation ist die Hadamard-Tor (H-Gate), das eine Superposition auf ein Qubit anwendet.
q = QuantumCircuit(1,1)
q.h(0) #Hadamard gate (Superposition)
q.draw(output="mpl", scale=0.7)

Auf dem Bild sehen wir, dass das rote H-Gate auf das Qubit angewendet wird und es von einer eindeutigen 0 in eine 50/50-Mischung aus 0 und 1 umwandelt. Fügen wir eine Messbox hinzu, die diese Überlagerung in einen realen Wert (entweder 0 oder 1) zusammenfasst, indem wir dieses Ergebnis im klassischen Bit speichern.
q = QuantumCircuit(1,1)
q.h(0)
q.measure(qubit=0, cbit=0) #measure qubit with basic bit
q.draw(output="mpl", scale=0.7)

Die Schaltung wurde von meinem klassischen Laptop mathematisch so entworfen, wie sie auf Papier geschrieben conflict, aber sie wurde noch nicht ausgeführt.
Simulation
Bei einer Quantensimulation verwenden Sie einen Laptop, um das Verhalten eines Quantensystems zu modellieren. Wenn Sie eine Schaltung schreiben (wie ich es oben getan habe), beschreiben Sie lediglich das mathematische Modell. Um es auszuführen, benötigen Sie eine Backend-Engine, die den Quantenschaltkreis in einer Simulation ausführt.
Qiskit-Aer (pip set up qiskit-aer) ist die Engine, die Quantenschaltungen in der Simulation ausführt. Mit Aer können Sie Quantenschaltungen auf Ihrem Laptop ausführen und so verschiedene Aspekte echter Quantenhardware (Quantenzustand, Messung, verrauschtes System) simulieren.
Ich werde das Experiment mit der zuvor geschriebenen Schaltung (ein klassisches Bit + ein Qubit in Superposition) 1000 Mal durchführen.
from qiskit_aer import AerSimulator
sim = AerSimulator()
end result = sim.run(q, photographs=1000).end result()
end result.get_counts()

Das Qubit wurde 1000 Mal gemessen, was 500 Mal 1 und 500 Mal 0 ergab. Wir können es uns vorstellen:
from qiskit.visualization import plot_histogram
plot_histogram(end result.get_counts(),
figsize=(5,4), shade="black", title="1-qubit in Superposition")

Das Ergebnis ist vollkommen gleichmäßig, da Aer perfekte Quantenzustände simulieren kann, die auf echter {Hardware} unmöglich wären. In der realen Welt sind Quanteninformationen äußerst fragil und sie funktionieren unter der Annahme, dass das System perfekt und stabil ist und es den Teilchen ermöglicht, in mehreren Zuständen zu existieren (Kohärenz). Doch in dem Second, in dem das Qubit mit irgendetwas interagiert, etwa mit Wärme oder Vibrationen, verliert das System seine Harmonie und seine Quanteneigenschaften (Dekohärenz).
Daher können Sie ein Qubit in Superposition (sowohl 0 als auch 1 gleichzeitig) nur in einer Simulation visualisieren, jedoch niemals in der realen Welt. Denn in dem Second, in dem Sie das Qubit beobachten, erzeugen Sie Rauschen und das System kollabiert auf eine einzige Zahl (0 oder 1). In der Praxis dienen echte Quantencomputer nur der Ergebnismessung, während Simulationen zum Entwurf von Quantenmodellen verwendet werden.
Um das Experiment realistischer zu gestalten, kann man der Simulation Rauschen hinzufügen.
from qiskit_aer import noise
n = noise.NoiseModel()
error = noise.depolarizing_error(param=0.10, num_qubits=1) #10% error chance
n.add_all_qubit_quantum_error(error=error, directions=('h'))
sim = AerSimulator(noise_model=n)
end result = sim.run(q, photographs=1000).end result()
plot_histogram(end result.get_counts(),
figsize=(5,4), shade="black", title="1-qubit in Superposition")

Abschluss
Dieser Artikel conflict ein Tutorial zu Quantensimulationen mit Python einführen und Qiskit. Wir haben gelernt, was der Unterschied zwischen einer echten {Hardware} und einem Quantenexperiment ist. Wir haben auch gelernt, wie man Quantenschaltungen entwirft und eine Simulation auf einer klassischen Maschine durchführt.
Vollständiger Code für diesen Artikel: GitHub
Ich hoffe, es hat Ihnen gefallen! Kontaktieren Sie mich gerne für Fragen und Suggestions oder einfach nur, um mir Ihre interessanten Projekte mitzuteilen.

(Alle Bilder stammen vom Autor, sofern nicht anders angegeben)
