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

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

.pdf
Скачиваний:
3
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
ГЛАВА 3. СЛОЖНОСТЬ КВАНТОВЫХ
АЛГОРИТМОВ
3.1. Сложность алгоритмов
Один из основных плюсов применения квантовых вы­числений в том, что квантовые компьютеры значительно ускоряют решение некоторых важных задач, которые клас­сические компьютеры могут выполнять за неразумно боль­шое время. Говоря о классических компьютерах, мы будем говорить о компьютерах, основанных на идее машины Тью­ринга, а это все современные компьютеры за исключением квантовых.
Если классический компьютер может решить одну из таких задач за несколько тысяч лет, то можно сказать, что эта задача является разрешимой, но само время выпол­нения делает это решение бессмысленным, так как к тому времени, когда задача будет решена, это решение уже не бу­дет нужным.
В качестве примера можно привести задачу коммивояже­ра. Это одна из самых известных задач комбинаторной опти­мизации. В этой задаче нужно составить наиболее короткий маршрут, который проходит через определенные города, расстояние между которыми заранее известно. При этом нужно вернуться в исходный город.
Представьте, что вам нужно решить задачу коммивоя­жера для четырех городов. Это решается достаточно просто, даже без использования компьютеров. Проблема в том, что если нужно решить такую задачу для немного большего ко­личества городов, то число возможных вариантов стреми­тельно растет, а значит, растет и время, которое требуется на решение этой задачи. Например, если решать эту задачу для 15 городов, то нужно перебрать 43 589 145 600 вариан­тов маршрута.
81
Глава 3. Сложность квантовых алгоритмов
Если же число городов равно 66 и больше, то даже с ис­пользованием самых быстрых компьютеров решение займет миллиарды лет. Существуют более быстрые алгоритмы ре­шения по сравнению с полным перебором всех вариантов, но все они неточные, то есть находят один из самых коротких маршрутов, но не гарантируют, что он самый короткий.
Есть надежда, что когда-нибудь можно будет решить эту задачу с помощью квантового компьютера для большого числа городов, но уже сейчас есть задачи, которые решаются кванто­выми компьютерами с принципиально более быстрой скоро­стью, чем если бы это делали классические компьютеры.
Говоря о скорости решения, мы говорим даже не столько о времени, сколько о количестве шагов в решении. Кванто­вые компьютеры для многих задач предоставляют решения с принципиально меньшим числом шагов. Здесь мы должны ввести такое понятие, как асимптотическая сложность алго­ритма. Под асимптотикой понимается характер изменения функции при стремлении ее аргумента к определенной точке.
Для оценки сложности решения задачи будем использо­вать O большое – это обозначение, по которому можно при­близительно понять, насколько быстро определенный ал­горитм решает задачу. Оно также может характеризовать и саму задачу – насколько она быстро решается с помощью наиболее эффективного алгоритма.
В скобках мы записываем функцию, зависящую от вход­ных данных, которые подаются в алгоритм. Можно эти входные данные представить как битовую строку, таким об­разом, сложность алгоритма показывает зависимость числа шагов решения от размера этой битовой строки. Под шагом здесь подразумевается определенное действие, которое про­изводится для решения задачи. Насколько мелким долж­но быть действие, чтобы считать его шагом, неважно, так как здесь важно примерное количество шагов с точностью до константного множителя.
82
3.1. Сложность алгоритмов
Например, мы изучили какую-ту задачу и установили, что число шагов ее решения растет с такой зависимостью:
() 7 4 9 5,fn n n n
32
где n – размер входных данных.
Для представления O большого оставим только слагае­мое с наибольшей степенью и отбросим множитель при этом
3
слагаемом. Получаем, что O(f(n)) равно O(n
). Итак, мы уста­новили асимптотическую сложность этого решения задачи. Конечно, бывают и более сложные f(n), где есть не только степенные функции, но и, например, логарифмические, и тогда O большое находится немного сложнее, и позже мы увидим такие случаи. Вообще, когда говорят про сложность алгоритма, это означает, что с ростом числа n время работы алгоритма будет возрастать не быстрее, чем функция f(n), умноженная на некоторую константу.
Теперь можно посмотреть, какие задачи и с какой слож­ностью решаются с помощью классических компьютеров. Одна из простейших задач – определение четности числа, за­писанного в двоичном представлении. Эта задача решается за фиксированное число шагов, не зависящее от размера чис­ла – достаточно посмотреть на младший разряд числа. Если он равен 0, то число четное, а если 1, то нечетное. Сложность здесь равна O(1). Другими словами, можно сказать, что вре­мя решения константное. Здесь нас радует тот факт, что чис­ло может состоять хоть из миллиона разрядов, задача реша­ется всегда за одно и то же время.
Пример задачи, в которой время решения будет линей­но зависеть от входных данных – поиск числа в неотсорти­рованном массиве. Если массив чисел не отсортирован, то для поиска определенного числа в этом массиве нужно будет пройтись по массиву. Чем больше массив, тем дольше длится поиск. Здесь O большое можно обозначить как O(n) или даже O(n/2), если не сокращать множитель 1/2, так как в среднем
83
Глава 3. Сложность квантовых алгоритмов
нужно пройти половину массива для поиска нужного числа. Если же известно, что числа отсортированы, то задача ста­новится проще, так как можно применить бинарный поиск. O большое в этом случае равно O(log n), что значительно бы­стрее, чем O(n).
Есть также задача поиска наименьшего или наибольшего значения в неотсортированном массиве. Для ее решения тре­буется по понятным причинам пройти весь массив, так что ее сложность равна O(n). Если же говорить про такую рас­пространенную в компьютерных науках задачу, как сорти­ровка, то для нее существует большое количество алгорит­мов, при этом временная сложность для не очень быстрых алгоритмов (например, для сортировки пузырьком или со-
2
ртировки вставками) равна O(n
), а для быстрых алгоритмов
сложность может составлять O(n log n). Очевидно, что n log n
2
при положительном целом числе n – это меньше чем n
, но больше, чем n. Почему нельзя отсортировать массив за n ша­гов? Потому что для сортировки по массиву или по его ча­стям обычно нужно пройтись не один раз, а несколько. При­чем чем больше массив, тем больше проходов по нему нужно сделать.
Еще один пример полиномиальной сложности – умноже-
ние двух матриц размером n на n. Здесь сложность «школь-
3
ного» алгоритма равна O(n временных алгоритмов – между O(n
), а у более практичных и со-
2
) и O(n3). Все задачи, которые решаются за полиномиальное время, то есть те за­дачи, для которых известны алгоритмы с O большим, кото-
k
рое не превышает O(n
), объединяют в класс P. Это, условно говоря, хорошие задачи, которые решаются классическими компьютерами за разумное (то есть полиномиальное) время.
Если же говорить о задаче коммивояжера, то есть не­сколько формулировок этой задачи, но для всех них не су­ществует (или по крайней мере неизвестно) точное полино­миальное решение, таким образом, эта задача к классу P
84
3.2. Классы P и
NP
не относится. О более подробной классификации алгоритмов и о том, какое в этой классификации место занимают кван­товые алгоритмы, мы поговорим позже.
3.2. Классы P и
NP
Мы вкратце рассмотрели задачи, которые решаются за полиномиальное время на классическом компьютере. Мы обозначили их как класс P. Теперь рассмотрим другой класс задач. Это задачи, с которыми не все так хорошо: они не ре­шаются за полиномиальное время либо для них пока неиз­вестны полиномиальные алгоритмы. В общем смысле это задачи, насчет которых мы не можем точно сказать, что они решаются с помощью алгоритмов, имеющих полиномиаль­ную временную сложность.
Итак, мы вводим новый класс задач – это класс NP, что расшифровывается как non-deterministic polynomial (в пере­воде с английского – недетерминировано полиномиальные). У этих задач нет или пока нет хорошего, то есть полиноми­ального, алгоритма. Но про задачи из класса NP известно, что по крайней мере уже после того, как задача решена, можно проверить правильность ответа, причем можно сде­лать это за полиномиальное время.
Вообще проблема определения того, равны ли между со­бой классы P и NP, является нерешенной задачей теории алгоритмов. Это одна из семи задач тысячелетия, и за ее ре­шение Математический институт Клэя назначил денежную премию. Тем не менее большинство ученых считают, что эти классы не равны. Если бы все-таки классы P и NP совпада­ли, то многие задачи, которые сейчас считаются сложными, можно было бы решать гораздо быстрее.
Для лучшего понимания, что собой представляет класс NP, посмотрим на конкретные задачи. Рассмотрим один из вариантов задачи коммивояжера. Можно сказать, что это упрощенный вариант задачи, когда нужно найти не самый
85
Глава 3. Сложность квантовых алгоритмов
короткий маршрут, а определить, что существует маршрут, длина которого меньше определенного значения. Тогда даже при простом переборе, возможно, не пришлось бы переби­рать все варианты, так как подходящий под заданную длину путь мог бы найтись гораздо раньше. Конечно, при меньшем везении пришлось бы перебрать больше вариантов, а в самом худшем случае нужно было бы перебрать опять-таки все ва­рианты полностью, так как маршрут меньше заданного зна­чения, если он вообще существует, может оказаться самым последним в списке вариантов. То есть такая задача, хотя она и более простая, все-таки не является задачей с полино­миальной сложностью. Это задача по-прежнему не входит в класс P. Зато проверить, является ли правильным решение такой задачи, можно с полиномиальной, а точнее, с линей­ной временной сложностью. Для проверки решения доста­точно просто еще раз посчитать сумму расстояний между точками маршрута, который претендует на то, чтобы подхо­дить под заданное условие. Итак, такой вариант задачи ком­мивояжера можно считать задачей из класса NP, так как ее полиномиальное решение неизвестно, при том, что проверка решения производится за полиномиальное время.
Среди множества задач класса NP можно выделить осо­бый круг задач, называемых NP-полными задачами. NP- полные задачи – это задачи из класса NP, к которым можно свести другие задачи из класса NP. Если найти полиноми­альное решение для NP-полной задачи, то и другие задачи из класса NP можно решать с полиномиальной скоростью.
Наиболее сложными считаются именно NP-полные за­дачи, а также задачи, не входящие в класс NP, но к кото­рым при этом также можно свести любые задачи класса NP. Все это вместе называется NP-трудными задачами. К NP- трудным задачам, при этом не входящим в класс NP, мож­но отнести задачу коммивояжера в таком ее варианте, когда требуется найти самый короткий маршрут. Помимо того,
86
3.3. Классы
BPP
и
BQP
что для этой задачи неизвестно наличие полиномиального решения, так еще и само решение невозможно проверить за полиномиальное время.
Допустим кто-то решил эту задачу. Например, нашел са­мый короткий маршрут для 15 городов. Для точного решения придется перебрать такое количество вариантов маршрута: (n – 1)!/2, то есть 14!/2, что равняется числу 43 589 145 600. Если говорить о том, почему в формуле не 15!, то это из-за того, что в задаче коммивояжера обычно задается один ис­ходный город, из которого нужно будет начинать каждый маршрут, а не выбирать начальный город из имеющихся 15 городов. А поделить на 2 требуется из-за того, что среди маршрутов будут пары маршрутов, проходящие через одну и ту же последовательность городов, просто это будут последо­вательности, противоположные по направлению. Так что дли­ны маршрутов в этих парах будут совпадать.
Для того чтобы проверить, действительно ли найденный маршрут является самым коротким, нужно будет опять­таки совершить полный перебор вариантов. То есть невоз­можно провести проверку за полиномиальное время. Как мы увидели из формулы количества вариантов маршрутов, рост числа вариантов является факториальным, а такой рост быстрее не только полиномиального, но даже и экспо­ненциального.
3.3. Классы
BPP
и
BQP
Мы поговорим об еще одном классе задач, возникающем в том случае, если мы применяем такой компьютер, который выдает правильное решение не со 100%-й вероятностью, но с вероятностью, превышающей 50 %. Вообще, чаще всего применяют вероятность 2/3, то есть около 67 %. Из-за того, что решение получается частично случайным, приходится запускать алгоритм несколько раз. Этот класс называется
87
Глава 3. Сложность квантовых алгоритмов
BPP, что расшифровывается как bounded-error, probabilistic, polynomial. В переводе с английского это означает, что речь
идет о вычислениях с ограниченной ошибкой, вероятност­ных, полиномиальных.
Аналог такого класса задач для квантовых компьюте­ров – класс BQP (bounded-error, quantum, polynomial). Здесь вместо указания на то, что вычисления являются вероят­ностными, указывают на то, что входящие в этот класс за­дачи решаются с помощью квантовых вычислений. Вероят­ностные вычисления, конечно, могут помогать в решении некоторых задач, но квантовые вычисления имеют сильные преимущества, так как используют суперпозицию и кван­товую запутанность – эффекты, отсутствующие в классиче­ских вычислениях, в том числе и в их вероятностном вари­анте.
Теперь обсудим, какое место в схеме классов задач за­нимает класс BQP. Этот класс включает задачи класса P, что неудивительно, так как задачи, которые решаются на классическом компьютере, могут, в принципе, решаться и на квантовом. Все-таки кубит может выполнять также и роль классического бита. При этом может оказаться, что за­дача решается примерно за такое же количество шагов, как и при решении на классическом компьютере, даже если шаг на квантовом компьютере будет дольше выполняться. Поэто­му и говорят, что не все задачи, решаемые на классическом компьютере, стоит решать на квантовом. Таким образом, за­дачи класса P нас здесь интересуют в меньшей степени.
Но также известно, что некоторые задачи класса NP мо­гут решаться на квантовом компьютере за полиномиаль­ное время. Пока неизвестно, все ли задачи класса NP мож­но было бы решать на квантовом компьютере быстрее, чем на классическом, но уже есть большое количество эффектив­ных квантовых алгоритмов, ускоряющих решение как неко­торых задач класса P, так и часть задач класса NP.
88
3.3. Классы
BPP
и
BQP
Одним из примеров задач, решаемых за меньшее коли­чество шагов, является задача Дойча, а также задача Дой­ча – Йожи, которая является ее подобием, но для большего размера входных данных. В задаче Дойча с помощью кван­тового компьютера достигается ускорение в 2 раза. Здесь речь идет не о том, что время решения становится в 2 раза меньше. Это касается количества шагов, именно их количе­ство уменьшается. Такое ускорение не очень впечатляет, тем более что один шаг квантового решения может быть боль­ше шага классического решения. Но в задаче Дойча – Йожи становится понятно, что ускорение по количеству шагов не кратное, а экспоненциальное.
Контрольные вопросы
1. Приведите пример задачи, которую можно решить
за константное время.
2. Как различается сложность поиска в отсортированном
и неотсортированном массиве?
3. Почему в общем случае нельзя отсортировать массив
за линейное время?
4. Можно ли умножать матрицы быстрее, чем за O(n3)?
5. Как можно охарактеризовать задачи, входящие
в класс P?
6. Почему проблема того, совпадают ли классы P и NP, является важной? Какое мнение по поводу равенства P и NP преобладает среди современных исследователей?
7. К какому классу (или классам) относится задача ком­мивояжера, если рассмотреть ее различные формулировки? Насколько по сложности отличается задача нахождения кратчайшего пути от задачи нахождения пути, не превыша­ющего определенное расстояние? Что можно сказать о слож­ности проверки правильности решений этих задач?
8. Какие характеристики имеют задачи, входящие в класс NP-полных задач?
89
Глава 3. Сложность квантовых алгоритмов
9. Все ли NP-трудные задачи входят в класс NP?
10. К каким задачам из класса NP можно свести другие задачи, принадлежащие этому классу?
11. Почему не все задачи, решаемые на классическом компьютере, стоит решать на квантовом?
12. Задачи каких классов можно решать на квантовом компьютере быстрее, чем на классическом?
13. Охарактеризуйте класс BPP.
14. Задачи каких классов относятся также и к классу BQP?
15. Каково преимущество квантового компьютера при решении задачи Дойча?
16. Насколько быстрее решается задача Дойча – Йожи на квантовом компьютере по сравнению с классическим компьютером?