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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMDU1ODYsIm5iZiI6MTczOTIwNTI4NiwicGF0aCI6Ii81MjYyMzgyNC8yNTQwODA5MDItNzg5YzEwMGUtZDE1MC00NDU1LWI3ZTktNDQzZDQ1YjVmNzE2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDE2MzQ0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI2NzFiNTE5NGE2NjlkZDQxNGQxNzA2MWU3MDI5MzU1NDMyOWRkYzYxZTBmNDM3NmUxOGEyMjljMDNiY2IyNzgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.fLAQ36mHUyE80Dmkym-xRlivHM3hyhoZNjWQqkRHi8s)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMDU1ODYsIm5iZiI6MTczOTIwNTI4NiwicGF0aCI6Ii81MjYyMzgyNC8yNTQwODEwODYtYzZmZGE5YzktZGEzZC00NmY5LWJhMmUtOWVlZmQwMTJjYzFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDE2MzQ0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVlOWRlOWNiNGMwMzc4M2RiY2UxZDMwNTYxNDRlMDlhMjVlMmJiZjhhM2RlMTNiYjY0ZmU2YWU5Y2RjYWJkZGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Y_Sete4TyDCFU56AhteYgq6yuVh8F4UjBo9OofKaaPo)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMDU1ODYsIm5iZiI6MTczOTIwNTI4NiwicGF0aCI6Ii81MjYyMzgyNC8yNTQwODEzOTQtY2FmYmQyODgtMWIyMy00YWFlLTg2ZGUtZTEyMDYzODlmYjZmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDE2MzQ0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVlZDVmMTExNjk5NWUyMmQ2ZThhOTA1YzZmMjRkNzVjMzNjMTJhNDM5ZDE0M2IxMjVhNThiNzM0ZGI3ZDZlN2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.5yCI3PYtiaSayLhHYxOgq0Czuxniup9jzjf2SBRzjdA)
output: {'10111100101': 1}