Implement the Bernstein-Vazirani algorithm to find the secret value, 170. (Hint: use the decimal to binary utility).
Posted: Sat Aug 12, 2023 4:41 am
The Bernstein-Vazirani algorithm efficiently finds the secret value of a black-box function. In this case, the secret value is 170, which can be represented in binary as '10101010'.
Here's the implementation of the Bernstein-Vazirani algorithm to find the secret value 170:
When you run this code, you should observe that the measurement result matches the secret value '10101010', which is 170 in decimal. The output should be something like {'10101010': 1}, indicating that the algorithm successfully determined the secret value using the Bernstein-Vazirani algorithm.
You can modify the secret_value variable to experiment with different secret values and test the algorithm's performance.
Here's the implementation of the Bernstein-Vazirani algorithm to find the secret value 170:
Code: Select all
from qiskit import QuantumCircuit, Aer, execute
# Define the secret value (170 in binary: '10101010')
secret_value = '10101010'
# Determine the number of qubits needed
n = len(secret_value)
# Create a quantum circuit with n+1 qubits (n input qubits and 1 ancillary qubit)
circuit = QuantumCircuit(n+1, n)
# Apply Hadamard gates to input qubits
circuit.h(range(n))
# Apply the oracle for the secret value
for i, bit in enumerate(secret_value):
if bit == '1':
circuit.cx(i, n)
# Apply Hadamard gates again to input qubits
circuit.h(range(n))
# Measure the input qubits
circuit.measure(range(n), range(n))
# Simulate the circuit
simulator = Aer.get_backend('qasm_simulator')
job = execute(circuit, simulator, shots=1)
# Get and print the measurement result
result = job.result().get_counts()
print("Measured Result:", result)
You can modify the secret_value variable to experiment with different secret values and test the algorithm's performance.