AQC
class qiskit.synthesis.unitary.aqc.AQC(optimizer=None, seed=None)
Bases: object
Una implementación genérica del Compilador Cuántico Aproximado. Esta implementación es independiente de la implementación subyacente del circuito aproximado, el objetivo y el optimizador. Los usuarios pueden pasar las correspondientes implementaciones de las clases abstractas:
- El optimizador es una implementación del protocolo
Minimizer, un callable utilizado para ejecutar el proceso de optimización. La elección del optimizador puede afectar a la convergencia global, al tiempo necesario para el proceso de optimización y al valor objetivo alcanzado. - El circuito aproximado representa una plantilla cuyos parámetros queremos optimizar. Actualmente, sólo existe una implementación basada en bloques de unidades CNOT de 4 rotaciones:
CNOTUnitCircuit. Consulte el documento para más detalles. - El objetivo aproximado está estrechamente vinculado a la implementación del circuito aproximado y proporciona dos métodos para calcular la función objetivo y el gradiente con respecto a los parámetros aproximados del circuito. Este objetivo se pasa al optimizador. Actualmente, existen dos implementaciones basadas en bloques de unidades CNOT de 4 rotaciones:
DefaultCNOTUnitObjectivey su versión aceleradaFastCNOTUnitObjective. Ambas implementaciones comparten la misma idea de maximización del producto Hilbert-Schmidt entre la matriz objetivo y su aproximación. El primer planteamiento de aplicación debe considerarse el de referencia. Puede adolecer de problemas de rendimiento y es adecuado sobre todo para un número reducido de qubits (hasta 5 ó 6), mientras que el segundo, acelerado, puede aplicarse a problemas mayores. - Hay que tener en cuenta el crecimiento exponencial del tamaño de la matriz con el número de qubits, ya que la implementación no sólo crea una matriz de destino potencialmente grande, sino que también asigna una serie de búferes de memoria temporales comparables en tamaño a la matriz de destino.
Parámetros
- optimizer (Minimizer | None) – un optimizador que se utilizará en el procedimiento de optimización de la búsqueda del mejor circuito aproximado. Por defecto, se utiliza el minimizador scipy con el método
L-BFGS-Bcon un máximo de iteraciones fijado en 1000. - seed (int | None) – un valor semilla para ser utilizado por un generador de números aleatorios.
Métodos
compile_unitary
compile_unitary(target_matrix, approximate_circuit, approximating_objective, initial_point=None)
Approximately compila un circuito representado como una matriz unitaria resolviendo un problema de optimización definido por approximating_objective y utilizando approximate_circuit como plantilla para el circuito aproximado.
Parámetros
- target_matrix (ndarray) – una matriz unitaria para aproximar.
- approximate_circuit (ApproximateCircuit) – un circuito plantilla que se rellenará con los valores de los parámetros obtenidos en el procedimiento de optimización.
- approximating_objective (ApproximatingObjective) – una definición del problema de optimización.
- initial_point (ndarray | None) – Valores iniciales de los ángulos/parámetros desde los que comenzar la optimización.
Tipo de retorno
Ninguna
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.