Skip to main content
IBM Quantum Platform

SubstitutePi4Rotations

class qiskit.transpiler.passes.SubstitutePi4Rotations(*args, **kwargs)

GitHub

Bases: TransformationPass

Converta portas de rotação cujos ângulos sejam múltiplos inteiros de π/4\pi/4 em conjuntos discretos de portas de TdgGate Clifford, TGate e.

Para portas de rotação de um qubit (RXGate, RYGate, RZGate, PhaseGate) e portas de rotação de dois qubits (RXXGate, RYYGate, RZZGate, RZXGate), quando o ângulo é um múltiplo de π/4\pi/4, a decomposição requer uma única TGate porta TdgGate ou, bem como algumas portas de Clifford. Para portas de rotação controlada de dois qubits (CPhaseGate, CRXGate, CRYGate, CRZGate), quando o ângulo é um múltiplo de π/2\pi/2, a decomposição requer três TGate portas TdgGate ou para CPhaseGate e duas nos demais casos, além de algumas portas de Clifford. Observe que mesmo múltiplos de π/4\pi/4 (ou π/2\pi/2, respectivamente, para rotações controladas), ou, de forma equivalente, múltiplos inteiros de π/2\pi/2 (ou π\pi, respectivamente, para rotações controladas) podem ser representados utilizando apenas portas de Clifford.

Por exemplo:

from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.passes import SubstitutePi4Rotations
from qiskit.quantum_info import Operator

# The following quantum circuit consists of 5 Clifford gates,
# four rotation gates whose angles are integer multiples of pi/4,
# and one controlled rotation gate whose angle is an integer multiple of pi/2

qc = QuantumCircuit(3)
qc.cx(0, 1)
qc.rz(pi/4, 0)
qc.cz(0, 1)
qc.rx(3*pi/4, 1)
qc.h(1)
qc.s(2)
qc.ry(2*pi/4, 2)
qc.cz(2, 0)
qc.rzz(pi/4, 0, 2)
qc.cry(3*pi/2, 2, 1)

# The transformed circuit consists of Clifford, T and Tdg gates
qct = SubstitutePi4Rotations()(qc)
clifford_t_names = get_clifford_gate_names() + ["t"] + ["tdg"]
assert(set(qct.count_ops().keys()).issubset(set(clifford_t_names)))

# The circuits before and after the transformation are equivalent
assert Operator(qc) == Operator(qct)

Parâmetros

grau de aproximação – Usado nos cálculos de tolerância. Isso fornece o limite para a fidelidade média do portão.


Atributos

is_analysis_pass

Verifique se a passagem é uma passagem de análise.

Se a passagem for um AnalysisPass,, isso significa que a passagem pode analisar o DAG e gravar os resultados dessa análise no conjunto de propriedades. Modificações no DAG não são permitidas por este tipo de passe.

is_transformation_pass

Verifique se a passagem é uma passagem de transformação.

Se o passe for um “ TransformationPass, ”, isso significa que ele pode manipular o DAG, mas não pode modificar o conjunto de propriedades (embora possa ser lido).


Métodos

execute

execute(passmanager_ir, state, callback=None)

GitHub

Executar tarefa de otimização para entrada Qiskit IR.

Parâmetros

  • passmanager_ir (Any) – Qiskit IR para otimizar.
  • state (PassManagerState) – Estado associado à execução do fluxo de trabalho pelo próprio gerenciador de passes.
  • callback (Callable | None) – Uma função de retorno de chamada que é chamada a cada execução da tarefa de otimização.

Retorna

Qiskit IR otimizado e estado do fluxo de trabalho.

Tipo de retorno

tupla [ Any, PassManagerState ]

name

name()

GitHub

Nome da passagem.

Tipo de retorno

str

run

run(dag)

GitHub

Execute a otimização Substitute Pi4-Rotations em dag.

Parâmetros

dag (DAGCircuit) – o DAG de entrada.

Retorna

O DAG de saída.

Tipo de retorno

Circuito DAG

update_status

update_status(state, run_state)

GitHub

Atualizar o status do fluxo de trabalho.

Parâmetros

  • state (PassManagerState) – Passe o estado do gerenciador para atualizar.
  • run_state (RunState) – Status de conclusão da tarefa atual.

Retorna

Estado do gerenciador de senhas atualizado.

Tipo de retorno

PassManagerState

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