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

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

.pdf
Скачиваний:
3
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
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