Опубликован: 03.06.2019 | Доступ: свободный | Студентов: 505 / 76 | Длительность: 09:11:00
Лекция 13:

Классические вычисления на квантовом компьютере

< Лекция 12 || Лекция 13 || Лекция 14 >

Любое классическое вычисление может рассматриваться как функция, на входе у которой строка битов длины n, а на выходе строка битов длины k:

f:B_n \to B_k

Множество бинарных строк длины n обозначаем как В_n.

В качестве простого примера рассмотрим функцию, которая вычисляет квадрат двоичного целого длиной 3 бита, f : В_З \to В_6,\; f(101) = 011001 (5^2 = 25). Нам необходим результат длиной 6 битов, поскольку для входа 111 функция f дает результат длиной б битов -110001.

Эта интерпретация справедлива не только для функций арифметической природы, но применима к любым компьютерным программам. Каковы бы не были данные, с которыми работает программа, в памяти компьютера эти данные хранятся как строки битов и все вычисления дают в результате строку битов. Поэтому любая компьютерная программа имеет на входе фактически строку битов и получает результат также в виде строки битов. Так что без потери общности классическое вычисление по компьютерной программе можно рассматривать как функцию f : В_n \to В_k.

Хотелось бы понять, как можно классическое вычисление закодировать на квантовом компьютере. Первый барьер, который необходимо преодолеть на этом пути, состоит в том, что квантовый алгоритм обратим, а функции классического алгоритма таким свойством не обладают.

Давайте классическую функцию f : В_n \to В_k, преобразуем в обратимую функцию:

\hat f:B_{n+k} \to B_{n+k}

Мы хотим вход и выход объединить в одну строку, так что вход и выход будут принадлежать одному множеству, при этом начальные биты, соответствующие входу х не меняются в ходе вычислений, а биты результата на входе имеют значение 0, а в результате вычислений получают значение f (х). Формально:

\hat f(x,y)=(x,y \oplus f(x))

Здесь х - n-битный вход, y - начальное значение выходных битов, а символом \oplus обозначена операция побитового сложения по модулю 2.

При использовании \hat f в приложениях выходные биты у всегда инициализируются нулевой строкой. Тогда мы можем использовать \hat f для вычисления f:

\hat f(x,0)=(x,f(x))

Заметьте, \hat f не изменяет значений входных битов.

Например, если f : В_3 \to В_6 - функция, которая вычисляет квадрат 3-битного целого, то

\hat f (101, 000000) = (101, 011001).

В записи строки битов запятая между х и у ставится только для удобства чтения, х и у - это две части единой строки битов. Хотя нас интересуют вычисления, где у инициализируется нулевой строкой, функция \hat f определена для всех 9-битных аргументов, например,

\hat f (101,111000) = (101, 100001).

Чтобы вычислить значение последних 6-и битов, мы вначале вычисляем значение функции f (101) = 011001, а затем выполняем побитовое сложение по модулю 2 результата функции и начального состояния выходных битов:

111000 \oplus 011001 = 100001.

Утверждение. Пусть f- некоторое классическое вычисление В_n \to В_k,. Тогда функция f : В_n\to В_k, определенная как

\hat f(x,y)=(x,y \oplus f(x))

обратима. Обратной к \hat f функции является сама функция \hat f .

Доказательство. Необходимо доказать, что \hat f (\hat f (х, у)) = (х, у). В самом деле,

\hat f (\hat f(х, у)) = \hat f (х, у \oplus f (х)) = (х, у \oplus f (х) \oplus f (х))= (х, у)

В доказательстве использованы свойства побитового сложения по модулю 2- сложение строки с самой строкой дает нулевую строку, а сложение у с нулевой строкой сохраняет у.

Пришла пора напомнить, что квантовые вычисления представляют ортогональную линейную трансформацию на пространстве n-кубитов. Поэтому необходимо обратимую классическую функцию представить в виде линейной трансформации. Для определения трансформации необходимо задать значения базисных векторов, а базис в пространстве п-кубитов задается бинарными строками длины n.

С классической функцией f : В_n\to + В_k, мы связываем линейную трансформацию Т_f в пространстве (n + k)-кубитов, определенную как:

T_f(|z\rangle)=|\hat f(z) \rangle

Заметьте, Т_f - трансформация весьма специального вида - она преобразует каждый базисный вектор в другой базисный вектор. Типично для квантовых вычислений линейная трансформация преобразует базисный вектор в линейную комбинацию базисных векторов._

Трансформация Т_f обратима, поскольку \hat f обратима. Более того, Т_f^{-1}== Т_f.

Так как Т_f переставляет вектора в базисе, то образы этих векторов ортогональны друг другу и все имеют единичную длину, следовательно, Т_f -ортогональная линейная трансформация.

Например, для ранее рассмотренной функции f : В_3 \to В_6 трансформация Т_f - это линейная трансформация на 512-мерном пространстве 9-кубитов, которая может быть задана матрицей размера 512 х 512 (по понятным причинам выписывать эту матрицу мы не будем). Так как Т_f переставляет базисные вектора, то эта матрица в каждой строке и в каждом столбце имеет ровно одну единицу

Определение Т_f показывает возможность реализации классических вычислений на квантовом компьютере. Естественно, квантовый компьютер способен делать больше, чем просто моделировать классические вычисления. После всего, мы для достижения цели использовали только матрицы перестановок, а в нашем распоряжения имеются матрицы разного вида. Все же появляется одно новое свойство при выполнении классических вычислений на квантовом компьютере. Представьте себе, что мы в`качестве входа к Т_f используем состояние

\frac{1}{\sqrt {2^n}}\sum_{x=0}^{2^n-1}|x\rangle|0\rangle

В этой записи х - n-битное целое число, а 0 представляет строку из k нулей. Множитель нормирует вектор, делая его длину, равную единице.

Мы получим

T_f\left ( \frac{1}{\sqrt {2^n}}\sum_{x=0}^{2^n-1}|x\rangle|0\rangle \right )=\frac{1}{\sqrt (2^n} \sum_{x=0}^{2^n-1}|x\rangle |f(x) \rangle

Теперь новое состояние содержит информацию о всех значениях f (х) для всех возможных х. Для достижения подобного эффекта на классическом компьютере нам пришлось бы вычислять значения f (х) последовательно, и мы были бы вынуждены выполнять 2n итераций. Это было бы недопустимо долго даже для скромных значений n (после всего возраст вселенной оценивается менее чем 2^{70} миллисекунд).

Квантовый компьютер вычислит все за одну итерацию. Это произойдет, поскольку мы организовали вход как суперпозицию всех возможных классических входов (это предполагает запутывание). Тогда квантовое вычисление, будучи линейной трансформацией, получит выход как суперпозицию всех возможных значений f (х). Это показывает, что квантовые вычисления массивно параллельны.

Недостаток лишь в том, что из выходного состояния невозможно извлечь информацию о каждом значении f . Представьте себе, что мы хотим найти решение уравнения f (х) = 0 и для простоты будем полагать, что уравнение имеет единственное решение х = а. Тогда нам хотелось бы знать какой из термов выхода имеет значение |а\rangle |0\rangle. Но мы не можем получить значение " а" путем измерений. Если мы выполним измерение, то будем наблюдать значение (b\rangle f (b) \rangle для случайного входа b.

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

< Лекция 12 || Лекция 13 || Лекция 14 >