# 量子傅立葉轉換 ## 傅立葉轉換(FT)是甚麼? 大致來說,任一個函數可以用數個週期函數(正弦波,餘弦波等)的線性組合來逼近。基於這個理念,傅立葉轉換可以**將一個看似毫無規律的波,轉換成它是由哪些週期函數組合而成**。 >[簡易理解傅立葉轉換](https://youtu.be/spUNpyF58BY?si=AqrYefY1PmMR-aWV) 而 FT 可運用於各種領域,以下是一些常見的操作 1. 音頻信號處理: 在音頻處理中,傅立葉變換用於分析音頻信號的頻譜,從而進行噪聲消除、音效增強等操作。 2. 圖像處理: 傅立葉變換可用於圖像的頻率分析,實現濾波、邊緣檢測等功能。 3. 振動分析: 在機械工程中,傅立葉變換用於分析機械振動的頻率成分,從而診斷設備故障。 4. 通信系統: 在通信領域,傅立葉變換用於調製和解調制信號,分析頻譜效率,設計濾波器等。 5. 量子物理: 傅立葉變換在量子力學中用於解決薛定諤方程,分析粒子的波函數等。 ![FFT-Time-Frequency-View-540](https://hackmd.io/_uploads/H1NxDd22A.png) ## 離散傅立葉變換(DFT) ### 概述 離散傅立葉變換(Discrete Fourier Transform,俗稱DFT)將離散信號從**時間域轉換至頻率域**,能夠將複雜的時域訊號分解成不同頻率的成分。這在分析信號的頻率特徵時非常有用。 ### 性質和應用 - 週期性:DFT 的頻譜圖具有週期性。 - 頻率分辨率:DFT 的頻率分辨率為 T (時間週期)的倒數 - 應用:音訊分析、濾波器設計、壓縮和圖像處理等 ### 推導 離散傅立葉變換 X[k] 的公式為: $$ X[k] = \sum_{n=0}^{N-1} x[n] e^\frac{-i2\pi kn}{N} , \ \ k = 0,1,2,...,N-1 $$ 其中 𝑋[𝑘]表示頻率索引為 k 的頻譜成分, $$e^\frac{-i2\pi kn}{N}$$ 是 DFT 的基函數。 ### 基函數 DFT的基函數部分由歐拉公式展開得到 $$e^\frac{-i2\pi kn}{N} = (\frac{2\pi kn}{N}) - i \ sin(\frac{2\pi kn}{N})$$ 引此可發現基函數是由兩個正弦波跟餘弦波組成 ## 量子傅立葉轉換又是甚麼? 量子傅立葉轉換(quantum Fourier transform,俗稱QFT),可大致將其視為量子狀態下的經典離散傅立葉變換(Discrete Fourier Transform,俗稱DFT),能快速找到資料週期,並且==隨著位元增加,運算速度以指數成長==。 ## QFT的目標 大致來說 QFT 的目標是調整相位,使不同的量子態可以產生區別,這與經典傅立葉變換中的時域到頻域轉換相似,而實際的目標則有以下四點。 1. 估計相位:將疊加態轉換為相位表示,這在周期性問題中特別有用,例如:Shor’s 算法利用 QFT 來識別週期,進行因數分解。 2. 數據壓縮與疊加態轉換:QFT 可以壓縮計算基態中的所有可能態並轉換為傅立葉表示,從而提高處理疊加信息的效率。 3. 增強量子干涉與測量:QFT 強化量子干涉,幫助精確估計疊加態中的相位信息。 ## QFT用武之地 - 上述所提及的**Shor's algorithm**:用於因數分解,QFT 幫助識別週期,進而進行質因數分解。 - **量子相位估計**(quantum Phase Estimation,俗稱QPE):其目標是找出一個特徵向量∣ψ⟩所對應的特徵值中的相位部分,也就是與三軸的夾角𝜃。 - **密碼分析與破解**:QFT 被用於加速經典密碼學問題的解決,特別是在涉及模運算的問題中。 總而言之,QFT 的目標是將量子態轉換到傅立葉的頻域空間中,幫助**處理和估計疊加態中的相位信息**。 ## QFT的概述 ### QFT的表示方式 $$\text{QFT}|{j}\rangle = \frac{1}{\sqrt{2^n}} \sum_{k=0}^{2^n-1} e^{\frac{2\pi i jk}{2^n}} |{k}\rangle$$ >|j⟩為一量子態,n是電路中量子位元 >相對於QFT,IQFT可進行反向的操作 ### 舉2位元電路為例 在電路含有2個量子位元的情況下,以**數學式**表示為 $$\text{QFT}_2|{\psi}⟩=\frac{1}{2}\sum_{k=0}^{3}e^{\frac{2\pi i jk}{4}} |{k}⟩$$ **矩陣型態**則是 $$\text{QFT}_2|{\psi}⟩=\frac{1}{2}\left[ \begin{array}{cccc} 1 & 1 & 1 & 1 \\ 1 & i & -1 & -i\\ 1 & -1 & 1 & -1\\ 1 & -i & -1 & i \\ \end{array} \right]$$ ### 不同數字在2位元電路下的意義 首先先布置一個複數平面 ![螢幕擷取畫面_20240828_043027](https://hackmd.io/_uploads/H1Mrlv2iC.png) 現在我們可以將==數字看為逆時針繞園的速度==,舉例來說 - 若輸入0,也就是00,則從1開始每次行進2π*0/4: 順序為**1,1,1,1**,也就是矩陣的第一列 - 若輸入1,也就是01,則從1開始每次行進2π*1/4: 順序為**1,i,-1,-i**,也就是矩陣的第二列 - 若輸入2,也就是10,則從1開始每次行進2π*2/4: 順序為**1,-1,1,-1**,也就是矩陣的第三列 - 若輸入3,也就是11,則從1開始每次行進2π*3/4: 順序為**1,-i,-1,i**,也就是矩陣的第四列 ==可以發現,不同數字每次旋轉都角度都取決於這個部分,而**k就正好代表了不同的數字**== ![螢幕擷取畫面_20240828_044427](https://hackmd.io/_uploads/HkSI4DhiR.png) ### 以布洛赫球表示3位元下的量子電路 **拿5來當作例子,也就是101** 在還未產生疊加態時,如果將三個位元分開表示,則第二顆球的狀態會向下指向|1⟩,其餘兩顆則向上指向|0⟩。 產生疊加態後,因同時處在|0⟩和|1⟩的疊加態,則會處於球體的中心水平面,並且如下呈現 ![螢幕擷取畫面_20240828_084631](https://hackmd.io/_uploads/B1RBn9hiC.png) 箭頭所指的方位,就如同前一節所說 - 首先看到最左邊的Bloch Sphere,因為是第一個位元,因此只會處在|+⟩或|-⟩的狀態,而從|+⟩開始每次逆時針移動2π/2,最後抵達|-⟩ - 接著是中間的,第二個位元有2^2種狀態,因此每次逆時針移動2π/4,抵達|i⟩ - 最後是右邊的球,擁有2^3共8種狀愛,每次逆時針移動2π/8,經過五次到達|-i⟩與|-⟩之間 **以數學式表達** \begin{aligned} QFT|x\rangle &= \frac{1}{\sqrt{2^n}} \sum_{y=0}^{2^n - 1} \exp\left(i 2 \pi x y / 2^n \right) |y\rangle \\ &= \frac{1}{\sqrt{2^n}} \left( |0\rangle + e^{i \frac{2 \pi}{2} x} |1\rangle \right) \otimes \left( |0\rangle + e^{i \frac{2 \pi}{2^2} x} |1\rangle \right) \otimes \cdots \\ &\otimes \left( |0\rangle + e^{i \frac{2 \pi}{2^{n-1}} x} |1\rangle \right) \otimes \left( |0\rangle + e^{i \frac{2 \pi}{2^n} x} |1\rangle \right) \end{aligned} 若以上方3位元下的5為例,則 $$\text{QFT}\ket{101} = \frac{1}{\sqrt{2}} \left( \ket{0} + e^{i\pi}\ket{1} \right) \frac{1}{\sqrt{2}} \left( \ket{0} + e^{i \frac{\pi}{2}}\ket{1} \right) \frac{1}{\sqrt{2}} \left( \ket{0} + e^{i \frac{5\pi}{4}}\ket{1} \right)$$ ## QFT電路 ### QFT電路會使用到的gate 1. Hadamard 閘 (H-gate): - 對每個量子位進行初步的變換,使得其進入均勻的疊加態。 - 數學形式為: $$H = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}$$ - 效果: $$ \begin{split}\begin{multline*} H\ket{0} \Rightarrow\frac{1}{\sqrt{2}} \left( \ket{0} + \ket{1} \right) \\ H\ket{1} \Rightarrow\frac{1}{\sqrt{2}} \left( \ket{0} - \ket{1} \right) \end{multline*}\end{split}$$ 2. 控制旋轉閘 (Controlled Phase Rotation Gate,R_k): - 這是 QFT 中的核心操作,控制的旋轉角度取決參數k,即旋轉2π/2^k - 數學形式為: $$R_k = \begin{pmatrix} 1 & 0 \\ 0 & e^{2 \pi i/2^k} \end{pmatrix}$$ - 效果: $$ \begin{split}\begin{multline*} R_k \ket{0} \Rightarrow\ket{0} \\ R_k\ket{1} \Rightarrow e^{\frac{2\pi i}{2^k}}\ket{1}\end{multline*}\end{split}$$ 3. 交換閘 (Swap Gate): - 最後一步會用到交換閘來反轉量子位的順序。這是因為 QFT 的輸出通常 會顛倒排列。 $$Swap = \begin{pmatrix} 1 & 0 & 0 & 0\\ 0 & 0 & 1 & 0\\0 & 1 & 0 & 0 \\0 & 0 & 0 & 1 \end{pmatrix}$$ ### QFT電路架設 ![d326b0737d7192836d298812b4513b72](https://hackmd.io/_uploads/B16jhd2hC.png) **在量子電路中,QFT電路是由一系列的 H-gate 和旋轉閘組成。** #### 概述 QFT電路首先對每一個量子位施加 H-gate 來產生疊加態,然後透過旋轉閘進行相位操作。最終,QFT 的電路會進行量子位交換來修正排列順序,從而得到正確的傅立葉變換結果。 #### 步驟 1. 對第一位元施加H-gate產生疊加態 2. 如圖,施加多個**控制旋轉閘**,而分別由第二至第n的位元操控控制 3. 對第二位元施加H-gate產生疊加態 4. 施加多個**控制旋轉閘**,而分別由第三至第n的位元操控控制 5. 重複上述直到第n個位元施加H-gate(無須控制旋轉閘) 6. 在第1及n位元放上交換閘,第二及第n-1,以此類推(此步驟不一定需要做) ### 電路推導 #### 二進位制小數點 在下文表示量子態中會用到二進位制,因此這邊以一個簡陋的轉換公式帶過 $$ \begin{aligned} 0.x_1x_2x_3… &= \frac{x_1}{2} + \frac{x_2}{4} + \frac{x_3}{8}+…\\二進位制 &\Rightarrow 分數 \end{aligned}$$ #### 這邊以進行最多次旋轉的第1個位元為例 1. 首先經過H-gate後,狀態變成 $$\left\{ \begin{array}{ll} \frac{1}{\sqrt{2}} (|0\rangle + |1\rangle) & (j_{1} = 0) \\ \frac{1}{\sqrt{2}} (|0\rangle - |1\rangle) & (j_{1} = 1) \end{array} \right.$$ 而這種不確定的量子態也可以這樣表達 $$ \frac{1}{\sqrt{2}} (|0\rangle + e^{2 \pi i 0.j_1}|1\rangle)$$ >歐拉恆等式:e^πi = -1 >這裡的小數點是二進位的小數點:若j=0則帶入的0.0即為10進位的0,而j=1得出的0.1是為10進位的1/2。 **以結果論來說,其實就是把 j 放在二進位的小數點後的第一位**0 2. 接著經過第一個旋轉受控閘(以第二位元控制) 如果第二位元為0,旋轉控制閘就不會作用於第一位元;但當第二位原為1,第一位元的量子態就會旋轉2π/2^k度,而第二位元的k就等於2,因此是2π/4度。 若是把量子態以二進位表達則如下: $$ \frac{1}{\sqrt{2}} (|0\rangle + e^{2 \pi i 0.j_1 j_2}|1\rangle)$$ 3. 接下來所有的受控選轉閘如上處理之後會變成 $$ \frac{1}{\sqrt{2}} (|0\rangle + e^{2 \pi i 0.j_1 j_2 j _3…j_n}|1\rangle)$$ 4. 接下來所有位元都重複上述1~3步驟後就得到了最後輸出的結果 :::spoiler **二進位說明** 二進位制的小數點後面的部分。類似於十進位制的小數點後面代表分數(如10^-1, 10^-2),二進位制的小數點後面也是依照2的負次方來進行表示。具體來說: - 小數點後的第一位:代表2^-1(1/2) - 小數點後的第二位:代表2^-2(1/4) - 小數點後的第三位:代表2^-3(1/8) 例如,二進位數字 `0.101` 可表示為: - \( 1 * 2^{-1} + 0 * 2^{-2} + 1 * 2^{-3} \) - \( = 1/2 + 0/4 + 1/8 \) - \( = 0.5 + 0 + 0.125 \) - \( = 0.625 \) (十進位制) 換句話說,二進位制的小數點後面的部分,就是通過將各位的數值乘以相應的2的負次方來表示的。 ::: --- # 量子相位估計 **量子相位估計**(**Quantum Phase Estimation, QPE**)是一種量子算法,這個算法結合了 **量子傅立葉變換和疊加原理** ,用來估算特定量子態的==相位==。對量子經過一系列的操作後,以QPE解得相位θ,在複雜應用中以高精度獲得相位訊息。 ## 量子相位估計的發展史 - 1994年: 彼得·秀爾(Peter Shor)提出了著名的Shor算法,為QPE的發展奠定了基礎。 - 1995年: 基塔耶夫(Alexei Kitaev)等人提出了量子相位估計(QPE)算法,成為許多量子算法的核心組成部分,特別是在求解特徵值問題中發揮了重要作用。 - 2009年: Harrow、Hassidim和Lloyd提出了HHL算法,該算法將QPE應用於線性系統的求解。 - 2020年: 中國科學技術大學的研究團隊利用多光子量子糾纏,首次實現了分布式量子相位估計的實驗驗證。 ## 量子相位估計的作用 因其準確性,QPE常作為各種牽涉量子領域的實作基礎,如 1. Shor algorithm:先前曾提及的Shor演算法正是採用了QPE,找到了同餘的週期 2. 量子模擬:用於模擬分子和材料的量子行為,幫助研究化學反應、材料設計等,特別是計算哈密頓算子的特徵能級 3. 機器學習:在量子機器學習中,QPE可以用來分析量子系統的特徵,進行數據降維、聚類等操作 4. 特徵值問題:可用於估算哈密頓量的特徵值,從而在量子物理和化學中計算系統的性質。 > 哈密頓量(Hamiltonian),主要用來描述一個物理系統的能量和動力學行為,在量子力學中表示為==系統的總能==,是為**粒子運動的能量**及**粒子間相互作用或外部場的能量**的相加 ## QPE的數學原理 先介紹特徵值和特徵向量,在物理學、機器學習、量子計算中,這兩者常用來描述矩陣的性質。 ### 特爭值與特徵向量(eigenvalue and eigenvector) #### 定義 假設有一個 n × n 的矩陣 A 及一個非零向量 v 及純量(無方向性) 𝜆 ,且 $$ Av=λv $$ 則對於 A 來說, **v 為其特徵向量(eigenvector),而 𝜆 為對應的特徵值(eigenvalue)** 。 #### 意義 這個公式表示,當我們對矩陣A 應用一個向量 v 時,結果 **向量不會改變方向(只有縮放),而縮放的比例就是這個向量的特徵值 𝜆** 。 在幾何學中,==特徵值為實數的情況下,畫一條通過原點的特徵向量,則在這個直線上的任何向量被 A 作用後,所得到的結果仍然會在這條直線上==。 #### 特徵方程 $$ \begin{aligned} &Av=λv \\ \Rightarrow &Av−λv=0 \\ \Rightarrow &(A−λI)v=0 \end{aligned} $$ >而其中的 I 是單位矩陣,能將 λ 轉為矩陣形式,才能與 A 進行計算 接著為使方程式成立,必須使 $$det(A−λI)=0$$ 此行列式等式即為 **特徵方程**,解這個方程可以得到特徵值 𝜆。 ### QPE的特徵值 回到QPE的部分,假設有一個矩陣 U 並乘上特徵相量 v ,特徵值中的 θ 則是我們要求的 $$ U |v\rangle = e^{iθ} |v\rangle$$ ## QPE電路 ![IMG_7100](https://hackmd.io/_uploads/rk0Rchigkl.jpg) 在QPE電路中,出現的有兩個部分的寄存器 - 除最後一排以外:用於儲存欲估計的相位 - 最後一排:此寄存器表U的特徵向量,用於應用並計算出所求的角度 ### 步驟 1. H-gate:對所有第一寄存器的qbit加上Hadamard gate,使產生疊加態以對後續相位測量做準備 2. 受控閘: 3. IQFT:對第一寄存器全體一起進行**逆量子傅立葉轉換**,目的是將各量子態轉換回基態,如此才能對其進行測量以得到結果