Introdução à transformação Clássica Discreta de Fourier:
A DFT transforma uma sequência de números complexos em outra sequência de números complexos que é definido por Podemos multiplicar por constantes de normalização adequadas conforme necessário. Além disso, a escolha do sinal de mais ou menos na fórmula depende da convenção escolhida.{ x n } : = x 0 , x 1 , x 2 , . . . , X N - 1 { X k } : = X 0 , X 1 , X 2 , . . . X k = N - 1 ∑ n = 0 x n . e ± 2 π i kN{ xn} : = x0 0, x1, x2,...,xN−1{Xk}:=X0,X1,X2,...
Xk=∑n=0N−1xn.e±2πiknN
Suponha, dado que e .x = ( 1 2 - i - i - 1 + 2 i )N=4x=⎛⎝⎜⎜⎜12−i−i- 1+2i⎞⎠⎟⎟⎟
Precisamos encontrar o vetor da coluna . O método geral já é mostrado na página da Wikipedia . Mas vamos desenvolver uma notação matricial para o mesmo. pode ser facilmente obtido multiplicando previamente pela matriz:X xXXx
M=1N−-√⎛⎝⎜⎜⎜11111WW2W31W2W4W61W3W6W9⎞⎠⎟⎟⎟
onde é . Cada elemento da matriz é basicamente . é simplesmente uma constante de normalização.e - 2 π iW wiJ1e- 2πEuNWeu j1N√
Por fim, acaba sendo: .1X12⎛⎝⎜⎜⎜2- 2 - 2 i- 2 i4 + 4 i⎞⎠⎟⎟⎟
Agora, sente-se um pouco e observe algumas propriedades importantes:
- Todas as colunas da matriz são ortogonais entre si.M
- Todas as colunas de têm magnitude .1M1
- Se você postar multiplicar com um vetor de coluna com muitos zeros (propagação grande), você terminará com um vetor de coluna com apenas alguns zeros (propagação estreita). O inverso também se aplica. (Verifica!)M
Pode-se notar muito simplesmente que a DFT clássica tem uma complexidade de tempo . Isso ocorre porque, para obter todas as linhas de , operações precisam ser executadas. E há linhas em .X N N XO ( N2)XNNX
A transformação Fourier rápida:
Agora, vejamos a transformação rápida de Fourier. A transformação rápida de Fourier usa a simetria da transformação de Fourier para reduzir o tempo de computação. Simplificando, reescrevemos a transformação de Fourier do tamanho como duas transformadas de Fourier do tamanho N / 2 - os termos ímpares e pares. Repetimos isso repetidamente para reduzir exponencialmente o tempo. Para ver como isso funciona em detalhes, nos voltamos para a matriz da transformação de Fourier. Enquanto analisamos isso, pode ser útil ter o DFT 8 na sua frente para dar uma olhada. Observe que os expoentes foram escritos no módulo 8 , pois w 8 = 1 .NN/ 2DFT88W8= 1
Observe como a linha é muito semelhante à linha j + 4 . Observe também como a coluna j
é muito semelhante à coluna j + 4 . Motivados por isso, vamos dividir a transformação de Fourier em suas colunas pares e ímpares.jj + 4jj + 4
No primeiro quadro, temos representado toda a transformada de Fourier da matriz por descrever o th fileira e k ésima coluna: w j k . No próximo quadro, separamos as colunas ímpares e pares e, da mesma forma, o vetor que deve ser transformado. Você deve se convencer de que a primeira igualdade é realmente uma igualdade. No terceiro quadro, adicionamos um pouco de simetria ao notar que
w j + N / 2 = - w j (desde que w n / 2 = - 1 ).jkWj kWj+N/2=−wjwn/2=−1
Observe que o lado ímpar e o lado par contêm o termo . Mas se w é a raiz Nth primitiva da unidade, em seguida, w 2 é a primitiva N / 2 nd raiz da unidade. Portanto, as matrizes cuja entrada j , k é w 2 j k são realmente apenas DFT ( N / 2 ) ! Agora podemos escrever DFT N de uma nova maneira: Agora, suponha que estamos calculando a transformação de Fourier da função f ( x )w2jkww2N/2jkw2jkDFT(N/2)DFTNf(x). Podemos escrever as manipulações acima como uma equação que calcula o termo jth f ( j ) .f^(j)
Nota: QFT na imagem significa apenas DFT neste contexto. Além disso, M se refere ao que estamos chamando de N.
Isso transforma nosso cálculo de em duas aplicações de DFT ( N / 2 ) . Podemos transformar isso em quatro aplicações de DFT ( N / 4 ) e assim por diante. Enquanto N = 2 n para alguns n , podemos decompor nosso cálculo de DFT N em N
cálculos de DFT 1 = 1 . Isso simplifica bastante nosso cálculo.DFTNDFT(N/2)DFT(N/4)N=2nnDFTNNDFT1=1
No caso da transformação Fourier rápida, a complexidade do tempo reduz para (tente provar isso sozinho). Esta é uma grande melhoria em relação ao DFT clássico e praticamente o algoritmo de última geração usado nos sistemas de música modernos como o seu iPod!O(Nlog(N))
A transformada quântica de Fourier com portas quânticas:
A força da FFT é que somos capazes de usar a simetria da transformada discreta de Fourier para nossa vantagem. A aplicação de circuito do QFT usa o mesmo princípio, mas devido ao poder da superposição, o QFT é ainda mais rápido.
A QFT é motivada pela FFT, portanto, seguiremos os mesmos passos, mas como este é um algoritmo quântico, a implementação das etapas será diferente. Ou seja, primeiro tomamos a transformada de Fourier das partes ímpares e pares e, em seguida, multiplicamos os termos ímpares pela fase .wj
Em um algoritmo quântico, o primeiro passo é bastante simples. Os termos ímpares e pares estão juntos em superposição: os termos ímpares são aqueles cujo bit menos significativo é e o par com 0 . Portanto, podemos aplicar QFT ( N / 2 ) aos termos pares e ímpares juntos. Para fazer isso, aplicamos: simplesmente aplicaremos QFT ( N / 2 ) aos bits n - 1 mais significativos e recombinaremos o ímpar e o mesmo apropriadamente, aplicando o Hadamard ao bit menos significativo.10QFT(N/2)QFT(N/2)n−1
Agora, para realizar a multiplicação de fases, precisamos multiplicar cada termo ímpar pela fase w j . Mas lembre-se, um número ímpar em binário termina com 1 enquanto um par termina com 0 . Assim, podemos usar o deslocamento de fase controlado, onde o bit menos significativo é o controle, para multiplicar apenas os termos ímpares pela fase sem fazer nada nos termos pares. Lembre-se de que a mudança de fase controlada é semelhante à porta CNOT, na medida em que apenas aplica uma fase ao destino se o bit de controle for um.jwj10 0
Nota: Na imagem M refere-se ao que estamos chamando de N.
A fase associada a cada mudança de fase controlada deve ser igual a
onde j está associado ao k -ésimo bit por j = 2 k . Portanto, aplique a mudança de fase controlada a cada um dos primeiros n - 1 qubits, com o bit menos significativo que o controle. Com a mudança de fase controlada e a transformação Hadamard, o QFT N foi reduzido para QFT ( N / 2 ) .Wjjkj = 2 kn - 1QFTNQFT( N/ 2)
Nota: Na imagem, M se refere ao que estamos chamando de N.
Exemplo:
Vamos construir . Seguindo o algoritmo, transformaremos o QFT 3 em QFT 2
e em algumas portas quânticas. Continuando assim, transformamos o QFT 2 em
QFT 1 (que é apenas um portão Hadamard) e mais alguns portões. As portas de fase controlada serão representadas por R ϕ . Em seguida, execute outra iteração para se livrar do QFT 2 . Agora você deve conseguir visualizar o circuito para QFT em mais qubits facilmente. Além disso, você pode ver que o número de portas necessárias para a realização QFT N é preciso é exatamente logQFT3QFT3QFT2QFT2QFT1RϕQFT2QFTQFTN
∑i = 1registro(N)i = log(N) ( log(N) + 1 ) / 2 = O ( log2N)
Fontes:
https://en.wikipedia.org/wiki/Discrete_Fourier_transform
https://en.wikipedia.org/wiki/Quantum_Fourier_transform
Mecânica Quântica e Computação Quântica MOOC (UC BerkeleyX) - Notas de aula: Capítulo 5
PS: Esta resposta está em sua versão preliminar. Como o @DaftWillie menciona nos comentários, ele não entra muito em " qualquer insight que possa dar alguma orientação em relação a outros possíveis algoritmos ". Encorajo respostas alternativas à pergunta original. Pessoalmente, preciso ler um pouco e procurar recursos para poder responder a esse aspecto da pergunta.