{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "37d2b600",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Analyse\"\n",
        "description: \"Cours gratuit sur l' IBM, l'information quantique et le calcul quantique\"\n",
        "---\n",
        "\n",
        "<span id=\"analysis\" />\n",
        "\n",
        "# Analyse\n",
        "\n",
        "Nous allons maintenant analyser l'algorithme de Grover pour comprendre comment il fonctionne.\n",
        "Nous commencerons par ce que l'on pourrait appeler une analyse *symbolique*, où nous calculons comment l'opération Grover $G$ agit sur certains états, puis nous relierons cette analyse symbolique à une image *géométrique* utile pour visualiser le fonctionnement de l'algorithme.\n",
        "\n",
        "<span id=\"solutions-and-non-solutions\" />\n",
        "\n",
        "## Solutions et non-solutions\n",
        "\n",
        "Commençons par définir deux ensembles de chaînes.\n",
        "\n",
        "$$\n",
        "\\begin{aligned}\n",
        "  A_0 &= \\bigl\\{ x\\in\\Sigma^n : f(x) = 0\\bigr\\} \\\\\n",
        "  A_1 &= \\bigl\\{ x\\in\\Sigma^n : f(x) = 1\\bigr\\}\n",
        "\\end{aligned}\n",
        "$$\n",
        "\n",
        "L'ensemble $A_1$ contient toutes les solutions à notre problème de recherche, tandis que $A_0$ contient les chaînes qui ne sont pas des solutions (que nous pouvons appeler \" *non-solutions* \" lorsque c'est pratique).\n",
        "Ces deux ensembles satisfont $A_0 \\cap A_1 = \\varnothing$ et $A_0 \\cup A_1 = \\Sigma^n,$, ce qui revient à dire qu'il s'agit d'une *bipartition* de $\\Sigma^n.$\n",
        "\n",
        "Nous allons ensuite définir deux vecteurs unitaires représentant des superpositions uniformes sur les ensembles de solutions et de non-solutions.\n",
        "\n",
        "$$\n",
        "\\begin{aligned}\n",
        "  \\vert A_0\\rangle &= \\frac{1}{\\sqrt{\\vert A_0\\vert}} \\sum_{x\\in A_0} \\vert x\\rangle \\\\\n",
        "  \\vert A_1\\rangle &= \\frac{1}{\\sqrt{\\vert A_1\\vert}} \\sum_{x\\in A_1} \\vert x\\rangle\n",
        "\\end{aligned}\n",
        "$$\n",
        "\n",
        "Formellement, chacun de ces vecteurs n'est défini que lorsque l'ensemble correspondant est non vide, mais nous nous concentrerons ci-après sur le cas où ni $A_0$ ni $A_1$ ne sont vides.\n",
        "Les cas de $A_0 = \\varnothing$ et $A_1 = \\varnothing$ peuvent facilement être traités séparément, ce que nous ferons plus tard.\n",
        "\n",
        "Soit dit en passant, la notation utilisée ici est courante : chaque fois que nous disposons d'un ensemble fini et non vide $S,$, nous pouvons écrire $\\vert S\\rangle$ pour désigner le vecteur d'état quantique qui est uniforme sur les éléments de $S.$\n",
        "\n",
        "Définissons également $\\vert u \\rangle$ comme un état quantique *uniforme* sur toutes les chaînes de $n$ bits :\n",
        "\n",
        "$$\n",
        "\\vert u\\rangle = \\frac{1}{\\sqrt{N}} \\sum_{x\\in\\Sigma^n} \\vert x\\rangle.\n",
        "$$\n",
        "\n",
        "Notez que\n",
        "\n",
        "$$\n",
        "\\vert u\\rangle\n",
        "= \\sqrt{\\frac{\\vert A_0 \\vert}{N}} \\vert A_0\\rangle\n",
        "+ \\sqrt{\\frac{\\vert A_1 \\vert}{N}} \\vert A_1\\rangle.\n",
        "$$\n",
        "\n",
        "Nous savons également que $\\vert u\\rangle = H^{\\otimes n} \\vert 0^n \\rangle,$ donc $\\vert u\\rangle$ représente l'état du registre $\\mathsf{Q}$ après l'initialisation à l'étape 1 de l'algorithme de Grover.\n",
        "\n",
        "Cela implique que juste avant les itérations de $G$ à l'étape 2, l'état de $\\mathsf{Q}$ est contenu dans l'espace vectoriel bidimensionnel couvert par $\\vert A_0\\rangle$ et $\\vert A_1\\rangle,$ et que, de plus, les coefficients de ces vecteurs sont des nombres réels.\n",
        "Comme nous le verrons, l'état de $\\mathsf{Q}$ aura toujours ces propriétés - ce qui signifie que l'état est une combinaison linéaire réelle de $\\vert A_0\\rangle$ et $\\vert A_1\\rangle$ - après un nombre quelconque d'itérations de l'opération $G$ à l'étape 2.\n",
        "\n",
        "<span id=\"an-observation-about-the-grover-operation\" />\n",
        "\n",
        "## Une observation concernant l'opération Grover\n",
        "\n",
        "Nous allons maintenant nous intéresser à l'opération Grover\n",
        "\n",
        "$$\n",
        "G = H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n} Z_f,\n",
        "$$\n",
        "\n",
        "en commençant par une observation intéressante à son sujet.\n",
        "\n",
        "Imaginons un instant que nous remplacions la fonction $f$ par la composition de $f$ avec la fonction NOT - ou, en d'autres termes, la fonction que nous obtenons en retournant le bit de sortie de $f.$ Nous appellerons cette nouvelle fonction $g,$ et nous pouvons l'exprimer à l'aide de symboles de différentes manières.\n",
        "\n",
        "$$\n",
        "g(x) = \\neg f(x) = 1 \\oplus f(x) = 1 - f(x) =\n",
        "\\begin{cases}\n",
        "1 & f(x) = 0\\\\[1mm]\n",
        "0 & f(x) = 1\n",
        "\\end{cases}\n",
        "$$\n",
        "\n",
        "Notez que\n",
        "\n",
        "$$\n",
        "(-1)^{g(x)} = (-1)^{1 \\oplus f(x)} = - (-1)^{f(x)}\n",
        "$$\n",
        "\n",
        "pour toute chaîne de caractères $x\\in\\Sigma^n,$ et donc\n",
        "\n",
        "$$\n",
        "Z_g = - Z_f.\n",
        "$$\n",
        "\n",
        "Cela signifie que si nous devions remplacer la fonction $f$ par la fonction $g,$, l'algorithme de Grover ne fonctionnerait pas différemment, car les états obtenus par l'algorithme dans les deux cas sont nécessairement équivalents jusqu'à une phase globale.\n",
        "\n",
        "Ce n'est pas un problème!\n",
        "Intuitivement, l'algorithme ne se préoccupe pas de savoir quelles chaînes sont des solutions et quelles chaînes sont des non-solutions - il doit seulement être capable de *distinguer les* solutions et les non-solutions pour fonctionner correctement.\n",
        "\n",
        "<span id=\"action-of-the-grover-operation\" />\n",
        "\n",
        "## Action de l'opération Grover\n",
        "\n",
        "Considérons maintenant l'action de $G$ sur les vecteurs d'états quantiques $\\vert A_0\\rangle$ et $\\vert A_1\\rangle.$\n",
        "\n",
        "Observons tout d'abord que l'opération $Z_f$ a une action très simple sur $\\vert A_0\\rangle$ et sur $\\vert A_1\\rangle.$\n",
        "\n",
        "$$\n",
        "\\begin{aligned}\n",
        "Z_f \\vert A_0\\rangle & = \\vert A_0\\rangle \\\\[1mm]\n",
        "Z_f \\vert A_1\\rangle & = -\\vert A_1\\rangle\n",
        "\\end{aligned}\n",
        "$$\n",
        "\n",
        "Deuxièmement, nous avons l'opération $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n}.$ L'opération $Z_{\\mathrm{OR}}$ est définie comme suit\n",
        "\n",
        "$$\n",
        "Z_{\\mathrm{OR}} \\vert x\\rangle\n",
        "= \\begin{cases}\n",
        "\\vert x\\rangle & x = 0^n \\\\[2mm]\n",
        "-\\vert x\\rangle & x \\neq 0^n,\n",
        "\\end{cases}\n",
        "$$\n",
        "\n",
        "pour chaque chaîne de caractères $x\\in\\Sigma^n,$ et une autre façon pratique d'exprimer cette opération est la suivante :\n",
        "\n",
        "$$\n",
        "Z_{\\mathrm{OR}} = 2 \\vert 0^n \\rangle \\langle 0^n \\vert - \\mathbb{I}.\n",
        "$$\n",
        "\n",
        "Un moyen simple de vérifier que cette expression est conforme à la définition de $Z_{\\mathrm{OR}}$ est d'évaluer son action sur les états de base standard.\n",
        "\n",
        "L'opération $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n}$ peut donc s'écrire comme suit :\n",
        "\n",
        "$$\n",
        "H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n} = 2 H^{\\otimes n} \\vert 0^n \\rangle \\langle 0^n \\vert H^{\\otimes n} - \\mathbb{I} = 2 \\vert u \\rangle \\langle u \\vert - \\mathbb{I},\n",
        "$$\n",
        "\n",
        "en utilisant la même notation, $\\vert u \\rangle,$, que celle que nous avons utilisée ci-dessus pour la superposition uniforme de toutes les chaînes de $n$ -bits.\n",
        "\n",
        "Nous avons maintenant ce qu'il nous faut pour calculer l'action de $G$ sur $\\vert A_0\\rangle$ et $\\vert A_1\\rangle.$ Calculons d'abord l'action de $G$ sur $\\vert A_0\\rangle.$\n",
        "\n",
        "$$\n",
        "\\begin{aligned}\n",
        "  G \\vert A_0 \\rangle\n",
        "  & = \\bigl( 2 \\vert u\\rangle \\langle u \\vert - \\mathbb{I}\\bigr) Z_f \\vert A_0\\rangle \\\\\n",
        "  & = \\bigl( 2 \\vert u\\rangle \\langle u \\vert - \\mathbb{I}\\bigr) \\vert A_0\\rangle \\\\\n",
        "  & = 2 \\sqrt{\\frac{\\vert A_0\\vert}{N}} \\vert u\\rangle -\\vert A_0 \\rangle\\\\\n",
        "  & = 2 \\sqrt{\\frac{\\vert A_0\\vert}{N}} \\biggl(\n",
        "  \\sqrt{\\frac{\\vert A_0\\vert}{N}} \\vert A_0\\rangle + \\sqrt{\\frac{\\vert A_1\\vert}{N}} \\vert A_1\\rangle\\biggr)\n",
        "  -\\vert A_0 \\rangle \\\\\n",
        "  & = \\biggl( \\frac{2\\vert A_0\\vert}{N} - 1\\biggr) \\vert A_0 \\rangle\n",
        "  + \\frac{2 \\sqrt{\\vert A_0\\vert \\cdot \\vert A_1\\vert}}{N} \\vert A_1 \\rangle \\\\\n",
        "  & = \\frac{\\vert A_0\\vert - \\vert A_1\\vert}{N} \\vert A_0 \\rangle\n",
        "  + \\frac{2 \\sqrt{\\vert A_0\\vert \\cdot \\vert A_1\\vert}}{N} \\vert A_1 \\rangle\n",
        "\\end{aligned}\n",
        "$$\n",
        "\n",
        "Et deuxièmement, calculons l'action de $G$ sur $\\vert A_1\\rangle.$\n",
        "\n",
        "$$\n",
        "\\begin{aligned}\n",
        "  G \\vert A_1 \\rangle\n",
        "  & = \\bigl( 2 \\vert u\\rangle \\langle u \\vert - \\mathbb{I} \\bigr) Z_f \\vert A_1\\rangle \\\\\n",
        "  & = - \\bigl( 2 \\vert u\\rangle \\langle u \\vert - \\mathbb{I} \\bigr) \\vert A_1\\rangle \\\\\n",
        "  & = - 2 \\sqrt{\\frac{\\vert A_1\\vert}{N}} \\vert u\\rangle + \\vert A_1 \\rangle \\\\\n",
        "  & = - 2 \\sqrt{\\frac{\\vert A_1\\vert}{N}} \\biggl(\\sqrt{\\frac{\\vert A_0\\vert}{N}} \\vert A_0\\rangle\n",
        "      + \\sqrt{\\frac{\\vert A_1\\vert}{N}} \\vert A_1\\rangle\\biggr) + \\vert A_1 \\rangle \\\\\n",
        "  & = - \\frac{2 \\sqrt{\\vert A_1\\vert \\cdot \\vert A_0\\vert}}{N} \\vert A_0 \\rangle\n",
        "      + \\biggl( 1 - \\frac{2\\vert A_1\\vert}{N} \\biggr) \\vert A_1 \\rangle \\\\\n",
        "  & = - \\frac{2 \\sqrt{\\vert A_1\\vert \\cdot \\vert A_0\\vert}}{N} \\vert A_0 \\rangle\n",
        "      + \\frac{\\vert A_0\\vert - \\vert A_1\\vert}{N} \\vert A_1 \\rangle\n",
        "\\end{aligned}\n",
        "$$\n",
        "\n",
        "Dans les deux cas, nous utilisons l'équation suivante\n",
        "\n",
        "$$\n",
        "\\vert u\\rangle\n",
        "= \\sqrt{\\frac{\\vert A_0 \\vert}{N}} \\vert A_0\\rangle\n",
        "+ \\sqrt{\\frac{\\vert A_1 \\vert}{N}} \\vert A_1\\rangle\n",
        "$$\n",
        "\n",
        "ainsi que les expressions\n",
        "\n",
        "$$\n",
        "\\langle u \\vert A_0\\rangle = \\sqrt{\\frac{\\vert A_0 \\vert}{N}}\n",
        "\\qquad\\text{and}\\qquad\n",
        "\\langle u \\vert A_1\\rangle = \\sqrt{\\frac{\\vert A_1 \\vert}{N}}\n",
        "$$\n",
        "\n",
        "qui suivent.\n",
        "\n",
        "En résumé, nous avons\n",
        "\n",
        "$$\n",
        "\\begin{aligned}\n",
        "  G \\vert A_0 \\rangle\n",
        "  & = \\frac{\\vert A_0\\vert - \\vert A_1\\vert}{N} \\vert A_0 \\rangle\n",
        "  + \\frac{2 \\sqrt{\\vert A_0\\vert \\cdot \\vert A_1\\vert}}{N} \\vert A_1 \\rangle\\\\[2mm]\n",
        "  G \\vert A_1 \\rangle\n",
        "  & = - \\frac{2 \\sqrt{\\vert A_1\\vert \\cdot \\vert A_0\\vert}}{N} \\vert A_0 \\rangle\n",
        "      + \\frac{\\vert A_0\\vert - \\vert A_1\\vert}{N} \\vert A_1 \\rangle.\n",
        "\\end{aligned}\n",
        "$$\n",
        "\n",
        "Comme nous l'avons déjà noté, l'état de $\\mathsf{Q}$ juste avant l'étape 2 est contenu dans l'espace bidimensionnel couvert par $\\vert A_0\\rangle$ et $\\vert A_1\\rangle,$ et nous venons d'établir que $G$ fait correspondre tout vecteur de cet espace à un autre vecteur du même espace.\n",
        "Cela signifie que, pour les besoins de l'analyse, nous pouvons concentrer notre attention exclusivement sur ce sous-espace.\n",
        "\n",
        "Pour mieux comprendre ce qui se passe dans cet espace bidimensionnel, exprimons l'action de $G$ sur cet espace sous la forme d'une matrice,\n",
        "\n",
        "$$\n",
        "M = \\begin{pmatrix}\n",
        "  \\frac{\\vert A_0\\vert - \\vert A_1\\vert}{N} & -\\frac{2 \\sqrt{\\vert A_1\\vert \\cdot \\vert A_0\\vert}}{N} \\\\[2mm]\n",
        "  \\frac{2 \\sqrt{\\vert A_0\\vert \\cdot \\vert A_1\\vert}}{N} & \\frac{\\vert A_0\\vert - \\vert A_1\\vert}{N}\n",
        "\\end{pmatrix},\n",
        "$$\n",
        "\n",
        "dont les première et deuxième lignes/colonnes correspondent respectivement à $\\vert A_0\\rangle$ et $\\vert A_1\\rangle,$.\n",
        "Jusqu'à présent, dans cette série, nous avons toujours associé les lignes et les colonnes des matrices aux états classiques d'un système, mais les matrices peuvent également être utilisées pour décrire les actions des mappings linéaires sur différentes bases, comme c'est le cas ici.\n",
        "\n",
        "Bien que cela ne soit pas du tout évident à première vue, la matrice $M$ est ce que nous obtenons en *élevant au carré* une matrice d'apparence plus simple.\n",
        "\n",
        "$$\n",
        "\\begin{pmatrix}\n",
        "  \\sqrt{\\frac{\\vert A_0\\vert}{N}} & - \\sqrt{\\frac{\\vert A_1\\vert}{N}} \\\\[2mm]\n",
        "  \\sqrt{\\frac{\\vert A_1\\vert}{N}} & \\sqrt{\\frac{\\vert A_0\\vert}{N}}\n",
        "\\end{pmatrix}^2\n",
        "=\n",
        "\\begin{pmatrix}\n",
        "  \\frac{\\vert A_0\\vert - \\vert A_1\\vert}{N} & -\\frac{2 \\sqrt{\\vert A_1\\vert \\cdot \\vert A_0\\vert}}{N} \\\\[2mm]\n",
        "  \\frac{2 \\sqrt{\\vert A_0\\vert \\cdot \\vert A_1\\vert}}{N} & \\frac{\\vert A_0\\vert - \\vert A_1\\vert}{N}\n",
        "\\end{pmatrix} = M\n",
        "$$\n",
        "\n",
        "La matrice\n",
        "\n",
        "$$\n",
        "\\begin{pmatrix}\n",
        "  \\sqrt{\\frac{\\vert A_0\\vert}{N}} & - \\sqrt{\\frac{\\vert A_1\\vert}{N}} \\\\[2mm]\n",
        "  \\sqrt{\\frac{\\vert A_1\\vert}{N}} & \\sqrt{\\frac{\\vert A_0\\vert}{N}}\n",
        "\\end{pmatrix}\n",
        "$$\n",
        "\n",
        "est une *matrice de rotation*, que l'on peut également exprimer comme suit\n",
        "\n",
        "$$\n",
        "\\begin{pmatrix}\n",
        "  \\sqrt{\\frac{\\vert A_0\\vert}{N}} & - \\sqrt{\\frac{\\vert A_1\\vert}{N}} \\\\[2mm]\n",
        "  \\sqrt{\\frac{\\vert A_1\\vert}{N}} & \\sqrt{\\frac{\\vert A_0\\vert}{N}}\n",
        "\\end{pmatrix}\n",
        "=\n",
        "\\begin{pmatrix}\n",
        "  \\cos(\\theta) & -\\sin(\\theta) \\\\[2mm]\n",
        "  \\sin(\\theta) & \\cos(\\theta)\n",
        "\\end{pmatrix}\n",
        "$$\n",
        "\n",
        "pour\n",
        "\n",
        "$$\n",
        "\\theta = \\sin^{-1}\\biggl(\\sqrt{\\frac{\\vert A_1\\vert}{N}}\\biggr).\n",
        "$$\n",
        "\n",
        "Cet angle $\\theta$ va jouer un rôle très important dans l'analyse qui suit, et il convient donc de souligner son importance ici, alors que nous le voyons pour la première fois.\n",
        "\n",
        "À la lumière de l'expression de cette matrice, on observe que\n",
        "\n",
        "$$\n",
        "M = \\begin{pmatrix}\n",
        "  \\cos(\\theta) & -\\sin(\\theta) \\\\[2mm]\n",
        "  \\sin(\\theta) & \\cos(\\theta)\n",
        "\\end{pmatrix}^2\n",
        "= \\begin{pmatrix}\n",
        "  \\cos(2\\theta) & -\\sin(2\\theta) \\\\[2mm]\n",
        "  \\sin(2\\theta) & \\cos(2\\theta)\n",
        "\\end{pmatrix}.\n",
        "$$\n",
        "\n",
        "En effet, tourner deux fois autour de l'angle $\\theta$ équivaut à tourner autour de l'angle $2\\theta.$ Une autre façon de voir cela est d'utiliser l'expression alternative\n",
        "\n",
        "$$\n",
        "\\theta\n",
        "= \\cos^{-1}\\biggl(\\sqrt{\\frac{\\vert A_0\\vert}{N}}\\biggr),\n",
        "$$\n",
        "\n",
        "ainsi que les formules d' *angle double* de la trigonométrie :\n",
        "\n",
        "$$\n",
        "\\begin{aligned}\n",
        "\\cos(2\\theta) & = \\cos^2(\\theta) - \\sin^2(\\theta)\\\\[1mm]\n",
        "\\sin(2\\theta) & = 2 \\sin(\\theta)\\cos(\\theta).\n",
        "\\end{aligned}\n",
        "$$\n",
        "\n",
        "En résumé, l'état du registre $\\mathsf{Q}$ au début de l'étape 2 est le suivant\n",
        "\n",
        "$$\n",
        "\\vert u\\rangle\n",
        "= \\sqrt{\\frac{\\vert A_0\\vert}{N}} \\vert A_0\\rangle\n",
        "+ \\sqrt{\\frac{\\vert A_1\\vert}{N}} \\vert A_1\\rangle\n",
        "= \\cos(\\theta) \\vert A_0\\rangle + \\sin(\\theta) \\vert A_1\\rangle,\n",
        "$$\n",
        "\n",
        "et l'application de $G$ à cet état a pour effet de le faire pivoter d'un angle $2\\theta$ dans l'espace couvert par $\\vert A_0\\rangle$ et $\\vert A_1\\rangle.$ Ainsi, par exemple, nous avons\n",
        "\n",
        "$$\n",
        "\\begin{aligned}\n",
        "G \\vert u \\rangle &= \\cos(3\\theta) \\vert A_0\\rangle + \\sin(3\\theta) \\vert A_1\\rangle\\\\[1mm]\n",
        "G^2 \\vert u \\rangle &= \\cos(5\\theta) \\vert A_0\\rangle + \\sin(5\\theta) \\vert A_1\\rangle\\\\[1mm]\n",
        "G^3 \\vert u \\rangle &= \\cos(7\\theta) \\vert A_0\\rangle + \\sin(7\\theta) \\vert A_1\\rangle\n",
        "\\end{aligned}\n",
        "$$\n",
        "\n",
        "et en général\n",
        "\n",
        "$$\n",
        "G^t \\vert u \\rangle\n",
        "= \\cos\\bigl((2t + 1)\\theta\\bigr) \\vert A_0\\rangle\n",
        "+ \\sin\\bigl((2t + 1)\\theta\\bigr) \\vert A_1\\rangle.\n",
        "$$\n",
        "\n",
        "<span id=\"geometric-picture\" />\n",
        "\n",
        "## Image géométrique\n",
        "\n",
        "Relions maintenant l'analyse que nous venons de faire à une image géométrique.\n",
        "L'idée est que l'opération $G$ est le produit de deux *réflexions*, $Z_f$ et $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n}.$ Et l'effet net de ces deux réflexions est d'effectuer une *rotation*.\n",
        "\n",
        "Commençons par $Z_f.$ Comme nous l'avons déjà observé précédemment, nous avons\n",
        "\n",
        "$$\n",
        "\\begin{aligned}\n",
        "Z_f \\vert A_0\\rangle & = \\vert A_0\\rangle \\\\[1mm]\n",
        "Z_f \\vert A_1\\rangle & = -\\vert A_1\\rangle.\n",
        "\\end{aligned}\n",
        "$$\n",
        "\n",
        "Dans l'espace vectoriel à deux dimensions couvert par $\\vert A_0\\rangle$ et $\\vert A_1\\rangle,$ il s'agit d'une *réflexion* sur la ligne parallèle à $\\vert A_0\\rangle,$ que nous appellerons $L_1.$ Voici une figure illustrant l'action de cette réflexion sur un vecteur unitaire hypothétique $\\vert\\psi\\rangle,$ que nous supposons être une combinaison linéaire réelle de $\\vert A_0\\rangle$ et de $\\vert A_1\\rangle.$\n",
        "\n",
        "![Figure représentant l'action d'une réflexion sur un vecteur.](https://quantum.cloud.ibm.com/learning/images/courses/fundamentals-of-quantum-algorithms/grover-algorithm/reflection1.svg)\n",
        "\n",
        "Deuxièmement, nous avons l'opération $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n},$ qui, comme nous l'avons déjà vu, peut s'écrire comme suit\n",
        "\n",
        "$$\n",
        "H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n} = 2 \\vert u \\rangle \\langle u \\vert - \\mathbb{I}.\n",
        "$$\n",
        "\n",
        "Il s'agit également d'une réflexion, cette fois sur la ligne $L_2$ parallèle au vecteur $\\vert u\\rangle.$ Voici une figure illustrant l'action de cette réflexion sur un vecteur unitaire $\\vert\\psi\\rangle.$\n",
        "\n",
        "![Figure représentant l'action d'une seconde réflexion sur un vecteur.](https://quantum.cloud.ibm.com/learning/images/courses/fundamentals-of-quantum-algorithms/grover-algorithm/reflection2.svg)\n",
        "\n",
        "Lorsque l'on compose ces deux réflexions, on obtient une rotation - de deux fois l'angle entre les lignes de réflexion - comme l'illustre cette figure.\n",
        "\n",
        "![Figure illustrant l'action de l'opération Grover sur un vecteur.](https://quantum.cloud.ibm.com/learning/images/courses/fundamentals-of-quantum-algorithms/grover-algorithm/Grover_rotation.svg)\n",
        "\n",
        "Cela explique, en termes géométriques, pourquoi l'opération Grover a pour effet de faire pivoter les combinaisons linéaires de $\\vert A_0\\rangle$ et $\\vert A_1\\rangle$ d'un angle de $2\\theta.$\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "id": "a1b8767d",
      "source": "© IBM Corp., 2017-2026"
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 5
}