Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Квантовые вычисления. Теория и практика. Учебник
.pdf
4.2. Задача Дойча – Йожи
ся в черном ящике функцией значение. То есть это будет
не выход функции в чистом виде, а значение нижнего кубита, каким оно было перед поступлением на вход оракула,
преобразованное с помощью логического оператора XOR
со значением функции f(x).
Такой алгоритм будет определять, является ли функция
сбалансированной, всего лишь за один запуск оракула, но
при этом, если решать эту задачу классическими методами, нужно будет сделать экспоненциальное число запусков,
а если точнее, то в худшем случае их число будет таким:
1
nm
21
.
Если при таком количестве запусков выходное значение
функции будет все время одним и тем же, значит, функция
константная. Если же в процессе запусков мы обнаружим,
что будут встречаться оба выходных значения, и 0, и 1, то
функция является сбалансированной. В случае когда функция сбалансирована (мы, конечно, изначально этого не знаем), мы сможем это обнаружить и за меньшее, чем m, число, но в худшем случае придется запустить функцию m раз.
Если же функция константная, то утверждать, что она является таковой, мы сможем не раньше, чем через m попыток,
то есть после того, как проверим половину входных значений и еще одно. При этом очевидно, что входные значения
при проверке функции не должны повторяться.
Рассмотрим алгоритм Дойча – Йожи для двух входных
значений. Отметим на схеме временные точки:
123
|0²
H
H
|0²
|0²
H
HX
U
f
H
101

Глава 4. Задача Дойча
Во временной точке 1 мы получаем на каждом кубите суперпозицию:
1
Раскроем скобки для состояний двух верхних кубитов:
010101
22
.
1
И теперь распишем все выражение таким образом, чтобы
в дальнейшем было удобно применить к кубитам оракул:
1
Во временной точке 2, после того как оракул применен,
скобки, в которых содержится состояние нижнего кубита,
изменятся соответственно действию оператора XOR, который применится к состоянию нижнего кубита и тому значению, которое выдаст функция (для удобства распишем выражение в столбик):
Можно заметить, что если значение функции при определенных входных значениях равно 0, то в выражении с XOR
такое значение не влияет на результат применения данной
логической операции:
00 0 1 01 0 1 10 0 1 11 0 1 .
22
00 01 10 11 0 1
22
1
00 0 (00) 1 (00)
22
01 0 (01) 1 (01)ff
10 0 (10) 1 (10)ff
11 0 (11) 1 (11)ff .
ff
.
102
(, )0fx x ;
12
0(,)0fx x;
12

4.2. Задача Дойча – Йожи
1(,)1fx x
12
.
В таком случае внутри скобки, соответствующей состоянию нижнего кубита, ничего не изменится:
0 (,) 1 (,) 0 1fx x fx x.
12 12
Если же значение функции равно 1, то мы видим следующее:
(, )1fx x ;
12
0(,)1fx x;
1(,)0fx x.
12
12
И тогда внутри скобки, отвечающей за состояние нижнего кубита, произойдет смена знаков при состояниях 0 и 1, и
скобка примет вид
0 (,) 1 (,) 1 0 0 1fx x fx x
12 12
.
Мы установили, как поменяется выражение в зависимости от того, какое значение выдает функция при тех или
иных входящих значениях. И теперь, объединив эти два случая, мы можем записать состояние трехкубитной системы
таким образом:
1
22
(1) 01 0 1
(00)
f
(1) 00 0 1
(01)
f
(10)
f
(1) 10 0 1
(11)
f
(1) 11 0 1
.
Если выходное значение функции равно нулю, то тогда
0
мы получим (–1)
= 1, то есть порядок слагаемых в скобке,
соответствующей состоянию нижнего кубита, не поменяется. Если же выходное значение функции равно единице, то,
103

Глава 4. Задача Дойча
так как (–1)1 = –1, выражение в скобке поменяет порядок,
и мы можем вынести минус за скобку, вернув выражению
в скобках первоначальный вид.
Запишем выражение, соответствующее состоянию трехкубитной системы во временной точке 2, таким образом, что
состояния двух верхних кубитов окажутся в одной скобке,
а остояние нижнего кубита – в другой:
1
2
Здесь мы видим интересный эффект: несмотря на то, что
оракул должен менять состояние нижнего кубита, мы можем представить выражение таким образом, что состояние
нижнего кубита остается неизменным, а меняется только состояние двух верхних кубитов. Получается, что нижний кубит в дальнейшем можно не трогать и продолжать производить операции только с двумя верхними кубитами.
Можно заметить, что в скобке с состояниями двух верхних кубитов в случае константной функции возможны две
ситуации: выходное значение всегда равно 0, и тогда все слагаемые будут с плюсом, и вторая ситуация, когда выходное
значение функции всегда равно 1, при этом все слагаемые будут с минусом (его можно вынести за скобку, так что в скобке опять все слагаемые будут с плюсом). Таким образом, для
константных функций состояние в точке 2 будет таким:
(00) (01) (10) (11)
ffff
(1) 00 (1) 01 (1) 10 (1) 11
1
01.
2
11
.
Если воздействовать на два верхних кубита операторами
Адамара, то в точке 3 мы получим нули на каждом кубите:
111
104
HH
2
12
00 01 10 11 0 1
2
00 01 10 11 0 1 00 0 1 .
22
2

КОНТРОЛЬНЫЕ ВОПРОСЫ
После измерения двух верхних кубитов на них также будут нули, поэтому можно сказать, что в случае константной
функции ни на одном из этих кубитов не будет обнаружено
состояния 1. Для алгоритма с большим количеством кубитов
это также будет соблюдаться.
Для сбалансированных функций, так как в половине случаев она выдает 0, а в половине – состояние 1, выражение
в скобке с состояниями двух верхних кубитов будет иметь
половину слагаемых со знаком «плюс» и половину – со знаком «минус». Отсюда можно сделать вывод, что после воздействия операторов Адамара на эти кубиты в точке 3 на них
не будут получены только нулевые состояния. Этот вывод
можно распространить и на алгоритм Дойча – Йожи с большим количеством входящих кубитов.
Итак, мы выяснили, что за один запуск алгоритма Дойча – Йожи можно выяснить, является ли функция сбалансированной. Общее правило определения класса функции
таково: если входящие кубиты после измерения в конце алгоритма не все находятся в состоянии 0, тогда функция является сбалансированной. Если, напротив, все они находятся в состоянии 0, тогда функция является константной.
Контрольные вопросы
1. В каком классе функций, рассматриваемых в задаче
Дойча, значение функции не зависит от аргумента?
2. В каком случае можно утверждать, что функция явля-
ется сбалансированной?
3. Сколько раз нужно запустить вычисление значения
функции на классическом и на квантовом компьютере, чтобы определить класс функции?
4. Какое значение выдает алгоритм Дойча, если функция
сбалансирована?
5. Какие значения будут получены по завершении работы алгоритма Дойча – Йожи в том случае, если функция является: а) константной, б) сбалансированной?

ГЛАВА 5. АЛГОРИТМ САЙМОНА
Задача Саймона – один из примеров, когда квантовый
компьютер показывает свое преимущество перед классическим, выполняя задачи за гораздо меньшее количество шагов. Прежде всего разберемся с тем, какую задачу нужно
решить. Нам известно, что существует некоторая функция
f(х), принимающая на вход двоичную строку и возвращающая также двоичную строку. В процессе построения алгоритма нам неизвестно, какие операции производит со строкой функция f(х). Известно только, что f(a) = f(b) при том,
что a b и a = b s. Таким образом, все аргументы функции образуют пары a и b, при которых значение функции
будет равным и при этом уникальным, то есть такое значение не будет встречаться для других пар входных значений.
Нужно также учесть, что s не может состоять из одних только нулей. И это логично, так как в противном случае a и b
были бы всегда равны.
Рассмотрим простой пример. Допустим, нам известно,
что f(001) = f(110). Имея два аргумента, для которых функция выдает один и тот же ответ, легко найти s. Во-первых,
нам известно, что, применив операцию поразрядного исключающего ИЛИ, мы получим выражение, в котором один аргумент получается из другого:
001 110 s.
Отсюда легко найти s, приписав к обеим сторонам 110
с операцией исключающего ИЛИ:
110 001 110 110 s.
Легко убедиться, что операция исключающего ИЛИ,
примененная к тому же числу, даст строку, состоящую
из нулей:
110 001 000 s.
106

Глава 5. Алгоритм Саймона
Отсюда получаем значение s:
110 001 111s .
Итак, мы нашли s, задача Саймона решена. На этом
можно было бы завершить главу, но что, если двоичные
строки, поступающие в функцию f(х), имеют большую длину, например 10? При таком числе битов в строке мы имеем
10
вариантов битовых строк, то есть 1024 возможных вход-
2
ных значений. Найти среди них хотя бы одну пару значений, при которых функция f(x) дает один и тот же ответ,
не так-то просто – придется делать это перебором.
Конечно, если повезет, можно с одной попытки выбрать
две строки, которые образуют пару разных строк a и b, для
которых будет соблюдаться условие f(a) = f(b), но сколько
попыток нужно будет сделать в самом худшем случае?
Допустим, мы проверили функцию для половины всех
возможных аргументов, то есть для 512 двоичных строк, и
среди них не нашлось пары входящих значений, дающих
один и тот же ответ. Если мы проверим функцию для еще одной строки, то она обязательно окажется парной для одной
из проверенных до этого строк. Останется только вычислить
s по простой формуле, и задача решена:
sab.
Итак, худший случай – это случай, при котором мы будем
вынуждены проверить 513 строк. Это означает, что задача является экспоненциально сложной: для нее потребуется произ-
n–1
вести в худшем случае 2
+ 1 шагов, где n – число битов во
входной строке. Классическому компьютеру ничего другого
не остается, как идти по этому пути решения задачи: перебирать строки по одной, пока не найдутся подходящие пары значений. Что же может предложить квантовый компьютер?
Квантовый компьютер часто представляют как устрой-
ство, умеющее выполнять задачи параллельно, причем де-
107

Глава 5. Алгоритм Саймона
лая это для всех возможных входных значений. Такое объяснение не является точным в общем случае, но для алгоритма
Саймона, как мы увидим, действительно происходит что-то
подобное. Правда, алгоритм придется запустить не один раз.
К счастью, число запусков не экспоненциально большое,
а скорее линейное, за исключением чрезвычайно редких
случаев, когда при измерении итогового значения алгоритма
много раз получается одно и то же значение.
Рассмотрим простейший случай этого квантового алгоритма – решение задачи Саймона для строки, состоящей
из двух битов. Все возможные значения такой строки: 00,
01, 10, 11. Также рассмотрим и все возможные значения s.
Это значения 01, 10, 11. Значение 00 не включено, так как
при применении исключающего ИЛИ оно не изменяет битовую строку.
В случае когда s = 01, функции для определенных пар аргументов будут равны:
(00) (01)ff ;
(10) (1 1)ff
.
Даже не зная, какие именно действия производит со строкой функция f(x), мы можем сказать, что для входящих значений 00 или 01 она выдаст на выходе одно значение, а при
10 и 11 – другое.
Если же s = 10, то будет справедливо следующее:
(00) (10)ff ;
(0 1) (1 1)ff
.
Аналогично, при s = 11:
(00) (11)ff
(01) (10)ff
108
;
.

Глава 5. Алгоритм Саймона
Заранее s неизвестно, но для того, чтобы проследить, как
квантовый алгоритм работает изнутри, рассмотрим его работу при заранее известном s, равном 01.
Для того чтобы собрать схему, реализующую алгоритм
Саймона, нам потребуется в 2 раза больше кубитов, чем битов во входящей битовой строке. Сделано это для того, чтобы мы могли подать входящую строку на верхние n кубитов,
а ответ функции получить на нижних n кубитах. Выходное
значение функции мы будем принимать в виде, уже встречавшемся нам в задаче Дойча. Это будет не непосредственно
значение функции, а значение функции, воздействующее через исключающее ИЛИ на нижние n кубитов. Именно такой
выход будет давать оракул U
, реализующий функцию f(x).
f
Обозначим верхние кубиты как x, а нижние – как y.
В своем самом простом виде, когда на вход оракулу подается
только одна строка, состоящая из n символов, схема может
быть изображена таким образом:
n
xx
U
f
n
y
yf (x)
Для n = 2 схема, если изобразить ее более детально, выглядит так:
x
1
x
2
y
1
y
2
U
f
x
1
x
2
y
f (x1)
1
y
f (x2)
2
Но оракул в чистом виде, без вспомогательных операторов, сможет принимать на вход только одну строку за один
запуск. Для того чтобы можно было производить действия
109

Глава 5. Алгоритм Саймона
сразу со всеми возможными входящими строками, применим операторы Адамара к верхним кубитам до и после оракула. Измерять при этом, как ни странно (хотя, если посмотреть на алгоритм Дойча, это выглядит уже вполне обычно),
мы будем не нижние кубиты, а только верхние:
|0²
|0²
|0²
|0²
H
H
U
H
H
f
Все кубиты (входные и выходные вместе) в этой квантовой схеме изначально находятся в состоянии |0000. После
применения двухкубитного оператора Адамара к верхним
кубитам состояние примет вид
1
0000 0100 1000 1100
2
1
00 01 10 11 00 .
2
После действия оракула выходные значения функции запишутся на нижние кубиты, так что состояние будет выглядеть так:
1
00 (00) 01 (01) 10 (10) 11 (11)
ffff .
2
Здесь мы не применяли оператор XOR для состояния
нижних кубитов и полученных значений функции f(x), хотя
это действие было нами изначально предусмотрено как часть
работы оракула, выдающего на выходе (на нижних кубитах) значение y f(x). Но так как состояния нижних кубитов до действия оракула нулевые, на выходе из оракула мы
получим значение функции как оно есть (так как 00…0
110
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
