O problema de Simon - Simon's problem

Na teoria da complexidade computacional e na computação quântica , o problema de Simon é um problema computacional comprovado para ser resolvido exponencialmente mais rápido em um computador quântico do que em um computador clássico (isto é, tradicional). O algoritmo quântico que resolve o problema de Simon, geralmente chamado de algoritmo de Simon , serviu de inspiração para o algoritmo de Shor . Ambos os problemas são casos especiais do problema do subgrupo oculto abeliano , que agora é conhecido por ter algoritmos quânticos eficientes.

O problema é definido no modelo de complexidade de árvore de decisão ou complexidade de consulta e foi concebido por Daniel Simon em 1994. Simon exibiu um algoritmo quântico que resolve o problema de Simon exponencialmente mais rápido e com exponencialmente menos consultas do que o melhor algoritmo clássico probabilístico (ou determinístico). Em particular, o algoritmo de Simon usa um número linear de pesquisas e qualquer algoritmo probabilístico clássico deve usar um número exponencial de pesquisas.

Este problema produz uma separação oráculo entre as classes de complexidade BPP (complexidade de consulta clássica de erro limitado) e BQP (complexidade de consulta quântica de erro limitado). Esta é a mesma separação que o algoritmo de Bernstein-Vazirani consegue, e diferente da separação fornecida pelo algoritmo de Deutsch-Jozsa , que separa P e EQP . Ao contrário do algoritmo de Bernstein-Vazirani , a separação do algoritmo de Simon é exponencial .

Como esse problema pressupõe a existência de um oráculo de "caixa preta" altamente estruturado para obter sua aceleração, esse problema tem pouco valor prático. No entanto, sem tal oráculo, acelerações exponenciais não podem ser facilmente provadas, pois isso provaria que P é diferente de PSPACE .

Descrição do Problema

Dada uma função (implementada por uma caixa preta ou oráculo) com a promessa de que, para algum desconhecido , para todos ,

se e somente se ,

O objetivo é identificar s fazendo o mínimo de consultas possível a f (x) .

Outra afirmação comum desse problema é distinguir o caso, em que a função é um-para-um, do caso em que a função é dois-para-um e satisfaz .

Exemplo

Por exemplo, se , então a função a seguir é um exemplo de uma função que satisfaz a propriedade necessária e mencionada:

000 101
001 010
010 000
011 110
100 000
101 110
110 101
111 010

Neste caso, (ou seja, a solução). Pode ser facilmente verificado que cada saída de ocorre duas vezes, e as duas strings de entrada correspondentes a qualquer saída dada têm XOR bit a bit igual a .

Por exemplo, as strings de entrada e são mapeadas (por ) para a mesma string de saída . e . Se aplicarmos XOR a 010 e 100, obteremos 110, ou seja

também pode ser verificado usando as strings de entrada 001 e 111 que são mapeadas (por f) para a mesma string de saída 010. Se aplicarmos XOR a 001 e 111, obteremos 110, isto é . Isso nos dá a mesma solução que resolvemos antes.

Neste exemplo, a função f é de fato uma função dois para um onde .

Para uma função um-para-um, de modo que

Dureza do problema

Intuitivamente, este é um problema muito difícil de resolver de uma forma "clássica", mesmo que se use a aleatoriedade e aceite uma pequena probabilidade de erro. A intuição por trás da dureza é razoavelmente simples: se você deseja resolver o problema classicamente, precisa encontrar duas entradas diferentes e para quais . Não há necessariamente qualquer estrutura na função que nos ajude a encontrar duas dessas entradas: mais especificamente, podemos descobrir algo sobre (ou o que ela faz) somente quando, para duas entradas diferentes, obtemos a mesma saída. Em qualquer caso, precisaríamos adivinhar entradas diferentes antes de podermos encontrar um par com a mesma saída, de acordo com o problema do aniversário . Visto que, classicamente, para encontrar s com 100% de certeza, seria necessário verificar as entradas, o problema de Simon busca encontrar s usando menos consultas do que este método clássico.

Visão geral do algoritmo de Simon

Ideia

A ideia de alto nível por trás do algoritmo de Simon é "sondar" (ou "amostrar") um circuito quântico (veja a imagem abaixo) "vezes suficientes" para encontrar ( linearmente independentes ) strings de n bits, ou seja

de modo que as seguintes equações sejam satisfeitas

onde está o produto escalar módulo-2 ; isto é,, e , para e para .

Portanto, este sistema linear contém equações lineares em incógnitas (ou seja, os bits de ), e o objetivo é resolvê-lo para obter , e é fixo para uma determinada função . Nem sempre existe uma solução (única).

Circuito quântico de Simon

Circuito quântico representando / implementando o algoritmo de Simon

O circuito quântico (veja a imagem) é a implementação (e visualização) da parte quântica do algoritmo de Simon.

Um estado quântico de todos os zeros é primeiro preparado (isso pode ser feito facilmente). O estado representa onde está o número de qubits. Metade desse estado é então transformada usando uma transformação de Hadamard. O resultado é então alimentado em um oráculo (ou "caixa preta"), que sabe como computar . Onde atua nos dois registros como . Depois disso, parte da saída produzida pelo oráculo é transformada usando outra transformada de Hadamard. Finalmente, uma medição no estado quântico geral resultante é realizada. É durante essa medição que recuperamos as sequências de n bits,, mencionadas na subseção anterior.

O algoritmo de Simon pode ser pensado como um algoritmo iterativo (que faz uso de um circuito quântico) seguido por um (possivelmente) algoritmo clássico para encontrar a solução para um sistema linear de equações.

Algoritmo de Simon

Nesta seção, cada parte do algoritmo de Simon é explicada (em detalhes). Pode ser útil olhar para a imagem do circuito quântico de Simon acima enquanto lê cada uma das subseções a seguir.

Entrada

O algoritmo de Simon começa com a entrada , onde está o estado quântico com zeros.

(O símbolo é o símbolo típico usado para representar o produto tensorial . Para não confundir a notação, o símbolo é às vezes omitido: por exemplo, na frase anterior, é equivalente a . Neste artigo, é (frequentemente) usado para remover ambiguidade ou para evitar confusão.)

Exemplo

Então, por exemplo, se , então a entrada inicial é

.

Primeira transformação Hadamard

Depois disso, a entrada (conforme descrito na subseção anterior) é transformada usando uma transformada de Hadamard . Especificamente, a transformada de Hadamard (o produto tensorial também pode ser aplicado a matrizes) é aplicada aos primeiros qubits, ou seja, ao estado "parcial" , de modo que o estado composto após esta operação seja

onde denota qualquer string de n bits (ou seja, a soma é sobre qualquer string de n bits). O termo pode ser fatorado fora da soma porque não depende de (ou seja, é uma constante em relação a ) e .

Exemplo

Suponha (novamente) , então a entrada é e a transformação de Hadamard é

Se agora nos aplicarmos ao primeiro , ou seja, ao estado

nós obtemos

Para obter o estado quântico composto final, podemos agora tensor o produto com , isto é

Oráculo

Em seguida, chamamos o oráculo ou caixa preta ( na imagem acima) para calcular a função na entrada transformada , para obter o estado

Segunda transformação Hadamard

Em seguida, aplicamos a transformada de Hadamard aos estados dos primeiros qubits do estado , para obter

onde pode ser ou , dependendo de , onde , para . Então, por exemplo, se e , então , que é um número par. Portanto, neste caso, e é sempre um número não negativo.

A intuição por trás dessa transformação inversa de Hadamard que é aplicada aqui pode ser encontrada nas notas de aula do CMUs

Agora vamos reescrever

do seguinte modo

Essa manipulação será conveniente para entender as explicações nas próximas seções. A ordem das somas foi invertida.

Medição

Após ter realizado todas as operações descritas anteriormente, no final do circuito, é realizada uma medição .

Existem agora dois casos possíveis que precisamos considerar separadamente

  • ou
  • , onde .

Primeiro caso

Vamos primeiro analisar o caso (especial) , o que significa que é (por requisito) uma função um-para-um (conforme explicado acima na "descrição do problema").

Vamos ter em mente que o estado quântico antes da medição é

Agora, a probabilidade de que os resultados da medição em cada string é

Isso segue de

porque os dois vetores diferem apenas na ordem de suas entradas, visto que é um-para-um .

O valor do lado direito, isto é

é mais facilmente visto ser .

Assim, quando , o resultado é simplesmente uma string de bits uniformemente distribuída .

Segundo caso

Vamos agora analisar o caso , onde . Nesse caso, é uma função dois para um, ou seja, há duas entradas que mapeiam para a mesma saída de .

A análise realizada no primeiro caso ainda é válida para este segundo caso, ou seja, a probabilidade de medir qualquer string dada ainda pode ser representada como

No entanto, neste segundo caso, ainda precisamos descobrir qual é esse valor . Vamos ver o porquê nas seguintes explicações.

Vamos , a imagem de . Let (ie é alguma saída da função ), então para cada , há um (e apenas um) , tal que ; além disso, também temos , que é equivalente a (consulte a seção "descrição do problema" acima para uma revisão deste conceito).

Portanto, temos

Dado isso , então podemos reescrever o coeficiente da seguinte forma

Dado isso , então podemos escrever a expressão acima como

Portanto, pode ainda ser escrito como

Número ímpar

Agora, se é um número ímpar, então . Nesse caso,

Consequentemente, temos

Dado isso , então nunca teremos este caso, ou seja, nenhuma string é vista (após a medição) neste caso.

(Este é o caso em que temos interferência destrutiva .)

Numero par

Se, em vez disso, for um número par (por exemplo, zero), então . Nesse caso,

Então nós temos

É o caso da interferência construtiva ,

. Então, em resumo, para este segundo caso, temos as seguintes probabilidades

Pós-processamento clássico

Quando executamos o circuito (operações) acima, existem dois casos:

  • no caso (especial) onde (ou seja ), os resultados da medição em cada string com probabilidade
  • no caso (onde ), a probabilidade de obter cada string é dada por

Assim, em ambos os casos, o resultado da medição é alguma string que satisfaz e a distribuição é uniforme em todas as strings que satisfazem essa restrição.

Esta informação é suficiente para determinar ? A resposta é "sim", desde que o processo (acima) seja repetido várias vezes (e uma pequena probabilidade de falha seja aceita). Especificamente, se o processo acima for executado em tempos de execução , obteremos strings , de modo que

Este é um sistema de equações lineares em incógnitas (ou seja, os bits de ), e o objetivo é resolvê-lo para obter . Observe que cada um dos que obtemos após cada medição (para cada "rodada" do processo) é, naturalmente, o resultado de uma medição, por isso é conhecido (ao final de cada "rodada").

Só obtemos uma solução única diferente de zero se tivermos "sorte" e formos linearmente independentes. A probabilidade de que sejam linearmente independentes é pelo menos

Se tivermos independência linear, podemos resolver o sistema para obter uma solução candidata e testá-la . Sim , sabemos disso , e o problema foi resolvido. Se , deve ser isso (porque, se não fosse assim, a única solução diferente de zero para as equações lineares teria sido ). De qualquer forma, uma vez que tenhamos independência linear, podemos resolver o problema.

Complexidade

O algoritmo de Simon requer consultas à caixa preta, enquanto um algoritmo clássico precisaria de pelo menos consultas. Também se sabe que o algoritmo de Simon é ótimo no sentido de que qualquer algoritmo quântico para resolver esse problema requer consultas.

Veja também

Referências