Skip to main content

CodeCov Deploy to PyPI

MQT ProblemSolver

MQT ProblemSolver is a framework to utilize quantum computing as a technology for users with little to no quantum computing knowledge. All necessary quantum parts are embedded by domain experts while the interfaces provided are similar to the ones classical solver provide:

When provided with a problem description, MQT ProblemSolver offers a selection of implemented quantum algorithms. The user just has to chose one and all further (quantum) calculation steps are encapsulated within MQT ProblemSolver. After the calculation finished, the respective solution is returned - again in the same format as classical solvers use.

In the current implementation, two case studies are conducted:

  1. A SAT Problem: Constraint Satisfaction Problem
  2. A Graph-based Optimization Problem: Travelling Salesman Problem

A SAT Problem: Constraint Satisfaction Problem

This exemplary implementation can be found in the CSP_example.ipynb Jupyter notebook. Here, the solution to a Kakuro riddle with a 2x2 grid can be solved for arbitrary sums s0 to s3:

MQT ProblemSolver will return valid values to a, b, c, and d if a solution exists.

A Graph-based Optimization Problem: Travelling Salesman Problem

This exemplary implementation can be found in the TSP_example.ipynb Jupyter notebook. Here, the solution to a Travelling Salesman Problem with 4 cities can be solved for arbitrary distances dist_1_2 to dist_3_4between the cities.

MQT ProblemSolver will return the shortest path visiting all cities as a list.

Satellite Mission Planning Problem

Additional to the two case studies, we provide a more complex example for the satellite mission planning problem. The goal is to maximize the accumulated values of all images taken by the satellite while it is often not possible to take all images since the satellite must rotate and adjust its optics.

In the following example, there are five to-be-captured locations which their assigned value.

Pre-Compilation

Every quantum computing application must be encoded into a quantum circuit and then compiled for a specific device. This lengthy compilation process is a key bottleneck and intensifies for recurring problems---each of which requires a new compilation run thus far.

Pre-compilation is a promising approach to overcome this bottleneck. Beginning with a problem class and suitable quantum algorithm, a predictive encoding scheme is applied to encode a representative problem instance into a general-purpose quantum circuit for that problem class. Once the real problem instance is known, the previously constructed circuit only needs to be adjusted—with (nearly) no compilation necessary:

Following this approach, we provide a pre-compilation module that can be used to precompile QAOA circuits for the MaxCut problem.

Usage

MQT ProblemSolver is available via PyPI:

(venv) $ pip install mqt.problemsolver

Repository Structure

.
├── src
│ └── mqt
│     └── problemsolver
│        └── satelitesolver
│        │   └── ...
│        └── precompilation
│        │   └── ...
│        └── csp.py
│        └── tsp.py
└── notebooks
     └── satelitesolver
     │   └── ...
     └── precompilation
     │   └── ...
     └── problemsolver_paper_figures.ipynb
     └── csp_example.ipynb
     └── tsp_example.ipynb

References

In case you are using MQT ProblemSolver in your work, we would be thankful if you referred to it by citing the following publication:

@INPROCEEDINGS{quetschlich2023mqtproblemsolver,
    title     = {{Towards an Automated Framework for Realizing Quantum Computing Solutions}},
    author    = {N. Quetschlich and L. Burgholzer and R. Wille},
    booktitle = {International Symposium on Multiple-Valued Logic (ISMVL)},
    year      = {2023},
}

which is also available on arXiv: a

In case you are using our Pre-Compilation approach, we would be thankful if you referred to it by citing the following publication:

@INPROCEEDINGS{quetschlich2023precompilation,
    title     = {{Reducing the Compilation Time of Quantum Circuits Using Pre-Compilation on the Gate Level}},
    author    = {N. Quetschlich and L. Burgholzer and R. Wille},
    booktitle = {IEEE International Conference on Quantum Computing and Engineering (QCE)},
    year      = {2023},
}

which is also available on arXiv: a

In case you are using our Satellite Mission Planning Problem approach, we would be thankful if you referred to it by citing the following publication:

@INPROCEEDINGS{quetschlich2023satellite,
    title     = {{A Hybrid Classical Quantum Computing Approach to the Satellite Mission Planning Problem}},
    author    = {N. Quetschlich and V. Koch and L. Burgholzer and R. Wille},
    booktitle = {IEEE International Conference on Quantum Computing and Engineering (QCE)},
    year      = {2023},
}

which is also available on arXiv: a

Acknowledgements

The Munich Quantum Toolkit has been supported by the European Research Council (ERC) under the European Union's Horizon 2020 research and innovation program (grant agreement No. 101001318), the Bavarian State Ministry for Science and Arts through the Distinguished Professorship Program, as well as the Munich Quantum Valley, which is supported by the Bavarian state government with funds from the Hightech Agenda Bayern Plus.

Metadata

Release files for mqt-problemsolver 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mqt-problemsolver 0.3.0
File Size Uploaded
mqt.problemsolver-0.3.0.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for mqt-problemsolver 0.3.0
File Interpreter ABI Platform
mqt.problemsolver-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / mqt.problemsolver-0.3.0.tar.gz

Download URL mqt.problemsolver-0.3.0.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
e43c7bf4cb02c2afbfb8d884cd8f719f6f1df54029ee1c9f472d7e31daad22c8
BLAKE2b-256 checksum
How to use checksums
76b964647648cd98ab720e7a2df74a51c19c7de1fe2446c8a3b479b2d96e8600
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.7

Release files / mqt.problemsolver-0.3.0-py3-none-any.whl

Download URL mqt.problemsolver-0.3.0-py3-none-any.whl
Size 20.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fea3b3033b4ee50da637eb083a38d56358f6a31302efdeedbbc256d37b2d8dfe
BLAKE2b-256 checksum
How to use checksums
bfd922d6c76756d163f5fe8336b221ea2bbf81e21a6fe0f4ed04e40ef3f6682e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.7

Release history Release notifications | RSS feed

0.6.0

2 release files

0.5.0

2 release files

0.4

2 release files

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page