SynthesizeRZRotations
class qiskit.transpiler.passes.SynthesizeRZRotations(*args, **kwargs)
Bases: TransformationPass
Substitua as portas RZ por decomposições de Clifford+T.
Esta passagem substitui todas as portas de rotação RZ de um único qubit com ângulos em ponto flutuante por sequências equivalentes de Clifford+T.
Internamente, o estágio sintetiza RZ(theta) para um valor geral de theta, reduzindo o ângulo módulo pi/2: o circuito para RZ(theta) pode ser construído a partir de um circuito para RZ(theta mod pi/2 ), acrescentando-se portas de Clifford apropriadas. É importante ressaltar que a etapa também armazena em cache os resultados da síntese e os reutiliza para ângulos que estejam dentro de uma determinada tolerância entre si.
Por exemplo:
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.passes import SynthesizeRZRotations
from qiskit.quantum_info import Operator
from numpy import pi
# The following quantum circuit consists of 5 Clifford gates
# and three single-qubit RZ rotations gates
qc = QuantumCircuit(4)
qc.cx(0, 1)
qc.rz(9*pi/4, 0)
qc.cz(0, 1)
qc.rz(3*pi/8, 1)
qc.h(1)
qc.s(2)
qc.rz(13*pi/2, 2)
qc.cz(2, 0)
qc.rz(5*pi/3, 3)
qct = SynthesizeRZRotations()(qc)
# The transformed circuit consists of Clifford, T and Tdg gates
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
# (with the default value of approximation_degree used by SynthesizeRZRotations)
assert Operator(qc) == Operator(qct)Se tanto synthesis_error quanto cache_error forem fornecidos, eles especificam o limite de erro para a síntese aproximada e para o armazenamento em cache, respectivamente. Se nenhum desses valores for especificado, o erro total permitido é calculado a partir de approximation_degree, e os valores adequados para synthesis_error e cache_error são calculados automaticamente.
Parâmetros
- approximation_degree – Controla o grau geral de aproximação. O valor padrão é
1 - 1e-10. - synthesis_error – Erro máximo permitido para a síntese aproximada de .
- cache_error – Erro máximo permitido ao reutilizar um resultado de síntese armazenado em cache para ângulos próximos de .
Atributos
is_analysis_pass
Verifique se a passagem é uma passagem de análise.
Se o pass for um AnalysisPass,, isso significa que ele pode analisar o DAG e gravar os resultados dessa análise no conjunto de propriedades. Este tipo de passagem não permite modificações no DAG.
is_transformation_pass
Verifique se a etapa é uma etapa de transformação.
Se o pass for um TransformationPass,, isso significa que o pass pode manipular o DAG, mas não pode modificar o conjunto de propriedades (embora possa lê-lo).
Métodos
execute
execute(passmanager_ir, state, callback=None)
Executar tarefa de otimização para o IR do Qiskit de entrada.
Parâmetros
- passmanager_ir (Any) – Qiskit IR para otimização.
- state (PassManagerState) – Estado associado à execução do fluxo de trabalho pelo próprio gerenciador de passagens.
- callback (Callable | None) – Uma função de retorno de chamada que é chamada a cada execução da tarefa de otimização.
Retorna
IR do Qiskit otimizado e status do fluxo de trabalho.
Tipo de retorno
tupla [ Any, PassManagerState ]
name
run
run(dag)
Execute o comando SynthesizeRZRotations no dag.
Parâmetros
dag (DAGCircuit)
Tipo de retorno
update_status
update_status(state, run_state)
Atualizar o status do fluxo de trabalho.
Parâmetros
- state (PassManagerState) – Passe o estado do gerenciador para atualização.
- run_state (RunState) – Status de conclusão da tarefa atual.
Retorna
Atualizou o estado do gerenciador de senhas.
Tipo de retorno