É sabido que, utilizando o paralelismo quântico, podemos calcular uma função para muitos valores diferentes de x simultaneamente. No entanto, são necessárias algumas manipulações inteligentes para extrair as informações de cada valor, ou seja, com o algoritmo de Deutsch.
Considere o caso inverso: podemos usar o paralelismo quântico para calcular muitas funções (digamos ) simultaneamente para um único valor x 0 ?
Respostas:
A resposta exata depende do tipo exato de superposição que você deseja. As respostas das pirâmides e Niel dão a você algo como
Aqui eu segui Niel rotulando as diferentes funções , f 2f1 1 f2 , etc, com como o número total de funções que você deseja sobrepor. Também usei F t para indicar uma descrição da função f t como um programa armazenado. O Um é apenas o que precisa o número de estar lá para o estado a ser normalizada.n Ft ft UMA
Observe que isso não é simplesmente uma superposição de . Está emaranhado com o programa armazenado. Se você fosse rastrear o programa armazenado, teria apenas uma mistura de f t ( x ) . Isso significa que o programa armazenado pode constituir 'lixo', o que evita efeitos de interferência com os quais você pode contar. Ou talvez não. Depende de como essa superposição será usada no seu cálculo.ft( X ) ft( X )
Se você quer se livrar do lixo, as coisas ficam mais complicadas. Por exemplo, suponha que você queira um unitário que tenha o efeitovocê
para todas as entradas possíveis (que eu assumo que sejam cadeias de bits escritas na base computacional). Observe que eu também incluí alguns qubits em branco no lado da entrada, caso as funções tenham saídas mais longas que as entradas.x
A partir disso, podemos encontrar rapidamente uma condição que as funções devem satisfazer: como os estados de entrada formam um conjunto ortogonal, o mesmo ocorre com as saídas. Isso colocará uma restrição significativa nos tipos de funções que podem ser combinadas dessa maneira.
fonte
As funções que você deseja avaliar em diferentes ramificações computacionais devem, para serem computáveis, de algum modo, ser especificáveis de alguma maneira (por exemplo, uma sequência de portas lógicas clássicas). E o conjunto { f 1 , f 2 , … } das funções que você deseja calcular deve ser computável: para um dado t , você deve poder calcular uma especificação de como f t deve ser calculado em seu argumento. De fato: você deve ter um meio de descrever as funções f tf, g, … { f1 1, f2, … } t ft ft como programas armazenados. (Tudo isso é necessário, mesmo antes de considerarmos a computação quântica, para que a questão de "calcular uma / todas as funções em uma entrada x 0 " seja significativa).f1 1, f2, … x0 0
Depois que você tiver uma maneira de especificar funções como programas armazenados, estará pronto: basicamente, um programa é outro tipo de entrada, que você pode preparar em superposição e, por exemplo, avaliar uma entrada fixa ou uma superposição de entradas, computando as funções de suas especificações em cada filial.
Ganhar uma vantagem competitiva ao fazê-lo é uma questão diferente e precisará envolver alguma estrutura específica nas funçõesft que você pode aproveitar, mas simplesmente para "avaliar em superposição" é feito facilmente se você tem informação suficiente para a questão de ser sensata.
fonte
Sim (dependendo do que significa "calcular muitas funções de uma vez")
Descrevendo o circuito que dá a função como U f eo circuito dando g de U g , existem algumas maneiras de ir sobre como fazer isso:f vocêf g vocêg
IF RESULT = 0 U_f ELSE U_g
fonte
fonte