Eu tenho tentado entender o que poderia ser a vantagem de usar o algoritmo Grover para pesquisar em um banco de dados arbitrário não ordenado D (chave, valor) com N valores em vez de uma pesquisa clássica.
Eu assumi que a função oracle é uma função f (tecla) = y, onde y é o índice do valor correspondente no banco de dados clássico.
Meu problema está relacionado ao oráculo. O circuito oracle deve ser modificado para cada pesquisa realizada no banco de dados porque a chave está especificada no oracle. Vamos assumir que esta é uma operação insignificante por simplicidade.
Supondo que o circuito oráculo deva ser calculado classicamente, seria necessário produzir um circuito que se comporte como a função f (tecla) = y. Esta função seria obtida em pelo menos O (N) etapas (exceto em alguns casos especiais). O circuito da função oracle deve ser recalculado toda vez que uma entrada do banco de dados estiver sendo modificada / adicionada / removida, com um custo de O (N).
Muitos trabalhos, como Implementações de algoritmos quânticos para iniciantes , Algoritmos quânticos para correspondência e fluxos de rede parecem não considerar o oráculo.
Não sei se tenho que considerar um banco de dados quântico para obter uma vantagem real ou não ( isso e a falta de confiabilidade dos resultados quânticos me convenceram não é uma idéia muito boa, mas é apenas uma conjectura).
Então, onde é considerada a complexidade para construir o oráculo? Eu entendi algo errado?
"O circuito da função oracle precisa ser recalculado toda vez que uma entrada do banco de dados for modificada / adicionada / removida, com um custo de O (N)" é uma suposição errada?
fonte
Respostas:
O algoritmo de Grover não tem vantagem ao pesquisar em um banco de dados não ordenado, porque a codificação do oráculo em um circuito requer operaçõesΩ~( N ) . Você pode provar isso com um simples argumento de contagem de circuitos. Se o circuito tivesse o tamanho O ( n0,99) , haveria menos circuitos distintos do que oráculos distintos. Portanto, a complexidade operacional real é Ω~( n1.5) , mesmo que a complexidade da consulta seja O( n0,5) .
O algoritmo de Grover só tem uma vantagem quando o que você está pesquisando é abstrato, como possíveis soluções para um problema de SAT, em vez de literalmente armazenado em hardware em algum lugar, como um banco de dados.
fonte
Você está certo em reconhecer a complexidade de construir o oráculo para usá-lo com a pesquisa de Grover - é realmente a parte complicada de resolver o problema e, de fato, muitas fontes não consideram essa complexidade.
Eu gosto de pensar no oráculo como uma ferramenta para reconhecer a resposta, não para encontrá-la. Por exemplo, se você estiver procurando resolver um problema SAT , o circuito oracle codificará a fórmula booleana para uma instância específica de um problema que você está tentando resolver. O tamanho do circuito, neste caso, depende do tamanho da fórmula, e não do tamanho do espaço de pesquisa. Você pode encontrar um exemplo de implementação de um oracle para uma instância do problema SAT no meu tutorial .
Se você usasse o algoritmo de Grover para pesquisa no banco de dados, o oráculo teria que codificar a condição que você está procurando, mas também os critérios para determinar se o elemento está em um banco de dados. Por exemplo, se você estiver procurando por um nome que comece com A, o oráculo precisará reconhecer todas as cadeias que começam com A, mas também precisará reconhecer quais das cadeias estão presentes no banco de dados - caso contrário, o algoritmo produzirá uma cadeia aleatória começando com A, que provavelmente não é o que você estava procurando. (Este não foi um problema no exemplo do problema SAT, pois qualquer atribuição de variáveis que satisfaça a fórmula é uma atribuição de variável válida.)
Não conheço um bom exemplo de como usar a pesquisa de Grover para pesquisar em um banco de dados não estruturado - na melhor das hipóteses, esse algoritmo é adequado para pesquisas com alguma estrutura. Vale a pena conferir outras perguntas sobre Grover neste site, pois muitas delas consideram implementações de oráculos.
fonte
O problema está em sua suposição inicial: o oráculo para Grover é baseado em uma função f (valor) = 0/1, em que 1 indica que o valor atende aos seus critérios de pesquisa e 0 indica que não. Isso significa que você precisa criar um novo oráculo para cada pesquisa diferente, mas não para cada banco de dados diferente.
Dito isto, o algoritmo de Grover e um banco de dados quântico não substituem os métodos clássicos de pesquisa de banco de dados. Dê uma olhada neste artigo para uma discussão sobre os aspectos práticos do algoritmo de Grover neste contexto.
O algoritmo de Grover tem aplicação prática quando generalizado à amplificação de amplitude , que aparece como um componente de muitos outros algoritmos quânticos. Amplificação de amplitude é uma maneira de melhorar a probabilidade de sucesso de um algoritmo quântico probabilístico.
fonte
O algoritmo de Grover é um solucionador de circuito SAT (quântico). Suponho que também possa ser um solucionador de caixa preta literal, mas funcionaria apenas com caixas pretas que não despejam seu estado de entrada emaranhado, e estou tendo problemas para acreditar que essas coisas existem.
Não sei por que Grover ou qualquer outra pessoa o chamou de algoritmo de pesquisa de banco de dados. É claro que você pode dar a ele um circuito que implementa um teste de associação definido, com algumas das entradas conectadas à chave que você está procurando e o restante representando o valor de saída e chamá-lo de uma busca no banco de dados. Mas você poderia fazer o mesmo com um solucionador SAT clássico e ninguém os chama de algoritmos de pesquisa de banco de dados, que eu saiba. E para que Grover (ou solucionadores clássicos de SAT) sejam competitivos nesse tipo de problema, o "banco de dados" precisa ser fundamentalmente indefinível, o que significa que é muito grande para ser indexável, o que significa que não é realmente armazenado em nenhum lugar, o que o torna na minha opinião, não um banco de dados (e não dados).
Encontrar um circuito eficiente implementando uma determinada função é um problema importante e interessante, mas também é incrivelmente amplo; inclui muito do que se chama ciência da computação. Não vejo o que se pode dizer sobre isso no contexto do algoritmo de Grover que não se aplicaria igualmente em nenhum outro contexto. O algoritmo de Grover apenas pega um circuito otimizado quando você o encontra e o avalia cerca de √N vezes. O circuito precisa ser reversível, tornando-o um pouco diferente dos circuitos clássicos comuns, mas isso ainda não está diretamente relacionado a Grover.
Em resumo, acho que as pessoas não falam sobre encontrar o circuito do oráculo porque ele não está realmente relacionado ao algoritmo quântico (apesar do título do artigo de Grover) e porque é um tópico tão complexo e abrangente que nenhum tratamento poderia fazer justiça de qualquer maneira. .
fonte