Quantum computing/Qiskit 사용 예제

[IBM Qiskit 예제 번역] Utility scale quantum computing : Teleportation-1 (3/14)

일하는 공학도 2025. 6. 20. 09:38
728x90

[2025.06.27] : Link 변경

 

첨부파일 1. jupyter notebook 형식

3_UTokyo_teleportation_solution.ipynb
1.16MB

 

첨부파일 2. pdf 자료

3_utility_lecture_teleportation.pdf
0.65MB

 

 

출처 Link : https://quantum.cloud.ibm.com/learning/en/courses/utility-scale-quantum-computing/teleportation

이 글은 IBM의 자료들을 이용하여 포스팅 했습니다. (작성 날짜 : 2025.06.20)

혹시 잘못된 정보가 있으면 말씀해주세요!

 

1. Introduction

배울 내용 정리

  • Density matrices (밀도 행렬)
  • Quantum state tomography (양자 단층 촬영)

 

2. Density matrices (밀도 행렬)

양자 상태를 나타내는 방법을 저번 2강에서 얘기한 적이 있는데, 양자 상태를 저렇게 계산하면 density matrices(밀도 행렬)의 형식으로 나타낼 수 있음.

  • 양자 컴퓨터에서 noise와 상호작용하면서 생기는 오류를 감지하거나
  • entangled 상태에서 일부 부분만 확인하고 싶을 때 필요

 

예제에서는 랜덤한 θ φ 을 지정하여 하나의 quantum state를 제작하였고, bloch 구로 나타냈다.

import numpy as np
import matplotlib.pyplot as plt
from qiskit.visualization import plot_bloch_vector

#create a random 1-qubit state from a random (theta, varphi) to define r vector
np.random.seed(1) #fixing seed for repeatibility

theta = np.random.uniform(0.0, 1.0) * np.pi    #from 0 to pi
varphi = np.random.uniform(0.0, 2.0) * np.pi    #from 0 to 2*pi

def get_r_vec(theta, varphi):
    rx = np.sin(theta) * np.cos(varphi)
    ry = np.sin(theta) * np.sin(varphi)
    rz = np.cos(theta)
    return (rx, ry, rz)

# get r vector
rx, ry, rz = get_r_vec(theta, varphi)
r = [rx, ry, rz]
plot_bloch_vector(r)

 

 

3. Quantum state tomography (양자 단층 촬영)

양자 상태를 확인하기 위해, 다음과 같은 계산 과정을 거친다.

  1. rz (z축 기준으로 측정) :  |0> 확률 -  |1> 확률
  2. rx (x축 기준으로 측정) : |+> 확률 - |-> 확률
  3. ry (y축 기준으로 측정) : |i> 확률 - |-i> 확률

 

먼저 rz을 알아내기 위한 계산.

먼저 회로 qc를 제작하고, 임의의 U 게이트에 아까 지정한  θ  φ 를 넣었다.

Backend는 Aer 시뮬레이터를 설정하고, n = 1000개를 지정한 결과, 0은 629개, 1은 371개가 나왔다. (히스토그램은 캡쳐 생략)

 

rz의 값은 0.258이 산출되었다. 매번 Aer 시뮬레이터를 돌릴 때마다 값은 조금씩 바뀌게 된다.

 

IBM quantum 시스템은 기본적으로 rz만 측정할 수 있기 때문에, rx과 ry는 다음과 같이 게이트를 적용하여 축을 옮기는 방식으로 측정한다. 

 

728x90