qiskit을 사용하여 양자 스텔스 전송을 실현하다

최근에 나는 이 책으로 양자 계산을 배우기 시작했다.
연습문제가 어려워요(웃음)
여기서 출력의 일환으로 qskit를 사용하여 양자 스텔스 전송을 실현합니다!
개발 환경은colab입니다.

IBM 계정 만들기


여기서 IBM 계정을 만듭니다.

qiskit 설치

pip install qiskit
pip install pylatexenc
아래의 이것은 양자 회로를 표시하는 데 쓰인다.(없어도 괜찮아, 있으면 더 보기 쉬울 거야.)

원하는 라이브러리 가져오기

from qiskit import *
import numpy as np
%matplotlib inline

회로를 만들어라!

qc = QuantumCircuit(3, 1)

#未知の状態を作る
qc.ry(np.pi/5, 0)
qc.barrier()

#ベル状態を作る
qc.h(1)
qc.cx(1, 2)
qc.barrier()

qc.cx(0, 1)
qc.h(0)
qc.barrier()

qc.cz(0, 2)
qc.cx(1, 2)

qc.ry(-np.pi/5, 2)

qc.measure(2, 0)

qc.draw(output="mpl")
실행 결과

내가 회로를 설명할게.
공식적인 기초가 있으면 아래 문장에 쓰일 것 같은데 분위기를 잡아주면 좋을 것 같아요.
첫 번째 $q0$RY$Y 이 문에서 보내고 싶은 양자 상태를 만듭니다.
다음 점선에서 $q1달러와 $q2달러는 벨소리 상태라는 특수한 상태에 있다.
여기까지는 준비 단계라고 할 수 있고, 이어서 양자 스텔스 통역을 시작한다.
다음은 다음 글에서 설명하겠습니다.

실제로 양자컴퓨터에 던져봐요.

from qiskit import IBMQ
IBMQ.save_account('###') #ここに自分のtokenをいれる
#使える量子コンピューターを調べる
IBMQ.load_account()
provider = IBMQ.get_provider(hub='ibm-q')
provider.backends()
현재 실행 결과에 사용할 수 있는 양자 컴퓨터를 표시합니다.
# 最もすいているバックエンドを選ぶ
from qiskit.providers.ibmq import least_busy
large_enough_devices = IBMQ.get_provider().backends(filters=lambda x: x.configuration().n_qubits > 3 and not x.configuration().simulator) 
print(large_enough_devices)
real_backend = least_busy(large_enough_devices)   

print("ベストなバックエンドは " + real_backend.name())
실행 결과에 가장 빈 부분을 표시합니다.
job = execute(qc,real_backend)
# ジョブの実行状態を確認
from qiskit.tools.monitor import job_monitor
job_monitor(job)
자신의 상황을 한 시간 정도 기다렸더니 결과가 나왔다
real_result= job.result()
print(real_result.get_counts(qc))
plot_histogram(real_result.get_counts(qc))
실행 결과

감상


시뮬레이터를 사용하면 0은 100%이지만 실제 양자컴퓨터는 1이 조금 나온다.오류 제어?양자 컴퓨터가 아직 할 줄 모르기 때문에 이렇게 된 것이라고 한다.(나도 잘 모르겠다.)
연필과 종이만으로 이론을 배우는 것도 즐겁지만 이렇게 실제로 하는 것도 즐겁다.앞으로도 많이 활용해 주세요.

좋은 웹페이지 즐겨찾기