📗
白話文量子演算法
  • 量子世界的基本數學
  • 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

演算法解釋

本章節將詳細解釋grover search

Previous經典 vs GroverNext演算法解釋 2

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)

而在前面,我們已知 UfU_fUf​ 的功能如下:

∣ψ1⟩→12n∑x∈{0,1}n(−1)f(x)∣x⟩(3)|\psi_1\rangle\rightarrow\frac{1}{\sqrt{2^n}}\sum_{x\in\left\{0,1\right\}^n}(-1)^{f(x)}|x\rangle\tag{3}∣ψ1​⟩→2n​1​x∈{0,1}n∑​(−1)f(x)∣x⟩(3)

假設我們目標搜尋 x∗x^* x∗ ,我們可以將query oracle步驟想像成將目標 x∗x^*x∗ 的機率幅變為負號

也就是將一開始 :

變成 :

由於一開始的機率幅都是 12n\frac{1}{\sqrt{2^n}}2n​1​ ,因此我們可以由(1)、(2)推倒出以下一些關係備用 :

∣ψ1⟩=∣ψ⟩−22n∣x∗⟩(4)|\psi_1\rangle = |\psi\rangle-\frac{2}{\sqrt{2^n}}|x^*\rangle\tag{4} ∣ψ1​⟩=∣ψ⟩−2n​2​∣x∗⟩(4)
⟨ψ∣x∗⟩=12n(5)\langle\psi|x^*\rangle = \frac{1}{\sqrt{2^n}}\tag{5}⟨ψ∣x∗⟩=2n​1​(5)

而後,我們再通過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∗⟩(6)\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{6}∣ψG​⟩​=(2∣ψ⟩⟨ψ∣−I)∣ψ1​⟩=2∣ψ⟩⟨ψ∣ψ1​⟩−∣ψ1​⟩=2(∣ψ⟩)(1−2n2​)−(∣ψ⟩−2n​2​∣x∗⟩)=(2n2n+1−2−2n)​)∣ψ⟩−2n​2​∣x∗⟩​(6)

而這個步驟的功能,是讓 x∗x^*x∗ 的機率幅依據平均再翻轉一次,並且其他量子態同時變小

從 :

成 :

至於這個步驟為何能做到,讓我們來思考一下,首先,我們要確保每次做這個步驟都有相同的效果,所以我們假設通過Grover Diffusion Operator的量子態是 ∣ψn⟩|\psi_n\rangle∣ψn​⟩ ,並且我們已 αi\alpha_iαi​ 代表 ∣i⟩|i\rangle∣i⟩ 的機率幅,此時機率幅的平均是 :

μ=∑x∈{0,1}nαi2n(7)\mu =\frac{\sum_{x\in\left\{0,1\right\}^n}\alpha_i}{\sqrt{2^n}}\tag{7}μ=2n​∑x∈{0,1}n​αi​​(7)

讓我們將 ∣ψn⟩|\psi_n\rangle∣ψn​⟩ 通過 Diffusion Operator,得到以下 :

(2∣ψ⟩⟨ψ∣−I)∣ψn⟩=2∣ψ⟩⟨ψ∣ψn⟩−∣ψn⟩=2(∑x∈{0,1}nαx)∣ψ⟩−∣ψn⟩=2μ2n∣ψ⟩−∣ψn⟩=2μ(2n)(12n)∑x∈{0,1}n∣x⟩−∑x∈{0,1}nαx∣x⟩=∑x∈{0,1}n(2μ−αx)∣x⟩(8)\begin{aligned} (2|\psi\rangle\langle\psi|-I)|\psi_n\rangle &=2|\psi\rangle\langle\psi|\psi_n\rangle-|\psi_n\rangle\\ &=2(\sum_{x\in\left\{0,1\right\}^n}{\alpha_x})|\psi\rangle - |\psi_n\rangle\\ &=2\mu\sqrt{2^n}|\psi\rangle-|\psi_n\rangle\\ &=2\mu(\sqrt{2^n})(\frac{1}{\sqrt{2^n}}){\sum_{x\in\left\{0,1\right\}^n}|x\rangle-\sum_{x\in\left\{0,1\right\}^n}{\alpha_x}|x\rangle}\\ &=\sum_{x\in\left\{0,1\right\}^n}(2\mu-\alpha_x)|x\rangle \tag{8} \end{aligned} (2∣ψ⟩⟨ψ∣−I)∣ψn​⟩​=2∣ψ⟩⟨ψ∣ψn​⟩−∣ψn​⟩=2(x∈{0,1}n∑​αx​)∣ψ⟩−∣ψn​⟩=2μ2n​∣ψ⟩−∣ψn​⟩=2μ(2n​)(2n​1​)x∈{0,1}n∑​∣x⟩−x∈{0,1}n∑​αx​∣x⟩=x∈{0,1}n∑​(2μ−αx​)∣x⟩​(8)

由此可知,Diffusion Operator 是基於mean的翻轉,目標 x∗x^*x∗ 的機率幅會被越翻越高,也因此觀測時會有更大機率觀測正確,以下是簡單的時間複雜度證明 :

我們預期觀測到正確答案的機率超過

12\frac{1}{2}21​

也就是說,目標 x∗x^*x∗ 的機率幅為

12\frac{1}{\sqrt{2}}2​1​

其他量子態機率幅為(平[ 分配剩下的 12\frac{1}{2}21​ )

12n+1\frac{1}{\sqrt{2^{n+1}}}2n+1​1​

由(6)我們可以看出來,每次機率幅增加的幅度會減少,所以如果觀測機率已經到達 12\frac{1}{2}21​ ,並且還再經過一次Diffusion Operator,會增加多少振福 ?

先算一下此時的機率幅平均( N=2nN=2^nN=2n )

因為我們最終是以big-O來衡量,因此可以忽略一些 −1-1−1 這類的操作,因為並不影響複雜度) :

μ=12+N(1N)N=12N(9)\begin{aligned} \mu &=\frac{\frac{1}{\sqrt{2}}+N(\frac{1}{\sqrt{N}})}{\sqrt{N}}\\ &=\frac{1}{\sqrt{2N}}\tag{9} \end{aligned}μ​=N​2​1​+N(N​1​)​=2N​1​​(9)

此時,增加平率為

2N(10)\sqrt{\frac{2}{N}}\tag{10}N2​​(10)

按照以上所述,我們知道頻率增加的量會越來越小,而(10)是到目前為止最小的增加量,而距離我們就取遠一點,取完整的 12\frac{1}{\sqrt{2}}2​1​ ,也就是說,用最短的距離走最遠的路,得到以下 :

122N=N\frac{\frac{1}{\sqrt{2}}}{\sqrt{\frac{2}{N}}}=\sqrt{N}N2​​2​1​​=N​

由此說明,grover search 的時間複雜度為

O(N)O(\sqrt{N})O(N​)

相較於經典算法,是一種次方級的加速。

再下一小節,我們將會以另外一種方式講解grover search,讓大家能更深入了解。