<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://jaeho0718.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://jaeho0718.github.io/" rel="alternate" type="text/html" hreflang="ko" /><updated>2026-04-16T02:40:49+00:00</updated><id>https://jaeho0718.github.io/feed.xml</id><title type="html">Jaeho’s Dev Blog</title><subtitle>시스템 소프트웨어, 양자컴퓨팅, 프레임워크 정리 블로그</subtitle><entry><title type="html">쇼어 알고리즘 I</title><link href="https://jaeho0718.github.io/quantum%20information%20theory/shor-algorithm/" rel="alternate" type="text/html" title="쇼어 알고리즘 I" /><published>2026-04-16T00:00:00+00:00</published><updated>2026-04-16T00:00:00+00:00</updated><id>https://jaeho0718.github.io/quantum%20information%20theory/shor-algorithm</id><content type="html" xml:base="https://jaeho0718.github.io/quantum%20information%20theory/shor-algorithm/"><![CDATA[<p><strong>강한 처치-튜링 논제(Strong Church-Turing Thesis)</strong> 에 따르면, 모든 물리적 계산 모델은 확률론적 튜링 머신을 통해 다항 시간 내에 시뮬레이션할 수 있다. 이는 곧 고전 컴퓨터로 효율적인 해결이 불가능한 문제는 다른 어떤 계산 모델로도 해결할 수 없음을 의미한다. 하지만 양자 컴퓨터의 등장은 이 논제에 정면으로 도전하는 계기가 되었다.</p>

<p>그 중심에는 바로 쇼어 알고리즘이 있다. 고전 컴퓨터로는 다항 시간 내에 해결할 수 없는 <strong>소인수분해 문제</strong> 를 양자 알고리즘을 통해 효율적으로 처리할 수 있음을 증명했기 때문이다. 이는 계산 복잡도 이론의 패러다임을 바꾸는 중요한 변곡점이 된다. 이번 글에서는 쇼어 알고리즘이 어떤 원리로 이러한 계산적 난제를 해결하는지 그 핵심 아이디어를 살펴본다.</p>

<h2 id="소인수분해-문제-factoring-problem">소인수분해 문제 (Factoring Problem)</h2>

<p>쇼어 알고리즘이 해결하고자 하는 문제는 소인수분해 문제로, 합성수 $N = p_1 p_2$에서 소인수 $p_1, p_2$를 찾는 문제이다. 어떤 결정 문제에 대한 알고리즘을 찾는 방법 중 하나는 이미 효율적 해결이 가능한 알고리즘이 있는 다른 문제로 환원하여 해결하는 것이다. 쇼어 알고리즘 또한 소인수분해 문제를 <strong>위수 찾기(Order-finding)</strong> 문제로 환원하여 해결한다.</p>

<p>쇼어가 소인수분해 문제 해결을 위해 사용한 정수론의 개념은 다음과 같다.</p>

\[\boxed{
\begin{gather*}
1 &lt; x &lt; N, \quad x^2 \equiv 1 \pmod N \text{에 대한 비자명 해 } x \text{를 구할 수 있으면} \\
\gcd(x-1, N) \text{과 } \gcd(x+1, N) \text{ 중 하나는 } N \text{의 인수이다.}
\end{gather*}
} \tag{1}\]

<p>$x$가 비자명 해를 가진다는 것은 $x^2 \equiv 1 \pmod N$의 해가 $x \equiv 1 \pmod N$과 $x \equiv N-1 \pmod N$이 아님을 의미한다. 즉, $x^2 - 1 = (x-1)(x+1) \equiv 0 \pmod N$으로 나타낼 수 있으며, $x$가 비자명하므로 $(x-1)(x+1)$이 $N$으로 나누어떨어지기 위해 $(x-1)$ 또는 $(x+1)$ 중 어느 하나가 단독으로 $N$의 배수가 될 수 없다. 따라서 $\gcd(x-1, N)$ 또는 $\gcd(x+1, N)$ 중 적어도 하나는 $N$의 유효한 인수가 된다.</p>

<blockquote>
  <p><strong>$\pmod N$</strong>: 모듈러 연산을 나타내며, $N$으로 나누었을 때의 나머지를 다룬다. 예를 들어 $4 \pmod 3$은 1이다.</p>
</blockquote>

<blockquote>
  <p><strong>$\gcd(a, b)$</strong>: $a$와 $b$의 최대공약수로, 유클리드 알고리즘을 통해 매우 효율적으로 계산할 수 있다.</p>
</blockquote>

<p>앞선 논의를 통해 $x$를 구할 수 있으면 $N$의 인수를 찾을 수 있음을 알았다. 그렇다면 이러한 $x$는 어떻게 구할 것인가? 그 방법은 아래와 같이 정리된다.</p>

\[\boxed{
\begin{gather*}
1 \le y &lt; N \text{에 대해 N과 서로소이면서 임의로 선택한 } y \text{가 짝수인 위수 } r \text{을 가지며 } \\ y^{r/2} \not\equiv -1 \pmod N \text{이면} \\
y^{r/2} \text{는 } x^2 \equiv 1 \pmod N \text{에 대한 비자명 해이다.} \\
\text{이러한 } y \text{를 뽑을 확률은 최소 } \frac{1}{2} \text{ 이상이다.}
\end{gather*}
} \tag{2}\]

<p><strong>즉 임의로 선택한 $y$에 대해 식 $(2)$를 만족시키는 위수 $r$을 구할 수 있으면, 식 $(1)$에 의해 $N$의 인수를 구할 수 있다.</strong> 따라서 소인수분해 문제는 결과적으로 위수 찾기 문제로 환원된다.</p>

<blockquote>
  <p>양의 정수 $N$과 $\gcd(N, x)=1$을 만족하는 $x (1\le x \lt N)$에 대해 $x^r \equiv 1 \pmod N$인 $r$을 $x$의 $\text{위수(order)}$라 부른다.</p>
</blockquote>

<h2 id="쇼어의-알고리즘">쇼어의 알고리즘</h2>

<p>앞선 과정에서 확인했듯 소인수분해 문제는 결과적으로 위수 찾기(Order-finding) 문제로 귀결된다. 양의 정수 $N$과 $\gcd(N, a)=1$인 $a$에 대해 $a^r \equiv 1 \pmod N$을 만족하는 최소의 양의 정수 $r$을 찾기 위해 다음 함수 $f(x)$를 정의하자.</p>

\[f(x) = a^x \pmod N\]

<p>이 함수는 $a^r \equiv 1 \pmod N$이라는 성질로 인해 $f(x+r) = a^{x+r} \equiv a^x \cdot a^r \equiv a^x \equiv f(x) \pmod N$을 만족하며, 결국 $r$을 주기로 갖는 주기함수가 된다.</p>

<p>이러한 함수의 주기성을 포착하기 위해 푸리에 변환을 적용하면 주기에 해당하는 지점에서 강한 피크(Peak)가 발생하는데, 이것이 바로 쇼어 알고리즘이 난제를 해결하는 핵심 원리다.</p>

<p align="center"><img src="/assets/posts/2026-04-16-shor/fourier_result.png" width="400" /></p>

<p><em>($N=877, a=33$일 때, $g(x)=e^{2\pi i f(x)/r}$의 허수부(좌)와 $g(x)$의 푸리에 변환 결과의 실수부(우))</em></p>

<p>고전 컴퓨터에서는 거대한 $r$ 값을 찾기 위해 함숫값을 일일이 계산해야 하므로 지수적인 시간이 소요되어 효율적인 처리가 불가능하지만, 양자 컴퓨터는 양자 중첩과 양자 푸리에 변환(QFT)을 결합하여 이 과정을 비약적으로 단축한다. 구체적인 위수 찾기 양자 회로의 동작 단계는 아래와 같다.</p>

<p align="center"><img src="/assets/posts/2026-04-16-shor/simple_shor_circuit.png" width="400" /></p>

<ol>
  <li>
    <p><strong>레지스터 준비:</strong> 각각 $m, n$개의 큐비트로 구성된 두 개의 레지스터를 준비한다.</p>
  </li>
  <li>
    <p><strong>중첩 상태 생성:</strong> 첫 번째 레지스터에 하다마드(Hadamard) 게이트를 적용하여 중첩상태를 만든다. 이는 함수에 대입할 값들을 만드는 과정이다.</p>
  </li>
  <li>
    <p><strong>양자 병렬 계산:</strong> 중첩된 $x$값들에 대해 $f(x) = a^x \pmod N$을 계산하여 함숫값을 얻는다. 이 과정에서 제어 레지스터 위상에 함숫값에 대한 정보가 각인되는 위상 킥백(Phase Kickback) 현상이 발생한다. <em>(이는 나중에 위상 추정 파트에서 자세히 다룰 것이라 여기서는 그냥 그렇구나하고 넘어가자)</em></p>
  </li>
  <li>
    <p><strong>양자 푸리에 변환:</strong> 양자 푸리에 변환(QFT)을 통해 $f(x)$에서 주파수(주기) 성분을 뽑아낸다.</p>
  </li>
  <li>
    <p><strong>측정 및 후처리:</strong> 측정을 통해 주기값을 획득한다. <em>(정확히 말하자면 바로 주기값을 얻어낼 수는 없으며, 여기서 측정된 값을 고전컴퓨터에서 후처리를 통해 얻어낸다.)</em></p>
  </li>
</ol>

<p>이렇게 찾아낸 위수 $r$을 이용하면 최종적으로 $N$의 인수를 얻을 수 있다. 본 포스트에서는 쇼어 알고리즘의 전반적인 개요를 짚어보았으며, 각 단계에 대한 상세한 수학적 원리는 다음 글에서 이어나갈 예정이다.</p>]]></content><author><name></name></author><category term="Quantum Information Theory" /><summary type="html"><![CDATA[쇼어 알고리즘의 아이디어를 알아봅니다.]]></summary></entry><entry><title type="html">양자 푸리에 변환</title><link href="https://jaeho0718.github.io/quantum%20information%20theory/qft/" rel="alternate" type="text/html" title="양자 푸리에 변환" /><published>2026-04-03T00:00:00+00:00</published><updated>2026-04-03T00:00:00+00:00</updated><id>https://jaeho0718.github.io/quantum%20information%20theory/qft</id><content type="html" xml:base="https://jaeho0718.github.io/quantum%20information%20theory/qft/"><![CDATA[<h2 id="양자-알고리즘">양자 알고리즘</h2>
<p>우리가 해를 알고 있는 문제가 있다면, 다른 문제를 해당 문제로 변환하여 해결할 수 있으며 이러한 방식은 양자 알고리즘에도 적용된다. 이번 포스트에서 알아볼 양자 푸리에 변환도 고전 컴퓨팅에서 사용한 이산 푸리에 변환, 고속 푸리에 변환의 변형이다. 후에 알아볼 것이지만 양자 푸리에 변환이 고전 푸리에 변환처럼 파형 분석에 사용할 수 없다. 하지만 다른 양자 알고리즘 (Shor’s Algorithm, Phase Estimation)에서의 기반으로 쓰이므로 알고있어야한다.</p>

<blockquote>
  <p>추가적으로 필자는 양자 알고리즘에 대해 수식적으로 표현될 때 이러한 수식들로 양자회로를 구성하는데 있어 방식이 궁금하였다. 따라서 해당 글에서 예제를 통해 이를 정리할 것이다.</p>
</blockquote>

<h2 id="이산-푸리에-변환">이산 푸리에 변환</h2>
<p>푸리에 변환은 시간 및 공간에 대한 함수를 주파수 성분으로 변환하는 것을 말한다.</p>

\[\boxed {
    x_k \rightarrow \frac{1}{\sqrt{N}}\sum_{j=0}^{N-1}x_je^{2\pi i j\frac{k}{N}}
}\]

<p>위의 식은 신호 $x_j$ 에서 주파수 $k$ 성분에 대한 내적으로 볼 수 있으며, 이는 특정 주파수 성분만 뽑아내는 것으로 해석할 수 있다. 힐베르트 공간에서의 이산 내적은 $\langle \mathbf{x}, \mathbf{f}<em>k \rangle = \sum</em>{j=0}^{N-1} x_j \overline{f_k(j)}$ 이며, 푸리에 변환 식에서 $f(j) = x_j$, $g(j) = \dfrac{1}{\sqrt{N}}e^{2\pi i j\frac{k}{N}}$ 임을 알 수 있다. 이는 힐베르트 공간에서의 정규 직교 기저 변환하는 것이다.</p>

<h2 id="양자-푸리에-변환">양자 푸리에 변환</h2>
<p>이제 위의 이산 푸리에 변환을 양자 푸리에 변환으로 변환하면 아래와 같다.</p>

\[\boxed {
   \text{QFT: } \ket{j}  \mapsto \frac{1}{\sqrt{N}}\sum_{k=0}^{N-1} e^{2\pi i j\frac{k}{N}}\ket{k}
}\]

<p>$\ket{j}$는 시$\cdot$공간에서의 벡터이며, $\ket{k}$는 주파수 영역에서의 정규 직교 기저이다.</p>

<p>어떠한 값 $j$는 이진 표현으로 나타낼 수 있으며 이는 아래와 같다.</p>

\[\begin{align*}
j &amp;\mapsto j_1j_2j_3\cdots j_n \\
j &amp;= j_1\cdot2^{n-1}+j_2\cdot2^{n-2}+\cdots+j_n2^{0} \\
0.j_1j_2j_3\cdots j_n &amp;\mapsto \frac{j_1}{2}+\frac{j_2}{2^2}+\cdots+\frac{j_n}{2^n}
\end{align*}\]

<p>값 j를 나타내는 $n$개의 큐비트 $\ket{j_0}, \ket{j_1}, \cdots , \ket{j_{n-1}}$이 있다. $n$개의 큐비트로 나타낼 수 있는 값은 총 $2^n$이며 위 푸리에 변환식에서 $N= 2^n$임을 알 수 있다.</p>

<p>$n$개의 큐비트에 대한 $\text{QFT}$를 보기 전 이해를 위해 $2$큐비트의 $\text{QFT}$를 알아보자.</p>

<h2 id="2큐비트-양자-푸리에-변환">2큐비트 양자 푸리에 변환</h2>
<p>2개의 큐비트 $\ket{j_0}, \ket{j_1}$에 대하여 $\ket{j} = \ket{j_1j_0}, j = j_1 \cdot  2^1 + j_0\cdot 2^0$이며, $\ket{k}$또한 $\ket{k}=\ket{k_1k_0}, k = k_1\cdot 2^1 + k_0$로 나타낼 수 있다. <em>(앞에서 얘기했던 이진표현 방식이다.)</em></p>

<p>위 푸리에 변환식을 행렬표현으로 다음과 같이 나타낼 수 있고, 행렬의 요소는 $\frac{1}{2}e^{2\pi i (j_1 \cdot 2^1 + j_0)(k_1 \cdot 2^1 + k_0)/4}$이다.</p>

\[\frac{1}{2}
\begin{pmatrix}
e^0 &amp; e^0 &amp; e^0 &amp; e^0 \\
e^0 &amp; e^{\pi i / 2} &amp; e^{\pi i} &amp; e^{3\pi i / 2} \\
e^0 &amp; e^{\pi i} &amp; e^{2\pi i} &amp; e^{3\pi i}\\
e^0 &amp; e^{3\pi i/2} &amp; e^{3\pi i} &amp; e^{9\pi i /2} \\
\end{pmatrix} = \frac{1}{2}\begin{pmatrix} 
1 &amp; 1 &amp; 1 &amp; 1 \\
1 &amp; i &amp; -1 &amp; -i \\
1 &amp; -1 &amp; 1 &amp; -1 \\
1 &amp; -i &amp; -1 &amp; i 
\end{pmatrix}\]

<blockquote>
  <p>위 행렬의 행은 출력 $\ket{k}$의 상태 $\ket{00}, \ket{01}, \ket{10}, \ket{11}$ 순이며, 열은 입력 $\ket{j}$의 상태 $\ket{00},\ket{01},\ket{10},\ket{11}$ 순서대로 나타낸 것이다. 본 포스트 전체에서 이러한 규칙을 따를 것이다.</p>
</blockquote>

<p>행렬의 요소를 분석하면 각 큐비트에 어떠한 게이트를 적용해야하는지 알 수 있으며 이는 이후 $n$큐비트 $\text{QFT}$의 양자 회로를 구성하는데 도움이된다.</p>

<p>행렬 요소 $\frac{1}{2}e^{2\pi i (j_1 \cdot 2^1 + j_0)(k_1 \cdot 2^1 + k_0)/4}$에 대하여 지수에서의 합은 곱으로 분해할 수 있다.</p>

\[\begin{align}
&amp;\frac{1}{2}e^{2\pi i (j_1 \cdot 2^1 + j_0)(k_1 \cdot 2^1 + k_0)/4} \tag{1} \\
&amp;= e^{2\pi i j_1k_1}\cdot \frac{1}{\sqrt{2}} e^{2\pi i j_1 k_0/2} \cdot \frac{1}{\sqrt{2}} e^{2\pi i j_0k_1/2} \cdot e^{2\pi i j_0k_0/4} \tag{2}
\end{align}\]

<p>이때 $(2)$에서 $e^{2\pi i j_1 k_1}$은 $j_1, k_1$값이 각각 $0, 1$이므로 항상 $1$이 되어 생략할 수 있다. 
즉 $\frac{1}{\sqrt{2}} e^{2\pi i j_1 k_0/2} \cdot \frac{1}{\sqrt{2}} e^{2\pi i j_0k_1/2} \cdot e^{2\pi i j_0k_0/4}$이다.</p>

<p><strong>$\text{(i) } \frac{1}{\sqrt{2}}e^{2\pi i j_1k_0/2}$ 양자회로 구성</strong></p>

<p>$j_1$의 값 ${0, 1}$에 따른 결과 $k_0$의 값 ${0, 1}$을 행렬로 표현하면</p>

<p>\(\frac{1}{\sqrt{2}}
\begin{pmatrix}
1 &amp; 1 \\
1 &amp; -1
\end{pmatrix} \mapsto \text{Hadamard gate}\)
임을 볼 수 있다. 즉 큐비트 $\ket{j_1}$에 하다마드 게이트를 적용하면 $\ket{k_0}$가 나오는 것이다. 그렇다면 회로를 다음과 같이 구성할 수 있다.</p>

<p align="center"><img src="/assets/posts/2026-04-03-qft/2qubits_qft_build1.png" width="300" /></p>

<p><strong>$\text{(ii) } \frac{1}{\sqrt{2}}e^{2\pi i j_0k_1/2}$ 양자회로 구성</strong></p>

<p>$j_0$의 값 ${0, 1}$과 $k_1$의 값 ${0, 1}$을 행렬로 표현하면</p>

<p>\(\frac{1}{\sqrt{2}}
\begin{pmatrix}
1 &amp; 1 \\
1 &amp; -1
\end{pmatrix} \mapsto \text{Hadamard gate}\)
이며 바로 앞에서 보였던 양자회로 구성과 같다.</p>

<p align="center"><img src="/assets/posts/2026-04-03-qft/2qubits_qft_build2.png" width="300" /></p>

<p><strong>$\text{(iii) } e^{2\pi j_0k_0/4}$ 양자회로 구성</strong></p>

<p>$j_0$의 값 ${0, 1}$과 $k_0$의 값 ${0, 1}$에 대해 살펴보자. 각 값에 대해 $e^{2\pi j_0k_0/4}$의 값은</p>

\[e^{2\pi j_0k_0/4} = \begin{cases}
i &amp; (\text{if } j_0 = k_0=1) \\
1 &amp; \text{(otherwise)}
\end{cases}\]

<p>이며 $\ket{j_1j_0}, \ket{k_1k_0}$에 대한 행렬로 표현하면 제어형 위상 게이트 $S$와 같다.</p>

\[\begin{pmatrix}
1 &amp; 0 &amp; 0 &amp; 0 \\
0 &amp; 1 &amp; 0 &amp; 0 \\
0 &amp; 0 &amp; 1 &amp; 0 \\
0 &amp; 0 &amp; 0 &amp; i 
\end{pmatrix} \mapsto \text{Controlled-S gate}\]

<p align="center"><img src="/assets/posts/2026-04-03-qft/2qubits_qft_build3.png" width="300" /></p>

<p><strong>$\text{(iv) } 2$큐비트 양자 회로 구성</strong></p>

<p>하다마드 게이트와 위상 게이트를 적용했으며 결과로 $(k_0, k_1)$이 나오므로 우리가 원하는 결과 $(k_1, k_0)$가 나오기 위해서 뒤집어줘야한다. 따라서 마지막으로 $\text{SWAP}$게이트를 적용하면 $2$큐비트 QFT가 완성된다.</p>

<p align="center"><img src="/assets/posts/2026-04-03-qft/2qubits_qft_build4.png" width="400" /></p>

<h2 id="n-큐비트-양자-푸리에-변환">n 큐비트 양자 푸리에 변환</h2>

<p><a href="#2큐비트-양자-푸리에-변환">2큐비트 QFT</a> 에서 확장해서 $n$큐비트의 경우 양자회로를 구성해보자.</p>

<p>$n$큐비트에 대해 $\ket{k} = \ket{k_{n-1}k_{n-2}\cdots k_0}, \ket{j} = \ket{j_{n-1}j_{n-2}\cdots j_0}$로 나타낼 수 있으며 이에 대한 푸리에 변환은 다음과 같다.</p>

\[\begin{align}
\ket{j}  &amp;\mapsto \frac{1}{\sqrt{N}}\sum_{k=0}^{N-1} e^{2\pi j\frac{k}{N}}\ket{k} \tag{1} \\
&amp;= \frac{1}{2^{n/2}} \sum_{k=0}^{2^n-1}\ket{k}e^{2\pi i j (k_{n-1}\cdot 2^{n-1}+k_{n-2}\cdot 2^{n-2}+\cdots + k_0\cdot 2^0) / 2^n} &amp; (\because N= 2^{n}) \tag{2} \\
&amp;= \frac{1}{2^{n/2}} \sum_{k=0}^{2^n-1}\ket{k}\Pi_{l=0}^{n-1} e^{2\pi i j k_l \cdot 2^{l} / 2^n} 
= \frac{1}{2^{n/2}} \sum_{k=0}^{2^n-1}\ket{k}\Pi_{l=0}^{n-1} e^{2\pi i j k_l/ 2^{n-l}} \tag{3}
\end{align}\]

<p>이때 $\sum_{k=0}^{2^n-1}\ket{k}$는 $k$의 이진 표현 $\ket{k_m}_{m=0,1,\cdots,n-1}$의 텐서곱으로 나타낼 수 있다.</p>

\[\begin{align}
\ket{j}  &amp;\mapsto \frac{1}{2^{n/2}} \sum_{k=0}^{2^n-1}\ket{k}\Pi_{l=0}^{n-1} e^{2\pi i j k_l/ 2^{n-l}} \tag{4} \\
&amp;= \frac{1}{\sqrt{2}}\sum_{k_{n-1} = 0}^{1} e^{2\pi i j k_{n-1}/2}\ket{k_{n-1}}\otimes\cdots\otimes \frac{1}{\sqrt{2}}\sum_{k_0 = 0}^{1} e^{2\pi i j k_0/2^n}\ket{k_0} \tag{5} \\
&amp;= \frac{\ket{0}+e^{2\pi i j/2}\ket{1}}{\sqrt{2}}\otimes \cdots \otimes \frac{\ket{0}+e^{2\pi i j/2^n}\ket{1}}{\sqrt{2}} \tag{6}
\end{align}\]

<p>$(6)$에서 볼 수 있듯이 $n$개의 큐비트에 대한 QFT연산은 각 연산 결과들의 중첩상태임을 알 수 있다.</p>

<p>어떤 연산이 작용하는지 $\frac{j}{2^n} = 0.j_{n-1}j_{n-2}\dots j_0 = j_{n-1}\frac{1}{2}+j_{n-2}\frac{1}{2^2} \cdots + j_0\frac{1}{2^{n}}$을 통해 위의 식에 약간의 변형을 하면</p>

\[\begin{align}
\ket{j} = \ket{j_{n-1}j_{n-2}\cdots j_0}  &amp;\mapsto \frac{\ket{0}+e^{2\pi i j/2}\ket{1}}{\sqrt{2}}\otimes \cdots \otimes \frac{\ket{0}+e^{2\pi i j/2^n}\ket{1}}{\sqrt{2}} \tag{7} \\
&amp;= \frac{\ket{0}+e^{2\pi i (0.j_0)}\ket{1}}{\sqrt{2}}\otimes \cdots \otimes \frac{\ket{0}+e^{2\pi i (0.j_{n-1}j_{n-2}\dots j_0)}\ket{1}}{\sqrt{2}} \tag{8}
\end{align}\]

<p>$\ket{k_0}=\frac{\ket{0}+e^{2\pi i (0.j_{n-1}j_{n-2}\dots j_{0})}\ket{1}}{\sqrt{2}}$에서  $e^{2 \pi i (0.j_{n-1}j_{n-2}\dots j_{0})}$ 는 회전 게이트 $R_k = \begin{pmatrix} 1 &amp; 0 \ 0 &amp; e^{2\pi i / 2^k} \end{pmatrix}$를 $n-1$번 적용한 것임을 알 수 있다.</p>

<p align="center"><img src="/assets/posts/2026-04-03-qft/r_k.png" width="400" /></p>

<p>위 양자 회로에서 $\ket{k_0}$의 경우를 보자. 예시를 위해 $n=3$이고 $\ket{j_2} = \ket{0}$라 했을 때 회전연산자 $R_k$는  $\ket{1}$에만 작용하므로</p>

\[\begin{align*}
\ket{0} &amp;\mapsto \frac{\ket{0} + \ket{1}}{\sqrt{2}} \\
&amp;\mapsto \frac{\ket{0} + e^{2\pi i (0.0j_1)} \ket{1}}{\sqrt{2}} \\
&amp;\mapsto \frac{\ket{0} + e^{2\pi i (0.0j_1 j_0)}\ket{1}}{\sqrt{2}}
\end{align*}\]

<p>위에서 구한 식과 같다는 것을 알 수 있다.</p>

<h2 id="양자-푸리에-변환-시간-복잡도">양자 푸리에 변환 시간 복잡도</h2>
<p>양자 푸리에 변환에서의 시간 복잡도를 계산해보자. $n$큐비트 $\text{QFT}$에서 $n$개의 하다마드 게이트와 최대 $\frac{n(n-1)}{2}$개의 제어형 회전 연산자, $n/2$개의 스왑연산자가 필요하다. 따라서 시간복잡도 $O(n^2)$로 나타낼 수 있으며 $N = 2^n$이므로 $O((log N)^2)$이다.</p>

<p>이는 고전 컴퓨터에서의 DFT, FFT의 시간복잡도 $O(N^2), O(NlogN)$와 비교하면 속도 측면에서 더 빠름을 알 수 있다.</p>

<p align="center"><a href="https://www.researchgate.net/figure/Comparison-of-the-computational-complexities-of-DFT-FFT-and-QFT-algorithms_fig2_338980039"><img src="https://www.researchgate.net/profile/Daniel-Trad/publication/338980039/figure/fig2/AS:853821693632516@1580578363869/Comparison-of-the-computational-complexities-of-DFT-FFT-and-QFT-algorithms.png" alt="Comparison of the computational complexities of DFT, FFT and QFT algorithms." width="400" /></a></p>

<h2 id="양자-푸리에-변환-한계">양자 푸리에 변환 한계</h2>

<p>앞 섹션에서 <a href="#양자-푸리에-변환-시간-복잡도">시간복잡도 비교</a>을 통해 양자푸리에 변환이 고전 컴퓨터에 비해 좋다는 것을 알 수 있었다. 하지만 양자 푸리에 변환을 이용하여 푸리에 변환 속도를 높이는 방법은 알려져있지않다. 가장 큰 문제점은 측정을 통해 양자 컴퓨터의 진폭에 접근할 수 없기 때문에 푸리에 변환시킨 진폭을 알아낼 방법이 없다.</p>]]></content><author><name></name></author><category term="Quantum Information Theory" /><summary type="html"><![CDATA[양자 푸리에 변환에 대해 알아봅시다.]]></summary></entry><entry><title type="html">왜 양자상태벡터는 힐베르트공간에서 정의되는가?</title><link href="https://jaeho0718.github.io/quantum%20information%20theory/hilbert-space/" rel="alternate" type="text/html" title="왜 양자상태벡터는 힐베르트공간에서 정의되는가?" /><published>2026-03-28T00:00:00+00:00</published><updated>2026-03-28T00:00:00+00:00</updated><id>https://jaeho0718.github.io/quantum%20information%20theory/hilbert-space</id><content type="html" xml:base="https://jaeho0718.github.io/quantum%20information%20theory/hilbert-space/"><![CDATA[<p>양자역학에서의 양자상태는 힐베르트 공간내의 벡터이다. 그렇다면 힐베르트 공간이 무엇이며 왜 양자역학은 힐베르트 공간을 사용하는 것일까? 이번 포스트에서는 이에 대해 다뤄보고자 한다.</p>

<h2 id="힐베르트-공간이란">힐베르트 공간이란?</h2>
<p>힐베르트 공간은 <strong>완비 내적 공간 (Completeness inner product space)</strong> 이다. 처음 책에서 이 정의를 접했을 때 상당히 당혹스러웠다. 내적이 정의된 공간이라는 것은 이해가 가는데 완비성이 무엇인지 몰랐고 따라서 완비 내적 공간이 무엇을 의미하는지 왜 양자역학에서 이를 사용하는지 이해할 수 있을리가 없었다.</p>

<p>완비성, 내적 공간에 대한 정의를 설명하기 위해서는 공간에 대한 정의가 필요하며 단계별로 설명한 뒤 최종적으로 힐베르트 공간에 대한 해석을 제시하고자 한다.</p>

<h2 id="위상-공간">위상 공간</h2>
<p>우선 공간에 대해 대표적인 위상 공간에 대한 정의는 다음과 같다.</p>

\[\boxed{
\begin{aligned}
&amp; \textbf{위상 (Topology)} \\[6pt]
&amp; \text{다음 공리(Axiom)을 만족시키는 } X \text{의 부분집합들의 모임 } \tau \text{를} \\
&amp; \text{집합 } X \text{ 위에서의 }\textbf{위상(Topology)}\text{이라 한다.} \\[6pt]
&amp; \quad 1. \quad X, \varnothing \in \tau \\
&amp; \quad 2. \quad \bigcup_{\alpha \in A} O_\alpha \in \tau \quad (\forall O_\alpha \in \tau) \quad \cdots \text{ 임의의 합집합에 닫혀있다} \\
&amp; \quad 3. \quad O_1 \cap O_2 \in \tau \quad (\forall O_1, O_2 \in \tau) \quad \cdots \text{ 유한 교집합에 닫혀있다} \\[6pt]
&amp; \text{이때 } \tau \text{와 } X \text{를 묶은 쌍 } (X, \tau) \text{을 }\textbf{위상 공간(Topological space)}\text{이라 한다.}
\end{aligned}
}\]

<h2 id="거리-공간">거리 공간</h2>

<h2 id="내적-공간">내적 공간</h2>

<h2 id="완비성">완비성</h2>

<h2 id="완비-내적-공간">완비 내적 공간</h2>]]></content><author><name></name></author><category term="Quantum Information Theory" /><summary type="html"><![CDATA[힐베르트 공간이 무엇이며 왜 양자상태는 힐베르트공간내에서 다뤄지는지 알아봅시다.]]></summary></entry><entry><title type="html">왜 양자역학에서는 디락표기법(Dirac-Notation)을 사용하는가?!</title><link href="https://jaeho0718.github.io/quantum%20information%20theory/bra-ket-notation/" rel="alternate" type="text/html" title="왜 양자역학에서는 디락표기법(Dirac-Notation)을 사용하는가?!" /><published>2026-03-27T00:00:00+00:00</published><updated>2026-03-27T00:00:00+00:00</updated><id>https://jaeho0718.github.io/quantum%20information%20theory/bra-ket-notation</id><content type="html" xml:base="https://jaeho0718.github.io/quantum%20information%20theory/bra-ket-notation/"><![CDATA[<p>필자는 양자정보이론에 대해 학습하던 중 왜 양자역학에서는 우리가 알고있는 $\vec{v}$, 벡터 표기법을 사용하지 않고 디락 표기법이라 불리는 $\ket{k}, \bra{b}$를 사용하는지 궁금했다. 이에 대해 찾아보면서 깨닫게된 놀라운(?!) 사실을 포스트로 남긴다.</p>

<h2 id="디락-표기법이란">디락 표기법이란</h2>
<p>양자역학에서는 벡터를 다룰 때 우리가 일반적으로 알고 있는 $\vec{v}$와는 다른 표기법을 사용한다. 일명 <strong>브라-켓 (bra-ket)</strong> 이라 부르며 $\bra{\psi}, \ket{\phi}$로 표기한다. 간단히 말하자면 브라 벡터($\bra{\phi}$)는 행 벡터이며, 켓 벡터($\ket{\psi}$)는 열 벡터이다.</p>

\[\begin{align*}
\ket{\phi} &amp;= 
\begin{pmatrix}
a_1 \\ a_2 \\ a_3 \\ \vdots \\ a_n
\end{pmatrix} \\

\bra{\psi} &amp;= 
\begin{pmatrix}
b_1 &amp; b_2 &amp; b_3 &amp; \dots &amp; b_n
\end{pmatrix}
\end{align*}\]

<h2 id="양자-상태">양자 상태</h2>
<p>양자역학에서 양자 상태 $\ket{\psi}$는 정규직교기저들(Orthonormal basis)의 선형 조합으로 나타낸다. 이때 $c_i$는 복소수이다.</p>

\[\ket{\psi} = \sum_i^{\infty}c_i\ket{E_i}\]

<blockquote>
  <p>양자정보이론에서는 유한개의 상태로 다루며 위의 식을 보고 “무한 합으로 구성하면 발산할 수 있지 않나?”라고 생각할 수 있다. 그러나 양자 상태 벡터는 힐베르트 공간의 원소이므로 항상 공간 내로 수렴한다. 이에 관해서는 <a href="2026-03-28-hilbert-space.md">“왜 양자상태벡터는 힐베르트공간에서 정의되는가?”</a>에서 다룬다.</p>
</blockquote>

<h2 id="내적에-관하여">내적에 관하여</h2>
<p>분명 해당 포스트는 <strong>“디락 표기법을 왜 사용하는가?”</strong> 에 관한 것인데 뜬금없이 내적이 나와 당황스러울 수 있다. 하지만 이후 디락 표기법의 놀라운 점을 얘기하기 위해서 반드시 언급해야하는 개념이므로 알아두자.</p>

<p>내적은 추상화된 벡터의 <strong>크기</strong> 와 벡터 간의 <strong>각도</strong> 를 알 수 있게해준다. 자기 자신과의 내적은 해당 벡터의 크기가 나오며, 다른 벡터와의 내적을 통해 두 벡터 사이의 각도를 알 수 있다. <em>(고등학교 때 배웠던 개념이다.)</em></p>

<p>\(\vec{v}\cdot\vec{w} = \|v\|\|w\|cos(\theta) \\
\vec{v}\cdot\vec{v} = \|v\|^2\)</p>
<blockquote>
  <p>두 벡터의 내적은 스칼라곱(dot-product)으로 구할 수 있으며 왜 그러한지는 이 섹션의 끝부분에 정리하였다.</p>
</blockquote>

<p>즉 내적은 <strong>두개의 벡터를 입력으로 받아 복소수를 출력으로 하는 함수</strong> 로 볼 수 있다.</p>

\[InProd(\vec{v}, \vec{w}) = c\]

<p>디락표기법으로 넘어가서 $\ket{\psi}, \ket{\phi}$의 내적은 $\braket{\psi\vert\phi}$로 표기하며 다음 성질을 만족한다.</p>
<ol>
  <li>$\braket{\psi\vert \phi+\delta} = \braket{\psi\vert\phi}+\braket{\psi\vert\delta}$</li>
  <li>$\braket{\psi\vert a\phi} = a\braket{\psi\vert\phi}$</li>
  <li>$\braket{\psi\vert\psi} \ge 0$</li>
</ol>

<p>오른쪽 $\ket{\cdot}$에 대하여 우리의 기본 상식과 같게 동작하는 것을 알 수 있다. 그렇다면 왼쪽 $\bra{\psi}$에 대해서는 어떻게 동작할까?
예시로 $\braket{i\phi\vert i\phi}$에서 $\bra{i\phi}$에 대해서 위와 같은 성질을 만족한다 하면</p>

\[\begin{align*}
\braket{i\phi\vert i\phi} &amp;= ii\braket{\phi\vert\phi} \\
&amp;= -1\braket{\phi\vert\phi} \lt 0
\end{align*}\]

<p>자기자신과의 내적은 벡터 크기의 제곱이며 양수여야하는데 음수가 나온다.. 그렇다면 $\bra{\cdot}$는 다른 성질이 적용된다고 볼 수 있으며 그 성질은 다음과 같다.</p>

<ol>
  <li>$\braket{a\psi\vert \phi} = a^*\braket{\psi\vert\phi}$</li>
  <li>$\overline{\braket{\psi\vert\phi}} = \braket{\phi\vert\psi} $</li>
</ol>

<p>위의 성질을 앞선 예제 $\braket{i\phi\vert i\phi}$에 적용하면 문제없다.</p>

\[\begin{align*}
\braket{i\phi\vert i\phi} &amp;= i\braket{i\phi\vert\phi} \\
&amp;= i\braket{\phi\vert i\phi}^* \\
&amp;= i(i)^*\braket{\phi\vert\phi}\\
&amp;= i(-i)\braket{\phi\vert\phi}\\
&amp;= 1\braket{\phi\vert\phi}
\end{align*}\]

<p>앞서 내적은 스칼라곱과 같다고 하였는데 왜 그러한지는 아래 증명을 보면 알 수 있다.</p>

\[\begin{align*}
\text{동일 벡터공간 내 두 벡터}\ket{\psi} &amp;= \sum_i a_i\ket{E_i},\ \ket{\phi}=\sum_j b_j\ket{E_j} \text{에 대하여} \\
\braket{\psi\vert\phi} &amp;= \sum_i\sum_j \braket{a_iE_i\vert b_jE_j}\\
&amp;= \sum_i\sum_j a_i^*b_j\braket{E_i\vert E_j} \\
&amp;= \sum_i\sum_j a_i^*b_j\delta_{ij} &amp; (\because\ket{E_i}\text{는 정규직교기저다.}) \\
&amp;= \sum_i a_i^*b_i = Dot-product &amp; (\because \text{여기서 a와 b는 실수인 경우다.})
\end{align*}\]

<h2 id="선형-함수에-대하여">선형 함수에 대하여</h2>
<p>선형함수란 벡터를 받아 스칼라 값으로 변환해주는 함수다.</p>

\[L\vec{v} \rightarrow c\]

<p>실수 공간으로 보자면 $\mathbb{R}^n\rightarrow\mathbb{R}^1$으로 볼 수 있다. 이는 행 벡터로 나타낼 수 있으며 이를 <strong>쌍대벡터 (Dual vector)</strong> 라 부른다. 벡터가 벡터공간을 생성하는 것 처럼 쌍대벡터들도 쌍대공간(Dual space)을 생성한다. 쌍대공간은 벡터공간의 벡터들의 모든 선형함수 공간이다.</p>

\[L= \begin{bmatrix} a_1 &amp; a_2 &amp; \cdots &amp; a_n\end{bmatrix}\]

<p>선형함수가 양자역학과 무슨 관련이 있는가? 양자상태에서 확률이나 기댓값등 값(value)을 얻기 위해서는 반드시 스칼라로 변환해야한다. 이 점을 보면 양자역학에 선형함수가 필요함을 납득할 수 있다.</p>

<h2 id="선형-함수와-내적">선형 함수와 내적</h2>

<p>드디어 디락표기법의 놀라운 점을 말할 때가 됐다. 선형함수와 내적간의 관계를 보자. 선형함수는 $\bra{L}\ket{\phi}$로 ,내적은 $\braket{\psi\vert\phi}$로 나타내는 것을 앞 섹션에서 살펴봤다.</p>

<p>간단한 선형 함수의 예시를 보자</p>

\[\begin{bmatrix} a &amp; b\end{bmatrix} \begin{bmatrix} c \\ d \end{bmatrix} = a\cdot c+b\cdot d\]

<p>어디서 많이 본 것 않은가? 우리가 알고 있는 내적과 같다.</p>

\[\begin{bmatrix} a \\ b \end{bmatrix} \cdot \begin{bmatrix} c \\ d \end{bmatrix} = a\cdot c+b\cdot d\]

<p><strong>즉 선형함수는 대응하는 열벡터와의 내적으로 표현할 수 있다!</strong></p>

\[\begin{bmatrix} a &amp; b\end{bmatrix} \vec{v} = \begin{bmatrix} a \\ b \end{bmatrix} \cdot \vec{v}\]

<p>이를 디락표기법을 이용해 나타내면 $\bra{\psi}\ket{\phi} = \braket{\psi\vert\phi}$이다.</p>

\[\bra{\psi}\ket{\phi} = \braket{\psi\vert\phi}\]

<p><strong>브라 ($\bra{\cdot}$)와 내적은 다른 개념이지만 디락표기법에서는 이 둘이 자연스럽게 연결된다.</strong> 
덕분에 다음과 같은 놀라운 완비성 관계도 이끌어 낼 수 있다.
\(\begin{align*}
\ket{\psi} = \sum_i c_i \ket{A_i}&amp;, \ c_i = \braket{A_i\vert\psi} \text{에 대해} &amp; (\because \ket{A_i}\text{는 정규직교 기저다.}) \\
\ket{\psi} &amp;= \sum_i c_i \ket{A_i} \\
&amp;= \sum_i \braket{A_i\vert\psi} \ket{A_i} \\
&amp;= \sum_i \ket{A_i}\braket{A_i\vert\psi}  \\
&amp;= \sum_i \ket{A_i}\bra{A_i}\ket{\psi}  &amp; (\because \braket{\psi\vert\phi} = \bra{\psi}\ket{\phi})\\
&amp;= (\sum_i \ket{A_i}\bra{A_i})\ket{\psi} \\
\text{즉} \sum_i \ket{A_i}\bra{A_i} &amp;= I \text{ 임을 알 수 있다.}
\end{align*}\)</p>

<blockquote>
  <p>이는 Riesz representation theorem (리즈의 표현 정리)에 근간을 두고 있으며 필자는 아직 해당 정리에 대한 공부를 하지 않아 해당 포스트에서는 다루지 않는다. 나중에 다뤄볼 예정이다.</p>
</blockquote>]]></content><author><name></name></author><category term="Quantum Information Theory" /><summary type="html"><![CDATA[양자역학에서 왜 디락 표기법을 사용하는지 알아봅시다.]]></summary></entry><entry><title type="html">양자정보이론을 위한 선형대수</title><link href="https://jaeho0718.github.io/quantum%20information%20theory/matrix-for-quantum-info/" rel="alternate" type="text/html" title="양자정보이론을 위한 선형대수" /><published>2026-03-26T00:00:00+00:00</published><updated>2026-03-26T00:00:00+00:00</updated><id>https://jaeho0718.github.io/quantum%20information%20theory/matrix-for-quantum-info</id><content type="html" xml:base="https://jaeho0718.github.io/quantum%20information%20theory/matrix-for-quantum-info/"><![CDATA[<h2 id="개론">개론</h2>
<p>본 포스트에서는 양자역학 및 양자정보이론을 이해하기 위해 필요한 <strong>선형대수</strong>개념에 대해 정리한다. 선형대수 개념에 물리학자들은 양자역학용으로 <strong>디락 표기법 (Dirac Notation)</strong> 을 도입했는데 차후 다룰 양자역학공론 및 양자정보이론을 이해하는데 있어 반드시 익숙해져야할 표기법이다. 따라서 선형대수 개념과 함께 <strong>디락 표기법</strong> 도 같이 설명할 것이다.</p>

<h2 id="1-디락-표기법-dirac-notation">1. 디락 표기법 (Dirac Notation)</h2>

<p>선형대수의 기본 대상은 <strong>벡터 공간 (Vector space)</strong> 이며 이러한 벡터 공간들 중 집중할 부분은 복소수로 구성된 <strong>복소 벡터 공간</strong> 이다. 
\(\mathbb{C}^n: \text{복소벡터 }\{z_1, z_2, ..., z_n\}\text{로 구성된 복소 벡터 공간}\)</p>

<p>벡터 공간의 원소는 열 행렬 표기법 (Column Matrix Notation)을 통해 나타내며, 이는 디락 표기법에서 $\vert \cdot \rangle (ket)$로 나타낸다.</p>

\[\vert v \rangle =
\begin{pmatrix}
z_1 \\ z_2 \\ z_3 \\ \vdots \\z_n
\end{pmatrix}\]

<p>행 벡터의 경우 $\langle\cdot\vert (bra)$ 로 나타낸다. <em>(벡터 $v$의 쌍대벡터, dual-vector라 부르기도 한다)</em></p>

\[\langle v \vert =
\begin{pmatrix}
z_1^* \ z_2^* \ z_3^* \ \cdots \ z_n^*
\end{pmatrix}\]

<blockquote>
  <p>벡터 공간의 정의 자체는 차후 힐베르트 공간에 대한 정의에 대한 포스트에서 다룰 예정이다.</p>
</blockquote>

<h2 id="2-기저와-선형독립-basis-and-linarly-independent">2. 기저와 선형독립 (Basis and Linarly Independent)</h2>
<p><strong>기저(Basis)</strong> 를 설명하기 앞서 <strong>생성 집합(Spanning set), 생성(Span), 선형종속(Linearly Dependent)</strong> 개념을 알 필요가 있다.</p>

<ol>
  <li>
    <p><strong>생성 집합(Spanning set)</strong> : 벡터 공간에 속한 벡터를 이용하여 해당 벡터 공간내 벡터를 표현할 수 있는 벡터 집합
\(\{\vert v_1\rangle, \vert v_2\rangle, \cdots, \vert v_n\rangle \} \text{에 대하여 } \vert v \rangle = \sum_i a_i\vert v_i \rangle\)</p>
  </li>
  <li>
    <p><strong>생성(Span)</strong> : 생성집합이 벡터 공간을 만드는 것</p>
  </li>
  <li>
    <p><strong>선형 종속(Linearly Dependent)</strong> 
\(\begin{gather*}
\text{적어도 하나의 } a_i \neq 0 \text{ 일 때} \\
a_1 \vert v_1 \rangle + a_2 \vert v_2 \rangle + \cdots + a_n \vert v_n \rangle = 0 \\
\text{를 만족하는 } \text{복소수 집합} \{a_1, a_2, \cdots, a_n\} \text{은 선형 종속이다.}
\end{gather*}\)</p>
  </li>
</ol>

<p>선형종속과 반대 $a_1 \vert v_1 \rangle + a_2 \vert v_2 \rangle + \cdots + a_n \vert v_n \rangle \neq 0$인 복소수 집합은 <strong>선형 독립(Linearly Independent)</strong> 라 한다. 선형 독립이며 벡터 공간을 생성하는 복소수 벡터 집합을 <strong>기저 (Basis)</strong> 라 부르며 기저의 원소 수가 해당 공간의 <strong>차원</strong>이 된다.</p>

<h2 id="3-선형연산자와-행렬">3. 선형연산자와 행렬</h2>
<p>선형 연산자는 다른 벡터 공간으로 변환하는 연산이며 선형 연산자 $A$에 대해 $A: V \rightarrow W$ 로 정의된다.
\(A(\sum_i a_i\vert v_i \rangle ) = \sum_i a_iA(\vert v_i \rangle)\)</p>

<p>선형 연산자($A: V\rightarrow W$)는 다음과 같이 행렬로 나타낼 수 있다. <em>($\vert v_i \rangle, \vert w_j \rangle$는 기저벡터다.)</em>
\(A\vert v_j \rangle =
\begin{pmatrix}
A_{1j} \\ A_{2j} \\ \vdots \\ A_{nj}
\end{pmatrix}
= \sum_i A_{ij}\vert w_i \rangle\)</p>
<blockquote>
  <p>위 식을 직관적으로 설명하자면 벡터 $\vert v_j \rangle$의 선형 연산은 출력기저의 합으로 나타낼 수 있음을 보인 것이다.</p>
</blockquote>

<h3 id="파울리-행렬-pauli-matrix">파울리 행렬 (Pauli Matrix)</h3>
<p>선형 연산자들 중 유용한 연산자 (파울리 연산자)는 양자정보이론에서 많이 사용되므로 소개한다.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center">연산자</th>
      <th style="text-align: center">기호</th>
      <th style="text-align: center">행렬 표현</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">파울리 $X$</td>
      <td style="text-align: center">$\sigma_x$</td>
      <td style="text-align: center">$\begin{bmatrix} 0 &amp; 1 \ 1 &amp; 0 \end{bmatrix}$</td>
    </tr>
    <tr>
      <td style="text-align: center">파울리 $Y$</td>
      <td style="text-align: center">$\sigma_y$</td>
      <td style="text-align: center">$\begin{bmatrix} 0 &amp; -i \ i &amp; 0 \end{bmatrix}$</td>
    </tr>
    <tr>
      <td style="text-align: center">파울리 $Z$</td>
      <td style="text-align: center">$\sigma_z$</td>
      <td style="text-align: center">$\begin{bmatrix} 1 &amp; 0 \ 0 &amp; -1 \end{bmatrix}$</td>
    </tr>
    <tr>
      <td style="text-align: center">항등 연산자 $I$</td>
      <td style="text-align: center">$\sigma_0$</td>
      <td style="text-align: center">$\begin{bmatrix} 1 &amp; 0 \ 0 &amp; 1 \end{bmatrix}$</td>
    </tr>
  </tbody>
</table>

<h2 id="4-내적-inner-product">4. 내적 (Inner Product)</h2>
<p>내적이란 어떤 벡터공간의 두 벡터를 입력으로 받아 복소수를 출력하는 함수로 $\langle v \vert w \rangle$로 나타낸다. 이때 벡터 공간은 내적공간이어야 하며 다음 조건 만족 시 내적이 된다.</p>
<ol>
  <li>
    <table>
      <tbody>
        <tr>
          <td>선형성: $\langle x+z \vert y \rangle = \langle x \vert y \rangle+\langle z \vert y\rangle$, $\langle v</td>
          <td>\lambda w\rangle = \lambda\langle v</td>
          <td>w\rangle$,  $\langle \lambda v</td>
          <td>w\rangle = \lambda^*\langle v</td>
          <td>w\rangle$</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>켤레 대칭: $\overline{\langle v \vert w \rangle} = \langle w \vert v \rangle$</li>
  <li>$\langle v \vert v \rangle \ge 0$ 이며 등호를 만족시키는 필요충분조건은 $\vert v \rangle = 0$이다.</li>
</ol>

<blockquote>
  <p>내적공간에 관해서는 힐베르트 공간에 대한 포스트에서 다룰 예정이다.</p>
</blockquote>

<ul>
  <li>$\langle v \vert w \rangle=0$ 일때 두 벡터는 <strong>직교</strong>한다.</li>
  <li>벡터의 노름(Norm): $| \vert v \rangle | = \sqrt{\langle v \vert v \rangle}$</li>
  <li>단위 벡터(Unit vector): 벡터의 노름이 1인 벡터</li>
</ul>

<p><a href="#3-선형연산자와-행렬">선형 연산자와 행렬</a>에서 연산자를 내적을 이용해서 표현할 수 있는데, 연산자 $A: V\rightarrow W$는 각 벡터공간 $V,W$에 속한 벡터 $\vert v \rangle, \vert w \rangle$에 대해 $\vert w \rangle \langle v \vert$로 나타낸다.
\((\vert w \rangle \langle v \vert) \vert v' \rangle = \langle v \vert v' \rangle \vert w \rangle\)
이는 벡터 $\vert w \rangle$에 복소수 $\langle v \vert v’ \rangle$를 곱한 것이라 본다.</p>

<h3 id="완비성-관계-completness-relation">완비성 관계 (Completness Relation)</h3>
<p>벡터 공간 $V$에 대한 정규직교 기저 $\vert i \rangle $에 대해 $\vert v \rangle = \sum_i v_i\vert i \rangle$인 벡터에 연산자 $\sum_i\vert i \rangle \langle i \vert$를 적용하면 
\(\sum_i\vert i \rangle \langle i \vert v \rangle = \sum_i v_i\vert i \rangle = \vert v \rangle\)
가 되며 따라서 $\sum_i\vert i \rangle \langle i \vert = I$를 만족한다. 이떄 $\sum_i\vert i \rangle \langle i \vert = I$를 <strong>완비성 관계</strong> 라 한다.</p>

<p>이를 응용하여 어떠한 <a href="#3-선형연산자와-행렬">선형연산자</a>를 외적으로 나타낼 수 있다.
\(\begin{align*}
A&amp;: V \rightarrow W \\
A &amp;= I_WAI_V \\
&amp;= \sum_{i,j} \vert w_i \rangle \langle w_i \vert A \vert v_j \rangle \langle v_j \vert \\
&amp;= \sum_{i,j} \langle w_i \vert A \vert v_j \rangle \vert w_i \rangle \langle v_j \vert 
\end{align*}\)s
<em>(선형 연산자를 외적으로 나타내는 예시)</em></p>

<h2 id="5-고유벡터와-고유값-eigen-vector-eigen-value">5. 고유벡터와 고유값 (Eigen vector, Eigen value)</h2>
<p>\(A\vert v \rangle = \lambda \vert v \rangle\)
위의 식을 만족하는 $\lambda$를 $A$의 고유값(Eigen value), $\vert v \rangle$를 $A$의 고유벡터라 하며 고유공간(Eigen space)은 $\lambda$ 고유값을 갖는 벡터 집합이다.</p>

<p>고유값을 찾는 방법에 대해 다시 복기해보자. 고유값이 존재하기 위해서는 $(A-\lambda I )\vert v \rangle = 0$을 만족하는 $\vert v \rangle$가 존재해야하며 이는 $(A-\lambda I)$의 역행렬이 존재하면 안됨을 말한다. 즉 $det(A-\lambda I)=0$인 $\lambda$를 구하면 고유값을 찾을 수 있다.</p>

<p>하나의 고유값 $\lambda$에 대하여 선형 독립인 고유벡터가 여러개 존재할 경우 축퇴(Degenerate)되었다고 얘기한다. 축퇴가 도리 경우 기저 선택의 자유도가 달라지는데 하나의 고유값에 대한 여러개의 선형독립 고유벡터가 생성한 고유공간내에서 기저선택이 가능하기 떄문이다. <em>(고유공간내 어떠한 벡터들도 고유벡터가 된다.)</em> 반면 비축퇴(Non degenerate)의 경우 하나의 고유값에 대해 하나의 고유벡터만 있기 때문에 측정값 하나당 기저가 하나씩 선택된다.</p>

<h2 id="6-에르미트-켤레와-에르미트-연산자-hermitian-conjugate-and-hermition-operator">6. 에르미트 켤레와 에르미트 연산자 (Hermitian conjugate and Hermition operator)</h2>
<p>힐베르트 공간 $V$에서 임의의 선형연산자 $A$에 대하여 $(\vert v \rangle,A\vert w \rangle)=(A^\dagger \vert v \rangle, \vert w \rangle)$을 만족하는 유일한 선형 연산자 $A^\dagger$가 존재하며 이를 $A$연산자의 <strong>에르미트 켤레(Hermitian conjugate)</strong> 라 부른다. 이때 $A^\dagger = (A^T)^*$이다.</p>

<p>연산자 $A$가 $A^\dagger$와 같을 떄 이를 <strong>에르미트 연산자(Hermitian operator)</strong> 라 부른다.
\(A = A^\dagger\)</p>

<h3 id="사영-연산자-projector">사영 연산자 (Projector)</h3>
<p>에르미트 연산자 중 중요한 것은 사영연산자다. 벡터공간 $V, W$에 대해 연산자 $P: V \rightarrow W$는 다음과 같이 정의할 수 있다.
\(P \equiv \sum_i \vert i \rangle \langle i \vert\)
($\vert i \rangle$은 벡터공간 $W$의 정규직교기저이다.)</p>

<p>위의 식을 분석하자면 벡터 공간 $V$의 벡터 $\vert v \rangle$에서 벡터공간 $W$의 성분값을 추출 ($\langle i \vert v \rangle$, 복소값)이를 다시 벡터공간 $W$의 벡터로 맵핑 ($\langle i \vert v \rangle \vert i \rangle$) 하는 것으로 볼 수 있다.</p>

<p>직교여연산자$Q$는 $Q \equiv I-P$로 정의한다.</p>
<blockquote>
  <p>$m$ 차원 벡터 공간 $V$의 기저 ${\vert v_1 \rangle, \vert v_2 \rangle, \cdots, \vert v_m \rangle }$, 벡터공간 $V$의 부분공간이자 $n$차원인 벡터 공간 $W$의 기저 ${\vert v_1 \rangle, \vert v_2 \rangle, \cdots, \vert v_n \rangle }$ 에 대해 사영연산자 $P: V \rightarrow W$의 직교여연산 $Q$는 ${\vert v_{n+1} \rangle, \vert v_{n+2} \rangle, \cdots, \vert v_m \rangle }$로의 투영이다.</p>
</blockquote>

<h2 id="7-스펙트럼-분해-spectral-decomposition">7. 스펙트럼 분해 (Spectral Decomposition)</h2>
<p>에르미트 연산자 $A$는 고유값 $\lambda_i$와 고유벡터 $\vert v_i \rangle$에 대해 항상 $A=\sum_i \lambda_i\vert v_i\rangle\langle v_i\vert$로 분해된다. 이를 스펙트럼 분해(Spectral Decomposition)이라 부른다.</p>

<p>이는 양자 역학에서 관측과 연결되며 특정 기저로의 관측값 즉 고유값을 얻는데 사용된다. 예를 들어 측정연산자 $M_i = \sum_i \lambda_i \vert i \rangle \langle i \vert$로 측정을 한다고하자. <em>(측정연산자에 대한 것은 추후 양자측정에서 자세히 설명할 것이니 여기서는 예시로 넘어가면된다.)</em>
이때 $\lambda_i$가 측정될 확률은 해당 고유값의 고유벡터 $\vert i \rangle$을 통해 $P(\lambda_i) = \vert\langle i \vert \psi \rangle \vert^2$로 나타낸다.</p>

\[\begin{align*}
\langle \psi \vert M\vert \psi \rangle &amp;= \sum_i\lambda_i\langle\psi\vert i \rangle \langle i\vert\psi\rangle \\
&amp;= \sum_i \lambda_i \overline{\langle i \vert\psi\rangle} \langle i \vert \psi \rangle \\ 
&amp;= \sum_i \lambda_i P(\lambda_i) \\
&amp;= \mathbb{E}(\lambda_i)
\end{align*}\]

<h2 id="8-텐서곱-tensor-product">8. 텐서곱 (Tensor product)</h2>
<p>텐서곱은 벡터공간을 더 큰 벡터공간으로 표현하는 방식이다. 이는 단일 양자계뿐 아닌 다입자계를 설명하는데 사용된다. 텐서곱 표현은 아래와 같다.</p>

\[\begin{align*}
&amp;\vert v \rangle \otimes \vert w\rangle \\
&amp;= \vert v \rangle \vert w \rangle \\
&amp;= \vert vw \rangle
\end{align*}\]

<p>텐서곱의 성질은 다음과 같다.</p>
<ol>
  <li>$z(\vert v \rangle \otimes \vert w \rangle) = (z\vert v \rangle)\otimes\vert w \rangle = \vert v \rangle \otimes (z\vert w \rangle)$</li>
  <li>$(\vert v_1 \rangle + \vert v_2 \rangle)\otimes \vert z \rangle = \vert v_1 z \rangle + \vert v_2 z \rangle$</li>
  <li>$\vert v \rangle \otimes (\vert w_1 \rangle + \vert w_2\rangle) = \vert vw_1\rangle+\vert vw_2\rangle$</li>
</ol>

<p>동일한 상태의 반복적인 텐서곱 $\vert \psi \rangle \vert\psi\rangle\cdots\vert\psi\rangle = \vert\psi\rangle^{\otimes k}$로 나타낼 수 있다.</p>

<p>연산자가 텐서곱 공간에 적용시 선형성이 보장하는 방식으로 $V\otimes W$ 모든 원소로 확장된다. 
\((A_v\otimes B_w)(\vert v \rangle \otimes \vert w \rangle) \equiv A\vert v \rangle \otimes B \vert w \rangle\)</p>

<p>이러한 텐서곱은 크로네커 곱 (Kroneker product)를 통해 나타낼 수 있다. (연산자 $A$는 $m\times n$행렬)
\(A \otimes B = 
\begin{pmatrix}
A_{11}B &amp; A_{12}B &amp; \cdots &amp; A_{1n} \\
A_{21}B &amp; \cdots &amp; &amp; A_{2n} \\
\vdots &amp; \ddots \\
A_{m1}B &amp; A_{m2}B &amp; \cdots &amp; A_{mn}
\end{pmatrix}\)</p>

<h2 id="9-연산자-함수">9. 연산자 함수</h2>

<h2 id="9-극-분해-polar-decomposition">9. 극 분해 (Polar decomposition)</h2>]]></content><author><name></name></author><category term="Quantum Information Theory" /><summary type="html"><![CDATA[양자정보이론을 다루는데 있어 필수적인 선형대수 개념을 정리합니다]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaeho0718.github.io/" /><media:content medium="image" url="https://jaeho0718.github.io/" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>