Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Квантовые вычисления. Теория и практика. Учебник
.pdf
Глава 7. Алгоритм Гровера
это именно то состояние, которое соответствует искомому
идентификатору записи в таблице. На этом моменте в дело
вступает, собственно, сам алгоритм Гровера, позволяющий
с большой вероятностью после измерения получить именно
тот идентификатор, который нам нужен.
Для того чтобы собрать квантовую схему, реализующую
работу с четырьмя идентификаторами, мы будем использовать два кубита для записи самих идентификаторов и дополнительно еще один кубит, который будет играть вспомогательную роль:
1 2 3
|0²
|0²
H
H
H
H
X
X
H
X
H
X
|0²
H
X
X
X
На данной схеме два верхних кубита содержат все существующие в таблице идентификаторы, а нижний (вспомогательный) кубит помогает отметить искомый идентификатор.
В начале схемы верхние кубиты приводятся в состояние суперпозиции с помощью операторов Адамара. Третий кубит
сначала приводится в состояние 1, а затем также с помощью
оператора Адамара переводится в состояние суперпозиции.
Таким образом, во временной точке 1 получается такое состояние квантовой схемы:
1
1
22
1
00 0 1 01 0 1 10 0 1 11 0 1
22
010101
22
00 01 10 11 0 1
121
.

Глава 7. Алгоритм Гровера
Далее начинается первая часть самой первой итерации.
Наступает время отметить правильный ответ, сделав соответствующее состояние отличным по знаку от остальных состояний, составляющих суперпозицию. Это производится
с помощью вентиля Тоффоли, располагающегося между временными метками 1 и 2. Получаем состояние в точке 2:
1
22
00 0 1 01 0 1 10 0 1 11 0 1
1
.
Здесь роль оракула, который находит и помечает нужный идентификатор, выполняет вентиль Тоффоли – достаточно простой оператор, хотя понятно, что в реальности
оракул, определяющий подходящую под некоторые требуемые условия запись из таблицы, может (или даже скорее
должен) быть гораздо сложнее. Но так как данный оракул
не является ключевой частью алгоритма Гровера, то мы
ставим простейший (насколько это позволяет задача) оператор – в данном случае это оператор Тоффоли. Конечно,
он ничего не «знает» об искомой записи, а просто ставит
отметку на предварительно произвольно выбранном нами
идентификаторе. В данном примере мы заранее решили,
что это будет идентификатор 11. Оператор Тоффоли управляет третьим кубитом, применяя к нему оператор X в том
случае, когда оба верхних кубита находятся в состоянии 1.
При этом на третьем кубите возникает состояние, отличающееся от его предыдущего состояния наличием минуса
перед скобкой, но мы видим, что этот минус можно вынести за скобку и отнести к состоянию |11 двух верхних кубитов.
00 01 10 11 0 1
22
122

Глава 7. Алгоритм Гровера
Итак, метка для искомого идентификатора добавлена, и
пусть в данный момент она не поможет выделить искомый
идентификатор при измерении, но у нас есть вторая часть
итерации, которая может усилить амплитуду, а точнее,
увеличить модуль амплитуды при искомом id. Но для начала наглядно представим состояние кубитов, отвечающих
за кодирование идентификаторов. В данном случае это будут два верхних кубита. Мы представим их состояние с помощью единичной окружности, вертикальная ось которой
показывает амплитуду искомого состояния, а горизонтальная ось – амплитуду состояния суперпозиции всех состояний кроме искомого. Вектор c здесь соответствует такому
состоянию двухкубитной системы, когда все четыре базисных состояния имеют одинаковую амплитуду, равную 0,5
(это соответствует состоянию кубитов во временной точке 1)
(рис. 7.1).
1
a
c
b
T
01
Рис. 7.1. Начальное состояние кубитов
123

Глава 7. Алгоритм Гровера
Конечно, такой способ представления состояния системы кубитов, хотя и является наглядным, тем не менее имеет свои ограничения. В частности, на нем удобно отображать
только действительные амплитуды. Также, так как мы разбиваем базисные состояния на две условных группы: искомые состояния (в разбираемом примере – одно искомое
состояние, но может быть и несколько) и остальные, у состояний внутри группы амплитуды должны быть одинаковыми. Но в данном алгоритме эти условия соблюдаются, так
что такие ограничения графического отображения не будут
нам мешать. Этот график не только поможет нам понять, что
происходит при каждой итерации, но и даст возможность
увидеть, что для успешной работы алгоритма может потребоваться определенное количество таких итераций.
Найдем координаты вектора c. Для этого нужно иметь
в виду, что, рассматривая два кубита, мы имеем четыре базисных состояния, находящихся в суперпозиции. Амплитуда каждого вектора равна 0,5. Представим вектор c как комбинацию векторов a и b:
1
cba
00 01 10 11 cos sin
2
В этих преобразованиях используется тот факт, что вектор b, расположенный по горизонтали, представляет суперпозицию всех состояний (кроме искомого), взятых с равной
амплитудой, а вектор a – само искомое состояние. Отсюда
выразим синус и косинус угла , а затем найдем сам угол:
124
3
1
3
cos
2
1
3
;
2
1
cos 00 01 10 sin 11
.

Глава 7. Алгоритм Гровера
1
sin2
;
.
6
Итак, мы узнали, что координаты вектора c равны
3
0,5). Далее во временной точке 2, то есть после при-
;
(
2
менения оракула, искомому состоянию присваивается минус, поэтому вертикальная координата вектора c становится отрицательной, так что новый вектор c
получается
1b
из вектора c как отражение относительно горизонтальной оси
на угол . Для нашего примера координаты вектора c
3
(
–0,5) (рис. 7.2).
;
равны
1b
2
1
a
c
b
T
01
Рис. 7.2. Отражение вектора состояния
относительно горизонтальной оси
T
c
1b
125

Глава 7. Алгоритм Гровера
В названии вектора c1b цифра 1 нижнего индекса означает то, что это первая итерация, а буква b показывает,
что отражение идет относительно вектора b, находящегося
на горизонтальной оси. Также обратите внимание, что угол
между векторами c и c
(обозначим его как U
составляет 2. Общий вид оператора
1b
), помечающего минусом искомое со-
b
стояние a:
UI aa .
2
b
В нашем примере этот оператор будет равен
1000 0000 100 0
0100 0000 010 0
U
b
0010 0000 001 0
0001 0001 000 1
2
.
А теперь применим полученный оператор к состоянию
двух верхних кубитов во временной точке 1 и получим при
этом вектор c
:
1b
100 0 1 1
010 0 1 1
cUc
1
bb
001 0 1 1
000 1 1 1
11
22
.
Во второй части первой итерации также происходит отражение вектора текущего состояния, но теперь уже относительно вектора c (рис. 7.3).
Мы получаем новый вектор c
на угол 2 (при этом угол между векторами b и c
3). Как несложно догадаться, в названии вектора c
, отстоящий от вектора c
1c
составляет
1c
циф-
1c
ра 1 также означает то, что этот вектор получается на первой
итерации, а буква c в нижнем индексе означает, что угол c
1c
получен отражением относительно вектора c.
126

Глава 7. Алгоритм Гровера
1
c
1c
a
c
b
T
01
Рис. 7.3. Отражение относительно начального состояния
T
c
1b
Обозначим оператор, производящий отражение относительно вектора c, как U
22
UccI
c
:
c
1111 10 00
1111 01 00
1
1111 00 10
4
1111 00 01
1111
1111
1
2
11 11
111 1
.
Применим этот оператор к вектору c1b, получая вектор c1c:
1111 1 0
1111 1 0
11
cUc
11
ccb
22
11 11 1 0
111 1 1 1
.
127

Глава 7. Алгоритм Гровера
Вектор c1c – это итоговый вектор первой итерации,
так что можно уже вывести формулу для величины угла
между вектором b и итоговым вектором после n итераций:
(1 + 2n). Если число итераций n подобрано правильно, то
итоговый угол будет равен или максимально близок к 90 градусам, а это означает, что такой вектор совпадет или почти
совпадает с вектором a. Значит, при измерении кубитов,
кодирующих идентификаторы записей таблицы, с большой
вероятностью будет получено искомое состояние. Выведем
формулу для подсчета количества итераций:
(1 2 )2n
;
n
2
.
2
В том случае, если получено дробное число n, его необходимо округлить до ближайшего целого. В таком случае при
измерении будет небольшая вероятность получить неверный
ответ, так что нужно совершить несколько запусков и последующих измерений кубитов. Если при этом нужно посчитать вероятности получить правильный ответ, то это несложно сделать, зная координаты итогового вектора.
Найдем n для нашего примера:
26
n
1
.
3
Мы видим, что для получения искомого вектора в нашем
примере достаточно одной итерации, и так как n – целое число, полученный ответ будет точным, то есть итоговый угол
будет равен 90 градусам.
Мы рассмотрели случай, когда искомая запись является единственной. Если же таких записей несколько, то
128

КОНТРОЛЬНЫЕ ВОПРОСЫ
в качестве вектора a нужно взять суперпозицию базисных
векторов состояний, соответствующих искомым записям,
с равными амплитудами. При большом N угол становится малым, так что необходимое количество итераций будет
приблизительно равно
N
n
где K – количество искомых состояний.
Для случая с одним искомым состоянием эта формула
также справедлива.
,
4
K
Контрольные вопросы
1. Какую задачу решает алгоритм Гровера?
2. Какова сложность поиска записи в неотсортированной
таблице с использованием классического компьютера?
3. Каким образом оракул помечает искомые записи в таблице? Почему эту отметку нельзя обнаружить при измерении кубитов, если не пользоваться алгоритмом Гровера?
4. Если использовать для описания действий, происходящих при работе алгоритма Гровера, единичную окружность,
то что будут обозначать горизонтальная и вертикальная оси?
5. Как определить нужное количество итераций при работе алгоритма Гровера?
6. Какое количество итераций потребуется сделать, если
общее число записей равно четырем, а искомая запись одна?
7. Почему при работе алгоритма Гровера не всегда удается точно привести вектор состояния к вектору искомого состояния? Что в таких случаях рекомендуется делать?
8. Почему нужно знать количество искомых записей в таблице? Если искомых записей в таблице несколько, потребуется ли запускать алгоритм Гровера повторно?
9. Какие вспомогательные действия производит классический компьютер при работе алгоритма Гровера?

ГЛАВА 8. АЛГОРИТМ ШОРА
8.1. Асимметричное шифрование
Квантовые вычисления какое-то время ассоциировались
с возможностью взламывать зашифрованные сообщения.
Хотя это и не главное, чем могут быть полезны квантовые
алгоритмы, но именно благодаря освещению в прессе возможной угрозы для зашифрованной информации квантовые
вычисления стали известны широкой публике. И все это изза того, что алгоритм Шора предоставил возможность быстро
находить простые множители для больших чисел, на которых основаны способы шифрования, считавшиеся до того
времени надежными. И хотя для того, чтобы продемонстрировать полную мощь алгоритма, нужно такое количество
кубитов, которое вряд ли появится в ближайшее время, мы
можем уже сейчас ознакомиться с областью, в которой квантовые вычисления демонстрируют возможности, недоступные классическим компьютерам.
Для начала ознакомимся с асимметричным шифрованием – идеей, которая когда-то казалась удачной, но сейчас
уже не кажется таковой в свете развития квантовых вычислений. Введем условные наименования: назовем пользователем того участника, который создает ключи для шифрования, чтобы получать информацию от своего собеседника
в зашифрованном виде, а потом может расшифровывать ее.
Основной смысл такого шифрования состоит в том, что пользователь может поделиться со своим собеседником открытым (публичным) ключом, представляющим собой большое
число, с помощью которого собеседник может зашифровать
сообщение и отправить его пользователю.
Для того чтобы расшифровать сообщение, одного публичного ключа гипотетически может быть достаточно, но нужно разложить его на два простых числа, а это не такая уж и
130
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
