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