pip install qiskit
pip install pylatexenc
pip install qiskit_ibm_provider
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))
#시각화를 해보면 - 양자컴퓨터라 오차가 있다
좋은 글 잘 읽었습니다, 감사합니다.