Tip
If you have trouble deciding between Anaconda and Miniconda, please refer to the table below
Anaconda | Miniconda |
---|---|
New to conda and/or Python | Familiar with conda and/or Python |
Not familiar with using terminal and prefer GUI | Comfortable using terminal |
Like the convenience of having Python and 1,500+ scientific packages automatically installed at once | Want fast access to Python and the conda commands and plan to sort out the other programs later |
Have the time and space (a few minutes and 3 GB) | Don't have the time or space to install 1,500+ packages |
Don't want to individually install each package | Don't mind individually installing each package |
Typing out entire Conda commands can sometimes be tedious, so I wrote a shell script (conda_shortcuts.sh
on GitHub Gist) to define shortcuts for commonly used Conda commands.
Example: Delete/remove a conda environment named test_env
- Shortcut command
rmenv test_env
- Manually typing out the entire command
conda env remove -n test_env && rm -rf $(conda info --base)/envs/test_env
The shortcut has 80.8% less characters!
- Verify that conda is installed
conda --version
- Ensure conda is up to date
conda update conda
- Enter the directory where you want the repository (
grovers-algorithm
) to be cloned- POSIX
cd ~/path/to/directory
- Windows
cd C:\Users\user\path\to\directory
- POSIX
- Clone the repository (
grovers-algorithm
), then enter (i.e.cd
command)grovers-algorithm
directorygit clone https://github.com/lynkos/grovers-algorithm.git && cd grovers-algorithm
- Create a conda virtual environment from
environment.yml
conda env create -f environment.yml
- Activate the virtual environment (
grovers_env
)conda activate grovers_env
- Confirm that the virtual environment (
grovers_env
) is active- If active, the virtual environment's name should be in parentheses () or brackets [] before your command prompt, e.g.
(grovers_env) $
- If necessary, see which environments are available and/or currently active (active environment denoted with asterisk (*))
OR
conda info --envs
conda env list
- If active, the virtual environment's name should be in parentheses () or brackets [] before your command prompt, e.g.
Tip
If you're unsure about which subsection(s) to follow, please refer to the table below
Visual Studio Code | Command Line |
---|---|
Beginner/User-friendly | Recommended if familiar with using terminals/shells/CLIs |
GUI | CLI |
Click a button to run program | Execute a command in terminal/shell/CLI to run program |
Note
Although they both perform the same function, there's a discernable difference between grovers_algorithm.py
and grovers_algorithm.ipynb
. The former is a Python script, the latter is a Jupyter notebook.
python src/grovers_algorithm.py
Command Line Arguments
Option | Type | Description | Default |
---|---|---|---|
-H, --help |
Show help message and exit | ||
-T, --title <title> |
str |
Window title | "Grover's Algorithm" |
-n, --n-qubits <n_qubits> |
int |
Number of qubits | 5 |
-s, --search <search> |
int |
Nonnegative integers to search for | 11 9 0 3 (i.e., { 11, 9, 0, 3 }) |
-S, --shots <shots> |
int |
Number of simulations | 1000 |
-f, --font-size <font_size> |
int |
Histogram's font size | 10 |
-p, --print |
bool |
Whether or not to print quantum circuit(s) | False |
-c, --combine |
bool |
Whether to combine all non-winning states into 1 bar labeled "Others" or not | False |
- Open
grovers_algorithm.py
- Run
grovers_algorithm.py
: Click▷
(i.e.Play
button) in the upper-right corner
- Open the Command Palette with the relevant keyboard shortcut
- Mac
⌘ + Shift + P
- Windows
CTRL + Shift + P
- Mac
- Search and select
Python: Select Interpreter
- Select the virtual environment (
grovers_env
) - Open
grovers_algorithm.ipynb
- Confirm
grovers_env
is the selected kernel - Run
grovers_algorithm.ipynb
by clickingRun All
- Install
ipykernel
in the virtual environment (grovers_env
)conda install -n grovers_env ipykernel
- Add the virtual environment (
grovers_env
) as a Jupyter kernelpython -m ipykernel install --user --name=grovers_env
- Open
grovers_algorithm.ipynb
in the currently running notebook server, starting one if necessaryjupyter notebook src/grovers_algorithm.ipynb
- Select the virtual environment (
grovers_env
) as the kernel before runninggrovers_algorithm.ipynb
- [Optional] Deactivate the virtual environment (
grovers_env
) to clean up and remove itconda deactivate
- Close the terminal
These serve as example outputs/results of the running Grover's algorithm (i.e. files in src
)
Generated by grovers_algorithm.ipynb
(i.e. Jupyter notebook)
![Oracle circuit](/lynkos/grovers-algorithm/raw/main/assets/circuits/oracle.png)
![Diffuser circuit](/lynkos/grovers-algorithm/raw/main/assets/circuits/diffuser.png)
![Grover circuit](/lynkos/grovers-algorithm/raw/main/assets/circuits/grover.png)
Generated by grovers_algorithm.ipynb
(i.e. Jupyter notebook)
![Bloch sphere](/lynkos/grovers-algorithm/raw/main/assets/figures/bloch.png)
![City plot](/lynkos/grovers-algorithm/raw/main/assets/figures/city.png)
![Hinton plot](/lynkos/grovers-algorithm/raw/main/assets/figures/hinton.png)
![Q-Sphere](/lynkos/grovers-algorithm/raw/main/assets/figures/q-sphere.png)
Histograms visualize the outcome/results of 1000 simulations of Grover's algorithm
Generated by grovers_algorithm.py
(i.e. Python script)
Tip
Hovering above a bar in the histogram displays that state's frequency
![Histogram of the outcome of 1000 simulations of Grover's algorithm](/lynkos/grovers-algorithm/raw/main/assets/simulations/py.png)
Histogram of the outcome of 1000 simulations of Grover's algorithm
![Histogram of the outcome of 1000 simulations of Grover's algorithm, with all non-target states combined into a single bar](/lynkos/grovers-algorithm/raw/main/assets/simulations/py_combined.png)
Histogram of the outcome of 1000 simulations of Grover's algorithm, with all non-target states combined into a single bar
Generated by grovers_algorithm.ipynb
(i.e. Jupyter notebook)
![Histogram of the outcome of 1000 simulations of Grover's algorithm in Jupyter notebook](/lynkos/grovers-algorithm/raw/main/assets/simulations/ipynb.png)
Histogram of the outcome of 1000 simulations of Grover's algorithm
- Anaconda Documentation
- Conda Documentation
- Getting Started with Conda
- Jupyter Notebook Documentation
- Jupyter Project Documentation [PDF]
- Technical Support - Jupyter Google Group
- Qiskit Documentation
- Documentation for Visual Studio Code
- Using Jupyter Notebooks in Visual Studio Code
Special thanks to Simanraj Sadana for "Grover's search algorithm for n qubits with optimal number of iterations", which has been a helpful reference and an informative read
Distributed under the MIT License, Copyright © 2024 Kiran Brahmatewari