Дасгупты, Пападимитриу, Вазирани «Алгоритмы»
.pdfУпражнения |
311 |
(b) Покажите, как можно реализовать конъюнкцию (and) с помощью c-swap. Какие значения надо подать на три входа элемента c-swap, чтобы на одном из выходов получить конъюнкцию двух входов a ^ b?
(c) Как осуществить копирование выхода с помощью этих трёх элементов? (Это означает, что при входах a, 0 надо получить выходы a, a.)
(d) Покажите теперь, что для любой классической схемы C существует квантовая схема Q, использующая только элементы not и c-swap и эквивалентная C в следующем смысле: если C на входе x даёт выход y, то схема Q DRAFTдаёт выход jx, y, zi на входе jx, 0, 0i. (Значения битов z, возникающие в процессе вычисления, могут быть произвольными.)
(e) Постройте квантовую схему Q 1, которая на входе jx, y, zi даёт jx, 0, 0i.
(f) Наконец, покажите, как построить квантовую схему из элементов not, cnot и c-swap, которая на входе jx, 0, 0i давала бы выход jx, y, 0i.
10.8. В этой задаче мы доказываем, что если N является произведением двух простых чисел p и q, а число x –– случайно выбранный остаток по модулю N, для которого НОД(x, N) = 1, то с вероятностью как минимум 3=8 порядок r числа x по модулю N чётен и, кроме того, x r=2 является нетривиальным квадратным корнем из N.
(a) Пусть p –– нечётное простое число, а x –– случайно выбранный (равномерно) остаток по модулю p. Покажите, что порядок p будет чётным с вероятностью не менее 1=2. ((Подсказка: используйте малую теорему Ферма, см. раздел 1.3.))
(b) Используя китайскую теорему об остатках (упражнение 1.37), покажите, что с вероятностью как минимум 3=4 порядок случайного остатка x по модулю N будет чётным.
(c) Покажите, что если порядок этого остатка будет чётным, то (условная) вероятность события x r=2 1 не превосходит 1=2.
Исторические замечания и книги для дальнейшего чтения
DRAFTГлавы 1 и 2
Классический учебник по теории чисел:
G. H. Hardy, E. M. Wright. Introduction to the Theory of Numbers. Oxford University Press, 1980.
Алгоритм проверки простоты числа был открыт Робертом Соловеем и Фолькером Штрассеном в середине 1970-х годов, криптосистема RSA была придумана нескольким годами позднее. Подробности см. в книге
D. R. Stinson. Cryptography: Theory and Practice. Chapman and Hall, 2005. Учебник по вероятностным алгоритмам:
R. Motwani, P. Raghavan. Randomized Algorithms. Cambridge University
Press, 1995.
Универсальные семейства хеш-функций были предложены Ларри Картером (Larry Carter) и Марком Вегманом (Mark Wegman) в 1979 году. Алгоритм быстрого умножения матриц найден Фолькером Штрассеном (Volker Strassen) в 1969 году. Им же в соавторстве с Арнольдом Шёнхаге (Arnold Schonhage)¨
был предложен быстрый алгоритм умножения чисел: с помощью некоторой модификации быстрого преобразования Фурье этот алгоритм перемножает n-битовые числа за O(n log n log log n) битовых операций. Чуть более быстрый алгоритм был недавно получен Мартином Фюрером (Martin Furer)¨ .
Глава 3
Алгоритм поиска в глубину (вместе с многими приложениями) был предложен Джоном Хопкрофтом (John Hopcroft) и Робертом Тарьяном (Bob Tarjan) в 1973 году. Их вклад был отмечен премией Тьюринга –– одной из высших наград в области информатики. Двухчастный алгоритм выделения компонент сильной связности предложил Рао Косарайю (Rao Kosaraju).
Главы 4 и 5
Алгоритм Дейкстры был открыт в 1959 году Эдсгером Дейкстрой (Edsger D kstra, 1930––2002). Идею алгоритма нахождения минимального покрывающего дерева можно обнаружить в статье 1926 года, написанной чешским
История и литература |
313 |
математиком Отакаром Борувкой (Otakar Boruvka)˚ . Анализ структуры данных для непересекающихся множеств (с чуть более сильной оценкой, чем рассмотренная нами оценка log n) провёл Роберт Тарьян. Коды Хаффмана названы в честь Дэвида Хаффмана (David Huffman), который изобрёл их в 1952 году (будучи аспирантом).
Глава 7
Симплекс-метод был открыт в 1947 году Джорджем Данцигом (George Danzig, DRAFT1914––2005). Принцип минимакса для игр с нулевой суммой открыл в 1928 году Джон фон Нейман (John von Neumann), знаменитый математик и один из разработчиков первых компьютеров. О линейном программировании хорошо написано в книге
V. Chvatal´. Linear Programming. W. H. Freeman, 1983. Учебник по теории игр:
M. J. Osborne, A. Rubinstein. A course in game theory. MIT Press, 1994.
Главы 8 и 9
Понятие NP-полноты появилось в работе Стивена Кука (Steve Cook): в 1971 году он доказал, что задача выполнимости NP-полна. Годом позже Ричард Карп (Dick Karp) доказал NP-полноту двадцати трёх задач (в том числе всех перечисленных в главе 8), и важность этой концепции стала бесспорной (за эти работы Кук и Карп был награждены премией Тьюринга). Независимо от них к тому же понятию NP-полноты пришёл Леонид Анатольевич Левин, тогда ещё находившийся в СССР.
Классическая книга о NP-полных задачах:
M. R. Garey, D. S. Johnson. Computers and Intractability: A Guide to the Theory of NP-completeness. W. H. Freeman, 1979. (Перевод: М. Гэри, Д. Джонсон. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982.)
Учебник по теории сложности в целом:
C. H. Papadimitriou. Computational Complexity. Addison-Wesley, 1995.
Глава 10
Квантовый алгоритм разложения на множители был открыт в 1994 году Питером Шором (Peter Shor). Введение в квантовую механику, ориентированное на приложения к информатике, можно найти на сайте
http://www.cs.berkeley.edu/~vazirani/quantumphysics.html
Подробно о квантовых вычислениях см. в записях лекций по курсу «Кубиты, квантовая механика и компьютеры»:
http://www.cs.berkeley.edu/~vazirani/cs191.html
Указатель имён и терминов
DRAFT |
|
j i 291 |
ø схема 72 |
( ) 12 |
веб-граф 85, 96 |
( ) 12 |
вершинное покрытие 179, 239, 249 |
k-кластеризация 275 |
ø приближённый алгоритм 273 |
log 136 |
взаимно простые числа 26 |
mp3-файлы 139 |
Вильсона теорема 45 |
NP, класс 241 |
входящая степень вершины 98 |
NP-полная задача 244 |
выполнимость 232 |
O-символика 10, 11 |
ø 2-выполнимость 102, 233 |
P, класс 241 |
ø 3-выполнимость 233, 246, 248, |
аль-Хорезми 7 |
250 |
ø максимальная 262, 289 |
|
амортизационный анализ 136 |
ø перебор с возвратом 269, 287 |
арифметика сравнений 20–27 |
ø схемы 257 |
ø возведение в степень 21 |
ø хорновская 233 |
ø деление 21, 26 |
гамильтонов путь 236, 245, 263 |
ø мультипликативно обратное 26 |
|
ø сложение 21 |
гамильтонов цикл 235, 245, 253, |
ø умножение 21 |
256, 263 |
атом водорода 291 |
гармонический ряд 42 |
Беллмана––Форда алгоритм 117 |
Гаусс, Карл Фридрих 49, 72, 216 |
геометрическая прогрессия 13, 53 |
|
беспрефиксный код 141 |
гиперплоскость 209 |
бинарное отношение 103 |
глубина дерева 56 |
булева схема 217, 257 |
Горнера схема 80 |
булева формула 143 |
граф 84 |
ø выполняющий набор 145, 232 |
ø ациклический 91 |
ø импликация 143 |
ø вершина 84 |
ø конъюнктивная нормальная |
ø исток 92 |
форма 232 |
ø неориентированный 84 |
ø переменная 143 |
ø обращённый 94 |
быстрое преобразование Фурье |
ø ориентированный 84 |
61–74 |
ø плотный 85 |
ø алгоритм 71 |
ø разреженный 85 |
ø квантовая реализация 297 |
ø ребро 84 |
Указатель имён и терминов |
315 |
ø сток 92 |
измерение квантовой системы 292 |
граф компонент 93 |
ø частичное 294 |
Данциг, Джордж 186 |
интерполяция многочлена 63, 65 |
исходящая степень вершины 98 |
|
двоичный поиск 53 |
Каргера алгоритм 137 |
двойственность 188 |
|
ø кратчайший путь 228 |
Кармайкла числа 29, 32 |
ø максимальный поток 226 |
квантовая выборка из преобразо- |
двудольный граф 98 |
вания Фурье 299 |
DRAFT |
|
Дейкстры алгоритм 110 |
квантовая сцепленность 294 |
деление 19 |
квантовые схемы 301 |
дерево 128 |
квантовый компьютер 291 |
ø двоичное полностью заполнен- |
китайская теорема об остатках 46 |
ное 16 |
класс NP 241 |
ø корень 90 |
класс P 241 |
ø кратчайших путей 106 |
кластеризация 237, 275 |
ø строго двоичное 76 |
клика 239, 250 |
дизъюнкт 102 |
комплексные числа 64, 292 |
динамическое программирование |
ø корни из единицы 65 |
ø и «разделяй и властвуй» 159 |
компоненты двусвязности 103 |
ø подзадача 158 |
компоненты связности 88 |
ø часто используемые подзадачи |
компоненты сильной связности 93 |
164 |
конденсация графа 93 |
дополнительный код 22 |
корень дерева 90 |
допустимые решения задач ЛП 185 |
кратчайший путь 105 |
Дэвис, Мартин 259 |
ø в ориентированном ацикличе- |
задача коммивояжёра 172, 233 |
ском графе 119 |
ø дерево кратчайших путей 106 |
|
ø локальный поиск 280 |
ø между всеми парами вершин |
ø метод ветвей и границ 271 |
170 |
ø неприближаемость 278 |
ø надёжный 170 |
ø приближённый алгоритм 276 |
криптография |
задача линейного программирова- |
ø закрытый ключ 34 |
ния (ЛП) 184 |
ø открытый ключ 35, 36 |
задача поиска 230, 232 |
криптосистема RSA 36–38, 264 |
закон Мура 9, 231 |
Крускала алгоритм 130 |
закон распределения простых чи- |
кубит 292 |
сел 31 |
куча 110, 116 |
запоминание 168 |
ø двоичная 114, 116, 122 |
значение схемы 218 |
ø Фибоначчи 116 |
игры |
линеаризация графа 92 |
ø выплата 206 |
линейная программа |
ø принцип минимакса 209 |
ø двойственная 204 |
ø смешанная стратегия 206 |
ø матричная запись 194 |
ø чистая стратегия 207 |
ø невыполнимая 186 |
316 |
Указатель имён и терминов |
ø неограниченная 186 |
односторонняя ошибка 30 |
ø прямая 204 |
оптимизационная задача 184 |
ø стандартная форма 193 |
ориентированный ациклический |
логарифм 16 |
граф 91 |
локальный поиск 280 |
ø кратчайший путь 119, 156 |
максимальный путь 239, 262 |
ø максимальный путь 120 |
ориентированный граф 84 |
|
максимальный разрез графа 290 |
основание системы счисления 16 |
малая теорема Ферма 27 |
основная теорема о рекуррентных |
DRAFT |
|
Матиясевич, Юрий 259 |
соотношениях 52 |
матрица Вандермонда 67 |
остаточная сеть 197 |
матрица смежности 84 |
отношение эквивалентности 103 |
медиана 56 |
очередь с приоритетами 110, 113– |
метаграф 93 |
114, 116 |
метод ветвей и границ 270 |
ошибка приближения 272 |
метод внутренней точки 219 |
|
метод имитации отжига 285 |
Патнэм, Хилари 259 |
метод эллипсоидов 219 |
перебор с возвратом 268 |
минимальное покрывающее дере- |
поиск в глубину 85 |
во 127, 234 |
ø древесное ребро 87, 90 |
ø локальный поиск 288 |
ø обратное ребро 87, 90 |
многогранник допустимых реше- |
ø перекрёстное ребро 90 |
ний 188, 210 |
ø прямое ребро 90 |
мост 103 |
поиск в ширину 106 |
мультипликативная группа 30 |
покрытие множествами 146, 239 |
мультиразрез 289 |
полиномиальное время работы ал- |
Мур, Гордон 231 |
горитма 10 |
наибольшая возрастающая подпо- |
полный перебор 230 |
следовательность 157 |
полупространство 209 |
наибольшая общая подпоследова- |
порядок по модулю N 305 |
тельность 177 |
поток 193 |
наибольшая общая подстрока 177 |
потомок 90 |
наибольший общий делитель 23 |
предок 90 |
ø расширенный алгоритм Евкли- |
представитель большинства 78 |
да 25 |
преобразование Фурье быстрое |
нахождение k-го по величине эле- |
61–74 |
мента 57 |
приближённый алгоритм 271 |
независимое множество 238, 246, |
Прима алгоритм 138 |
249 |
принцип суперпозиции 292 |
ø в деревьях 174 |
проблема останова 260 |
неориентированный граф 84 |
проверка на простоту 15, 27–31 |
нетривиальный корень из едини- |
Пролог (язык программирования) |
цы 32, 47, 305 |
146 |
обработка сигналов 61 |
протокол с одноразовым ключом |
35 |
Указатель имён и терминов |
317 |
|
разбиение графа 283 |
скалярное произведение 69 |
|
«разделяй и властвуй» 49 |
сложение 15 |
|
разложение на множители 15, 28, |
случайные простые числа 31–33 |
|
244, 291, 305 |
сортировка |
|
разрез графа 129 |
ø быстрая 59, 78 |
|
ø (s, t)-разрез 197 |
ø нижняя оценка 55 |
|
ø и поток 199 |
ø слиянием без рекурсии 54–55 |
|
ø максимальный 290 |
сочетание |
|
ø минимальный 137, 236 |
ø максимальное по включению |
|
DRAFT |
||
ø сбалансированный 236 |
274 |
|
расстояние между вершинами 105 |
ø паросочетание 200, 225, 238 |
|
расстояние редактирования 159 |
ø совершенное 200 |
|
расширенный тезис Чёрча––Тью- |
ø трёхдольное 238, 239, 250, 251 |
|
ринга 309 |
список смежности 84 |
|
ребро |
стандарт AES 36 |
|
ø древесное 87, 90 |
степень вершины 98 |
|
ø неориентированное 84 |
сумма подмножества 240, 252 |
|
ø обратное 87, 90 |
суперпозиция 292 |
|
ø ориентированное 84 |
ø периодическая 299 |
|
ø отрицательного веса 114 |
теорема о двойственности 205 |
|
ø перекрёстное 90 |
||
ø прямое 90 |
теорема о максимальном потоке и |
|
рекуррентное соотношение 50, 52– |
минимальном разрезе 199 |
|
53 |
теория групп 30 |
|
ø основная теорема 52 |
теория чисел 35 |
|
рекурсия 159 |
тест Ферма 32 |
|
Робинсон, Джулия 259 |
топологическая сортировка 92 |
|
рюкзак 240 |
точка сочленения 103 |
|
ø без повторений 165 |
триангуляция 177 |
|
ø приближённый алгоритм 278 |
Тьюки, Джон 72 |
|
ø с повторениями 165 |
Тьюринг, Алан 259 |
|
ø унарный 240 |
умножение 17 |
|
свед´ение 192, 242 |
||
ø «разделяй и властвуй» 49–52 |
||
связность |
ø матриц 59, 60, 167 |
|
ø неориентированные графы 88 |
ø многочленов 61 |
|
ø ориентированные графы 93 |
управляемое отрицание 302 |
|
секвенирование 166 |
уравнения в нулях и единицах 237, |
|
симплекс-метод 186 |
251–253 |
|
ø вершина 209 |
Фейнман, Ричард 291 |
|
ø вырожденная вершина 210 |
||
ø сосед 209 |
Фибоначчи числа 8 |
|
система непересекающихся мно- |
Фибоначчи, Леонардо 8 |
|
жеств 131 |
Харди, Годфри Харолд 35 |
|
ø объединение по рангу 132 |
||
ø сжатие путей 135 |
Хаффмана кодирование 139 |
318 |
Указатель имён и терминов |
|
хеш-функция 38 |
Штрассен, Фолькер 60 |
|
ø для веб-поиска 96 |
|
|
ø универсальная 42 |
Эйлер, Леонард 101, 234 |
|
Холла теорема 228 |
||
эйлеров путь 102, 235 |
||
Хорна формула 143 |
||
эйлеров цикл 101 |
||
целочисленное линейное програм- |
экспоненциальное время работы |
|
мирование 190, 220, 237, 253 |
алгоритма 9, 10 |
|
цикл 91 |
элемент Адамара 302 |
|
DRAFT |
||
цикл отрицательного веса 118 |
элемент квантовой схемы 301 |
|
цифровая обработка сигналов 62 |
элементарная операция 10 |
|
цифровая подпись 47 |
энтропия 144, 151 |
|
Санджой Дасгупта |
|
|
Христос Пападимитриу |
|
|
Умеш Вазирани |
|
|
Алгоритмы |
|
|
Издательство Московского центра |
|
|
непрерывного математического образования |
|
|
119002, Москва, Большой Власьевский пер., 11. Тел. (499) 241-74-83. |
|
|
Подписано в печать 08.04.2014. Гарнитура Charter ITC. Формат 70 101/16. |
|
|
Бумага офсетная. Печать офсетная. Печ. л. 20. Тираж 1000. Заказ |
. |
|
Отпечатано в типографии ООО «ТДДС-СТОЛИЦА-8». |
|
|
Тел. 8 (495) 363-48-86. |
|
|
http://capitalpress.ru |
|
|
DRAFT |
|
Книги издательства МЦНМО можно приобрести в магазине |
|
|
|
«Математическая книга», Москва, Большой Власьевский пер., д. 11. |
|
Тел. (499) 241-72-85. E-mail: biblio@mccme.ru