AQCSynthesisPlugin
class qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin
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)
Ejecutar la síntesis para la matriz unitaria dada
Parámetros
- unitary (numpy.ndarray) – La matriz unitaria a sintetizar a un
DAGCircuitobjeto - 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 enUnitarySynthesisPluginpara 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