Estou confuso sobre o que inserir no Oracle no algoritmo de Grover.
Não precisamos inserir o que estamos procurando e onde encontrar o que estamos procurando para a Oracle, além dos estados quânticos sobrepostos?
Por exemplo, suponha que tenhamos uma lista de nomes de pessoas {"Alice", "Bob", "Corey", "Dio"} e queremos descobrir se "Dio" está na lista. Em seguida, a Oracle deve tomar como uma entrada e saída de 1 / 2 ( | 00 ⟩ + | 01 ⟩ + | 10 ⟩ - | 11 ⟩ ) . Eu meio que entendo isso.
Mas também não precisamos inserir a palavra "Dio" e a lista {"Alice", "Bob", "Corey", "Dio"} no Oracle? Caso contrário, como o Oracle pode retornar a saída? Não é mencionado explicitamente, pois o Oracle é uma caixa preta e não precisamos pensar em como implementá-lo?
Meu entendimento sobre Oracle é,
- A Oracle tem a capacidade de reconhecer se a palavra "Dio" está na lista.
- Para fazer isso, o Oracle usa os estados quânticos sobrepostos como uma entrada, onde cada estado quântico representa o índice da lista.
- Então, insira aos meios da Oracle, verifique se a palavra "Dio" está no índice 0 da lista e retorno - | 00 ⟩ se sim e retorno | 00 ⟩ contrário.
- No nosso caso, a Oracle retorna .
- Mas e a lista e a palavra?