Skip to main content
IBM Quantum Platform

SynthesizeRZRotations

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

GitHub

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 RZ(θ)RZ(\theta).
  • cache_error – Erro máximo permitido ao reutilizar um resultado de síntese armazenado em cache para ângulos próximos de θ\theta.

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)

GitHub

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

name()

GitHub

Nome da passagem.

Tipo de retorno

str

run

run(dag)

GitHub

Execute o comando SynthesizeRZRotations no dag.

Parâmetros

dag (DAGCircuit)

Tipo de retorno

DAGCircuit

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 atualização.
  • run_state (RunState) – Status de conclusão da tarefa atual.

Retorna

Atualizou o estado do gerenciador de senhas.

Tipo de retorno

PassManagerState

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