Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
%конспект защ.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.52 Mб
Скачать

7 Теория сложности вычислений. Классификация алгоритмов.

Сложность вычислений.

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

Теория сложности сообщает время, за которое может быть взломан алгоритм.

2. Сложность алгоритмов.

При оценке сложности алгоритма учитывается работа алгоритма на всех выходах или крайняя оценка – “в наихудшем случае”. Обычно вычислительная сложность характеризуется О (“О большое”), таким образом временная сложность не зависит от реализации.

Классификация алгоритмов, при рамере входных данных n :

  •          Постоянные – сложность не зависит от n : O(1);

  •          Линейные – сложность : О(n);

  •          Полиномиальные – сложность : O(nm), где m это константа;

  •          Экспоненциальные – сложность : O(tf(n)), где t константа большая 1, а f(n) – полиномиальная функция;

  •          Суперполиномиальные– сложность : O(сf(n)), где с константа, а f(n) – функция возрастающая быстрее постоянной, но медленнее линейной;

  1. 3. Сложность задач.

Как отличить простые задачи от сложных?

Простые задачи (решаемые) – задачи, решаемые за полиномиальное время (например решение СЛУ в рациональных числах)

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

Помимо этого, существуют принципиально неразрешимые задачи, доказано А.Тьюрингом.

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

  1. a.    Класс Pкласс задач, которые можно решить за полиномиальное время.

  1. b.    Класс NPкласс задач, которые можно решить за полиномиальное время только на недетерминированной Машине Тьюринга: в отличии от обычной МТ может делать предположения. Это задачи у которых есть ответ, найти который трудно, но проверить можно за полиномиальное время.

Замечание: Ясно, что P входит NP, но вот проверить, что (P <> NP) или (P = NP) до сих пор не удалось. Это одна из важнейших проблем XXI века.

  1. c.    Класс NP-полных задач – класс задач, не менее сложных, чем любая NP задача. Т.е. решив такие задачи за полиномиальное время можно доказать (P = NP). К этому классу относится задача выполнимости - Задано логическое выражение. Существует ли набор правильных значений, на которых данное выражение будет истиной?(Пока не доказано.)

  2. d.    Класс PSPACEкласс задач, которые могут быть решены в полиномиальном пространстве, но не обязательно за полиномиальное время.

  3. e.    Класс PSPACE-полных задачкласс задач, которые обладают следующим свойством: если любая из них NP, то PSPACE=NP, и если любая из них является P проблемой, то PSPACE=NP.

  4. f.     Класс EXPTIMEкласс задач, которые решаются за экспоненциальное время.

  5. g.    Класс EXPTIME-полных задач - класс задач, которые не решаются за детерминированное полиномиальное время. Известно, что P<>EXPTIME.