Язык квантовых вычислений - Quantum Computation Language

Язык квантовых вычислений (QCL) является одним из первых реализованных квантовое программирование языки.[1] Самая важная особенность QCL - поддержка определяемых пользователем операторов и функций. Его синтаксис напоминает синтаксис Язык программирования C и его классический типы данных похожи на примитивные типы данных в C. В одной программе можно комбинировать классический код и квантовый код.

Стандартная библиотека QCL предоставляет стандартные квантовые операторы, используемые в квантовых алгоритмах, таких как:

Синтаксис

  • Типы данных
    • Квантовая - qureg, quvoid, quconst, quscratch, qucond
    • Классический - int, вещественное, сложное, логическое, строковое, вектор, матрица, тензор
  • Типы функций
    • qufunct - Псевдоклассические операторы. Можно изменить только перестановку основных состояний.
    • оператор - Общие унитарные операторы. Может изменять амплитуду.
    • процедура - может вызывать измерение, печать и дамп внутри этой функции. Эта функция необратима.
  • Встроенные функции
    • Квантовая
      • qufunct - Fanout, Swap, Пермь2, Пермь4, Пермь8, Не, CNot
      • оператор - Matrix2x2, Matrix4x4, Matrix8x8, Rot, Mix, H, CPhase, SqrtNot, X, Y, Z, S, T
      • процедура - измерение, сброс, сброс
    • Классический
      • Арифметика - sin, cos, tan, log, sqrt, ...
      • Комплекс - Re, Im, cons

Примеры

Основным встроенным квантовым типом данных в QCL является qureg (квантовый регистр). Его можно интерпретировать как массив кубитов (квантовых битов).

Qureg x1[2]; // 2-кубитный квантовый регистр x1Qureg x2[2]; // 2-кубитный квантовый регистр x2ЧАС(x1); // Операция Адамара на x1ЧАС(x2[1]); // Операция Адамара над первым кубитом регистра x2

Поскольку интерпретатор qcl использует библиотеку моделирования qlib, можно наблюдать внутреннее состояние квантовой машины во время выполнения квантовой программы.

qcl> dump: STATE: выделено 4/32 кубита, свободно 28/32 кубита 0,35355 | 0> + 0,35355 | 1> + 0,35355 | 2> + 0,35355 | 3> + 0,35355 | 8> + 0,35355 | 9> + 0,35355 | 10> + 0,35355 | 11>

Обратите внимание, что операция дампа отличается от измерения, поскольку она не влияет на состояние квантовой машины и может быть реализована только с помощью симулятора.

Как и в современных языках программирования, можно определять новые операции, которые можно использовать для управления квантовыми данными. Например:

оператор размытый (Qureg q) {  ЧАС(q);                 // Преобразование Адамара  Нет(q);               // Инвертировать q  CPhase(число Пи, q);        // Повернуть, если q = 1111 ..  !Нет(q);              // отменить инверсию  !ЧАС(q);                // отменить преобразование Адамара}

определяет инверсию среднего оператора, используемого в Алгоритм Гровера. Это позволяет определять алгоритмы на более высоком уровне абстракции и расширять библиотеку функций, доступных для программистов.

Рекомендации

  1. ^ «QCL - язык программирования для квантовых компьютеров». tuwien.ac.at. Получено 2017-07-20.