Escolar Documentos
Profissional Documentos
Cultura Documentos
1, 1306 (2013)
www.sbfisica.org.br
Marcelo Archanjo Jose, Jose Roberto Castilho Piqueira1 , Roseli de Deus Lopes
Escola Politecnica, Universidade de S
ao Paulo, S
ao Paulo, SP, Brasil
Recebido em 19/5/2012; Aceito em 23/6/2012; Publicado em 18/2/2013
Este trabalho apresenta uma vis
ao geral sobre a programaca
o qu
antica, de maneira acessvel a alunos de
graduaca
o em Fsica. Inicia-se com um breve hist
orico sobre a computaca
o qu
antica. S
ao tratados os modelos
que servem de base para a programac
ao qu
antica, seguidos de descritivo resumido sobre as principais linguagens
de programaca
o qu
antica. Completando a apresentaca
o, o funcionamento de um programa qu
antico e discutido,
contextualizando-se a import
ancia da programaca
o, no
ambito da computaca
o qu
antica.
Palavras-chave: programaca
o qu
antica, computaca
o qu
antica, teoria qu
antica da informaca
o.
This work presents a general view about quantum programming, in an accessible way to undergraduate
Physics students. It starts with a historical brieng about quantum computing. The basic models for quantum
programming are treated, followed by the descriptions of the main quantum programming languages. Completing
the presentation, it is discussed how a quantum program works, contextualizing how programming is important,
concerning to quantum computation.
Keywords: quantum programming, quantum computation, quantum information theory.
1. Introduc
ao
A programacao de computadores e a base para explorar
a capacidade disponibilizada pelo hardware. Quando se
fala de computadores quanticos, logo se imagina como
explorar suas capacidades, mas para isso e necessario
programa-los.
No computador classico, os programadores nao precisam compreender os fenomenos fsicos que permeiam
o funcionamento do mesmo, mas precisam compreender
a logica de utilizac
ao dos seus recursos, como memoria,
operacoes e comunicac
ao.
Diferentemente do computador classico, no qual um
bit pode assumir somente um de dois valores (0 e 1), no
computador quantico, o qubit possui os dois valores (0
e 1) superpostos. Se o qubit for medido, seu valor ira
colapsar para um dos dois valores. Sendo assim, nao se
pode medir o valor do qubit durante as operacoes, mas
somente ao nal dos processos.
Com o computador quantico, um programador
tambem nao precisa compreender os fenomenos da fsica
quantica para poder utilizar todo o seu poder, mas
precisa compreender a logica desse novo paradigma da
computacao. Esta nova logica possui tres etapas fundamentais:
- preparacao dos estados iniciais;
- realizacao das transformac
oes unitarias;
1 E-mail:
piqueira@lac.usp.br.
1306-2
2.
Hist
orico
3.
Conceitos b
asicos
Jos
e et al.
Segundo Omer
[18] o registrador quantico que contem
mais de um qubit nao pode ser descrito como simples-
Introduc
ao `
a programac
ao qu
antica
|a|2 + |b|2 = 1;
|c|2 + |d|2 = 1.
1306-3
pamentos de dispositivos mais simples chamados portas quanticas [12]. Uma porta quantica que possui
uma importancia especial e a porta NOT-controlada
(ou simplesmente CNOT), Fig. 1, pois ela permite
a criacao de estados quanticos entrelacados, uteis nos
programas quanticos [4, 24].
Figura 1 - Porta qu
antica CNOT, o circulo preto indica o qubit
de controle e crculo vazado, o qubit alvo.
Enquanto nao ha computadores quanticos de uso geral, para avaliar seus potenciais pode-se conhecer e estudar a programacao quantica e constatar a eciencia
que determinados algoritmos teriam ao serem implementados em computadores quanticos [9, 25, 26].
Da mesma forma que antes da computacao classica
ser estabelecida, foi possvel simular seu funcionamento
pelo modelo matematico da maquina de Turing, de maneira analoga, uma maquina de Turing quantica [8,
25] pode ser concebida. Isto e, uma simulacao do que
seria o comportamento de um computador quantico.
Nesse sentido, os computadores classicos podem simular o computador quantico e, dessa forma, estabelecer o ambiente basico para o desenvolvimento de linguagens de programacao e algoritmos proprios para o computador quantico, fomentando assim a programacao
quantica.
4.
Programac
ao qu
antica em computadores cl
assicos
1306-4
Jos
e et al.
Modelo de Circuito Quantico feito com portas quanticas da mesma maneira que um circuito logico classico. A diferenca e que as portas
quanticas, ao contr
ario das classicas, sao sempre
reversveis.
Modelo da Maquina de Turing Quantica [8] as
medidas nunca sao realizadas e a operacao inteira
da maquina e assumida como unitaria.
Modelo QRAM (Quantum Random Access Machine) [27] - diferentemente do modelo de circuito quantico, o modelo QRAM permite transformacoes unitarias e medidas serem livremente
intercaladas. No modelo QRAM, um dispositivo quantico e controlado por um computador classico. Esse dispositivo possui um enorme
(mas nito) n
umero de qubits individuais e
enderec
aveis, muito parecido com a memoria
RAM (Random Access Memory). O computador classico envia uma sequencia de instrucoes,
`as quais pode-se aplicar uma transformacao
unitaria U com os qubits i e j ou medir o qubit i. O dispositivo quantico executa essas instrucoes e disponibiliza os resultados. Esse modelo
foi construdo com a premissa de que o computador quantico real sera, de fato, um computador classico com acesso a componentes da computacao quantica [5]. Diversas linguagens de programac
ao quanticas usam o modelo QRAM.
As linguagens de programac
ao quantica sao classicadas pela literatura [2, 3, 5] como: linguagens imperativas, linguagens funcionais e outros paradigmas.
4.1.
Linguagens imperativas
Figura 2 - Arquitetura qu
antica hbrida, figura extrada da
Ref. [17], traduc
ao dos autores.
Linguagens funcionais
Introduc
ao `
a programac
ao qu
antica
1306-5
Mauerer [51] em 2005 cQPL Linguagen baseada na QPL, mas com extensoes envolvendo comunicacao entre processos distribudos;
Jorrand e Lalire [52] em 2005 QPAlg (Quantum
Process Algebra) Descreve interacoes entre processos quanticos e classicos;
Gay e Nagarajan [53] em 2005 CQP (Communicating Quantum Processes) Linguagem para
modelagem da comunicacao de sistemas classicos
e quanticos com enfase na criptograa quantica;
Udrescu, Prodan e Vladutiu [55] em 2004 Criaram uma linguagem descritiva de hardware para
o desenvolvimento de circuitos quanticos (similar
ao VLSI).
5.
Exemplo de programa qu
antico para
execu
c
ao em computadores cl
assicos
1306-6
Jos
e et al.
Ano
incio
1998
2000
2003
2004
2007
1996
2001
2001
2003
2003
2004
2004
2005
2005
2005
2005
2011
Autor / Refer
encias
Linguagens imperativas
Omer
[17, 18, 28]
Sanders e Zuliani [29] Zuliani [30-32]
Betteli, Calarco e Serafini [33]
Tafliovich [34]
Mlnarik [35]
Linguagens funcionais
Maymin [36]
Mu eBird [45]
Skibinski [49]
Sabry [46]
Karczmarczuk [48]
Selinger [3, 8]
Nome da
linguagem
QCL
qGCL
Q1
LanQ
QFC e
QPL
QML
-
/* Define Oracle */
const coin1=(random()=0.5); // Define two random boolean
const coin2=(random()=0.5); // constants
boolean g(boolean x) { // Oracle function g
if coin1 { // coin1=true - g is constant
return coin2;
} else { // coin1=false - g is balanced
return x xor coin2;
}
}
qufunct G(quconst x,quvoid y) { // Construct oracle op. G from g
if g(false) xor g(true) { CNot(y,x); }
if g(false) { Not(y); }
}
/* Deutschs Algorithm */
operator U(qureg x,qureg y) { // Bundle all unitary operations
H(x); // of the algorithm into one
G(x,y); // operator U
H(x & y);
}
procedure deutsch() { // Classical control structure
qureg x[1]; // allocate 2 qubits
qureg y[1];
int m;
{ // evaluation loop
reset; // initialize machine state
U(x,y); // do unitary computation
measure y,m; // measure 2nd register
Introduc
ao `
a programac
ao qu
antica
Omer
[17]:
1. O ponto inicial do programa e na procedure
deutsch()
2 Preparacao do estado inicial vazio
|0 > = |0>x | 0>y
Alocacao do qubit x: qureg x[1];
Alocacao do qubit y: qureg y[1];
Preparacao dos estados iniciais vazios: reset;
3 Aplica-se a transformac
ao de Hadamard H(x)
1
|1 > = (H|0>x )|0>y = (|0>x | 0>y + |1>x | 0>y )
2
Dentro da sequencia de execuc
ao quantica do programa, e chamado o operador U (x, y);que e responsavel
pelas operacoes unitarias, sendo que a primeira delas e
H(x); aplicando a transformac
ao de Hadamard no qubit x.
4 Aplica o operador Oraculo G
|2 > = 12 (|0>x | g(0)>y + |1>x | g(1)>y
Ainda dentro do operador U (x, y); ha a chamada
da funcao quantica G(x, y);
5 Aplica H(x o y), resultando em
|3 > =
1
yg(0)
(1)
+
2 2 xB yB
(
)
x+yg(1)
(1)
|x>x |y>y .
1306-7
6.
Instalac
ao do QCL
libplot
ex
bison
readline5
1306-8
7.
Conclus
oes
Conceitos da programac
ao quantica foram apresentados, especialmente ilustrando como um programa
quantico pode ser emulado em um computador classico.
Este e um campo bastante amplo e com muita informacao. Entre as referencias que foram utilizadas,
Refer
encias
[1] M.A. Nielsen and I.L. Chuang, Quantum Computation and Quantum Information (Cambridge University
Press, New York, 2000).
[2] S. J. Gay, Mathematical Structures in Computer Science, 16, 581 (2006).
[3] P. Selinger, in: Proceedings of the 7th International
Symposium on Functional and Logic Programming, v.
2998 of Lecture Notes in Computer Science (Springer,
Berlin, 2004a).
[4] J.J. Grattage, A Functional Quantum Programming
Language. PhD thesis, The University of Nottingham
2006, disponvel em http://etheses.nottingham.ac.
uk/250/1/thesis.pdf, consultado em 14/10/2012.
Jos
e et al.
[17] B. Omer,
Structured Quantum Programming. PhD thesis, Technical University of Vienna, 2003.
[18] B. Omer,
A Procedural Formalism for Quantum Computing. Master thesis, Technical University of Vienna,
1998.
[19] J.R.C. Piqueira, Revista Brasileira de Ensino de Fsica
33, 4303 (2011).
[20] M. Hirvensalo, Quantum Computing (Springer, Berlin,
2001).
[21] G. Jaeger, Quantum Information:
(Springer, New York, 2007).
An Overview
[22] V. Vedral, Introduction to Quantum Information (Oxford University Press, Oxford, 2006).
[23] E. Desurvire, Classical and Quantum Information Theory: An Introduction for the Telecom Scientist (Cambridge University Press, Cambridge, 2009).
[24] P. Arrighi and G. Dowek, Proceedings of the International Workshop on Quantum Programming Languages
(IEEE Computer Society Press, Turku, Finland, 2004),
p. 2138.
[25] C.A. Lungarzo, Cienc. Cult. 55, 4 (2003).
[26] W.V. Dam and G. Seroussi, Report Number: HPL2002-208 (University of California at Berkley, 2002).
[27] E. Knill, Technical Report LAUR-96-2724 (Los Alamos
National Laboratory, Los Alamos, 1996).
[28] B. Omer,
Quantum Programming in QCL. Masters
thesis, Technical University of Vienna, 2000.
[29] J.W.Sanders and P. Zuliani, in Mathematics of Program Construction, volume 1837 of Lecture Notes in
Computer Science (Springer, Berlin, 2000).
Introduc
ao `
a programac
ao qu
antica
1306-9
[47] J.K. Vizzotto and A.C. da Rocha Costa, in VII Congresso Brasileiro de Redes Neurais, Sess
ao de Computaca
o Qu
antica (Sociedade Brasileira de Redes Neurais, Natal-RN, 2005).
[35] H. Mlnarik, Operational semantics and type soundness of quantum programming language LanQ
(arXiv:quant-ph/0708.0890v1, 2007).
[48] J. Karczmarczuk, in Proceedings of the ACM SIGPLAN, Workshop on Haskell (ACM Press, Bloomington, Indiana, 2003).
[37] P. Maymin, The lambda-q calculus can eciently simulate quantum computers (arXiv:quant-ph/9702057,
1997).
[51] W. Mauerer, Semantics and Simulation of Communication in Quantum Computing. Masters thesis, University Erlangen-Nuremberg, 2005.
[52] P. Jorrand and M. Lalire, Unconventional Programming Paradigms, LNCS Series, v. 3566 (Springer, Le
Mont Saint Michel, Franca, 2005).
[53] S. Gay and R. Nagarajan, in Proceedings of the 32nd
ACM Annual Symposium on Principles of Programming Languages, (ACM Press, New York, USA, 2005),
p. 145-157.
[54] P. Ad
ao and P. Mateus, in Proceedings of the 3rd International Workshop on Quantum Programming Languages, Electronic Notes in Theoretical Computer Science
(Elsevier Science, Chicago, Illinois, 2005).
[55] M. Udrescu, L. Prodan, and M. Vl
adutiu, in Proceedings of the 1st ACM Conference on Computing Frontiers (ACM Press, Ischia, Italy, 2004).