Шаг 8.
Сложность задачи.
Классы сложности P, NP, NPI, NPC

    На этом шаге мы рассмотрим классы сложности P, NP, NPI, NPC.

IF NP ≠ P then NP:= P∪NPC∪NPI

    Введем еще один класс задач - NP-полные (NPC) задачи (проблемы). Проблема Т называется NP-полной, если она удовлетворяет двум условиям:

    NP-полные проблемы являются своего рода универсальными. Не нужно придумывать алгоритмы для других задач, достаточно свести эти задачи к какой-либо NP-полной проблеме и воспользоваться алгоритмом ее решения. Представим на секунду, что для какой-то NP-полной проблемы ... два программиста, работая в старом заброшенном гараже ... (так обычно начинаются байки про гениальных программистов и гениальные программы) написали алгоритм полиномиальной сложности. Это будет означать, что P = NP!

    С тех пор как С.Кук доказал в 1971 г., что проблема выполнимости для пропозиционального исчисления является NP-полной, множество NPC пополнилось сотнями проблем.

    NP-полные проблемы, как следует из определения, являются наиболее трудными в классе NP.

    Значение класса NP-полных проблем состоит еще и в том, что ему принадлежат очень многие известные и важные в прикладном отношении задачи. Перечислим некоторые из них.

    1. Задача изоморфизма подграфу.

    Даны два графа G1 и G2. Множество вершин первого графа обозначим V1, а второго - V2. Пусть |V1|>|V2|=n. Требуется ответить на вопрос: найдется ли в графе G1 подграф Н, изоморфный графу G2?

    2. Задача о клике.

    Дан граф G с m вершинами и целое положительное число n. Граф называется кликой, если каждая вершина в нем связана ребром с каждой. Количество вершин в клике назовем ее мощностью. Верно ли, что в данном графе G имеется клика мощности не менее, чем n?

    3. Гамильтонов цикл.

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

    4. Задача коммивояжера.

    Дан граф G с n вершинами. Каждому ребру графа приписано положительное целое число di, задающее длину ребра. Кроме этого, задано некоторое положительное целое число L. Требуется ответить на вопрос: найдется ли в графе G маршрут, проходящий через все вершины графа G такой, что его длина не превышает L?

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

    5. Вершинное покрытие.

    Дан граф G с m вершинами и целое положительное число n. Вершинным покрытием называется подмножество U ⊆ V множества V вершин графа такое, что любое ребро графа G инцидентно хотя бы одной из вершин множества U (вторая вершина ребра может либо принадлежать, либо не принадлежать множеству U). Существует ли вершинное покрытие не более, чем из n вершин?

    6. Разбиение.

    Дано множество положительных целых чисел x1, x2, ..., xn. Можно ли разбить его на два подмножества так, чтобы суммы чисел в обоих подмножествах были равны?

    7. Трехмерное сочетание.

    Даны три множества: A, B, C. Мощности их равны: |А| = |В| = |С| = m, но множества не пересекаются. Зафиксировано некоторое множество троек N⊆A×B×C, |N|=n. Трехмерным сочетанием называется подмножество M⊆N, |M| = m, в котором ни какие две разных тройки не имеют ни одной равной координаты.

    Кроме класса NP-полных проблем рассматривают еще и класс NP-трудных проблем.

    Проблема Т называется NP-трудной, если она удовлетворяет условию: если R∈NP, то R сводится к T за полиномиальное время.

    Заметим, что это условие совпадает со вторым условием для NP-полных проблем. Следовательно, NP-полная проблема - это NP-трудная задача, принадлежащая классу NP.

    Для того чтобы уяснить себе возможное различие между классами P и NP, продолжим анализ проблемы выполнимости логического выражения.

    Кроме общей задачи о выполнимости могут быть поставлены задачи с ограничивающими условиями. Например, ограничение на длину дизъюнктов.

    На следующем шаге мы рассмотрим задачу о k-выполнимости.




Предыдущий шаг Содержание Следующий шаг