Custom Ansatz

slowquant.qiskit_interface.custom_ansatz.ErikD_JW()

UCCD(2,2) circuit for JW.

Gate count, cx: 3, u: 3

     ┌──────────┐               ┌───┐
q_0: ┤ Ry(2*p1) ├──■────■────■──┤ X ├
     └──────────┘┌─┴─┐  │    │  └───┘
q_1: ────────────┤ X ├──┼────┼───────
        ┌───┐    └───┘┌─┴─┐  │
q_2: ───┤ X ├─────────┤ X ├──┼───────
        └───┘         └───┘┌─┴─┐
q_3: ──────────────────────┤ X ├─────
                           └───┘
slowquant.qiskit_interface.custom_ansatz.ErikD_Parity()

UCCD(2,2) circuit for Parity.

Gate count, cx: 1, u: 2

     ┌──────────┐     ┌───┐
q_0: ┤ Ry(2*p1) ├──■──┤ X ├
     └──────────┘┌─┴─┐└───┘
q_1: ────────────┤ X ├─────
                 └───┘
slowquant.qiskit_interface.custom_ansatz.ErikSD_JW()

UCCSD(2,2) circuit for JW.

Gate count, cx: 8, u: 7

     ┌──────────────┐                  ┌───┐┌───┐
q_0: ┤ Ry(2*p1 + π) ├────────■─────────┤ X ├┤ X ├──■───────────────────■───────
     └──────────────┘        │         └───┘└─┬─┘┌─┴─┐                 │  ┌───┐
q_1: ────────────────────────┼────────────────┼──┤ X ├──■─────────■────┼──┤ X ├
                     ┌───────┴────────┐┌───┐  │  └───┘┌─┴─┐       │  ┌─┴─┐└───┘
q_2: ────────────────┤ Ry(2*p2 - π/2) ├┤ H ├──■───────┤ X ├──■────┼──┤ X ├─────
                     └────────────────┘└───┘          └───┘┌─┴─┐┌─┴─┐├───┤
q_3: ──────────────────────────────────────────────────────┤ X ├┤ X ├┤ X ├─────
                                                           └───┘└───┘└───┘
slowquant.qiskit_interface.custom_ansatz.ErikSD_Parity()

UCCSD(2,2) circuit for Parity.

Gate count, cx: 3, u: 4

     ┌──────────────┐                       ┌───┐
q_0: ┤ Ry(2*p1 + π) ├────────■──────────────┤ X ├
     └──────────────┘┌───────┴────────┐┌───┐└─┬─┘
q_1: ────────────────┤ Ry(π/2 - 2*p2) ├┤ H ├──■──
                     └────────────────┘└───┘
slowquant.qiskit_interface.custom_ansatz.tUPS(num_orbs: int, num_elec: tuple[int, int], mapper: FermionicMapper, ansatz_options: dict[str, Any]) tuple[QuantumCircuit, dict[str, int]]

tUPS ansatz.

  1. 10.48550/arXiv.2312.09761

Ansatz Options:
  • n_layers [int]: Number of layers.

  • do_pp [bool]: Do perfect pairing.

Parameters:
  • num_orbs – Number of spatial orbitals.

  • num_elec – Number of alpha and beta electrons.

  • ansatz_options – Ansatz options.

Returns:

tUPS ansatz circuit and R parameters needed for gradients.