Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Квантовые вычисления. Теория и практика. Учебник

.pdf
Скачиваний:
3
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
ГЛАВА 4. ЗАДАЧА ДОЙЧА
4.1. Постановка и решение задачи Дойча
Дэвид Дойч является не только автором научно-попу­лярных книг «Структура реальности» и «Начало бесконеч­ности», но и автором квантового алгоритма, названного его именем. В научной литературе часто говорят о задаче Дойча, это и есть та задача, которую решает алгоритм Дойча. Имен­но этот алгоритм является наиболее простым из квантовых алгоритмов, но уже на его примере можно увидеть, что кван­товый компьютер может решать задачи принципиально другим способом, если сравнивать его с классическим ком­пьютером. Причем для того чтобы показать это отличие, до­статочно всего двух кубитов.
Итак, в чем заключается задача Дойча? Это задача опре­деления класса имеющейся функции. Эта функция доста­точно проста – она принимает на вход 0 или 1 и возвращает также 0 или 1. Всего есть четыре возможных варианта этой функции:
1) ( ) 0fx ;
2) ( ) 1fx  ;
3) ( )fx x
4) ( )fx x .
Первые два варианта называются константными, так как в первом случае независимо от входящего значения функция всегда возвращает 0, а во втором – всегда возвращает 1.
В третьем и четвертом вариантах значение функции за­висит от аргумента. В третьем варианте выходное значение всегда равно входному, а в четвертом – всегда не равно (чер­та над x в данном случае означает отрицание), то есть пода-
;
91
Глава 4. Задача Дойча
вая на вход четвертой функции число 0, на выходе мы полу­чим 1, а если на вход подать 1, то такая функция возвратит
0. Эти два варианта мы можем объединить в класс сбаланси­рованных функций. Константные функции мы можем также называть несбалансированными.
Для того чтобы определить, к какому классу относится функция, можно сначала подать в нее аргумент 0, получить результат, а затем еще раз запустить с аргументом 1. Этот способ подходит для классического компьютера, так как за один запуск функции определить класс функции с помощью классического компьютера не получится.
Но то, что невозможно для обычных компьютеров, до­ступно квантовому компьютеру, который может за один за­пуск определить, является ли функция сбалансированной. Происходит это за счет квантовых эффектов – суперпозиции и запутанности. В частности, суперпозиция позволяет отпра­вить в функцию сразу два входящих значения – 0 и 1.
В процессе квантовых вычислений, пока не произведе­но измерение, информация не теряется. В схеме алгоритма Дойча на верхний кубит подается входное значение, а ниж­ний кубит отвечает за выходное значение функции. С помо­щью такого распределения обязанностей входное значение на кубите не будет стерто при записи на него результата вы­числений. За работу неизвестной функции будет отвечать оракул U
– унитарный оператор, реализующий функцию
f
f(x). Если подать на его вход суперпозицию состояний, то он
произведет операции над всеми возможными входными зна­чениями.
Для начала рассмотрим схему, которая способна обрабо­тать только одно входное значение за один запуск:
92
xx
U
f
yyf (x)
4.1. Постановка и решение задачи Дойча
Эта схема дает на выходе значение функции, но не в чи­стом виде, а в виде y f(x), то есть применяет операцию XOR к изначальному значению нижнего («выходного») кубита и значению функции. Таким образом, оракул не стирает ин­формацию, которая была на нижнем кубите, а добавляет к ней результат работы функции, оставляя после этого оста­ток от деления на 2 (что равнозначно применению операто­ра Исключающее ИЛИ). Причем если изначальное значение нижнего кубита было 0, то результат на нижнем кубите после применения оракула всегда будет равен f(x). Оракул являет­ся черным ящиком, то есть нам неизвестно, как конкретно он устроен (по большому счету в этой задаче нас не интересует внутреннее устройство оракула, хотя примеры его реализа­ции мы рассмотрим в конце этого объяснения), а также до за­пуска алгоритма Дойча неизвестно, какой класс функции ора­кул реализует – сбалансированный или константный.
А теперь самое время перейти от простой схемы к схеме, использующей квантовые эффекты. Для этого приведем ку­биты в состояние суперпозиции перед действием оракула, применив для этих целей оператор Адамара. Обратите вни­мание, что верхний кубит до действия оператора Адамара находится в состоянии 0, а нижний кубит перед действием оператора Адамара мы приводим в состояние 1. Общая схема алгоритма Дойча выглядит так:
|0²
|0²
H
HX
H
U
f
Обратите внимание, что после применения оракула к верхнему кубиту q
еще раз применяется оператор Адама-
1
ра, а потом производится измерение этого кубита. Казалось бы, измерять нужно нижний кубит q
, но если рассмотреть
2
работу алгоритма с кубитами, находящимися в суперпози­ции, то будет видно, что самая интересная информация на-
93
Глава 4. Задача Дойча
ходится именно на верхнем кубите, и именно по его состоя­нию можно однозначно определить, является ли функция сбалансированной. В случае если функция сбалансирован­ная, измерение верхнего кубита выдаст состояние 1. В про­тивном случае, если функция является константной, после измерения будет получено состояние 0. Рассмотрим алго­ритм подробнее. Для этого добавим на квантовую схему вре­менные отрезки:
123
|0²
|0²
На первой временной отметке система находится в состо­янии
HHX 

122

После применения оракула (во временной отметке 2) си­стема кубитов переходит в состояние
U
  
1
UUUU
 

ffff
2
1
00(0)01(0)10(1)11(1)

2
Это общее состояние для всех функций – как констант­ных, так и сбалансированных. Остановимся на этом состоя­нии, чтобы подробнее его разобрать применительно ко всем четырем функциям. Для константной функции f(x) = 0 это состояние будет таким:
ffff
H
U
HX
1
00 0 1 0 1
2
1
00 01 10 11 .

2
1
00 01 10 11

f
2
00 01 10 11
H
f

.
94
4.1. Постановка и решение задачи Дойча
11
  
Для другой константной функции, f(x) = 1, состояние бу­дет таким же, за исключением знака «минус», который мы вынесем за общую скобку:
11
 
22
Запомним, что для двух константных функций, несмотря на то что они выдают разный результат, разница состояний во временной точке 2 будет только в общем знаке за скобкой, то есть в общей фазе, которая для физического состояния си­стемы не имеет значения, так как физические системы, от­личающиеся только общей фазой, имеют одинаковое кванто­вое состояние.
Теперь разберемся со сбалансированными функциями. Для функции f(x) = x состояние в точке 2 имеет вид
  .
Для другой сбалансированной функции, f(x) = x , со­стояние будет отличаться только знаком за скобкой, то есть с точностью до общей фазы будет таким же, как и при преды­дущей сбалансированной функции:
00 01 10 11 0 1 0 1

22
01 00 11 10 00 01 10 11

1
0101
 .

2
11
00 01 10 11 0 1 0 1

22
.
11
 
Нетрудно заметить, что для всех четырех функций состо­яние в точке 2 различается только в верхнем кубите. Можно представить все эти состояния с помощью выражения
01 00 10 11 00 01 10 11

22
1
0101
 .

2
95
Глава 4. Задача Дойча
1
  
2
Теперь можно перейти во временную точку 3, после при­менения оператора Адамара к верхнему кубиту. Если в ора­куле была реализована константная функция f(x) = 0, то со­стояние будет таким:
11
H  
1
2
Для функции f(x) = 1 получаем состояние
11
H     .
1
2
Рассмотрим состояние в точке 3 для сбалансированных функций. Для функции f(x) = x будет получено такое состо­яние:
H    .
1
Если же была применена функция f(x) = будет таким:
H  
1
После состояния, полученного во временной точке 3, следует измерение верхнего кубита. Как видно из состоя­ний, полученных непосредственно перед измерением, для верхнего кубита в случае константных функций однозначно будет получено состояние 0, а для сбалансированных функ­ций – состояние 1. Таким образом, мы видим преимущество одного из самых простых квантовых алгоритмов перед клас­сическими вычислениями: для определения класса функции мы запустили алгоритм Дойча всего один раз, хотя в случае классических вычислений функцию пришлось бы проверять
(0) (1)
ff
(1) 0 (1) 1 0 1

0101 001
 
0101 001
 
11
0101 101
 
2
11
0101 101
 
2

2
2
2
2
.
.
x , то состояние
.
96
4.1. Постановка и решение задачи Дойча
дважды – сначала для входного состояния, равного 0, а за­тем для состояния, равного 1.
Термин «черный ящик» подразумевает, что мы не знаем, каким образом реализован оракул, имея возможность толь­ко узнавать, что он дает на выходе при тех или иных вход­ных данных. Несмотря на это, мы можем сделать свой ора­кул (с учебными или еще с какими-либо целями) с помощью квантовых вентилей, причем мы можем реализовать доволь­но простым способом любую из четырех функций.
Функция f(x) = 0 самая простая – ее можно реализовать, даже не используя квантовых вентилей. Состояния кубитов при воздействии на них такого оракула не меняются, поэто­му его можно изобразить как две прямые линии:
Для оракула, соответствующего функции f(x) = 1, до­статочно добавить квантовый вентиль X на нижний кубит, поэтому здесь хотя и произойдут изменения в квантовой си­стеме, но они не будут связаны с верхним кубитом. В этом и будет сходство с предыдущим оракулом, также реализую­щим константную функцию:
X
Для реализации оракула, соответствующего сбаланси­рованным функциям, нам потребуются условные операто­ры. В случае функции f(x) = x достаточно одного оператора CNOT:
Оракул, соответствующий другой сбалансированной функции f(x) =
x , устроен немного сложнее:
97
Глава 4. Задача Дойча
X X
Знание того, как можно создать оракул для реализации константной или сбалансированной функции, может, в част­ности, пригодиться в том случае, когда в учебных или те­стовых целях требуется самостоятельно создать квантовую схему для задачи Дойча. Хотя эта задача кажется немного искусственной и не имеющей практического значения, тем не менее на ее примере можно убедиться в преимуществах квантовых вычислений перед классическими. Эта задача может быть интересна для исследователей искусственного интеллекта как хотя и учебный, но тем не менее интересный пример выявления функциональных зависимостей, содер­жащихся в данных.
Также важно понимать, что те преимущества, которые показывает задача Дойча, становятся возможными благо­даря квантовым эффектам – суперпозиции и квантовой за­путанности. Причем, если в алгоритме Дойча, работающем с константной функцией, мы видим лишь использование су­перпозиции, то в том случае, когда оракул содержит сбалан­сированную функцию, к эффекту суперпозиции добавляется также и квантовая запутанность.
4.2. Задача Дойча – Йожи
В задаче Дойча – Йожи, которую также иногда называют задачей Дойча – Джозы или Дойча – Джоза (зависит от про­чтения оригинальной фамилии соавтора Дэвида Дойча) нам требуется установить, является ли функция сбалансирован­ной или константной. То есть общий смысл здесь такой же, как в задаче Дойча, с тем уточнением, что количество вход­ных значений больше одного. И при этом выходное значение всегда только одно.
98
4.2. Задача ДойчаЙожи
На вход, как и в задаче Дойча, также поступают нули и единицы, то есть можно представить, что это некоторая би­товая строка, а на выходе либо ноль, либо единица. Если при любом входном значении функция выдает всегда ноль, либо при любом входном значении функция всегда выдает еди­ницу, то функция константная. Если же в половине случаев при определенных входных данных функция выдает ноль, а в половине случаев – единицу, то это сбалансированная функция.
Представим, что у нас есть два входных значения: x
и x2.
1
Легко понять, что константных функций может быть толь­ко две (причем это справедливо при любом количестве вход­ных значений). Описание работы таких функций предельно простое: первая константная функция выдает 0 при любых входных значениях, а другая константная функция выдает 1 также при любых входных значениях:
(, )0fxx ;
const 1 2
1
(, )1fxx .
const 1 2
2
Со сбалансированными функциями все сложнее, особенно если входных значений много. Но мы пока продолжим раз­бирать функцию с двумя входными значениями. Как пример такой сбалансированной функции можно привести довольно простую функцию, выход которой зависит от четности чис­ла. Если число четное, то она выдает 1, а если нечетное, то
0. Здесь мы будем считать, что за четность отвечает крайний справа разряд входящей битовой строки, то есть x
(, )fx x x
12 2
.
:
2
Еще один пример сбалансированной функции – функ­ция, которая до определенного входного значения (не вклю­чая это значение) выдает ноль, а начиная с него – единицу. В случае с двумя входными значениями таким порогом бу­дет битовая строка «10»:
99
Глава 4. Задача Дойча
0, ;
xt
(, )
fx x
12
 
1, ,
xt
где x – битовая строка; t – пороговое значение для битовой
строки.
Приведем еще один пример сбалансированной функции при двух входных значениях: когда функция выдает 0, если входное значение при делении на 4 дает остаток 0 или 3. А если входное значение при делении на 4 выдает остаток 1 или 2, то функция выдает единицу:
(, )
fx x
12
x
1, m o d 4 {1; 2 } ,
x
 
0, m od 4 {0; 3};
где mod – функция, отвечающая за операцию нахождения
остатка от деления на определенное число.
Теперь посмотрим на схему алгоритма Дойча – Йожи:
|0²
|0²
n
X
H
H
n
U
f
H
n
Здесь мы видим букву n с короткой чертой, проходящей через кубит. Это означает, что используется число кубитов, равное n. В приведенных до этого примерах с x
и x2 число n
1
было равно двум.
Похожее сокращение используется в обозначении опе­ратора Адамара. Вверху к нему приписан знак тензорного произведения и буква n. Это значит, что нужно тензорно ум­ножить n-е количество операторов Адамара. И получим в ре­зультате оператор Адамара, действующий на n-е число куби­тов, то есть каждый из этих кубитов таким оператором будет приведен в состояние суперпозиции.
И так же, как и в задаче Дойча, самый нижний кубит будет выдавать после оракула преобразованное находящей-
100