TwoQubitBasisDecomposer
class qiskit.synthesis.TwoQubitBasisDecomposer(gate, basis_fidelity=1.0, euler_basis='U', pulse_optimize=None)
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 à
OneQubitEulerDecomposerpour 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. SiFalse, ne tentez pas l'optimisation. SiNone, 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)
Décomposer un deux-qubits unitary sur une base fixe et en utilisant la meilleure approximation étant donné que chaque application de base a une valeur finie basis_fidelity.
Paramètres
- unitary (Operator or ndarray) – 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_fidelitydonné 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
DAGCircuitest renvoyé à la place deQuantumCircuitlorsque 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
Augmentations
QiskitError – si pulse_optimize est vrai, mais que nous ne savons pas comment nous y prendre.
Méthodes
decomp0
static decomp0(target)
Décomposer la cible avec utilisations de la porte de base. Résultat a trace :
qui est optimale pour tous les objectifs et toutes les bases
decomp1
decomp1(target)
Décomposer la cible avec en utilisant la porte de base . Le résultat a une trace :
qui est optimale pour toutes les cibles et les bases avec z==0 ou c==0.
decomp2_supercontrolled
decomp2_supercontrolled(target)
Décomposer la cible avec utilisations de la porte de base.
Pour la base supercontrôlée , tous les b, le résultat a pour trace
qui est l'approximation optimale pour la base de la classe CNOT ou de la classe DCNOT et de n'importe quelle cible. Elle peut être sous-optimale pour (c'est-à-dire qu'il existe une décomposition exacte pour toute cible utilisant , 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 . Aucune garantie pour les bases non supercontrôlées.
decomp3_supercontrolled
decomp3_supercontrolled(target)
Décomposer la cible avec utilisations de la base. Il s'agit d'une décomposition exacte pour la base supercontrôlée , tous les b et toutes les cibles. Aucune garantie pour les bases non supercontrôlées.
num_basis_gates
num_basis_gates(unitary)
Calcule le nombre de portes de base nécessaires à la décomposition d'une entrée unitaire