赞
踩
@算法简介
Grover算法是相较于经典数据库搜索算法
O
(
n
)
O(n)
O(n)复杂度实现二次加速的量子算法,即复杂度为
O
(
N
)
O(\sqrt{N})
O(N
)。
Grover算法实质上是求解函数的逆问题的量子算法,即给定计算函数 y = f 1 ( x ) y=f_1(x) y=f1(x)的黑盒(Orcale算子)和已知 y 0 y_0 y0,去求使函数满足 f 1 ( x ) = y 0 f_1(x)=y_0 f1(x)=y0的自变量 x x x的值。
该算法使用两个寄存器,第一个寄存器存储了n个量子比特,第二个寄存器是Oracle的工作空间。
量子态的制备
Step 1:初始化量子态,制备
∣
0
⟩
⨂
n
|0\rangle^{\bigotimes n}
∣0⟩⨂n作为量子系统的初始状态。
Step 2: 第一步的结果使用H门变换为
H
⨂
n
H^{\bigotimes n}
H⨂n
Step 3:实施酉变换。首先,对前n量子比特实施H门变换,使其变成均衡叠加态
∣
ψ
⟩
=
1
N
∑
x
=
0
N
−
1
∣
x
⟩
|\psi\rangle=\frac{1}{\sqrt{N}}\sum_{x=0}^{N-1}|x\rangle
∣ψ⟩=N
1∑x=0N−1∣x⟩,其中
∣
ψ
⟩
|\psi\rangle
∣ψ⟩包含函数逆问题解的状态
∣
ψ
0
⟩
|\psi_{0} \rangle
∣ψ0⟩和非函数逆问题解的状态空间
∣
ψ
1
⟩
|\psi_{1} \rangle
∣ψ1⟩。
1.1 Oracle黑盒子的制备阶段(举例说明,此处的Oracle算子设置较为简单,实际环境设置复杂得多)
y
=
f
1
(
x
)
y=f_1(x)
y=f1(x)
∣
00
⟩
→
0
|00\rangle\rightarrow0
∣00⟩→0
∣
01
⟩
→
0
|01\rangle\rightarrow0
∣01⟩→0
∣
01
⟩
→
1
|01\rangle\rightarrow1
∣01⟩→1
∣
11
⟩
→
0
|11\rangle\rightarrow0
∣11⟩→0
此处只有
∣
01
⟩
|01\rangle
∣01⟩使得
f
1
(
x
)
=
1
f_1(x)=1
f1(x)=1 ,其余态都为0,则Grover迭代的目标解为
∣
01
⟩
|01\rangle
∣01⟩。
1.2 对量子态制备阶段的叠加状态
∣
ψ
⟩
|\psi\rangle
∣ψ⟩应用Oracle操作,查找叠加状态
∣
ψ
⟩
|\psi\rangle
∣ψ⟩是否存在函数逆问题解状态。如果存在这个状态,标记这个状态,标记过程为步骤1.3
1.3 实施条件相位移操作,使状态
∣
01
⟩
|01\rangle
∣01⟩状态获得-1的相位
∣
x
⟩
→
(
−
1
)
f
(
x
)
∣
x
⟩
|x\rangle \rightarrow(-1)^{f(x)}|x\rangle
∣x⟩→(−1)f(x)∣x⟩
设计一个矩阵(等同于Oracle算子),使得对叠加态
∣
ψ
⟩
|\psi\rangle
∣ψ⟩ 中使得
f
(
x
)
=
1
f(x)=1
f(x)=1的
x
x
x添加一个负相位(ps做标记),这一步等同于Grover算法的Oracle算子部分
1.4 完成上述过程,对n个量子比特实施H门变换
H
⨂
n
H^{\bigotimes n}
H⨂n
H
⨂
n
(
2
∣
0
⟩
⟨
0
∣
−
I
)
H
⨂
n
=
2
∣
ψ
⟩
⟨
ψ
∣
−
I
H^{\bigotimes n}(2|0\rangle \langle0|-I)H^{\bigotimes n}=2|\psi\rangle\langle\psi|-I
H⨂n(2∣0⟩⟨0∣−I)H⨂n=2∣ψ⟩⟨ψ∣−I
即 O = I − 2 ∣ τ ⟩ ⟨ τ ∣ O=I-2|\tau\rangle\langle\tau| O=I−2∣τ⟩⟨τ∣,状态 τ \tau τ是函数逆问题的解状态。
M是
∣
ψ
⟩
|\psi\rangle
∣ψ⟩中隐藏的解的个数,N=
2
n
2^n
2n,计算下列偏转角公式,计算出最优的迭代次数
sin
θ
/
2
=
2
M
/
N
\sin \theta/2=2\sqrt{M/N}
sinθ/2=2M/N
,
cos
θ
/
2
=
2
N
−
M
/
N
\cos \theta/2=2\sqrt{N-M/N}
cosθ/2=2N−M/N
最终 ∣ ψ ⟩ = N − M N ∣ α ⟩ + M N ∣ β ⟩ |\psi\rangle=\sqrt{\frac{N-M}{N}}|\alpha\rangle+\sqrt{\frac{M}{N}}|\beta\rangle ∣ψ⟩=NN−M ∣α⟩+NM ∣β⟩
h=1/sqrt(2)*[1 1;1 -1]; %哈达玛门 I=[1 0;0 1]; %单位矩阵I 创建单位矩阵的函数eye(N) x1=[0 1;1 0]; i2=[0;1;0;0;0;0;0;0]; i1=[0;0;0;0;1;0;0;0]; oracle=(eye(8)-2*kron(i2',i2)-2*kron(i1',i1)); %简单设置设置的oracle算子 c1=kron(h,I); c1=kron(c1,I); c2=kron(I,h); c2=kron(c2,I); c3=kron(I,I); c3=kron(c3,h); H=c1*c2*c3; %用做每一个qubit的H门变换 较繁琐 i=H*i0; %制备好的待测状态 k4=2*kron(i0',i0)-eye(8); Us=H*k4*H; G=Us*oracle; %Us算子和oracle算子 ix=G*H*i0;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。