Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Сложность алгоритмов

Содержание

План:1. Временная сложность алгоритма2. Асимптотическая сложность3. Классы сложности алгоритмов
Лекция 6 Сложность алгоритмов План:1. Временная сложность алгоритма2. Асимптотическая сложность3. Классы сложности алгоритмов Центральная задача теории алгоритмов — выяснить, существует ли алгоритм решения 1. Временная сложность алгоритма Исполнение любого алгоритма требует: определенного объема памяти компьютера для размещения данных и Эффективным называется алгоритм, обеспечивающий наиболее быстрое получение результата в приемлемое Временная сложность – быстродействие  Пространственная сложность – объем требуемой Время работы алгоритма (Т) - количество выполненных им элементарных операций Временная сложность алгоритма Т(n)- это функция, которая каждому размеру задачи Пример математической оценки временной сложности алгоритмаРассмотрим два алгоритма вычисления значения многочлена степени Алгоритм 2:вынесем Х-ы за скобки и перепишем многочлен в видеPn(x) = a0 В теоретической информатике при сравнении алгоритмов используется их асимптотическая сложность Функция T(n) = n2/2 + 3n/2 + 1  возрастает Правила формирования оценки O ()1. При определении O() берется наиболее быстро растущая 2. При оценке O() константы не учитываютсяСледствия:1) Алгоритмы с одинаковым O() могут 2) Алгоритм со временем O(n2) может работать значительно быстрее алгоритма O(n) при 3) Основание логарифма внутри символа O() не пишетсяНапример, пусть у нас есть 3. Классы сложности алгоритмов Множество вычислительных проблем, для которых существуют алгоритмы, схожие по временной Класс сложности: О(1)Название: Алгоритмы единичной сложностиХарактеристика:  алгоритмы, использующие часть входных данных Класс сложности: О(log n)Название: Алгоритмы логарифмической сложностиПример: большинство алгоритмов поиска Пример алгоритма сложности О(log n) Двоичный поиск  Дан массив, в котором T(n) = log2n + 1. Класс сложности: О(n)Название: Алгоритмы линейной сложностиХарактеристика:   Для алгоритмов класса O(n) Пример алгоритма сложности О(n) Линейный поиск  Дан массив, в котором элементы В этом алгоритме число сравнений (в худшем случае) равно T(n) = n, Класс сложности: О(n* log n)Название: специального названия не имеетПример:  алгоритмы быстрой Класс сложности: О(n2)Название: Алгоритмы квадратичной сложностиХарактеристика:   Для алгоритмов класса O(n2) Сортировка обменом (метод пузырька)1. При 1м проходе по массиву элементы попарно сравниваются 7. Количество проходов по массиву равно m-1, где m – это количество Для преобразования массива, состоящего из n элементов, необходимо просмотреть его n-1 раз, Сортировка выбором1. Найти максимальный элемент (max) в массиве (arr).2. Поместить его на Максимальное количество перестановок на некотором массиве длины n будет равно n-1, при Класс сложности: О(n3)Название: Алгоритмы кубический сложностиХарактеристика:   В алгоритмах класса O(n3) Класс сложности: О(nх)Название: Полиномиальные алгоритмыХарактеристика:    Все вышеперечисленные классы являются В рамках теории сложности любые алгоритмы, работающие с полиномиальной скоростью, Класс сложности: О(хn) Класс - EXPTIMEНазвание: Экспоненциальные алгоритмыХарактеристика:    У Класс сложности: О(n!)Название: Факториальные алгоритмыПримеры:   Такие алгоритмы в основном, используются Наряду с алгоритмически неразрешимыми задачами, существуют объективно сложные задачи - трудоемкость которых Пусть осуществляется 1 млн. операций в секунду Вопросы к лекции1. Какой алгоритм называют эффективным?2. Почему для определения сложности алгоритма СеминарОценка сложности простейших алгоритмов сортировки и поиска
Слайды презентации

Слайд 2 План:
1. Временная сложность алгоритма
2. Асимптотическая сложность
3. Классы сложности

План:1. Временная сложность алгоритма2. Асимптотическая сложность3. Классы сложности алгоритмов

алгоритмов






Слайд 3 Центральная задача теории алгоритмов — выяснить,

Центральная задача теории алгоритмов — выяснить, существует ли алгоритм решения

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

Если да, то можно ли им воспользоваться на практике, при современном уровне развития вычислительной техники?

Т.е. способен ли компьютер за приемлемое время получить результат?



Слайд 4
1. Временная сложность алгоритма

1. Временная сложность алгоритма

Слайд 5
Исполнение любого алгоритма требует:

определенного объема памяти компьютера

Исполнение любого алгоритма требует: определенного объема памяти компьютера для размещения данных

для размещения данных и программы,
времени процессора по обработке этих

данных.



Слайд 6
Эффективным называется алгоритм, обеспечивающий наиболее быстрое

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

получение результата в приемлемое время в ограниченном объеме оперативной

памяти.

Для сравнения алгоритмов по эффективности необходимо уметь оценивать сложность алгоритмов

Слайд 7
Временная сложность – быстродействие
Пространственная

Временная сложность – быстродействие Пространственная сложность – объем требуемой памяти

сложность – объем требуемой памяти

Для определения

сложности алгоритма оценивают временную сложность алгоритма



Слайд 8
Время работы алгоритма (Т) - количество

Время работы алгоритма (Т) - количество выполненных им элементарных операций

выполненных им элементарных операций (не в секундах!)

Позволяет оценивать именно качество алгоритма, а не свойства исполнителя (быстродействие компьютера)

Размер задачи (n) - объем входных данных, необходимых для ее решения.




Слайд 9

Временная сложность алгоритма Т(n)- это функция,

Временная сложность алгоритма Т(n)- это функция, которая каждому размеру задачи

которая каждому размеру задачи n ставит в соответствие максимальное

количество элементарных операций выполненных в ходе выполнения алгоритма

Слайд 10 Пример математической оценки временной сложности алгоритма
Рассмотрим два алгоритма

Пример математической оценки временной сложности алгоритмаРассмотрим два алгоритма вычисления значения многочлена

вычисления значения многочлена степени n в заданной точке x
Pn(x)

= anxn + an-1xn-1 + ... + aixi + ... + a1x1 + a0

Алгоритм 1:
для каждого слагаемого, кроме a0 возвести x в заданную степень последовательным умножением и затем домножить на коэффициент. Затем слагаемые сложить.
Вычисление i-го слагаемого(i=1..n) требует i умножений.
Значит, всего 1 + 2 + 3 + ... + n = n(n+1)/2 умножений.
Кроме того, требуется n+1 сложение.
Всего n(n+1)/2 + n + 1= n2/2 + 3n/2 + 1 операций.

Слайд 11 Алгоритм 2:
вынесем Х-ы за скобки и перепишем многочлен

Алгоритм 2:вынесем Х-ы за скобки и перепишем многочлен в видеPn(x) =

в виде
Pn(x) = a0 + x(a1 + x(a2 +

... ( ai + .. x(an-1 + anx))).

Будем вычислять выражение изнутри.
Самая внутренняя скобка требует 1 умножение и 1 сложение.
Ее значение используется для следующей скобки...
И так, 1 умножение и 1 сложение на каждую скобку, которых.. n-1 штука.
И еще после вычисления самой внешней скобки умножить на x и прибавить a0.
Всего n умножений + n сложений = 2n операций.

Слайд 12
В теоретической информатике при сравнении алгоритмов

В теоретической информатике при сравнении алгоритмов используется их асимптотическая сложность

используется их асимптотическая сложность O() , т. е. скорость

роста количества операций при больших значениях n.

Слайд 13 Функция T(n) = n2/2 + 3n/2

Функция T(n) = n2/2 + 3n/2 + 1 возрастает приблизительно

+ 1
возрастает приблизительно как n2

Отбрасываем:
- сравнительно медленно растущие слагаемые (3n/2+1)
- константные множители 1/2

Получаем асимптотическую оценку сложности для алгоритма 1: O(n2) (О – нотация)

Читается как "О большое от эн квадрат".



Слайд 15 Правила формирования оценки O ()

1. При определении O()

Правила формирования оценки O ()1. При определении O() берется наиболее быстро

берется наиболее быстро растущая часть T(n).

Например, если

в программе одна функция, например, умножение, выполняется O(n) раз, а сложение - O(n2) раз, то общая сложность программы - O(n2)



Слайд 16
2. При оценке O() константы не учитываются

Следствия:

1) Алгоритмы

2. При оценке O() константы не учитываютсяСледствия:1) Алгоритмы с одинаковым O()

с одинаковым O() могут иметь различную эффективность

Например,

один алгоритм делает 2n+1 операций, а другой - 2500n + 1000. Оба они имеют оценку O(n), так как их время выполнения растет линейно.



Слайд 17 2) Алгоритм со временем O(n2) может работать значительно

2) Алгоритм со временем O(n2) может работать значительно быстрее алгоритма O(n)

быстрее алгоритма O(n) при малых n.

Например, реальное

количество операций первого алгоритма может быть n2 + 10n + 6,
а второго - 1000000*n + 5. (больше умножений)

Впрочем, второй алгоритм рано или поздно обгонит первый... n2 растет куда быстрее 1000000*n.

Слайд 18 3) Основание логарифма внутри символа O() не пишется

Например,

3) Основание логарифма внутри символа O() не пишетсяНапример, пусть у нас

пусть у нас есть O(log2n),
но log2n=log3n/log32, а log32,
как и

любую константу, О() не учитывает.
Таким образом, O(log2n) = O( log3n).
К любому основанию мы можем перейти аналогично, а значит и писать его не имеет смысла.

Слайд 19 3. Классы сложности алгоритмов

3. Классы сложности алгоритмов

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

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

алгоритмы, схожие по временной сложности, называется классом сложности



Наиболее часто встречающиеся классы сложности :

Слайд 21 Класс сложности: О(1)

Название: Алгоритмы единичной сложности

Характеристика:

Класс сложности: О(1)Название: Алгоритмы единичной сложностиХарактеристика:  алгоритмы, использующие часть входных

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

данные. Такие алгоритмы выполняется за один проход вне зависимости от значения n

Пример
Дан массив A длины n. Вычислить сумму первых трех элементов массива

Решение этой задачи содержит всего один оператор:
S := A[1] + A[2] + A[3], Т(n) = 3


Слайд 22 Класс сложности: О(log n)

Название: Алгоритмы логарифмической сложности

Пример: большинство

Класс сложности: О(log n)Название: Алгоритмы логарифмической сложностиПример: большинство алгоритмов поиска

алгоритмов поиска



Слайд 23 Пример алгоритма сложности О(log n)
Двоичный поиск

Дан

Пример алгоритма сложности О(log n) Двоичный поиск Дан массив, в котором

массив, в котором элементы упорядочены по возрастанию.

Найти в нем

заданное значение x или сообщить,
что его нет.

Применяется метод двоичного поиска (дихотомии): сначала ширина интервала поиска — все n элементовмассива. На каждом шаге этот интервал делится на 2, процесс завершается, когда левая и правая границы интервала совпадут.

Слайд 24 T(n) = log2n + 1.

T(n) = log2n + 1.

Слайд 25 Класс сложности: О(n)

Название: Алгоритмы линейной сложности

Характеристика:

Класс сложности: О(n)Название: Алгоритмы линейной сложностиХарактеристика:  Для алгоритмов класса O(n)

Для алгоритмов класса O(n) для каждого входного элемента выполняется

только одно действие.

На самом деле, может быть, конечно, не одно, а два, три, и т.д., но главное не больше С*N, где С — константа.

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

Слайд 26 Пример алгоритма сложности О(n)
Линейный поиск
Дан массив,

Пример алгоритма сложности О(n) Линейный поиск Дан массив, в котором элементы

в котором элементы расположены в произвольном порядке. Найти в

нем заданное значение x или сообщить, что его нет.

Решение этой задачи сводится к последователь-
ному просмотру всех элементов массива

Слайд 27 В этом алгоритме число сравнений (в худшем случае)

В этом алгоритме число сравнений (в худшем случае) равно T(n) =

равно T(n) = n, поэтому он имеет линейную сложность.


Слайд 28 Класс сложности: О(n* log n)

Название: специального названия не

Класс сложности: О(n* log n)Название: специального названия не имеетПример:  алгоритмы

имеет

Пример:
алгоритмы быстрой сортировки, сортировки слиянием и

"кучной" сортировки

Слайд 29 Класс сложности: О(n2)

Название: Алгоритмы квадратичной сложности

Характеристика:

Класс сложности: О(n2)Название: Алгоритмы квадратичной сложностиХарактеристика:  Для алгоритмов класса O(n2)

Для алгоритмов класса O(n2) каждый входной элемент обрабатывается (или

проходится) С*n2 раз. Это означает (для наглядности, только как одну из возможностей) наличие вложенных (двойных) циклов.

Пример:
в основном, все простейшие алгоритмы сортировки

Слайд 30 Сортировка обменом (метод пузырька)
1. При 1м проходе по

Сортировка обменом (метод пузырька)1. При 1м проходе по массиву элементы попарно

массиву элементы попарно сравниваются между собой: 1й со 2м,

затем 2й с 3м, следом 3й с 4м и т.д. Если предшествующий элемент оказывается больше последующего, то их меняют местами.

2. Постепенно самое большое число оказывается последним. Остальная часть массива остается не отсортированной

3. При 2м проходе незачем сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте. Значит, число сравнений будет на одно меньше.

4. На 3м проходе уже не надо сравнивать предпоследний и 3й элемент с конца. Поэтому число сравнений будет на два меньше, чем при первом проходе.

5. В конце концов, при проходе по массиву, когда остаются только два элемента, которые надо сравнить, выполняется только одно сравнение.

6. После этого первый элемент не с чем сравнивать, и, следовательно, последний проход по массиву не нужен.

Слайд 31
7. Количество проходов по массиву равно m-1, где

7. Количество проходов по массиву равно m-1, где m – это

m – это количество элементов массива.
8.Количество сравнений в каждом

проходе равно m-i, где i – это номер прохода по массиву (первый, второй, третий и т.д.).
9. При обмене элементов массива обычно используется "буферная" (третья) переменная, куда временно помещается значение одного из элементов.


Слайд 33
Для преобразования массива, состоящего из n элементов, необходимо

Для преобразования массива, состоящего из n элементов, необходимо просмотреть его n-1

просмотреть его n-1 раз, каждый раз уменьшая диапазон просмотра

на один элемент.
Количество сравнений n-1+n-2+n-3+…+1 = n(n-1)/2
Количество присваиваний 3(n-1+n-2+n-3+…+1) = 3n(n-1)/2

T(n) = n(n-1)/2 + 3n(n-1)/2



Слайд 34 Сортировка выбором

1. Найти максимальный элемент (max) в массиве

Сортировка выбором1. Найти максимальный элемент (max) в массиве (arr).2. Поместить его

(arr).

2. Поместить его на последнее место (j).

3. Элемент, находившийся

в конце массива переместить на место, где прежде находился max.

4. Уменьшить просматриваемую область массива на единицу (j – 1).

5. Снова найти максимальный элемент в оставшейся области.

6. Поместить его в конец просматриваемой области массива.
и т.д.


Слайд 36 Максимальное количество перестановок на некотором массиве длины n

Максимальное количество перестановок на некотором массиве длины n будет равно n-1,

будет равно n-1, при этом число сравнений будет одним

и тем же.
В общем случае
Количество сравнений n-1+n-2+n-3+…+1 = n(n-1)/2
Количество присваиваний 3(n-1)
T(n) = n(n-1)/2 + 3(n-1)



Слайд 37 Класс сложности: О(n3)

Название: Алгоритмы кубический сложности

Характеристика:

Класс сложности: О(n3)Название: Алгоритмы кубический сложностиХарактеристика:  В алгоритмах класса O(n3)

В алгоритмах класса O(n3) каждый элемент обрабатывается С*n3 раз

(цикл-в-цикле-в-цикле)

Пример:
умножение матриц размера n*n

Слайд 38 Класс сложности: О(nх)

Название: Полиномиальные алгоритмы

Характеристика:

Класс сложности: О(nх)Название: Полиномиальные алгоритмыХарактеристика:  Все вышеперечисленные классы являются подклассами

Все вышеперечисленные классы являются подклассами общего класса: O(nx), где

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

Также этот класс алгоритмов называют Р-класс.



Слайд 39
В рамках теории сложности любые алгоритмы,

В рамках теории сложности любые алгоритмы, работающие с полиномиальной скоростью,

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

Поэтому

очень много исследований посвящено вопросам типа "возможен ли для данной задачи полиномиальный алгоритм"?

Слайд 40 Класс сложности: О(хn) Класс - EXPTIME

Название: Экспоненциальные алгоритмы

Характеристика:

Класс сложности: О(хn) Класс - EXPTIMEНазвание: Экспоненциальные алгоритмыХарактеристика:  У экспоненциальных



У экспоненциальных алгоритмов сложность увеличивается быстрее

любого полинома.

Большинство экспоненциальных алгоритмов – это варианты полного перебора.





Слайд 41 Класс сложности: О(n!)

Название: Факториальные алгоритмы

Примеры:

Такие

Класс сложности: О(n!)Название: Факториальные алгоритмыПримеры:  Такие алгоритмы в основном, используются

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

сочетаний, перестановок


Слайд 42
Наряду с алгоритмически неразрешимыми задачами, существуют объективно сложные

Наряду с алгоритмически неразрешимыми задачами, существуют объективно сложные задачи - трудоемкость

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

техники



Слайд 43 Пусть осуществляется 1 млн. операций в секунду

Пусть осуществляется 1 млн. операций в секунду

Слайд 44 Вопросы к лекции
1. Какой алгоритм называют эффективным?

2. Почему

Вопросы к лекции1. Какой алгоритм называют эффективным?2. Почему для определения сложности

для определения сложности алгоритма оценивают не пространственную, а временную

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

3. Что характеризует асимптотическая оценка сложности алгоритма?

4. В каких случаях алгоритм, имеющий асимптотическую сложность O(n2), может работать быстрее, чем алгоритм с асимптотической сложностью O(n)?

5. Какие классы алгоритмов считаются „медленными“?

  • Имя файла: slozhnost-algoritmov.pptx
  • Количество просмотров: 207
  • Количество скачиваний: 8