Blog

Circuit du mois 21 déc. : créer des oracles sophistiqués

18
Décembre
,
2021

Les oracles sont un élément très important des algorithmes d'informatique quantique. Un oracle est essentiellement une fonction "boîte noire" qui sert d'entrée à un autre algorithme. Par exemple, dans une recherche de Grover, l'oracle identifie les valeurs qui correspondent à la recherche et celles qui n'y correspondent pas.

La création d'un oracle simple est relativement simple. Par exemple, considérons l'oracle qui fait partie du circuit Grover ci-dessous, qui fait partie du manuel Qiskit

La tâche de cet oracle particulier est de marquer les états |101> et |110> afin qu'ils soient amplifiés par la partie suivante du circuit.

Mais que se passe-t-il lorsque l'on souhaite écrire un oracle plus sophistiqué ? Par exemple, supposons que vous ayez trois variables quantiques, a, b et c. Chaque variable n'est pas un qubit unique mais un registre composé de plusieurs qubits. Supposons que a a une largeur de 2 qubits, b a également une largeur de 2 qubits et que c est large de 3 qubits. Notre oracle est conçu pour identifier les combinaisons de a, b et c tels que (en utilisant la notation Python) :

 a+ b +(c & 15) % 8 ^ 3 & a ^ 10 == 4

Cet oracle est plus complexe et, selon les préférences de l'utilisateur, il peut ressembler à ceci :

Vous pouvez voir la fonctionnalité de haut niveau, puis des détails de plus haut niveau dans certains des blocs individuels.

La création d'un tel oracle prendrait beaucoup de temps.

Sauf si vous utilisez la plateforme Classiq. Voici le code qui crée cet oracle sur Classiq :

{
  "qubit_count": 40,
  "max_depth": 1000,
  "logic_flow": [
    {
      "function": "Arithmetic",
      "function_params": {
        "expression": "(a + b + (c & 15)) % 8 ^ 3 & a ^ 10 == 4",
        "definitions": {"a": {"size": 2}, "b": {"size":2}, "c": {"size":3}},
        "method": "pebble",
        "qubit_count": 30
    },
    "add_as_single_gate": false
  ]
}

Outre les degrés de liberté évidents que sont l'écriture d'une expression arithmétique différente ou la modification de la largeur de chaque variable, il est possible de contrôler le nombre de qubits souhaité, la méthode de création de l'oracle et de nombreux autres paramètres.

Voici à quoi ressemble le circuit complet. Survolez les blocs colorés ci-dessous et cliquez sur les signes "+" des blocs ci-dessous pour agrandir et continuer à agrandir le circuit à votre guise.

Logo Classiq


Oracle complexe, créé le 17 décembre 2021 à l'aide de la plateforme de conception d'algorithmes quantiques Classiq

Il y a eu une erreur avec le script

Les oracles sont un élément très important des algorithmes d'informatique quantique. Un oracle est essentiellement une fonction "boîte noire" qui sert d'entrée à un autre algorithme. Par exemple, dans une recherche de Grover, l'oracle identifie les valeurs qui correspondent à la recherche et celles qui n'y correspondent pas.

La création d'un oracle simple est relativement simple. Par exemple, considérons l'oracle qui fait partie du circuit Grover ci-dessous, qui fait partie du manuel Qiskit

La tâche de cet oracle particulier est de marquer les états |101> et |110> afin qu'ils soient amplifiés par la partie suivante du circuit.

Mais que se passe-t-il lorsque l'on souhaite écrire un oracle plus sophistiqué ? Par exemple, supposons que vous ayez trois variables quantiques, a, b et c. Chaque variable n'est pas un qubit unique mais un registre composé de plusieurs qubits. Supposons que a a une largeur de 2 qubits, b a également une largeur de 2 qubits et que c est large de 3 qubits. Notre oracle est conçu pour identifier les combinaisons de a, b et c tels que (en utilisant la notation Python) :

 a+ b +(c & 15) % 8 ^ 3 & a ^ 10 == 4

Cet oracle est plus complexe et, selon les préférences de l'utilisateur, il peut ressembler à ceci :

Vous pouvez voir la fonctionnalité de haut niveau, puis des détails de plus haut niveau dans certains des blocs individuels.

La création d'un tel oracle prendrait beaucoup de temps.

Sauf si vous utilisez la plateforme Classiq. Voici le code qui crée cet oracle sur Classiq :

{
  "qubit_count": 40,
  "max_depth": 1000,
  "logic_flow": [
    {
      "function": "Arithmetic",
      "function_params": {
        "expression": "(a + b + (c & 15)) % 8 ^ 3 & a ^ 10 == 4",
        "definitions": {"a": {"size": 2}, "b": {"size":2}, "c": {"size":3}},
        "method": "pebble",
        "qubit_count": 30
    },
    "add_as_single_gate": false
  ]
}

Outre les degrés de liberté évidents que sont l'écriture d'une expression arithmétique différente ou la modification de la largeur de chaque variable, il est possible de contrôler le nombre de qubits souhaité, la méthode de création de l'oracle et de nombreux autres paramètres.

Voici à quoi ressemble le circuit complet. Survolez les blocs colorés ci-dessous et cliquez sur les signes "+" des blocs ci-dessous pour agrandir et continuer à agrandir le circuit à votre guise.

Logo Classiq


Oracle complexe, créé le 17 décembre 2021 à l'aide de la plateforme de conception d'algorithmes quantiques Classiq

Il y a eu une erreur avec le script

A propos de "The Qubit Guy's Podcast" (Le podcast du gars de Qubit)

Animé par The Qubit Guy (Yuval Boger, notre directeur marketing), le podcast accueille des leaders d'opinion de l'informatique quantique pour discuter de questions commerciales et techniques qui ont un impact sur l'écosystème de l'informatique quantique. Nos invités fournissent des informations intéressantes sur les logiciels et algorithmes d'ordinateurs quantiques, le matériel informatique quantique, les applications clés de l'informatique quantique, les études de marché de l'industrie quantique et bien plus encore.

Si vous souhaitez proposer un invité pour le podcast, veuillez nous contacter.

Créez des logiciels quantiques sans contraintes

contactez-nous