mqt.problemsolver 0.3.0__tar.gz → 0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/.github/codecov.yml +1 -0
  2. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/.github/workflows/coverage.yml +2 -2
  3. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/.github/workflows/deploy.yml +27 -23
  4. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/.pre-commit-config.yaml +9 -8
  5. mqt_problemsolver-0.4/PKG-INFO +298 -0
  6. mqt_problemsolver-0.4/README.md +250 -0
  7. mqt_problemsolver-0.4/img/miter_structure.png +0 -0
  8. mqt_problemsolver-0.4/notebooks/equivalence_checking/equivalence_checking_example.ipynb +102 -0
  9. mqt_problemsolver-0.4/notebooks/equivalence_checking/res_equivalence_checking.csv +21 -0
  10. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/precompilation/evaluation.ipynb +2 -0
  11. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/pyproject.toml +5 -2
  12. mqt_problemsolver-0.4/resource_estimation/RE_experiments.py +125 -0
  13. mqt_problemsolver-0.4/src/mqt/problemsolver/equivalence_checking/equivalence_checking.py +232 -0
  14. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt/problemsolver/satellitesolver/utils.py +2 -1
  15. mqt_problemsolver-0.4/src/mqt.problemsolver.egg-info/PKG-INFO +298 -0
  16. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt.problemsolver.egg-info/SOURCES.txt +6 -8
  17. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt.problemsolver.egg-info/requires.txt +5 -0
  18. mqt_problemsolver-0.4/tests/test_equivalence_checking.py +68 -0
  19. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/tests/test_satellitesolver.py +1 -1
  20. mqt.problemsolver-0.3.0/PKG-INFO +0 -229
  21. mqt.problemsolver-0.3.0/README.md +0 -185
  22. mqt.problemsolver-0.3.0/img/erc_dark.svg +0 -1120
  23. mqt.problemsolver-0.3.0/img/erc_light.svg +0 -1125
  24. mqt.problemsolver-0.3.0/img/logo-bavaria.svg +0 -60
  25. mqt.problemsolver-0.3.0/img/logo-mqv.svg +0 -2
  26. mqt.problemsolver-0.3.0/img/mqt_dark.png +0 -0
  27. mqt.problemsolver-0.3.0/img/mqt_light.png +0 -0
  28. mqt.problemsolver-0.3.0/img/tum_dark.svg +0 -130
  29. mqt.problemsolver-0.3.0/img/tum_light.svg +0 -130
  30. mqt.problemsolver-0.3.0/src/mqt.problemsolver.egg-info/PKG-INFO +0 -229
  31. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/.git_archival.txt +0 -0
  32. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/.gitattributes +0 -0
  33. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/.github/release-drafter.yml +0 -0
  34. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/.github/workflows/mypy.yml +0 -0
  35. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/.github/workflows/release-drafter.yml +0 -0
  36. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/.gitignore +0 -0
  37. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/img/framework.png +0 -0
  38. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/img/kakuro.png +0 -0
  39. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/img/satellite_mission_planning_problem.png +0 -0
  40. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/img/tsp.png +0 -0
  41. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/img/workflow_new.png +0 -0
  42. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/img/workflow_old.png +0 -0
  43. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/csp_example.ipynb +0 -0
  44. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/precompilation/precompilation_example.ipynb +0 -0
  45. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/precompilation/precompilation_paper_figures.ipynb +0 -0
  46. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/precompilation/res_qaoa.csv +0 -0
  47. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/precompilation/res_satellite.csv +0 -0
  48. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/problemsolver_paper_figures.ipynb +0 -0
  49. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/satellitesolver/evaluation.ipynb +0 -0
  50. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/satellitesolver/res_satellite_solver.csv +0 -0
  51. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/satellitesolver/res_satellite_solver_noisy.csv +0 -0
  52. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/satellitesolver/satellitesolver_example.ipynb +0 -0
  53. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/notebooks/tsp_example.ipynb +0 -0
  54. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/setup.cfg +0 -0
  55. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt/problemsolver/__init__.py +0 -0
  56. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt/problemsolver/csp.py +0 -0
  57. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt/problemsolver/partialcompiler/evaluator.py +0 -0
  58. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt/problemsolver/partialcompiler/qaoa.py +0 -0
  59. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt/problemsolver/satellitesolver/ImagingLocation.py +0 -0
  60. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt/problemsolver/satellitesolver/__init__.py +0 -0
  61. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt/problemsolver/satellitesolver/algorithms.py +0 -0
  62. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt/problemsolver/satellitesolver/evaluator.py +0 -0
  63. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt/problemsolver/tsp.py +0 -0
  64. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt.problemsolver.egg-info/dependency_links.txt +0 -0
  65. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/src/mqt.problemsolver.egg-info/top_level.txt +0 -0
  66. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/tests/test_csp.py +0 -0
  67. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/tests/test_qaoa.py +0 -0
  68. {mqt.problemsolver-0.3.0 → mqt_problemsolver-0.4}/tests/test_tsp.py +0 -0
@@ -1,5 +1,6 @@
1
1
  ignore:
2
2
  - "tests/**/*"
3
+ - "resource_estimation/**/*"
3
4
 
4
5
  coverage:
5
6
  range: 60..90
@@ -17,11 +17,11 @@ jobs:
17
17
  with:
18
18
  python-version: "3.9"
19
19
  - name: Install MQT ProblemSolver
20
- run: pip install .[coverage]
20
+ run: pip install .[coverage,tweedledum]
21
21
  - name: Generate Report
22
22
  run: pytest -v --cov --cov-config=pyproject.toml --cov-report=xml
23
23
  - name: Upload coverage to Codecov
24
- uses: codecov/codecov-action@v3
24
+ uses: codecov/codecov-action@v4
25
25
  with:
26
26
  fail_ci_if_error: true
27
27
  token: ${{ secrets.CODECOV_TOKEN }}
@@ -4,64 +4,68 @@ on:
4
4
  release:
5
5
  types: [published]
6
6
  push:
7
- branches: [main, master]
7
+ branches: [main]
8
8
  pull_request:
9
9
  workflow_dispatch:
10
10
 
11
+ concurrency:
12
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
13
+ cancel-in-progress: true
14
+
11
15
  jobs:
12
16
  build_wheel:
13
17
  name: Build wheel
14
18
  runs-on: ubuntu-latest
15
19
  steps:
16
- - uses: actions/checkout@v3
20
+ - uses: actions/checkout@v4
17
21
  with:
18
22
  fetch-depth: 0
19
- - uses: actions/setup-python@v4
20
- name: Install Python
23
+ - uses: actions/setup-python@v5
21
24
  with:
22
- python-version: "3.9"
23
- - name: Install dependencies
24
- run: python -m pip install build
25
+ python-version: "3.10"
26
+ name: Install Python
25
27
  - name: Build wheel
26
- run: python -m build --wheel
28
+ run: pipx run build --wheel
27
29
  - name: Install wheel
28
30
  run: python -m pip install --verbose dist/*.whl
29
- - uses: actions/upload-artifact@v3
31
+ - uses: actions/upload-artifact@v4
30
32
  with:
33
+ name: cibw-wheel
31
34
  path: dist/*.whl
32
35
 
33
36
  build_sdist:
34
37
  name: Build src distribution
35
38
  runs-on: ubuntu-latest
36
39
  steps:
37
- - uses: actions/checkout@v3
40
+ - uses: actions/checkout@v4
38
41
  with:
39
42
  fetch-depth: 0
40
- - uses: actions/setup-python@v4
41
- name: Install Python
43
+ - uses: actions/setup-python@v5
42
44
  with:
43
- python-version: "3.9"
44
- - name: Install dependencies
45
- run: python -m pip install build
45
+ python-version: "3.10"
46
+ name: Install Python
46
47
  - name: Build sdist
47
- run: python -m build --sdist
48
+ run: pipx run build --sdist
48
49
  - name: Install sdist
49
50
  run: python -m pip install --verbose dist/*.tar.gz
50
- - uses: actions/upload-artifact@v3
51
+ - uses: actions/upload-artifact@v4
51
52
  with:
53
+ name: cibw-sdist
52
54
  path: dist/*.tar.gz
53
55
 
54
56
  upload_pypi:
55
57
  needs: [build_wheel, build_sdist]
56
58
  runs-on: ubuntu-latest
57
59
  if: github.event_name == 'release' && github.event.action == 'published'
60
+ environment:
61
+ name: pypi
62
+ url: https://pypi.org/p/mqt.problemsolver
63
+ permissions:
64
+ id-token: write
58
65
  steps:
59
- - uses: actions/download-artifact@v3
66
+ - uses: actions/download-artifact@v4
60
67
  with:
61
- name: artifact
68
+ pattern: cibw-*
62
69
  path: dist
70
+ merge-multiple: true
63
71
  - uses: pypa/gh-action-pypi-publish@release/v1
64
- with:
65
- password: ${{ secrets.pypi_password }}
66
- skip-existing: true
67
- verbose: true
@@ -15,7 +15,7 @@ ci:
15
15
  repos:
16
16
  # Standard hooks
17
17
  - repo: https://github.com/pre-commit/pre-commit-hooks
18
- rev: "v4.5.0"
18
+ rev: "v4.6.0"
19
19
  hooks:
20
20
  - id: check-added-large-files
21
21
  - id: check-case-conflict
@@ -32,14 +32,14 @@ repos:
32
32
 
33
33
  # Handling unwanted unicode characters
34
34
  - repo: https://github.com/sirosen/texthooks
35
- rev: "0.6.3"
35
+ rev: "0.6.7"
36
36
  hooks:
37
37
  - id: fix-ligatures
38
38
  - id: fix-smartquotes
39
39
 
40
40
  # Check for spelling
41
41
  - repo: https://github.com/codespell-project/codespell
42
- rev: "v2.2.6"
42
+ rev: "v2.3.0"
43
43
  hooks:
44
44
  - id: codespell
45
45
  args: ["-L", "wille,linz"]
@@ -56,7 +56,7 @@ repos:
56
56
  types_or: [yaml, markdown, html, css, javascript, json]
57
57
 
58
58
  - repo: https://github.com/astral-sh/ruff-pre-commit
59
- rev: v0.1.13
59
+ rev: v0.6.2
60
60
  hooks:
61
61
  - id: ruff
62
62
  args: ["--fix", "--show-fixes"]
@@ -66,19 +66,19 @@ repos:
66
66
 
67
67
  # Also run Black on examples in the documentation
68
68
  - repo: https://github.com/adamchainz/blacken-docs
69
- rev: 1.16.0
69
+ rev: 1.18.0
70
70
  hooks:
71
71
  - id: blacken-docs
72
- additional_dependencies: [black==23.*]
72
+ additional_dependencies: [black==24.*]
73
73
 
74
74
  # Clean jupyter notebooks
75
75
  - repo: https://github.com/srstevenson/nb-clean
76
- rev: "3.2.0"
76
+ rev: "3.3.0"
77
77
  hooks:
78
78
  - id: nb-clean
79
79
 
80
80
  - repo: https://github.com/pre-commit/mirrors-mypy
81
- rev: v1.8.0
81
+ rev: v1.11.2
82
82
  hooks:
83
83
  - id: mypy
84
84
  files: ^(src|tests|setup.py)
@@ -89,3 +89,4 @@ repos:
89
89
  - networkx
90
90
  - mqt.ddsim
91
91
  - pytest
92
+ - pandas-stubs
@@ -0,0 +1,298 @@
1
+ Metadata-Version: 2.1
2
+ Name: mqt.problemsolver
3
+ Version: 0.4
4
+ Summary: MQT ProblemSolver - A MQT tool for Solving Problems Using Quantum Computing
5
+ Author-email: Nils Quetschlich <nils.quetschlich@tum.de>, Lukas Burgholzer <lukas.burgholzer@jku.at>
6
+ Project-URL: Homepage, https://github.com/cda-tum/mqtproblemsolver
7
+ Project-URL: Bug Tracker, https://github.com/cda-tum/mqtproblemsolver/issues
8
+ Project-URL: Discussions, https://github.com/cda-tum/mqtproblemsolver/discussions
9
+ Project-URL: Research, https://www.cda.cit.tum.de/research/quantum/
10
+ Keywords: MQT,quantum computing
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: Microsoft :: Windows
15
+ Classifier: Operating System :: MacOS
16
+ Classifier: Operating System :: POSIX :: Linux
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Intended Audience :: Science/Research
23
+ Classifier: Natural Language :: English
24
+ Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
25
+ Requires-Python: >=3.8
26
+ Description-Content-Type: text/markdown
27
+ Requires-Dist: qiskit<0.42.0,>=0.36.0
28
+ Requires-Dist: joblib
29
+ Requires-Dist: numpy
30
+ Requires-Dist: matplotlib
31
+ Requires-Dist: mqt.ddsim
32
+ Requires-Dist: networkx
33
+ Requires-Dist: python_tsp
34
+ Requires-Dist: docplex
35
+ Requires-Dist: qiskit_optimization
36
+ Requires-Dist: qiskit_aer
37
+ Requires-Dist: pandas
38
+ Provides-Extra: test
39
+ Requires-Dist: pytest>=7; extra == "test"
40
+ Provides-Extra: coverage
41
+ Requires-Dist: mqt.problemsolver[test]; extra == "coverage"
42
+ Requires-Dist: coverage[toml]~=6.5.0; extra == "coverage"
43
+ Requires-Dist: pytest-cov~=4.0.0; extra == "coverage"
44
+ Provides-Extra: dev
45
+ Requires-Dist: mqt.problemsolver[coverage]; extra == "dev"
46
+ Provides-Extra: tweedledum
47
+ Requires-Dist: tweedledum==1.0.0; extra == "tweedledum"
48
+
49
+ [![CodeCov](https://github.com/cda-tum/MQTProblemSolver/actions/workflows/coverage.yml/badge.svg)](https://github.com/cda-tum/MQTProblemSolver/actions/workflows/coverage.yml)
50
+ [![Deploy to PyPI](https://github.com/cda-tum/MQTProblemSolver/actions/workflows/deploy.yml/badge.svg)](https://github.com/cda-tum/MQTProblemSolver/actions/workflows/deploy.yml)
51
+
52
+ <p align="center">
53
+ <a href="https://mqt.readthedocs.io">
54
+ <picture>
55
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/mqt_light.png" width="60%">
56
+ <img src="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/mqt_dark.png" width="60%">
57
+ </picture>
58
+ </a>
59
+ </p>
60
+
61
+ # MQT ProblemSolver
62
+
63
+ This repository covers the implementations of multiple research papers in the domain of quantum computing:
64
+
65
+ 1. [Towards an Automated Framework for Realizing Quantum Computing Solutions](#towards-an-automated-framework-for-realizing-quantum-computing-solutions)
66
+ 2. [A Hybrid Classical Quantum Computing Approach to the Satellite Mission Planning Problem](#a-hybrid-classical-quantum-computing-approach-to-the-satellite-mission-planning-problem)
67
+ 3. [Reducing the Compilation Time of Quantum Circuits Using Pre-Compilation on the Gate Level](#reducing-the-compilation-time-of-quantum-circuits-using-pre-compilation-on-the-gate-level)
68
+ 4. [Utilizing Resource Estimation for the Development of Quantum Computing Applications](#utilizing-resource-estimation-for-the-development-of-quantum-computing-applications)
69
+ 5. [Towards Equivalence Checking of Classical Circuits Using Quantum Computing](#towards-equivalence-checking-of-classical-circuits-using-quantum-computing)
70
+
71
+ In the following, each implementation is briefly introduced.
72
+
73
+ # Towards an Automated Framework for Realizing Quantum Computing Solutions
74
+
75
+ MQT ProblemSolver provides a framework to utilize quantum computing as a technology for users with little to no
76
+ quantum computing knowledge that is part of the Munich Quantum Toolkit (MQT) developed by the [Chair for Design Automation](https://www.cda.cit.tum.de/) at the [Technical University of Munich](https://www.tum.de/).
77
+ All necessary quantum parts are embedded by domain experts while the interfaces provided are similar to the ones
78
+ classical solver provide:
79
+
80
+ <p align="center">
81
+ <img src="img/framework.png" height=300px>
82
+ </p>
83
+
84
+ When provided with a problem description, MQT ProblemSolver offers a selection of implemented quantum algorithms.
85
+ The user just has to chose one and all further (quantum) calculation steps are encapsulated within MQT ProblemSolver.
86
+ After the calculation finished, the respective solution is returned - again in the same format as classical
87
+ solvers use.
88
+
89
+ In the current implementation, two case studies are conducted:
90
+
91
+ 1. A SAT Problem: Constraint Satisfaction Problem
92
+ 2. A Graph-based Optimization Problem: Travelling Salesman Problem
93
+
94
+ ## A SAT Problem: Constraint Satisfaction Problem
95
+
96
+ This exemplary implementation can be found in the [CSP_example.ipynb](notebooks/csp_example.ipynb) Jupyter notebook.
97
+ Here, the solution to a Kakuro riddle with a 2x2 grid can be solved for arbitrary sums `s0` to `s3`:
98
+
99
+ <p align="center">
100
+ <img src="img/kakuro.png" height=100px>
101
+ </p>
102
+
103
+ MQT ProblemSolver will return valid values to `a`, `b`, `c`, and `d` if a solution exists.
104
+
105
+ ## A Graph-based Optimization Problem: Travelling Salesman Problem
106
+
107
+ This exemplary implementation can be found in the [TSP_example.ipynb](notebooks/tsp_example.ipynb) Jupyter notebook.
108
+ Here, the solution to a Travelling Salesman Problem with 4 cities can be solved for arbitrary distances `dist_1_2` to `dist_3_4`between the cities.
109
+
110
+ <p align="center">
111
+ <img src="img/tsp.png" height=200px>
112
+ </p>
113
+
114
+ MQT ProblemSolver will return the shortest path visiting all cities as a list.
115
+
116
+ # A Hybrid Classical Quantum Computing Approach to the Satellite Mission Planning Problem
117
+
118
+ Additional to the two case studies, we provide a more complex example for the satellite mission planning problem.
119
+ The goal is to maximize the accumulated values of all images taken by the satellite while it is often not possible
120
+ to take all images since the satellite must rotate and adjust its optics.
121
+
122
+ In the following example, there are five to-be-captured locations which their assigned value.
123
+
124
+ <p align="center">
125
+ <img src="img/satellite_mission_planning_problem.png" height=200px>
126
+ </p>
127
+
128
+ # Reducing the Compilation Time of Quantum Circuits Using Pre-Compilation on the Gate Level
129
+
130
+ Every quantum computing application must be encoded into a quantum circuit and then compiled for a specific device.
131
+ This lengthy compilation process is a key bottleneck and intensifies for recurring problems---each of which requires
132
+ a new compilation run thus far.
133
+
134
+ <p align="center">
135
+ <img src="img/workflow_old.png">
136
+ </p>
137
+
138
+ Pre-compilation is a promising approach to overcome this bottleneck.
139
+ Beginning with a problem class and suitable quantum algorithm, a **predictive encoding** scheme is applied to encode a
140
+ representative problem instance into a general-purpose quantum circuit for that problem class.
141
+ Once the real problem instance is known, the previously constructed circuit only needs to be
142
+ **adjusted**—with (nearly) no compilation necessary:
143
+
144
+ <p align="center">
145
+ <img src="img/workflow_new.png">
146
+ </p>
147
+ Following this approach, we provide a pre-compilation module that can be used to precompile QAOA circuits
148
+ for the MaxCut problem.
149
+
150
+ # Utilizing Resource Estimation for the Development of Quantum Computing Applications
151
+
152
+ Resource estimation is a promising alternative to actually execute quantum circuits on real quantum hardware which is
153
+ currently restricted by the number of qubits and the error rates. By estimating the resources needed for a quantum circuit,
154
+ the development of quantum computing applications can be accelerated without the need to wait for the availability of
155
+ large-enough quantum hardware.
156
+
157
+ In `resource_estimation/RE_experiments.py`, we evaluate the resources to calculate the ground state energy of a
158
+ Hamiltonian to chemical accuracy of 1 mHartree using the qubitization quantum simulation algorithm. The Hamiltonian
159
+ describes the 64 electron and 56 orbital active space of one of the stable intermediates in the ruthenium-catalyzed
160
+ carbon fixation cycle
161
+
162
+ In this evaluation, we investigate
163
+
164
+ - different qubit technologies,
165
+ - the impact of the maximal number of T factories,
166
+ - different design trade-offs, and
167
+ - hypothesis on how quantum hardware might improve and how it affects the required resources.
168
+
169
+ # Towards Equivalence Checking of Classical Circuits Using Quantum Computing
170
+
171
+ Equivalence checking, i.e., verifying whether two circuits realize the same functionality or not, is a typical task in the semiconductor industry. Due to the fact, that the designs grow faster than the ability to efficiently verify them, all alternative directions to close the resulting verification gap should be considered. In this work, we consider the problem through the miter structure. Here, two circuits to be checked are applied with the same primary inputs. Then, for each pair of to-be-equal output bits, an exclusive-OR (XOR) gate is applied-evaluating to 1 if the two outputs generate different values (which only happens in the case of non-equivalence). By OR-ing the outputs of all these XOR gates, eventually an indicator results that shows whether both circuits are equivalent. Then, the goal is to determine an input assignment so that this indicator evaluates to 1 (providing a counter example that shows non-equivalence) or to prove that no such assignment exists (proving equivalence).
172
+
173
+ <p align="center">
174
+ <img src="img/miter_structure.png" height=250px>
175
+ </p>
176
+
177
+ In the `equivalence_checking` module, our approach to this problem by utilizing quantum computing is implemented. There are two different ways to run this code.
178
+
179
+ - One to test, how well certain parameter combinations work. The parameters consist of the number of bits of the circuits to be verified, the threshold parameter delta (which is explained in detail in the paper), the fraction of input combinations that induce non-equivalence of the circuits (further called "counter examples"), the number of shots to run the quantum circuit for and the number of individual runs of the experiment. Multiple parameter combinations can be tested and exported as a .csv-file at a provided location.
180
+ - A second one to actually input a miter expression (in form of a string) together with some parameters independent from the miter (shots and delta) and use our approach to find the counter examples (if the circuits are non-equivalent).
181
+
182
+ These two implementations are provided by the functions `try_parameter_combinations()` and `find_counter_examples()`, respectively. Examples for their usages are shown in `notebooks/equivalence_checking/example.ipynb`.
183
+
184
+ # Usage
185
+
186
+ MQT ProblemSolver is available via [PyPI](https://pypi.org/project/mqt.problemsolver/):
187
+
188
+ ```console
189
+ (venv) $ pip install mqt.problemsolver
190
+ ```
191
+
192
+ # References
193
+
194
+ In case you are using MQT ProblemSolver in your work, we would be thankful if you referred to it by citing the following publication:
195
+
196
+ ```bibtex
197
+ @INPROCEEDINGS{quetschlich2023mqtproblemsolver,
198
+ title = {{Towards an Automated Framework for Realizing Quantum Computing Solutions}},
199
+ author = {N. Quetschlich and L. Burgholzer and R. Wille},
200
+ eprint = {2210.14928},
201
+ archivePrefix = {arXiv},
202
+ year = {2023},
203
+ booktitle = {International Symposium on Multiple-Valued Logic (ISMVL)},
204
+ }
205
+ ```
206
+
207
+ which is also available on arXiv:
208
+ [![a](https://img.shields.io/static/v1?label=arXiv&message=2210.14928&color=inactive&style=flat-square)](https://arxiv.org/abs/2210.14928)
209
+
210
+ 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:
211
+
212
+ ```bibtex
213
+ @INPROCEEDINGS{quetschlich2023satellite,
214
+ title = {{A Hybrid Classical Quantum Computing Approach to the Satellite Mission Planning Problem}},
215
+ author = {N. Quetschlich and V. Koch and L. Burgholzer and R. Wille},
216
+ eprint = {2308.00029},
217
+ archivePrefix = {arXiv},
218
+ year = {2023},
219
+ booktitle = {IEEE International Conference on Quantum Computing and Engineering (QCE)},
220
+ }
221
+ ```
222
+
223
+ which is also available on arXiv:
224
+ [![a](https://img.shields.io/static/v1?label=arXiv&message=2308.00029&color=inactive&style=flat-square)](https://arxiv.org/abs/2308.00029)
225
+
226
+ In case you are using our Pre-Compilation approach, we would be thankful if you referred to it by citing the following publication:
227
+
228
+ ```bibtex
229
+ @INPROCEEDINGS{quetschlich2023precompilation,
230
+ title = {{Reducing the Compilation Time of Quantum Circuits Using Pre-Compilation on the Gate Level}},
231
+ author = {N. Quetschlich and L. Burgholzer and R. Wille},
232
+ eprint = {2305.04941},
233
+ archivePrefix = {arXiv},
234
+ year = {2023},
235
+ booktitle = {IEEE International Conference on Quantum Computing and Engineering (QCE)},
236
+ }
237
+ ```
238
+
239
+ which is also available on arXiv:
240
+ [![a](https://img.shields.io/static/v1?label=arXiv&message=2305.04941&color=inactive&style=flat-square)](https://arxiv.org/abs/2305.04941)
241
+
242
+ In case you are using our Resources Estimation approach, we would be thankful if you referred to it by citing the following publication:
243
+
244
+ ```bibtex
245
+ @misc{quetschlich2024resource_estimation,
246
+ title = {{Utilizing Resource Estimation for the Development of Quantum Computing Applications}},
247
+ author = {N. Quetschlich and M. Soeken and P. Murali and R. Wille},
248
+ eprint = {2402.12434},
249
+ archivePrefix = {arXiv},
250
+ year = {2024},
251
+ booktitle = {IEEE International Conference on Quantum Computing and Engineering (QCE)},
252
+ }
253
+ ```
254
+
255
+ which is also available on arXiv:
256
+ [![a](https://img.shields.io/static/v1?label=arXiv&message=2402.12434&color=inactive&style=flat-square)](https://arxiv.org/abs/2402.12434)
257
+
258
+ In case you are using our Equivalence-Checking approach, we would be thankful if you referred to it by citing the following publication:
259
+
260
+ ```bibtex
261
+ @INPROCEEDINGS{quetschlich2024equivalence_checking,
262
+ title = {{Towards Equivalence Checking of Classical Circuits Using Quantum Computing}},
263
+ author = {N. Quetschlich and T. Forster and A. Osterwind and D. Helms and R. Wille},
264
+ eprint = {2408.14539},
265
+ archivePrefix = {arXiv},
266
+ year = {2024},
267
+ booktitle = {IEEE International Conference on Quantum Computing and Engineering (QCE)},
268
+ }
269
+ ```
270
+
271
+ which is also available on arXiv:
272
+ [![a](https://img.shields.io/static/v1?label=arXiv&message=2408.14539&color=inactive&style=flat-square)](https://arxiv.org/abs/2408.14539)
273
+
274
+ ## Acknowledgements
275
+
276
+ This project received funding from the European Research Council (ERC) under the European Union's Horizon 2020 research
277
+ and innovation program (DA QC, grant agreement No. 101001318 and MILLENION, grant agreement No. 101114305), was part
278
+ of the Munich Quantum Valley, which is supported by the Bavarian state government with funds from the Hightech Agenda
279
+ Bayern Plus, and has been supported by the BMWK on the basis of a decision by the German Bundestag through project
280
+ QuaST, as well as by the BMK, BMDW, the State of Upper Austria in the frame of the COMET program, and the QuantumReady
281
+ project within Quantum Austria (managed by the FFG).
282
+
283
+ <p align="center">
284
+ <picture>
285
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/tum_dark.svg" width="28%">
286
+ <img src="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/tum_light.svg" width="28%" alt="TUM Logo">
287
+ </picture>
288
+ <picture>
289
+ <img src="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/logo-bavaria.svg" width="16%" alt="Coat of Arms of Bavaria">
290
+ </picture>
291
+ <picture>
292
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/erc_dark.svg" width="24%">
293
+ <img src="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/erc_light.svg" width="24%" alt="ERC Logo">
294
+ </picture>
295
+ <picture>
296
+ <img src="https://raw.githubusercontent.com/cda-tum/mqt/main/docs/_static/logo-mqv.svg" width="28%" alt="MQV Logo">
297
+ </picture>
298
+ </p>