- •Уважаемый читатель!
- •1. Мотивация
- •2. Практические языки программирования
- •2.1. Язык qcl (Омер)
- •2.2. Язык q (Беттелли, Каларко, Серафини)
- •3. Формальные языки программирования
- •3.1. Императивные и функциональные языки
- •3.2. Языки для параллельных процессов
- •3.3. Физическая модель
- •3.4. Расширение классических языков
- •3.5. Полезные особенности и вызовы
- •3.6. Предлагаемые языки
- •4. Заключение
- •Список источников
3.3. Физическая модель
Другим очень важным решением относительно проекта спецификации квантового языка программирования является выбор лежащей в основании математической модели для описания законов квантовой физики.
В квантовых вычислениях и криптографии используются два типа наиболее общих абстракций квантовой физики: подход, основанный на унитарных операциях, и подход, основанный на операторах плотности.
В рамках подхода, основанного на унитарных операциях, состояние системы рассматривается в качестве вектора в гильбертовом пространстве. Операции над состоянием представлены унитарными преобразованиями, в то время как измерения являются проекциями на ортогональные подпространства этого гильбертова пространства. При описании поведения процесса, в котором имеются как унитарные операции, так и измерения, с необходимостью возникают распределения вероятностей состояний системы, так называемые ансамбли. По этой причине, квантовые языки программирования, использующие подход, основанный на унитарных операциях, обычно должны явным образом моделировать вероятностный процесс, происходящий над унитарной эволюцией системы.
Подход, основанный на операторах плотности, базируется на следующем наблюдении: существуют различные ансамбли квантовых состояний, которые не могут быть различимы каким-либо экспериментом. Если определить два ансамбля эквивалентными, если они не могут быть различимы экспериментом, то состояние (то есть класс эквивалентности ансамблей) может быть представлено при помощи оператора плотности. Формализм операторов плотности даёт математически элегантное решение вопроса об экспериментальной различимости состояний (или ансамблей), а потому особенно популярно в криптографии. Более того, поскольку операторы плотности уже позволяют кодирование вероятностных аспектов системы, то нет необходимости в дополнительном моделировании вероятностного процесса над системой.
Для более детального рассмотрения этих понятий см., например, книгу [NC00].
Преимущество использование подхода, основанного на операторах плотности, при описании семантики языков программирования заключается в следующем: если две программы обрабатывают систему или входные данные неразличимым способом, то описание их деятельности является одним и тем же в терминах операторов плотности, то есть программы имеют одну и ту же семантику, если они неразличимы. В отличие от этого при использовании унитарных операторов две программы скорее всего будут объявлены различными, если они производят различные, но неразличимые ансамбли (например, одна программа кодирует случайный бит в вычислительном базисе, а вторая — тоже случайный бит в диагональном базисе; если такой случайный бит не сохраняется каким-либо иным способом, то результаты этих программ неразличимы, хотя очевидно, что ансамбли различны). Поскольку неразличимость ансамблей является очень важным понятием во многих квантовых криптографических протоколах, семантика, основанная на операторах плотности, может более подходить для описания криптографических протоколов.
Однако необходимо отметить, что классический результат работы программы не должен зависеть от выбранного подхода, поскольку оба подхода являются моделями в рамках одной и той же физической теории, а потому не могут предсказывать разные результаты для одного эксперимента.
Примерами квантовых языков программирования с семантикой, основанной на операторах плотности, являются [Sel04, Unr04a], в то время как унитарная семантика используется в язках pQCL [SZ00, Zul04], QPAlg [LJ04], CQP [GN04] и в квантовом лямбда-исчислении [vT04, Val04, SV04, AD04] (см. раздел 3.6 с кратким обзором этих языков программирования).
Также существуют языки программирования, основанные на иных моделях квантовой механики. Например, в работе [BS04] представлена модальная квантовая логика, аксиомы которой делают различие только между событиями, которые с необходимостью происходят, не могут произойти, могут произойти, при этом с данными событиями не связана какая-либо вероятность. Алгоритмы с низкой вероятностью ошибки не могут быть смоделированы на этом языке программирования.
Поскольку имеется множество различных вариантов квантовой логики (для краткого введения см. [Wil03]), можно представить множество языков программирования, которые основаны на таких логиках. Однако зачастую сложно адаптировать доказательства, которые основаны на традиционных моделях квантовой механики гильбертова пространства, к построениями этих квантовых логик.
