양자컴퓨터 설명은 보통 "0이면서 동시에 1"이라는 말부터 시작합니다. 그 문장이 첫 관문이 되는 바람에, 시작도 하기 전에 어렵다고 느끼게 되죠.
그래서 이 편은 반대로 갑니다. 여기서 확인할 것은 하나뿐입니다. 일반 비트를 뒤집는 NOT과, 큐비트를 뒤집는 X 게이트는 |0>·|1>에서 완전히 같은 일을 합니다. 아직 신비한 구석은 없습니다. (입문 편)
일반 비트와 NOT
컴퓨터가 다루는 가장 작은 정보 단위인 비트는 두 값 중 하나만 가집니다. 0 아니면 1이죠. 값을 뒤집는 연산이 NOT입니다. 0은 1로, 1은 0으로 바뀝니다. 뒤집기 전 값을 알면 뒤집은 뒤 값도 정확히 압니다. 애매함이 없습니다.
큐비트와 X 게이트
큐비트도 나중 편에서는 0도 1도 아닌 상태까지 될 수 있지만, 지금은 |0>과 |1> 두 값만 봅니다. 이 두 값(계산 기저)에서 X 게이트는 NOT과 똑같이 동작합니다. |0>은 |1>로, |1>은 |0>로 뒤집습니다. 데모의 위·아래 두 줄이 버튼 한 번에 항상 같이 움직이는 것이 바로 이 대응입니다.
두 줄을 나란히 눌러 보세요
파란 버튼을 눌러 보세요
두 줄이 항상 같이 0↔1로 뒤집힙니다
지금은 둘 다 0입니다. ‘둘 다 뒤집기’를 눌러 보세요.
이 데모는 잡음이 없는 이상적 1큐비트 시뮬레이션이며 실제 양자 하드웨어의 실행 결과가 아닙니다. |0>·|1>에서는 X가 NOT과 같지만, 다음 편에서 H 게이트를 쓰면 큐비트는 0도 1도 아닌 중첩 상태가 되어 일반 비트와 갈라집니다.
데모만 따로 보려면 전체 화면으로 열기.
파란 ‘둘 다 뒤집기’ 버튼을 누르면 위(일반 비트)와 아래(큐비트)가 동시에 0↔1로
바뀝니다. ‘처음부터’ 는 둘 다 0으로 되돌립니다. 큐비트 줄에 붙은 P(측정) = 100% 는
지금 상태가 확실하다는 뜻입니다. 측정하면 반드시 그 값이 나옵니다.
화면을 이렇게까지 비운 이유
이 데모의 첫 버전은 한 화면에 다 넣으려던 "큐비트 기초 실험실"이었습니다. 게이트를 여러 개 놓고, 상태는 3차원 블로흐 구로 보여주고, 수식도 함께 띄우는 구성이었죠. 만들어 놓고 보니 저부터도 어디를 봐야 할지 모르겠더군요. 조작할 게 많으면 무엇 때문에 결과가 바뀌었는지 알 수 없습니다.
그래서 통째로 접고 한 편에 개념 하나, 화면에 버튼 둘까지로 다시 잡았습니다. 지금 이 편에 나침반도 막대그래프도 없는 건 빠뜨린 게 아니라, 1편에서 확인할 것이 "두 줄이 같이 움직인다" 하나뿐이기 때문입니다. 3차원 블로흐 구도 2차원 나침반으로 낮췄습니다. 그건 3편에서야 나옵니다.
여기서 멈추는 이유
X가 NOT과 같아 보이니 "큐비트도 그냥 비트 아냐?"라고 느낄 수 있습니다. 맞습니다. |0>·|1>만 다루는 한 둘은 구분되지 않습니다. 다음 편에서 H 게이트를 쓰면, 큐비트는 측정하기 전까지 0도 1도 아닌 중첩 상태가 되어 일반 비트와 갈라집니다.
숫자로 확인해 보기
X 게이트가 정말 뒤집는지는 곱셈 한 번으로 확인됩니다. 상태를 세로로 세운 숫자 두 개(열벡터)로 적으면 이렇습니다.
|0> = [1] |1> = [0] X = [0 1]
[0] [1] [1 0]
여기에 X를 곱하면,
X|0> = [0 1][1] = [0] = |1>
[1 0][0] [1]
X|1> = [0 1][0] = [1] = |0>
[1 0][1] [0]
정확히 뒤집혔습니다. 데모의 두 줄이 함께 움직이는 게 이 계산입니다.
왜 "되돌릴 수 있다"가 계산으로 보이나
X를 두 번 곱해 보면 원래대로 돌아옵니다.
X × X = [0 1][0 1] = [1 0] ← 아무것도 안 한 것과 같음
[1 0][1 0] [0 1]
오른쪽의 [[1,0],[0,1]]은 곱해도 아무 변화가 없는 행렬입니다. X를 두 번 걸면
아무것도 안 한 것과 같다는 말이 이 한 줄에 그대로 들어 있습니다.
적어야 하는 숫자의 개수가 다릅니다
지금은 |0>·|1>만 다뤄서 둘이 같아 보이지만, 상태를 적는 방법은 처음부터 다릅니다.
| 상태를 적는 데 필요한 것 | |
|---|---|
| 일반 비트 1개 | 0 또는 1, 즉 값 하나 |
| 큐비트 1개 | |0>과 |1> 앞에 붙는 숫자 두 개 |
이 편에서는 그 두 숫자가 항상 (1, 0) 아니면 (0, 1)이라 차이가 안 보입니다. 하지만 다음 편에서 H를 걸면 (0.7071, 0.7071) 같은 값이 나오면서 일반 비트로는 적을 수 없는 상태가 등장합니다. 큐비트가 늘어나면 이 숫자의 개수도 2배씩 늘어납니다. 큐비트 2개면 4개, 3개면 8개.
X 가 항상 값을 뒤집는 것은 아닙니다
계산 기저에서 X 가 NOT 과 같다는 것을 확인했으니, 반대쪽도 확인해 두면 이 편의 범위가 분명해집니다. 다음 편에서 만들 중첩 상태에 X 를 걸면 이렇게 됩니다.
|0> ─ H P(0) = 0.5000 P(1) = 0.5000
|0> ─ H ─ X P(0) = 0.5000 P(1) = 0.5000
아무것도 바뀌지 않습니다. X 는 두 진폭을 서로 맞바꾸는 연산인데, H 를 건 상태는 두 진폭이 이미 같은 값이라 바꿔도 제자리이기 때문입니다. 뒤집는 연산을 걸었는데 상태가 그대로인 경우가 생기는 것입니다.
고전 비트에서는 이런 일이 없습니다. NOT 을 걸면 0 은 반드시 1 이 되고 1 은 반드시 0 이 됩니다. 어떤 값에 걸어도 반드시 달라지는 연산과 걸어도 그대로인 값이 존재하는 연산은 성질이 다릅니다.
그러니 이 편의 결론은 X 와 NOT 이 같은 것이라는 말이 아닙니다. 정확히는 계산 기저에 놓인 값에 대해서만 두 연산의 결과가 일치한다는 것이고, 그 조건이 깨지는 순간부터 둘은 다른 연산입니다.
그런데 하나는 처음부터 다릅니다
X와 NOT이 같은 일을 한다고 했지만, 정확히는 양자 쪽에만 있는 제약이 하나 있습니다. 양자 게이트는 전부 되돌릴 수 있어야 합니다.
X는 두 번 걸면 제자리로 돌아옵니다. |0> → |1> → |0>. NOT도 마찬가지죠. 여기까지는 같습니다. 그런데 일반 컴퓨터가 쓰는 AND를 생각해 보면 다릅니다. 결과가 0이라는 사실만으로는 입력이 (0,0)이었는지 (0,1)이었는지 (1,0)이었는지 알 수 없습니다. 입력 정보가 사라진 것입니다.
양자 회로에서 상태를 바꾸는 유니터리 게이트에는 이런 일이 허용되지 않습니다. 각 게이트에는 역연산이 있고 입력 상태의 정보를 보존합니다. 다만 측정과 초기화는 유니터리 게이트가 아니며, 고전적인 결과를 얻거나 상태를 다시 준비하는 별도 과정입니다. “양자컴퓨터의 모든 동작이 항상 되돌릴 수 있다”는 뜻으로 넓혀 읽으면 안 됩니다.
이것이 X를 "그냥 NOT"이라고만 기억하면 안 되는 이유입니다. 겉보기 동작은 같지만, X는 되돌릴 수 있어야 한다는 규칙 안에서 만들어진 연산입니다. 이 규칙 덕분에 3편과 4편에서 볼 위상이라는 정보가 중간에 사라지지 않고 끝까지 살아남습니다.
다음 편에서 갈라지는 지점
지금까지 둘은 가질 수 있는 값에서도(0/1과 |0>/|1>), 뒤집는 연산에서도(NOT과 X) 같았습니다. 측정 결과도 마찬가지여서, 재기 전에 이미 답을 알 수 있었습니다.
갈라지는 건 세 번째 줄입니다. 다음 편에서 H 게이트를 걸면 값이 확정되지 않은 채로 남아 있다가, 측정하는 순간에야 정해지는 상태가 등장합니다.
2편 · 큐비트를 열 번 재고 내린 결론은 대체로 틀립니다에서 H 게이트와 반복 측정을 이어서 확인할 수 있습니다.
이 데모는 잡음·오류정정이 없는 이상적 1큐비트 시뮬레이션이며, 실제 양자 하드웨어의 실행 결과가 아닙니다.