Source code for qplex.algorithms.mixers.inequality_mixer
from typing import List
from qplex.algorithms.mixers.quantum_mixer import QuantumMixer
[docs]
class InequalityMixer(QuantumMixer):
"""Mixer implementation for inequality-constrained problems.
Implements controlled rotations based on cumulative weights to preserve
inequality constraints while mixing quantum states.
"""
[docs]
def generate_circuit(self, n_qubits: int, theta: str) -> List[str]:
"""Generate circuit for inequality-preserving mixing.
Creates a sequence of controlled operations that respect inequality
constraints during state mixing.
Parameters
----------
n_qubits : int
Number of qubits
theta : str
Mixing angle parameter
Returns
-------
List[str]
OpenQASM3 instructions for inequality mixer
"""
lines = []
for i in range(n_qubits - 1):
lines.extend([
f"cx q[{i}], q[{i + 1}];",
f"rz({theta}) q[{i + 1}];",
f"cx q[{i}], q[{i + 1}];"
])
return lines