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

Дасгупты, Пападимитриу, Вазирани «Алгоритмы»

.pdf
Скачиваний:
176
Добавлен:
13.02.2015
Размер:
1.8 Mб
Скачать

Упражнения

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