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