mqt.problemsolver.csp¶
Module Contents¶
- class CSP[source]¶
- solve(constraints: list[Constraint], quantum_algorithm: str = 'Grover') tuple[int, int, int, int] | bool[source]¶
Method to solve the problem.
- Parameters:
constraints – List of to be satisfied constraints.
quantum_algorithm – Selected quantum algorithm to solve problem.
- Returns:
Solution to the problem if it exists.
- print_problem(sum_s0: str | int = 's0', sum_s1: str | int = 's1', sum_s2: str | int = 's2', sum_s3: str | int = 's3', a: str | int = 'a', b: str | int = 'b', c: str | int = 'c', d: str | int = 'd') None[source]¶
Method to visualize the problem.
- Parameters:
sum_s0 – Sum to be satisfied.
sum_s1 – Sum to be satisfied.
sum_s2 – Sum to be satisfied.
sum_s3 – Sum to be satisfied.
a – Variable value satisfying the respective sums.
b – Variable value satisfying the respective sums.
c – Variable value satisfying the respective sums.
d – Variable value satisfying the respective sums.
- check_inequality(qc: qiskit.QuantumCircuit, x: tuple[qiskit.QuantumRegister, qiskit.QuantumRegister], y: tuple[qiskit.QuantumRegister, qiskit.QuantumRegister], res_anc: qiskit.QuantumRegister) None[source]¶
- check_equality(qc: qiskit.QuantumCircuit, x: tuple[qiskit.QuantumRegister, qiskit.QuantumRegister, qiskit.QuantumRegister], s: str, res_anc: qiskit.QuantumRegister) None[source]¶
- add_two_numbers(qc: qiskit.QuantumCircuit, x: tuple[qiskit.QuantumRegister, qiskit.QuantumRegister], y: tuple[qiskit.QuantumRegister, qiskit.QuantumRegister], ancs: qiskit.QuantumRegister, res_anc_low: qiskit.QuantumRegister, res_anc_high: qiskit.QuantumRegister, anc_carry: qiskit.QuantumRegister) tuple[qiskit.QuantumRegister, qiskit.QuantumRegister, qiskit.QuantumRegister][source]¶
- encode_constraints(qc: qiskit.QuantumCircuit, a: qiskit.QuantumRegister, b: qiskit.QuantumRegister, c: qiskit.QuantumRegister, d: qiskit.QuantumRegister, anc: qiskit.QuantumRegister, constraints: list[Constraint]) tuple[qiskit.QuantumCircuit, list[qiskit.QuantumRegister]][source]¶
- create_oracle(qc: qiskit.QuantumCircuit, mct_list: list[qiskit.QuantumRegister], flag: qiskit.QuantumRegister) Instruction[source]¶
- init_qc() tuple[qiskit.QuantumCircuit, qiskit.QuantumRegister, qiskit.QuantumRegister, int, int, tuple[tuple[qiskit.QuantumRegister, qiskit.QuantumRegister], tuple[qiskit.QuantumRegister, qiskit.QuantumRegister], tuple[qiskit.QuantumRegister, qiskit.QuantumRegister], tuple[qiskit.QuantumRegister, qiskit.QuantumRegister]]][source]¶
- create_grover(oracle: Instruction, nqubits: int, nancilla: int, ninputs: int, grover_iterations: int) qiskit.QuantumCircuit[source]¶