Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2013_1 / ОТС / Сложность

.doc
Скачиваний:
38
Добавлен:
23.02.2015
Размер:
36.35 Кб
Скачать

Почитай что-нибудь из раздела "Сложность и классификация алгоритмов". Например, Комлева Н.В. "Классификация алгоритмов":

Цитата:

Под сложностью алгоритма мы понимаем выраженную в виде функции от размерности входных данных верхнюю границу числа операций, необходимых для его выполнения. Сложность задачи – это сложность наилучшего алгоритма, известного для её решения. Следовательно, она зависит от уровня развития методов решения. 1. Класс Р: полиномиальные алгоритмы. Задачу называют «хорошей», или принадлежащей к классу Р, если для нее известен алгоритм, сложность которого составляет полином некоторой заданной степени (т. е. степени, не зависящей от размерности и задачи, например (0(n^2)). Наилучшими здесь являются задачи, основанные на применении явной формулы. Собственно задача математики и состоит в том, чтобы найти явные формулы для решения как можно большего числа возможных задач. Если такая формула существует, то сложность задачи оказывается связанной с эффективностью вычислений. Например, нахождение суммы и чисел натурального ряда. Известна явная формула, обладающая постоянной (0(1)) сложностью (не зависит от n). Примером полиномиального алгоритма может служить сортировка n чисел. ... 2. Класс Е: задачи, экспоненциальные по природе. Экспоненциальной по природе считается задача, сложность которой не менее порядка f^n (где n – константа или полином от n), например, в случае, когда число ожидаемых ответов уже само по себе экспоненциально. Сюда относятся задачи, в которых требуется построить все подмножества некоторого множества или все поддеревья некоторого дерева или все клики (т.е. полные подграфы) некоторого подграфа. … 3. Класс NP: недетерминированные полиномиальные задачи Прежде всего представим абстрактную модель полиномиального алгоритма в виде чёрного ящика, который по входной последовательности производит выходную последовательность. Представим входную и выходную последовательности в двоичном виде. Тогда алгоритм можно рассматривать как последовательность элементарных операций и, или, не, печать, чтение, +, -, *, /, если…то, повторять (перевод алгоритмов с языка высокого уровня на уровень двоичных символов увеличивает число операций только полиномиально, что не нарушает общности подхода! Определим состояние алгоритма как комбинацию адреса выполняемой в текущий момент команды и значений всех переменных. В данный момент автомат находится в строго определённом состоянии. За один шаг он совершает единственное действие, обусловленное этим состоянием, затем переходит в следующее состояние. Такой автомат называется детерминированной машиной Тьюринга (ДМТ). Для детерминированных алгоритмов для любого данного состояния существует не больше одного вполне определённого следующего состояния. В недетерминированном алгоритме для любого данного состояния может быть строго больше одного допустимого следующего состояния (недетерминированная машина Тьюринга, осуществляющая перебор с помощью инструкции “Выбор {E}”, которая создаёт столько копий текущего состояния, сколько существует элементов в множестве {E}). Машина останавливается тогда, когда одна из возникших её копий достигает инструкции КОНЕЦ. Недетерминированные алгоритмы не являются в каком-либо смысле вероятностными или случайными алгоритмами; они являются алгоритмами, которые могут находиться одновременно во многих состояниях. Недетерминированный алгоритм производит вычисления до тех пор, пока не доходит до места, где должен быть сделан выбор из нескольких альтернатив.

Советую что-нибудь поискать дополнительно - там не все так сложно, как кажется . Например: 1. Тудман С., Хидешмиами С. Введение в разработку и анализ алгоритмов М., Мир. 1991. 2. Кнут Д. Искусство программирования. Т.2.

Одно из направлений теории сложности алгоритмов - классификацыя алгоритмов по количеству шагов, необходимых для его исполнения. Существует класс задач, для которых существуют так называемые алгоритмы полиномиальной сложности. Это означает, что количество шагов необходимых для решения зависит от длины входа как некая степень степень длины входа. Допустим, мы решаем задачу определения третичной структуры белка, то есть его пространственной конфигурацыи по последовательности аминокислот. Существование алгоритма полиномиальной сложности для такой задачи означает существование алгоритма, который приводил бы к решению задачи за число шагов, пропроциональное какой-то степени количества аминокислот. Однако далеко не для всех задач известны алгоритмы такой степени сложности. Существует задачи , для которых такие алгоритмы неизвестны. Например, задача коммивояжера: коммивояжеру нужно объехать N городов за минимальное время, таким образом, чтобы не посетить никакой город дважды. Такие задачи решаются только методом перебора. Оказалось, однако, что о таких задачах можно сказать несколько больше чем утверждать, что неизвестны полиномиальные алгоритмы их решения. Был создан так называемый метод сводимости, с помощью которого удалось свести друг к другу задачи из обширного класса задач, решаемых переборными методами. Для этого нужно указать алгоритм, который сводит одну задачу к другой за число шагов пропорциональное какой-то степени длины начальных данных. Например, задачи типа определения структуры белка свести к задачи коммивояжера за число шагов пропорцыональное какой-то степени количества аминокислот. А это означает, что если для какой-то задачи из данного класса будет найден алгоритм полиномиальной сложности, то тем самым будет найден алгоритм такой же сложности дял всех остальных задач этого класса. Такого алгоритма не найдено и вопрос о его существовании считается главной проблемой математики 21-го века. Большынство математиков склоняется к тому, что такого алгоритма не существует. Если же воспользоваться метафорой работающей лопаты, то эти результаты можно сформулировать примерно так. Другие лопаты существуют, но они либо явялются различными модификацыями моей лопаты и работают также хорошо, как моя лопата, либо еще хуже (сущестуют примеры задач, для которых заведомо не существует алгоритмов полиномиальной сложности). Существуют еще экскаваторы, которые работают лучше лопаты и задача математики 21-го века состоит в том, чтобы найти хотя бы одну лопату, работающую так же хорошо как экскаватор, либо показать, что такой лопаты не существует. Если ответ будет положытельным, то это будет означать, что лопата и экскаватор - это в сущности одно и тоже, если нет,то то - нет. З.Ы. С помощью методов сводимости в свое время удалось решыть задачу, которая выглядит гораздо более парадоксальной - показать, что неразрешымые задачи бывают неразрешыми по разному, то есть одни задачи могут быть "более неразрешымыми", чем другие.

Соседние файлы в папке ОТС