量子搜索算法 Grover search
量子搜索算法 Grover search
問題定義:
Problem:
f:{0,1,2,3,……,N?1}→{0,1}f:{0,1,2,3,……,N?1}→{0,1}
找到?f(x)=1 的x
解法
經典解法:
經典解法很簡單,就是把每一個都看一遍,如果只有一個x對應的f(x)=1,那么平均是要看一半,才能找到那個x。
時間復雜度O(N)
量子解法:
使用Grover search 算法,時間復雜度在?O(根號N)
Grover search 算法
Grover search 算法一共分為兩步:
然后不斷的迭代這兩步我們就能夠得到結果了。
首先我們先看看這兩個步驟分別在做什么:
我們把?f(x)=1的?|x? 稱為?x? ,我們要找的也就是這個?x? 。
Phase Inversion:
這一步主要是把?x? 的概率幅翻轉,變成負數,而其他的保持不變。
即,
Inversion about the Mean
用圖可能更好表達這兩個步驟究竟在做什么:
圖1到圖2,就是Phase Inversion,把x?的概率幅翻轉到了下面,圖2中的虛線就是我的概率幅的平均值,圖2到圖3 就是我們的Inversion about the Mean,對著平均值翻轉一次,其余x的概率幅是高于平均值的,所以?2μ?αx 讓他們變小了,而我們的?x? 他的概率幅是個負數,所以?2μ?αx后他增加了。
不斷的重復這個步驟,?x? 他的概率幅會越來越大,最后我們測量的時候就會很容的找到他。
進行了 √N?后,他的概率幅就會達到?1/√2?,算概率就是1/2。
那么接下來的問題就是,這些操作是怎么實現的?
Phase Inversion:
這個步驟要做的事情就是,
符號是和f(x)是否為1相關的,進一步化簡就是?
有沒有一絲熟悉感?
把f(x)的結果給放到相位上去,這是我們在Parity Problem中就遇到的問題。
當時的解決方法是把答案比特變成?|??。
一般情況,如果我們打算放置答案的比特是?|b?,那么輸入的比特就是|b⊕f(x)?
最后一個比特的值如果在|+?|??坐標下測量,一定是?|??,f(x)的差別也變到了符號上,即?(?1)f(x)
Inversion about the Mean
把?αx變成?2μ?αx,這個就要比前一個麻煩了
這其實是要求我把現在的態對著?μ 翻轉。
對著?μ 翻轉會嗎?
不太會。
但是我會對著?|0? 的翻轉啊。
對角線第一個值為1,其余為-1,非對角線的都為0。
這個矩陣輕而易舉的可以讓?|0? 保持不變,非?|0?的符號全都翻轉。
量子變換要求矩陣式酉矩陣,這個矩陣很明顯滿足?UU?=U?U=I
接下來怎么做呢?
我們先把我們的態整體來一個從?|μ??到?|0? 的旋轉,對著?|0? 翻轉后,又從?|0? 到?|μ? 翻轉回去。
|μ? 是一個怎樣的態?
所有的x的概率都一樣,也就是我們的superposition?
|x? 和?|0?之間的相互轉換,這就是我們最最熟悉的Hadamard Transform了
第二部分的電路圖如下:
這個矩陣是可以直接計算的:
我這里直接給出答案,得到的矩陣值呢是下圖左邊的這個矩陣:
在對應的?αx的結果恰好是?
而? 恰好就是?2μ
至此,呈上最完整的電路圖模塊:
第一個H門是數據的初始化,第二個門是為了翻轉?x?,第三四五個門是為了對?|μ? 翻轉,二三四五這四個門就是要給重復的模塊了,不斷的重復他們就可以不斷的提高?x?的概率幅,最終找到?x?。
?
參考資料:
Quantume Mechanics & Quantume Computation Lecture 11
總結
以上是生活随笔為你收集整理的量子搜索算法 Grover search的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经纬创投中国项目分类清单
- 下一篇: 适合写笔记的文本笔记管理工具——Keep