Source code for qplex.algorithms.mixers.partition_mixer
from typing import List
from qplex.algorithms.mixers.quantum_mixer import QuantumMixer
[docs]
class PartitionMixer(QuantumMixer):
"""Mixer implementation for partition/grouping problems.
Implements SWAP-based mixing operations suitable for problems requiring
partition of items into groups while preserving group sizes.
"""
[docs]
def generate_circuit(self, n_qubits: int, theta: str) -> List[str]:
"""Generate circuit for partition-preserving mixing.
Creates SWAP operations between adjacent qubits followed by rotations
to mix states while maintaining partition structure.
Parameters
----------
n_qubits : int
Number of qubits
theta : str
Mixing angle parameter
Returns
-------
List[str]
OpenQASM3 instructions for partition mixer
"""
lines = []
for i in range(0, n_qubits - 1, 2):
lines.extend([
f"swap q[{i}], q[{i + 1}];",
f"rz({theta}) q[{i}];",
f"rz({theta}) q[{i + 1}];"
])
return lines