Skip to main content
IBM Quantum Platform

LitinskiTransformation

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

GitHub

Bases: TransformationPass

Aplica a transformada de Litinski a um circuito.

A transformação se aplica a um circuito que contenha portas de Clifford, rotação de um único qubit RZR_Z, rotação RXR_X e rotação RYR_Y (incluindo PhasePhase, TT e T†T^\dagger ), rotações de produto de Pauli, medições de produto de Pauli e medições padrão ZZ. A transformação desloca as portas de Clifford para o final do circuito, incluindo portas de rotação de um único qubit, rotações do produto de Pauli e medições do produto de Pauli, cujo ângulo é um múltiplo de π/2\pi/2. Nesse processo, ela transforma as rotações de RZR_Z, as portas de rotação de RXR_X e as portas de rotação de RYR_Y em rotações do produto de Pauli, e as medições de ZZ em medições do produto de Pauli.

A passagem suporta todas as portas Clifford na lista retornada por get_clifford_gate_names():

["id", "x", "y", "z", "h", "s", "sdg", "sx", "sxdg", "cx", "cz", "cy", "swap","iswap", "ecr", "dcx"]

Além disso, as portas de rotação acima, cujos ângulos são múltiplos inteiros de π/2\pi/2 dentro da tolerância especificada, também são consideradas Clifford.

Exemplo:

from qiskit import generate_preset_pass_manager
from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliProductMeasurement, PauliProductRotationGate
from qiskit.quantum_info import Pauli
from qiskit.transpiler.passes import LitinskiTransformation

litinski = LitinskiTransformation(fix_clifford=False, use_ppr=True)

rz_basis = ["rz", "h", "x", "cx"]
pm = generate_preset_pass_manager(basis_gates=rz_basis)
pm.optimization.append(litinski)

qc = QuantumCircuit(3, 1)
qc.h(0)
qc.rz(1.23, 0)
qc.cx(0, 1)
qc.t(1)
qc.append(PauliProductRotationGate(Pauli("XY"), 0.456), [1, 2])
qc.cx(1, 2)
qc.append(PauliProductMeasurement(Pauli("ZX")), [0, 1], [0])
qc.measure(2, 0)


pbc = pm.run(qc)

Referências

[1] Litinski. Um jogo de códigos de superfície. Quantum 3, 128 (2019)

Parâmetros

  • fix_clifford – Se False (valor diferente do padrão), o circuito retornado contém apenas PauliEvolution portas, com as portas Clifford finais omitidas. Observe que, nesse caso, os operadores dos circuitos original e sintetizado geralmente não serão equivalentes.
  • insert_barrier – Se True e fix_clifford=True, insira uma barreira entre o circuito e os cliffords finais. Este argumento não tem efeito se fix_clifford=False.
  • use_ppr – Se for o caso True, use PauliProductRotationGate para representar as portas de rotação de Pauli. Isso é recomendado para melhorar o desempenho utilizando uma abordagem totalmente baseada em Rust. Se False ou None, use PauliEvolutionGate.
  • grau_de_aproximação – Utilizado nos cálculos de tolerância para verificar o quanto um PPR ou um portão de rotação está próximo de um Clifford. Isso fornece o limite para a fidelidade média do portão.

Atributos

is_analysis_pass

Verificar se o passe é um passe de análise.

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

is_transformation_pass

Verifique se o passe é um passe de transformação.

Se a passagem for um TransformationPass,, isso significa que a passagem pode manipular o DAG, mas não pode modificar o conjunto de propriedades (mas pode ser lido).


Métodos

execute

execute(passmanager_ir, state, callback=None)

GitHub

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

Parâmetros

  • passmanager_ir (DAGCircuit) – Qiskit IR para otimização.
  • state (DAGCircuit) – Estado associado à execução do fluxo de trabalho pelo próprio gerenciador de passagens.
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | 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 [ DAGCircuit, PassManagerState ]

name

name()

GitHub

Nome do passe.

Tipo de retorno

str

run

run(dag)

GitHub

Execute a verificação do LitinskiTransformation no dag.

Parâmetros

dag (DAGCircuit) – O DAG de entrada.

Retorna

O DAG de saída.

Aumentos

TranspilerError – Se o circuito contiver portas que não sejam compatíveis com o passe.

Tipo de retorno

DAGCircuit

update_status

update_status(state, run_state)

GitHub

Atualizar o status do fluxo de trabalho.

Parâmetros

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

Retorna

Estado do gerenciador de passes atualizado.

Tipo de retorno

PassManagerState

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