제9장: “양자게이트: 한계를 넘나드는 계산 논리.”

양자연산은 마치 “절대 맛을 보면 안 되는 특별한 요리과정”처럼 진행된다

by Youhan Kim

양자컴퓨터를 이야기할 때 가장 독특한 점 중 하나는, 컴퓨터 안에서 진행되는 ‘계산 과정’을 중간에 들여다볼 수 없다는 사실이다. 우리가 일상에서 무언가를 만드는 과정을 생각해 보면, 음식 요리를 할 때는 중간에 맛을 보기도 하고, 과자 반죽을 만질 때도 “좀 더 반죽해야겠다”고 판단해 추가 조정을 하지 않는가. 그러나 양자컴퓨터에서 이 ‘중간 확인’은, 음식을 맛보는 순간 그 요리가 완전히 다른 결과물이 되어 버리는 것과 비슷하다. 양자 물리의 법칙 덕분에, 관측을 하는 순간 상태가 한 가지로 확정되어 버려서, 다채로운 가능성을 펼쳐놓았던 계산이 맥없이 “한 가지만 정해진 모습”으로 바뀌게 되는 것이다. 그래서 양자연산은 마치 “절대 맛을 보면 안 되는 특별한 요리 과정”처럼 진행된다.


이 과정을 이끌어 나가는 ‘조리 기구’가 바로 양자게이트*다. 고전 컴퓨터에서는 NOT나 AND 같은 논리 게이트를 통해 0과 1을 이리저리 바꾸어 나가지만, 양자컴퓨터에서는 X, H, CNOT(Controlled-NOT) 같은 양자게이트가 큐비트를 조작한다. 이미 “큐비트라는 재료”와 “중첩이라는 특성”에 대해서는 이전에 이야기했으니, 여기서는 그 재료를 어떻게 다루느냐에 집중해 보자.


798bb-1zq3cbyx-xd_srq8ewzer0w.jpeg 고전(현대) 컴퓨터가 계산하는 입력 값(0,1)에 대한 논리회로에 따라 달라지는 결과 X값


먼저 단일 큐비트 게이트를 떠올려 보자. 한 큐비트가 어떤 상태로 시작하든, 게이트를 적용해 상태를 가다듬고 조합할 수 있다. 예를 들어, X 게이트는 고전적으로 “0을 1로, 1을 0으로” 바꾸는 것에 가깝다. 하지만 양자에서는 그저 숫자가 바뀌는 게 아니라, 확률적으로 섞여 있던 상태 전체가 새로운 형태로 재배치된다. 마치 여러 재료가 들어간 국물을 한 번 휘젓는 것에 비유할 수도 있다. 한 가지 맛으로 고정되어 있지 않았던 ‘국물’이, X 게이트라는 휘젓기를 통해 또 다른 배합으로 변하는 느낌이다.


그런가 하면 다중 큐비트 게이트는 둘 이상의 큐비트가 서로 상호작용하도록 만들어 준다. 대표적인 예가 CNOT 게이트**로, “제어 큐비트가 1이면 타깃 큐비트를 뒤집는다”는 간단한 규칙을 따른다. 왜 이게 중요할까? 실제로 똑같은 규칙을 여러 번 반복하고, 다른 유형의 게이트와 결합해 보면, 큐비트들이 ‘한 덩어리’처럼 얽혀서 움직일 수 있다. 예를 들어, 우리가 산 위에서 여러 갈래로 나뉘어진 계곡물을 이리저리 이어 붙인다고 상상해 보자. 다양한 물길이 만나고 갈라지면서, 결국 하류에서 정말 복잡한 패턴을 만들어 낼 수 있다. 이런 식으로 큐비트들이 얽혀 있으면, 고전 컴퓨터가 순서대로 하나씩 체크해야 할 수도 있는 연산을 한꺼번에 시도할 가능성이 생긴다.


cnot-1.jpg CNOT 게이트의 작동방식


또 양자게이트는 고전 논리 게이트와 달리, 대부분 ‘유니터리***’라는 수학적 특성을 가진다. 이는 “한 번 게이트를 적용해도 정보가 사라지지 않으며, 필요하다면 거꾸로 되돌릴 수도 있다”는 뜻과 통한다. 마치 계곡물을 다시 산 위로 끌어올려 원래 상태로 돌려놓을 수 있다고 비유할 수 있는데(물론 실제 자연현상에서는 힘들겠지만!), 양자 물리에 따르면 이론적으로는 그 상태 복원이 가능하다고 본다. 즉, 고전 논리 게이트가 한 번 결과를 내고 나면 그 입력값을 복원하기 힘든 경우가 많지만, 양자게이트는 기본적으로 “뒤집을 수 있는” 계산이라는 점에서 완전히 다른 철학을 보여 준다.




그렇다면 이런 양자게이트들을 모아서 계산할 때, 중간에 “아, 여기서 맛을 좀 보고 이 반죽이 제대로 됐나 확인해야지”라고 하면 어떻게 될까? 관측하는 순간, 큐비트가 가졌던 ‘여러 가능성’이 딱 하나로 굳어져 버린다. 그래서 양자 알고리즘에서는 마지막에 결과를 ‘측정’할 때까지, 웬만하면 측정을 자제한다. 중간에 맛을 보는(측정하는) 순간 그 요리가 완전히 달라져 버리기 때문이다. 이렇게 “조리 과정”을 단 한 번에 끝까지 수행한 뒤, 마지막에야 결과를 확인해 “오, 이렇게 맛있는 요리가 만들어졌구나” 하고 알게 되는 것이다.


이 과정을 좀 더 공학적으로 표현하면 “게이트 적용 → 게이트 적용 → … → 마지막 측정” 순서로 이뤄진다. 여기서 각각의 게이트는 큐비트의 상태를 변환하되, 고전 컴퓨터처럼 중간중간 출력을 확인하지 않는다. 대신 최종 측정까지 큐비트 상태가 중첩된 채로 있을 수 있도록 보장하는 것이 목표다. 이를 효율적으로 설계하려면, 어떤 순서와 어떤 종류의 양자게이트를 배치해야 중간에 흐트러지지 않고 원하는 계산을 잘 수행할 수 있는지가 매우 중요해진다.




마지막으로, 왜 이런 게이트들이 “불가능을 가능케 한다”고까지 평가받는지를 간단히 짚어 보면, 고전 컴퓨터라면 엄청난 시간이 들 문제를 빠르게 처리해 줄 수 있다는 점 때문이다. 예를 들어, 한 큐비트를 여러 게이트로 돌려 가며 중첩을 조정하고, 여러 큐비트를 얽혀 놓은 뒤 한꺼번에 측정해 최적의 답을 ‘뽑아내는’ 알고리즘이 존재한다면, 고전적으로 몇 년이 걸릴 연산을 단숨에 해결할 수도 있다. 물론 “어떤 문제에서 가능한지”를 찾는 일이 쉽지 않고, 양자컴퓨터가 모든 문제를 다 해결하는 건 아니라는 점도 기억해야 한다. 그럼에도 암호학이나 신약 개발, 복잡한 시뮬레이션 같은 분야에서 양자게이트의 잠재력은 이미 크게 주목받고 있다.


정리하자면, 양자컴퓨터의 강력함은 큐비트가 가진 독특한 성질뿐 아니라, 이를 조작하는 양자게이트가 “중간을 볼 수 없는 과정에서 다양하고 미묘한 연산을 수행할 수 있게 해 준다”는 데서 비롯된다. 고전 게이트가 매 단계 출력을 확정짓고 지나가는 반면, 양자게이트는 최종 측정 전까지 수많은 확률적 경로가 공존하는 현상을 적극 활용한다. 그리고 이렇게 쌓아 올린 ‘양자회로’야말로 미래 컴퓨팅이 기존의 한계를 뛰어넘는 열쇠가 될 수 있다는 기대를 한 몸에 받고 있는 실질적 이유다.






★ 용어 설명

양자게이트* : 큐비트 상태를 변환하는 연산으로, 고전 논리 게이트와 달리 확률적인 복소수 진폭을 직접 조작한다.

CNOT(Controlled-NOT)** : 제어 큐비트가 1이면 타깃 큐비트 상태를 뒤집고, 0이면 그대로 두는 다중 큐비트 게이트.

유니터리*** : 양자게이트가 만족하는 수학적 특성으로, 되돌릴 수 있는 연산을 의미한다. 계산 전후에 정보가 원칙적으로 파괴되지 않는다는 점이 특징이다.


keyword
매거진의 이전글쉬어가기: 양자컴퓨터는 왜 삐까번쩍하게 생겼을까?