Skip to main contentIBM Quantum Documentation
Important

IBM Quantum Platform is moving and this version will be sunset on July 1. To get started on the new platform, read the migration guide.

qiskit.circuit.library.pauli_two_design

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

GitHub

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")
Circuit diagram output by the previous code.

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.