Lenguaje de computación cuántica - Quantum Computation Language

El lenguaje de computación cuántica ( QCL ) es uno de los primeros lenguajes de programación cuántica implementados . La característica más importante de QCL es la compatibilidad con operadores y funciones definidos por el usuario. Su sintaxis se asemeja a la sintaxis del lenguaje de programación C y sus tipos de datos clásicos son similares a los tipos de datos primitivos en C. Se puede combinar código clásico y código cuántico en el mismo programa.

La biblioteca estándar QCL proporciona operadores cuánticos estándar que se utilizan en algoritmos cuánticos como:

Sintaxis

  • Tipos de datos
    • Quantum - qureg, quvoid, quconst, quscratch, qucond
    • Clásico: int, real, complejo, booleano, cadena, vector, matriz, tensor
  • Tipos de funciones
    • qufunct: operadores pseudoclásicos. Solo puede cambiar la permutación de estados básicos.
    • operador - Operadores unitarios generales. Puede cambiar la amplitud.
    • procedimiento: puede llamar a medir, imprimir y volcar dentro de esta función. Esta función no es invertible.
  • Funciones integradas
    • Cuántico
      • qufunct - Fanout, Swap, Perm2, Perm4, Perm8, Not, CNot
      • operador - Matrix2x2, Matrix4x4, Matrix8x8, Rot, Mix, H, CPhase, SqrtNot, X, Y, Z, S, T
      • procedimiento - medir, volcar, restablecer
    • Clásico
      • Aritmética: sin, cos, tan, log, sqrt, ...
      • Complejo - Re, Im, conj

Ejemplos

El tipo de datos cuántico integrado básico en QCL es el qureg (registro cuántico). Puede interpretarse como una matriz de qubits (bits cuánticos).

qureg x1[2]; // 2-qubit quantum register x1
qureg x2[2]; // 2-qubit quantum register x2
H(x1); // Hadamard operation on x1
H(x2[1]); // Hadamard operation on the first qubit of the register x2

Dado que el intérprete qcl utiliza la biblioteca de simulación qlib, es posible observar el estado interno de la máquina cuántica durante la ejecución del programa cuá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>

Tenga en cuenta que la operación de volcado es diferente de la medición, ya que no influye en el estado de la máquina cuántica y solo se puede realizar utilizando un simulador.

Al igual que en los lenguajes de programación modernos, es posible definir nuevas operaciones que se pueden utilizar para manipular datos cuánticos. Por ejemplo:

operator diffuse (qureg q) {
  H(q);                 // Hadamard Transform
  Not(q);               // Invert q
  CPhase(pi, q);        // Rotate if q=1111..
  !Not(q);              // undo inversion
  !H(q);                // undo Hadamard Transform
}

define inverso sobre el operador medio utilizado en el algoritmo de Grover . Esto permite definir algoritmos en un nivel superior de abstracción y ampliar la biblioteca de funciones disponibles para los programadores.

Referencias