Ich habe mich gefragt, ob es eine Möglichkeit gibt, ein Programm mit mehreren Quantenschaltungen zu erstellen, ohne dass das Register für jede Schaltung bei initialisiert wird .
Insbesondere möchte ich nach dem Ausführen der ersten eine zweite Quantenschaltung ausführen, wie in diesem Beispiel:
qp = QuantumProgram()
qr = qp.create_quantum_register('qr',2)
cr = qp.create_classical_register('cr',2)
qc1 = qp.create_circuit('B1',[qr],[cr])
qc1.x(qr)
qc1.measure(qr[0], cr[0])
qc1.measure(qr[1], cr[1])
qc2 = qp.create_circuit('B2', [qr], [cr])
qc2.x(qr)
qc2.measure(qr[0], cr[0])
qc2.measure(qr[1], cr[1])
#qp.add_circuit('B1', qc1)
#qp.add_circuit('B2', qc2)
pprint(qp.get_qasms())
result = qp.execute()
print(result.get_counts('B1'))
print(result.get_counts('B2'))
Leider , was ich bekommen , ist das gleiche Ergebnis für die beiden Läufe (dh eine Zählung 11
für die B1
und B2
statt 11
und 00
für die zweite, als ob B2
auf einem völlig neuen Zustand auf initialisiert läuft 00
nach B1
.
algorithm
programming
qiskit
asdf
quelle
quelle
Antworten:
In Qiskit können Sie zwei Schaltkreise zusammenstellen, um einen größeren Schaltkreis zu erstellen. Sie können dies einfach tun, indem Sie den
+
Operator auf den Schaltkreisen verwenden.Hier ist Ihr Programm neu geschrieben, um dies zu veranschaulichen (Hinweis: Sie benötigen dazu die neueste Version von Qiskit, aktualisieren Sie mit
pip install -U qiskit
).Sie können sehen, dass qc3 eine Verkettung von q1 und q2 ist.
Ausbeuten:
Nun möchten Sie den Status anscheinend zweimal prüfen: einmal dort, wo qc1 endet, und einmal, wenn qc2 endet. Sie können dies in einem Simulator tun, indem Sie
snapshot
Befehle einfügen . Dadurch wird der Zustandsvektor an einem bestimmten Punkt in der Schaltung gespeichert. Es bricht den Staat nicht zusammen.Sie können jetzt
qc3
auf einem Simulator ausführen .Ausbeuten: [0. + 0.j 0. + 0.j 0. + 0.j 1. + 0.j] [1. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j] {'00': 1024}
Der Zustand geht also wie erwartet auf | 00> zurück.
quelle
Sobald Sie eine Messung durchführen, kollabiert die Wellenfunktion des Quantenzustands / Registers und es verliert seine Quantennatur. Es ist nicht sinnvoll, eine andere Schaltung darauf anzuwenden.
quelle