
Гэри, Джонсон - NP-Complectness
.pdfМ.Гэри, Д.Джонсон
ВЫЧИСЛИТЕЛЬНЫЕ МАШИНЫ И ТРУДНОРЕШАЕМЫЕ ЗАДАЧИ
М.: Мир, 1982
Монография американских ученых, посвященная вопросам сложности решения комбинаторных задач, возникающих в дискретной оптимизации, математическом программировании, алгебре, теории чисел, теории автоматов, математической логике, теории множеств, теории графов и т.п. Книга отличается строгим и систематическим изложением теории, в приложении содержится более 300 труднорешаемых задач из различных разделов математики.
Для математиков-прикладников, аспирантов и студентов университетов. Содержание
От редактора перевода |
5 |
Предисловие |
10 |
1. Вычислительные машины, сложность и труднорешаемые задачи |
13 |
1.1. Введение |
13 |
1.2. Задачи, алгоритмы и сложность |
16 |
1.3. Полиномиальные алгоритмы и труднорешаемые задачи |
19 |
1.4. Задачи, труднорешаемость которых доказуема |
25 |
1.5. NP-полные задачи |
26 |
1.6. О содержании книги |
28 |
2. Теория NP-полных задач |
31 |
2.1. Задачи распознавания, языки и кодирование |
31 |
2.2. Детерминированные машины Тьюринга и класс Р |
38 |
2.3. Недетерминированное вычисление и класс NP |
43 |
2.4. Взаимоотношения между классами Р и NP |
49 |
2.5. Полиномиальная сводимость и NP-полные задачи |
51 |
2.6. Теорема Кука |
56 |
3. Доказательство результатов об NP-полноте |
64 |
3.1. Шесть основных NP-полных задач |
64 |
3.1.1. 3-выполнимость |
67 |
3.1.2. Трехмерное сочетание |
69 |
3.1.3. Вершинное покрытие и Клика |
73 |
3.1.4. Гамильтонов цикл |
77 |
3.1.5. Разбиение |
81 |
3.2. Некоторые методы доказательства NP-полноты |
84 |
3.2.1. Сужение задачи |
85 |
3.2.2. Локальная замена |
88 |
3.2.3. Построение компонент |
96 |
3.3. Упражнения |
99 |
4. Применение теории NP-полноты для анализа задач |
102 |
4.1. Анализ подзадач |
105 |
4.2. Задачи с числовыми параметрами и сильная NP-полнота |
117 |
4.2.1. Некоторые дополнительные определения |
119 |
4.2.2. Доказательство результатов о сильной NP-полноте |
123 |
4.3. Временная сложность как функция натуральных параметров |
136 |
5. NP-трудные задачи |
139 |
5.1. Сводимость по Тьюрингу и NP-трудные задачи |
139 |
5.2. Историческая справка |
150 |
6. Подходы к решению NP-полных задач |
154 |
6.1. Оценки погрешности приближенных алгоритмов |
156 |
6.2. Применение теории NP-полноты к отысканию приближенных |
174 |
решений |
|
6.3 Оценки погрешности и поведение алгоритмов «на практике» |
189 |
7. За пределами класса NP-полных задач |
192 |
7.1. Структура класса NP |
192 |
7.2. Полиномиальная иерархия |
201 |
7.3. Сложность задач перечисления |
208 |
7.4. Полнота с полиномиально ограниченной памятью |
212 |
7.5. Логарифмическая память |
220 |
7.6. Доказательства труднорешаемости и взаимоотношения между Р и NP |
225 |
А. Приложение. Список NP-полных задач |
232 |
А1. Теория графов |
235 |
А1.1. Покрытие и разбиение |
235 |
А1.2. Подграфы и надграфы |
242 |
А1.3. Упорядочение вершин |
249 |
А1.4 Морфизмы и изоморфизмы |
252 |
А1.5. Разное |
254 |
А2. Построение сетей |
258 |
А2.1. Остовные деревья |
258 |
А2.2. Разрезы и связность |
263 |
А2.3. Задачи о маршрутах |
266 |
А2.4. Потоковые задачи |
270 |
А2.5. Разное |
275 |
A3. Множества и разбиения |
279 |
А3.1. Покрытие, представители к расщепление |
279 |
А3.2. Задачи о множествах с взвешенными элементами |
282 |
А4. Хранение и поиск данных |
286 |
А4.1. Хранение данных |
286 |
А4.2. Сжатие и представление информации |
289 |
А4.3. Задачи о базах данных |
295 |
А5. Задачи теории расписаний |
300 |
А5.1. Задачи составления расписания в случае одного |
300 |
А5.2. Многопроцессорные расписания для параллельных процессоров |
304 |
А5.3. Многопроцессорные расписания конвейерного типа |
308 |
А5.4. Разные задачи |
311 |
А6. Математическое программирование |
313 |
А7. Алгебра и теория чисел |
318 |
А7.1. Задачи о делимости |
318 |
А7.2. Разрешимость уравнений |
321 |
А7.3. Разное |
323 |
А8. Игры и головоломки |
325 |
А9. Логика |
332 |
А9.1. Пропозициональная логика |
332 |
А9.2. Разное |
336 |
А10. Теория автоматов и языков |
339 |
А10.1. Теория автоматов |
339 |
А10.2. Формальные языки |
343 |
A11. Оптимизация программ |
349 |
А11.1 Генерация кода программы |
349 |
А11.2. Программы и схемы |
364 |
А12. Разное |
369 |
А13. Открытые задачи |
367 |
Литература |
374 |
Предметный указатель |
411 |
Предметный указатель |
|
Алгоритм 17 |
Вполне полиномиальная |
- «в наилучший из подходящих» (best |
приближенная схема 173 |
fit) 159 |
Временная сложность алгоритма |
- «в первый подходящий» (first fit) |
(time complexity function) 18, |
157 |
137 |
- - - - в порядке убывания 160 |
- - НДМТ-программы 48 |
- «жадный» (greedy) 171 |
Входная длина задачи (input length) |
- недетерминированный 44 |
18 |
- полиномиальный 19 |
Выигрыш форсированный (forced |
- приближенный 156 |
win) 215 |
- псевдополиномиальный (pseudo |
ВЫПОЛНИМОСТЬ (ВЫП) 56—57 |
polynomial time algorithm) 121 |
выполнимость, вып, 3, 3, 65, 67 |
- эвристический 155 |
ВЫЧИСЛЕНИЕ СЕМЕЙСТВА |
- экспоненциальный 19 |
(ensemble computation) 88 |
Алфавит 18, 33 |
ГАМИЛЬТОНОВ ПУТЬ (Path) 81 |
Асимптотическая погрешность |
- ЦИКЛ (ГЦ) (circuit) 53, 66, 77 |
алгоритма (asymptotic |
Граф ориентированный (directed) 81 |
performance ratio) 162 |
- планарный 113 |
Бандерснечи 13 |
ДЕЛИМОСТЬ НА ЧЕТЫРЕ 41 |
БУЛЕВСКИЕ ФОРМУЛЫ С |
Дерево 135 |
КВАНТОРАМИ (БФК) 213 |
ДЕРЕВО ШТЕЙНЕРА 100 |
Быстродействие ЭВМ 19 |
Детерминированная одноленточная |
Величина решения (solution value) |
машина Тьюринга, или ДМТ 38 |
156 |
Дизъюнкция (clause) 56 |
ВЕРШИННОЕ ПОКРЫТИЕ |
Длина решения задачи (solution |
(ВП)(vertex cover) 65, 74 |
length) 25 |
ДОМИНИРУЮЩЕЕ МНОЖЕСТВО
100
ДМТ [см. Детерминированная одноленточная машина Тьюринга] 38
-программа 38—40
-- линейно ограниченная (linear bounded) 218
-- полиномиальная 42 ДОСТРОЙКА МАРШРУТА
КОММИВОЯЖЕРА (ДМК) (extension) 147
ЕДИНИЧНАЯ РЕЗОЛЮЦИЯ (unit resolution) 223
Задача (problem) 16
-выполнимости (satisfiability) 27
-индивидуальная (instance) 16
-комбинаторная оптимизационная
156
-массовая 16
-перечисления (enumeration) 209
-распознавания свойств (decision problem) 27, 31—32
-с числовыми параметрами (number problem) 122
-труднорешаемая (intractable) 21
Игры комбинаторные (combinatorial games) 215
Иерархия полиномиальная 203 ИЗОМОРФИЗМ ГРАФОВ 194
-ПОДГРАФУ 32, 43, 86
-ПОДЛЕСУ (subforest) 135
Изоморфность языков полиномиальная 200
Индивидуальная задача (instance) 16, 139
Класс 220 DLOG-SPACE 220 EXP-SPACE 228 EXP-TIME 228 KP 210
КР-полных задач (Р-complete) 210 NEXP-SPACE 229
NEXP-T 1me, 228
NLOQ-SPACE 225
NP 27, 28, 45, 48 NP-полных задач (NPC) 45 NPI 193
NP-SPACE 219 Р 42
P-SPACE 213
P-SPACE — полных задач 23
КЛИКА 65, 242 - МАКСИМАЛЬНОГО РАЗМЕРА
(maximum size clique) 205 КОММИВОЯЖЕР (KM) 32, 43—44
Композиция графов 181 КРАТЧАЙШИЙ ПУТЬ МЕЖДУ
ДВУМЯ ВЕРШИНАМИ 112 Кука теорема 57
Лес (forest) 134
ЛИНЕЙНАЯ ДЕЛИМОСТЬ 200 ЛИНЕЙНОЕ
ПРОГРАММИРОВАНИЕ 194 Логарифмическая память 220
Локальная замена (local replacement) 88
Максимальная полиномиально разрешимая подзадача 108
МАКСИМАЛЬНЫЙ РАЗРЕЗ
(maximum cut) 113
Машина недетерминированная 26, 46 - Тьюринга 24, 46
Минимальная NP-полная подзадача
108
Минимальное остовное дерево
(spanning tree) 165
МИНИМАЛЬНОЕ ПОКРЫТИЕ 86 - ЭКВИВАЛЕНТНОЕ ВЫРАЖЕНИЕ
201
МИНИМАЛЬНЫЙ НАБОР ТЕСТОВ
95 - ЭКВИВАЛЕНТНЫЙ
ОРИЕНТИРОВАННЫЙ ГРАФ
87, 112
МИНИМУМ СУММЫ КВАДРАТОВ
99
МНОЖЕСТВО ВЕРШИН, |
Паросочетание (matching) 167, 169 |
РАЗРЕЗАЮЩИХ КОНТУРЫ |
- максимальное 169 |
(feedback vertex set) 100 |
Переборная задача (search problem) |
- ПРЕДСТАВИТЕЛЕЙ (hitting set) 86 |
139 |
Мультираскраска графа 182 |
Погрешность алгоритма (performance |
Набор значений истинности (truth |
ratio) 162 |
assignment) 56 |
Подзадача (subproblem) 105 |
НАИБОЛЬШИЙ ОБЩИЙ ПОДГРАФ |
Покрытие множества (cover) 86 |
99 |
Полиномиальная ДМТ-программа 42 |
НДМТ-программа 46 |
- ОМТ-программа 144 |
Недетерминированная машина 26 |
- память (space) 212 |
- одноленточная машина Тьюринга, |
- схема 173 |
или НДМТ 46 |
- сводимость (polynomial |
- оракульная машина Тьюринга, или |
transformation) 51—52 |
НОМТ 202 |
Полиномиально эквивалентны |
НЕЗАВИСИМОЕ МНОЖЕСТВО 74 |
(polynomialy related) 35 |
Неразрешимая задача (undecidable) |
Построение компоненты (component |
25 |
design) 84, 96 |
НЕУНИВЕРСАЛЬНОСТЬ |
Правильно построенное слово |
РЕГУЛЯРНОГО ВЫРАЖЕНИЯ |
(structured string) 36 |
217 |
Принимаемое программой слово |
НЕЭКВИВАЛЕНТНОСТЬ |
(accepted) 39 |
РЕГУЛЯРНОГО |
ПРИНЯТИЕ С ЛИНЕЙНОЙ |
ВЫРАЖЕНИЯ, НЕ |
ПАМЯТЬЮ 218 |
СОДЕРЖАЩЕГО ЗВЕЗДОЧЕК |
Программа ДМТ (DTM) 38 |
100 |
- НДМТ (NDTM) 46 |
- ЦЕЛОЧИСЛЕННЫХ |
Псевдополиномиальная сводимость |
ВЫРАЖЕНИЙ 207 |
(pseudo-polynomial |
НУМЕРАЦИЯ ГРАФА ПО ГРУНДИ |
transformation) 130 |
101 |
Псевдополиномиальный алгоритм |
ОБОБЩЕННЫЙ ГЕКС (generalized |
121 |
Hex) 216 |
РАЗБИЕНИЕ (partition) 66, 81 |
ОМТ-программа 144 |
- НА ГАМИЛЬТОНОВЫ |
Оптимальное решение задачи 156 |
ПОДГРАФЫ 99 |
Оракульная машина Тьюринга, или |
- - ПУТИ ДЛИНЫ 2, 100 |
ОМТ (oracle) 141 |
- - ТРЕУГОЛЬНИКИ 90—91 |
Остовное дерево (spanning tree) 86, |
разбиение, 3, 124 |
165, 258 |
разбиение, 4, 125 |
ОСТОВНОЕ ДЕРЕВО |
Размер задачи (size) 17—18 |
ОГРАНИЧЕННОЙ СТЕПЕНИ |
РАЗМЕР МИНИМАЛЬНОГО |
86 |
ЭКВИВАЛЕНТНОГО |
Отношение Rм (relation) 198 |
ВЫРАЖЕНИЯ 205 |
Параметр 16 |
|
- числовой 122 |
|
РАСКРАШИВАЕМОСТЬ ГРАФА В |
Степень вершины графа (degree) 110 |
colorability, цвета, 3, 3, 101, 110, |
Сужение задачи (restriction) 85 |
182 |
Схема кодирования (encoding |
РАСПИСАНИЕ ДЛЯ |
scheme) 18 |
МУЛЬТИПРОЦЕССОРНОЙ |
- приближенная 173 |
СИСТЕМЫ 87 |
- - «разумная» 24, 34, 36 |
- - ОБРАТНОГО ДЕРЕВА |
Теория графов 110 |
ЗАДАНИЙ 112 |
ТОЧНОЕ ПОКРЫТИЕ множествами, |
- - ПРЯМОГО ДЕРЕВА ЗАДАНИЙ |
тп, 3, 3, 73 |
112 |
- - множествами, 4, 100 |
- С ОТНОШЕНИЕМ |
ТРАНЗИТИВНАЯ РЕДУКЦИЯ 112 |
ПРЕДШЕСТВОВАНИЯ |
ТРЕХМЕРНОЕ СОЧЕТАНИЕ ( с, 3, |
(precedence constrained |
65, 70 |
scheduling) 107 |
Угадывающее устройство (guessine |
Распознавание языка (recognition) |
device) 47 |
РАСЩЕПЛЕНИЕ МНОЖЕСТВА |
Упаковка в контейнеры 157 |
(splitting) 100 |
УПАКОВКА МНОЖЕСТВ 99 |
РЕБЕРНОЕ ПОКРЫТИЕ (edge cover) |
УПОРЯДОЧЕНИЕ ВНУТРИ |
112 |
ИНТЕРВАЛОВ (sequencing |
Регулярное выражение 217 |
within intervals) 93 |
Релятивизация 230 |
- С МИНИМАЛЬНЫМ |
Решение задачи алгоритмом |
ЗАПАЗДЫВАНИЕМ (tardiness) |
(solution) 17 |
97 |
РЮКЗАК (knapsack) 87, 171 |
Управляющее устройство ДМТ (finite |
САМЫЙ ДЛИННЫЙ ПУТЬ 99, 112 |
state control) 38 |
Сводимость консервативная |
Функция, конструируемая по |
(parsimonious transformation) |
времени (time constructible) 227 |
210 |
- - по памяти (space constructible) 227 |
- по Куку 150 |
Цепочка символов (string) 18 |
- полиномиальная 51—52 |
Цикл простой в графе (simple circuit) |
- по Тьюрингу 141 |
53 |
- псевдополиномиальная 130 |
Числовой параметр (number) 122 |
- log-space 222 |
Читающая/пишущая головка ДМТ 38 |
- Y(v-reducibility) 198 |
Эвристический алгоритм 155 |
Словарное отношение (string relation) |
Эйлеров граф 166 |
140 |
- маршрут (tour) 166 |
Слово алфавита (string) 33 |
Эквивалентность полиномиальная 35 |
- - — правильно построенное |
Язык в алфавите 33—34 |
(structured) 36 |
- контекстно-зависимый (context- |
Сложность алгоритма временная |
sensitive) 220 |
(time complexity function) 18, |
- распознаваемый программой 39, 47 |
137 |
- рекурсивный 193 |
СОСТАВНЫЕ ЧИСЛА (composite |
- log-space-полный 223 |
numbers) 194 |
- NP-полный 55 |
- \gamma-полный 199 DLB-автомат детерминированный
линейно ограниченный 220 GA-алгоритм 171
К-е ПО ПОРЯДКУ ПОДМНОЖЕСТВО (K-th largest set subset) 145
КР-полная задача (#Р-complete) 210 Length [I] 35, 119
Max [I] 119—120
ММ-алгоритм 167—168
MST-алгоритм 166
NLB-автомат (недетерминированный линейно ограниченный) 220
NN-алгоритм 163—164 NP-легкая задача (easy) 149 NP-полная задача 27, 45, 48, 51 - - в сильном смысле 123 NP-трудная задача (hard) 145 NP-эквивалентная задача 149 P-space-полная задача 213


