Quantum computing/Qiskit 사용 예제

[IBM Qiskit 예제 번역] Utility scale quantum computing : Bits, gates, and circuits - 1 (2/14)

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

[2025.06.27] : Link 변경

 

첨부파일 1. jupyter notebook 형식

2_UTokyo_gate_circuit_measurement_solution.ipynb
1.49MB

 

첨부파일 2. pdf 자료

2_utility_lecture_gate_circuit_measurement.pdf
0.33MB

 

출처 Link : https://quantum.cloud.ibm.com/learning/en/courses/utility-scale-quantum-computing/bits-gates-and-circuits

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

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

 

1. Introduction

배울 내용 정리

  • Single-qubit gates
  • Bloch Sphere
  • Superpositon
  • Measurement
  • Two-qubit gates and entanglement
  • Circuit depth

 

3. Single-qubit quantum gate (이론 부분, 참고용)

3.1 Quantum state and Bloch sphere

 

기존 컴퓨터의 bit은 0과 1로 나타내지만, 양자 컴퓨터에 사용되는 qubit은 |0>과 |1>로 나타낸다.

이 qubit은 0과 1 상태를 동시에 가질 수 있으며, 아직 정해지지 않은 상태에 관해 중첩(superposition)이라고 얘기한다.

 

그리고 하나의 qubit의 상태는 다음과 같이 | ψ > 형식으로 나타낼 수 있다.

여기서 측정 시 |0>이 나올 수 있는 확률은 |α|^2, |1>이 나올 수 있는 확률은 |β|^2

왜 뜬금없이 θ가 나왔는가? 하면

bloch 구

이 |ψ> 는 bloch 구의 형식으로 나타낼 수 있기 때문이다.

bloch 구를 통해, 직관적으로 이 vector가 어떤 상태인지 한 눈에 볼 수 있다는 장점이 있다.

 

이 다음은 code를 다뤄볼 시간이다.

첫 code 위쪽에 qiskit을 설치해주자.

!pip install qiskit
!pip install qiskit_aer
!pip install qiskit_ibm_runtime
!pip install 'qiskit[visualization]'

그 다음에 import에 오류가 없으면 다음으로 넘어갈 수 있다.

(오류가 생긴다면 gemini나 다른 AI한테 물어보는 것을 추천)

 

 

- 1개의 qubit으로 제작한 양자 회로

 

-. 양자 회로에 X 게이트 구현

|0>에 X 게이트를 가하면 |1>가 되고, |1>에 X 게이트를 가하면 |0>이 된다.

( X|0> = |1>, X|1> = |0>)

위와 같이 나타낼 수 있으며, X 게이트에 |0>을 가했기 때문에, 결과물은 |1>이 된다.

statevector가 [0+0j, 1+0j] 형식으로 나온 것을 알 수 있으며, 연산 결과 |1>이 되었다는 것을 bloch 구로 표현된다.

 

-. 양자 회로에 H 게이트 구현

H 게이트는 하다마드(Hadamard) 게이트인데, 양자 컴퓨팅에서는 상당히 중요한 개념이다.

H 게이트를 거치면 중첩(superposition) 상태가 되서 0과 1의 확률이 반반이 되는데,

중첩된 상태에서 한 번만 계산해도 계산이 완료되기 때문이다.

 

H|0> = |+>, H|1> = |->이 되며, H를 두번 가해주면 원 상태로 돌아온다.

|0>에 H gate를 적용해서, bloch 구로 살펴봤을 때 |+>가 되었다.

 

각 qubit에 어떤 게이트를 가해주냐에 따라, 다음과 같이 변하는 것을 알 수 있다.

 

 

3.3 Measurement

- Qiskit Aer 시뮬레이터 : 일반 컴퓨터를 가상의 양자 컴퓨터처럼 만들어주는 시뮬레이션 엔진.

실제 양자 컴퓨터를 구동하는 데에는 자원이 많이 들기 때문에, 시뮬레이션을 사전에 구동해보는 것도 좋은 방법이다.

 

먼저, classic bit과 qubit을 하나씩 제작 후, H 게이트 후 측정하는 회로를 작성

code를 보면, Backend를 Aer 시뮬레이터로 지정 후, Transpile(양자 컴퓨터가 이해하고 실행할 수 있게 code를 바꾼다!)을 한다.

그 뒤에 job을 run하는 형식을 취한다.

backend는 앞에서 저장한 하드웨어(여기서는 Aer 시뮬레이터)이며, optimization 레벨은 0부터 3까지 있다.

0은 최적화를 하지 않고, 숫자가 높아질 수록 최적화를 더 많이 한다.

 

|0>에 H 게이트를 적용하면 |0>이 나올 확률이 50프로, |1>이 나올 확률이 50프로이다.

이 시뮬레이션 결과는 각각 나올 확률이 50프로에 근접한 것을 알 수 있으며, code를 돌릴 때마다 같은 결과가 나오진 않는다.

 

4. Multi-qubit quantum gate and entanglement (qubit이 여러개일 때와 얽힘)

4.1 Multi-qubit quantum circuit

code는 qubit이 1개 있을 때와 크게 다를 점은 없다. 

차근차근 예제를 실행해보면 되겠다.

 

4.2 Multi-qubit quantum gate

- CNOT 게이트

  • 만약 control qubit이 |1>이면, target qubit에 X 게이트를 적용해준다.
  • 만약 control qubit이 |0>이면, target qubit은 그대로 둔다.

※ Qiskit은 Little Endian 형식으로, |q1q0> 순으로 qubit를 표시한다.

 

4.3 Quantum entanglement and execution on a real quantum device

위와 같은 상태를 "entangled", 얽혀있다라고 볼 수 있으며, 위와 같은 식은 Bell state라고 얘기한다.

 

얽힘 (Entanglement)이란?

  • 개념: 둘 이상의 큐비트가 하나의 '운명 공동체'처럼 묶여 있는 상태. 이들은 보이지 않는 끈으로 연결되어 있어서, 아무리 멀리 떨어져 있어도 하나의 큐비트를 측정하면 그 결과가 즉시 다른 큐비트의 상태에 영향을 줌.

벨 상태 (Bell State)란?

  • 개념: 단 두 개의 큐비트로 만들 수 있는 가장 간단하고 완벽한 얽힘 상태. 벨 상태에는 총 4가지 종류가 있으며, 가장 유명한 것은 |Φ⁺⟩.
  • 의미: 이 상태의 두 큐비트를 측정하면, 50% 확률로 둘 다 '0'이 나오고(00), 50% 확률로 둘 다 '1'이 나옴(11). '01'이나 '10' 같은 결과는 절대 나오지 않음. 즉, 첫 번째 큐비트를 측정해서 '0'이 나왔다면, 다른 쪽 큐비트는 볼 필요도 없이 '0'으로 결정됨.
728x90