RossSelingerSynthesis
class qiskit.transpiler.passes.synthesis.ross_selinger_plugin.RossSelingerSynthesis
Bases: UnitarySynthesisPlugin
Un complemento de síntesis unitaria Qiskit de Ross-Selinger.
El algoritmo se describe en [1]. El código fuente (en Rust) está disponible en https://github.com/qiskit-community/rsgridsynth.
Este complemento se invoca cuando transpile() el unitary_synthesis_method parámetro se establece en "gridsynth".
Este complemento admite la personalización y se pueden pasar parámetros adicionales al complemento pasando un diccionario como parámetro unitary_synthesis_plugin_config de la transpile() función.
Parámetros admitidos en el diccionario:
epsilon ( f64 ):
El error de aproximación permitido.
Referencias:
[1] Neil J. Ross, Peter Selinger, Aproximación óptima sin ancilla de Clifford+T de rotaciones z,
Atributos
max_qubits
El número máximo de qubits admitidos es 1.
min_qubits
El número mínimo de qubits admitidos es 1.
supported_bases
El complemento no admite bases para la síntesis.
supports_basis_gates
El complemento no admite puertas básicas. Por defecto, se sintetiza a la base ["h", "s", "t", "x"] de la puerta.
supports_coupling_map
El complemento no admite mapas de acoplamiento.
supports_gate_errors
El complemento no admite errores de puerta.
supports_gate_errors_by_qubit
Devuelve si el complemento admite la toma gate_errors_by_qubit
Esto difiere de supports_gate_errors/gate_errors al utilizar una vista diferente de los mismos datos. En lugar de estar ordenado por nombre de puerta, está ordenado por qubit y utiliza Gate instancias para representar las puertas (en lugar de nombres de puertas).
gate_errors_by_qubit será un diccionario en forma de {(qubits,): [Gate, error]}. Por ejemplo:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}Tenga en cuenta que este diccionario puede no estar completo o estar vacío, ya que depende de que el backend de destino informe de los errores de puerta en cada puerta para cada qubit. Las tasas de error de puerta informadas en gate_errors son proporcionadas por el dispositivo de destino Backend objeto y el significado exacto puede variar según el backend.
El valor predeterminado es False
supports_gate_lengths
El complemento no admite longitudes de puerta.
supports_gate_lengths_by_qubit
Devuelve si el complemento admite la toma gate_lengths_by_qubit
Esto difiere de supports_gate_lengths/gate_lengths al utilizar una vista diferente de los mismos datos. En lugar de estar codificado por el nombre de la puerta, está codificado por qubit y utiliza Gate instancias para representar puertas (en lugar de nombres de puertas)
gate_lengths_by_qubit será un diccionario en forma de {(qubits,): [Gate, length]}. Por ejemplo:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}donde el length valor se expresa en segundos.
Tenga en cuenta que este diccionario puede no estar completo o estar vacío, ya que depende del backend de destino que informe de las longitudes de puerta en cada puerta para cada qubit.
El valor predeterminado es False
supports_natural_direction
El complemento no admite la dirección natural, no asume puertas bidireccionales de dos qubits.
supports_pulse_optimize
El complemento no admite la optimización de pulsos.
supports_target
Si el complemento admite tomar target como una opción
target será un Target objeto que representa el dispositivo de destino para la salida de la pasada de síntesis.
Por defecto, esto será False ya que la interfaz del complemento es anterior a la Target clase. Si un complemento devuelve True para este atributo, se espera que el complemento utilice el Target en lugar de los valores pasados si se establece alguno supports_basis_gates de supports_gate_lengths, supports_gate_errors, supports_coupling_map, y (aunque lo ideal sería que todos esos parámetros contuvieran información duplicada).