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

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

4.1.3 Линейная функция

Другая простая все же важная функция - линейная функция,

f (n) = n.

Таким образом, учитывая входной n стоимости, линейная функция f назначает стоимость n саму.

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

4.1.4 Функция N-Log-N

Следующая функция, которую мы обсуждаем в этой секции, является функцией n-log-n,

f (n) = n регистрируют n.

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

4.1.5 Квадратная функция

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

f (n) = n2.

Таким образом, учитывая входной n стоимости, функция f назначает продукт n с собой (другими словами, «n согласовался»).

Главная причина, почему квадратная функция появляется в анализе algo-rithms, состоит в том, что есть много алгоритмов, которые вложили петли, где внутренняя петля выполняет линейное число операций, и внешняя петля выполнена a

линейное количество раз. Таким образом, в таких случаях, алгоритм выполняет n n = n2

операции.

4.1. Семь функций, используемых в этой книге 157

Вложенные петли и квадратная функция

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

повторение петли использует одну операцию, второе использование две операции, третье использование три операции, и так далее. Таким образом, число операций

1 + 2 + 3 + + (n- 2) + (n- 1) + n. Другими словами, это - общее количество операций, которые выполнены

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

В 1787 немецкий школьный учитель решил сохранять свои 9-и 10-летних учеников занятыми сложением целых чисел от 1 до 100. Но почти немедленно один из детей утверждал, что имел ответ! Учитель был подозрителен, поскольку у студента был только ответ на его сланце. Но ответ был правилен - 5,050 - и студент, Карл Гаусс, вырос одним из самых великих математиков его времени. Широко подозревается, что молодой Гаусс использовал следующую идентичность.

Суждение 4.3: Для любого целого числа n³ 1, мы имеем:

1 + 2 + 3 + + (n- 2) + (n- 1) + n = n (n + 1). 2

Мы даем два «визуальных» оправдания Суждения 4.3 в рисунке 4.1.

(a) (b)

Рисунок 4.1: Визуальные оправдания Суждения 4.3. Обе иллюстрации визуализируют идентичность с точки зрения общей площади, покрытой n прямоугольниками ширины единицы с высотами 1, 2..., n. В (a) прямоугольники, как показывают, покрывают большой треугольник области n2/2 (базируйте n и высоту n) плюс n небольшие треугольники области 1/2 каждый (базируются 1 и высота 1). В (b), который применяется только, когда n даже, прямоугольники, как показывают, покрывают большой прямоугольник основы n/2 и высоты n + 1.

158