Há uma boa explicação de Craig Gidney aqui (ele também tem outro ótimo conteúdo, incluindo um simulador de circuito, em seu blog ).
Essencialmente, o algoritmo de Grover se aplica quando você tem uma função que retorna True
para uma de suas possíveis entradas e False
para todas as outras. O trabalho do algoritmo é encontrar o que retorna True
.
Para fazer isso, expressamos as entradas como cadeias de bits e as codificamos usando os estados e de uma cadeia de qubits. Portanto, a cadeia de bits seria codificada no estado de quatro qubit , por exemplo.|0⟩|1⟩0011
|0011⟩
Também precisamos ser capazes de implementar a função usando portas quânticas. Especificamente, precisamos encontrar uma sequência de portas que implementem um unitário tal queU
U|a⟩=−|a⟩,U|b⟩=|b⟩
onde é a cadeia de bits para o qual a função retornaria e é qualquer para que ele retornaria .aTrue
bFalse
Se começarmos com uma superposição de todas as sequências de bits possíveis, o que é bastante fácil de fazer apenas com Hadamarding tudo, todas as entradas começam com a mesma amplitude de (onde é o comprimento das cadeias de bits que estamos pesquisando e, portanto, o número de qubits que estamos usando). Mas se aplicarmos o oráculo , a amplitude do estado que estamos procurando mudará para .12n√nU−12n√
Esta não é uma diferença facilmente observável, por isso precisamos amplificá-la. Para fazer isso, usamos o Grover Difusão Operator , . O efeito desse operador é essencialmente observar como cada amplitude é diferente da amplitude média e inverter essa diferença. Portanto, se uma certa amplitude for uma certa quantidade maior que a amplitude média, ela se tornará a mesma quantidade menor que a média e vice-versa.D
Especificamente, se você tiver uma superposição de cadeias de bits , o operador de difusão o efeitobj
D:∑jαj|bj⟩↦∑j(2μ−αj)|bj⟩
onde é a amplitude média. Portanto, qualquer amplitude é transformada em . Para ver por que isso tem esse efeito e como implementá-lo, consulte estas notas de aula .μ=∑jαjμ+δμ−δ
A maioria das amplitudes será um pouco maior que a média (devido ao efeito do single ), então elas se tornarão um pouquinho menos que a média através esta operação. Não é uma grande mudança.−12n√
O estado que estamos procurando será afetado mais fortemente. Sua amplitude é muito menor que a média e, portanto, se tornará muito maior após a aplicação do operador de difusão. O efeito final do operador de difusão é, portanto, causar um efeito de interferência nos estados que percorre uma amplitude de de todas as respostas erradas e a adiciona à correta. Repetindo esse processo, podemos chegar rapidamente ao ponto em que nossa solução se destaca tanto da multidão que podemos identificá-la.12n√
Obviamente, tudo isso mostra que todo o trabalho é realizado pelo operador de difusão. A pesquisa é apenas um aplicativo que podemos conectar a ele.
Veja as respostas para outras perguntas para obter detalhes sobre como as funções e o operador de difusão são implementados.