양자 객체를 처음 접하면 그들은 무작위의 혼란스러운 것으로 보일 수 있지만
그것은 단지 우리가 알던 고전적인 컴퓨팅과는 다른 규칙을 따르는 것뿐이다.
그 규칙을 알고나면 새롭고 강력한 기술을 만들어내기 위해 그것을 사용할 수 있게 될 것이다.
큐비트 Qubit; Quantum Bit
고전적인 컴퓨터에서 정보의 최소 단위는 비트(bit)로, 0 또는 1을 나타낸다.
양자 컴퓨터에서 사용하는 정보의 최소 단위능 양자 비트로, 흔히 큐비트, 큐빗이라고 부른다.
큐비트에 대해 보다 깊이 이해하기 위해서는
큐비트에 게이트(gate)를 적용했을 때 그것이 어떻게 되는지 추적할 방법이 필요하다.
그리고 이를 위한 가장 강력한 방법은 벡터와 행렬의 수학적 언어를 사용하는 것이다.
다음은 큐비트를 수학적으로 나타낸 하나의 예시다.
선형대수 Linear Algebra
textbook의 내용은 선형대수를 선수 지식으로 요구한다.
그런 의미에서 선형대수 개념을 짚고 넘어가자.
벡터Vectors와 벡터공간Vector Spaces
벡터는 양자 컴퓨팅에서 가장 중요한 수학적 양적 개념 중 하나다.
벡터 ∣v⟩는 벡터공간이라는 집합의 원소로 정의된다.
좀더 직관적으로 얘기하자면 방향과 크기를 갖는 수학적 양(量)이라고 할 수 있다.
Vector
elements of a set known as a vector space
a mathematical quantity with both direction and magnitude
예를 들어 x 성분과 y 성분을 가진 다음과 같은 벡터 (35)는
x축 방향으로 3, y축 방향으로 5만큼의 거리를 나타내는 화살표로 시각화할 수 있다.
위 그림에서는 벡터가 원점에서 시작되지만 벡터의 꼬리가 항상 원점에 있을 필요는 없다.
양자 컴퓨팅에서 우리는 종종 상태 벡터State Vectors를 다루게 된다.
상태 벡터는 양자 상태에 해당하는 공간의 특정 지점을 가리키며 블로흐 구면Bloch Sphere을 통해 다음과 같이 시각화할 수 있다.
블로흐 구면은 소위 "상태 공간"이라고 불리며
그것의 중심에서 시작되는 상태 벡터가 그 내부에서 표면을 가리키는 화살표로 표현된다.
위 이미지의 블로흐 구면에서 상태 벡터는 상단의 ∣0⟩와 하단의 ∣1⟩의 가운데에 위치하고 있으므로 ∣0⟩와 ∣1⟩ 사이에 균형된 중첩 상태an even superposition를 이루고 있음을 알 수 있다.
벡터 공간에 대한 정의로 돌아가서,
벡터 공간은 체Field 위에서 정의되며
두 가지 조건을 만족하는 벡터들의 집합이다.
먼저, 어떤 벡터 공간 V에 속하는 임의의 두 벡터를 더해 만든 벡터도 벡터 공간 V에 속해야 한다.
그리고 체 F에 속하는 임의의 수와 벡터 공간 V에 속하는 임의의 벡터의
스칼라곱으로 만들어지는 벡터 또한 벡터 공간 V에 속해야 한다.
Vector Space
a set of vectors
∣a⟩+∣b⟩∈V, if ∣a⟩,∣b⟩∈V
n∣a⟩∈V, if ∣a⟩∈V,n∈F
예를 들어, 실수 R에 대해서 체 R 위에 정의된 집합 R2는 다음을 만족하므로 벡터 공간이다.
(x1y1)+(x2y2)=(x1+x2y1+y2)
n∣v⟩=(nxny)∈V∀n∈R
행렬Matrices과 행렬연산Matrix Operations
또다른 기본 개념인 행렬에 대해 알아보자.
행렬은 어떤 벡터를 다른 벡터로 변환한다.
∣v⟩→∣v′⟩=M∣v⟩
일반적으로 행렬은 다음과 같이 배열의 형태로 표현된다.
M=⎝⎜⎛11i+i−25i730−4⎠⎟⎞
행렬곱을 통해 벡터에 행렬을 적용할 수 있다.
일반적으로 행렬곱은 두 개의 행렬 사이에서 이루어진다.
첫번째 행렬의 i번째 행과 두번째 행렬의 j번째 열 사이에서 연산이 이루어지는데
그것의 k번째 원소끼리 곱한 것의 합이 행렬곱 결과 만들어진 행렬이 i번째 행 j번째 열 원소가 된다.
양자 컴퓨팅을 하기 위해서 행렬을 적용하여 조작하는 양자 상태 벡터가 존재한다.
벡터는 하나의 열을 가진 행렬이라고 볼 수 있다.
따라서 벡터에 행렬을 적용하기 위해서는 앞서 설명한 행렬곱과 같은 방식을 사용할 수 있다.
양자 컴퓨터의 큐비트를 조작하기 위해서는 일련의 양자 게이트Quantum Gates를 적용해야 한다.
각각의 양자 게이트는 상태 벡터에 적용되어 그것을 변화시킬 수 있는 행렬로 표현할 수 있다.
파울리 X 게이트 Pauli-X gate
예를 들어, 흔히 사용되는 파울리 X 게이트는 다음과 같이 표현된다.
σx=(0110)
파울리 X 게이트는 고전적인 NOT 논리 게이트와 유사하게 동작한다.
다시 말해, |0⟩는 |1⟩으로, |1⟩는 |0⟩으로 뒤집는 동작을 수행하는 게이트다.
|0⟩와 |1⟩는 다음과 같이 행렬로 나타낼 수 있으며 // 이와 같이 벡터를 행렬로 표현하여 하나의 열로 이루어진 행렬을 열벡터라고도 한다.
생성 집합Spanning Sets, 선형 종속Linear Dependence, 기저Bases
어떤 벡터공간 V에 속하는 일부 벡터들로 이루어진 집합 S는
그 집합에 속한 벡터들의 선형 결합으로 벡터공간 V의 부분공간 VS의 어떤 벡터든 작성할 수 있을 때
부분공간 VS를 생성한다고 하며, 그 집합을 생성 집합이라고 한다.
부분공간은 어떤 벡터공간 연산에 대해 닫혀 있는, 벡터공간의 부분집합이다.
체 F 위에 정의된 벡터공간의 벡터 ∣v1⟩, ..., ∣vn⟩의 선형 결합은
체 F의 원소 fi에 대하여 ∣vi⟩와 fi의 스칼라곱의 합으로 정의된다.
∣v⟩=f1∣v1⟩+f2∣v2⟩+...+fn∣vn⟩=i∑fi∣vi⟩
어떤 벡터들의 선형 결합으로 만들어진 벡터가 영벡터일 때 그들은 선형 종속이라고 하며
선형 종속인 벡터들 중 임의의 벡터는 그것을 제외한 나머지 벡터들의 선형 결합으로 만들 수 있다.
반대로, 임의의 벡터를 나머지 벡터들의 선형 결합으로 만들 수 없는 경우 선형 독립이라고 한다.
기저는 선형적으로 독립인 생성 집합이다.
다시 말해, 벡터공간의 기저는 그 벡터공간을 생성하는 가장 작은 생성집합이다.
벡터가 하나라도 모자라면 벡터공간을 생성하지 못하고
하나라도 많으면 선형 독립이 되지 않아
어떤 벡터공간의 기저의 벡터 개수 즉, 크기는 일정하다.
벡터공간의 기저의 크기를 차원Dimension이라고 한다.
벡터공간의 모든 벡터는 기저의 선형 결합으로 나타낼 수 있으므로
기저는 벡터공간을 일반화할 수 있게 해준다는 점에서 중요하다.
양자 컴퓨팅에서 자주 마주하는 기저로 ∣0⟩과 ∣1⟩가 있다.
모든 큐비트의 상태는 ∣0⟩과 ∣1⟩의 선형 결합으로 나타낼 수 있다.
예를 들어, ∣0⟩로 측정될 확률이 ∣1⟩로 측정될 확률이 동일한 중첩 상태는 ∣0⟩과 ∣1⟩의 선형 결합으로 다음과 같이 나타낼 수 있다.
양자 시스템을 표현하는 힐베르트 공간에서 가장 중요한 조건 중 하나는
어떤 벡터의 자기 자신과의 내적은 항상 1이라는 것이다.
이는 정규화 조건normalization condition이라 불리며, 어떤 벡터의 제곱의 길이는 1이 된다는 것이다.
양자 시스템에서 상태 벡터의 크기가 항상 1이기 때문에 성립하는 것이다.
양자 시스템에서 특정 방향으로의 벡터의 크기는 그 상태에서의 측정과 관련하여 확률 진폭을 나타낸다.
그리고 어떤 상태에서든 그 상태에서 양자 시스템 발견 확률의 합은 1이어야 한다.
유니터리 행렬은 양자 컴퓨팅에서 중요한데 그것은 내적을 보존하기 때문이다.
내적을 보존한다는 것은 행렬의 순서를 변경하더라도 정규화 조건을 만족한다는 것이다.
외적Outer Products과 텐서곱Tensor Products
벡터를 곱하는 방법은 내적 외에도 존재한다.
그 중 하나가 외적인데,
힐베르트 공간 상의 두 벡터 ∣a⟩와 ∣b⟩에 대해서 그들의 외적은 ∣a⟩⟨b∣로 표기한다.
그리고 내적에서 살펴봤듯이 ⟨b∣는 ∣b⟩의 컬레전치 즉, ∣b⟩†와 같다.
스칼라값을 반환하는 내적과 달리 외적의 결과값은 행렬이다.
외적은 사실 텐서곱의 특수한 경우다.
텐서곱은 벡터공간을 함께 곱하는 데 사용되는 일반적인 연산으로,
주로 둘 이상의 큐비트의 공유 상태를 기술하는 데 사용된다.
텐서곱은 외적과 달리 어떤 벡터에 컬레전치를 취하지 않는다.
ket(∣⟩)과 bra(⟨∣)를 곱하는 대신 두 개의 ket을 곱하는 연산을 수행한다.
벡터 ∣a⟩와 ∣b⟩의 텐서곱은 ∣a⟩⊗∣b⟩ 또는 ∣ab⟩로 나타내며 그 계산은 다음과 같다.
와.. 정말 감탄하고 갑니다. 너무 잘 정리된 글이네요. 감사합니다