Linguagem de computação quântica
Esta página ou se(c)ção precisa ser formatada para o padrão wiki. (Setembro de 2023) |
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 | editar código-fonte]- 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
- Quântico
Exemplos
[editar | editar código-fonte]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 | editar código-fonte]- ↑ «QCL - A Programming Language for Quantum Computers». tuwien.ac.at