Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

  • Контролируется - не с большим количеством целевых кубитов,
  • Операция Адамара на многих кубитах,
  • Фаза и контролируемая фаза.
  • Квантовые алгоритмы сложения, умножения и возведения в степень с двоичными константами (все модули n)
  • Квантовое преобразование Фурье

Синтаксис [ править ]

  • Типы данных
    • Квантовый - 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, конъюнктура

Примеры [ править ]

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

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

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

qcl> дамп: 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 )  {  H ( q );  // Преобразование Адамара  Not ( q );  // Инвертировать q  CPhase ( pi ,  q );  // Повернуть, если q = 1111 ..  ! Не ( q );  // отменить инверсию  ! H ( q );  // отменить преобразование Адамара }

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

Ссылки [ править ]