рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

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

Сложность алгоритмов - раздел Философия, Глава 1. Основы теории множеств   Применение Математики Во Многих Приложениях, Требует Как Прав...

 

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

Основные понятия

 

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

В качестве другого примера рассмотрим классическую задачу о коммивояжере. Параметры этой массовой задачи состоят из конечного набора "городов" C = {c1, c2,..., cm} и "расстояний" d(ci, cj) между каждой парой городов ci, cj из C. Решение - это такой упорядоченный набор <ck(1), ck(2),..., ck(m)> заданных городов, который минимизирует величину

d(ck(i), ck(i+1)) +d(ck(m), ck(1)).

Это выражение дает длину маршрута, начинающегося в городе ck(1), проходящего последовательно через все города и возвращающегося в ck(1) непосредственно из последнего города ck(m). Индивидуальная задача о коммивояжере задается любыми конкретными множествами {c1, c2,..., cm} и {d(ci, cj)}.

С каждым частным случаем проблемы IÎT мы связываем размер |I| (обычно целое число). Эта функция |I| не единственна, и ее выбор диктуется теоретическими и практическими соображениями, связанными с тем, с какой точки зрения интересна эта проблема.

Возвратимся к примеру умножения матриц, отметим, что разумной мерой для пары I=(A,B) (n´n)-матриц, которые надо перемножить, является |I|=n. Если мы изучаем объем памяти, требующейся для алгоритма умножения матриц, то подходящей может быть мера |I|=n2. В задаче о коммивояжере |I| можно определить как количество данных городов m.

Пусть T - проблема и A - алгоритм, решающий ее. При решении частного случая IÎT алгоритм A выполняет некоторую последовательность вычислений SI. С SI мы связываем некоторые числовые характеристики.

Существенными являются, например, следующие характеристики:

· длина SI, которая характеризует время вычисления;

· глубина SI, т. е. число уровней параллельных шагов, на которые SI может быть разложено; она соответствует времени, которое SI потребовалось бы при параллельных вычислениях;

· объем памяти, требуемый для вычисления SI;

· вместо общего числа шагов в SI мы можем подсчитывать число шагов некоторого вида, таких как арифметические операции при алгебраических вычислениях, число сравнений при сортировке или число обращений к памяти.

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

После того как выбрана мера m вычисления S функция FA сложности вычисления может быть определена несколькими способами, два главных из них - сложность в наихудшем случае и сложность поведения в среднем.

Первое понятие определяется следующим образом:

FA(n) = max {m(SI) | IÎT, |I| = n}.

Для того чтобы определить поведение в среднем, мы задаем распределение вероятностей T на каждом множестве Tn = {I | IÎT, |I| = n}. Так, для IÎT, |I| = n, величины p(I) - вероятность появления I среди всех других частных случаев размера n. Поведение в среднем алгоритма A тогда определяется так:

MA(n) =

Анализ алгоритмов связан со следующим вопросом. Для заданной функции размера |I| и меры вычисления m(SI) точно определить для данного алгоритма A, решающего проблему T, либо сложность FA для наихудшего случая, либо, при подходящих предположениях, поведение в среднем MA. Вопросы анализа алгоритмов подробно рассматриваются в трехтомнике Д. Кнута "Искусство программирования для ЭВМ" [15].

Сложность задачи - это сложность наилучшего алгоритма, известного для ее решения.

Для оценок сложности потребуется следующее определение. Будем говорить, что функция f(n) есть O(g(n)), если существует константа C такая, что |f(n)| £ C (g(n)) для всех натуральных n.

Основной вопрос теории сложности: насколько успешно или с какой стоимостью может быть решена заданная проблема T? Мы не имеем в виду никакого конкретного алгоритма решения T. Наша цель - рассмотреть все возможные алгоритмы решения T и попытаться сформулировать утверждение о вычислительной сложности, внутренне присущей T. В то время как всякий алгоритм A для T дает верхнюю оценку величины FA сложности T, нас интересует нижняя оценка. Знание нижней оценки представляет интерес математический и кроме того, руководит нами в поиске хороших алгоритмов, указывая, какие попытки заведомо будут безуспешны.

 

Классификация задач по степени сложности

 

Быстрыми являются линейные алгоритмы, которые обладают сложностью порядка n и называются также алгоритмами порядка O(n), где n - размерность входных данных. К линейным алгоритмам относится школьный алгоритм нахождения суммы десятичных чисел, состоящих из n1 и n2 цифр. Сложность этого алгоритма - O(n1 + n2). Есть алгоритмы, которые быстрее линейных, например, алгоритм двоичного поиска в линейном упорядоченном массиве имеет сложность O(log2n), n - длина массива.

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

Полиномиальным алгоритмом (или алгоритмом полиномиальной временной сложности, или алгоритмом принадлежащим классу P) называется алгоритм, у которого временная сложность равна O(nk), где k - целое число > 0. Алгоритмы, для временной сложности которых не существует такой оценки, называются экспоненциальными.

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

Заметим, что при небольших значениях n экспоненциальный алгоритм может быть более быстрым, чем полиномиальный (почему?). Однако различие между этими двумя типами задач велико и всегда проявляется при больших значениях n.

Класс P

Мы называем задачу "хорошей" если для нее существует полиномиальный алгоритм. Приведем список некоторых хорошо решаемых задач.

· Рассортировать множество из n чисел. Сложность поведения в среднем порядка O(n log n) для быстрого алгоритма Хоара [26, стр.316-321].

· Найти эйлеровый цикл на графе из m ребер. В силу теоремы Эйлера мы имеем необходимое и достаточное условие для существования эйлерова цикла и проверка этого условия есть алгоритм порядка O(m) [24, стр. 200-201].

· Задача Прима-Краскала. Дана плоская страна и в ней n городов. Нужно соединить все города телефонной связью так, чтобы общая длина телефонных линий была минимальной. В терминах теории графов задача Прима-Краскала выглядит следующим образом: Дан граф с n вершинами; длины ребер заданы матрицей (d[i,j]), i,j = 1,...,n. Найти остовное дерево минимальной длины. Эта задача решается с помощью жадного алгоритма сложности O(n log n)[26, стр.357-358].

· Кратчайший путь на графе, состоящем из n вершин и m ребер. Сложность алгоритма O(m n) [26, стр.377-382].

· Связные компоненты графа. Определяются подмножества вершин в графе (связные компоненты), такие, что две вершины, принадлежащие одной и той же компоненте, всегда связаны цепочкой дуг. Если n - количество вершин, а m - количество ребер, то сложность алгоритма O(n+m) [26, стр.364-365].

· Быстрое преобразование Фурье [6, стр. 284-302], требующее O(n log n) арифметических операций, - один из наиболее часто используемых алгоритмов в научных вычислениях.

· Умножение целых чисел. Алгоритм Шёнхаге-Штрассена [6, стр. 304-308]. Сложность алгоритма порядка O(n log n log log n). Отметим, что школьный метод для умножения двух n-разрядных чисел имеет сложность порядка O(n2).

· Умножение матриц. Алгоритм Штрассена [6, стр. 259-261] имеет сложность порядка O(nlog 7), для умножения двух матриц размера n´n. Очевидный алгоритм имеет порядок сложности O(n3).

 

– Конец работы –

Эта тема принадлежит разделу:

Глава 1. Основы теории множеств

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

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Сложность алгоритмов

Что будем делать с полученным материалом:

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

Все темы данного раздела:

Начальные понятия теории множеств
  Понятие множества является основным, неопределяемым понятием, поэтому мы можем его только пояснить, например, с помощью следующего псевдоопределения. Определение:

Интуитивный принцип объемности
Определение. Множества Aи B считаются равными, если они состоят из одних и тех же элементов. Записывают A=B, если A и B равны, и A

Отношения
Определение. Упорядоченная пара <x, y> интуитивно определяется как совокупность, состоящая из двух элементов x и y, расположенных в определенном порядке. Две пары <

Функции
Определим понятие "функция", следуя Дирихле. По сути дела при таком определении мы отождествляем функци

Эквивалентность
  Одним из самых важных типов отношений является отношение эквивалентности на множестве. Определение. Рефлексивное, симметричное и транзитивное отношение r н

Зачем мы изучаем математическую логику?
  Логика есть наука о законах и формах познающего мышления. Логика изучает мышление, но не всякое мышление, а лишь те мыслительные процессы, которые направлены на обнаружение и обосно

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

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

Формулы логики высказываний
  Мы определим формальный язык для описания логики высказываний. Это описание чисто синтаксическое и оно не требует, чтобы формулы логики высказывания имели какую-то семантику (смысл)

Равносильность формул
  Пусть A и B - две формулы и {X1, X2,…, Xn} - множество всех выск

Определение.
· Формула называется выполнимой, если на некотором наборе распределения истинностных значений переменных она принимает значение И. · Формула называется тождественно-ложной ил

Нормальные формы формул
  Содержание этого параграфа изложим, следуя [24]. Будем рассматривать формулы, содержащие только логические операции &, Ú, Ø. Символы & и Ú назы

Разрешимость для логики высказываний
  Проблемой разрешимости для логики высказываний называют следующую проблему: существует ли алгоритм, который позволил бы для произвольной формулы в конечное число шагов определить, я

Абстрактное определение булевых алгебр
  Определение.Множество элементов B с заданным на нем двуместными операциями &Ugra

Модель исчисления высказываний
Пусть B - множество высказываний с обычными логическими операциями конъюнкции, дизъюнкции и отрицания и равенство высказываний интерпретируется как их равносильность. Во второй главе показ

Булевы функции. Теорема о нормальной булевой форме
  Рассмотрим еще одну модель булевой алгебры. Определение. Пусть M - произвольная булева алгебра с базисными операциями Ù, Ú, Ø. Рассмот

Определение.
Если булева алгебра M - двухэлементна (т. е. содержит только Ë и Î), то булевы функции называются двоичными функциями. Если в двухэлементной булевой алгебре элементы &Eum

Полные системы булевых функций
  Определение.Система функций {f1, f2,…, fn} называется полной, если любая булева функция может быть выражена через функции f

Переключательные элементы
Пусть имеется "черный ящик" - некоторое устройство, внутренняя структура которого нас не интересует, а известно лишь, что оно имеет n упорядоченных "входов" (например, занумеров

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

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

Выполнимость и общезначимость
Определение.Формула A выполнима в данной интерпретации, если существует такой набор <a1, a2,…, an>, aiÎM, значений св

Формальные аксиоматические теории
Формальная теория представляет собой множество чисто абстрактных объектов (не связанных с внешним миром), в которой представлены

Исчисление высказываний
  Оказывается множество тавтологий логики высказываний можно описать в рамках простой формальной аксиоматической теории - исчисления высказываний. Определим исчисление высказ

Теорема 5.2
1. Любая аксиома в исчислении высказываний является тавтологией. 2. Любая теорема в исчислении высказываний является тавтологией. Доказательство. То, что каждая аксиома A1-A3 явля

Исчисление предикатов
  Исчисление предикатов - это аксиоматическая теория, символами которой являются, по существу, те же символы, что и в логике предикатов: 1) символы предметных переменных: x

Теорема 5.4
1. Аксиомы исчисления предикатов - общезначимые формулы. 2. Формула, получающаяся из общезначимых формулы по любому из правил вывода 1-4, является общезначимой. 3. Любая доказуема

Логический вывод
  Терпеть не могу логики. Она всегда банальна и нередко убедительна. Оскар Уайльд   Формальная математика основывается на аксиоматическом методе. Внача

Метод резолюций
  Логическое программирование является, пожалуй, наиболее впечатляющим примером применения идей и методов математической логики (точнее, одного из ее разделов - теории логического выв

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

Понятие алгоритма и неформальная вычислимость
  В этом разделе будет уточнено понятие алгоритма. Кроме того, будут даны строгие математические понятия, которые формализуют представление о том, что некоторые функции поддаются вычи

Определения
Этот подход к формализации понятия алгоритма принадлежит Гёделю и Клини (1936). Основная идея Гёделя сос

Ламбда - исчисление
Значение ламбда-исчисления   Ламбда-исчисление было изобретено Алонсом Чёрчем около 1930 г. Чёрч первоначально строил l-исчисление как часть

Машины Тьюринга
  Рассмотрим еще один способ определения вычислимых функций, следуя в изложении [29, стр. 12-14]. Ф

Тезис Чёрча
  За последние 60 лет было предложено много различных математических уточнений интуитивного понятия алгоритма. Три из этих подхода мы разобрали. Перечислим некоторые другие альтернати

Некоторые алгоритмически неразрешимые проблемы
  Определение. Предикат M(x) называется разрешимым, если его характеристическая функция, задаваемая формулой cM(x

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

Трехзначная система Я. Лукасевича
Эта пропозиционная логика была построена Я. Лукасевичем в 1920 году [34]. Лукасевич обозначил «истину» за «1», «ложь» за «0» и ввел третье значение – «нейтрально» - ½. Основными функциями им

Логика Гейтинга
  Из закона исключенного терьего в двузначной логике выводятся: 1. ØØх É х 2. х É ØØх Гейтинг создал трехзначную пропозицио

Трехзначная система Бочвара Д.А.
  Система создавалась Бочваром Д.А. [36] для разрешения парадоксов классической математической логики методом формального доказательства бессмысленности определенных высказываний. Нап

К - значная логика Поста Е.Л.
  Логика Поста [37] является обобщением частного случая – двузначной логики, когда К=2. Действительно, по Посту значения истинности принимают значения 1, 2,…,К (при К ³ 2 и К – к

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

Наименование тем
  Введение   История развития математической логики и теории алгоритмов. Математическая логика и основания математики. Теория алгоритмов и принципиальные возмож

КОНТРОЛЬНАЯ № 2
Вариант 1   1. Записать составные высказывания в виде формул, употребляя высказывательные переменные для обозначения простых высказываний: "Для того, чтобы x бы

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги