Algoritmo de Shor
Agora, voltaremos nossa atenção para o problema de fatoração de números inteiros e veremos como ele pode ser resolvido de forma eficiente em um computador quântico usando a estimativa de fase. O algoritmo que obteremos é o algoritmo de Shor para fatoração de números inteiros. Shor não descreveu seu algoritmo especificamente em termos de estimativa de fase, mas essa é uma maneira natural e intuitiva de explicar como ele funciona.
Começaremos discutindo um problema intermediário conhecido como problema de determinação de ordem e veremos como a estimativa de fase fornece uma solução para esse problema. Em seguida, veremos como uma solução eficiente para o problema de determinação de ordem nos dá uma solução eficiente para o problema de fatoração de números inteiros. (Quando uma solução para um problema fornece uma solução para outro problema como esse, dizemos que o segundo problema se reduz ao primeiro - portanto, nesse caso, estamos reduzindo a fatoração de números inteiros à determinação de ordens) Essa segunda parte do algoritmo de Shor não faz uso da computação quântica; é totalmente clássica. A computação quântica é necessária apenas para solucionar a determinação de ordens.
O problema da localização de pedidos
Algumas noções básicas de teoria dos números
Para explicar o problema de determinação de ordem e como ele pode ser resolvido usando a estimativa de fase, será útil começar com alguns conceitos básicos da teoria dos números e introduzir algumas notações úteis ao longo do caminho.
Para começar, para qualquer número inteiro positivo , defina o conjunto da seguinte forma.
Por exemplo, e assim por diante.
Esses são conjuntos de números, mas podemos pensar neles como algo mais do que conjuntos. Em particular, podemos pensar em operações aritméticas em , como adição e multiplicação - e se concordarmos em sempre considerar nossas respostas no módulo (ou seja, dividir por e tomar o restante como resultado), sempre estaremos dentro desse conjunto quando realizarmos essas operações. As duas operações específicas de adição e multiplicação, ambas tomadas no módulo , transformam o em um anel, que é um tipo de objeto fundamentalmente importante na álgebra.
Por exemplo, e são elementos de e, se os multiplicarmos, obteremos , que deixa um resto de quando dividido por Às vezes, expressamos isso da seguinte forma.
Mas também podemos simplesmente escrever , desde que fique claro que estamos trabalhando em , apenas para manter nossa notação o mais simples possível.
Como exemplo, aqui estão as tabelas de adição e multiplicação para
Entre os elementos de , os elementos que satisfazem são especiais. Frequentemente, o conjunto que contém esses elementos é denotado por uma estrela, como a seguir.
Se concentrarmos nossa atenção na operação de multiplicação, o conjunto forma um grupo - especificamente um grupo abeliano - que é outro tipo importante de objeto na álgebra. É um fato básico sobre esses conjuntos (e grupos finitos em geral) que, se escolhermos qualquer elemento e multiplicarmos repetidamente por ele mesmo, sempre obteremos o número
Para um primeiro exemplo, vamos pegar Temos que porque e se multiplicarmos por ele mesmo, obteremos como confirma a tabela acima.
Como segundo exemplo, vejamos Se analisarmos os números de a , os que têm GCD igual a com são os seguintes.
Para cada um desses elementos, é possível elevar esse número a uma potência inteira positiva para obter Aqui estão as menores potências para as quais isso funciona:
Naturalmente, estamos trabalhando no site para todas essas equações, que não nos preocupamos em escrever - consideramos implícitas para evitar confusão. Continuaremos a fazer isso durante o restante da lição.
Descrição do problema e conexão com a estimativa de fase
Agora, podemos definir o problema de determinação de ordem.
Entrada: inteiros positivos e que satisfazem \ Saída: o menor inteiro positivo tal que
Como alternativa, em termos da notação que acabamos de introduzir acima, recebemos e estamos procurando o menor número inteiro positivo de modo que Esse número é chamado de ordem de modulo
Para conectar o problema de determinação de ordem à estimativa de fase, vamos pensar na operação definida em um sistema cujos estados clássicos correspondem a onde multiplicamos por um elemento fixo
Para deixar claro, estamos fazendo a multiplicação em , portanto, está implícito que estamos tomando o módulo do produto dentro do ket no lado direito da equação.
Por exemplo, se tomarmos e , a ação de na base padrão é a seguinte.
Essa é uma operação unitária, desde que embaralhe os elementos da base padrão para que, como matriz, seja uma matriz de permutação. É evidente em sua definição que essa operação é determinística, e uma maneira simples de ver que ela é invertível é pensar na ordem de modulo e reconhecer que o inverso de é
Há outra maneira de pensar sobre o inverso que não requer nenhum conhecimento de (que, afinal de contas, é o que estamos tentando calcular). Para cada elemento , há sempre um único elemento que satisfaz Denotamos esse elemento por e ele pode ser computado com eficiência; uma extensão do algoritmo GCD de Euclides faz isso com custo quadrático em E assim
Portanto, a operação é determinística e invertível. Isso implica que ela é descrita por uma matriz de permutação e, portanto, é unitária.
Agora vamos pensar nos vetores e valores próprios da operação , supondo que Como acabamos de argumentar, essa suposição nos diz que é unitário.
Há valores próprios de , possivelmente incluindo o mesmo valor próprio repetido várias vezes e, em geral, há alguma liberdade na seleção dos vetores próprios correspondentes, mas não precisaremos nos preocupar com todas as possibilidades. Vamos começar de forma simples e identificar apenas um vetor próprio de
O número é a ordem do módulo aqui e no restante da lição. O valor próprio associado a esse vetor próprio é porque ele não é alterado quando multiplicado por
Isso acontece porque , portanto, cada estado da base padrão é deslocado para para e é deslocado de volta para Em termos informais, é como se estivéssemos mexendo lentamente o , mas ele já está completamente mexido, então nada muda.
Aqui está outro exemplo de um vetor próprio de Esse é mais interessante no contexto da descoberta de ordem e da estimativa de fase.
Como alternativa, podemos escrever esse vetor usando um somatório da seguinte forma.
Aqui estamos vendo o número complexo aparecer naturalmente, devido à forma como a multiplicação por funciona no módulo Desta vez, o valor próprio correspondente é Para ver isso, podemos primeiro calcular da seguinte forma.
Então, como e , vemos que
assim
Usando o mesmo raciocínio, podemos identificar pares adicionais de vetor próprio/valor próprio para Para qualquer escolha de , temos que
é um vetor próprio de cujo valor próprio correspondente é
Há outros vetores próprios de , mas não precisamos nos preocupar com eles - vamos nos concentrar apenas nos vetores próprios que acabamos de identificar.
Localização de ordem por meio de estimativa de fase
Para resolver o problema de determinação de ordem para uma determinada escolha de , podemos aplicar o procedimento de estimativa de fase à operação
Para isso, precisamos implementar não apenas o de forma eficiente com um circuito quântico, mas também o e assim por diante, indo até onde for necessário para obter uma estimativa suficientemente precisa do procedimento de estimativa de fase. Aqui, explicaremos como isso pode ser feito e, posteriormente, descobriremos exatamente quanta precisão é necessária.
Vamos começar com a operação por si só. Naturalmente, como estamos trabalhando com o modelo de circuito quântico, usaremos a notação binária para codificar os números entre e O maior número que precisamos codificar é , portanto, o número de bits necessários é
Por exemplo, se tivermos Esta é a aparência da codificação dos elementos de como cadeias binárias de comprimento .
E agora, aqui está uma definição precisa de como é definido como uma operação de -qubit.
A questão é que, embora só nos importemos com o funcionamento do para o , temos que especificar como ele funciona para os estados restantes da base padrão do - e precisamos fazer isso de uma forma que ainda nos dê uma operação unitária. A definição de de modo que ele não faça nada aos estados de base padrão restantes permite isso.
Usando os algoritmos para multiplicação e divisão de números inteiros discutidos na lição anterior, juntamente com a metodologia para implementações reversíveis e livres de lixo, podemos construir um circuito quântico que execute para qualquer escolha de a custo Aqui está uma maneira de fazer isso.
- Construa um circuito para realizar a operação
em que
usando o método descrito na lição anterior. Isso nos dá um circuito de tamanho
-
Troque os dois sistemas de -qubit usando swap gates para trocar os qubits individualmente.
-
De forma semelhante à primeira etapa, construa um circuito para a operação
em que é o inverso de em
Ao inicializar os qubits inferiores e compor as três etapas, obtemos essa transformação:
O método requer qubits de espaço de trabalho, mas eles retornam ao seu estado inicializado no final, o que nos permite usar esses circuitos para estimativa de fase. O custo total do circuito que obtemos é
Para executar e assim por diante, podemos usar exatamente o mesmo método, exceto pelo fato de substituirmos por e assim por diante, como elementos de Ou seja, para qualquer potência que escolhermos, podemos criar um circuito para não iterando vezes o circuito para , mas computando e, em seguida, usando o circuito para
O cálculo das potências é o problema de exponenciação modular mencionado na lição anterior. Esse cálculo pode ser feito de forma clássica, usando o algoritmo para exponenciação modular mencionado na lição anterior (geralmente chamado de algoritmo de potência na teoria dos números computacionais). De fato, exigimos apenas power-of-2 potências de em particular e podemos obter essas potências elevando vezes ao quadrado de forma iterativa. Cada quadratura pode ser realizada por um circuito booleano de tamanho
Em essência, o que estamos fazendo aqui é transferir o problema de iterar até vezes para uma computação clássica eficiente. E é uma boa sorte que isso seja possível! Para uma escolha arbitrária de um circuito quântico no problema de estimativa de fase, é provável que isso não seja possível e, nesse caso, o custo resultante da estimativa de fase cresce exponencialmente no número de qubits de controle
Solução dada um vetor próprio conveniente
Para entender como podemos resolver o problema de determinação de ordem usando a estimativa de fase, vamos começar supondo que executamos o procedimento de estimativa de fase na operação usando o vetor próprio Obter esse vetor próprio não é fácil, como se vê, portanto, esse não será o fim da história, mas é útil começar por aqui.
O valor próprio de correspondente ao vetor próprio é
Ou seja, para Portanto, se executarmos o procedimento de estimativa de fase em usando o vetor próprio , obteremos uma aproximação para Ao calcular o recíproco, poderemos aprender - desde que nossa aproximação seja boa o suficiente.
Em mais detalhes, quando executamos o procedimento de estimativa de fase usando qubits de controle, o que obtemos é um número Em seguida, tomamos como uma estimativa para , que é no caso em questão. Para descobrir o que é a partir dessa aproximação, o mais natural é calcular o recíproco de nossa aproximação e arredondar para o número inteiro mais próximo.
Por exemplo, vamos supor que e nós realizamos a estimativa de fase em com o vetor próprio usando os bits de controle de . A melhor aproximação de bits para é e temos uma boa chance (cerca de nesse caso) de obter o resultado a partir da estimativa de fase. Temos
e arredondando para o número inteiro mais próximo, obtém-se , que é a resposta correta.
Por outro lado, se não usarmos precisão suficiente, talvez não obtenhamos a resposta correta. Por exemplo, se usarmos qubits de controle na estimativa de fase, poderemos obter a melhor aproximação de -bit para , que é Tomando a recíproca, obtém-se
e o arredondamento para o número inteiro mais próximo dá uma resposta incorreta de
Então, qual é a precisão necessária para obter a resposta correta? Sabemos que a ordem é um número inteiro e, intuitivamente, o que precisamos é de precisão suficiente para distinguir das possibilidades próximas, incluindo e O número mais próximo de com o qual precisamos nos preocupar é e a distância entre esses dois números é
Portanto, se quisermos ter certeza de que não confundiremos com , basta usar precisão suficiente para garantir que a melhor aproximação de para esteja mais próxima de do que de Se usarmos precisão suficiente para que
de modo que o erro seja menor que a metade da distância entre e , então estará mais próximo de do que de qualquer outra possibilidade, incluindo e
Podemos verificar isso da seguinte forma. Suponha que
para satisfazendo
Quando tomamos a recíproca, obtemos
Ao maximizar no numerador e minimizar no denominador, podemos limitar a distância que estamos de da seguinte forma.
Estamos a menos de de , portanto, como esperado, receberemos quando chegarmos.
Infelizmente, como ainda não sabemos o que é , não podemos usá-lo para nos dizer de quanta precisão precisamos. O que podemos fazer é usar o fato de que deve ser menor que para garantir que usemos precisão suficiente. Em particular, se usarmos precisão suficiente para garantir que a melhor aproximação para satisfaça
então teremos precisão suficiente para determinar corretamente quando tomarmos a recíproca. O site garante que temos uma grande chance de obter uma estimativa com essa precisão usando o método descrito anteriormente. (O site é bom o suficiente se estivermos confortáveis com um limite inferior de 40% na probabilidade de sucesso)
Solução geral
Como acabamos de ver, se tivermos o vetor próprio de , poderemos aprender por meio da estimativa de fase, desde que usemos qubits de controle suficientes para fazer isso com precisão suficiente. Infelizmente, não é fácil colocar as mãos no vetor próprio , portanto, precisamos descobrir como proceder.
Vamos supor momentaneamente que procedamos exatamente como acima, exceto com o vetor próprio no lugar de para qualquer opção de que escolhermos pensar. O resultado que obtivermos do procedimento de estimativa de fase será uma aproximação
Partindo do pressuposto de que não conhecemos ou , isso pode ou não nos permitir identificar Por exemplo, se for uma aproximação de para , o que, infelizmente, não nos diz nada. Esse, no entanto, é um caso incomum; para outros valores de , pelo menos poderemos aprender algo sobre
Podemos usar um algoritmo conhecido como algoritmo de fração contínua para transformar nossa aproximação em frações próximas - incluindo se a aproximação for boa o suficiente. Não explicaremos o algoritmo de fração contínua aqui. Em vez disso, aqui está uma declaração de um fato conhecido sobre esse algoritmo.
Dado um número inteiro e um número real , há no máximo uma opção de números inteiros com e satisfazendo Dado e , o algoritmo de fração contínua encontra e ou informa que eles não existem. Esse algoritmo pode ser implementado como um circuito booleano de tamanho
Se tivermos uma aproximação muito próxima de para e executarmos o algoritmo de fração contínua para e , obteremos e conforme descrito no fato. Uma análise do fato nos permite concluir que
Observe, em particular, que não aprendemos necessariamente e ; aprendemos apenas em termos mais baixos.
Por exemplo, e como já percebemos, não aprenderemos nada com Mas esse é o único valor de em que isso acontece. Quando é diferente de zero, ele pode ter fatores comuns com , mas o número que obtemos do algoritmo de fração contínua deve, no mínimo, dividir
Está longe de ser óbvio, mas é verdade que se tivermos a capacidade de aprender e para para escolhidos uniformemente de forma aleatória, é muito provável que consigamos recuperar após apenas algumas amostras. Em particular, se nossa estimativa para for o menor múltiplo comum de todos os valores do denominador que observamos, estaremos certos com alta probabilidade. Intuitivamente falando, alguns valores de não são bons porque compartilham fatores comuns com e esses fatores comuns são ocultados de nós quando aprendemos e Porém, as escolhas aleatórias de provavelmente não ocultarão os fatores de por muito tempo, e a probabilidade de não adivinharmos corretamente, tomando o menor múltiplo comum dos denominadores que observamos, cai exponencialmente com o número de amostras.
Resta abordar a questão de como obter um vetor próprio de para executar o procedimento de estimativa de fase. Acontece que, na verdade, não precisamos criá-los!
Em vez disso, executaremos o procedimento de estimativa de fase no estado , ou seja, a codificação binária de bits do número no lugar de um vetor próprio de Até agora, falamos apenas sobre a execução do procedimento de estimativa de fase em um autovetor específico, mas nada nos impede de executar o procedimento em um estado de entrada que não seja um autovetor de e é isso que estamos fazendo aqui com o estado (Esse não é um vetor próprio de , a menos que seja uma escolha que não nos interessa)
A justificativa para escolher o estado em vez de um vetor próprio de é que a equação a seguir é verdadeira.
Uma maneira de verificar essa equação é comparar os produtos internos dos dois lados com cada estado da base padrão, usando as fórmulas mencionadas anteriormente na lição para ajudar a avaliar os resultados do lado direito. Como consequência, obteremos exatamente os mesmos resultados de medição como se tivéssemos escolhido uniformemente de forma aleatória e usado como um vetor próprio.
Mais detalhadamente, vamos imaginar que executamos o procedimento de estimativa de fase com o estado no lugar de um dos vetores próprios Depois que a transformada quântica inversa de Fourier é executada, ficamos com o estado
em que
O vetor representa o estado dos qubits superiores depois que o inverso da transformação quântica de Fourier foi realizado neles.
Assim, em virtude do fato de que é um conjunto ortonormal, descobrimos que uma medição dos principais qubits superior produz uma aproximação do valor em que é escolhido uniformemente de forma aleatória. Como já discutimos, isso nos permite aprender com um alto grau de confiança após várias execuções independentes, que era o nosso objetivo.
Custo total
O custo para implementar cada operação unitária controlada é Há operações unitárias controladas e temos , portanto, o custo total das operações unitárias controladas é Além disso, temos Hadamard gates (que contribuem com para o custo), e a transformação quântica inversa de Fourier contribui com para o custo. Assim, o custo das operações unitárias controladas domina o custo de todo o procedimento, que é, portanto
Além do próprio circuito quântico, há alguns cálculos clássicos que precisam ser realizados ao longo do caminho. Isso inclui o cálculo das potências em para , que são necessárias para criar as portas unitárias controladas, bem como o algoritmo de fração contínua que converte aproximações de em frações. Esses cálculos podem ser realizados por circuitos booleanos com um custo total de
Como é típico, todos esses limites podem ser aprimorados usando algoritmos assintoticamente rápidos; esses limites pressupõem que estamos usando algoritmos padrão para operações aritméticas básicas.
Factoring por encomenda
A última coisa que precisamos discutir é como a solução do problema de determinação de ordem nos ajuda a fatorar. Essa parte é totalmente clássica - não tem nada a ver especificamente com a computação quântica.
Esta é a ideia básica. Queremos fatorar o número e podemos fazer isso de forma recursiva. Especificamente, podemos nos concentrar na tarefa de dividir , o que significa encontrar dois inteiros quaisquer para os quais Isso não é possível se for um número primo, mas podemos testar com eficiência para ver se é primo usando um algoritmo de teste de primalidade primeiro e, se não for primo, tentaremos dividi-lo. Depois de dividirmos , podemos simplesmente recursar em e até que todos os nossos fatores sejam primos e obtenhamos a fatoração de primos de
A divisão de números inteiros pares é fácil: basta exibir e
Também é fácil dividir potências perfeitas, ou seja, números do formato para inteiros apenas por aproximando as raízes e assim por diante, e verificando os inteiros próximos como suspeitos para Não precisamos ir além de passos nessa sequência, pois nesse ponto a raiz cai abaixo de e não revelará candidatos adicionais.
É bom que possamos fazer essas duas coisas porque a determinação da ordem não nos ajudará a fatorar números pares ou potências primais, onde o número é primo. No entanto, se for ímpar e não for uma potência prima, a determinação da ordem nos permite dividir
-
Escolha aleatoriamente
-
Calcular
-
Se for , então, envie e e pare. Caso contrário, passe para a próxima etapa sabendo que
-
Seja a ordem de modulo (É aqui que precisamos encontrar a ordem)
-
Se estiver empatado:
5.1 Calcular modulo \ 5.2 Computar \ 5.3 Se for , então, produza e e pare.
-
Se esse ponto for atingido, o algoritmo não conseguiu encontrar um fator de
Uma execução desse algoritmo pode não conseguir encontrar um fator de Especificamente, isso acontece em duas situações:
- A ordem de modulo é ímpar.
- A ordem de modulo é par e
Usando a teoria básica dos números, é possível provar que, para uma escolha aleatória de com probabilidade mínima de , nenhum desses eventos acontece. De fato, a probabilidade de qualquer um dos eventos acontecer é de no máximo para sendo o número de fatores primos distintos de razão pela qual a suposição de que não é uma potência prima é necessária. (A suposição de que é ímpar também é necessária para que esse fato seja verdadeiro)
Isso significa que cada execução tem pelo menos 50% de chance de ser dividida Portanto, se executarmos o algoritmo vezes, escolhendo aleatoriamente a cada vez, conseguiremos dividir com probabilidade de pelo menos
A ideia básica por trás do algoritmo é a seguinte. Se tivermos uma opção de para a qual a ordem de modulo seja par, então é um número inteiro e podemos considerar os números
Usando a fórmula , concluímos que
Agora, sabemos que pela definição da ordem - que é outra maneira de dizer que divide igualmente Isso significa que divide igualmente o produto
Para que isso seja verdade, todos os fatores primos de também devem ser fatores primos de ou (ou ambos) - e, para uma seleção aleatória de , é improvável que todos os fatores primos de dividam um dos termos e nenhum divida o outro. Caso contrário, desde que alguns dos fatores primos de dividam o primeiro termo e alguns dividam o segundo termo, poderemos encontrar um fator não trivial de calculando o GCD com o primeiro termo.