Linguagem de computação quântica

ferramenta para programar operações em computadores quânticos, com sintaxe C-like

Linguagem de computação quântica (QCL) é uma das primeiras linguagens de programação quântica.[1] A característica mais importante do QCL é o suporte para operadores e funções definidos pelo usuário. A sua sintaxe é semelhante à sintaxe da linguagem de programação C e seus tipos de dados clássicos são semelhantes aos tipos de dados primitivos em C. Pode-se combinar código clássico e código quântico no mesmo programa.

A biblioteca padrão QCL fornece operadores quânticos padrões utilizados em algoritmos quânticos, tais como:

  • não-controlado com diversos qubits alvos,
  • Operação de Hadamard em vários qubits,
  • fase de parseamento e de controle.

Sintaxe editar

  • Tipos de dados
    • Quântico - qureg, quvoid, quconst, quscratch, qucond
    • Clássico - int, real, complexo, boolean, string, vetor, matriz, tensor
  • Tipos de função
    • qufunct - Operadores pseudo-clássicos. Só pode alterar a permutação de estados básicos.
    • operator - Operadores unários gerais. Pode alterar a amplitude.
    • procedure - Pode chamar medida, imprimir e copiar dentro dessa função. Esta função é não-invertível.
  • Funções internas
    • Quântico
      • qufunct - Fanout, Swap, Perm2, Perm4, Perm8, Not, CNot
      • operator - Matrix2x2, Matrix4x4, Matrix8x8, Rot, Mix, H, CPhase, SqrtNot, X, Y, Z, S, T
      • procedure - measure, dump, reset
    • Clássico
      • Aritmética - sin, cos, tan, log, sqrt, ...
      • Complexo - Re, Im, conj

Exemplos editar

O tipo de dado básico embutido em QCL é o qureg (quantum register). Ele pode ser interpretado como uma matriz de qubits (quantum bits).

 qureg x1[2]; // registrador quântico x1 de 2-qubit
 qureg x2[2]; // registrador quântico x2 de 2-qubit
 H(x1); // operação de Hadamard em x1
 H(x2[1]); // operação de Hadamard no primeiro qubit do registrador x2

Já que o interpretador QCL usa a biblioteca de simulação qlib, é possível observar o estado interno da máquina quântica durante a execução do programa quântico.

 qcl> dump
   : STATE: 4 / 32 qubits allocated, 28 / 32 qubits free
   0.35355 |0> + 0.35355 |1> + 0.35355 |2> + 0.35355 |3>
   + 0.35355 |8> + 0.35355 |9> + 0.35355 |10> + 0.35355 |11>

Note que a operação dump é diferente de measurement, uma vez que não influencia o estado da máquina quântica e pode ser realizado apenas usando um simulador.

Como nas linguagens de programação modernas, é possível definir novas operações que podem ser usadas para manipular os dados quânticos. Por exemplo:

 operator diffuse (qureg q) {
     H(q);                 // transformada de Hadamard
     Not(q);               // Inverte q
     CPhase(pi, q);        // Rotaciona se q=1111..
     !Not(q);              // desfazer inversão
     !H(q);                // desfazer transformada de Hadamard
   }

define inverso sobre o operador de média usado no Algoritmo de Grover. Isso permite definir algoritmos em um nível mais alto de abstração e expandir a biblioteca de funções disponíveis para os programadores.

Referências editar