In Qiskit ist es möglich, durch Hinzufügen von Rauschen näher an ein reales Gerät heranzukommen, wenn eine Schaltung mit einem Simulator simuliert wird. Das Einstellen von Rauschen ist jedoch hochspezialisiert und äußerst schwierig. (Meiner Meinung nach ...)
Als ich nach einer einfachen Möglichkeit suchte, ein NoiseModel zu erstellen, fand ich es und werde es hier zusammenfassen.
Erstellen Sie zunächst eine Schaltung, die zum Vergleich einen [GHZ] -Zustand (https://en.wikipedia.org/wiki/Greenberger%E2%80%93Horne%E2%80%93Zeilinger_state) ohne Rauschen erstellt.
GHZ state
GHZ-Zustand bei 3 Qubits
|GHZ> = \frac{|000>+|111>}{\sqrt{2}}
import
python
# matplotlib inline
from qiskit import execute, QuantumCircuit, QuantumRegister
from qiskit.visualization import plot_histogram
from qiskit import BasicAer
#Definition des Quantenregisters
qr = QuantumRegister(3)
#Definition der Quantenschaltung
qc = QuantumCircuit(qr)
#Adamal Tor zu 0bit
qc.h(0)
# 0bit-CNOT mit 1bit
qc.cx(0, 1)
# 1bit-CNOT mit 2bit
qc.cx(1, 2)
#Messen Sie alle Quantenregister
qc.measure_all()
#Schaltung anzeigen
qc.draw(output='mpl')
#Backend-Einstellungen
backend = BasicAer.get_backend('qasm_simulator')
#Schaltungsausführung
result = execute(qc, backend).result()
#Holen Sie sich zählt
counts = result.get_counts()
#Diagramm zählt in ein Histogramm
plot_histogram(counts)
Mit dem Simulator können Sie schöne Ergebnisse erzielen.
Wir werden das gleiche Geräuschmodell wie die tatsächliche Maschine mit einem Simulator reproduzieren.
import
# matplotlib inline
from qiskit import QuantumCircuit, execute
from qiskit import IBMQ, Aer
from qiskit.visualization import plot_histogram
from qiskit.providers.aer.noise import NoiseModel
#Rufen Sie das IBMQ-Konto auf.
provider = IBMQ.load_account()
#Diesmal ibmq_Verwenden Sie das Noise Model von vigo
backend = provider.get_backend('ibmq_vigo')
noise_model = NoiseModel.from_backend(backend)
#Definition des Quantenregisters
qr = QuantumRegister(3)
#Definition der Quantenschaltung
qc = QuantumCircuit(qr)
#Adamal Tor zu 0bit
qc.h(0)
# 0bit-CNOT mit 1bit
qc.cx(0, 1)
# 1bit-CNOT mit 2bit
qc.cx(1, 2)
#Messen Sie alle Quantenregister
qc.measure_all()
#Lauf
result = execute(qc, Aer.get_backend('qasm_simulator'),
noise_model=noise_model).result()
counts = result.get_counts()
#Diagramm zählt in ein Histogramm
plot_histogram(counts)
auf diese Weise$ |000>
Es scheint verschiedene andere Optionen zu geben, daher möchte ich dies untersuchen.