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


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




[272]

G = (V, Е) - неориентированный граф, u,v £ V, k О - целое число, и существует простой путьиз и в v, длины не менее Покажите, что задача оптимизации LONGEST-PATH-LENGTH может быть решена за полиномиальное время в том и только том случае, если задача разрешения LONGEST-PATH принадлежит классу Р. 36.1-2

Определите формально задачу нахождения наибольшего простого цикла в неориентированном графе. Сформулируйте соответствующую строковую задачу разрешения (язык).

36.1-3

Рассмотрите два представления для графа - с помощью матрицы инцидентности (закодированной последовательностью битов) и с помощью списков рёбер (также надлежащим образом закодированных). Объясните, почему два данных представления полиномиально связаны.

36.1-4

Является ли алгоритм динамического программирования для 0-1-задачи о рюкзаке из упражнения 17.2-2 полиномиальным? Объясните свой ответ.

36.1-5

Предположим, что некоторый язык L допускается за полиномиальное время некоторым алгоритмов. Может ли этот алгоритм работать более чем полиномиальное время на словах, не принадлежащих L1 (Сравните свой ответ с утверждением теоремы 36.2.)

36.1-6

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

36.1-7

Покажите, что класс Р как множество языков замкнут относительно объединения, пересечения, дополнения, конкатенации и операции Клини. Это значит, что из L\, L2 £ Р следует Е\ L)L2 £ Р и т.д.

36.2. Проверка принадлежности языку и класс NP

В предыдущем разделе мы рассматривали задачу разрешения PATH (выяснить, есть ли в данном графе G между данными двумя вершинами и и v путь длины не более к). Эта задача оказалась полиномиальной (и решается с помощью алгоритма поиска в ширину). Представим себе, однако, что мы ничего не знаем про поиск


36.1 (а) Додекаэдр (вид из точки, расположенной недалеко от центра одной из граней); серые рёбра образуют гамильтонов цикл. (Ь) Двудольный граф с нечётным числом вершин - такой граф не гамильтонов.

в ширину. Тогда задача PATH будет для нас трудной: видя граф G, вершины и и v и знаю число к, мы не будем знать, есть ли искомый путь, пока нам кто-нибудь его не покажет. Но если нам его покажут, то мы можем без труда проверить, что путь этот - искомый.

Именно такая ситуация имеет место для задач из класса NP, о которых мы будем говорить в этом разделе. Гамильтонов цикл

Задача поиска гамильтонова цикла в графе изучается уже более ста лет. Бонди и Мёрти [131] цитируют письмо Гамильтона (W.R.Hamilton), в котором описана такая игра: первый игрок отмечает в додекаэдре (рис. 26.1(a)) путь из пяти идущих друг за другом вершин, а второй игрок должен дополнить этот путь до простого цикла, проходящего через все вершины додекаэдра.

Вообще гамильтоновым циклом (hamiltonian cycle) в неориентированном графе G = (V, Е) называется простой цикл, который проходит через все вершины графа. Графы, в которых есть гамильтонов цикл, называют гамильтоновыми (hamiltonian graph)

Додекаэдр (проекция которого изображена на рис. 35.1(a)) - гамильтонов граф; серым цветом показан один из гамильтоновых циклов. Не все графы гамильтоновы: на рис. 36.1(b) показан двудольный граф с нечётным числом вершин; легко видеть (упр. 36.22), что такой граф не может иметь гамильтонова цикла.

Задача о гамильтоновом цикле (hamiltonian path problem) состоит выяснении, имеет ли данный граф G гамильтонов цикл. Формально говоря,

HAM-CYCLE = {(G) : G - гамильтонов граф}

Как решать такую задачу? Можно перебрать все перестановки вершин данного графа и проверить, является ли хотя бы одна из них гамильтоновым циклом. Оценим время работы такого алгоритма. Если мы используем представление графа с помощью матрицы инцидентности, то число вершин то в графе будет Q(y/n), где п = (G) - длина представления графа G. Имеется то! различных перестановок вершин графа, и время работы алгоритма равно Г2(то!) = Q(y/n\) = Q{2), то есть не является полиномиальным. Таким образом, наивный алгоритм не даёт эффективного решения задачи. На самом деле, как мы покажем в разделе 36.1, задача о гамильтоновом цикле является NP-полной, и потому можно предполагать, что полиномиального алгоритма для неё вообще не существует.


Проверка принадлежности языку

Пусть вы заключили пари с приятелем, который утверждает, что (нарисованный перед вами на доске) граф является гамиль-тоновым. При этом вы не можете быстро проверить, так это или нет. Тем не менее приятель может выиграть пари, если каким-то образом отгадает гамильтонов цикл и предъявит его вам: проверка того, что данный цикл является гамильтоновым, проста. Нужно лишь проверить, что предъявленный цикл проходит через все вершины графа, и что он действительно идёт по рёбрам. Итак, доказательство существования гамильтонова цикла в графе (состоящее в предъявлении гамильтонова пути) можно проверить за полиномиальное время.

Назовем проверяющим алгоритмом (verification algorithm) алгоритм А с двумя аргументами; первый аргумент мы будем называть (как и раньше) входной строкой, а второй - сертификатом (certificatie). Мы говорим, что алгоритм А с двумя аргументами допускает вход ж (A verifies an input string ж), если существует сертификат у, для которого А(х,у) = 1. Языком, проверяемым алгоритмом A (language verified by А), мы назовём язык

L = {ж £ {0,1}* : существует у £ {0,1}*, для которогоА(ж, у) = 1}.

Другими словами, алгоритм А проверяет язык L, если для любой строки ж £ L найдется сертификат у, с помощью которого А может проверить принадлежность ж к языку L, а для ж L такого сертификата нет. Например, в задаче HAM-CYCLE сертификатом была последовательность вершин, образующая гамильтонов цикл. Сложностной класс NP

Сложностной класс NP (complexity class NP) - это класс языков, для которых существуют проверяющие алгоритмы, работающие полиномиальное время, причём длина сертификата также ограничена некоторым полиномом. Более точно, язык L принадлежит классу NP, если существует такой полиномиальный алгоритм А с двумя аргументами и такая многочлен р(х) с целыми коэффициентами, что

L = {ж £ {0,1}* : существует сертификат у, для которого \у\ р(ж) и А(х, у) = 1}

В этом случае мы говорим, что алгоритм А проверяет язык L за полиномиальное время (A verifies language L in polynomial time). Заметим, что, формально говоря, из этого не следует, что А проверяет язык L в смысле ранее данного определения, так как для ж L могут существовать длинные сертификаты, которые отбрасываются при новом определении, но препятствуют старому.

Несколько слов о названии: сокращение NP происходит от английских слов Nondeterministic Polynomial (time), что переводится как недетерминированное полиномиальное время. Первоначально



[стр.Начало] [стр.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]