Qiskit: 어떤 상태를 만드는 회로를 만들고 싶다! !

소개



어떤 상태를 만드는 회로를 쉽게 만들고 싶습니다! 생각하지 않습니까?
예를 들면...
\frac{|0>+|1>}{\sqrt{2}}

음, 이것은 간단합니다. 다음 회로로 만들 수 있습니다.



그러나 Hadamard gate를 몰라도 이 상태를 만들 수 있는 도구가 있습니다!
이것이 StateVectorCircuit입니다.

StateVectorCircuit



방금 설명한 상태를 만드는 회로를 StateVectorCircuit을 사용하여 만들어 봅시다.

먼저 사용할 패키지를 가져옵니다.
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

다음에 이번에 만들고 싶은 상태를 정의
state = [1 / np.sqrt(2), 1 / np.sqrt(2)]

이것을 StateVectorCircuit에 입력하십시오.
svc = StateVectorCircuit(state)

여기에는 두 개의 값이 저장됩니다.
print(svc._num_qubits)
# 1
print(svc._state_vector)
# [0.70710678 0.70710678]

여기에서는 아직 회로가 작성되어 있지 않기 때문에 construct_circuit를 실시합니다.
qc = svc.construct_circuit()

생성된 회로가 이



이제 실제로 실행하고 결과를 살펴 보겠습니다.
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)



흠. 좋은 느낌이군요.

덧붙여서, 마음대로 normalize 해주기 때문에 예를 들어
state = [100, 100]

라든지라도 대응해 줍니다.
물론 여러 qubits에서도 괜찮습니다.

요약



이번에는 뭔가 편리한 StateVectorCircuit을 소개했습니다.
덧붙여서 사용하고 있는 Qiskit의 버전이 낡으면 error를 토할지도 모릅니다. qiskit 자체가 날마다 진화하고 있으니까요.

좋은 웹페이지 즐겨찾기