Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Квантовые вычисления. Теория и практика. Учебник
.pdf
ГЛАВА 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
