演算法解釋
本章節將詳細解釋grover search
Last updated
Was this helpful?
本章節將詳細解釋grover search
Last updated
Was this helpful?
再看一次圖 :
首先,經過headamard transform 後 :
也就是將一開始 :
變成 :
從 :
成 :
我們預期觀測到正確答案的機率超過
此時,增加平率為
由此說明,grover search 的時間複雜度為
相較於經典算法,是一種次方級的加速。
再下一小節,我們將會以另外一種方式講解grover search,讓大家能更深入了解。
接下來經過Oracle :
而在前面,我們已知 的功能如下:
假設我們目標搜尋 ,我們可以將query oracle步驟想像成將目標 的機率幅變為負號
由於一開始的機率幅都是 ,因此我們可以由(1)、(2)推倒出以下一些關係備用 :
而後,我們再通過Grover Diffusion Operator,也就是 ,可以得到 :
而這個步驟的功能,是讓 的機率幅依據平均再翻轉一次,並且其他量子態同時變小
至於這個步驟為何能做到,讓我們來思考一下,首先,我們要確保每次做這個步驟都有相同的效果,所以我們假設通過Grover Diffusion Operator的量子態是 ,並且我們已 代表 的機率幅,此時機率幅的平均是 :
讓我們將 通過 Diffusion Operator,得到以下 :
由此可知,Diffusion Operator 是基於mean的翻轉,目標 的機率幅會被越翻越高,也因此觀測時會有更大機率觀測正確,以下是簡單的時間複雜度證明 :
也就是說,目標 的機率幅為
其他量子態機率幅為(平[ 分配剩下的 )
由(6)我們可以看出來,每次機率幅增加的幅度會減少,所以如果觀測機率已經到達 ,並且還再經過一次Diffusion Operator,會增加多少振福 ?
先算一下此時的機率幅平均( )
因為我們最終是以big-O來衡量,因此可以忽略一些 這類的操作,因為並不影響複雜度) :
按照以上所述,我們知道頻率增加的量會越來越小,而(10)是到目前為止最小的增加量,而距離我們就取遠一點,取完整的 ,也就是說,用最短的距離走最遠的路,得到以下 :