Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Вычислительная сложность

Лекция



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

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

В частности, теория сложности вычислений определяет NP-полные задачи, которые недетерминированная машина Тьюринга может решить за полиномиальное время, тогда как для детерминированной машины Тьюринга полиномиальный алгоритм неизвестен. Обычно это сложные задачи оптимизации, например, задача коммивояжера.

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

 

Содержание

  • 1 Временная и пространственная сложности
    • 1.1 Асимптотическая сложность
    • 1.2 Примеры
    • 1.3 Замечания
  • 2 Классы сложности
    • 2.1 Класс P
    • 2.2 Класс NP
    • 2.3 Проблема равенства классов P и NP
  • 3 Исследователи
  • 4 Вау!! 😲 Ты еще не читал? Это зря!
  • 5 Примечания
  • 6 Ссылки

 

Временная и пространственная сложности[править ]

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

Количество элементарных операций, затраченных алгоритмом для решения конкретного экземпляра задачи, зависит не только от размера входных данных, но и от самих данных. Например, количество операций алгоритма сортировки вставками значительно меньше в случае, если входные данные уже отсортированы. Чтобы избежать подобных трудностей, рассматривают понятие временной сложности алгоритма в худшем случае.

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

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

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

Асимптотическая сложность[править ]

Несмотря на то, что функция временной сложности алгоритма в некоторых случаях может быть определена точно, в большинстве случаев искать точное ее значение бессмысленно. Об этом говорит сайт https://intellect.icu . Дело в том, что во-первых, точное значение временной сложности зависит от определения элементарных операций (например, сложность можно измерять в количестве арифметических операций, битовых операций или операций на машине Тьюринга), а во-вторых, при увеличении размера входных данных вклад постоянных множителей и слагаемых низших порядков, фигурирующих в выражении для точного времени работы, становится крайне незначительным.

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

ОбозначениеИнтуитивное объяснение Определение
Вычислительная сложность Вычислительная сложность ограничена сверху функцией Вычислительная сложность (с точностью до постоянного множителя) асимптотически Вычислительная сложность или Вычислительная сложность
Вычислительная сложность Вычислительная сложность ограничена снизу функцией Вычислительная сложность (с точностью до постоянного множителя) асимптотически Вычислительная сложность
Вычислительная сложность Вычислительная сложность ограничена снизу и сверху функцией Вычислительная сложность асимптотически Вычислительная сложность
Вычислительная сложность Вычислительная сложность доминирует над Вычислительная сложность асимптотически Вычислительная сложность
Вычислительная сложность Вычислительная сложность доминирует над Вычислительная сложность асимптотически Вычислительная сложность
Вычислительная сложность Вычислительная сложность эквивалентна Вычислительная сложность асимптотически Вычислительная сложность

Примеры[править ]

  • «пропылесосить ковер» требует время, линейно зависящее от его площади (Вычислительная сложность), то есть на ковер, площадь которого больше в два раза, уйдет в два раза больше времени. Соответственно, при увеличении площади ковра в сто тысяч раз, объем работы увеличивается строго пропорционально в сто тысяч раз, и т. п.
  • «найти имя в телефонной книге» требует всего лишь время, логарифмически зависящее от количества записей (Вычислительная сложность), так как открыв книгу примерно в середине, мы уменьшаем размер «оставшейся проблемы» вдвое (за счет сортировки имен по алфавиту). Таким образом, в книге, толщиной в 1000 страниц, любое имя находится не больше чем за Вычислительная сложность раз (открываний книги). При увеличении объема страниц до ста тысяч, проблема все еще решается за Вычислительная сложность заходов. (См.  Двоичный поиск .)

Замечания [править ]

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

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

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

Если программа будет работать только с «малыми» входными данными, то степень роста времени выполнения будет иметь меньшее значение, чем константа, присутствующая в формуле времени выполнения[1]. Вместе с тем и понятие «малости» входных данных зависит от точного времени выполнения конкурирующих алгоритмов. Существуют алгоритмы, такие как алгоритм целочисленного умножения, асимптотически самые эффективные, но которые никогда не используют на практике даже для больших задач, так как их константы пропорциональности значительно превосходят подобные константы других, более простых и менее «эффективных» алгоритмов. Другой пример — фибоначчиевы кучи, несмотря на асимптотическую эффективность, с практической точки зрения программная сложность реализации и большие значения констант в формулах времени работы делают их менее привлекательными, чем обычные бинарные деревья [1].

Вычислительная сложность Если решение некоторой задачи для n-вершинного графа при одном алгоритме занимает время (число шагов) порядка nC, а при другом — порядка n+n!/C, где C — постоянное число , то согласно «полиномиальной идеологии» первый алгоритм практически эффективен, а второй — нет, хотя, например, при С=10(1010) дело обстоит как раз наоборот.[2]
 
А. А. Зыков
Вычислительная сложность

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

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

В численных алгоритмах точность и устойчивость алгоритмов не менее важны, чем их временная эффективность.

Классы сложности [править ]

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

Класс P[править ]

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

Класс NP[править ]

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

Проблема равенства классов P и NP[править ]

Вопрос о равенстве этих двух классов считается одной из самых сложных открытых проблем в области теоретической информатики. Математический институт Клэявключил эту проблему в список  проблем тысячелетия, предложив награду размером в один миллион долларов США за ее решение.

Исследователи[править ]

  • Стивен Кук
  • Ричард Карп
  • Леонид Левин
  • Александр Разборов
  • Ади Шамир
  • Анатолий Плотников

Вау!! 😲 Ты еще не читал? Это зря![править ]

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

создано: 2015-01-08
обновлено: 2024-11-13
336



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Алгоритмы и теория алгоритмов

Термины: Алгоритмы и теория алгоритмов