An implementation of the Bernstein-Vazirani quantum algorithm.
- The 1st section uses for n=4 qubits with the secret string 1011
- The 2nd section is applicable to any secret string of any length
The Bernstein-Vazirani algorithm is an example of a quantum algorithm that outperforms classical methods.
- Say you have a secret string of 1's and 0's. Then put the secret string in a box (function).
- Now the computer wants to determine what's inside the box by guessing the secret number.
Classically,
- the comp can apply AND operations by guessing n attempts
- or exponentially: for n-bit secretNum, tries from 0 to 2^n-1
Using Bernstein-Vazirani's alg
- finds secretNum in 1 attempt (regardless of secretNum size)
- initialize 1st n qubits in |0> state, & last qubit in |1> state
- apply Hadamard gates to all qubits
- build oracle (box containing secret number)
- measure the 1st n qubits in the Bell basis (applying h gates before measurements)
n=4 qubits, secret string: 1011
![Screenshot 2023-07-17 at 5 05 39 PM](https://private-user-images.githubusercontent.com/52623824/254080902-789c100e-d150-4455-b7e9-443d45b5f716.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1MDc4MDYsIm5iZiI6MTczOTUwNzUwNiwicGF0aCI6Ii81MjYyMzgyNC8yNTQwODA5MDItNzg5YzEwMGUtZDE1MC00NDU1LWI3ZTktNDQzZDQ1YjVmNzE2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDA0MzE0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJjYzZmZGZhMDJmNDg0ZTA5YTExYWVjMmI4MDllNDJlNGMzZjlmZjMwYzRiMWZkZThmNWRkNjQzYmY1YzgxNmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.EiHTu7eAIFprsZgS3GCtDpdQgOhCXGIgSQ-gLUq2Up0)
output: {'1011': 1}
n=11 qubits, secret string: 10111100101
![Screenshot 2023-07-17 at 5 08 21 PM](https://private-user-images.githubusercontent.com/52623824/254081086-c6fda9c9-da3d-46f9-ba2e-9eefd012cc1a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1MDc4MDYsIm5iZiI6MTczOTUwNzUwNiwicGF0aCI6Ii81MjYyMzgyNC8yNTQwODEwODYtYzZmZGE5YzktZGEzZC00NmY5LWJhMmUtOWVlZmQwMTJjYzFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDA0MzE0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk2ZDFhYjQ3NmJjMzRkZTgzNDY3OWU0MGY2OGU5MGU5ZTExNjgzNjAxNjA1NTIxNmI1NGVhNWM5MDdjMDNkMjUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.k6SOvt0M6rTNSNZiLtjbowjl8zzavr87HTK1X08-xPc)
The histogram shows how 100% of the results contain the secret number (this example uses 1 shot).
![Screenshot 2023-07-17 at 5 09 19 PM](https://private-user-images.githubusercontent.com/52623824/254081394-cafbd288-1b23-4aae-86de-e1206389fb6f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1MDc4MDYsIm5iZiI6MTczOTUwNzUwNiwicGF0aCI6Ii81MjYyMzgyNC8yNTQwODEzOTQtY2FmYmQyODgtMWIyMy00YWFlLTg2ZGUtZTEyMDYzODlmYjZmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDA0MzE0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg3Njc2NTNmYTFlZTVlMjY2MDJiNmEwOGU0MjMyMzFkNTJkYjdhNzc3NDg1NThkZDliNTZjNzE4MjljNmUyMGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.I1Q76zBOk3DJv9Wheywg8_ImaNXMjSYX44ACdfqRtfY)
output: {'10111100101': 1}