A função f é simplesmente uma função booleana arbitrária de uma sequência de bits: f: { 0 , 1 }n→ { 0 , 1 } . Para aplicativos que quebram criptografia, como [1] , [2] ou [3] , isso não é realmente uma 'pesquisa de banco de dados', o que exigiria o armazenamento de todo o banco de dados como um circuito quântico de alguma forma, mas uma função
x ↦ { 1 ,0 ,se S H A - 256( x ) = y;de outra forma,
para y fixo , que não possui estrutura, podemos explorar para uma pesquisa clássica, diferentemente, digamos, da função
x ↦ { 1 ,0 ,se 2x≡ y( mod22048- 1942289 ) ,caso contrário ,
que possui uma estrutura que pode ser explorada para invertê-la mais rapidamente, mesmo em um computador clássico.
A questão do custo específico não pode ser respondida em geral porque pode ser qualquer circuito - é apenas uma questão de transformar um circuito quântico em um circuito clássico . Mas, geralmente, como no exemplo acima, a função é muito barata de avaliar em um computador clássico, portanto não deve representar um ônus particularmente oneroso para um computador quântico, para o qual todo o resto do algoritmo de Grover está dentro do seu orçamento.fff
O único custo geral na parte superior de é um gate NÃO condicional extra onde é xor e um qubit adicional adicional para ele. Em particular, se tivermos um circuito construído em e no circuito para , se o aplicarmos a junto com um qubit auxiliar inicialmente no estado quefC: | um ⟩ | b ⟩ → | um ⟩ | um ⊕ b ⟩
⊕F: | x ⟩ | um ⟩ | junk ⟩ ↦ | x ⟩ | a ⊕ f( X ) ⟩ | lixo′⟩
Cf| x ⟩| - ⟩ =H| 1 ⟩ =(1 / 2-√) ( | 0 ⟩ - | 1 ⟩ )H é um portão Hadamard, então temos
F| x ⟩ | - ⟩ | junk⟩= 12-√( F| x ⟩ | 0 ⟩ | junk⟩-F| x ⟩ | 1 ⟩ | junk⟩ )= 12-√( |X⟩|f( X ) ⟩ | lixo′⟩ - | x ⟩ | 1 ⊕ f( X ) ⟩ | lixo′⟩ ) .
Se então , simplificando, obtemos enquanto que se então , então e portanto, em geralf( x ) = 01 ⊕ f( x ) = 1F| x ⟩ | - ⟩ | junk⟩= | x ⟩ | - ⟩ | lixo′⟩ ,
f( x ) = 11 ⊕ f( x ) = 0F| x ⟩ | - ⟩ | junk⟩=- | x ⟩ | - ⟩ | lixo′⟩ ,
F| x ⟩ | - ⟩ | sucata⟩=(-1 )f( X )| x ⟩ | - ⟩ | lixo′⟩ .