Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

170 Глава 4. Аналитические инструменты

Большая омега

Так же, как большое о примечание обеспечивает асимптотический способ сказать, что функция

«меньше чем или равный» другой функции, следующие примечания обеспечивают asymp-totic способ сказать, что функция растет со скоростью, которая «больше, чем или равна» тому из другого.

Позвольте f (n) и g (n) быть функциями, наносящими на карту неотрицательные целые числа к действительным числам. Мы говорим, что f (n) являетсяW (g (n)) (объявленный «f (n), большая Омега g (n)»), если g (n)

O (f (n)), то есть, есть реальный постоянный c> 0 и целое число постоянный n0 ³ 1 такой

это

f (n)³ cg (n), для n ³ n0.

Это определение позволяет нам говорить асимптотически, что одна функция больше, чем или

равняйтесь другому до постоянного множителя. Пример 4.15: 3n регистрируются, n + 2n являетсяW (n, регистрируют n).

Оправдание: 3n регистрируются, n + 2n³ 3n регистрируют n для n³ 2.

Большая тета

Кроме того, есть примечание, которое позволяет нам говорить, что две функции растут на

тот же самый уровень, до постоянных множителей. Мы говорим, что f (n) являетсяQ (g (n)) (объявленный «f (n), большая Тета g (n)»), если f (n) является O (g (n)), и f (n) -W (g (n)), то есть, там реальны

константы c > 0 и c ′′> 0, и целое число постоянный n0 ³ 1, таким образом, что

c′g (n)£ f (n)£ c ′′ g (n), для n ³ n0.

Пример 4.16: 3n регистрируют n + 4n +, 5 регистраций n являютсяQ (n, регистрируют n).

Оправдание: 3n регистрируются, n3£ n регистрируют n + 4n +, 5 регистраций n£ (3 + 4 + 5) n регистрируют n для n³ 2.

4.2.4 Асимптотический анализ

Предположим, что два алгоритма, решая ту же самую проблему доступны: алгоритм A,

у которого есть продолжительность O (n), и алгоритм B, у которого есть продолжительность O (n2). Какой алгоритм лучше? Мы знаем, что n - O (n2), который подразумевает, что алгоритм A асимптотически лучше, чем алгоритм B, хотя для маленькой ценности n, у B может быть более низкая продолжительность, чем A.

Мы можем использовать большое о примечание, чтобы заказать классы функций асимптотическим темпом роста. Наши семь функций заказаны, увеличив темп роста в se-айве ниже, то есть, если функция f (n) предшествует функции g (n) в последовательности, то f (n) является O (g (n)):

1 регистрация n n n регистрируют n n2 n3 2n.

4.2. Анализ алгоритмов

Мы иллюстрируем темпы роста некоторых важных функций в Таблице 4.2.

n

регистрация n

n

n регистрируют n

n2

n3

2n

8

3

8

24

64

512

256

16

4

16

64

256

4, 096

65, 536

32

5

32

160

1, 024

32, 768

4, 294, 967, 296

64

6

64

384

4, 096

262, 144

1,841019

128

7

128

896

16, 384

2, 097, 152

3,401038

256

8

256

2, 048

65, 536

16, 777, 216

1,151077

512

9

512

4, 608

262, 144

134, 217, 728

1,3410154

Таблица 4.2: Отобранные ценности фундаментальных функций в анализе алгоритма.

171

Мы далее иллюстрируем важность асимптотической точки зрения в Таблице 4.3. Этот стол исследует максимальный размер, допускал входной случай, который является про - cessed алгоритмом за 1 секунду, 1 минуту и 1 час. Это показывает важность хорошего дизайна алгоритма, потому что асимптотически медленный алгоритм разбит в конечном счете асимптотически более быстрым алгоритмом, даже если постоянный множитель для асимптотически более быстрого алгоритма хуже.

Управление Максимальный проблемный Размер (n) Время (µs) 1 вторая 1 минута 1 час

400n 2,500 150,000 9,000,000

2n2 707 5,477 42,426

2n 19 25 31

Таблица 4.3: Максимальный размер проблемы, которая может быть решена через 1 секунду, 1 минуту и 1 час, для различной продолжительности, измеренной в микросекундах.

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

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

400n 256 м

2n2 16 м

2n m+8

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