Skip to main content
IBM Quantum Platform

AQC

class qiskit.synthesis.unitary.aqc.AQC(optimizer=None, seed=None)

GitHub

Bases : object

Une implémentation générique du compilateur quantique approximatif. Cette mise en œuvre est indépendante de la mise en œuvre sous-jacente du circuit approximatif, de l'objectif et de l'optimiseur. Les utilisateurs peuvent transmettre des implémentations correspondantes des classes abstraites :

  • L' optimiseur est une implémentation du protocole Minimizer , un appelable utilisé pour exécuter le processus d'optimisation. Le choix de l'optimiseur peut affecter la convergence globale, le temps nécessaire au processus d'optimisation et la valeur objective obtenue.
  • Le circuit approximatif représente un modèle dont les paramètres doivent être optimisés. Actuellement, il n'existe qu'une seule implémentation basée sur des blocs d'unités CNOT à 4 rotations : CNOTUnitCircuit. Voir le document pour plus de détails.
  • L' objectif approximatif est étroitement lié à la mise en œuvre du circuit approximatif et fournit deux méthodes pour calculer la fonction objective et le gradient par rapport aux paramètres du circuit approximatif. Cet objectif est transmis à l'optimiseur. Il existe actuellement deux implémentations basées sur des blocs d'unités CNOT à 4 rotations : DefaultCNOTUnitObjective et sa version accélérée FastCNOTUnitObjective. Les deux implémentations partagent la même idée de maximisation du produit de Hilbert-Schmidt entre la matrice cible et son approximation. L'ancienne approche de mise en œuvre doit être considérée comme une approche de référence. Elle peut souffrir de problèmes de performance et est surtout adaptée à un petit nombre de qubits (jusqu'à 5 ou 6), tandis que la dernière, accélérée, peut être appliquée à des problèmes plus importants.
  • Il faut tenir compte de la croissance exponentielle de la taille de la matrice en fonction du nombre de qubits, car l'implémentation ne crée pas seulement une matrice cible potentiellement grande, mais alloue également un certain nombre de mémoires tampons temporaires dont la taille est comparable à celle de la matrice cible.

Paramètres

  • optimizer (Minimizer | None) – un optimiseur à utiliser dans la procédure d'optimisation de la recherche du meilleur circuit approximatif. Par défaut, le minimiseur scipy avec la méthode L-BFGS-B est utilisé avec le nombre maximum d'itérations fixé à 1000.
  • seed (int | None) – une valeur de départ à utiliser par le générateur de nombres aléatoires.

Méthodes

compile_unitary

compile_unitary(target_matrix, approximate_circuit, approximating_objective, initial_point=None)

GitHub

Approximately compile un circuit représenté par une matrice unitaire en résolvant un problème d'optimisation défini par approximating_objective et en utilisant approximate_circuit comme modèle pour le circuit approximatif.

Paramètres

  • target_matrix (ndarray) – une matrice unitaire à approximer.
  • approximate_circuit (ApproximateCircuit) – un circuit modèle qui sera rempli avec les valeurs des paramètres obtenues lors de la procédure d'optimisation.
  • approximating_objective (ApproximatingObjective) – une définition du problème d'optimisation.
  • initial_point (ndarray | None) – valeurs initiales des angles/paramètres à partir desquels commencer l'optimisation.

Type de retour

Aucun

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.