Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[269]

рата и Шамос [160], а также Эдельсбруннер [60].

Хотя сама геометрия имеет тысячелетнюю историю, алгоритмические задачи в геометрии стали рассматривать лишь недавно. Как отмечают Препарата и Шамос, впервые сложностью геометрических задач заинтересовался Лемуан (Е. Lemoine) в 1902 году. Изучая построения при помощи циркуля и линейки, он выделил пять элементарных действий (установить одну из ножек циркуля в данную точку, установить одну из ножек циркуля на данной прямой, нарисовать круг, приложить край линейки так, чтобы он проходил через данную точку, провести прямую). Лемуан интересовался минимальным числом действий, требуемых для решения данной задачи на построение.

Алгоритм раздела 35.2, выясняющий, есть ли в множестве отрезков пересекающиеся, разработали Шамос и Хой [176].

Грэхем (Grahm) описывает «просмотр Грэхема» в [91]. Алгоритм с «заворачиванием» принадлежит Джарвису [112]. Используя так называемые разрешающие деревья в качестве вычислительной модели, Яо доказал [205] нижнюю оценку fi(ralnra) на время работы любого алгоритма, находящего выпуклую оболочку.

Если интересоваться временем работы как функцией от числа всех точек (га) и от числа точек выпуклой оболочки (h), наиболее быстрым является метод «стрижки и поиска» (prune-and-search method), который придумали Киркпатрик и Зайдель [120]; требующий времени О (nigh). Этот алгоритм является асимптотически оптимальным.

Описанный нами алгоритм поиска пары ближайших точек (время работы O(ralnra)) предложил Шамос (см. Препарата и Шамос [160]). Препарата и Шамос показали, что этот алгоритм асимптотически оптимален в модели разрешающих деревьев.


NP-полнота

Все рассмотренные нами ранее алгоритмы были полиномиальными (работали за полиномиальное время). Это значит, что время работы алгоритма на входе длины п составляло не более 0(пк) для некоторой константы к (не зависящей от длины входа). Естественно поинтересоваться, всякая ли задача может быть решена за полиномиальное время.

Ответ на этот вопрос сугубо отрицательный - некоторые задачи вообще не могут быть решены никаким алгоритмом. Классический пример такой задачи - «проблема остановки» (выяснить, останавливается ли данная программа на данном входе). Кроме того, существуют задачи, для которых существует решающий их алгоритм, но любой такой алгоритм работает долго - время его работы не есть 0(пк) ни для какого фиксированного числа к.

Если мы хотим провести пусть грубую, но формальную границу между «практическими» алгоритмами и алгоритмами, представляющими лишь теоретический интерес, то класс алгоритмов, работающих за полиномиальное время, является разумным первым приближением.

В этой главе мы рассмотрим класс задач, называемых «NP-полными». Для этих задач не найдены полиномиальные алгоритмы, однако не доказано, что таких алгоритмов не существует. Изучение NP-полных задач связано с так называемым вопросом Р ф NP. Этот вопрос был поставлен в 1971 году и является сейчас одной из наиболее интересных и сложных проблем теории вычислений.

Большинство специалистов полагают, что NP-полные задачи нельзя решить за полиномиальное время. Дело в том, что если хотя бы для одной NP-полной задачи существует решающий ее полиномиальный алгоритм, то и для всех NP-полных задач такие алгоритмы существуют. В настоящее время известно очень много NP-полных задач. Все попытки найти для них полиномиальные алгоритмы оказались безуспешными. По-видимому, таких алгоритмов нет вовсе.

Зачем программисту знать о NP-полных задачах? Если для некоторой задачи удается доказать её NP-полноту, есть основания


считать её практически неразрешимой. В этом случае лучше потратить время на построение приближенного алгоритма (гл. 37), чем продолжать искать быстрый алгоритм, решающий её точно.

Многие интересные и практически важные задачи являются NP-полными, хотя на вид ничуть не сложнее, чем задача сортировки, задача о кратчайшем пути в графе или о максимальном потоке в сети (для этих задач полиномиальные алгоритмы существуют).

В разделе 36.1 мы формализуем понятие задачи и определим класс Р, состоящий из «задач» (или, как говорят, «языков»), разрешимых за полиномиальное время. В разделе 36.2 будет определен класс NP, состоящий из задач, решение которых может быть проверено за полиномиальное время. Вопрос о совпадении этих классов и есть та центральная проблема теории сложности вычислений, о которой мы говорили.

В разделе 36.3 мы введем понятие сводимости за полиномиальное время, дадим определение NP-полной задачи и установим NP-полноту задачи о выполнимости. После этого в разделе 36.4 мы докажем NP-полноту некоторых других задач, сведя к ним задачу о выполнимости. В разделе 36.5 будет доказана NP-полнота ещё нескольких задач.

36.1. Полиномиальное время

Как мы уже говорили, понятие полиномиально разрешимой задачи принято считать уточнением идеи «практически разрешимой» задачи. Чем объясняется такое соглашение?

Во-первых, используемые на практике полиномиальные алгоритмы обычно действительно работают довольно быстро. Конечно, трудно назвать практически разрешимой задачу, котрая требует времени га100. Однако полиномы такой степени в реальных задачах почти не встречаются.

Второй аргумент в пользу рассмотрения класса полиномиальных алгоритмов - тот факт, что объём этого класса не зависит от выбора конкретной модели вычислений (для достаточно широкого класса моделей). Например, класс задач, которые могут быть решены за полиномиальное время на последовательной машине с произвольным доступом (RAM), совпадает с классом задач, полиномиально разрешимых на машинах Тьюринга (определение которых можно найти в книге Хопкрофта и Ульмана [104] или Льюиса и Пападимитриу [139]). Класс будет тем же и для моделей параллельных вычислений, если, конечно, число процессоров полиномиально зависит от длины входа.

В-третьих, класс полиномиально разрешимых задач обладает естественными свойствами замкнутости. Например, композиция



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203] [стр.204] [стр.205] [стр.206] [стр.207] [стр.208] [стр.209] [стр.210] [стр.211] [стр.212] [стр.213] [стр.214] [стр.215] [стр.216] [стр.217] [стр.218] [стр.219] [стр.220] [стр.221] [стр.222] [стр.223] [стр.224] [стр.225] [стр.226] [стр.227] [стр.228] [стр.229] [стр.230] [стр.231] [стр.232] [стр.233] [стр.234] [стр.235] [стр.236] [стр.237] [стр.238] [стр.239] [стр.240] [стр.241] [стр.242] [стр.243] [стр.244] [стр.245] [стр.246] [стр.247] [стр.248] [стр.249] [стр.250] [стр.251] [стр.252] [стр.253] [стр.254] [стр.255] [стр.256] [стр.257] [стр.258] [стр.259] [стр.260] [стр.261] [стр.262] [стр.263] [стр.264] [стр.265] [стр.266] [стр.267] [стр.268] [стр.269] [стр.270] [стр.271] [стр.272] [стр.273] [стр.274] [стр.275] [стр.276] [стр.277] [стр.278] [стр.279] [стр.280] [стр.281] [стр.282] [стр.283] [стр.284] [стр.285] [стр.286] [стр.287] [стр.288] [стр.289] [стр.290] [стр.291] [стр.292] [стр.293] [стр.294]