Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Квантовые вычисления. Теория и практика. Учебник
.pdf
Глава 5. Алгоритм Саймона
f(x) = f(x)), так что действия с XOR в данном случае можно и
не писать.
Далее, после повторного применения двухкубитного оператора Адамара к верхним кубитам, система будет находиться в таком состоянии:
1
00 01 10 11 (00)
4
00 01 10 11 (01)f
00 01 10 11 (10)f
00 01 10 11 (11)f .
Так как в оракуле содержится информация о том, что
s = 01, функция f(x) будет давать одинаковые ответы для
входящих двоичных строк 00 и 01, а также для 10 и 11. Значит, можно заменить f(01) на f(00), а f(11) – на f(10):
1
00 01 10 11 (00)
4
00 01 10 11 (00)f
f
f
00 01 10 11 (10)f
00 01 10 11 (10)f
1
00 10 (00) 00 10 (10)
2
После этого можно перегруппировать элементы в выражении и получить следующее:
1
00 (00) (10) 10 (00) (10)
ff ff .
2
Здесь видно, что при измерении два верхних кубита могут дать только два результата: 00 или 10. Отсюда можно
ff .
111

Глава 5. Алгоритм Саймона
легко найти s, зная следующий факт: в алгоритме Саймона
в результате измерения верхних (входящих) кубитов в результате получаются только те двоичные строки, которые
при скалярном умножении на неизвестную строку s дают результат 0.
Разберемся со скалярным произведением, применяемым
в алгоритме Саймона. Будем обозначать его точкой, а обычное умножение – знаком «» и на примере покажем, что
происходит при таком измерении. В качестве демонстрации
посчитаем скалярное произведение двух строк, не относящихся к нашему примеру: 110 и 101. Для такого действия
мы должны поразрядно умножить эти две двоичные строки,
а затем посчитать исключающее ИЛИ для всех результатов
такого умножения:
110 101 (1 1) (1 0) (0 1) 1 0 0 1.
Скалярное произведение двух двоичных строк всегда будет равно 0 либо 1. Некоторая строка будет присутствовать
в возможных значениях, получаемых после измерения верхних кубитов, только в том случае, если ее скалярное произведение на строку s равно нулю. Алгоритм Саймона нужно
запускать несколько раз, пока не будут получены n – 1 различных значений двоичной строки, где n – число входящих
кубитов. При этом строка, состоящая из нулей, не в счет, так
как ее скалярное произведение на любую возможную строку
s всегда равно нулю.
Итак, воспользуемся этим знанием и вернемся к примеру
с двухкубитными входными значениями. Из расчетов, приведенных выше, видно, что при скрытом значении s, равном
01, алгоритм может выдать при измерении только два значения: 00 и 10. К примеру, мы запустили алгоритм Саймона и
получили при измерении случайное значение 00. По приведенным до этого причинам это значение не дает информации
о том, какой может быть строка s. Запустим алгоритм еще
112

Глава 5. Алгоритм Саймона
раз. Допустим, при этом будет получено значение 10. Тогда
мы можем легко найти s, решив уравнение
10 0s .
Перепишем уравнение, обозначив элементы строки s как
и s2:
s
1
(1 ) (0 ) 0ss .
12
Правая скобка при любом s
равна нулю. Для того чтобы
2
общий результат был равен 0, левая скобка также должна
обнулиться. Это возможно только при s
становится ясно, что s
не может равняться нулю, так как
2
, равном 0. Тогда
1
строка s не может состоять исключительно из нулей. Следовательно, s
= 1 и s = 01. Такие расчеты можно произве-
2
сти для строки s большей длительности, решив n – 1 уравнений. Почему число уравнений не равно n, как в обычной
системе уравнений с n неизвестными? Это обусловлено тем,
что нам заранее известно, что s 0…0. Также нам известно,
что мы имеем дело со строками, состоящими только из нулей и единиц.
Это означает, что при максимальном везении (когда в результате измерения все время будут получаться уникальные
строки) достаточно запустить квантовый алгоритм n – 1 число раз. Однако, если некоторые строки при измерении будут повторяться, число запусков увеличится. Но есть большая вероятность того, что это число будет не очень сильно
превышать n. Вкупе с тем фактом, что сложность решения
системы уравнений является полиномиальной, получаем
значительное ускорение расчетов по сравнению с экспоненциально сложным классическим решением задачи Саймона.
Как вы увидели, алгоритм Саймона помимо квантового
алгоритма включает классическую часть, связанную с поиском числа s на основе полученных при запуске квантового алгоритма битовых строк. Такой подход, когда наиболее
113

Глава 5. Алгоритм Саймона
сложная часть задачи выполняется на квантовом компьютере, а элементарные расчеты производятся на классическом,
распространен в квантовых вычислениях, так как обеспечивает максимально эффективное использование преимуществ
квантового компьютера. При этом классический компьютер
выполняет ту часть работы, для которой квантовый компьютер использовать нецелесообразно.
Контрольные вопросы
1. Что будет получено в результате работы алгоритма
Саймона?
2. Почему скрытая строка не может состоять только
из нулей?
3. Какое количество шагов требуется классическому
компьютеру для решения задачи Саймона в лучшем и худшем случаях? За счет чего квантовый компьютер решает эту
задачу эффективнее?
4. Какое минимальное число раз требуется запустить
квантовую часть алгоритма Саймона?
5. Какие действия выполняют квантовый и классический компьютеры при работе алгоритма Саймона?

ГЛАВА 6. АЛГОРИТМ БЕРНШТЕЙНА –
ВАЗИРАНИ
В алгоритме Бернштейна – Вазирани заложена простая
идея: оракул реализует функцию f(x), которая принимает
на вход двоичную строку и выдает результат 0 или 1 в зависимости от того, каким будет результат скалярного произведения входящей строки (назовем ее x) и некоторого скрытого
значения a. Под скалярным произведением мы будем понимать то же самое, что и в алгоритме Саймона (в его классической части), обозначая скалярное произведение точкой,
а обычное произведение – крестиком:
( ) ( ) ( ) ... ( )
fx a x a x a x .
На вход оракула подается n кубитов регистра x, которые
представляют разряды входной строки, а также есть еще
один кубит (обозначим его как y), который на выходе из оракула будет находиться в состоянии y f(x):
11 22
n
xx
U
y
f
yf (x)
nn
При нахождении числа a с помощью классических вычислений сложность алгоритма составляет O(n). При таком
способе решения нужно подавать на вход функции f(x) степени двойки, получая на выходе разряд числа a, соответствующий разряду x
, содержащему единицу. Например,
i
если скрытая строка a равна 010, то процесс ее поразрядного
поиска выглядит так:
(100) 010 100 (0 1) (1 0) (0 0) 0af ax;
1
(010) 010 010 (0 0) (1 1) (0 0) 1af ax
2
(001) 010 001 (0 0) (1 0) (0 1) 0af ax
3
;
.
115

Глава 6. Алгоритм Бернштейна – Вазирани
Мы действительно получили значение a = 010, но при
этом совершили число действий, равное трем – по числу
разрядов в искомом скрытом значении a. Алгоритм Бернштейна – Вазирани позволяет найти число a за O(1), то есть
за один запуск оракула. Достигается это за счет того, что
на его вход подается суперпозиция всех возможных состояний входного регистра. Схема алгоритма реализуется таким
образом:
|0²
|0²
n
X
H
H
n
U
f
H
n
Эта схема выглядит как алгоритм Дойча – Йожи, но, как
можно догадаться, она отличается внутренним устройством
оракула U
.
f
123
|0²
|0²
H
H
H
U
f
H
|0²
HX
Рассмотрим пример работы такой схемы для n = 2 и a = 10.
Перед началом действия оракула система находится в состоянии
1
1
22
010101
22
00 01 10 11 0 1
.
После действия оракула (временная точка 2) система
переходит в такое состояние, при котором верхние кубиты
116

Глава 6. Алгоритм Бернштейна – Вазирани
остаются без изменений, а на нижнем кубите образуется суперпозиция состояний, соответствующих результатам работы оракула для каждого базисного состояния кубитов входного регистра:
1
22
22
22
1
22
22
000 001 010 011 101 100 111 110
22
1
00 0 1 01 0 1 10 1 0 11 1 0
1
00 0 1 01 0 1 10 0 1 11 0 1
00 0 (10 00) 1 (10 00)
22
1
1
1
01 0 (10 01) 1 (10 01)
10 0 (10 10) 1 (10 10)
11 0 (10 11) 1 (10 11)
1
Общий вид состояния системы после действия оракула
можно представить в таком виде:
00 01 10 11 0 1
22
1
.
.
010101
22
n
21
1
n
1
x
2
2
fx
()
(1) 0 1
0
x
117

Глава 6. Алгоритм Бернштейна – Вазирани
Далее во временной точке 3 после применения операторов Адамара к входному регистру получаем следующее состояние:
1
.
Здесь мы видим, что состояние верхних кубитов после
измерения будет равно скрытой строке a, которую мы и находили с помощью данного алгоритма. Для любого значения
скрытой строки расчеты будет аналогичными.
10 0 1
2
Контрольные вопросы
1. Какие действия выполняет оракул в задаче, решаемой
алгоритмом Бернштейна – Вазирани?
2. Опишите процесс поиска скрытой строки на классиче-
ском компьютере. Какую сложность имеет данный поиск?
3. Какова сложность алгоритма Бернштейна – Вазирани?
За счет чего достигается преимущество перед алгоритмом,
используемым классическим компьютером?
4. На какой алгоритм похож алгоритм Бернштейна – Вазирани? В чем отличие от данного алгоритма?
5. Что будет получено в результате измерения кубитов после того, как отработает алгоритм Бернштейна – Вазирани?

ГЛАВА 7. АЛГОРИТМ ГРОВЕРА
Предположим, что нам требуется найти некоторую запись
в таблице в базе данных. Записи в данной таблице не отсортированы, так что применить алгоритмы наподобие бинарного
поиска не получится. Если мы говорим о классических вычислениях, то здесь единственный способ найти искомую запись –
перебирать все записи подряд, пока не попадется нужная.
Сложность такого перебора равна O(N), где N – количество записей в таблице. В среднем потребуется просмотреть
половину таблицы, так как искомая запись может попасться
раньше. Здесь мы пока говорим о поиске единственной записи, но возможны также и случаи, когда нужно найти несколько записей.
Мы должны определить id (идентификатор) записи, то
есть некоторое уникальное число, с которым она соотнесена.
Этот id мы и будем искать среди других неотсортированных
идентификаторов. Квантовый алгоритм Гровера поможет
найти эту запись гораздо быстрее, так как его временная
сложность равна O(
жится в таблице, тем более выгодно будет применить алгоритм Гровера вместо классического поиска, так как ускорение будет квадратичным.
Так как мы кодируем идентификаторы с помощью базисных состояний системы кубитов, то при наличии n кубитов
мы можем закодировать N = 2
имея систему из 12 кубитов, можно получить 4096 идентификаторов, это будут числа от 0 до 4095 включительно.
Лов Кумар Гровер, автор этого алгоритма, придумал его
в 1996 году. Идея алгоритма состоит в том, что оракул находит нужную запись и помечает ее идентификатор, умножая
соответствующее ему базовое состояние на –1. Таким образом, в суперпозиции базисных состояний, каждое из которых соответствует идентификатору записи в таблице, по-
). Чем большее число записей содер-
n
идентификаторов. Например,
119

Глава 7. Алгоритм Гровера
является одно базисное состояние, которое имеет знак,
противоположный всем остальным идентификаторам. Алгоритму Гровера остается лишь сделать так, чтобы при измерении был получен нужный идентификатор. После этого задача считается выполненной.
Внутри алгоритма Гровера есть часть, которую нужно запустить определенное число раз, так как алгоритм является
итерационным. Для того чтобы знать, какое число итераций
нужно запустить, мы должны предварительно посчитать это
число до запуска алгоритма Гровера.
Простейший пример, на котором можно начать рассматривать работу алгоритма Гровера, – система их двух кубитов.
С помощью двух кубитов можно закодировать четыре идентификатора: 00, 01, 10, 11. В обычных условиях заранее неизвестно, который из них является соответствующим искомой
записи, но для разбора алгоритма представим, что мы ищем
запись с идентификатором 11. Мы не будем разбирать работу
оракула, который определяет, какая запись подходит под требуемые условия, так как это выходит за рамки собственно алгоритма Гровера (к тому же задача определения подходящей записи может быть в каждом случае индивидуальной и при этом
решаться аналогично классическому варианту), и создадим
максимально упрощенный оракул, который уже запрограммирован таким образом, что он выбирает тот идентификатор, который мы должны определить, демонстрируя работу алгоритма, и помечает этот идентификатор, умножая его на –1.
Используя суперпозицию, можно добиться того, что все
идентификаторы записей будут одновременно находиться
в квантовой схеме. Но обнаружить, какой из них помечен
минусом, сразу не удастся, так как при измерении будет получено любое из этих четырех состояний с одинаковой вероятностью, равной 0,25. Причем даже в том случае, когда мы
получим после измерения искомое состояние 11, для нас никоим образом не представится возможность определить, что
120
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
