Skip to main content
IBM Quantum Platform

TwoQubitBasisDecomposer

class qiskit.synthesis.TwoQubitBasisDecomposer(gate, basis_fidelity=1.0, euler_basis='U', pulse_optimize=None)

GitHub

Bases : object

Une classe pour décomposer les unitaires à 2 qubits en un nombre minimal d'utilisations d'une porte de base à 2 qubits.

Paramètres

  • gate (Gate) – Porte à deux qubits à utiliser dans la décomposition KAK.
  • basis_fidelity (float) – Fidélité à assumer pour les applications de la KAK Gate. Prend par défaut la valeur 1.0.
  • euler_basis (str) – Chaîne de base à fournir à OneQubitEulerDecomposer pour la synthèse 1Q. Les options valides sont ['ZYZ', 'ZXZ', 'XYX', 'U', 'U3', 'U1X', 'PSX', 'ZSX', 'RR'].
  • pulse_optimize (bool | None) – Si True, essayez de faire une décomposition qui minimise les unités locales entre les portes d'enchevêtrement. Une exception sera levée si une décomposition optimale n'est pas mise en œuvre. Actuellement, seul [{CX, SX, RZ}] est connu. Si False, ne tentez pas l'optimisation. Si None, tenter l'optimisation mais ne pas soulever la question si elle est inconnue.

__call__

__call__(unitary, basis_fidelity=None, approximate=True, use_dag=False, *, _num_basis_uses=None)

GitHub

Décomposer un deux-qubits unitary sur une base fixe et SU(2)SU(2) en utilisant la meilleure approximation étant donné que chaque application de base a une valeur finie basis_fidelity.

Paramètres

  • unitary (Operator or ndarray) – 4×44 \times 4 unitaire à synthétiser.
  • basis_fidelity (float or None) – Fidélité à assumer pour les applications de la KAK Gate. S'il est donné, il remplace basis_fidelity donné lors de l'initialisation.
  • approximate (bool) – Approximations si les fidélités de base sont inférieures à 1.0.
  • use_dag (bool) – Si vrai, un DAGCircuit est renvoyé à la place de QuantumCircuit lorsque cette classe est appelée.
  • _num_basis_uses (int) – forcer une approximation particulière en passant un nombre compris entre [0 et 3.]

Retours

Circuit quantique synthétisé.

Type de retour

QuantumCircuit

Augmentations

QiskitError – si pulse_optimize est vrai, mais que nous ne savons pas comment nous y prendre.


Méthodes

decomp0

static decomp0(target)

GitHub

Décomposer la cible Ud(x,y,z)\sim U_d(x, y, z) avec 00 utilisations de la porte de base. Résultat UrU_r a trace :

Tr(UrUtarget)=4(cos(x)cos(y)cos(z)+jsin(x)sin(y)sin(z)\Big\vert\text{Tr}(U_r\cdot U_\text{target}^{\dag})\Big\vert = 4\Big\vert (\cos(x)\cos(y)\cos(z)+ j \sin(x)\sin(y)\sin(z)\Big\vert

qui est optimale pour tous les objectifs et toutes les bases

decomp1

decomp1(target)

GitHub

Décomposer la cible Ud(x,y,z)\sim U_d(x, y, z) avec 11 en utilisant la porte de base Ud(a,b,c)\sim U_d(a, b, c). Le résultat UrU_r a une trace :

Tr(UrUtarget)=4cos(xa)cos(yb)cos(zc)+jsin(xa)sin(yb)sin(zc)\Big\vert\text{Tr}(U_r \cdot U_\text{target}^{\dag})\Big\vert = 4\Big\vert \cos(x-a)\cos(y-b)\cos(z-c) + j \sin(x-a)\sin(y-b)\sin(z-c)\Big\vert

qui est optimale pour toutes les cibles et les bases avec z==0 ou c==0.

decomp2_supercontrolled

decomp2_supercontrolled(target)

GitHub

Décomposer la cible Ud(x,y,z)\sim U_d(x, y, z) avec 22 utilisations de la porte de base.

Pour la base supercontrôlée Ud(π/4,b,0)\sim U_d(\pi/4, b, 0), tous les b, le résultat UrU_r a pour trace

Tr(UrUtarget)=4cos(z)\Big\vert\text{Tr}(U_r \cdot U_\text{target}^\dag) \Big\vert = 4\cos(z)

qui est l'approximation optimale pour la base de la classe CNOT Ud(π/4,0,0)\sim U_d(\pi/4, 0, 0) ou de la classe DCNOT Ud(π/4,π/4,0)\sim U_d(\pi/4, \pi/4, 0) et de n'importe quelle cible. Elle peut être sous-optimale pour b0b \neq 0 (c'est-à-dire qu'il existe une décomposition exacte pour toute cible utilisant BUd(π/4,π/8,0)B \sim U_d(\pi/4, \pi/8, 0), mais il se peut que ce ne soit pas cette décomposition). Il s'agit d'une décomposition exacte pour la base supercontrôlée et la cible Ud(x,y,0)\sim U_d(x, y, 0). Aucune garantie pour les bases non supercontrôlées.

decomp3_supercontrolled

decomp3_supercontrolled(target)

GitHub

Décomposer la cible avec 33 utilisations de la base. Il s'agit d'une décomposition exacte pour la base supercontrôlée Ud(π/4,b,0)\sim U_d(\pi/4, b, 0), tous les b et toutes les cibles. Aucune garantie pour les bases non supercontrôlées.

num_basis_gates

num_basis_gates(unitary)

GitHub

Calcule le nombre de portes de base nécessaires à la décomposition d'une entrée unitaire

traces

traces(target)

GitHub

Donnez les traces attendues Tr(UUtarget)\Big\vert\text{Tr}(U \cdot U_\text{target}^{\dag})\Big\vert pour un nombre différent de portes de base.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.