Podemos acelerar o algoritmo de Grover executando processos paralelos?

10

Na computação clássica, podemos executar a pesquisa de chaves (por exemplo, AES) executando os nós de computação paralela o maior número possível.

É claro que também podemos executar muitos algoritmos de Grover.

Minha pergunta é ; é possível acelerar usando mais de um algoritmo de Grover como na computação clássica?

kelalaka
fonte

Respostas:

6

Certamente! Imagine que você tem K=2k cópias do oráculo de pesquisa US que você pode usar. Normalmente, você pesquisar por iteração a ação

Hn(In2|00|n)HnUS,
a partir de um estado inicial (H|0)n . Isso leva tempo Θ(N). (Estou usandoInpara denotar amatriz de identidade2n×2n.)

Pode-se substituir este com 2k cópias paralelas, cada um indexado por um x{0 0,1 1}k , usando

(EukH(n-k))Euk(Eun-k-2|0 00 0|(n-k))(EukH(n-k))vocêS
e a partir de um estado|x(H|0 0)(n-k) O tempo necessário para executar estes seria reduzida aO(N/K), ao custo de exigirKvezes mais espaço.

Em um sentido de escala, pode-se considerar isso um resultado irrelevante. Se você possui um número fixo de oráculos, K , obtém um número fixo ( K ) melhoria (assim como, se você tiverKnúcleos clássicos paralelos, a melhor melhoria possível é um fator deK), e isso não altera a escala. Mas isso muda o tempo de execução fundamental. Sabemos que o algoritmo de Grover é exatamente ideal. Leva o tempo mínimo absoluto possível com um único oráculo. Então, sabendo que você recebe umK melhoria no tempo é útil no que diz respeito a esse valor de referência de um tempo específico em execução em um valor específico deN.

DaftWullie
fonte
mas se você fizer isso, a comparação com a performance clássica perde parte de seu significado, não é? Afinal, você também pode acelerar a pesquisa clássica executando a operação que verifica se um determinado é o alvo em paralelo em todas as entradas. Isso claramente requer suposições adicionais sobre os recursos disponíveis, mas o mesmo tipo de suposição que é feito em seu argumentox
glS 25/10/1918
11
vai para o infinito, mas K não. Seu problema aumenta, mas seus recursos permanecem poucos. NK
AHusain
11
Esta resposta está correta (embora possa não ser a ideal, como o DaftWullie adverte). Este é o mesmo atestado à paralelização que se observa na complexidade clássica dos circuitos. Se você deseja uma aceleração devido à paralelização, analisa a profundidade do circuito (porque a coordenação de vários processos não reduzirá o trabalho total). Não importa se é constante - ou você está interessado na melhoria da profundidade da paralelização ou não. Como na computação quântica, apenas jogar mais computadores em um problema não magicamente torna tudo rápido! K
Niel de Beaudrap 26/10/19
3

De certa forma, se estivéssemos fazendo isso em paralelo em diferentes nós, você economizaria tempo para executar. Mas se falamos de complexidade (é o que geralmente chamamos de aceleração), precisamos de um pouco de análise.

Você concorda que precisamos sobre N operações para o caso não paralelo. Digamos que temos dois nós e separamos a lista de N elementos em duas listas de tamanhoN1 1,N2. A pesquisa nas sub-listas leva cerca deN1 1,N2 .

No entanto, temos que

N=N1 1+N2N1 1+N2

E você ainda precisaria verificar qual saída entre o que é retornado pelos processos paralelos é a que você procura. Ele adiciona uma constante na complexidade, de modo que geralmente a ocultamos na notação O

No entanto, isso ainda seria interessante, especialmente se tivermos que agrupar o hardware, porque somos limitados em número de qubits ou outras limitações.

cnada
fonte
2
Para N1 = N2 é ainda uma desigualdade: sqrt (2) * sqrt (N1) <2 * sqrt (N1)
Mariia Mykhailova
Ah, de fato. Na minha cabeça $ \ sqrt {a b} = \ sqrt {a} \ sqrt {b} $ pensei. Eu deveria parar de responder aqui à meia-noite e quando estiver cansado. Obrigado por apontar isso.
Cnada
3
@cnada: Existem pelo menos duas noções diferentes de complexidade, ambas relevantes para acelerar. Um é a complexidade do tamanho e o outro é a complexidade profunda A menos que especificado de outra forma, geralmente preferimos considerar a complexidade do tamanho, mas a profundidade ainda é algo que interessa muito à complexidade computacional quântica, por exemplo, no MBQC [arXiv: quant-ph / 0301052 , arXiv: 0704.1736 ] e resultados recentes em separações incondicionais de profundidade [arXiv: 1704.00690 ].
Niel de Beaudrap 25/10/19
@NieldeBeaudrap Eu pensei que as pessoas olham mais profundamente na complexidade. Mas para Grover, o tamanho e a complexidade da profundidade são da mesma ordem. Isso é quadrático no tamanho do problema (geralmente visto como o tamanho de uma lista de N elementos). Você acha que minha abordagem aqui não está certa?
Cnada
2
Você não está dizendo nada de errado , estou apenas apontando que você está enfatizando indevidamente a complexidade do tamanho e não está realmente trabalhando no benefício da complexidade profunda. Não acontece muita coisa interessante se você apenas fizer processos paralelos de Grover, mas, como sugere a resposta de DaftWullie (e considerando o pós-processamento clássico), a complexidade da profundidade vai de kO(1 1) paralogaritmo(k)N parak(N)Ω(1)processos paralelos de Grover, que é uma melhoria por um fator delog(k)N/kk(N)Ω(1) (o fator de log vem da identificação de qual processo, se houver, encontrou uma solução). k/log(k)
Niel de Beaudrap 25/10/19