русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Полиномиальность и эффективность


Дата добавления: 2013-12-23; просмотров: 2939; Нарушение авторских прав


Классы сложности

Временная и пространственная сложность алгоритма. Классы DTIME и DSPACE

 

При написании этого раздела использовались материалы курсы лекций [1].

 

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

 

 

Определение 8. Пусть . Машина Тьюринга T имеет временную сложность t(n), если для каждого входного словадлины n T выполняет не больше t(n) шагов до остановки. Также будем обозначать временную сложность машины Тьюринга T, как timeT (n).

 

Используемой памятью будем считать число ячеек на ленте, использованных для записи, не считая длины входа.

 

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

 

Обратите внимание, что пространственная сложность может быть меньше длины входа.

Следующим шагом могло бы стать разумное определение «оптимального» алгоритма для данной алгоритмической задачи.

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

 

Теорема 2. Существует разрешимая алгоритмическая задача, для которой выполнено следующее. Для произвольного алгоритма A, решающего эту задачу и имеющего сложность в наихудшем случае timeA(n), найдется другой алгоритм B (для этой же задачи) со сложностью timeB(n), такой, что



выполнено для почти всех n (т.е. для всех n, начиная с некоторого).

 

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

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

 

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

 

 

 

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

Учитывая необходимость кодирования данных, подаваемых на вход машине Тьюринга, эти задачи абсолютно эквивалентны задачам распознавания языков, когда на некотором алфавите Σ рассматривается подмножество слов , и для произвольного слова нужно определить, принадлежит ли оно языку L.

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

 
 

 

 

Определение 10.Говорят, что неотрицательная функция не превосходит по порядку функцию и пишут , если существует такая константа C, что для любого .

 

Выражение «трудоемкость (сложность) алгоритма составляет », «решение задачи требует порядка операций» или «алгоритм решает задачу за время » обычно придается именно этот смысл.

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

Алгоритмы с трудоемкостью называются линейными.

Алгоритм, сложность которого равна , где c – константа, называется полиномиальным.

Встречаются алгоритмы сложность которых оценивается .

Для алгоритма со сложностью (или )говорят, что он имеет экспоненциальную сложность.

 

Лекция 6

 

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

 

В теории алгоритмов в основном рассматриваются переборные или «распознавательные» (задачи, решение которых сводится к получению ответа «да» или «нет») массовые задачи. Произвольные задачи обычно легко сводятся к переборным или «распознавательным» задачам.

Алгоритмы, решающие переборные задачи с полиномиальной сложностью, часто называю эффективными.

Может ли неполиномиальный алгоритм быть эффективным? Ответ утвердительный.

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

Подчеркнем, что примеров задач, на которых нарушается основополагающее равенство

«полиномиальность»=«эффективность»

крайне мало по сравнению с числом примеров, на которых оно блестяще подтверждается.

Класс всех переборных задач с полиномиальной сложностью обозначается P.

Однако возможно, что класс всех переборных («распознавательных»)задач шире класса P .Поэтому всех переборных задач обозначают через NP и называют NP-полными задачами.

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

По этой причине задачи решаемые с экспоненциальной сложность относя к классу NP-полных задач.

Историю современной теории сложности вычислений принято отсчитывать с работ С.А.Кука (1975 года), в которых были заложены основы теории NP-полноты и доказано существование вначале одной, а затем достаточно большого числа (а именно, 21) естественных NP-полных задач. К 1979 году было известно уже более 300 наименований. К настоящему времени количество известных NP-полных задач выражается четырехзначным числом, и постоянно появляются новые, возникающие как в самой математике и теории сложности, так и в таких дисциплинах, как биология, социология, военное дело, теория расписаний, теория игр и т.д.

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

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

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

 



<== предыдущая лекция | следующая лекция ==>
Построение моделей алгоритмов в системе GRAPH | Представление абстрактных объектов (последовательностей)


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.