Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы и анализ сложности.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
4.62 Mб
Скачать

Класс p

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

Алгоритм называется полиномиальным, если его функция трудоемкости в наихудшем случае ограничена сверху некоторым полиномом (многочленом) от n.

Класс NP

Класс NP содержит задачи, которые недетерминированная машина Тьюринга в состоянии решить за полиномиальное количество времени. Следует заметить, что недетерминированная машина Тьюринга является лишь абстрактной моделью, в то время как современные компьютеры соответствуют детерминированной машине Тьюринга с ограниченной памятью. Таким образом, класс NP включает в себя класс P, а также некоторые проблемы, для решения которых известны лишь алгоритмы, экспоненциально зависящие от размера входа (то есть неэффективные для больших входов). В класс NP входят многие знаменитые проблемы, такие как задача коммивояжёра, задача выполнимости булевых формул, факторизация и др.

Примеры задач экспоненциальной сложности:

- построение всех подмножеств данного множества;

- задачи распознавания правильных выражений в несложных языках.

Кроме перечисленных трех классов задач встречается еще один, специальный класс NP, класс недетерминированных полиномиальных задач. Для всех задач этого класса известны методы решения экспоненциальной сложности, но одновременно доказана их общность и имеется обоснованное предположение, что для них может быть построен более простой способ решения.

К задачам класса NP относятся, в частности:

- решение систем уравнений с целыми переменными, известная задача Диофанта, датируемая 410 г;

- построение цикла Гамильтона, то есть цикла, проходящего по одному разу через все вершины данного графа;

- составление расписаний и раскрасок;

- ряд задач оптимизации;

- ряд задач диагностики.

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

Сравнение скорости роста.

Случаи, когда временными оценками пренебрегают.

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

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

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

4. Известно несколько примеров, когда эффективные алгоритмы требуют таких больших объемов машинной памяти, что этот фактор сводит на нет их преимущество.

5. В численных алгоритмах точность и устойчивость не менее важны, чем их временная эффективность.