Source code for qailab.circuit.layer_blocks.entanglers

 1"""Different implementations of qubit entangling sections for variational circuits."""
 2from qiskit import QuantumCircuit
 3from qailab.circuit.base import EntanglingBlock
 4
 5
[docs] 6class CXEntangler(EntanglingBlock): 7 """ 8 ┌───┐ 9 q_0: ──■────────────┤ X ├ 10 ┌─┴─┐ └─┬─┘ 11 q_1: ┤ X ├──■─────────┼── 12 └───┘┌─┴─┐ │ 13 q_2: ─────┤ X ├──■────┼── 14 .. └───┘┌─┴─┐ │ 15 q_n: ──────────┤ X ├──■── 16 └───┘ 17 """ 18 19 def __init__(self) -> None: 20 super().__init__('CXEntangler') 21 22 def _build_circuit(self, num_qubits: int) -> QuantumCircuit: 23 circuit = QuantumCircuit(num_qubits) 24 for i in range(1, num_qubits): 25 circuit.cx(i-1, i) 26 27 circuit.cx(num_qubits-1, 0) 28 return circuit