qiskit 퀴스킷 : 양자회로그리기시뮬레이션, ibm양자컴퓨터실습

BABY CAT·2023년 7월 17일
0

quantum

목록 보기
5/5

pip install qiskit

pip install pylatexenc

pip install qiskit_ibm_provider

ibm quantum홈페이지 가입

https://quantum-computing.ibm.com/

후 api 키 저장

주피터노트북

아나콘다설치 > 아나콘다프롬프트 > pip install qiskit, pip install qiskit_ibm_provider

jupyter notebook

주피터에서

#H아다마르게이트는 반반확률 양자화

#X게이트는 낫게이트

#CX (cnot)X게이트는 컨트롤드x게이트: 양자얽힘구현 :하나결정되면다른하나도결정

#컨트롤에 1이 들어와야만 X게이트가 작동

#M 측정게이트

!pip install qiskit

import qiskit

from qiskit import *

qiskit.__qiskit_version__



! pip install qiskit_ibm_provider

from qiskit import IBMQ

from qiskit_ibm_provider import IBMProvider 



IBMQ.save_account('9d249bf10426c6bb72d16cf2ec6c852ff0fe08e3b056697dfd0159edd773443d4a8ebc2268b1539e71c37dd4bb832edc6714cb06880c15ba2547debcd8c3e028') #옵션 28',overwrite=True)



IBMQ.load_account()



qr=QuantumRegister(2) #'''큐비트 몇개?'''

cr=ClassicalRegister(2) #'''고전비트 몇개?  메저게이트에서 측정 후 나오는 고전비트 수 = 큐비트 수 이하로'''

#메저게이트로 안뽑는 큐비트라인은 디폴트 0  #메저게이트 인덱스는 1의자리가 0 이라 기존인덱스랑 반대 

circuit=QuantumCircuit(qr,cr) #'''썰킷=회로, 양자회로만들기'''

circuit.draw() #'''양자회로 그리기'''

print(circuit)



circuit.h(0) # 아다마르게이트를 큐비트 0인덱스에 넣기

circuit.draw()



! pip install pylatexenc #'''draw함수에 디자인 넣기 아래 mpl로'''

circuit.draw(output='mpl')



circuit.cx(0,1) #x게이트 '''c낫게이트를 0-1로 연결 <양자얽힘:하나결정되면다른하나도결정>'''

circuit.draw(output='mpl')



circuit.measure([0,1],[0,1]) #'''측정게이트 연결'''

circuit.draw(output='mpl')

#[0,1]에서 0은 큐비트0인덱스, 큐비트1인덱스 에서 메저게이트가 시작한다는 것

#[1,1]은 측정 결과값이 1 과 1로 측정된다는 것



from qiskit import Aer,execute

simulator=Aer.get_backend('qasm_simulator'')

result=execute(circuit,backend=simulator).result() #'''execute(양자회로,시뮬레이터)'''



ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

from qiskit import Aer,execute

simulator=Aer.get_backend('statevector_simulator')

result=execute(circuit,backend=simulator).result() #'''execute(양자회로,시뮬레이터)'''

statevector = result.get_statevector()

from qiskit.visualization import plot_bloch_multivector

plot_bloch_multivector(statevector)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ





from qiskit.visualization import plot_histogram

plot_histogram(result.get_counts(circuit))

print(result.get_counts(circuit))

#큐비트 두개에 0,0 으로 시작한다 > 아르마다를 거친 큐비트가 0 이면 x게이트에서 그대로 0으로 통과하니 00 아르마다 후 1이면 



IBMQ.load_account() # ibm양자컴퓨터사용하기

provider=IBMQ.get_provider(hub='ibm-q')# '''엑세스 토큰 로딩'''

provider.backends()# '''아래백엔드다음()에 들어갈 목록열기'''

qcomp = provider.get_backend('ibmq_jakarta')# '''qcomp는 양자컴퓨터를 의미'''

job=execute(circuit, backend=qcomp) #'''위에서는 backend에 시뮬레이터를 넣음''' 

##job=ex 여기서 > https://quantum-computing.ibm.com/jobs > 모니터링 가능

##사이트에서 남은시간확인 오래걸림

from qiskit.tools.monitor import job_monitor

job_monitor(job) # job=ex 부분이 언제 끝나는지 모니터링 

result=job.result()

from qiskit.tools.monitor import job_monitor

from qiskit.visualization import plot_histogram

plot_histogram(result.get_counts(circuit))

#시각화를 해보면 - 양자컴퓨터라 오차가 있다

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

좋은 글 잘 읽었습니다, 감사합니다.

답글 달기