A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Laboratórios

O Algoritmo de Deutsch

Qui

25

Nov

2004


22:00

(11 votos, média 4.64 de 5) 


1. Reaquecendo os motores

Nos dois últimos artigos estivemos ocupados construindo os pilares da física quântica. É mais do que justo que tenhamos, agora, um pouco de contemplação sobre o que edificamos até aqui. Para isso, nada melhor do que uma aplicação evidenciando a importância de cada aspecto discutido. O algoritmo de Deutsch se presta perfeitamente a esse papel, e é a "bola da vez".

Um algoritmo é uma receita usada sistematicamente para solucionar um problema. Portanto, quando falamos em algoritmo de Deutsch, está implícito que existe um "Problema de Deutsch", e é por ele que começaremos essa discussão

2. O Problema de Deutsch

Suponha que você tenha uma caixa preta que opera num certo bit x (onde x = 0 ou x = 1, como usual na computação clássica).

A operação da caixa preta pode muito bem ser entendida como uma função f, que leva o bit x para um valor a ele relacionado, f(x) (também binário, ou seja, f(x) = 0 ou f(x) = 1). O problema é que não conhecemos a lei da função, e portanto não podemos descobrir quanto é f(0) e f(1) senão usando a caixa preta. Em outras palavras, sabemos que uma certa operação é internamente executada, mas não temos acesso a conhecer que operação é essa, a priori. Daí o nome "caixa preta".

O problema de Deutsch está diretamente relacionado a tentar extrair alguma informação sobre "que operação é essa". Por exemplo, se operarmos a caixa preta nos bits 0 e 1, e obtivermos os resultados

f(0) = 1
f(1) = 0

teremos aprendido que a operação escondida é equivalente a uma porta lógica NOT (a porta que inverte o sinal de 0 para 1 e de 1 para 0).

Todavia, Deutsch não exige que descubramos tanto assim sobre a caixa preta. Ele faz uma preciosa concessão ao se declarar satisfeito se descobrirmos simplesmente se a função executada é contínua ou balanceada.

Uma função contínua obedece a igualdade

f(0) = f(1),

enquanto que uma função balanceada se comporta segundo a desigualdade

Image

Note que, para resolver o problema de Deutsch, não precisamos saber quanto é f(0) e f(1). Queremos simplesmente descobrir se eles são iguais ou diferentes, ou seja, se f é contínua ou balanceada.

Num computador clássico, essa concessão não alivia em nada a nossa vida. Para descobrir de que tipo é f, o melhor a fazer é primeiro executar a caixa preta sobre o bit 0, obtendo f(0); depois executar a caixa preta sobre o bit 1, obtendo f(1); só então, de posse dos dois valores, é que se efetua a comparação entre eles para descobrir se a função é contínua ou balanceada. Ou seja, o processo num computador clássico demanda duas etapas para ser realizado.

Numa primeira olhada, isso não parece um problema sério. Porém, agregando a informação de que cada etapa leva 24 hs para ser concluída, e de que você precisa descobrir o resultado em menos de 48 hs para manter o seu emprego, fica claro que você tem um problema e tanto nas mãos: o problema de Deutsch!

Informações adicionais