Je veux créer facilement un circuit qui crée un état arbitraire! Avez-vous des idées? Par exemple ...
python
\frac{|0>+|1>}{\sqrt{2}}
Eh bien, c'est facile. Il peut être créé avec le circuit suivant.
Cependant, il existe des outils qui permettent de créer cet état sans connaître la porte Hadamard! C'est le StateVectorCircuit.
StateVectorCircuit
Créons un circuit qui crée l'état ci-dessus en utilisant StateVectorCircuit.
Tout d'abord, importez le package à utiliser.
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
Ensuite, définissez l'état que vous souhaitez créer cette fois
python
state = [1 / np.sqrt(2), 1 / np.sqrt(2)]
Entrez ceci dans le StateVectorCircuit.
python
svc = StateVectorCircuit(state)
Deux valeurs sont stockées ici.
python
print(svc._num_qubits)
# 1
print(svc._state_vector)
# [0.70710678 0.70710678]
Puisque le circuit n'a pas encore été créé, construct_circuit est exécuté ici.
qc = svc.construct_circuit()
C'est le circuit créé
Exécutons-le réellement et voyons le résultat.
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. Ça fait du bien.
Au fait, il se normalisera sans autorisation, donc par exemple
python
state = [100, 100]
Il vous soutiendra également. Bien sûr, plusieurs qubits conviennent.
Cette fois, j'ai présenté StateVectorCircuit, qui semble être utile. En passant, si la version de Qiskit que vous utilisez est ancienne, vous pouvez obtenir une erreur. Le qiskit lui-même évolue de jour en jour.