Simon's Algorithm
學習完Bernstein-Vazarni後,接下來學習知名且相似的Simon's algorithm
問題
和Bernstein-Vazarni相似,Simon也是和字串相關的問題,一樣給訂一個函數:
f:{0,1}n→{0,1}n 這次,我們保證存在字串 s ,當 s 為非 0 字串,並且
f(x)=f(y) 若且唯若
請求出 s
舉個例子,免得我敘述太差,如果 s=110
f(000)=5 f(100)=1f(001)=4 f(101)=0f(010)=1 f(110)=5f(011)=0 f(111)=4(1) 000 和 110 經過 f 後的質會相同,因為 000=s⊕110 。
量子算法(Simon's algorithm)
先準備兩個register,第一個經過Hadamard gate,並且同時query f ,並且馬上觀測第二個register,再觀察完register 之後,第一個 register 只會剩下只有兩種可能 :
2n1x∈{0,1}n∑∣x⟩∣f(x)⟩→2∣i⟩+∣j⟩,where i⊕j=s(2) 或許上述可能有些難懂,我們以(1)作為延伸,來舉個例子 :
一開始的兩個register :
∣000⟩∣000⟩ register 1 經過Hadamard gate, 成為以下 :
∣000⟩∣000⟩→81(∣000⟩+∣001⟩+∣010⟩+∣011⟩+∣100⟩+∣101⟩+∣110⟩+∣111⟩)∣000⟩ 同時query兩個register,我們可以得到以下 :
81x∈{0,1}3∑∣x⟩∣000⟩f81x∈{0,1}3∑∣x⟩∣f(x)⟩ 將(2)展開,也就是以下幾種可能的量子態 :
81(∣000⟩∣5⟩+∣001⟩∣4⟩+∣010⟩∣1⟩+∣011⟩∣0⟩+∣100⟩∣1⟩+∣101⟩∣0⟩+∣110⟩∣5⟩+∣111⟩∣4⟩) 所以,如果我們立刻觀測第二個register,觀測到 ∣5⟩ ,那我們就立刻能知道register 1 中只有可能是 ∣000⟩ 或是 ∣110⟩ 兩種可能。
舉例完畢,接下來,讓register 1再經過一次Hadamard gate :
2H⊕n∣i⟩+H⊕n∣j⟩→21(2n1(z∈{0,1}n∑(−1)i⋅z∣z⟩+z∈{0,1}n∑(−1)j⋅z∣z⟩))(3) 將(3)化簡
2n+11z∈{0,1}n∑[(−1)i⋅z+(−1)j⋅z]∣z⟩ 再化簡
2n+11z∈{0,1}n∑(−1)i⋅z(1−1s⊕z)∣z⟩ 如果 s⊕z=1 ,則整個等於 0 不合,所以 s⊕z=0 ,或許我們無法直接得到s,但是藉由高斯消去法能在 O(n) 中找到 s ,因此算法的時間複雜度是 :