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이 조금 나온다.오류 제어?양자 컴퓨터가 아직 할 줄 모르기 때문에 이렇게 된 것이라고 한다.(나도 잘 모르겠다.)
연필과 종이만으로 이론을 배우는 것도 즐겁지만 이렇게 실제로 하는 것도 즐겁다.앞으로도 많이 활용해 주세요.
Reference
이 문제에 관하여(qiskit을 사용하여 양자 스텔스 전송을 실현하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ketchup1216/items/eb6d2f543cccbddd3c84텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)