Skip to main content
IBM Quantum Platform

AQCSynthesisPlugin

class qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin

GitHub

Bases: UnitarySynthesisPlugin

Un plugin de síntesis unitaria Qiskit basado en AQC.

Este complemento es invocado por transpile() cuando el parámetro unitary_synthesis_method es "aqc".

Este plugin admite personalización y se pueden pasar parámetros adicionales al plugin pasando un diccionario como parámetro unitary_synthesis_plugin_config de la función transpile() función.

Parámetros admitidos en el diccionario:

network_layout (str)

Tipo de geometría de red, uno de {"sequ", "spin", "cart", "cyclic_spin", "cyclic_line"}. El valor por defecto es "spin".

connectivity_type (str)

tipo de conectividad inter-qubit, {"full", "line", "star"}. El valor por defecto es "full".

profundidad (int)

profundidad de la red CNOT, es decir, el número de capas, donde cada capa consta de un único bloque CNOT.

optimizador (Minimizer)

Una implementación del protocolo Minimizer que se utilizará en el proceso de optimización.

semilla (int)

Una semilla aleatoria.

punto_inicial (ndarray)

Valores iniciales de ángulos/parámetros a partir de los cuales se inicia el proceso de optimización.


Atributos

max_qubits

El número máximo de qubits admitidos es 14.

min_qubits

El número mínimo de qubits admitidos es 3.

supported_bases

El plugin no admite bases para la síntesis.

supports_basis_gates

El plugin no soporta puertas base y por defecto sintetiza un circuito usando ["rx", "ry", "rz", "cx"] puerta base.

supports_coupling_map

El plugin no admite mapas de acoplamiento.

supports_gate_errors

El plugin no admite errores de puerta.

supports_gate_errors_by_qubit

Devuelve si el plugin permite tomar gate_errors_by_qubit

Se diferencia de supports_gate_errors/gate_errors en que utiliza una visión diferente de los mismos datos. En lugar de estar codificado por nombre de puerta, está codificado por qubit y utiliza instancias para representar puertas (en lugar de nombres de puerta) Gate para representar las puertas (en lugar de sus nombres).

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 podría 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 indicadas en gate_errors son proporcionadas por el objeto Backend del dispositivo de destino y el significado exacto puede ser diferente dependiendo del backend.

El valor por defecto es Falso

supports_gate_lengths

El plugin no admite longitudes de puerta.

supports_gate_lengths_by_qubit

Devuelve si el plugin permite tomar gate_lengths_by_qubit

Se diferencia de supports_gate_lengths/gate_lengths en que utiliza una visión diferente de los mismos datos. En lugar de estar codificado por nombre de puerta, está codificado por qubit y utiliza Gate para representar las puertas (en lugar de los nombres de las 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 valor length está en unidades de segundos.

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 las longitudes de puerta en cada puerta para cada qubit.

El valor por defecto es Falso

supports_natural_direction

El plugin no soporta la dirección natural, asume puertas bidireccionales de dos qubits.

supports_pulse_optimize

El plugin no admite la optimización de pulsos.

supports_target

Si el plugin permite tomar target como opción

target será un Target que representa el dispositivo de destino para la salida del pase de síntesis.

Por defecto será False ya que la interfaz del plugin es anterior a la clase Target de la clase Si un plugin devuelve True para este atributo, se espera que el plugin utilice el parámetro Target en lugar de los valores pasados si se establece alguno de supports_gate_lengths, supports_gate_errors, supports_coupling_map, y supports_basis_gates (aunque lo ideal sería que todos esos parámetros contuvieran información duplicada).


Métodos

run

run(unitary, **options)

GitHub

Ejecutar la síntesis para la matriz unitaria dada

Parámetros

  • unitary (numpy.ndarray) – La matriz unitaria a sintetizar a un DAGCircuit objeto
  • options - Los kwargs opcionales que se pasan en función de la salida de los métodos support_* de la clase. Consulte la documentación de estos métodos en UnitarySynthesisPlugin para ver cuáles son las claves y los valores.

Devuelve

La representación en circuito dag del unitario. Alternativamente, puede devolver una tupla de la forma (dag, wires) donde dag es la representación en circuito dag de la representación en circuito del unitario y wires son los cables de mapeo a utilizar para qiskit.dagcircuit.DAGCircuit.substitute_node_with_dag(). Si devuelve una tupla y wires es None se comportará igual que si sólo se devolviera un DAGCircuit . Además, si devuelve None , no se realizará ninguna sustitución.

Tipo de retorno

Circuito DAG

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.