Bernstein–Vazirani algorithm

From HandWiki
Short description: Quantum algorithm
Apply the function using the oracle to a superposition of states and determine the secret string through measurement

The Bernstein–Vazirani algorithm, which solves the Bernstein–Vazirani problem, is a quantum algorithm invented by Ethan Bernstein and Umesh Vazirani in 1997.[1] It is a restricted version of the Deutsch–Jozsa algorithm where instead of distinguishing between two different classes of functions, it tries to learn a string encoded in a function.[2] The Bernstein–Vazirani algorithm was designed to prove an oracle separation between complexity classes BQP and BPP.[1]

Problem statement

Given an oracle that implements a function f:{0,1}n→{0,1} in which f(x) is promised to be the dot product between x and a secret string s∈{0,1}n modulo 2, f(x)=x⋅s=x1s1⊕x2s2⊕⋯⊕xnsn, find s.

Algorithm

Classically, the most efficient method to find the secret string is by evaluating the function n times with the input values x=2i for all i∈{0,1,…,n−1}:[2]

f(1000⋯0n)=s1f(0100⋯0n)=s2f(0010⋯0n)=s3⋮f(0000⋯1n)=sn

In contrast to the classical solution which needs at least n queries of the function to find s, only one query is needed using quantum computing. The quantum algorithm is as follows: [2]

Apply a Hadamard transform to the n qubit state |0⟩⊗n to get

12n∑x=02n−1|x⟩.

Next, apply the oracle Uf which transforms |x⟩→(−1)f(x)|x⟩. This can be simulated through the standard oracle that transforms |b⟩|x⟩→|b⊕f(x)⟩|x⟩ by applying this oracle to |0⟩−|1⟩2|x⟩. (⊕ denotes addition mod two.) This transforms the superposition into

12n∑x=02n−1(−1)f(x)|x⟩.

Another Hadamard transform is applied to each qubit which makes it so that for qubits where si=1, its state is converted from |−⟩ to |1⟩ and for qubits where si=0, its state is converted from |+⟩ to |0⟩. To obtain s, a measurement in the standard basis ({|0⟩,|1⟩}) is performed on the qubits.

Graphically, the algorithm may be represented by the following diagram, where H⊗n denotes the Hadamard transform on n qubits:

|0⟩n→H⊗n12n∑x∈{0,1}n|x⟩→Uf12n∑x∈{0,1}n(−1)f(x)|x⟩→H⊗n12n∑x,y∈{0,1}n(−1)f(x)+x⋅y|y⟩=|s⟩

The reason that the last state is |s⟩ is because, for a particular y,

12n∑x∈{0,1}n(−1)f(x)+x⋅y=12n∑x∈{0,1}n(−1)x⋅s+x⋅y=12n∑x∈{0,1}n(−1)x⋅(s⊕y)=1 if s⊕y=0→,0 otherwise.

Since s⊕y=0→ is only true when s=y, this means that the only non-zero amplitude is on |s⟩. So, measuring the output of the circuit in the computational basis yields the secret string s.

A generalization of Bernstein–Vazirani problem has been proposed that involves finding one or more secret keys using a probabilistic oracle. [3] This is an interesting problem for which a quantum algorithm can provide efficient solutions with certainty or with a high degree of confidence, while classical algorithms completely fail to solve the problem in the general case.

Classical vs. quantum complexity

The Bernstein-Vazirani problem is usually stated in its non-decision version. In this form, it is an example of a problem solvable by a Quantum Turing machine (QTM) with O(1) queries to the problem's oracle, but for which any Probabilistic Turing machine (PTM) algorithm must make Ω(n) queries.

To provide a separation between BQP and BPP, the problem must be reshaped into a decision problem (as these complexity classes refer to decision problems). This is accomplished with a recursive construction and the inclusion of a second, random oracle.[1][4] The resulting decision problem is solvable by a QTM with O(n) queries to the problem's oracle, while a PTM must make Ω(nlog⁡n) queries to solve the same problem. Therefore, Bernstein-Vazirani provides a super-polynomial separation between BPP and BQP.

Bernstein-Vazirani algorithm Qiskit implementation

The quantum circuit shown here is from a simple example of how the Bernstein-Vazirani algorithm can be implemented in Python using Qiskit, an open-source quantum computing software development framework by IBM.

Bernstein-Vazirani quantum circuit

See also

References

  1. ↑ 1.0 1.1 1.2 Ethan Bernstein and Umesh Vazirani (1997). "Quantum Complexity Theory". SIAM Journal on Computing 26 (5): 1411–1473. doi:10.1137/S0097539796300921. 
  2. ↑ 2.0 2.1 2.2 S D Fallek, C D Herold, B J McMahon, K M Maller, K R Brown, and J M Amini (2016). "Transport implementation of the Bernstein–Vazirani algorithm with ion qubits". New Journal of Physics 18. doi:10.1088/1367-2630/aab341. 
  3. ↑ Alok Shukla and Prakash Vedula (2023). "A generalization of Bernstein--Vazirani algorithm with multiple secret keys and a probabilistic oracle". Quantum Information Processing 22:244 (6): 1–18. doi:10.1007/s11128-023-03978-3. Bibcode: 2023QuIP...22..244S. 
  4. ↑ Bacon, Dave (2006). "CSE 599d - Quantum Computing The Recursive and Nonrecursive Bernstein-Vazirani Algorithm". https://courses.cs.washington.edu/courses/cse599d/06wi/lecturenotes7.pdf.