{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "37d2b600",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Análisis\"\n",
        "description: \"Curso gratuito « IBM » sobre información y computación cuánticas\"\n",
        "---\n",
        "\n",
        "<span id=\"analysis\" />\n",
        "\n",
        "# Análisis\n",
        "\n",
        "Ahora analizaremos el algoritmo de Grover para entender cómo funciona.\n",
        "Empezaremos con lo que podría describirse como un análisis *simbólico*, en el que calculamos cómo actúa la operación Grover $G$ sobre determinados estados, y luego vincularemos este análisis simbólico a una imagen *geométrica* útil para visualizar cómo funciona el algoritmo.\n",
        "\n",
        "<span id=\"solutions-and-non-solutions\" />\n",
        "\n",
        "## Soluciones y no soluciones\n",
        "\n",
        "Empecemos por definir dos conjuntos de cadenas.\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",
        "El conjunto $A_1$ contiene todas las soluciones a nuestro problema de búsqueda, mientras que $A_0$ contiene las cadenas que no son soluciones (a las que podemos referirnos como *no-soluciones* cuando sea conveniente).\n",
        "Estos dos conjuntos satisfacen $A_0 \\cap A_1 = \\varnothing$ y $A_0 \\cup A_1 = \\Sigma^n,$ es decir que se trata de una *bipartición* de $\\Sigma^n.$\n",
        "\n",
        "A continuación definiremos dos vectores unitarios que representan superposiciones uniformes sobre los conjuntos de soluciones y no soluciones.\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",
        "Formalmente, cada uno de estos vectores sólo está definido cuando su conjunto correspondiente no es vacío, pero a partir de ahora nos centraremos en el caso de que ni $A_0$ ni $A_1$ estén vacíos.\n",
        "Los casos que $A_0 = \\varnothing$ y $A_1 = \\varnothing$ son fáciles de tratar por separado, y lo haremos más adelante.\n",
        "\n",
        "Como apunte, la notación que se utiliza aquí es común: siempre que tengamos un conjunto finito y no vacío $S,$ podemos escribir $\\vert S\\rangle$ para denotar el vector de estado cuántico que es uniforme sobre los elementos de $S.$\n",
        "\n",
        "Definamos también $\\vert u \\rangle$ como un estado cuántico *uniforme* sobre todas las cadenas de $n$ -bit:\n",
        "\n",
        "$$\n",
        "\\vert u\\rangle = \\frac{1}{\\sqrt{N}} \\sum_{x\\in\\Sigma^n} \\vert x\\rangle.\n",
        "$$\n",
        "\n",
        "Observe 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",
        "También tenemos que $\\vert u\\rangle = H^{\\otimes n} \\vert 0^n \\rangle,$ así que $\\vert u\\rangle$ representa el estado del registro $\\mathsf{Q}$ después de la inicialización en el paso 1 del algoritmo de Grover.\n",
        "\n",
        "Esto implica que justo antes de que se produzcan las iteraciones de $G$ en el paso 2, el estado de $\\mathsf{Q}$ está contenido en el espacio vectorial bidimensional abarcado por $\\vert A_0\\rangle$ y $\\vert A_1\\rangle,$ y además los coeficientes de estos vectores son números reales.\n",
        "Como veremos, el estado de $\\mathsf{Q}$ siempre tendrá estas propiedades -lo que significa que el estado es una combinación lineal real de $\\vert A_0\\rangle$ y $\\vert A_1\\rangle$ - después de cualquier número de iteraciones de la operación $G$ en el paso 2.\n",
        "\n",
        "<span id=\"an-observation-about-the-grover-operation\" />\n",
        "\n",
        "## Una observación sobre la operación Grover\n",
        "\n",
        "Ahora vamos a centrar nuestra atención en la operación Grover\n",
        "\n",
        "$$\n",
        "G = H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n} Z_f,\n",
        "$$\n",
        "\n",
        "comenzando con una interesante observación al respecto.\n",
        "\n",
        "Imaginemos por un momento que sustituimos la función $f$ por la composición de $f$ con la función NOT -o, en otras palabras, la función que obtenemos volteando el bit de salida de $f.$ Llamaremos a esta nueva función $g,$ y podemos expresarla mediante símbolos de varias formas alternativas.\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",
        "Observe que\n",
        "\n",
        "$$\n",
        "(-1)^{g(x)} = (-1)^{1 \\oplus f(x)} = - (-1)^{f(x)}\n",
        "$$\n",
        "\n",
        "para cada cadena $x\\in\\Sigma^n,$ y, por tanto\n",
        "\n",
        "$$\n",
        "Z_g = - Z_f.\n",
        "$$\n",
        "\n",
        "Esto significa que si sustituyéramos la función $f$ por la función $g,$ el algoritmo de Grover no funcionaría de forma diferente - porque los estados que obtenemos del algoritmo en los dos casos son necesariamente equivalentes hasta una fase global.\n",
        "\n",
        "¡Esto no es un problema!\n",
        "Intuitivamente, al algoritmo no le importa qué cadenas son soluciones y cuáles no, sólo necesita poder *distinguir* entre soluciones y no soluciones para funcionar correctamente.\n",
        "\n",
        "<span id=\"action-of-the-grover-operation\" />\n",
        "\n",
        "## Acción de la operación Grover\n",
        "\n",
        "Consideremos ahora la acción de $G$ sobre los vectores de estado cuántico $\\vert A_0\\rangle$ y $\\vert A_1\\rangle.$\n",
        "\n",
        "En primer lugar, observemos que la operación $Z_f$ tiene una acción muy simple sobre $\\vert A_0\\rangle$ y $\\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",
        "En segundo lugar, tenemos la operación $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n}.$ La operación $Z_{\\mathrm{OR}}$ se define como\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",
        "de nuevo para cada cadena $x\\in\\Sigma^n,$ y una forma alternativa conveniente de expresar esta operación es la siguiente:\n",
        "\n",
        "$$\n",
        "Z_{\\mathrm{OR}} = 2 \\vert 0^n \\rangle \\langle 0^n \\vert - \\mathbb{I}.\n",
        "$$\n",
        "\n",
        "Una forma sencilla de verificar que esta expresión concuerda con la definición de $Z_{\\mathrm{OR}}$ es evaluar su acción sobre estados base estándar.\n",
        "\n",
        "Por tanto, la operación $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n}$ puede escribirse así:\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",
        "utilizando la misma notación, $\\vert u \\rangle,$ que utilizamos anteriormente para la superposición uniforme sobre todas las cadenas de $n$ -bit.\n",
        "\n",
        "Y ahora tenemos lo que necesitamos para calcular la acción de $G$ sobre $\\vert A_0\\rangle$ y $\\vert A_1\\rangle.$ Primero calculemos la acción de $G$ sobre $\\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",
        "Y segundo, calculemos la acción de $G$ sobre $\\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",
        "En ambos casos utilizamos la ecuación\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",
        "junto con las expresiones\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",
        "que siguen.\n",
        "\n",
        "En resumen, tenemos\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",
        "Como ya hemos señalado, el estado de $\\mathsf{Q}$ justo antes del paso 2 está contenido en el espacio bidimensional abarcado por $\\vert A_0\\rangle$ y $\\vert A_1\\rangle,$ y acabamos de establecer que $G$ mapea cualquier vector de este espacio a otro vector del mismo espacio.\n",
        "Esto significa que, en aras del análisis, podemos centrar nuestra atención exclusivamente en este subespacio.\n",
        "\n",
        "Para comprender mejor lo que ocurre en este espacio bidimensional, expresemos la acción de $G$ sobre este espacio como una matriz,\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",
        "cuyas primera y segunda filas/columnas corresponden a $\\vert A_0\\rangle$ y $\\vert A_1\\rangle,$ respectivamente.\n",
        "Hasta ahora en esta serie, siempre hemos relacionado las filas y columnas de las matrices con los estados clásicos de un sistema, pero las matrices también se pueden utilizar para describir las acciones de los mapeos lineales sobre diferentes bases como tenemos aquí.\n",
        "\n",
        "Aunque no resulte evidente a primera vista, la matriz $M$ es la que obtenemos *elevando al cuadrado* una matriz de aspecto más sencillo.\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 matriz\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",
        "es una *matriz de rotación*, que podemos expresar alternativamente como\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",
        "para\n",
        "\n",
        "$$\n",
        "\\theta = \\sin^{-1}\\biggl(\\sqrt{\\frac{\\vert A_1\\vert}{N}}\\biggr).\n",
        "$$\n",
        "\n",
        "Este ángulo $\\theta$ va a desempeñar un papel muy importante en el análisis que sigue, por lo que merece la pena subrayar su importancia aquí, ya que lo vemos por primera vez.\n",
        "\n",
        "A la luz de la expresión de esta matriz, observamos 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",
        "Esto se debe a que girar dos veces el ángulo $\\theta$ equivale a girar el ángulo $2\\theta.$ Otra forma de ver esto es hacer uso de la expresión alternativa\n",
        "\n",
        "$$\n",
        "\\theta\n",
        "= \\cos^{-1}\\biggl(\\sqrt{\\frac{\\vert A_0\\vert}{N}}\\biggr),\n",
        "$$\n",
        "\n",
        "junto con las fórmulas de *ángulo doble* de la trigonometría:\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 resumen, el estado del registro $\\mathsf{Q}$ al inicio del paso 2 es\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",
        "y el efecto de aplicar $G$ a este estado es rotarlo un ángulo $2\\theta$ dentro del espacio abarcado por $\\vert A_0\\rangle$ y $\\vert A_1\\rangle.$ Así, por ejemplo, tenemos\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",
        "y en general\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",
        "## Imagen geométrica\n",
        "\n",
        "Ahora vamos a conectar el análisis que acabamos de hacer con una imagen geométrica.\n",
        "La idea es que la operación $G$ es el producto de dos *reflexiones*, $Z_f$ y $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n}.$ Y el efecto neto de realizar dos reflexiones es realizar una *rotación*.\n",
        "\n",
        "Empecemos por $Z_f.$ Como ya hemos observado anteriormente, tenemos\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",
        "Dentro del espacio vectorial bidimensional abarcado por $\\vert A_0\\rangle$ y $\\vert A_1\\rangle,$ se trata de una *reflexión* sobre la recta paralela a $\\vert A_0\\rangle,$ que llamaremos $L_1.$ He aquí una figura que ilustra la acción de esta reflexión sobre un hipotético vector unitario $\\vert\\psi\\rangle,$ que suponemos es una combinación lineal real de $\\vert A_0\\rangle$ y $\\vert A_1\\rangle.$\n",
        "\n",
        "![Figura que representa la acción de una reflexión sobre un vector.](https://quantum.cloud.ibm.com/learning/images/courses/fundamentals-of-quantum-algorithms/grover-algorithm/reflection1.svg)\n",
        "\n",
        "En segundo lugar tenemos la operación $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n},$ que ya hemos visto que se puede escribir como\n",
        "\n",
        "$$\n",
        "H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n} = 2 \\vert u \\rangle \\langle u \\vert - \\mathbb{I}.\n",
        "$$\n",
        "\n",
        "Se trata también de una reflexión, esta vez sobre la recta $L_2$ paralela al vector $\\vert u\\rangle.$ He aquí una figura que representa la acción de esta reflexión sobre un vector unitario $\\vert\\psi\\rangle.$\n",
        "\n",
        "![Figura que representa la acción de una segunda reflexión sobre un vector.](https://quantum.cloud.ibm.com/learning/images/courses/fundamentals-of-quantum-algorithms/grover-algorithm/reflection2.svg)\n",
        "\n",
        "Cuando componemos estas dos reflexiones, obtenemos una rotación - por el doble del ángulo entre las líneas de reflexión - como ilustra esta figura.\n",
        "\n",
        "![Figura que representa la acción de la operación Grover sobre un vector.](https://quantum.cloud.ibm.com/learning/images/courses/fundamentals-of-quantum-algorithms/grover-algorithm/Grover_rotation.svg)\n",
        "\n",
        "Esto explica, en términos geométricos, por qué el efecto de la operación Grover es rotar combinaciones lineales de $\\vert A_0\\rangle$ y $\\vert A_1\\rangle$ en un ángulo 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
}