Skip to main contentIBM Quantum Documentation

pauli_two_design

class qiskit.circuit.library.pauli_two_design(num_qubits, reps=3, seed=None, insert_barriers=False, parameter_prefix='θ', name='PauliTwoDesign')

GitHub

Bases:

Construct a Pauli 2-design ansatz.

This class implements a particular form of a 2-design circuit [1], which is frequently studied in quantum machine learning literature, such as, e.g., the investigation of Barren plateaus in variational algorithms [2].

The circuit consists of alternating rotation and entanglement layers with an initial layer of H=RY(π/4)\sqrt{H} = RY(\pi/4) gates. The rotation layers contain single qubit Pauli rotations, where the axis is chosen uniformly at random to be X, Y or Z. The entanglement layers is compromised of pairwise CZ gates with a total depth of 2.

For instance, the circuit could look like this:

     ┌─────────┐┌──────────┐       ░ ┌──────────┐       ░  ┌──────────┐
q_0:RY/4) ├┤ RZ(θ[0]) ├─■─────░─┤ RY(θ[4]) ├─■─────░──┤ RZ(θ[8])
     ├─────────┤├──────────┤ │     ░ ├──────────┤ │     ░  ├──────────┤
q_1:RY/4) ├┤ RZ(θ[1]) ├─■──■──░─┤ RY(θ[5]) ├─■──■──░──┤ RX(θ[9])
     ├─────────┤├──────────┤    │  ░ ├──────────┤    │  ░ ┌┴──────────┤
q_2:RY/4) ├┤ RX(θ[2]) ├─■──■──░─┤ RY(θ[6]) ├─■──■──░─┤ RX(θ[10])
     ├─────────┤├──────────┤ │     ░ ├──────────┤ │     ░ ├───────────┤
q_3:RY/4) ├┤ RZ(θ[3]) ├─■─────░─┤ RX(θ[7]) ├─■─────░─┤ RY(θ[11])
     └─────────┘└──────────┘       ░ └──────────┘       ░ └───────────┘

Examples

from qiskit.circuit.library import pauli_two_design
circuit = pauli_two_design(4, reps=2, seed=5, insert_barriers=True)
circuit.draw("mpl")
../_images/qiskit-circuit-library-pauli_two_design-1.png

Parameters

  • num_qubits (int) – The number of qubits of the Pauli Two-Design circuit.
  • reps (int) – Specifies how often a block consisting of a rotation layer and entanglement layer is repeated.
  • seed (int | None) – The seed for randomly choosing the axes of the Pauli rotations.
  • parameter_prefix (str) – The prefix used for the rotation parameters.
  • insert_barriers (bool) – If True, barriers are inserted in between each layer. If False, no barriers are inserted. Defaults to False.
  • name (str) – The circuit name.

Returns

A Pauli 2-design circuit.

Return type

QuantumCircuit

References

[1]: Nakata et al., Unitary 2-designs from random X- and Z-diagonal unitaries.

arXiv:1502.07514

[2]: McClean et al., Barren plateaus in quantum neural network training landscapes.

arXiv:1803.11173

Was this page helpful?
Report a bug or request content on GitHub.