📗
白話文量子演算法
  • 量子世界的基本數學
  • Deutsch-Jozsa
    • oracle and query
    • 經典 vs Deutsh-Jozsa
  • Bernstein-Vazarani
  • Simon's Algorithm
  • Gover's algorithm
    • 經典 vs Grover
    • 演算法解釋
    • 演算法解釋 2
  • 參考資料
Powered by GitBook
On this page

Was this helpful?

  1. Gover's algorithm

演算法解釋 2

本章節將繼續解釋grover search

Previous演算法解釋Next參考資料

Last updated 5 years ago

Was this helpful?

首先我們先來複習一下上個章節所說的東西

首先,經過headamard transform 後 :

∣ψ⟩=12n∑x∈{0,1}n∣x⟩(1)|\psi\rangle=\frac{1}{\sqrt{2^n}}\sum_{x\in\left\{0,1\right\}^n}|x\rangle\tag{1}∣ψ⟩=2n​1​x∈{0,1}n∑​∣x⟩(1)

接下來經過Oracle UfU_fUf​ :

Uf(∣ψ⟩)→∣ψ1⟩(2)U_f(|\psi\rangle)\rightarrow|\psi_1\rangle\tag{2}Uf​(∣ψ⟩)→∣ψ1​⟩(2)

而後,我們再通過Grover Diffusion Operator,也就是 2∣ψ⟩⟨ψ∣−I2|\psi\rangle\langle \psi|-I2∣ψ⟩⟨ψ∣−I ,可以得到 :

∣ψG⟩=(2∣ψ⟩⟨ψ∣−I)∣ψ1⟩=2∣ψ⟩⟨ψ∣ψ1⟩−∣ψ1⟩=2(∣ψ⟩)(1−22n)−(∣ψ⟩−22n∣x∗⟩)=(2n+1−2−2n)2n)∣ψ⟩−22n∣x∗⟩(3)\begin{aligned} |\psi_G\rangle &=(2|\psi\rangle\langle\psi|-I)|\psi_1\rangle\\ &=2|\psi\rangle\langle\psi|\psi_1\rangle-|\psi_1\rangle\\ &=2(|\psi\rangle)(1-\frac{2}{2^n})-(|\psi\rangle-\frac{2}{\sqrt{2^n}}|x^*\rangle)\\ &=(\frac{2^{n+1}-2-2^{n})}{2^n})|\psi\rangle-\frac{2}{\sqrt{2^n}}|x^*\rangle \end{aligned}\tag{3}∣ψG​⟩​=(2∣ψ⟩⟨ψ∣−I)∣ψ1​⟩=2∣ψ⟩⟨ψ∣ψ1​⟩−∣ψ1​⟩=2(∣ψ⟩)(1−2n2​)−(∣ψ⟩−2n​2​∣x∗⟩)=(2n2n+1−2−2n)​)∣ψ⟩−2n​2​∣x∗⟩​(3)

內積的性質(同時也適用於量子)

x⃗⋅y⃗=∣x⃗∣∣y⃗∥cosθ\vec{x}\cdot\vec{y}=|\vec{x}||\vec{y}\|cos\thetax⋅y​=∣x∣∣y​∥cosθ

我們以下圖表是目前的量子態,i0i_0i0​為搜尋目標, 可將其他量子態( ∑∣x⟩−∣i0⟩\sum{|x\rangle}-|i_0\rangle∑∣x⟩−∣i0​⟩)視為一個子群,正交於 i0i_0i0​ :

由於 ∣ψ⟩|\psi\rangle∣ψ⟩ 和 ∣ψ1⟩|\psi_1\rangle∣ψ1​⟩ 只在 i0i_0i0​ 方向差了個負號,因此我們可以將 ∣ψ⟩|\psi\rangle∣ψ⟩ 水平軸為基準映射出 ∣ψ1⟩|\psi_1\rangle∣ψ1​⟩,並算一下夾角(機率幅總和是 111 ) :

⟨ψ∣ψ1⟩=1⋅1⋅cos⁡θ=1−22n(4)\begin{aligned} \langle\psi|\psi_1\rangle &=1\cdot1\cdot\cos\theta\\ &=1-\frac{2}{2^n}\tag{4} \end{aligned}⟨ψ∣ψ1​⟩​=1⋅1⋅cosθ=1−2n2​​(4)

在前一節我們有提到,之後經過的diffusion Operator 是將 ∣ψ1⟩|\psi_1\rangle∣ψ1​⟩ 基於平均的翻轉,並且重新將 i0i_0i0​ 機率幅翻為正的,所以我們假設 ∣ψG⟩|\psi_G\rangle∣ψG​⟩ 和| ψ⟩\psi\rangleψ⟩ 的夾角為 θ′{\theta}^{′}θ′ ,並帶入(3)

θ′=⟨ψ∣ψG⟩=⟨ψ∣(2∣ψ⟩⟨ψ∣−I)∣ψ1⟩=2⋅1⋅⟨ψ∣ψ1⟩−⟨ψ∣ψ1⟩=⟨ψ∣ψ1⟩=θ(5)\begin{aligned} \theta^′ &=\langle\psi|\psi_G\rangle\\ &=\langle\psi|(2|\psi\rangle\langle\psi|-I)|\psi_1\rangle\\ &=2\cdot1\cdot\langle\psi|\psi_1\rangle-\langle\psi|\psi_1\rangle\\ &=\langle\psi|\psi_1\rangle\\ &=\theta\tag{5} \end{aligned}θ′​=⟨ψ∣ψG​⟩=⟨ψ∣(2∣ψ⟩⟨ψ∣−I)∣ψ1​⟩=2⋅1⋅⟨ψ∣ψ1​⟩−⟨ψ∣ψ1​⟩=⟨ψ∣ψ1​⟩=θ​(5)

根據(5),我們可以知道兩個角相等,但是 ∣ψ⟩|\psi\rangle∣ψ⟩ 、 ∣ψ1⟩|\psi_1\rangle∣ψ1​⟩ 、 ∣ψG⟩|\psi_G\rangle∣ψG​⟩ 都是最原始的狀態,我們必須接著證明不論何時,Diffusion Operator 都是基於 ∣ψ⟩|\psi\rangle∣ψ⟩ 的翻轉 :

在上圖中, ∣σ⟩|\sigma\rangle∣σ⟩是初始狀態,經過 UfU_fUf​ 後變成 ∣σ1⟩|\sigma_1\rangle∣σ1​⟩ ,再經過Diffusion Operator 後是 G∣σ⟩G|\sigma\rangleG∣σ⟩ ,首先化簡 G∣σ⟩G|\sigma\rangleG∣σ⟩ :

G∣σ⟩=(2∣ψ⟩⟨ψ∣−I)Uf(∣σ⟩)=2Uf⟨ψ∣σ⟩−∣σ1⟩=2cos⁡α2∣ψ⟩−∣σ1⟩(6)\begin{aligned} G|\sigma\rangle &=(2|\psi\rangle\langle\psi|-I)U_f(|\sigma\rangle)\\ &=2U_f\langle\psi|\sigma\rangle-|\sigma_1\rangle\\ &=2\cos{\alpha_2}|\psi\rangle-|\sigma_1\rangle\tag{6} \end{aligned}G∣σ⟩​=(2∣ψ⟩⟨ψ∣−I)Uf​(∣σ⟩)=2Uf​⟨ψ∣σ⟩−∣σ1​⟩=2cosα2​∣ψ⟩−∣σ1​⟩​(6)

接著計算夾角 θ\thetaθ :

⟨σ∣G∣σ⟩=⟨σ∣(2cos⁡α2∣ψ⟩−∣σ1⟩)=2cos⁡α2⟨σ∣ψ⟩−⟨σ∣σ1⟩=2cos⁡α1cos⁡α2−cos⁡(α1+α2)=cos⁡(α2−α1)(7)\begin{aligned} \langle\sigma|G|\sigma\rangle &=\langle\sigma|(2\cos{\alpha_2}|\psi\rangle-|\sigma_1\rangle)\\ &=2\cos\alpha_2\langle\sigma|\psi\rangle-\langle\sigma|\sigma_1\rangle\\ &=2\cos\alpha_1 \cos\alpha_2-\cos(\alpha_1+\alpha_2)\\ &= \cos(\alpha_2-\alpha_1)\\ \tag{7} \end{aligned}⟨σ∣G∣σ⟩​=⟨σ∣(2cosα2​∣ψ⟩−∣σ1​⟩)=2cosα2​⟨σ∣ψ⟩−⟨σ∣σ1​⟩=2cosα1​cosα2​−cos(α1​+α2​)=cos(α2​−α1​)​(7)

由此可知

θ=α2−α1(8)\theta=\alpha_2-\alpha_1\tag{8}θ=α2​−α1​(8)

也就是每次翻轉前後會差一個 θ\thetaθ ,也就是說地K次翻轉後,我們可以得到 G∣σk⟩G|\sigma_k\rangleG∣σk​⟩ 的夾角為 :

θ2+θk(9)\frac{\theta}{2}+\theta k\tag{9}2θ​+θk(9)

不停地經過翻轉後, G∣σ⟩G|\sigma\rangleG∣σ⟩ 會越來越高並且越來越接近 i0i_0i0​ ,也就是說有更大的機率測得正確答案,然而,一但超過某個次數,越到第二象限之後,就會變小,所以我們希望能求得最接近 ∣i0⟩|i_0\rangle∣i0​⟩ 的操作次數。

首先是三角函數的性質

arcsin⁡θ≈θ(10)\arcsin{\theta}\approx\theta\tag{10}arcsinθ≈θ(10)

一開始的 arcsin⁡θ=22n\arcsin \theta = \frac{2}{\sqrt{2^n}}arcsinθ=2n​2​ ,根據(10),當n很大時

θ=22n(11) \theta = \frac{2}{\sqrt{2^n}}\tag{11}θ=2n​2​(11)

經過k次之後

(2k+1)(θ2)(2k+1)(\frac{\theta}{2})(2k+1)(2θ​)

而我們希望找到機率波的最接近 i0i_0i0​ , i0i_0i0​ 與水平夾角是 π2\frac{\pi}{2}2π​

(2k+1)(θ2)=π2(12)(2k+1)(\frac{\theta}{2})=\frac{\pi}{2}\tag{12}(2k+1)(2θ​)=2π​(12)

將 θ\thetaθ 帶入

(2k+1)(12n)=π2(2k+1)(\frac{1}{\sqrt{2^n}})=\frac{\pi}{2}(2k+1)(2n​1​)=2π​

簡化整理

k=π2n4−12k=\frac{\pi\sqrt{2^n}}{4}-\frac{1}{2}k=4π2n​​−21​

因此時間複雜度為

O(2n)=O(N)O(\sqrt{2^n})=O(\sqrt{N})O(2n​)=O(N​)

和第一種解釋能得到相同的結果。