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

Una clase para descomponer unitarios 2-qubit en un número mínimo de usos de una puerta de base 2-qubit.

Parámetros

  • gate (Gate) – Puerta de dos qubits que se utilizará en la descomposición KAK.
  • basis_fidelity (float) – Se debe dar por supuesta la fidelidad en las aplicaciones de la puerta KAK. El valor predeterminado es 1.0.
  • euler_basis (str) – Cadena base que se debe proporcionar OneQubitEulerDecomposer para la síntesis 1Q. Las opciones válidas son ['ZYZ', 'ZXZ', 'XYX', 'U', 'U3', 'U1X', 'PSX', 'ZSX', 'RR'].
  • pulse_optimize (bool | None) – Si es así True, intenta realizar una descomposición que minimice el número de operaciones unitarias locales entre las puertas de entrelazamiento. Esto provocará una excepción si no se ha implementado una descomposición óptima. Actualmente, solo [{CX, SX, RZ}] se sabe. Si es así False, no intentes optimizarlo. Si es así None, intenta optimizar, pero no genere un error si se desconoce.

__call__

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

GitHub

Descomponga un unitary de dos qubits sobre bases fijas y SU(2)SU(2) utilizando la mejor aproximación dado que cada aplicación de base tiene un basis_fidelity finito.

Parámetros

  • unitary (Operator or ndarray) – 4×44 \times 4 unitario para sintetizar.
  • basis_fidelity (float or None) – Se debe dar por supuesta la fidelidad en las aplicaciones de la puerta KAK. Si se especifica, anula el valor especificado basis_fidelity en la inicialización.
  • approximate (bool) – Se aproxima si las fidelidades de base son inferiores a 1.0.
  • use_dag (bool) – Si es verdadero, DAGCircuit se devuelve un en lugar de un cuando QuantumCircuit se invoca esta clase.
  • _num_basis_uses (int) – impone una aproximación concreta al introducir un número en [0, 3].

Devuelve

Circuito cuántico sintetizado.

Tipo de retorno

QuantumCircuit

Eleva

QiskitError – si pulse_optimize es «True», pero no sabemos cómo hacerlo.


Métodos

decomp0

static decomp0(target)

GitHub

Descomponer el objetivo ∼Ud(x,y,z)\sim U_d(x, y, z) con 00 usos de la puerta base. Resultado UrU_r tiene rastro:

∣Tr(Ur⋅Utarget†)∣=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

que es óptimo para todos los objetivos y bases

decomp1

decomp1(target)

GitHub

Descomponer objetivo ∼Ud(x,y,z)\sim U_d(x, y, z) con 11 uso de la puerta base ∼Ud(a,b,c)\sim U_d(a, b, c). Resultado UrU_r tiene traza:

∣Tr(Ur⋅Utarget†)∣=4∣cos⁡(x−a)cos⁡(y−b)cos⁡(z−c)+jsin⁡(x−a)sin⁡(y−b)sin⁡(z−c)∣\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

que es óptimo para todos los objetivos y bases con z==0 o c==0.

decomp2_supercontrolled

decomp2_supercontrolled(target)

GitHub

Descomponer el objetivo ∼Ud(x,y,z)\sim U_d(x, y, z) con 22 usos de la puerta base.

Para la base supercontrolada ∼Ud(π/4,b,0)\sim U_d(\pi/4, b, 0), todo b, el resultado UrU_r tiene traza

∣Tr(Ur⋅Utarget†)∣=4cos⁡(z)\Big\vert\text{Tr}(U_r \cdot U_\text{target}^\dag) \Big\vert = 4\cos(z)

que es la aproximación óptima para la base de la clase CNOT ∼Ud(π/4,0,0)\sim U_d(\pi/4, 0, 0) o la clase DCNOT ∼Ud(π/4,π/4,0)\sim U_d(\pi/4, \pi/4, 0) y cualquier objetivo. Puede ser subóptima para b≠0b \neq 0 (es decir, existe una descomposición exacta para cualquier objetivo que utilice B∼Ud(π/4,π/8,0)B \sim U_d(\pi/4, \pi/8, 0), pero puede que no sea esta descomposición). Se trata de una descomposición exacta para base supercontrolada y objetivo ∼Ud(x,y,0)\sim U_d(x, y, 0). No hay garantías para bases no supercontroladas.

decomp3_supercontrolled

decomp3_supercontrolled(target)

GitHub

Descomponer objetivo con 33 usos de la base. Se trata de una descomposición exacta para la base supercontrolada ∼Ud(π/4,b,0)\sim U_d(\pi/4, b, 0), todo b, y cualquier objetivo. No hay garantías para la base no supercontrolada.

num_basis_gates

num_basis_gates(unitary)

GitHub

Calcula el número de puertas base necesarias en una descomposición de entrada unitaria

traces

traces(target)

GitHub

Indique las trazas esperadas ∣Tr(U⋅Utarget†)∣\Big\vert\text{Tr}(U \cdot U_\text{target}^{\dag})\Big\vert para un número diferente de puertas base.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.