Simon’s问题
f f f是一个黑盒函数,当输入一个长度为 n n n比特的字符串,将得到长度同样为 n n n比特的字符串。我们对其唯一只晓得性质便是 f f f是一个一对一或者二对一函数。
注:所谓一对一函数是指,对于每一不同输入都将精确地映射出一个独一无二的输出。
注:所谓二对一函数是指,对于每一个输出都仅对应着两个不同的输入。
对于二对一函数存在着一个隐藏的比特串
b
b
b:给定
x
1
,
x
2
x_1,x_2
x1,x2若
f
(
x
1
)
=
f
(
x
2
)
f(x_1)=f(x_2)
f(x1)=f(x2)那么
x
1
+
x
2
(
m
o
d
2
)
=
b
x_1+x_2(mod2)=b
x1+x2(mod2)=b
Simon’s问题是,给定这样一个黑盒函数我们如何快速找到隐藏比特串
b
b
b?事实上对于一对一函数它的隐藏比特串
b
b
b显然为
∣
00
⋯
0
>
|00 \cdots0>
∣00⋯0>。
经典求解
在经典情况下,若想要得到函数
f
f
f的隐藏比特串
b
b
b,我们需要输入
2
n
−
1
+
1
2^{n-1}+1
2n−1+1种不同的比特串,其中
n
n
n代表输入的比特串长度。
这是因为长度为
n
n
n的比特串一共拥有
2
n
2^n
2n种不同的情况,那就意味着在
2
n
−
1
+
1
2^{n-1}+1
2n−1+1种不同的输入中一定存在着两个比特串
x
1
,
x
2
x_1,x_2
x1,x2使得
f
(
x
1
)
=
f
(
x
2
)
f(x_1)=f(x_2)
f(x1)=f(x2)。若不然,
2
n
−
1
+
1
2^{n-1}+1
2n−1+1种不同的输入分别与隐藏比特串
b
b
b异或后又得到
2
n
−
1
+
1
2^{n-1}+1
2n−1+1种不同的输入。此时得到了
2
n
+
2
>
2
n
2^n+2>2^n
2n+2>2n种不同的比特串。当比特串长度为
n
n
n时显然不可能。
量子求解
实现Simon’s算法的量子电路
在图中的左侧为两个
n
n
n比特的量子寄存器,
Q
f
Q_f
Qf是一个可以实现的硬件,它将作用在这两个寄存器上,起这样的作用:
在本算法中
∣
a
>
=
∣
0
>
=
∣
00
⋯
0
>
|a>=|0>=|00\cdots0>
∣a>=∣0>=∣00⋯0>,从而有:
实现Simon’s算法的步骤
步骤1
用
∣
0
>
|0>
∣0>态去初始化这两个量子寄存器得:
步骤2
对第一个寄存器施加
H
H
H变换得:
步骤3
对整个量子电路应用
Q
f
Q_f
Qf得:
步骤4
对第二个量子寄存器进行测量,这时我们将得到确定的
f
(
x
)
f(x)
f(x)输出,那么测量值
f
(
x
)
f(x)
f(x)对应的两个等可能的输入记为:
∣
x
>
,
∣
y
>
|x>,|y>
∣x>,∣y>且
x
+
y
(
m
o
d
2
)
=
b
x+y(mod2)=b
x+y(mod2)=b。因此此时第一个量子寄存器将变为:
步骤5
对第一个量子寄存器施加
H
H
H变换得:
步骤6
对于我们测得的第二个量子寄存器结果
f
(
x
)
f(x)
f(x),一定对应着确定的
∣
x
>
,
∣
y
>
|x>,|y>
∣x>,∣y>且
x
+
y
(
m
o
d
2
)
=
b
x+y(mod2)=b
x+y(mod2)=b。那么当我们去测量第一个量子寄存器时得到的状态
∣
z
>
|z>
∣z>一定满足:
(
−
1
)
x
z
=
(
−
1
)
y
z
=
1
(-1)^{xz}=(-1)^{yz}=1
(−1)xz=(−1)yz=1
或
(
−
1
)
x
z
=
(
−
1
)
y
z
=
−
1
(-1)^{xz}=(-1)^{yz}=-1
(−1)xz=(−1)yz=−1
若
(
−
1
)
x
z
=
−
(
−
1
)
y
z
(-1)^{xz}=-(-1)^{yz}
(−1)xz=−(−1)yz
那么
∣
z
>
|z>
∣z>的振幅为为零,也就意味着我们测得第一个量子寄存器的结果为
∣
z
>
|z>
∣z>的概率为零。换句话说我们不可能测出使得
(
−
1
)
x
z
=
−
(
−
1
)
y
z
(-1)^{xz}=-(-1)^{yz}
(−1)xz=−(−1)yz的状态
∣
z
>
|z>
∣z>。
进一步来说:
(
−
1
)
x
z
=
(
−
1
)
y
z
(-1)^{xz}=(-1)^{yz}
(−1)xz=(−1)yz
则:
这时我们测得的状态
∣
z
>
|z>
∣z>与隐藏比特串
b
b
b的内积为0,现在我们将这个量子电路上进行多次试验,得到
n
n
n个不同的状态
∣
z
>
|z>
∣z>,从而得到如下线性方程组:
显然我们可以利用高斯消元法迅速得到隐藏比特串 b b b。