This repository contains an implementation of an adiabatic version of Simon's Algorithm. A complete description of the algorithm can be found in the paper associated with this project: https://arxiv.org/abs/2504.10771.
Let
This repository provides an adiabatic implementation of Simon's algorithm, which uses quantum adiabatic evolution to find the hidden string
The repository structure is as follows:
adiabatic-simons-algorithm/
├── src/ # Source code for the adiabatic Simon's algorithm
│ ├── analyticalSolver.py # Solve Simon's QUBO exactly
│ ├── circuitSolver.py # Solve Simon's problem via gate-based circuits
│ ├── dwaveEmbedding.py # View the embedding of a QUBO on a D-Wave device
│ ├── dwaveProcessing.py # Process data generated through dwaveSolver.py
│ ├── dwaveSolver.py # Solve Simon's QUBO on D-Wave hardware or simulator
│ ├── formatDataForPlotting.ipynb # Format data for plotting with generatePlots.ipynb
│ ├── generatePlots.ipynb # Generate clean plots to save in the figs/ folder
│ └── QUBOforExternalSolver.py # Generate QUBOs to offload to external solvers
├── APIs/ # API folder (must be created locally)
│ ├── dwave.py # D-Wave API file (must be created locally)
├── data/ # Contains data files
├── figs/ # Contains figures in PDF format
├── QUBOs/ # Contains text files for balanced and random QUBOS
├── archive/ # Old code, data, and figure files
├── .gitignore # Git ignore file (e.g., system files)
├── LICENSE # License file
└── README.md # Project description and instructions
Of these files, those in the source directory are the most important.
In particular, the generateQUBO() function in the src/QUBOforExternalSolver.py file generates QUBOs for Simon's problem of varying sizes and penalty parameters.
These QUBOs are saved in the QUBOs/ directory and can be imported into external solvers.
Experimental results indicate that a size
To run the experiments on a D-Wave machine, provide your API token in the APIs/dwave.txt file, then run python src/dwaveSolver.py.
To run the experiments on a D-Wave simulator, run python src/simulatorSolver.py.
To process data obtained through experiments (including the data already in the data/ directory), run python src/dataProcessing.py.
To compute the analytical solution to the problem, run python src/analyticalSolver.py.
This project is licensed under the MIT License — see the LICENSE file for details.