Ich möchte einfach eine Schaltung erstellen, die einen beliebigen Zustand erzeugt! Hast du irgendwelche gedanken Zum Beispiel ...
python
\frac{|0>+|1>}{\sqrt{2}}
Das ist einfach. Es kann mit der folgenden Schaltung erstellt werden.
Es gibt jedoch Tools, die diesen Status erstellen können, ohne das Hadamard-Tor zu kennen! Das ist der StateVectorCircuit.
StateVectorCircuit
Erstellen wir eine Schaltung, die den obigen Status mit StateVectorCircuit erstellt.
Importieren Sie zunächst das zu verwendende Paket.
python
import numpy as np
from qiskit.aqua.circuits import StateVectorCircuit
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, execute
from qiskit import BasicAer
from qiskit.visualization import plot_histogram
Definieren Sie als Nächstes den Status, den Sie dieses Mal erstellen möchten
python
state = [1 / np.sqrt(2), 1 / np.sqrt(2)]
Geben Sie dies in den StateVectorCircuit ein.
python
svc = StateVectorCircuit(state)
Hier werden zwei Werte gespeichert.
python
print(svc._num_qubits)
# 1
print(svc._state_vector)
# [0.70710678 0.70710678]
Da die Schaltung noch nicht erstellt wurde, wird hier construct_circuit ausgeführt.
qc = svc.construct_circuit()
Dies ist die erstellte Schaltung
Lassen Sie es uns tatsächlich ausführen und das Ergebnis sehen.
cr = ClassicalRegister(1)
qc.add_register(cr)
qc.measure([0], [0])
num_shots = 10000
backend = BasicAer.get_backend('qasm_simulator')
results = execute(qc, backend, shots=num_shots).result()
counts = results.get_counts(qc)
plot_histogram(counts1)
HM. Es fühlt sich gut an.
Übrigens wird es ohne Erlaubnis normalisiert, so zum Beispiel
python
state = [100, 100]
Es wird Sie auch unterstützen. Natürlich sind mehrere Qubits in Ordnung.
Dieses Mal habe ich StateVectorCircuit eingeführt, was nützlich zu sein scheint. Wenn die von Ihnen verwendete Version von Qiskit alt ist, wird möglicherweise eine Fehlermeldung angezeigt. Das Qiskit selbst entwickelt sich von Tag zu Tag weiter.