Algoritmo de Shor
Estimativa de uso: Três segundos em um processador Eagle r3 (NOTA: Esta é apenas uma estimativa. Seu tempo de execução pode variar.)
O algoritmo de Shor, desenvolvido por Peter Shor em 1994, é um algoritmo quântico revolucionário para fatoração de inteiros em tempo polinomial. Sua importância reside em sua capacidade de fatorar grandes inteiros exponencialmente mais rápido do que qualquer algoritmo clássico conhecido, ameaçando a segurança de sistemas criptográficos amplamente utilizados como o RSA, que dependem da dificuldade de fatorar grandes números. Ao resolver eficientemente este problema em um computador quântico suficientemente poderoso, o algoritmo de Shor poderia revolucionar campos como criptografia, segurança cibernética e matemática computacional, destacando o poder transformador da computação quântica.
Este tutorial foca em demonstrar o algoritmo de Shor fatorando o número 15 em um computador quântico.
Primeiro, definimos o problema de encontrar a ordem e construímos os circuitos correspondentes a partir do protocolo de estimativa de fase quântica. Em seguida, executamos os circuitos de busca de ordem em hardware real usando os circuitos de menor profundidade que podemos transpilar. A última seção completa o algoritmo de Shor conectando o problema de encontrar a ordem à fatoração de inteiros.
Encerramos o tutorial com uma discussão sobre outras demonstrações do algoritmo de Shor em hardware real, focando tanto em implementações genéricas quanto naquelas personalizadas para fatorar inteiros específicos como 15 e 21. Nota: Este tutorial foca mais na implementação e demonstração dos circuitos relacionados ao algoritmo de Shor. Para um recurso educacional aprofundado sobre o material, consulte o curso Fundamentos de algoritmos quânticos do Dr. John Watrous e os artigos na seção Referências.
Requisitos
Antes de iniciar este tutorial, certifique-se de ter o seguinte instalado:
- Qiskit SDK v2.0 ou posterior, com suporte para visualização
- Qiskit Runtime v0.40 ou posterior (
pip install qiskit-ibm-runtime)
Configuração
# Added by doQumentation — required packages for this notebook
!pip install -q numpy pandas qiskit qiskit-ibm-runtime
import numpy as np
import pandas as pd
from fractions import Fraction
from math import floor, gcd, log
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.circuit.library import QFT, UnitaryGate
from qiskit.transpiler import CouplingMap, generate_preset_pass_manager
from qiskit.visualization import plot_histogram
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
Etapa 1: Mapear entradas clássicas para um problema quântico
Contexto
O algoritmo de Shor para fatoração de inteiros utiliza um problema intermediário conhecido como problema de encontrar a ordem. Nesta seção, demonstramos como resolver o problema de encontrar a ordem usando estimativa de fase quântica.
Problema de estimativa de fase
No problema de estimativa de fase, recebemos um estado quântico de qubits, juntamente com um circuito quântico unitário que atua sobre qubits. É prometido que é um autovetor da matriz unitária que descreve a ação do circuito, e nosso objetivo é calcular ou aproximar o autovalor ao qual corresponde. Em outras palavras, o circuito deve produzir uma aproximação do número satisfazendo
O objetivo do circuito de estimativa de fase é aproximar em bits. Matematicamente falando, gostaríamos de encontrar tal que , onde . A imagem a seguir mostra o circuito quântico que estima em bits fazendo uma medição em qubits.
No circuito acima, os qubits superiores são iniciados no estado , e os qubits inferiores são iniciados em , que é prometido ser um autovetor de . O primeiro ingrediente no circuito de estimativa de fase são as operações unitárias controladas que são responsáveis por realizar um phase kickback para seu qubit de controle correspondente. Essas unitárias controladas são exponenciadas de acordo com a posição do qubit de controle, variando do bit menos significativo ao bit mais significativo. Como é um autovetor de , o estado dos qubits inferiores não é afetado por esta operação, mas a informação de fase do autovalor se propaga para os qubits superiores.
Acontece que após a operação de phase kickback via unitárias controladas, todos os estados possíveis dos qubits superiores são ortonormais entre si para cada autovetor da unitária . Portanto, esses estados são perfeitamente distinguíveis, e podemos rotacionar a base que eles formam de volta para a base computacional para fazer uma medição. Uma análise matemática mostra que esta matriz de rotação corresponde à transformada quântica de Fourier (QFT) inversa no espaço de Hilbert de dimensão . A intuição por trás disso é que a estrutura periódica dos operadores de exponenciação modular é codificada no estado quântico, e a QFT converte esta periodicidade em picos mensuráveis no domínio da frequência.
Para uma compreensão mais profunda de por que o circuito QFT é empregado no algoritmo de Shor, referimos o leitor ao curso Fundamentos de algoritmos quânticos. Agora estamos prontos para usar o circuito de estimativa de fase para encontrar a ordem.
Problema de encontrar a ordem
Para definir o problema de encontrar a ordem, começamos com alguns conceitos de teoria dos números. Primeiro, para qualquer inteiro positivo , definimos o conjunto como Todas as operações aritméticas em são realizadas módulo . Em particular, todos os elementos que são coprimos com são especiais e constituem