Bernstein-Vazirani algoritması çözer, Bernstein-Vazirani sorununu bir olan kuantum algoritması tarafından icat Ethan Bernstein ve Umesh Vazirani Bu bir yasak versiyonu 1992 yılında Deutsch-Józsa algoritması , bu dener fonksiyonların iki farklı sınıflar arasında ayrım nerede yerine bir işlevde kodlanmış bir dize öğrenmek için. Bernstein-Vazirani algoritma, bir kanıtlamak için tasarlanmıştır torpil ayırma arasında karmaşıklık sınıfları BQP ve BPP .
Sorun bildirimi
Bir Verilen kahin uygular bir işlev olduğunu hangi edilir vaat olmak iççarpım arasında ve gizli bir dize modülo 2, bulmak .
F
:
{
0
,
1
}
n
→
{
0
,
1
}
{\displaystyle f\colon \{0,1\}^{n}\rightarrow \{0,1\}}
F
(
x
)
{\görüntüleme stili f(x)}
x
{\görüntüleme stili x}
s
∈
{
0
,
1
}
n
{\displaystyle s\in \{0,1\}^{n}}
F
(
x
)
=
x
⋅
s
=
x
1
s
1
⊕
x
2
s
2
⊕
⋯
⊕
x
n
s
n
{\displaystyle f(x)=x\cdot s=x_{1}s_{1}\oplus x_{2}s_{2}\oplus \cdots \oplus x_{n}s_{n}}
s
{\görüntüleme stili s}
algoritma
Klasik olarak, gizli diziyi bulmanın en etkili yöntemi, işlev sürelerini tümü için giriş değerleriyle değerlendirmektir :
n
{\görüntüleme stili n}
x
=
2
ben
{\görüntüleme stili x=2^{i}}
ben
∈
{
0
,
1
,
.
.
.
,
n
-
1
}
{\displaystyle i\in \{0,1,...,n-1\}}
F
(
1000
⋯
0
n
)
=
s
1
F
(
0100
⋯
0
n
)
=
s
2
F
(
0010
⋯
0
n
)
=
s
3
⋮
F
(
0000
⋯
1
n
)
=
s
n
{\displaystyle {\begin{aligned}f(1000\cdots 0_{n})&=s_{1}\\f(0100\cdots 0_{n})&=s_{2}\\f(0010\cdots) 0_{n})&=s_{3}\\&\,\,\,\vdots \\f(0000\cdots 1_{n})&=s_{n}\\\end{hizalı}}}
Bulmak için fonksiyonun en azından sorgularına ihtiyaç duyan klasik çözümün aksine , kuantum hesaplama kullanılarak yalnızca bir sorguya ihtiyaç vardır. Kuantum algoritması aşağıdaki gibidir:
n
{\görüntüleme stili n}
s
{\görüntüleme stili s}
Bir Uygula Hadamard dönüşümü için qubit devlet olsun için
n
{\görüntüleme stili n}
|
0
⟩
⊗
n
{\displaystyle |0\menzil ^{\otimes n}}
1
2
n
∑
x
=
0
2
n
-
1
|
x
⟩
.
{\displaystyle {\frac {1}{\sqrt {2^{n}}}}\sum _{x=0}^{2^{n}-1}|x\rangle .}
Ardından, dönüştüren oracle'ı uygulayın . Bu, bu oracle'ı . ( mod iki eklemeyi belirtir.) Bu, süperpozisyonu şuna dönüştürür:
sen
F
{\görüntüleme stili U_{f}}
|
x
⟩
→
(
-
1
)
F
(
x
)
|
x
⟩
{\displaystyle |x\rangle \to (-1)^{f(x)}|x\rangle }
|
B
⟩
|
x
⟩
→
|
B
⊕
F
(
x
)
⟩
|
x
⟩
{\displaystyle |b\rangle |x\rangle \to |b\oplus f(x)\rangle |x\rangle }
|
0
⟩
-
|
1
⟩
2
|
x
⟩
{\displaystyle {\frac {|0\rangle -|1\rangle }{\sqrt {2}}}|x\rangle }
⊕
{\görüntüleme stili\oplus }
1
2
n
∑
x
=
0
2
n
-
1
(
-
1
)
F
(
x
)
|
x
⟩
.
{\displaystyle {\frac {1}{\sqrt {2^{n}}}}\sum _{x=0}^{2^{n}-1}(-1)^{f(x)} |x\menzil .}
Hadamard dönüşüm başka böylece yapan her QuBit uygulanır qubits için , devlet dönüştürülür, için ve qubits için , devlet dönüştürülür, için . elde etmek için, kübitler üzerinde standart bazda ( ) bir ölçüm yapılır.
s
ben
=
1
{\displaystyle s_{i}=1}
|
-
⟩
{\görüntüleme stili |-\menzil }
|
1
⟩
{\görüntüleme stili |1\menzil }
s
ben
=
0
{\displaystyle s_{i}=0}
|
+
⟩
{\görüntüleme stili |+\menzil }
|
0
⟩
{\görüntüleme stili |0\menzil }
s
{\görüntüleme stili s}
{
|
0
⟩
,
|
1
⟩
}
{\displaystyle \{|0\rangle ,|1\rangle \}}
Grafiksel olarak, algoritma , kübitler üzerindeki Hadamard dönüşümünü gösteren aşağıdaki diyagram ile temsil edilebilir :
H
⊗
n
{\ Displaystyle H^{\otimes n}}
n
{\görüntüleme stili n}
|
0
⟩
n
→
H
⊗
n
1
2
n
∑
x
∈
{
0
,
1
}
n
|
x
⟩
→
sen
F
1
2
n
∑
x
∈
{
0
,
1
}
n
(
-
1
)
F
(
x
)
|
x
⟩
→
H
⊗
n
1
2
n
∑
x
,
y
∈
{
0
,
1
}
n
(
-
1
)
F
(
x
)
+
x
⋅
y
|
y
⟩
=
|
s
⟩
{\displaystyle |0\rangle ^{n}\xrightarrow {H^{\otimes n}} {\frac {1}{\sqrt {2^{n}}}}\sum _{x\in \{0 ,1\}^{n}}|x\rangle \xrightarrow {U_{f}} {\frac {1}{\sqrt {2^{n}}}}\sum _{x\in \{0, 1\}^{n}}(-1)^{f(x)}|x\rangle \xrightarrow {H^{\otimes n}} {\frac {1}{2^{n}}}\sum _{x,y\in \{0,1\}^{n}}(-1)^{f(x)+x\cdot y}|y\rangle =|s\rangle }
Son durumun olmasının nedeni, belirli bir durum için ,
|
s
⟩
{\displaystyle |s\rangle }
y
{\görüntüleme stili y}
1
2
n
∑
x
∈
{
0
,
1
}
n
(
-
1
)
F
(
x
)
+
x
⋅
y
=
1
2
n
∑
x
∈
{
0
,
1
}
n
(
-
1
)
x
⋅
s
+
x
⋅
y
=
1
2
n
∑
x
∈
{
0
,
1
}
n
(
-
1
)
x
⋅
(
s
⊕
y
)
=
1
Eğer
s
⊕
y
=
0
→
,
0
aksi takdirde
.
{\displaystyle {\frac {1}{2^{n}}}\sum _{x\in \{0,1\}^{n}}(-1)^{f(x)+x\cdot y}={\frac {1}{2^{n}}}\sum _{x\in \{0,1\}^{n}}(-1)^{x\cdot s+x\cdot y}={\frac {1}{2^{n}}}\sum _{x\in \{0,1\}^{n}}(-1)^{x\cdot (s\oplus y )}=1{\text{ ise }}s\oplus y={\vec {0}},\,0{\text{ aksi halde}}.}
Yana sadece doğru olduğunda sadece sıfır olmayan genlik, bu araçlar üzerinde olduğunu . Böylece, devrenin çıktısını hesaplama bazında ölçmek, gizli diziyi verir .
s
⊕
y
=
0
→
{\displaystyle s\oplus y={\vec {0}}}
s
=
y
{\görüntüleme stili s=y}
|
s
⟩
{\displaystyle |s\rangle }
s
{\görüntüleme stili s}
Ayrıca bakınız
Referanslar
<img src="https://en.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">