{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "37d2b600",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Análise\"\n",
        "description: \"Um curso gratuito sobre informação e computação quântica ministrado por IBM\"\n",
        "---\n",
        "\n",
        "<span id=\"analysis\" />\n",
        "\n",
        "# Análise\n",
        "\n",
        "Agora, analisaremos o algoritmo do Grover para entender como ele funciona.\n",
        "Começaremos com o que poderia ser descrito como uma análise *simbólica*, em que calculamos como a operação de Grover $G$ atua em determinados estados e, em seguida, vincularemos essa análise simbólica a uma imagem *geométrica* que é útil para visualizar como o algoritmo funciona.\n",
        "\n",
        "<span id=\"solutions-and-non-solutions\" />\n",
        "\n",
        "## Soluções e não soluções\n",
        "\n",
        "Vamos começar definindo dois conjuntos de strings.\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",
        "O conjunto $A_1$ contém todas as soluções para o nosso problema de pesquisa, enquanto $A_0$ contém as cadeias de caracteres que não são soluções (às quais podemos nos referir como *não-soluções* quando for conveniente).\n",
        "Esses dois conjuntos satisfazem $A_0 \\cap A_1 = \\varnothing$ e $A_0 \\cup A_1 = \\Sigma^n,$, o que significa que essa é uma *bipartição* de $\\Sigma^n.$\n",
        "\n",
        "Em seguida, definiremos dois vetores unitários que representam superposições uniformes sobre os conjuntos de soluções e não soluções.\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",
        "Em termos formais, cada um desses vetores só é definido quando o conjunto correspondente não é vazio, mas daqui em diante vamos nos concentrar no caso em que nem $A_0$ nem $A_1$ são vazios.\n",
        "Os casos de $A_0 = \\varnothing$ e $A_1 = \\varnothing$ são facilmente tratados separadamente, e faremos isso mais tarde.\n",
        "\n",
        "Como um aparte, a notação que está sendo usada aqui é comum: sempre que tivermos um conjunto finito e não vazio $S,$, podemos escrever $\\vert S\\rangle$ para denotar o vetor de estado quântico que é uniforme sobre os elementos de $S.$\n",
        "\n",
        "Vamos também definir $\\vert u \\rangle$ como um estado quântico *uniforme* em todas as cadeias de bits $n$ :\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",
        "Também temos que $\\vert u\\rangle = H^{\\otimes n} \\vert 0^n \\rangle,$ so $\\vert u\\rangle$ representa o estado do registro $\\mathsf{Q}$ após a inicialização na etapa 1 do algoritmo de Grover.\n",
        "\n",
        "Isso implica que, pouco antes de as iterações de $G$ acontecerem na etapa 2, o estado de $\\mathsf{Q}$ está contido no espaço vetorial bidimensional abrangido por $\\vert A_0\\rangle$ e $\\vert A_1\\rangle,$ e, além disso, os coeficientes desses vetores são números reais.\n",
        "Como veremos, o estado de $\\mathsf{Q}$ sempre terá essas propriedades - o que significa que o estado é uma combinação linear real de $\\vert A_0\\rangle$ e $\\vert A_1\\rangle$ - após qualquer número de iterações da operação $G$ na etapa 2.\n",
        "\n",
        "<span id=\"an-observation-about-the-grover-operation\" />\n",
        "\n",
        "## Uma observação sobre a operação Grover\n",
        "\n",
        "Agora vamos voltar nossa atenção para a operação de Grover\n",
        "\n",
        "$$\n",
        "G = H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n} Z_f,\n",
        "$$\n",
        "\n",
        "começando com uma observação interessante sobre ele.\n",
        "\n",
        "Imagine, por um momento, que substituímos a função $f$ pela composição de $f$ com a função NOT - ou, em outras palavras, a função que obtemos ao inverter o bit de saída de $f.$ Chamaremos essa nova função de $g,$ e podemos expressá-la usando símbolos de algumas maneiras 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 string $x\\in\\Sigma^n,$ e, portanto\n",
        "\n",
        "$$\n",
        "Z_g = - Z_f.\n",
        "$$\n",
        "\n",
        "Isso significa que, se substituíssemos a função $f$ pela função $g,$, o algoritmo de Grover não funcionaria de forma diferente, pois os estados que obtemos do algoritmo nos dois casos são necessariamente equivalentes até uma fase global.\n",
        "\n",
        "Isso não é um problema!\n",
        "Intuitivamente falando, o algoritmo não se importa com quais cadeias são soluções e quais não são - ele só precisa ser capaz de *distinguir* soluções e não soluções para operar corretamente.\n",
        "\n",
        "<span id=\"action-of-the-grover-operation\" />\n",
        "\n",
        "## Ação da operação Grover\n",
        "\n",
        "Agora vamos considerar a ação de $G$ nos vetores de estado quântico $\\vert A_0\\rangle$ e $\\vert A_1\\rangle.$\n",
        "\n",
        "Primeiro, vamos observar que a operação $Z_f$ tem uma ação muito simples em $\\vert A_0\\rangle$ e $\\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",
        "Em segundo lugar, temos a operação $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n}.$ A operação $Z_{\\mathrm{OR}}$ é definida 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",
        "novamente para cada string $x\\in\\Sigma^n,$ e uma maneira alternativa conveniente de expressar essa operação é assim:\n",
        "\n",
        "$$\n",
        "Z_{\\mathrm{OR}} = 2 \\vert 0^n \\rangle \\langle 0^n \\vert - \\mathbb{I}.\n",
        "$$\n",
        "\n",
        "Uma maneira simples de verificar se essa expressão está de acordo com a definição de $Z_{\\mathrm{OR}}$ é avaliar sua ação em estados de base padrão.\n",
        "\n",
        "A operação $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n}$ pode, portanto, ser escrita da seguinte forma:\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",
        "usando a mesma notação, $\\vert u \\rangle,$ que usamos acima para a superposição uniforme em todas as cadeias de $n$ bits.\n",
        "\n",
        "E agora temos o que precisamos para calcular a ação de $G$ em $\\vert A_0\\rangle$ e $\\vert A_1\\rangle.$ Primeiro, vamos calcular a ação de $G$ em $\\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",
        "E, em segundo lugar, vamos calcular a ação de $G$ em $\\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",
        "Em ambos os casos, estamos usando a equação\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",
        "juntamente com as expressões\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 se seguem.\n",
        "\n",
        "Em resumo, temos\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 já observamos, o estado de $\\mathsf{Q}$ imediatamente antes da etapa 2 está contido no espaço bidimensional abrangido por $\\vert A_0\\rangle$ e $\\vert A_1\\rangle,$ e acabamos de estabelecer que $G$ mapeia qualquer vetor nesse espaço para outro vetor no mesmo espaço.\n",
        "Isso significa que, para fins de análise, podemos concentrar nossa atenção exclusivamente nesse subespaço.\n",
        "\n",
        "Para entender melhor o que está acontecendo nesse espaço bidimensional, vamos expressar a ação do $G$ nesse espaço como uma 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",
        "cujas primeira e segunda linhas/colunas correspondem a $\\vert A_0\\rangle$ e $\\vert A_1\\rangle,$, respectivamente.\n",
        "Até agora, nesta série, sempre conectamos as linhas e colunas das matrizes com os estados clássicos de um sistema, mas as matrizes também podem ser usadas para descrever as ações de mapeamentos lineares em diferentes bases, como temos aqui.\n",
        "\n",
        "Embora não seja óbvio à primeira vista, a matriz $M$ é o que obtemos ao *elevar ao quadrado* uma matriz de aparência mais simples.\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",
        "A 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",
        "é uma *matriz de rotação*, que pode ser expressa 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",
        "Esse ângulo $\\theta$ desempenhará um papel muito importante na análise a seguir, portanto, vale a pena enfatizar sua importância aqui, pois o vemos pela primeira vez.\n",
        "\n",
        "À luz dessa expressão dessa 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",
        "Isso ocorre porque girar o ângulo $\\theta$ duas vezes é equivalente a girar o ângulo $2\\theta.$ Outra maneira de ver isso é usar a expressão alternativa\n",
        "\n",
        "$$\n",
        "\\theta\n",
        "= \\cos^{-1}\\biggl(\\sqrt{\\frac{\\vert A_0\\vert}{N}}\\biggr),\n",
        "$$\n",
        "\n",
        "juntamente com as fórmulas de *ângulo duplo* da trigonometria:\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",
        "Em resumo, o estado do registro $\\mathsf{Q}$ no início da etapa 2 é\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",
        "e o efeito de aplicar $G$ a esse estado é girá-lo em um ângulo $2\\theta$ dentro do espaço abrangido por $\\vert A_0\\rangle$ e $\\vert A_1\\rangle.$ Assim, por exemplo, temos\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",
        "e em geral\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",
        "## Imagem geométrica\n",
        "\n",
        "Agora vamos conectar a análise que acabamos de fazer a uma imagem geométrica.\n",
        "A ideia é que a operação $G$ é o produto de duas *reflexões*, $Z_f$ e $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n}.$ E o efeito líquido da realização de duas reflexões é a realização de uma *rotação*.\n",
        "\n",
        "Vamos começar com $Z_f.$ Como já observamos anteriormente, temos\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",
        "No espaço vetorial bidimensional abrangido por $\\vert A_0\\rangle$ e $\\vert A_1\\rangle,$ essa é uma *reflexão* sobre a linha paralela a $\\vert A_0\\rangle,$ que chamaremos de $L_1.$ Aqui está uma figura que ilustra a ação dessa reflexão em um vetor unitário hipotético $\\vert\\psi\\rangle,$ que estamos supondo ser uma combinação linear real de $\\vert A_0\\rangle$ e $\\vert A_1\\rangle.$\n",
        "\n",
        "![Uma figura que descreve a ação de uma reflexão em um vetor.](https://quantum.cloud.ibm.com/learning/images/courses/fundamentals-of-quantum-algorithms/grover-algorithm/reflection1.svg)\n",
        "\n",
        "Em segundo lugar, temos a operação $H^{\\otimes n} Z_{\\mathrm{OR}} H^{\\otimes n},$, que já vimos que pode ser escrita 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",
        "Essa também é uma reflexão, dessa vez sobre a linha $L_2$ paralela ao vetor $\\vert u\\rangle.$ Aqui está uma figura que descreve a ação dessa reflexão em um vetor unitário $\\vert\\psi\\rangle.$\n",
        "\n",
        "![Uma figura que descreve a ação de uma segunda reflexão em um vetor.](https://quantum.cloud.ibm.com/learning/images/courses/fundamentals-of-quantum-algorithms/grover-algorithm/reflection2.svg)\n",
        "\n",
        "Quando compomos essas duas reflexões, obtemos uma rotação - pelo dobro do ângulo entre as linhas de reflexão - como ilustra esta figura.\n",
        "\n",
        "![Uma figura que descreve a ação da operação de Grover em um vetor.](https://quantum.cloud.ibm.com/learning/images/courses/fundamentals-of-quantum-algorithms/grover-algorithm/Grover_rotation.svg)\n",
        "\n",
        "Isso explica, em termos geométricos, por que o efeito da operação de Grover é girar as combinações lineares de $\\vert A_0\\rangle$ e $\\vert A_1\\rangle$ em um â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
}