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

Uma classe para decompor unitários de 2 qubits em um número mínimo de usos de uma porta de base de 2 qubits.

Parâmetros

  • gate (Gate) – Porta de dois qubits a ser usada na decomposição KAK.
  • basis_fidelity (float) – Fidelidade a ser assumida para aplicações do KAK Gate. Padroniza para 1.0.
  • euler_basis (str) – Cadeia de base a ser fornecida para OneQubitEulerDecomposer para 1Q synthesis. As opções válidas são ['ZYZ', 'ZXZ', 'XYX', 'U', 'U3', 'U1X', 'PSX', 'ZSX', 'RR'].
  • pulse_optimize (bool | None) – Se True, tente fazer uma decomposição que minimize as unidades locais entre as portas de emaranhamento. Isso gerará uma exceção se uma decomposição ideal não for implementada. Atualmente, apenas [{CX, SX, RZ}] é conhecido. Se for False, não tente otimizar. Se None, tente otimizar, mas não aumente se for desconhecido.

__call__

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

GitHub

Decomponha um unitary de dois qubits em uma base fixa e SU(2)SU(2) usando a melhor aproximação, já que cada aplicação de base tem um basis_fidelity finito.

Parâmetros

  • unitary (Operator or ndarray) – 4×44 \times 4 unitário para sintetizar.
  • basis_fidelity (float or None) – Fidelidade a ser assumida para aplicações do KAK Gate. Se fornecido, substitui o endereço basis_fidelity fornecido na inicialização.
  • approximate (bool) – Aproximações se as fidelidades da base forem menores que 1.0.
  • use_dag (bool) – Se verdadeiro, um DAGCircuit é retornado em vez de um QuantumCircuit quando essa classe é chamada.
  • _num_basis_uses (int) – forçar uma aproximação específica passando um número entre [0, 3].

Retorna

Circuito quântico sintetizado.

**Tipo de retorno

QuantumCircuit

Aumentos

QiskitError - se pulse_optimize for True, mas não sabemos como fazer isso.


Métodos

decomp0

static decomp0(target)

GitHub

Decomponha o alvo Ud(x,y,z)\sim U_d(x, y, z) com 00 usos da porta de base. Resultado UrU_r tem 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 é ideal para todos os alvos e bases

decomp1

decomp1(target)

GitHub

Decomponha o alvo Ud(x,y,z)\sim U_d(x, y, z) com 11 usando a porta de base Ud(a,b,c)\sim U_d(a, b, c). O resultado UrU_r tem um rastro:

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 é ideal para todos os alvos e bases com z==0 ou c==0.

decomp2_supercontrolled

decomp2_supercontrolled(target)

GitHub

Decomponha o alvo Ud(x,y,z)\sim U_d(x, y, z) com 22 usos da porta de base.

Para a base supercontrolada Ud(π/4,b,0)\sim U_d(\pi/4, b, 0), todos os b, o resultado UrU_r tem traço

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

que é a aproximação ideal para a base da classe CNOT Ud(π/4,0,0)\sim U_d(\pi/4, 0, 0) ou da classe DCNOT Ud(π/4,π/4,0)\sim U_d(\pi/4, \pi/4, 0) e qualquer alvo. Pode ser subótimo para b0b \neq 0 (ou seja, existe uma decomposição exata para qualquer alvo usando BUd(π/4,π/8,0)B \sim U_d(\pi/4, \pi/8, 0), mas pode não ser essa decomposição). Essa é uma decomposição exata para base supercontrolada e alvo Ud(x,y,0)\sim U_d(x, y, 0). Não há garantias para bases não supercontroladas.

decomp3_supercontrolled

decomp3_supercontrolled(target)

GitHub

Decomponha o alvo com 33 usos da base. Essa é uma decomposição exata para a base supercontrolada Ud(π/4,b,0)\sim U_d(\pi/4, b, 0), todos os b e qualquer alvo. Não há garantias para bases não supercontroladas.

num_basis_gates

num_basis_gates(unitary)

GitHub

Calcula o número de portas de base necessárias em uma decomposição de entrada unitária

traces

traces(target)

GitHub

Forneça os traços esperados Tr(UUtarget)\Big\vert\text{Tr}(U \cdot U_\text{target}^{\dag})\Big\vert para um número diferente de portas de base.

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.