Теория сложности вычислений и сложностные классы задач

Теоретическая оценка предела трудоемкости алгоритма решения задачи. Сложностные классы задач: с полиномиальной сложностью (класс P) и полиномиально проверяемые (NP); основная проблема теории сложности. Класс NPC (NP – полные задачи) и его примеры.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 12.07.2010
Размер файла 18,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

ГОСУДАРСТВЕННОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«БЕЛОРУССКО-РОССИЙСКИЙ УНИВЕРСИТЕТ»

Кафедра «Автоматизированные системы управления»

Реферат на тему:

«ТЕОРИЯ СЛОЖНОСТИ ВЫЧИСЛЕНИЙ И СЛОЖНОСТНЫЕ КЛАССЫ ЗАДАЧ»

по дисциплине

«Математическая логика и теория алгоритмов»

Выполнил: ______________

Проверил: ______________

Могилев, 2010

СОДЕРЖАНИЕ

1 Теоретический предел трудоемкости задачи

2 Сложностные классы задач

3 Проблема P = NP

4 Класс NPC (NP - полные задачи)

5 Примеры NP - полных задач

1 ТЕОРЕТИЧЕСКИЙ ПРЕДЕЛ ТРУДОЕМКОСТИ ЗАДАЧИ

Рассматривая некоторую алгоритмически разрешимую задачу, и анализируя один из алгоритмов ее решения, мы можем получить оценку трудоемкости этого алгоритма в худшем случае:

A(DA)=O(g(DA)).

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

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

Fthlim= min { (Fa^ (D)) }

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

Fa^ (D) = (Fthlim)

Приведем ряд примеров:

1) Задача поиска максимума в массиве A=(a1,…,an) - для этой задачи, очевидно должны быть просмотрены все элементы, и Fthlim= (n).

2) Задача умножения матриц - для этой задачи можно сделать предположение, что необходимо выполнить некоторые арифметические операции со всеми исходными данными, теоретическое обоснование какой-либо другой оценки на сегодня не известно [6], что приводит нас к оценке Fthlim= (n2). Отметим, что лучший алгоритм умножения матриц имеет оценку (n2,34) [6]. Расхождение между теоретическим пределом и оценкой лучшего известного алгоритма позволяет предположить, что либо существует, но еще не найден более быстрый алгоритм умножения матриц, либо оценка (n2,34) должна быть доказана, как теоретический предел.

2 СЛОЖНОСТНЫЕ КЛАССЫ ЗАДАЧ

В начале 1960-х годов, в связи с началом широкого использования вычислительной техники для решения практических задач, возник вопрос о границах практической применимости данного алгоритма решения задачи в смысле ограничений на ее размерность. Какие задачи могут быть решены на ЭВМ за реальное время?

Ответ на этот вопрос был дан в работах Кобмена (Alan Cobham, 1964), и Эдмондса (Jack Edmonds, 1965), где были введены сложностные классы задач.

1) Класс P (задачи с полиномиальной сложностью)

Задача называется полиномиальной, т.е. относится к классу P, если существует константа k и алгоритм, решающий задачу с:

Fa(n)=O(nk),

где n - длина входа алгоритма в битах n = |D| [6].

Задачи класса P - это интуитивно, задачи, решаемые за реальное время. Отметим следующие преимущества алгоритмов из этого класса:

· для большинства задач из класса P константа k меньше 6;

· класс P инвариантен по модели вычислений (для широкого класса моделей);

· класс P обладает свойством естественной замкнутости (сумма или произведение полиномов есть полином).

Таким образом, задачи класса P есть уточнение определения «практически разрешимой» задачи.

2) Класс NP (полиномиально проверяемые задачи)

Представим себе, что некоторый алгоритм получает решение некоторой задачи - соответствует ли полученный ответ поставленной задаче, и насколько быстро мы можем проверить его правильность?

Рассмотрим, например задачу о сумме: Давно N чисел - А = (a1,…an) и число V. Задача: Найти вектор (массив) X=(x1,…,xn), xi{0,1}, такой, что aixi = V.

Содержательно: может ли быть представлено число V в виде суммы каких либо элементов массива А. Если какой-то алгоритм выдает результат - массив X, то проверка правильности этого результата может быть выполнена с полиномиальной сложностью: проверка aixi = V требует не более (N) операций.

Формально: DDA, |D|=n поставим в соответствие сертификат SSA, такой что |S|=O (nl) и алгоритм As = As (D,S), такой, что он выдает «1», если решение правильно, и «0», если решение неверно. Тогда задача принадлежит классу NP, если F (As)=O (nm) [6].

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

3 ПРОБЛЕМА P = NP

После введения в теорию алгоритмов понятий сложностных классов Эдмондсом (Edmonds, 1965) была поставлена основная проблема теории сложности:

P = NP?

Словесная формулировка проблемы имеет вид: можно ли все задачи, решение которых проверяется с полиномиальной сложностью, решить за полиномиальное время? [6]

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

На сегодня отсутствуют теоретические доказательства как совпадения этих классов (P=NP), так и их несовпадения. Предположение состоит в том, что класс P является собственным подмножеством класса NP, т.е. NP \ P не пусто - рис 6.1

Рисунок 6.1 - Соотношение классов P и NP

4 КЛАСС NPC (NP - ПОЛНЫЕ ЗАДАЧИ)

Понятие NP - полноты было введено независимо Куком (Stephen Cook, 1971) и Левиным (журнал «Проблемы передачи информации», 1973,т.9, вып. 3) и основывается на понятии сводимости одной задачи к другой [6].

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

Таким образом, если задача 1 задана множеством конкретных проблем DA1, а задача 2 - множеством, и существует функция fs (алгоритм), сводящая конкретную постановку задачи 2 (dА2) к конкретной постановке задачи 1(dА1): fs(d(2)DA2) = d(1)DA1, то задача 2 сводима к задаче 1.

Если при этом FA (fs) = O(nk), т.е. алгоритм сведения принадлежит классу P, то говорят, что задача 1 полиномиально сводится к задаче 2 [6].

Принято говорить, что задача задается некоторым языком, тогда если задача 1 задана языком L1, а задача 2 - языком L2, то полиномиальная сводимость обозначается следующим образом: L2 p L1.

Определение класса NPC (NP-complete) или класса NP-полных задач требует выполнения следующих двух условий: во-первых, задача должна принадлежать классу NP (L NP), и, во-вторых, к ней полиномиально должны сводиться все задачи из класса NP (Lx P L, для каждого Lx NP), что схематично представлено на рис 6.2.

Рисунок 6.2 - Сводимость и класс и NPC

Для класса NPC доказана следующая теорема: Если существует задача, принадлежащая классу NPC, для которой существует полиномиальный алгоритм решения (F = O(nk)), то класс P совпадает с классом NP, т.е. P=NP [6].

Схема доказательства состоит в сведении любой задачи из NP к данной задаче из класса NPC с полиномиальной трудоемкостью и решении этой задачи за полиномиальное время (по условию теоремы).

В настоящее время доказано существование сотен NP- полных задач [6,7], но ни для одной из них пока не удалось найти полиномиального алгоритма решения. В настоящее время исследователи предполагают следующее соотношение классов, показанное на рис 6.3 - P NP, то есть NP \ P , и задачи из класса NPC не могут быть решены (сегодня) с полиномиальной трудоемкостью.

Рисунок 6.3 - Соотношение классов P, NP, NPC

5 ПРИМЕРЫ NP - ПОЛНЫХ ЗАДАЧ

Задача о выполнимости схемы. Рассмотрим схему из функциональных элементов «и», «или», «не» с n битовыми входами и одним выходом, состоящую не более, чем из O(nk) элементов - рис 6.4

Рисунок 6.4 - Абстрактная функциональная схема

Будем понимать под выполняющим набором значений из множества {0,1} на входе схемы, такой набор входов - значения x1,…,xn, при котором на выходе схемы будет значение «1».

Формулировка задачи - существует ли для данной схемы выполняющий набор значений входа. Очевидно, что задача принадлежит классу NP - проверка предъявленного выполняющего набора не сложнее количества функциональных элементов, и следовательно не больше чем O(nk). Это была одна из первых задач, для которой была доказана ее NP полнота, т.е. любая задача из класса NP полиномиально сводима к задаче о выполнимости схемы [6].

Решение этой задачи может быть получено перебором всех 2n возможных значений входа с последующей проверкой на соответствие условию выполняющего набора. В худшем случае придется проверить все возможные значения входа, что приводит к оценке F^(n) = O(nk * 2n). Для этой, как и для всех других NP-полных задач не известен полиномиальный алгоритм решения.

Задача о сумме. Уже рассмотренная задача о сумме также является NP-полной, отметим, что если количество слагаемых фиксировано, то сложность задачи является полиномиальной, так как:

· для 2-х слагаемых СN2=(N*(N-1))/(1*2) = O(N2);

· для 3-х слагаемых CN3=(N*(N-1)*(N-2))/(1*2*3) = O(N3).

Однако в общем случае придется перебирать 2N различных вариантов, так как по биномиальной теореме:

(a+b)N = cNk * aN-k * bk,

а при a=b=1, имеем: (1+1)N = CNk = 2N,

следовательно, FA (N, V) = O(N * 2N).

Задача о клике. Пусть дан граф G = G(V,E), где V - множество из n вершин, а E - множество ребер. Будем понимать под кликой максимальный по количеству вершин полный подграф в графе в G.

Задача состоит в определении клики в заданном графе G

Поскольку в полном графе на m вершинах имеется m(m-1)/2 ребер, то проверка, является ли данный граф полным, имеет сложность O(m2). Очевидно, что если мы рассматриваем подграф с m вершинами в графе G с вершинами (m < n), то всего существует Cnm различных подграфов. Если в задаче о клике количество вершин клики фиксировано, то перебирающий алгоритм имеет полиномиальную сложность:

F(m, n) = O(m2 * Cnm) = O(m2 * nm).

Однако в общем случае придется проверять все подграфы с количеством вершин m = (2, n) на их полноту и определить максимальное значения m для которого в данном графе G существует полный подграф, что приводит к оценке в худшем случае:

F^(n) = O( k2 * Cnk) O (n2 * 2n)


Подобные документы

  • Временная, пространственная и асимптотическая сложности. Основные классы сложности в теории алгоритмов. Сведение как преобразование одной задачи к другой. Проблема равенства классов P и NP. Характеристика основных иерархических отношений между классами.

    реферат [16,9 K], добавлен 09.04.2012

  • Временная и ёмкостная сложность программы. Размер входных данных. Связь сложности в худшем случае и в среднем. Понятие оптимальной программы. Классы вычислительной сложности программ. Эквивалентность по сложности. Примеры классов вычислительной сложности.

    презентация [77,3 K], добавлен 19.10.2014

  • Классы задач P и NP, их сводимость. Примеры NP-полных и NP-трудных задач. Сущность метода поиска с возвратом. Алгоритмы решения классических задач комбинаторного поиска. Решение задачи о восьми ферзях. Поиск оптимального решения методом ветвей и границ.

    презентация [441,5 K], добавлен 19.10.2014

  • Обзор криптографических классов библиотеки Framework Class Libr: классы алгоритмов симметричного и асимметричного шифрования, хеширования. Классы-форматеры и деформатеры. Классы для формирования и проверки цифровой подписи. Примеры применения классов.

    курсовая работа [30,0 K], добавлен 27.12.2011

  • Средства формализации процесса определения спецификаций. Назначение языка (PSL) и анализатора определения задач (PSA). Разработка алгоритма решения задачи, критерии оценки его сложности. Локальный и глобальный уровни повышения эффективности алгоритмов.

    контрольная работа [144,9 K], добавлен 26.10.2010

  • Классы сложности задач в теории алгоритмов. Общие сведения о симметричной и ассиметрично-ключевой криптографии. "Лазейка" в односторонней функции. Криптографическая система RSA. Криптографическая система Эль-Гамаля. Алгоритм обмена ключами Диффи-Хеллмана.

    курсовая работа [706,6 K], добавлен 06.06.2010

  • Объектно-ориентированный подход к проектированию программных систем. Простое наследование и доступ к наследуемым компонентам. Конструкторы производных классов, объемлющие классы, понятие об алгоритме и операторе. Примеры реализации связных списков.

    реферат [24,5 K], добавлен 31.10.2011

  • Цель ТРИЗ - области знаний о механизмах развития технических систем и методах решения изобретательских задач. Значение точной формулировки мини-задачи. Три вида противоречий в порядке возрастания сложности разрешения. Законы развития технических систем.

    презентация [248,5 K], добавлен 18.03.2017

  • Оптимизация решения задачи с помощью алгоритма отжига. Анализ теории оптимизации как целевой функции. Метод градиентного спуска. Переменные и описание алгоритма отжига. Представление задачи коммивояжера через граф. Сведение задачи к переменным и решение.

    курсовая работа [784,0 K], добавлен 21.05.2015

  • Общее понятие алгоритма и меры его сложности. Временная и емкостная сложность алгоритмов. Основные методы и приемы анализа сложности. Оптимизация, связанная с выбором метода построения алгоритма и с выбором методов представления данных в программе.

    реферат [90,6 K], добавлен 27.11.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.