8.3. Вычислительная сложность
Трудоемкость алгоритма, или временнáя сложность, т. е. время, затрачиваемое на выполнение алгоритма, оценивается числом условных элементарных операций, которые необходимо выполнить при решении задачи. Естественно, эта величина зависит от объема исходных данных, который оценивается некоторым параметром. Например, для графа это может быть число вершин или число ребер. Трудоемкость алгоритма, таким образом, можно оценить некоторой функцией f(n), где п – натуральное число, выражающее объем исходных данных.
Принято писать f(n) = O(g(n)), где g(n) некоторая конкретная функция от n, если найдется такая константа с, что f(n) сg(n) для любого n 0. При этом употребляют такие выражения: «трудоемкость алгоритма есть O(g(n))» или «алгоритм решает задачу за время O(g(n))». Если трудоемкость не зависит от объема исходных данных, то для ее обозначения используется символ О(1). Алгоритм трудоемкости О(п) называют линейным. Алгоритм трудоемкости О(пb), где b – константа (возможно, дробная), называется полиномиальным. Если g(n) является показательной функцией, например 2п, то говорят, что алгоритм обладает неполиномиальной, или экспоненциальной, сложностью.
Оценка трудоемкости алгоритма позволяет судить о том, как влияет быстродействие вычислительной машины на время выполнения алгоритма. Пусть имеется пять алгоритмов, трудоемкость которых соответственно п, n logn, п2, п3 и 2п. Пусть условная элементарная операция, которая является единицей измерения трудоемкости алгоритма, выполняется за одну миллисекунду. В табл. 8.1, показано, какого размера задачи могут быть решены каждым из этих алгоритмов за одну секунду, одну минуту и один час. Из этой таблицы видно, например, что за одну минуту алгоритм с трудоемкостью п2 решает задачу в шесть раз большую, чем алгоритм с трудоемкостью п3.
Следует, однако, иметь в виду, что трудоемкость, выражаемая большей степенью полинома, может иметь меньший множитель с из приведенного выше неравенства f(n) сg(n). Точно так же сложность алгоритма, которая носит экспоненциальный характер, может иметь множитель, меньший, чем у полиномиальной сложности. При разработке компьютерных программ для решения практических задач важно знать, при каких значениях параметра п время выполнения экспоненциального алгоритма оказывается меньше, чем время выполнения полиномиального алгоритма, решающего ту же задачу.
Таблица 8.1
Связь трудоемкости алгоритма с максимальным размером
задачи, решаемой за единицу времени
-
Временнáя
Максимальный размер задачи
сложность
1 с
1 мин
1 ч
п
1000
6 104
3,6 106
п logn
140
4893
2,0 105
n2
31
244
1897
n3
10
39
153
2n
9
15
21
Для очень многих практических комбинаторных задач существуют алгоритмы только экспоненциальной трудоемкости. Может показаться, что с совершенствованием вычислительной техники и ростом быстродействия вычислительных машин проблема трудоемкости ослабевает. Однако данные, приведенные в табл. 8.2, говорят, что это не так. Пусть следующее поколение вычислительных машин будет иметь быстродействие, в десять раз большее, чем у современных вычислительных машин. В табл. 8.2 показано, как благодаря увеличению быстродействия возрастут размеры задач, которые могут быть решены за некоторую фиксированную единицу времени. Задачи достаточно большого размера, решаемые только алгоритмами экспоненциальной трудоемкости, вообще не могут быть решены за практически приемлемое время, даже если надеяться на существенное увеличение быстродействия вычислительных машин в будущем.
Таблица 8.2
Связь размера задачи, решаемой за заданное время,
с быстродействием вычислительной машины
-
Временнáя
Максимальный размер задачи
сложность
до ускорения
после ускорения
п
s1
10 s1
п logn
s2
10 s2
n2
s3
3,16 s3
n3
s4
2,15 s4
2n
s5
s5 3,3
Иногда удается найти способы сокращения перебора благодаря некоторым особенностям конкретных исходных данных.
Другой путь выхода из такого положения – использование приближенных методов. Для практических задач не всегда требуется получать точное решение. Часто достаточно иметь решение, близкое к оптимальному. Пример приближенного метода рассмотрен нами ранее при решении задачи раскраски графа.
- Литература
- Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- 1.2.Операции над множествами
- 1.3. Булева алгебра множеств
- 1.4. Разбиения и покрытия
- 2. Отношения бинарные и n-арные
- 2.1. Декартово произведение
- 2.2. Бинарные отношения (соответствия)
- 2.3. Операции над бинарными отношениями
- 2.4. Функциональные отношения
- 2.5. Бинарные отношения на множестве
- 2.6. Алгебраические системы
- 3. Основные понятия теории графов
- 3.1. Абстрактный граф
- 3.2. Графическое представление бинарного отношения
- Множеств а и в
- 3.3. Матричные представления графа
- 3.4. Части графа
- 3.5. Достижимость и связность
- 3.6. Доминирующие множества графа
- 3.7. Независимые множества графа
- 3.8. Раскраска графа
- 3.9.Планарность графов
- 3.10. Инварианты графов
- 4. Булевы функции
- 4.1. Способы задания булевой функции
- 4.2. Элементарные булевы функции и алгебраические формы
- 4.3. Интерпретации булевой алгебры
- 4.4. Нормальные формы булевых функций
- 4.4.1. Дизъюнктивные нормальные формы
- 4.4.2. Конъюнктивные нормальные формы
- 4.5 Полнота и замкнутость системы логических функций
- 4.6. Локальные упрощения днф
- 4.6.1. Удаление избыточных элементарных конъюнкций
- 4.6.2. Удаление избыточных литералов
- 4.7. Графическое представление булева пространства и булевых функций
- 4.7.1. Булев гиперкуб
- 4.7.2. Развертка гиперкуба на плоскости. Карта Карно
- 4.8. Минимизация днф
- 4.8.1. Метод Квайна-МакКласки
- 4.8.2. Метод Блейка-Порецкого
- 4.8.3. Визуально-матричный метод минимизации
- 5. Элементы математической логики
- 5.1 Алгебра высказываний
- Всякое высказывание логично следует из самого себя.
- 2. Закон противоречия:
- Если из а следует b, а b ложно, то а тоже ложно.
- 5.2. Логические отношения
- 5.3.Проверка правильности рассуждений
- 5.4. Решение логических задач методом характеристического уравнения
- 5.6. Кванторы
- 5.7 Эквивалентные соотношения. Префиксная нормальная форма
- 6. Основы теории алгоритмов
- 6.1. Интуитивное понятие об алгоритме
- 6.2. Три типа алгоритмических моделей
- 6.3. Кризис теории множеств антиномии. Выводы из антиномий
- 6.4. Машины Тьюринга как модели алгоритмов
- 6.5. Алгоритмы решения некоторых задач теории графов на графах
- 7. Конечный автомат и его описание.
- 7.2. Представления автомата
- 7.3. Связь между моделями Мили и Мура
- 7.4. Автомат с абстрактным состоянием. Булев автомат
- 7.5. Понятие о регулярных выражениях алгебры событий.
- 7.6. Задачи абстрактной теории конечных автоматов
- 8. Комбинаторные задачи и методы комбинаторного поиска
- 8.1. Задачи подсчета числа комбинаторных решений
- 8.2. Особенности оптимизационных комбинаторных задач
- 8.3. Вычислительная сложность
- 8.4. Методы комбинаторного поиска
- 8.5. Задача о кратчайшем покрытии и методы ее решения
- 8.5.1. Постановка задачи
- 8.5.2. Приближенные методы решения задачи
- 8.5.3. Точный метод
- Вопросы к зачету
- 28. Нормальные формы булевых функций. Дизъюнктивные нормальные формы
- 44. Эквивалентные соотношения. Префиксная нормальная форма
- Практический раздел Контрольная работа Указания по выбору варианта
- Контрольное задание №1. Используя диаграммы Эйлера-Венна, решить задачу
- Методические указания
- Задачи для самостоятельного решения
- Контрольное задание №2. Получить сднф, скнф, используя таблицу истинности. Построить днф, кнф, упростив выражение.
- Методические указания
- Задачи для самостоятельного решения
- Контрольное задание №3. Упростить схему (рис. 2)
- Методические указания
- Задачи для самостоятельного решения
- Задачи для самостоятельного решения
- Методические указания
- Задачи для самостоятельного решения
- Контрольное задание №6. Найти инварианты неориентированного графа, заданного матрицей смежности
- Методические указания
- Задачи для самостоятельного решения