TwoQubitBasisDecomposer
class qiskit.synthesis.TwoQubitBasisDecomposer(gate, basis_fidelity=1.0, euler_basis='U', pulse_optimize=None)
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
OneQubitEulerDecomposerpara 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 forFalse, não tente otimizar. SeNone, tente otimizar, mas não aumente se for desconhecido.
__call__
__call__(unitary, basis_fidelity=None, approximate=True, use_dag=False, *, _num_basis_uses=None)
Decomponha um unitary de dois qubits em uma base fixa e usando a melhor aproximação, já que cada aplicação de base tem um basis_fidelity finito.
Parâmetros
- unitary (Operator or ndarray) – 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_fidelityfornecido 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 umQuantumCircuitquando 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
Aumentos
QiskitError - se pulse_optimize for True, mas não sabemos como fazer isso.
Métodos
decomp0
static decomp0(target)
Decomponha o alvo com usos da porta de base. Resultado tem rastro:
que é ideal para todos os alvos e bases
decomp1
decomp1(target)
Decomponha o alvo com usando a porta de base . O resultado tem um rastro:
que é ideal para todos os alvos e bases com z==0 ou c==0.
decomp2_supercontrolled
decomp2_supercontrolled(target)
Decomponha o alvo com usos da porta de base.
Para a base supercontrolada , todos os b, o resultado tem traço
que é a aproximação ideal para a base da classe CNOT ou da classe DCNOT e qualquer alvo. Pode ser subótimo para (ou seja, existe uma decomposição exata para qualquer alvo usando , mas pode não ser essa decomposição). Essa é uma decomposição exata para base supercontrolada e alvo . Não há garantias para bases não supercontroladas.
decomp3_supercontrolled
decomp3_supercontrolled(target)
Decomponha o alvo com usos da base. Essa é uma decomposição exata para a base supercontrolada , todos os b e qualquer alvo. Não há garantias para bases não supercontroladas.
num_basis_gates
num_basis_gates(unitary)
Calcula o número de portas de base necessárias em uma decomposição de entrada unitária