Descrição do algoritmo de Grover
Nesta seção, vamos descrever o algoritmo de Grover. Começaremos discutindo as portas de consulta de fase e como construí-las, seguidas da descrição do próprio algoritmo de Grover. Por fim, discutiremos brevemente como esse algoritmo é naturalmente aplicado à busca.
Portas de consulta de fase
O algoritmo de Grover faz uso de operações conhecidas como portas de consulta de fase. Em contraste com uma porta de consulta comum , definida para uma dada função da maneira usual descrita anteriormente, uma porta de consulta de fase para a função é definida como
para toda string .
A operação pode ser implementada usando uma única porta de consulta , como sugere este diagrama:
Essa implementação faz uso do fenômeno de phase kickback e requer que um qubit de espaço de trabalho, inicializado no estado esteja disponível. Esse qubit permanece no estado após a conclusão da implementação, podendo ser reutilizado (para implementar portas subsequentes, por exemplo) ou simplesmente descartado.
Além da operação , também faremos uso de uma porta de consulta de fase para a função OR de bits, definida da seguinte forma para cada string .
Explicitamente, a porta de consulta de fase para a função OR de bits opera da seguinte maneira:
Para deixar claro, é assim que opera sobre estados da base padrão; seu comportamento em estados arbitrários é determinado a partir dessa expressão pela linearidade.
A operação pode ser implementada como um circuito quântico começando com um circuito booleano para a função OR, depois construindo uma operação (ou seja, uma porta de consulta padrão para a função OR de bits) usando o procedimento descrito na lição Fundamentos algorítmicos quânticos, e finalmente uma operação usando o fenômeno de phase kickback conforme descrito acima. Note que a operação não depende da função e, portanto, pode ser implementada por um circuito quântico sem nenhuma porta de consulta.
Descrição do algoritmo
Agora que temos as duas operações e , podemos descrever o algoritmo de Grover.
O algoritmo faz referência a um número , que é o número de iterações que ele executa (e, portanto, o número de consultas à função que ele requer). Esse número não é especificado pelo algoritmo de Grover conforme o estamos descrevendo, e discutiremos mais adiante na lição como ele pode ser escolhido.
A operação iterada no passo 2 será chamada de operação de Grover ao longo do restante desta lição. Aqui está uma representação em circuito quântico da operação de Grover quando
Nesse diagrama, a operação é representada como sendo maior do que como uma dica visual informal para sugerir que ela tende a ser a operação mais custosa. Em particular, quando estamos trabalhando dentro do modelo de consulta, requer uma consulta enquanto não requer nenhuma consulta. Se em vez disso tivermos um circuito booleano para a função e o convertermos em um circuito quântico para podemos razoavelmente esperar que o circuito quântico resultante seja maior e mais complexo do que um para
Aqui está um diagrama de um circuito quântico para o algoritmo completo quando e . Para valores maiores de , basta inserir instâncias adicionais da operação de Grover imediatamente antes das medições.
Aplicação à busca
O algoritmo de Grover pode ser aplicado ao problema de Busca da seguinte forma:
-
Escolha o número no passo 2. (Isso é discutido mais adiante na lição.)
-
Execute o algoritmo de Grover na função , usando qualquer escolha que fizermos para , para obter uma string .
-
Consulte a função na string para verificar se é uma solução válida:
-
Se , então encontramos uma solução, e podemos parar e retornar .
-
Caso contrário, se , podemos executar o procedimento novamente, possivelmente com uma escolha diferente para , ou podemos decidir desistir e produzir "nenhuma solução."
-
Depois de analisarmos como o algoritmo de Grover funciona, veremos que tomando , obtemos uma solução para o nosso problema de busca (se existir alguma) com alta probabilidade.