0

IBM Quantum Composer 소개

AF 김태영
2025.03.20 17:52
250

1. 양자컴퓨터와 IBM Quantum Composer란?

  • 양자컴퓨터: 지금 우리가 사용하는 일반 컴퓨터(고전 컴퓨터)와 달리, 빛이나 원자 수준에서 일어나는 양자 역학의 원리를 활용하는 컴퓨터입니다.
  • IBM Quantum Composer: 웹 브라우저에서 간단히 드래그 앤 드롭(Drag & Drop) 방식으로 양자 회로를 구성해볼 수 있는 툴(tool)입니다.
    • 마우스 클릭만으로 양자 게이트를 배치하고, 시뮬레이터를 통해 실제 양자 하드웨어에서 어떤 일이 일어나는지 미리 확인할 수 있습니다.

주소: IBM Quantum Composer 바로가기

2. 큐비트(Qubit)란?

일반 컴퓨터가 정보를 0과 1로 표현한다면, 양자컴퓨터의 정보 단위는 큐비트(Qubit)입니다.

  • 고전적인 비트: 0 또는 1 (둘 중 하나만 가질 수 있음)
  • 큐비트: 0 상태와 1 상태를 동시에 가질 수 있음(이를 중첩(Superposition)이라고 함)

중첩(Superposition)을 쉬운 비유로 알아보기

동전을 던져서 공중에서 빙글빙글 도는 순간을 떠올려 보세요. “앞면”“뒷면”도 될 수 있는 그 순간과 비슷하게, 큐비트는 01의 상태가 겹쳐(중첩) 있는 상태가 될 수 있습니다. 하지만 우리가 동전을 손바닥에 탁! 하고 멈춰서 확인(측정)하는 순간, 그제야 앞면이거나 뒷면이 되는 것처럼, 큐비트도 관측(Measurement)을 하는 순간 0이거나 1로 결정됩니다. 아래는 아다마르 게이트를 이용해서 큐비트 하나를 중첩시켜 본것 입니다. 엄청 쉽게 할 수 있습니다. IBM Quantum Learning 웹사이트에서 바로 시뮬레이션 해볼 수 있습니다. 

3. 벨 상태(Bell State)란?

우리가 이번에 만들어볼 회로가 생성하는 상태를 “벨 상태(Bell State)”라고 부릅니다.

  • 두 개의 큐비트가 서로 깊이 연결되어(얽혀, Entangled) 있어, 마치 두 큐비트가 하나의 상태처럼 행동하는 특수한 양자 상태를 의미합니다.
  • 벨 상태를 측정해보면, 두 큐비트가 나오는 값이 항상 같게 (00 또는 11) 나오는 신기한 결과를 얻을 수 있습니다.

얽힘(Entanglement)을 쉬운 비유로 알아보기

한 쌍의 장갑이 들어 있는 상자를 예로 들어볼까요? 장갑은 왼손용과 오른손용이 한 쌍입니다. 상자를 열기 전까지는 어떤 상자에 왼손용이 들어있는지 알 수 없지만, 한 상자를 열어 “왼손 장갑”을 발견하는 순간, 다른 상자에는 자동으로 “오른손 장갑”이 들어 있다는 사실을 즉시 알 수 있습니다. 이처럼 양자 얽힘이 걸린 두 큐비트 중 하나를 관측하면, 다른 하나의 상태가 즉시 결정되는 현상을 볼 수 있습니다.

4. Composer에서 처음으로 벨 상태 회로 만들어 보기

이제 본격적으로 IBM Quantum Composer 안에서 회로를 만들면서 벨 상태를 생성해 봅시다.

4.1 새 프로젝트(“Get Started”) 시작

  1. IBM Quantum Composer 웹사이트에 접속합니다.
  2. “Get started” 버튼을 눌러 새로운 양자 회로 프로젝트를 만들 수 있습니다.

화면에 보시면,

  • 큐비트(Qubit) 와이어: Q0, Q1, Q2 ... 이런 식으로 가로 줄이 보일 텐데요. 우리가 게이트(연산자)를 배치할 수 있는 공간입니다.
  • 클래식 비트(Classical Bit) 와이어: 측정 결과가 저장될 고전적 비트(0 또는 1) 공간입니다.

Composer는 양자 회로를 구성하고 시각화하며 실제 양자 하드웨어에서 실행할 수 있도록 돕는 맞춤형 도구를 제공합니다. 자 그럼 가이드에 따라 첫 회로를 만들어볼까요? “Get started"를 클릭합니다.

우리가 만들 회로는 벨 상태(Bell State)입니다. 벨 상태는 두 큐비트가 얽힌(Entangled) 상태를 나타내며, 양자 정보 이론에서 중요한 개념입니다. 이제 하나씩 단계를 따라가며 회로를 구성해 보겠습니다.

양자 게이트와 연산은 큐비트(Qubit)를 조작하는 요소로, 양자 회로의 기본 구성 요소입니다. Composer에서는 연산 블록(Operation Blocks)을 오른쪽의 와이어(Wires) 위로 드래그 앤 드롭(Drag and Drop) 하여 원하는 양자 회로를 구성할 수 있습니다.

4.2 첫 번째 큐비트(Q0)에 아다마르(Hadamard) 게이트를 추가하기

  1. 오른쪽에 있는 “Operations(연산 블록)” 목록에서 Hadamard(H) 게이트를 찾아 Q0 와이어 위에 드래그 앤 드롭하세요.
  2. 게이트가 놓이는 순간, 시뮬레이터(시각화 도구)에서 Q0|0> 상태에서 중첩 상태가 된 것을 확인할 수 있습니다.

아다마르 게이트(H)는 무슨 역할을 하나요?

  • 중첩(Superposition) 상태를 만들어주는 게이트입니다.
  • 비트가 0이었다면, H 게이트를 통과한 뒤에는 “0과 1이 동시에 섞인” 상태가 됩니다.

비유로 말하자면,

  • 원래 조용히 바닥에 놓여 있던 동전(확실한 0 상태)을 공중에 던져 동시에 앞/뒤면이 가능하도록 만든 것과 같습니다.

와이어 옆 오른쪽 원을 보면, 반이 회색, 반이 하늘색으로 되어 있습니다. 바로 중첩이 된 것이지요. 이제 다음 단계로 넘어가 보겠습니다!

첫 번째 큐비트(Q0)는 이제 중첩(superposition) 상태에 있습니다. 회로에 연산을 추가할 때마다 시뮬레이터가 동작을 반영하여 상태 변화를 보여줍니다. 현재, 첫번째 큐비트가 0과 1의 상태를 동시에 가질 수 있는 중첩 상태로 변화한 것이 확인됩니다. 그럼 경우의 수를 생각해보면, 

  • 첫번째 큐비트 1 두번째 큐비트 0가 나올 확률 50%
  • 첫번째 큐비트 0 두번째 큐비트 0가 나올 확률 50%

이 됩니다.

4.3 CNOT 게이트로 두 큐비트 얽히게 만들기

자, 그럼 이제 두 큐비트를 얽히게 해볼까요? 이때 필요한 것이 CNOT 게이트 입니다.

  • CNOT 게이트(Controlled-NOT)를 Q0Q1 사이에 연결되도록 드래그 앤 드롭합니다.
    • 제어 큐비트(Control Qubit): Q0
    • 대상 큐비트(Target Qubit): Q1
  • CNOT의 동작은 다음과 같습니다.
    • 제어 큐비트(Q0)가 0이면: Q1(대상 큐비트)는 변화 없음
    • 제어 큐비트(Q0)가 1이면: Q1이 0에서 1로, 1에서 0으로 뒤집힘(NOT 연산)

여기서 벌어지는 일

  • 이미 Q0은 H 게이트로 인해 0과 1이 동시에 가능(중첩)한 상태입니다.
  • Q0이 “0일 수도 있고 1일 수도 있는” 상태이므로, CNOT에 의해 Q1이 조건부로 뒤집히게 됩니다.
  • 그 결과, 두 큐비트가 서로 얽히게 되어, 벨 상태가 만들어집니다.

중간 정리

  • 첫 번째 큐비트(Q0)는 아다마르 게이트로 인해 중첩 상태
  • 이제 CNOT 게이트를 추가하면서 두 번째 큐비트(Q1)와 얽힘(Entanglement) 생성

4.4 회로 측정(Measurement)하기

이제 만들어진 벨 상태를 측정(Measure) 해보겠습니다.

  1. 측정 연산(Measurement) 블록을 CNOT 게이트 오른쪽에 드래그해, Q0과 Q1 각각에 배치합니다.
  2. 이 측정 게이트는 큐비트 상태고전적 비트로 바꿔주는 역할을 합니다.
  3. 시뮬레이터가 결과를 보여주면, 00 또는 11이 나오는 것을 확인할 수 있습니다.
    • 즉, 두 큐비트가 항상 같은 값(0,0 또는 1,1)으로 측정됩니다. 이것이 벨 상태의 중요한 특징입니다!

5. 회로를 코드로 확인하기 (OpenQASM & Qiskit)

Composer에서 그래픽으로 게이트를 추가할 때마다, 코드 편집기(Code Editor) 도 자동으로 갱신됩니다.

  • OpenQASM: 양자 회로를 기술하기 위한 언어(표준 형식)
  • Qiskit (Python): IBM 양자컴퓨터를 제어하는 파이썬 라이브러리

아래는 OpenQASM 예시입니다(두 큐비트 벨 상태 회로).

qreg q[2];           // 2개의 큐비트 준비
creg c[2];           // 2개의 고전적 비트 준비

h q[0];              // 첫 번째 큐비트 q[0]에 Hadamard 게이트
cx q[0], q[1];       // CNOT (제어: q[0], 대상: q[1])

measure q[0] -> c[0]; // 첫 번째 큐비트 결과를 c[0]에 기록
measure q[1] -> c[1]; // 두 번째 큐비트 결과를 c[1]에 기록
  • 이렇게 생성된 코드를 Export(내보내기) 해서 다른 플랫폼이나 Qiskit(Python) 환경에서 재활용할 수 있습니다.
  • Qiskit으로 가져가면, 실제 IBM 양자 하드웨어(또는 시뮬레이터)에서 바로 실행도 가능합니다.

6. 정리 및 더 배우기

  1. 중첩(Superposition): 큐비트가 0과 1의 상태를 동시에 가질 수 있는 성질
  2. 얽힘(Entanglement): 두(또는 그 이상의) 큐비트가 서로 깊이 연결되어, 측정 시 하나가 결정되는 순간 다른 것도 즉시 영향을 받는 현상
  3. 벨 상태(Bell State): 두 큐비트를 최대한 얽힌 상태로 만든 것(결과값이 항상 00 또는 11로 측정)
  4. IBM Quantum Composer로 그래픽 회로 편집하면서 쉽게 양자 개념을 실습할 수 있음
  5. OpenQASM & Qiskit: 양자 회로/알고리즘을 코드로 작성하고, 실제 하드웨어나 시뮬레이터에서 실행 가능

이제 직접 코드를 확인하고 수정해 보세요! 🚀

더 배우기

Composer에서 더 많은 기능을 탐색하고 싶다면 문서(Docs) & 튜토리얼(Tutorials) 패널을 확인하세요!

0
0개의 댓글
로그인 후 이용해주세요!