양자 컴퓨팅은 이제 피할 수 없는 차세대 컴퓨팅으로 자리를 잡았습니다. AI의 다음 단계로 다음의 산업혁명은 AI와 양자컴퓨팅이 접목된 초고도화 된 컴퓨팅으로 만들어지는 시대일 텐데요.
이번 포스팅에서는 이 양자 컴퓨팅이 무엇인지, 그리고, 고전과 양자 컴퓨팅의 차이점과 비슷한 점을 간단하고 쉽게 알아보도록 하겠습니다.
양자 컴퓨팅이라고 하면 많은 사람들이 아주 어려워하고 무엇인지 몰라서 마법과도 같이 믿기 힘든 기술이라고 생각을 합니다. 하지만 이 기술의 기본 바탕은 수학, 물리학 등의 우리가 접하는 영역을 기반으로 하고 있습니다.
고전 컴퓨팅이란?
고전 컴퓨팅 (Classical Computing)이라는 말은 양자 컴퓨팅에서 우리가 지금 현재 사용하는 이진법 컴퓨팅 (Binary Computing) 기술을 일컫는 말입니다. 이진법 컴퓨팅은 전류기반의 컴퓨팅으로 회로에 전류가 통하면 1 (True) 그렇지 않으면 0 (False)의 값을 반환하게 됩니다.

위의 이미지는 간단하게 요약된 고전 컴퓨팅에서의 계산 흐름입니다. 존재하는 하드웨어를 가지고 소프트웨어 회로 (프로그래밍 또는 코딩)를 만들어 하드웨어에 입력 값을 보내면 하드웨어를 거쳐 반환되는 값이 코드에 전달이 되죠.
이 반환 값들이 이진수들로 만들어진 값입니다.
비트란?
이진수식 표기법으로 비트 (Bit, Binary Digit) 단위를 말합니다. 비트는 이진법식 컴퓨팅의 최소 단위 이고 비트가 많을수록 계산할 수 있는 범위가 넓어집니다. 비트의 값은 0 또는 1 의 한가지 수만 존재합니다. 1비트로 얻을 수 있는 값은 0이나 1이죠. 그러면 예제로 2비트로 얻을 수 있는 값은 4개 (00, 01, 10, 11) 중 하나가 됩니다. 3비트는 어떨까요 – 000, 001, 010, 100, 011, 110, 101, 111 – 로 8가지 값의 옵션이 존재합니다. 이 중 한 개의 값이 반환이 되죠.

이렇게 되면 한 가지의 계산에 하나의 값을 반환하는 식이 이진법 컴퓨팅입니다. 계산할 시에는 비트 수에 따라 여러가지 선택 값이 존재를 하지만 한 번의 계산에 한 개의 변수의 값만 반환을 하게 되죠.
이러하여 변수가 여러 개인 계산은 변수의 개수만큼 나누어 변수 하나만 반환하게 하여 여러 계산을 순차적으로 진행하게 됩니다. 이 순차적 계산이 흔히 우리가 말하는 코딩으로 진행을 하게 되죠.
코딩이란?
코딩 (Coding 또는 Programming)은 하드웨어를 사용하여 하드웨어의 전류기반의 회로에 가상회로 (로직 또는 알고리즘)를 덧붙여 회로의 값을 제어하는 방법입니다. 회로에 전류가 통하게 하고 그렇지 않게 제어하면서 반환되는 값들을 가지고 행해지는 계산을 기반으로 궁극적으로 우리가 사용하는 앱을 개발하게 되는 것이죠.
양자 컴퓨팅이란?
양자 컴퓨팅 (Quantum Computing)도 고전과 그닥 다르지 않습니다. 양자 컴퓨팅은 숫자기반의 이진법, 삼진법 이런 형식이 아닙니다. 우리가 보지 못하는 원자라는 최소 단위의 개체가 어떠한 외부 영향 (고전에서는 전류였죠)을 받아 남북 방향의 위치가 변하며 그 주변의 다른 원자들의 방향이 변하는 것을 관찰하는 것이죠. 이 남북 위치의 값들이 우리가 계산하는 값들입니다. 남북위치의 값이므로 값은 벡터 (Vector)로 나타내게 됩니다.

위의 이미지와 같이 고전컴퓨팅과 같은 방식으로 양자 하드웨어를 이용하여 코드와 같이 소프트웨어 회로 (Quantum Circuit)을 개발하여 입력 값을 보내면 양자 하드웨어에서 출력하는 값을 기반으로 계산을 하는 방식입니다. 현재 양자 소프트웨어 회로는 대부분이 파이썬 (Python) 언어를 사용하여 코딩을 합니다
큐비트 (큐빗)란?
양자 컴퓨팅의 계산에서 최소 단위 값은 큐비트 , 또는 큐빗(Qubit, Quantum Binary Digit)을 사용합니다. 큐빗은 남북위치를 가리키는 벡터 형식과 그 위치의 확률 (알파와 베타)로 아래의 이미지와 같이 표기가 됩니다.

큐빗의 수가 많을수록 계산량이 늘어나죠. 비트와는 달리 2개의 큐빗으로 단번의 계산에 두 개의 값을 동시에 가지고 올 수 있습니다. 두 개의 큐빗 중 첫 큐빗의 값을 알게 되면 양자 얽힘 (이 개념은 아래에 설명이 되어 있습니다) 으로 나머지 큐빗의 값을 바로 알 수 있습니다. 그리하여 한 계산에 두 개의 값을 한꺼번에 알 수 있게 되죠. 예를 들어 변수가 5개인 계산은 고전 컴퓨팅에서는 적어도 5개의 계산을 거쳐 5개 변수의 값을 알게 되지만, 큐빗 (큐비트) 5개를 사용하면 한 번의 계산으로 5개 변수의 값을 모두 알 수 있게 됩니다. 한 번의 계산으로 거리에 관계없이 즉각 여러 값을 알기에 양자 순간이동 (Quantum Teleporation)이라고도 말합니다.
어려운 부분이 이 계산을 가능하게 하는 코드의 작성이죠 (소프트웨어 회로 또는 양자 회로, Quantum Circuit).
양자 회로란?
양자 회로 (Quantum Circuit)는 고전 컴퓨팅에서 말하는 코딩입니다. 이 코딩을 개발시에 공학, 수학 그리고 물리학이 적용됩니다. 우리가 접하고 있는 머신러닝 (Machine Learning) 코드에는 수학이 아주 많이 적용되듯이 양자 회로 (코딩)에는 수학이외에 여러 공학과 물리학을 이해하면 가능해지죠. 이런 수학, 물리학은 양자 하드웨어를 제어하는데 이해하고 있어야 하는 부분입니다.
양자 컴퓨팅이 활용되는 분야는?
이렇게 파워풀한 계산을 할 수 있어 고전 컴퓨팅이 버거워 하는 변수가 아주 많은 계산을 양자 컴퓨팅이 가능하게 합니다. 이런 분야가 산업 최적화, 신약 개발, 신물질 개발, 암호화 / 복호화 등이 있습니다. 현재에는 서서히 각 기업들과 국가들이 양자 컴퓨팅을 이 분야들에 사용하고 있습니다.


다음 포스팅에는 양자 컴퓨팅의 종류, 문제점, 그리고 중요한 양자 얽힘과 중첩에 관해 쉽게 알아 보겠습니다.