TwoQubitControlledUDecomposer
class qiskit.synthesis.TwoQubitControlledUDecomposer(rxx_equivalent_gate, euler_basis='ZXZ')
Bases: object
Decompor uma operação unitária geral de dois qubits em termos de uma porta de dois qubits alvo, que seja localmente equivalente a uma RXXGate.
Algoritmo de síntese
Qualquer operação unitária de dois qubits pode ser expressa, por meio de sua decomposição canônica (de Weyl) (ver TwoQubitWeylDecomposition), como um portão de Weyl rodeado por quatro portões unitários de um único qubit:
┌─────┐┌───────┐┌─────┐
q_0: ┤ c2r ├┤0 ├┤ c1r ├
├─────┤│ Weyl │├─────┤
q_1: ┤ c2l ├┤1 ├┤ c1l ├
└─────┘└───────┘└─────┘O portão de Weyl se fatoriza em um produto de três rotações de dois qubits, :
┌─────────┐┌─────────┐
q_0: ┤0 ├┤0 ├─■──────
│ Rxx(a) ││ Ryy(b) │ │ZZ(c)
q_1: ┤1 ├┤1 ├─■──────
└─────────┘└─────────┘As rotações e são então mapeadas para as rotações por meio de mudanças de base de qubit único. Com “ ”:
┌─────┐┌─────────┐┌───┐
q_0: ┤ Sdg ├┤0 ├┤ S ├
├─────┤│ Rxx(b) │├───┤
q_1: ┤ Sdg ├┤1 ├┤ S ├
└─────┘└─────────┘└───┘e :
┌───┐┌─────────┐┌───┐
q_0: ┤ H ├┤0 ├┤ H ├
├───┤│ Rxx(c) │├───┤
q_1: ┤ H ├┤1 ├┤ H ├
└───┘└─────────┘└───┘Por fim, cada rotação de é realizada com a porta fornecida pelo usuário, que é localmente equivalente a RXXGate (a rxx_equivalent_gate), envolvida por portas de qubit único que levam em conta a equivalência local e qualquer escala do ângulo de rotação. Depois que cada rotação é expandida, todas as portas de um qubit que se encontram entre duas portas consecutivas de dois qubits são multiplicadas entre si e consolidadas, de modo que o circuito sintetizado utilize, no máximo, três aplicações de rxx_equivalent_gate e, no máximo, oito portas unitárias de um qubit:
┌─────┐┌───────────┐┌─────┐┌───────────┐┌─────┐┌───────────┐┌─────┐
q_0: ┤ d2r ├┤0 ├┤ d1r ├┤0 ├┤ e1r ├┤0 ├┤ f1r ├
├─────┤│ Equiv(a) │├─────┤│ Equiv(b) │├─────┤│ Equiv(c) │├─────┤
q_1: ┤ d2l ├┤1 ├┤ d1l ├┤1 ├┤ e1l ├┤1 ├┤ f1l ├
└─────┘└───────────┘└─────┘└───────────┘└─────┘└───────────┘└─────┘Equiv(a)Aqui, Equiv(b) e Equiv(c) são as portas fornecidas pelo usuário rxx_equivalent_gate (a porta localmente equivalente a RXXGate) que realizam as rotações , e , e as caixas restantes representam as portas unitárias consolidadas de um único qubit.
O número de portas de dois qubits efetivamente emitidas depende dos parâmetros de Weyl do alvo: rotações com ângulo nulo são descartadas; assim, as operações unitárias que estão mais próximas de uma ou duas instâncias de RXXGate utilizam uma ou duas aplicações de rxx_equivalent_gate , respectivamente, em vez de três. Um alvo próximo da identidade não utilizará nenhuma de suas aplicações.
Parâmetros
- rxx_equivalent_gate (type[Gate]) – Porta que é localmente equivalente a uma porta do
RXXGatetipo: . As opções válidas são [RZZGate,RXXGate,RYYGate,RZXGate,CPhaseGate,CRXGate,CRYGate,CRZGate]. - euler_basis (str) – Cadeia de base a ser fornecida para
OneQubitEulerDecomposerpara 1Q synthesis. As opções válidas são ['ZXZ','ZYZ','XYX','XZX','U','U3','U321','U1X','PSX','ZSX','ZSXX','RR'].
Aumentos
QiskitError – Se a porta não for localmente equivalente a um RXXGate.
__call__
__call__(unitary, approximate=False, use_dag=False, *, atol=1e-12)
Decomponha um sistema de dois qubits unitary usando o TwoQubitControlledUDecomposer.
Parâmetros
- unitary (Operator |ndarray) – único para sintetizar.
- aproximado – Atualmente não é utilizado por este decompositor; aceito para garantir a compatibilidade de assinatura com os outros dois decompositores de dois qubits. Reservado para utilização futura.
- use_dag – Atualmente não é utilizado por este decompositor; aceito por uma questão de compatibilidade de assinatura com os outros dois decompositores de dois qubits. Reservado para utilização futura.
- atol – Tolerância absoluta para a verificação dos ângulos das operações unitárias de um único qubit ao simplificar o circuito retornado[. Padrão: 1e-12].
Retorna
Circuito quântico sintetizado.
Tipo de retorno
Observação: o atol é passado para OneQubitEulerDecomposer.