Skip to main content
IBM Quantum Platform

RossSelingerSynthesis

class qiskit.transpiler.passes.synthesis.ross_selinger_plugin.RossSelingerSynthesis

GitHub

Bases: UnitarySynthesisPlugin

Um plugin de síntese unitária Ross-Selinger Qiskit.

O algoritmo é descrito em [1]. O código-fonte (em Rust) está disponível em https://github.com/qiskit-community/rsgridsynth.

Este plugin é invocado quando transpile() o unitary_synthesis_method parâmetro é definido como "gridsynth".

Este plugin suporta personalização e parâmetros adicionais podem ser passados para o plugin passando um dicionário como unitary_synthesis_plugin_config parâmetro da transpile() função.

Parâmetros suportados no dicionário:

epsilon ( f64 ):

O erro de aproximação permitido.

Referências

[1] Neil J. Ross, Peter Selinger, Aproximação Clifford+T ideal sem ancilla de rotações z,

arXiv:1403.2975


Atributos

max_qubits

O número máximo de qubits suportados é 1.

min_qubits

O número mínimo de qubits suportados é 1.

supported_bases

O plugin não suporta bases para síntese.

supports_basis_gates

O plugin não suporta portas básicas. Por padrão, sintetiza-se na base ["h", "s", "t", "x"] gate.

supports_coupling_map

O plugin não suporta mapas de acoplamento.

supports_gate_errors

O plugin não suporta erros de gate.

supports_gate_errors_by_qubit

Retorna se o plug-in suporta a captura gate_errors_by_qubit

Isso difere de supports_gate_errors/gate_errors ao usar uma visão diferente dos mesmos dados. Em vez de ser indexado pelo nome do portão, ele é indexado pelo qubit e usa Gate instâncias para representar portões (em vez de nomes de portões).

gate_errors_by_qubit será um dicionário na forma de {(qubits,): [Gate, error]}. Por exemplo:

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

Observe que este dicionário pode não estar completo ou pode estar vazio, pois depende do backend de destino que relata erros em cada porta para cada qubit. As taxas de erro de porta relatadas em gate_errors são fornecidas pelo objeto do Backend dispositivo de destino e o significado exato pode ser diferente dependendo do backend.

O padrão é False

supports_gate_lengths

O plugin não suporta comprimentos de gate.

supports_gate_lengths_by_qubit

Retorna se o plug-in suporta a captura gate_lengths_by_qubit

Isso difere de supports_gate_lengths/gate_lengths ao usar uma visão diferente dos mesmos dados. Em vez de ser indexado pelo nome do portão, este é indexado pelo qubit e usa Gate instâncias para representar portões (em vez de nomes de portões)

gate_lengths_by_qubit será um dicionário na forma de {(qubits,): [Gate, length]}. Por exemplo:

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

onde o length valor está em unidades de segundos.

Observe que este dicionário pode não estar completo ou pode estar vazio, pois depende do backend de destino que relata os comprimentos de porta em cada porta para cada qubit.

O padrão é False

supports_natural_direction

O plugin não suporta direção natural, não assume portas bidirecionais de dois qubits.

supports_pulse_optimize

O plugin não suporta a otimização de pulsos.

supports_target

Se o plugin suporta a opção de target aceitar

target será um Target objeto que representa o dispositivo de destino para a saída da etapa de síntese.

Por padrão, isso será False já que a interface do plug-in é anterior à Target classe. Se um plugin retornar True para este atributo, espera-se que o plugin use o Target em vez dos valores passados se algum dos supports_gate_lengths parâmetros supports_gate_errors, supports_coupling_map, e supports_basis_gates estiverem definidos (embora, idealmente, todos esses parâmetros devam conter informações duplicadas).


Métodos

run

run(unitary, **options)

GitHub

Execute o plug-in de síntese Ross-Selinger na unidade fornecida.

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