No "Quantum Computation and Quantum Information" de Mike e Ike, o algoritmo de Grover é explicado em grande detalhe. No entanto, no livro e em todas as explicações que encontrei on-line para o algoritmo de Grover, parece não haver menção de como o Oracle de Grover é construído, a menos que já saibamos qual o estado que estamos procurando, derrotando o objetivo do algoritmo. Especificamente, minha pergunta é a seguinte: dados alguns f (x) tais que, para algum valor x, f (x) = 1, mas para todos os outros f (x) = 0, como alguém constrói um oráculo que nos tirará nosso estado inicial arbitrário | x> | y> a | x> | y + f (x)>? O máximo de detalhes explícitos possível (talvez um exemplo?) Seria muito apreciado. Se tal construção para qualquer função arbitrária for possível com Hadamard, Pauli ou outros portões quânticos padrão,
16
Respostas:
O oracle é basicamente apenas uma implementação do predicado para o qual você deseja procurar uma solução satisfatória.
Por exemplo, suponha que você tenha um problema de três sat:
Ou, na forma de tabela, com cada linha sendo uma cláusula de 3, x significa "essa variável falsa", o significa "essa variável verdadeira" e espaço significa "não na cláusula":
Agora faça um circuito que calcule se a entrada é uma solução, assim:
Agora, para transformar seu circuito em um oráculo, acerte o bit de saída com uma porta Z e não calcule o lixo que você fez (por exemplo, execute o circuito de computação na ordem inversa):
É tudo o que há para isso. Calcule o predicado, acerte o resultado com um Z, não calcule o predicado. Isso é um oráculo.
Itere as etapas de difusão com as etapas do oracle, e você terá uma pesquisa grover :
... embora você deva provavelmente escolher um exemplo com menos soluções, o progresso é gradual (em vez de girar ao longo do plano de estado de solução-estado de solução em mais de 90 graus por etapa, como é o meu exemplo).
fonte