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 tem dependência 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 produzir
- 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.