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) – Fidelidad que debe asumirse para las aplicaciones de la Puerta KAK. El valor predeterminado es 1.0.
  • euler_basis (str) – Cadena de base que debe proporcionarse a OneQubitEulerDecomposer para la síntesis de 1Q. Las opciones válidas son ['ZYZ', 'ZXZ', 'XYX', 'U', 'U3', 'U1X', 'PSX', 'ZSX', 'RR'].
  • pulse_optimize (bool | None) – Si True, intente hacer una descomposición que minimice los unitarios locales entre las puertas de enredo. Esto provocará una excepción si no se realiza una descomposición óptima. En la actualidad, sólo [{CX, SX, RZ}] se conoce. Si False, no intente la optimización. Si None, intente la optimización pero no plantee si es desconocido.

__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) – Fidelidad que debe asumirse para las aplicaciones de la Puerta KAK. Si se da, anula basis_fidelity dado en init.
  • approximate (bool) – Se aproxima si las fidelidades de base son inferiores a 1.0.
  • use_dag (bool) – Si es verdadero se devuelve un DAGCircuit en lugar de QuantumCircuit .
  • _num_basis_uses (int) – forzar una aproximación particular pasando 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(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

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(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

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(UrUtarget)=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 b0b \neq 0 (es decir, existe una descomposición exacta para cualquier objetivo que utilice BUd(π/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(UUtarget)\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.