---
# System prepended metadata

title: 5 The quantum Fourier transform and its applications
tags: [WS2020-IN2381-I2QC]

---

# 5 The quantum Fourier transform and its applications
###### tags: `WS2020-IN2381-I2QC`

* 量子計算中，最有名的應用：**Shor's algorithm**
    * 功能：n-bit 之整數分解 (factoring a n-bit integer)，或稱質因數分解 (破 RSA 用)。
    * 時間複雜度：$O(n^2 \log n \log \log n)$
* 經典演算法：number field sieve 
    * 時間複雜度：$\exp(\Theta(n^{1/3} (\log n)^{2/3}))$
    :::info
    $O$：漸進上界，表示小於等於。
    $\Theta$：漸進上界與下界，表示等於。
    $\Omega$：漸進下界，表示大於等於。
    :::

## 5.1 The quantum Fourier transform

### Discrete Fourier transform
* 定義：$F_N: \mathbb{C}^N \to \mathbb{C}^N$, $F_N(x) = y$
    $$
    y_k = \dfrac{1}{\sqrt{N}} \sum_{j=0}^{N-1} x_j \mathrm{e}^{2 \pi i j k / N}
    \ \ \ \ \ \ \ \ \ \ 
    \forall\ k= 0, \cdots, N-1
    $$
* 特性：
    * $F_N$ 為 **unitary transformation**：對於所有 $x,x^{\prime} \in \mathbb{C}^{N}$，$\langle F_N(x^{\prime}) | F_N(x) \rangle = \langle x^{\prime} | x \rangle$ 成立。
    * $F_N$ 為 $\mathbb{C}^{N \times N}$ 矩陣。

### Quantum Fourier transform
* 定義：
    作用於一個 orthonormal basis $\begin{Bmatrix} | 0 \rangle, | 1 \rangle, \cdots, | N-1 \rangle\end{Bmatrix}$ 上的 QFT：
    $$
    | j \rangle 
    \mapsto 
    \dfrac{1}{\sqrt{N}} \sum_{k=0}^{N-1} \mathrm{e}^{2 \pi i j k / N} | k \rangle
    $$
    疊加態 (superposition) 的表示法：
    $$
    \sum_{j=0}^{N-1} x_j | j \rangle 
    \mapsto 
    \dfrac{1}{\sqrt{N}} \sum_{k=0}^{N-1} \sum_{j=0}^{N-1} \mathrm{e}^{2 \pi i j k / N} x_j | k \rangle = 
    \sum_{k=0}^{N-1} F_N(x)_k | k \rangle
    $$
* 假設：
    * $N$ 為 $2$ 的指數：$N = 2^n$，$n \in \mathbb{N}$。
    * 如此 orthonormal basis 可寫作 $\begin{Bmatrix} | 0 \rangle, | 1 \rangle, \cdots, | 2^n-1 \rangle\end{Bmatrix}$，也就可表示成 **n-qubit quantum register**。
    * 對於 $j \in \begin{Bmatrix} | 0 \rangle, | 1 \rangle, \cdots, | 2^n-1 \rangle\end{Bmatrix}$，$j=j_{n-1}j_{n-2}\cdots$。
    * **n-qubit quantum register** 圖示：
        ![](https://i.imgur.com/XtL0zGV.png =150x)
* **公式 (QFT in product form)**：
    $| j_{n-1} \cdots j_1 j_0 \rangle \mapsto \dfrac{1}{2^{n/2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_0)}|1\rangle) (|0\rangle + \mathrm{e}^{2 \pi i (0.j_1 j_0)}|1\rangle) \otimes \cdots \otimes (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-1} \cdots j_1 j_0)}|1\rangle)$
* 證明：
    因為 $0.abcd \cdots = \dfrac{a}{2}+ \dfrac{b}{4} + \dfrac{c}{8} + \dfrac{d}{16}  + \cdots$，
    因此，
    $$
    \begin{eqnarray*}
    | j \rangle \mapsto && 
    \dfrac{1}{2^{n/2}} \sum_{k=0}^{N-1} \mathrm{e}^{2 \pi i j k / N} | k \rangle \\ = &&
    \dfrac{1}{2^{n/2}} \sum_{k_{n-1}=0}^{1} \cdots \sum_{k_0=0}^{1} \mathrm{e}^{2 \pi i j (\sum_{l=1}^{n}k_{n-l}2^{-l})} | k_{n-1} \cdots k_1 k_0 \rangle \\ = &&
    \dfrac{1}{2^{n/2}} \bigotimes_{l=1}^{n} \Bigg( \sum_{k_{n-l}=0} \mathrm{e}^{2 \pi i j k_{n-l} 2^{-l}} | k_{n-l} \rangle \Bigg) \\ = &&
    \dfrac{1}{2^{n/2}} \bigotimes_{l=1}^{n} \Big( |0\rangle + \mathrm{e}^{2 \pi i j 2^{-l}}|1\rangle \Big) \\ = &&
    \dfrac{1}{2^{n/2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_0)}|1\rangle) \otimes (|0\rangle + \mathrm{e}^{2 \pi i (0.j_1 j_0)}|1\rangle) \otimes \cdots \otimes (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-1} \cdots j_1 j_0)}|1\rangle)
    \end{eqnarray*}
    $$
    :::info
    因為 $q$ 為正整數，因此 $\mathrm{e}^{2 \pi i q} =1$，如此便可於最後一個等式將 $\mathrm{e}^{2 \pi i (ab.cd)}$ 約化為 $\mathrm{e}^{2 \pi i (0.cd)}$。
    :::
* **構建 quantum circuit**：
    * 矩陣表示法：$R_k := \begin{pmatrix} 1 & 0 \\ 0 & \mathrm{e}^{2 \pi i / 2^k} \end{pmatrix}$
    * 圖示：
        ![](https://i.imgur.com/SYuVLBK.png =1000x)
    * 解說：
        * 將第一個 qubit $j_{n-1}$ 進行 $\mathrm{Hadamard}\ \mathrm{gate}$ 運算：
            首先我們知道 $H |x\rangle = \dfrac{1}{\sqrt{2}} (|0\rangle + (-1)^x |1\rangle)$，其中 $x \in \begin{Bmatrix} 0,1 \end{Bmatrix}$，
            因為 $\mathrm{e}^{2 \pi i (0.0)_2} = 1$ 而 $\mathrm{e}^{2 \pi i (0.1)_2} = \mathrm{e}^{\pi i} = -1$，也就是說 $\mathrm{e}^{2 \pi i (0.x)_2} = (-1)^x$。
            因此針對第一個 qubit 的運算可以這樣改寫：
            $$
            H |j_{n-1}\rangle = \dfrac{1}{\sqrt{2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-1})_2} |1\rangle)
            $$
            而整體 quantum register 的狀態則是：
            $$
            \dfrac{1}{\sqrt{2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-1})_2} |1\rangle) |j_{n-2} \cdots j_1 j_0 \rangle
            $$
        * 接下來進入 $\mathrm{controlled}\ R_2\ \mathrm{gate}$，只要 $|j_{n-2}\rangle = |1\rangle$ (control qubit)，那麼就會對 $\dfrac{1}{\sqrt{2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-1})_2} |1\rangle) |j_{n-2} \cdots j_1 j_0 \rangle$ 中第一個 qubit 的 $|1\rangle$ 乘以 $\mathrm{e}^{2 \pi i / 2^2} = \mathrm{e}^{2 \pi i (0.01)_2}$ (計算技巧同上一個步驟)：
            $$
            \dfrac{1}{\sqrt{2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-1}j_{n-2})_2} |1\rangle) |j_{n-2} \cdots j_1 j_0 \rangle
            $$
        * 第一個 qubit 經過了所有的 $\mathrm{controlled}\ R_k\ \mathrm{gates}$ 後：
            $$
            \dfrac{1}{\sqrt{2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-1} \cdots j_1 j_0)_2} |1\rangle) |j_{n-2} \cdots j_1 j_0 \rangle
            $$
        * 第二個 qubit 經過了 $\mathrm{Hadamard}\ \mathrm{gate}$ 運算後：
            $$
            \dfrac{1}{\sqrt{2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-1} \cdots j_1 j_0)_2} |1\rangle) \dfrac{1}{\sqrt{2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-2})_2} |1\rangle) |j_{n-3} \cdots j_1 j_0 \rangle
            $$
        * 以此類推，最後的輸出為：
            $$
            \dfrac{1}{2^{n/2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-1} \cdots j_1 j_0)_2}|1\rangle) (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-2} \cdots j_1 j_0)_2}|1\rangle)  \cdots (|0\rangle + \mathrm{e}^{2 \pi i (0.j_0)_2}|1\rangle) 
            $$
        * 最後還要加上一個步驟：使用 $\mathrm{swap}\ \mathrm{gates}$ 翻轉 qubit 的順序。
            $$
            \dfrac{1}{2^{n/2}} (|0\rangle + \mathrm{e}^{2 \pi i (0.j_0)_2}|1\rangle) (|0\rangle + \mathrm{e}^{2 \pi i (0.j_0 j_1)_2}|1\rangle) \cdots (|0\rangle + \mathrm{e}^{2 \pi i (0.j_{n-2} \cdots j_1 j_0)_2}|1\rangle)
            $$
            ![](https://i.imgur.com/m16HMb2.png =150x)
    :::info
    從這邊也可推論出：
    因為所有組成 QFT 的 quantum gates 都是 unitary，
    因此 QFT 也一定是 unitary。
    :::
* 計算 gates 的使用數量：
    ![](https://i.imgur.com/XqLKJsk.png)
    * 還有最後的 $\mathrm{swap}\ \mathrm{gates}$：$\dfrac{n}{2}$ ($n$ 為偶數) 或 $\dfrac{n-1}{2}$ ($n$ 為奇數)。
    * 因此 QFT 需要 $O(n^2)$ 個 gates。
    * 而 classical FFT 需要 $O(n 2^n)$ (exponential in n) 的運算複雜度。
* 但使用 QFT 有實際面的困難：無法直接測量輸出的振幅 (cannot measure output amplitudes directly)。

### Inverse discrete Fourier transform

#### 簡單地回顧 Fourier transformation
* 定義：$F_N: \mathbb{C}^N \to \mathbb{C}^N$, $F_N(x) = y$
    $$
    y_k = \dfrac{1}{\sqrt{N}} \sum_{j=0}^{N-1} x_j \mathrm{e}^{2 \pi i j k / N}
    \ \ \ \ \ \ \ \ \ \ 
    \forall\ k= 0, \cdots, N-1
    $$
* 圖解 1：
    向量 $x$ 為週期函數 (例如音訊) $f:[0,1] \to \mathbb{C}$ 的離散化。
    ![](https://i.imgur.com/jrnjgie.png)
* 圖解 2：
    因為 $f$ 是週期函數，因此 Fourier analysis 可以將 $f$ 分解成許多不同頻率之振盪 (oscillations) 的總和。
    ![](https://i.imgur.com/Eot0U5A.png)
* 圖解 2 可以寫成以下公式：
    $\mathrm{e}^{-2 \pi i k t}$ 為一頻率為 $2 \pi k$ 的「oscillations」，$y_k$ 則是相對應的振幅 (amplitude)。
    $$
    f(t) = \sum_{k=-\infty}^{\infty} y_k \mathrm{e}^{-2 \pi i k t}
    $$
    但如果我們考慮「離散的」Discrete Fourier transform $F_N$，我們只要有限的「點」：$0, \frac{1}{N}, \cdots, \frac{N-1}{N}$ 便可以組合回原來的週期函數 $f$。

#### 進入正題：Inverse discrete Fourier transform
* 首先，**discrete Fourier transform** $F_N$ 是 **unitary transformation**，因此 $F_N^{-1} = F^{\dagger}$。
* 接下來我們可以想像所有的「**Fourier modes**」$(\frac{1}{\sqrt{N}} \mathrm{e}^{-2 \pi i j k / N})_{j=0,\cdots,N-1}$ 互為單位正交 (orthonormal)：
    $$
    \Bigg \langle 
    \begin{pmatrix} 
    \frac{1}{\sqrt{N}} \mathrm{e}^{-2 \pi i (0) \cdot k^{\prime} / N} \\ 
    \frac{1}{\sqrt{N}} \mathrm{e}^{-2 \pi i (1) \cdot k^{\prime} / N} \\
    \vdots \\
    \frac{1}{\sqrt{N}} \mathrm{e}^{-2 \pi i (N-1) \cdot k^{\prime} / N}
    \end{pmatrix} 
    \Bigg | 
    \begin{pmatrix} 
    \frac{1}{\sqrt{N}} \mathrm{e}^{-2 \pi i (0) \cdot k / N} \\ 
    \frac{1}{\sqrt{N}} \mathrm{e}^{-2 \pi i (1) \cdot k / N} \\
    \vdots \\
    \frac{1}{\sqrt{N}} \mathrm{e}^{-2 \pi i (N-1) \cdot k / N}
    \end{pmatrix} 
    \Bigg \rangle = \dfrac{1}{N} \sum_{j=0}^{N-1} \mathrm{e}^{2 \pi i (k^{\prime} - k) / N} = 
    \delta_{k,k^{\prime}}
    $$
    其中任意 $k, k^{\prime} \in \begin{Bmatrix} 0, \cdots, N-1 \end{Bmatrix}$。
* 因此，Inverse discrete Fourier transform 公式可以寫作如下：
    $$
        f(\frac{j}{N}) = x_j = \dfrac{1}{\sqrt{N}} \sum_{k=0}^{N-1} y_k \mathrm{e}^{-2 \pi i j k / N}
    $$
    而 $x$ 與 $y$ 之關係如下：
    $$
    x \mathrel{\mathop{\rightleftarrows}^{F_N}_{F_N^{-1}}} y
    $$

## 5.2 Phase estimation
* 許多量子演算法 (**quantum algorithms**) 的輔助步驟 (**auxiliary step**)。
* 前置步驟 (setup)：
    * 么正算子 (**unitary operator**) $U$、特徵向量 (**eigenvector**) $|u\rangle$、特徵值 (**eigenvalue**) $\mathrm{e}^{2\pi i \varphi}$，且不失一般性假設 $0 \le \varphi \le 1$ (without loss of generality)：
        $$
        U |u\rangle = \mathrm{e}^{2\pi i \varphi} |u\rangle
        $$
* 目標：求 $\varphi$。
* 圖示：Schematic of overall algorithm
    ![](https://i.imgur.com/2JnZtmL.png =400x)

### First stage
* 假設有一 **oracle** (black box) 可以準備好 $|u\rangle$ (第 $2$ 個 quantum register)，並對所有 $j \in \mathbb{N}$ (第 $1$ 個 quantum register) 執行 $\mathrm{controlled}\ U^{2^{j}}\ \mathrm{operations}$。
    $$
    U^{2^{j}} |u]rangle = \underbrace{U \cdots U}_{2^{j} \ \mathrm{times}} |u\rangle = \mathrm{e}^{2\pi i 2^{j} \varphi} |u\rangle
    $$
* 圖式：
    ![](https://i.imgur.com/ggtcPeH.png)
* 講解：
    * **第 $2$ 個 register** 永遠保持在 $|u\rangle$ 的 eigenstate。
    * 將 $U$ 的運算以 **eigenvalue** 的形式施加到**第 $1$ 個 register** 上：
        $$
        \begin{eqnarray*}
        |\chi_1\rangle = &&
        \dfrac{1}{2^{t/2}}(|0\rangle + \mathrm{e}^{2\pi i 2^{t-1} \varphi} |1\rangle) \otimes \cdots \otimes 
        (|0\rangle + \mathrm{e}^{2\pi i 2^{1} \varphi} |1\rangle) \otimes 
        (|0\rangle + \mathrm{e}^{2\pi i 2^{0} \varphi} |1\rangle) \\ = && 
        \dfrac{1}{2^{t/2}} \sum_{k=0}^{2^{t}-1} \mathrm{e}^{2\pi i \varphi k} |k\rangle
        \end{eqnarray*}
        $$

### Second stage
* 目標：對**第 $1$ 個 register** 做 **inverse Fourier transform**。
    (例如：反轉正向傅立葉變換的電路，並 taking the adjoint of all gates)
* 講解：
    * 回顧 QFT 公式：$| j \rangle \mapsto \dfrac{1}{\sqrt{N}} \sum_{k=0}^{N-1} \mathrm{e}^{2 \pi i j k / N} | k \rangle$，且 $N = 2^t$。
    * 如果我們把上述 **First stage 結果**的 $\varphi$ 定義成 $\frac{j}{2^t}$ ($j \in \begin{Bmatrix} 0,1,\cdots,2^t-1 \end{Bmatrix}$)，那麼 $\varphi$ 就可以用 $t$ 個 bits 表示成 $0.\varphi_{t-1} \cdots \varphi_1 \varphi_0$。
    * 再對此 $|\varphi_{t-1} \cdots \varphi_1 \varphi_0 \rangle$ 做 **inverse Fourier transform** 就可以求得 $\varphi$！
        $$
        \begin{eqnarray*}
        |\chi_2\rangle := &&
        F_{2^{t}}^{-1} |\chi_1\rangle = 
        \dfrac{1}{2^{t/2}} \sum_{k, l=0}^{2^{t-1}} \mathrm{e}^{-2\pi i k l/2^{t}} \mathrm{e}^{2\pi i \varphi k} |l\rangle \\ = &&
        \sum_{l=0}^{2^{t-1}} \underbrace{\dfrac{1}{2^{t}} \sum_{k=0}^{2^{t-1}} \mathrm{e}^{2\pi i (\varphi - l/2^{t}) k} |l\rangle}_{=:a_l} \\ = &&
        \sum_{l=0}^{2^{t-1}} a_l |l\rangle
        \end{eqnarray*}
        $$
* 範例：
    * 上述公式可畫成下圖，我們可以看到其中 $l = 5$ 的時候機率最高，而鄰近的 $2^{t} \varphi$ 即是我們要求的結果：
    ![](https://i.imgur.com/h9pq65g.png =400x)
    * 令 $l = b$ 為機率最高的結果，而 $b \in \begin{Bmatrix} 0,1,\cdots, 2^t-1 \end{Bmatrix}$，因此：
        $$
        \dfrac{b}{2^t} = 0.b_{t-1}\cdots b_1b_0 \le \varphi
        $$
        假設 $t=3$ 而 $b=5$，則 $\dfrac{5}{2^3} =0.625 \le\varphi = 0.65$。
        
### 誤差 (deviation) 的計算：
* 如果 $\delta := \varphi - \frac{b}{2^t}$ 且滿足 $0 \le \delta \le 2^{-t}$，則下述公式成立：
    $$
    \mathbb{P}(|m-b| > e_{\mathrm{tol}}) \le \dfrac{1}{2(e_{\mathrm{tol}}-1)}
    $$
    其中 $m$ 為最終量測的結果，$e_{\mathrm{tol}} \in \mathbb{N}$ 為誤差的容忍值 (deviation tolerance)。
    白話的講：誤差 $|m-b|$ 愈高的情況愈不可能發生。
    ![](https://i.imgur.com/PIPNEkz.png =250x)
* 假設我們需要 $2^{-n}$ ($n$ 個 bits) 的精準度，那必須令 $e_{\mathrm{tol}} = 2^{t-n}-1$，其中 $t=n+p$ 為第 $1$ 個 register 的 qubit 數量：
    $$
    \mathbb{P}(|m-b| \le e_{\mathrm{tol}}) = 
    1 - \mathbb{P}(|m-b| > e_{\mathrm{tol}})
    \ge 
    1 - \dfrac{1}{2(e_{\mathrm{tol}}-1)} = 
    1 - \dfrac{1}{\underbrace{2(2^p-2)}_{=:\epsilon}} = 
    1 - \epsilon
    $$
* 解上述公式的 $p$：
    $$
    \begin{eqnarray*} 2\epsilon = \dfrac{1}{2^p-2}
    \iff && 2^p = 2 + \dfrac{1}{2\epsilon} \\
    \iff && p = \log_2 (2+\dfrac{1}{2\epsilon})
    \end{eqnarray*}
    $$
* 最後可以歸納，如欲在至少 $1-\epsilon$ 的機率下，求得精確度為 $n$ bits 的 $\varphi$，第 $1$ 個 register 的 bit 數量：
    $$
    t = n + \Bigg\lceil \log_2 \Bigg( 2 + \dfrac{1}{2\epsilon} \Bigg) \Bigg\rceil
    $$

### 演算法總結：quantum phase estimation
* 輸入：
    * **整數 $j$**，一黑盒子會對其做 $\mathrm{controlled}\ U^{2^{j}}\ \mathrm{operations}$。
    * **eigenstate $|u\rangle$** ($U$ 的特徵向量，且特徵值為 $\mathrm{e}^{2\pi i \varphi}$)。
    * **$t$ 個用來初始化的 qubits $|0\rangle$** ($t = n + \lceil \log_2 ( 2 + \frac{1}{2\epsilon} ) \rceil$)，如此保證 $2^{-n}$ 的精確度以及 $1 - \epsilon$ 的成功機率。
* 輸出：
    * **n-bit 的 $\widetilde{\varphi}$** (近似於 $\varphi$)。
* 步驟：
    1. initial state
        $$
        |0\rangle|u\rangle
        $$
    1. create superposition (Hadamard gates)
        $$
        \mapsto \dfrac{1}{\sqrt{2^t}} \sum_{j=0}^{2^t-1}|j\rangle|u\rangle
        $$
    1. apply black box
        $$
        \mapsto \dfrac{1}{\sqrt{2^t}} \sum_{j=0}^{2^t-1}|j\rangle (U^j|u\rangle) = \dfrac{1}{\sqrt{2^t}} \sum_{j=0}^{2^t-1} \mathrm{e}^{2\pi i j \varphi} |j\rangle |u\rangle
        $$
    1. inverse Fourier transform
        $$
        \mapsto \chi_2 |u\rangle
        $$
    1. measure first register
        $$
        \mapsto |\widetilde{\varphi}\rangle
        $$

:::info
**Phase Estimation Algorithm 也可以使用於沒有 eigenstate $|u\rangle$ of $U$ 的狀態下：**

假設我們準備一 general state $|\psi\rangle$，
而 $|\psi\rangle$ 可以寫成 eigenstate $(|u_k\rangle)_k$ of $U$ 的線性組合：
$$
|\psi\rangle = \sum_k c_k |u_k\rangle
$$
令 $|u_k\rangle$ 的 eigenvalue 為 $\mathrm{e}^{2\pi i (\varphi_k)}$，則 Algorithm 最後的輸出結果為：
$$
\sum_k c_k |\chi_{2,k}\rangle |u_k\rangle
$$
其中近似結果 $\varphi_k$ 的 computational basis states $|u_k\rangle$ 上有著最大的權重 $|\chi_{2,k}\rangle$，
量測結果 $\widetilde{\varphi}_k$ 有著 $2^{-n}$ 的精確度以及 $|c_k|^2 (1 - \epsilon)$ 的成功機率逼近 $\varphi_k$。
:::

## 5.3 Applications: order-finding and factoring
* Order-finding problem 與 factoring problem 是等價的，因此能延伸 order-finding problem 的演算法以解出 factoring problem。

### 5.3.1 Order-finding (階數搜尋)
* 介紹：
    * 正整數 $x<N$ 且 $x$ 與 $N$ 互質 ($\gcd(x,N)=1$)。
    * **Order** of $x$ modulo $N$：必有最小的正整數 $r$ 滿足：
        $$
        x^r=1 \mod N
        $$
    * 此階數 (order) $r$ 為函數 $f:a\mapsto x^a$ 的週期 (period)：
        $$
        f(a+r) = f(a)
        $$
* 前置作業：
    * 正整數 $N$ 需要 $L$ 個 bit 來表示：
        $$
        L = \big\lceil\log_2(N)\big\rceil
        $$
        :::info
        目前沒有任何已知的 order-finding 經典演算法 (classical algorithm) 可於 $L$ 的多項式時間內完成 (runtime polynomial in $L$)。
        :::
    * 么正算子 $U$ (對 L 個 qubits 進行運算)：
        $$
        U|y\rangle = 
        \begin{cases}
        |x \cdot y\rangle, & 0 \le y < N \\
        |y\rangle, &  N \le y < 2^L\\
        \end{cases}
        $$
        其中只有第一條 $0 \le y < N$ 條件下的計算會用到。
        計算範例如下：($|5\rangle$ 可以表示成 $|0101_2\rangle\equiv |0\rangle|1\rangle|0\rangle|1\rangle$)
        $$
        U|5\rangle = 
        | 7 \cdot 5 \mod 12 \rangle = 
        | 35 \mod 12 \rangle = 
        | 11 \rangle
        $$
        :::info
        $\mbox{controlled-}U^j\mbox{ operation}$ 可以藉由「**modular exponentiation**」實現，而這**需要 $O(L^3)$ 的 gates**。
        :::
    * $x$ 與 $N$ 必須互質，以保證 $x$ 必定有乘法反元素 $\widetilde{x}$：
        $$
        x \widetilde{x} = 1 \mod N
        $$
* 原理：
    * 首先，因為 $r$ 為 $x\mod N$ 的階數，因此我們可以定義 $|u_s\rangle$ 如下：
        $$
        \begin{align}
        & |u_s\rangle = \dfrac{1}{\sqrt{r}} \sum_{k=0}^{r-1} \mathrm{e}^{-2 \pi i s k / r} \,|\, x^k \mod N \rangle \\ 
        & \mbox{for }s = 0,1,\cdots,r-1
        \end{align}
        $$
        我們可以看到，$r$ 在上述公式中扮演著「**週期 (period)**」的角色，$x^k$ 最多就到 $x^{r-1}$。
    * 接下來，證明 $|u_s\rangle$ 為 $U$ 的 eigenstate，且有著 eigenvalue $\mathrm{e}^{-2 \pi i s / r}$：
        $$
        \begin{eqnarray*}
        U|u_s\rangle = && \dfrac{1}{\sqrt{r}} \sum_{k=0}^{r-1} \mathrm{e}^{-2 \pi i s k / r} \,|\, x^{k+1} \mod N \rangle \\
        = && \dfrac{1}{\sqrt{r}} \sum_{k=0}^{r-1} \mathrm{e}^{2 \pi i s / r} \mathrm{e}^{-2 \pi i s (k+1) / r} \,|\, x^{k+1} \mod N \rangle \\
        = && \mathrm{e}^{2 \pi i s / r} \Bigg( \dfrac{1}{\sqrt{r}} \sum_{k=0}^{r-1} \mathrm{e}^{-2 \pi i s (k+1) / r} \,|\, x^{k+1} \mod N \rangle \Bigg) \\
        = && \mathrm{e}^{2 \pi i s / r} |u_s\rangle
        \end{eqnarray*}
        $$
        上述 $\Bigg( \dfrac{1}{\sqrt{r}} \sum_{k=0}^{r-1} \mathrm{e}^{-2 \pi i s (k+1) / r} \,|\, x^{k+1} \mod N \rangle \Bigg)$ 為週期函數，因此 $x$ 的指數變成 $k+1$ 並不會影響結果，仍為 $|u_s\rangle$。
    * 最後，對 $\mathrm{e}^{2 \pi i s / r} |u_s\rangle$ 進行 **Phase Estimation**，便能獲得 $\frac{s}{r}$。
* 上述原理的**實作問題**：
    :::danger
    準備 $|u_s\rangle$ 居然需要先知道我們想要計算的 $r$！
    :::
* 解決方案 (參考 Exercise 10.2(a))：
    :::success
    使用疊加態 (superposition) 作為 initial state $|u_s\rangle$：
    $$
    \dfrac{1}{\sqrt{r}} \sum_{s=0}^{r-1} |u_s\rangle = |1\rangle
    $$
    然後於 $|1\rangle$ 做 $U^j$ 運算 ($j$ 個 $U \mbox{ gates}$)：
    $$
    \begin{eqnarray*}
    U^j |1\rangle 
    = && U^{j-1} \,|\,x \cdot 1 \mod N\rangle \\
    = && U^{j-2} \,|\,x \cdot x \cdot 1 \mod N\rangle \\
    = && \cdots \\
    = && |\,x^j \mod N\rangle \\
    \end{eqnarray*}
    $$
    :::
* 圖示：schematic overview
    ![](https://i.imgur.com/nyxh3Vn.png =500x)
    * **$t$ 個 qubits** 如同 phase estimaiton 章節所述：
        $$
        t = n + \Bigg\lceil \log_2 \Bigg( 2 + \dfrac{1}{2\epsilon} \Bigg) \Bigg\rceil
        $$
    * 輸出結果：$\widetilde{\varphi} = \frac{s}{r}$。
    * 精確度：$n$ 個 qubits。
    * 正確機率：$(1-\epsilon)/r$
        * 會需要除以 $r$ 是因為 $|u_s\rangle$ 的 superposition 狀態：
            $$
            \dfrac{1}{\sqrt{r}} \sum_{s=0}^{r-1} |u_s\rangle = |1\rangle
            $$
    * 使用 $\mbox{continued fractions algorithm}$ 來計算 $s$ 與 $r$，這需要 $n=2L+1$ 的精確度。
        * 關於「[連分數](https://zh.wikipedia.org/wiki/%E8%BF%9E%E5%88%86%E6%95%B0) ([Continued fraction](https://en.wikipedia.org/wiki/Continued_fraction))」。
    * 如果 $s$ 與 $r$ 有公因數 (common factor)，那麼此 algorithm 會**輸出約分的結果** $\frac{s^{\prime}}{r^{\prime}}$。解決這個問題的辦法就是**重複運行此 algorithm**，那麼便會得到 $(s_1^{\prime}, r_1^{\prime})$ 與 $(s_2^{\prime}, r_2^{\prime})$，此時計算 $r_1^{\prime}$ 與 $r_2^{\prime}$ 的**最小公倍數 (least common multiple)** 即可獲得 $r$。

### 5.3.2 Factoring (Prime Factorization，質因數分解)

#### Prime factorization Definition
* 命題：given a composite integer $N$, what are the **prime numbers** which – when multiplied together – equal $N$?
* 目標：try to find a **non-trivial factor** of $N$.
* 策略：根據以下兩點觀察，可以將 **`factoring 問題`** reduce 成 **`order-finding 問題`**。
    1. 找到一個 **non-trivial ($x \ne \pm 1 \mod N$) solution $x$** 滿足：
        $x^2 =1 \mod N$，
        那便能以此計算 **non-trivial factor of $N$**。
    2. 一個隨機選擇，並且與 $N$ **互質**的 $y$ (意即 $\gcd(y,N)=1$)，「很有可能」：
        * 擁有**偶數的階數 (order) $r$**。
        * $y^{\frac{r}{2}} \ne \pm 1 \mod N$。
        因此，令結果 $x=y^{\frac{r}{2}}$ 便可以輸出至第 1 個觀察以計算 factor。

#### Theorem 1. 
* 假設：
    * $N$ 是長度為 $L$ 個 bits 的合數 (composite number)。
    * $x$ 為滿足 $x^2 =1 \mod N$ 的非凡解。
* 發現：
    * $x=1 \mod N$ 或 $x=N-1=-1 \mod N$。
    * 因此，至少 $\gcd(x-1,N)$ 與 $\gcd(x+1,N)$ 其中一個是 $N$ 的非凡因數解 (non-trivial factor)。
    * 計算複雜度：$O(L^3)$
* 證明：
    * 因為 $x^2=1 \mod N$，因此 $N$ 必須整除 $x^2-1$，也就是 $(x+1)(x-1)$。
    * 由上可知，$N$ 一定至少與 $(x+1)$ 或 $(x-1)$ 有公因數。
    * 根據假設，$x+1<N$，因此 $x-1<N$。也就是說，公因數不可能是 $N$ 本身。
    * 最後使用 Euclid’s algorithm，可以藉由計算 $\gcd(x-1,N)$ 與 $\gcd(x+1,N)$ 來獲得 $N$ 的非凡因數解。
 
#### Theorem 2.
* 假設：
    * $N = p_1^{\alpha_1} \cdots p_m^{\alpha_m}$ 為一個奇合數 (odd composite integer)的質因數分解 (prime factorization)。
    * $x$ 為一個隨機挑選的整數，與 $N$ 互質且 $1 \le x \le N-1$。
    * $r$ 為 $x$ modulo $N$ 的階數 (order)。
* 發現：
    * $\mathbb{P}(\mbox{r is even and }x^{r/2} \ne -1 \mod N) \ge 1 - \dfrac{1}{2^m}$
    * 假設 $m=2$，$r$ 為偶數的機率就是 $0.75$，如此便可以塞到 Theorem 1. 計算質因數分解。
* 證明：
    * 從略。
    * Nielsen and Chuang 2010, appendix A4.3.
 
#### Algorithm:  reduction of factoring to order-finding
* 輸入：
    * Composite integer $N$
* 輸出：
    * Non-trivial factor of $N$
* 執行時間：
    * $O(\log_2(N)^3)$ 個指令 (operations)
* 成功機率：
    * $O(1)$ (失敗就再跑一次的意思)
* 步驟：
    1. 當 $N$ 為偶數時，回傳**因數 $2$**。
    2. 使用經典演算法 (classical  algorithm) 檢查是否有整數 $a \ge 1$ 與 $b \ge 2$ 滿足 $N=a^b$，有的話回傳**因數 $a$**。
    3. 隨機選擇整數 $x$ 滿足 $1 \le x \le N-1$，如果 $\gcd(x,N) > 1$，回傳**因數 $\gcd(x,N) > 1$**。
    4. 使用 order-finding subroutine 找到 $x$ modulo $N$ 的階數 $r$。
    5. 如果階數 $r$ 為「偶數」且「$x^{r/2} \ne -1 \mod N$」，便可以計算 $\gcd(x^{r/2}-1,N)$ 與 $\gcd(x^{r/2}+1,N)$，而其中之一必定是 non-trivial factor，驗證完成後回傳此**因數**。
        如果 $r$ 不是「偶數」或「$x^{r/2} = -1 \mod N$」，則此步驟失敗，再從第 3 步驟重新開始。
:::info
* 第 2 步驟的檢查確保了第 5 步驟滿足 Theorem 2 的 $m \ge 2$。
* 第 3 步驟在 $\gcd(x,N) > 1$ 的條件下，直接迅速地回傳因數結果 (fast  return)。這是為了確保第 4、5 步驟可計算滿足 Theorem 2 的「$x$ 互質於 $N$」。
* 只有第 4 步驟中的 order-finding subroutine 是「困難的」。
    * 至目前為止還沒有 classical algorithm 可以以 $\log_2(N)$ 的多項式時間完成。
    * 所以這邊必須使用量子運算的 order-finding！
:::

#### 參考資料
* [離散對數 - 維基百科，自由的百科全書](https://zh.wikipedia.org/wiki/%E7%A6%BB%E6%95%A3%E5%AF%B9%E6%95%B0)