linguagens de programação quântica: um apanhado...

73
Linguagens de Programa¸ ao Quˆ antica: Um Apanhado Geral Juliana Kaizer Vizzotto ESIN/UCPel Antˆ onio Carlos da Rocha Costa PPGINF/UCPel 1 0 Workshop-Escola de Computa¸ ao e Informa¸ ao Quˆ antica Outubro 2006

Upload: lydien

Post on 03-Dec-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Linguagens de Programacao Quantica: Um

Apanhado Geral

Juliana Kaizer VizzottoESIN/UCPel

Antonio Carlos da Rocha CostaPPGINF/UCPel

10 Workshop-Escola de Computacao e Informacao QuanticaOutubro 2006

Roteiro

Motivacao

Arquiteturas para Computacao Quantica

Propriedades dos dados quanticos

Linguagens com dados quanticos e controle classico

QCL - Bernhard Omer, 1998QPL - Peter Selinger, 2004

Propriedades do controle quantico

Linguagens com dados e controle quanticos

QML - Altenkirch e Grattage, 2005QHaskell - Vizzotto e Rocha Costa, 2006

Motivacao I - Computacao Quantica

Computacao quantica e uma area jovem!

(Feynman & Benioff, 1982) - Sistema quantico pode serutilizado para executar computacoes(Deutsch, 1985) - Maquina de Turing quantica(Shor, 1994) - Algoritmo quantico para fatoracao de numerosinteiros(Grover, 1996) - Algoritmo quantico para procura

1. Evidencia que computadores quanticos podem realmenteexecutar algumas tarefas mais eficientemente que os computadoresclassicos!

2. Desenvolvimento de esquemas experimentais para execucao detais algoritmos!

Motivacao II - Programacao Quantica

Programacao quantica → Linkar 1. e 2.

Estudar algoritmos quanticos do ponto de vista de programacao

(Knill, 1996) - primeira proposta de pseudo-codigo paraprogramacao quantica

Programacao quantica:

Compreensao das estruturas de dados e controle quanticos

Entendimento da logica de programacao quantica

Impulsionar o desenvolvimento de algoritmos quanticos

Motivacao III - Programacao Quantica

Mesmo que a implementacao de computadores quanticos aindaseja muito limitada: poucos qubits em laboratorios!

Acredita-se que a pesquisa na area de linguagens deprogramacao quantica e consideravelmente importante!

tanto para o desenvolvimento de algoritmosquando para fundamentos de linguagens quanticas

Alem disso:

Em computacao classica o trabalho em linguagens deprogramacao e datado varios anos antes do desenvolvimentode dispositivos computacionais praticos na decada de 50.Church, 1936 - Calculo lambda

Turing, 1936 - Maquina de Turing Universal

Arquiteturas para Programacao Quantica

(Knill, 1996): QRAM - Dados quanticos e controle classico

...

representacao fisica dos recursos quanticos

hardware e software classicos

Codigo para operacoes quanticas

Resultados de Medidas

Memoria Quantica

Entradaclassica

saida classica

Arquiteturas para Programacao Quantica

QRAM - Dados quanticos e controle classico

Maquina classica controla a memoria quantica (recursosquanticos)

Recursos quanticos: colecao de qubits

Instrucoes:

InicializacoesEvolucoes unitariasMedidas

Operadores quanticos como componentes pre-definidos:codificam a definicao de um circuito quantico

Arquiteturas para Programacao Quantica

(Deutsch, 1985): Maquina de Turing Quantica (MTQ) - Dados eControle quanticos

Arquiteturas para Programacao Quantica

(Deutsch, 1985): Maquina de Turing Quantica (MTQ) - Dados eControle quanticos

Estado da fita e uma colecao de qubits, possivelmente emsuperposicao.

Como o controle da fita tambem e quantico, tambem podeestar em superposicao.

A MTQ evolui em direcoes diferentes simultaneamente.

Propriedades dos Dados Quanticos

Paralelismo quantico: estado quantico pode estar em umasuperposicao dos seus estados basicos:

α|0〉 + β|1〉

Exemplo: versao do algoritmo de Deutsch

Considerando uma funcao f : B→ B

Queremos saber se f e constante ou balanceada

Classicamente: duas aplicacoes de f

Em uma linguagem quantica: f pode ser aplicada uma unica vez!

f (α|0〉 + β|1〉)

Propriedades dos Dados Quanticos

Emaranhamento: estado quantico e GLOBAL

Evolucao unitaria global do estado!

Exemplo: considerando um estado de dois qubits como:

α|00〉 + β|11〉

Problema 1. Nao temos como separar o primeiro qubit do segundo!

Problema 2. A nao ser fazendo uma medida!

O que causa um efeito colateral no estado quantico!

meas(α|00〉 + β|11〉) 7→ {|00〉, |11〉}

Propriedades dos Dados Quanticos

Non-clonning: dado quantico nao pode ser copiado

Exemplo: considerando um estado como

α|0〉 + β|1〉

Nao temos como saber os valores de α e β!

Se tentamos, medimos!! Colapsando o estado e perdendo oestado original!

Linguagens com Dados Quanticos e Controle Classico

QCL - Bernhard Omer, 1998

Extensao de uma linguagem classica estruturada como C.

Possui dados classicos e estruturas de controle (comandos)classicos.

Parte quantica da linguagem:

Essencialmente trata a manipulacao de registradores quanticosatraves de estruturas de controle classicas!

Dado quantico e manipulado atraves de referencias a um vetorde dados quanticos.

QCL

Estado da maquina quantica

O estado da maquina com n qubits e dado por Hn

Exemplo: maquina quantica com 4 qubits

qcl> dump;

: STATE : 4 qubits free

1 |0000>

Registradores quanticos

Qubits: registradores quanticos de tamanho 1.

qcl> qureg a[1]; qureg b[1] // alocando 2 qubits

qcl> Rot(−π/3,a) // rotando o primeiro qubit

qcl> Had(b) // hadamard no segurndo qubit

QCL

Estado da maquina quantica apos alocacao:

|Ψ〉 = |00〉 ⊗ (H|0〉) ⊗ (Rx(π/3)|0〉)

qcl> dump;

: STATE : 2 / 4 qubits allocated, 2 / 4 qubits free

0.612372 |0000> + 0.612372 |0010> +

0.353553 |0001> + 0.353553 |0011>

Considera-se um conjunto universal de portas elementares!

Portas elementares sao as primitivas fundamentais para manipularo estado da maquina quantica! Como atribuicoes em computacaoclassica!

QCL

Operadores sobre registradores quanticos

Dado um operador unitario agindo sobre m qubitsU : Hm →Hm, a acao de U sobre um registrador em umamaquina quantica com n qubits e dada por:

U(s) = Π†s(U ⊗ I (n −m))Πs

Todos os operadores quanticos em QCL sao definidos dessamaneira!

O tamanho do registrador operando e passado comoparametro.

QCL

Operadores sobre registradores quanticos

Portas elementares sao tratadas como subrotinas externas

extern operator H(qureg q)

extern operator RotX(real theta, qureg q)

extern qufunct CNOT(qureg q, quconst c)

Chamadas a portas elementares podem ser invertidas:

qcl> qureg a[1];

[1/4] 1.0 |0000>

qcl> H(a);

[1/4] 0.7071 |0000> + 0.7071 |0001>

qcl> !H(a);

[1/4] 1.0 |0000>

QCL

Operadores sobre registradores quanticos

Condicionais

extern cond Not(qureg q) // not condicional

O registrador de controle e passado como um parametroimplıcito se o operador e utilizado no corpo de um condicional.

Exemplo:

qcl> qureg s[1]; qureg e[2];

qcl> if e {Not(s);} // invert s para e = 11

QCL

Operadores sobre registradores quanticos

Medidas

Observaveis sao restritos a base computacionalRetorna um valor classicoReduz o estado

qcl> qureg q[2];

qcl> int m;

qcl> H(q);

[2/4] 0.5 |0000> + 0.5 |0001> +

0.5 |0010> + 0.5 |0011>

qcl> measure q,m;

[2/4] 0.5 |0011>

qcl> print m;

: 3 // 2 ** 0 + 2 ** 1

QCL

Operadores sobre registradores quanticos

Registradores, portas elementares e medidas sao suficientes paraimplementacao de algoritmos quanticos

QCL apresenta subrotinas quanticas!

Exemplo:

operator U(qureg x,qureg y){

H(x);

Not(y);

}

QCL

Copiando dado quantico?

Duplicacao de uma referencia a um qubit

qcl> qureg x[1];

qcl> CNOT(x,x)

HUMMMM???

Sintaticamente permitido escrever!

Erro detectado em tempo de execucao somente!

QCL

Algoritmo de Deutsch

Algoritmo probabilıstico: com uma aplicacao da funcaof : B → B consegue-se calcular f (0)⊕ f (1) com probabilidade1/2 com uma unica aplicacao de f .

boolean g(boolean x) { ..}

qufunct G(qureg x, qureg y){...}

operator U(qureg x, qureg y) {

H(x);

G(x,y);

H(x & y);

}

QCL

Algoritmo de Deutsch

procedure deutsch(){

qureg x[1];

qureg y[1];

int m

{ reset ;

U(x,y);

measure y,m

} until m ≡ 1;

measure x,m;

print "g(0) xor g(1) = ",m;

reset;

}

Linguagens com Dados Quanticos e Controle Classico

QPL - Peter Selinger, 2004

Primeira linguagem funcional quantica!

Cada operacao transforma um conjunto especıfico de entradasem saıdas.

A primeira versao de QPL tinha uma sintaxe baseada emdiagramas de fluxo com operacoes para inicializacao,atribuicao (unica), condicional (medida), permutacoes, etc

Semantica denotacional baseada em matrizes de densidade esuperoperadores.

Sistema de tipos estatico.

QPL

Diagramas de fluxo quanticos

input p,q :qbit

measure p

output p,q :qbit

q *= N p *= N

p,q:qbit

p,q:qbit

p,q:qbit

p,q:qbit

p,q:qbit

p,q:qbit

B

DC

A

D 0

00

0

00

A

input p,q :qbit

measure p

output p,q :qbit

q *= N p *= N

p,q:qbit

p,q:qbit

p,q:qbit

p,q:qbit

p,q:qbit

D

0 0

0

0

00

NAN*

0

00

p,q:qbit NAN*+D

QPL

Diagramas basicos:

A 0

00q:qbit,Gamma =

new qbit q := 0

Gamma = A

Alocando qubit

q:qbit,Gamma = A

C

B

D

discard q

Descartando qubit

Gamma = A + D

QPL

Diagramas basicos:

A B

DC

measure p

q:qbit, Gamma =

q:qbit, Gamma = q:qbit, Gamma =

A

D

0 10

00

0 0

0

q *= S

q:qbit, Gamma = A

q:qbit, Gamma = (SXI)A(SXI)*

Medida Transformacao unitaria

QPL

Copiando dado quantico?

Em QPL a copia de dados quanticos e proibida via sintaxe!

Sistema de tipos (estatico)!!

Em qualquer contexto de tipos, variaveis distintas se referem aobjetos distintos em tempo de execucao.

q representa uma lista de variaveis distintas!

Isto satisfaz o requerimento que: operacoes agindo sobre

diversos qubits, precisam de locacoes fısicas diferentes.

Um programa bem tipado nunca causara erros em tempo deexecucao!

QPL

Exemplo: atirando uma moeda!

new qbit q := 0

A 000

A 000

Gamma = A

q *= H

p:qbit,Gamma =

p:qbit,Gamma = 1/2 A AA A

measure q

discard q discard q

q:qbit,Gamma= q:qbit,Gamma=0 1 0

00

A

Gamma =1/2A Gamma =1/2A

QPL

Loops e Procedimentos

new qbit q := 0

A 000

A 000

Gamma = A

q *= H

p:qbit,Gamma =

p:qbit,Gamma = 1/2 A AA A

measure q

discard q discard q

q:qbit,Gamma= q:qbit,Gamma=0 1 0

00

A

Gamma =1/2A Gamma =1/2A

coin toss

a:qbit

coin toss

input a

output1 b output2 a

a:qbitb:qbit

Lambda QPL

Calculo Lambda para Computacao Quantica com Controle Classico

Peter Selinger & Benoıt Valiron, 2004.

A linguagem:

M,N, P := x | MN | λ x ⋅ M

| if M then N else P

| 0 | 1 | meas | new | U | *

| <M,N> | let <x,y> = M in N

Lambda QPL

Semantica Operacional: sistema de reducao probabilıstico

Passos de reducao:

[Q,L,M]→p [Q ′,L′,M ′]

onde, [Q,L,M] e o estado de um programa dado por umvetor Q, um termo lambda L e um ambiente M.

Lambda QPL

[α |Q0> + β |Q1>, meas pi] →|α|2 [|Q0>,0]

Exemplo de reducao:

[|0>,(λx ⋅ plus x x) ( meas (H p0))]

→1 [1/sqrt(2)(|0>+|1>),(λx ⋅ plus x x) ( meas p0)]

→1/2 { [|0>,(λx ⋅ plus x x) (0)],

[|1>,(λx ⋅ plus x x) (1)]}

→1/2 { [|0>, plus 0 0],

[|1>, plus 1 1] }

→1/2 { [|0>,0],

[|1>,0]}

Lambda QPL

Considera-se um conjunto U de portas basicas universais

[Q, U<pi, ..., pj>] →1 [Q’,<pi, ..., pj>]

[Q,U<p0,p0>] ???

Sistema de Tipos!

Lambda QPL

Sistema de Tipos

Baseado na logica linear!

Capturar quais termos podem ser duplicados!

Um termo do tipo A nao pode ser duplicado!

Um termo do tipo !A pode ser duplicado!

Lambda QPL

Exemplo: teleportacao

EPR = λ x ⋅ CNOT<H (new 0), new 0>

BellMeasure =

λ q2 ⋅ λ q1 ⋅ ( let (p, p’) = CNOT<q1,q2>in <meas H(p), meas p’>)

U = λ q⋅ λ <x,y> ⋅ if x then ( if y thenU11q else U10q)else ( if y then U01q else U00q)

Lambda QPL

Exemplo: teleportacao

Teleport = let <p,p’> = EPR *in let f = BellMeasure pin let g = U p’in <f,g>

Linguagens com Dados e Controle Quanticos

QML - Altenkirch & Grattage, 2004

Uma linguagem funcional de primeira ordem com dadosquanticos e controle quantico.

Semantica operacional baseada em circuitos quanticos

QML: Syntax

(Variables) x, y, ... ∈ Vars

(Prob⋅ Amplitudes) κ, ι, ... ∈ C

(Patterns) p,q ::= x | (x,y)

(Terms) t,u,e ::= x | () | (t,u)

| let p = t in u

| if◦ t then u else u’

| false | true |−→0 | κ*t | t+u

QML

Exemplo: Not quantico

qnot x = if◦ x then false else true

qnot false = true

qnot (false + true) = if◦ falsethen falseelse true +

if◦ truethen falseelse true

= true + false

QML

Exemplo: Not condicional

cnot c x = if◦ cthen (true, qnot x)else (false, x)

Exemplo: Not condicional??

cnot c x = if◦ cthen (c, qnot x)else (c, x)

QML

Exemplo: Not condicional

cnot c x = if◦ cthen (true, qnot x)else (false, x)

Exemplo: Not condicional??

cnot c x = if◦ cthen (c, qnot x)else (c, x)

QML

Copiando dados quanticos.let x = false + truein (x,x) ≡ (false,false) + (true, true)

Descartando dados quanticos weakening: nao e permitido noscasos que informacao pode ser perdida.let (x,y) = (false,false) + (true,true)in x

Dado quantico ligado a y e descartado.

A expressao nao e bem tipada!

QML

Copiando dados quanticos.let x = false + truein (x,x) ≡ (false,false) + (true, true)

Descartando dados quanticos weakening: nao e permitido noscasos que informacao pode ser perdida.let (x,y) = (false,false) + (true,true)in x

Dado quantico ligado a y e descartado.

A expressao nao e bem tipada!

QML

Sistema de Tipos

Regras de tipo baseadas na logica linear estrita

Contracoes sao implıcitas.

Weakenings nao sao permitidos.

QML

Tipos: colecao de qubits

σ = Q1 | Q2 | σ ⊗ τ

Contexto de tipos

Γ = • | Γ,x:σ

QML

Tipos: colecao de qubits

σ = Q1 | Q2 | σ ⊗ τ

Contexto de tipos

Γ = • | Γ,x:σ

QML

Algumas regras do sistema de tipos

Γ ⊢ t : σ ∆, x : σ ⊢ u : τlet

Γ⊗∆ ⊢ let x = t in u : τ

f-intro• ⊢ false : Q2

t-intro• ⊢ true : Q2

varx : σ ⊢ x : σ

QML

Ortogonalidade

if◦ x then true else true

A expressao retorna true sem realmente utilizar qualquerinformacao sobre x .

A expressao nao e bem-tipada.

if◦ x then t else u

A expressao somente deve ser aceita se t e u sao valores quanticosortogonais (t ⊥ u).

t ⊥ u holds if 〈t|u〉 = 0

QML

Ortogonalidade

if◦ x then true else true

A expressao retorna true sem realmente utilizar qualquerinformacao sobre x .

A expressao nao e bem-tipada.

if◦ x then t else u

A expressao somente deve ser aceita se t e u sao valores quanticosortogonais (t ⊥ u).

t ⊥ u holds if 〈t|u〉 = 0

QML

Ortogonalidade

if◦ x then true else true

A expressao retorna true sem realmente utilizar qualquerinformacao sobre x .

A expressao nao e bem-tipada.

if◦ x then t else u

A expressao somente deve ser aceita se t e u sao valores quanticosortogonais (t ⊥ u).

t ⊥ u holds if 〈t|u〉 = 0

QML

Ortogonalidade

if◦ x then true else true

A expressao retorna true sem realmente utilizar qualquerinformacao sobre x .

A expressao nao e bem-tipada.

if◦ x then t else u

A expressao somente deve ser aceita se t e u sao valores quanticosortogonais (t ⊥ u).

t ⊥ u holds if 〈t|u〉 = 0

QML

Altenkirch, Grattage, Vizzotto, Sabry, 2005 - Teoria equacional

Dada a seguinte definicao para o porta de Hadamard:

H x = if◦ xthen ( false + (−1)*true )else ( false + true )

Gostarıamos de verificar que H (H x) e observacionalmente

equivalente a x.

QML: teoria equacional

As equacoes quanticas sao:

(if◦)

if◦ (λ*t0 + κ*t1) then u0 else u1

≡ λ*(if◦ t0 then u0 else u1) +

κ*(if◦ t1 then u0 else u1)

(superpositions)

t+u ≡ u+t

t +−→0 ≡ t

t+(u+v) ≡ (t+u)+v

λ*(t+u) ≡ λ*t + λ*uλ*t+κ*t ≡ (λ+κ)*t

0*t ≡−→0

QML: teoria equacional

By definition of H

H(H x) = if◦ ( if◦ xthen ( false + (−1)*true )else ( false + true ))then ( false + (−1)*true )else ( false + true )

QML: teoria equacional

By commuting conversion for if◦

= if◦ xthen if◦ ( false + (−1)*true )then ( false + (−1)*true )else ( false + true )else if◦ ( false + true )then ( false + (−1)*true )else ( false + true )

QML: teoria equacional

By ifo

= if◦ xthen ( if◦ falsethen (false + (−1)*true )else ( false + true ) +

(−1) if◦ truethen (false + (−1)*true )else ( false + true ) )else ( if◦ falsethen (false + (−1)*true )else ( false + true ) +

(−1) if◦ truethen (false + (−1)*true )else ( false + true ) )

QML: teoria equacional

By β

= if◦ xthen ( false − false + true + true )else ( false + false + true − true )

By simplification and normalisation

= if◦ x then true else false

By η-rule for if o

= x

QML: teoria equacional

By β

= if◦ xthen ( false − false + true + true )else ( false + false + true − true )

By simplification and normalisation

= if◦ x then true else false

By η-rule for if o

= x

QML: teoria equacional

By β

= if◦ xthen ( false − false + true + true )else ( false + false + true − true )

By simplification and normalisation

= if◦ x then true else false

By η-rule for if o

= x

QHaskell: sintaxe

x, y, ... ∈ Vars

κ, ι ∈ C

d ::= false | true | κ * d | q + r

p ::= e | x | meas x

| if x then p1 else p2

| proc xl → do cl

| pr −< xl

| let x = p1 in p2

| x ← e

| p1;p2

| qif x then p1 else p2

| returnA −< xl

QHaskell: exemplos

qnot = proc x → doqif x then x’ ← falseelse x’ ← qtrue

returnA −< x’

hadamar = proc x → doqif x then x’ ← (false + (−1) * true)else x’ ← false + true

returnA −< x’

QHaskell: exemplos

qnot (κ false + ι true) =

x’ ← ι false +

x’ ← κ true =

x’ ← ι false + κ true

QHaskell: exemplos

cqnot = let qnot = proc x → doqif x then x’ ← falseelse x’ ← true

returnA −< x’in proc (c,y) → doqif c then y’ ← qnot −< xelse y’ ← y

returnA −< (c,y’)

QHaskell: teleportacao

teleportation = proc (eprL,eprR,q) → do(m1,m2) ← alice −< (eprL,q)

q’← bob −< (eprR,(m1,m2))

returnA −< q’

alice = let qnot = ...

hadamard = ...in proc (eprL,q) → do(q1,e1) ← qcnot −< (q,eprL)

q2 ← hadamard −< q1

(m1,m2) ← meas −< (e1,q2)

returnA −< (m1,m2)

QHaskell: teleportacao

bob = proc (eprR,(m1,m2)) → doif m1 then r’ ← qnot −< eprRelse r’ ← eprRif m2 then r’’ ← z −< r’else r’’ ← r’

returnA r’’

QHaskell

Sistema de tipos

Controlar o uso de variaveis!!

Sistema de tipos baseado na logica linear!

Tipos classicos:

σ = 1 | Bool | σ ⊗ τ

Tipos quanticos:

θ = Q1 | QBool | θ ⊗ υ

QHaskell

Sistema de tipos

Valores classicos:

false• ◭ Γ ⊢ false : Bool

true• ◭ Γ ⊢ true : Bool

Variaveis:

cvar• ◭ x : σ,Γ ⊢ x : σ

qvarx : θ ◭ Γ ⊢ x : θ

QHaskell

Sistema de tipos

Medida: transforma dado quantico em classico

Θ ◭ x : |θ|,Γ ⊢ xmeas

x : θ ⊗Θ ◭ Γ ⊢ meas x

QHaskell

Sistema de tipos

returnA: todas e somente todas as variaveis quanticasretornas em um procedimento quantico devem ser provadas!

Θ ◭ Γ ⊢ (x ′1 : θ′1, . . . , x

′n : θ′n)

returnAΘ ◭ Γ ⊢ returnA(x ′

1 : θ′1, . . . , x′n : θ′n) : θ′1 ⊗ . . .⊗ θ′n

QHaskell

Sistema de tipos

Procedimentos quanticos:

x1 : θ1, . . . , xn : θn,Θ ◭ Γ ⊢ cl; returnA(x ′1 : θ′1, . . . , x

′n : θ′n) : t

Θ ◭ Γ ⊢ proc (x1:θ1, ...,xn:θn) do pro

clreturnA(x ′

1: θ′

1, . . . , x ′

n : θ′n)

QHaskell

QHaskell: uma proposta para uma linguagem quantica mista!

Sintaxe para manipulacao de dados quanticos possivelmenteemaranhados baseada na notacao do para setas em Haskell.

Sistema de tipos baseado na logica linear para controlar autilizacao de variaveis quanticas.

Um dado quantico que e medido se transforma em dadoclassico!

Trabalho futuro: definicao de uma semantica de reescrita paraQHaskell utilizando o calculo-ρ.

Fim

Obrigada!