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

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

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

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

В этой книге мы интересуемся дизайном «хороших» структур данных и algo-rithms. Проще говоря, структура данных - систематический способ организовать и доступ - данные о луге, и алгоритм - постепенная процедура выполнения некоторой задачи за конечное количество времени. Эти понятия главные в вычислении, но быть в состоянии классифицировать некоторые структуры данных и алгоритмы как «хорошие», у нас должны быть точные способы проанализировать их.

Основной аналитический инструмент, который мы используем в этой книге, включает характеристику пробега - ning времена алгоритмов и операций по структуре данных с космическим использованием, также представляющим интерес. Продолжительность - естественная мера «совершенства», так как время пред - cious ресурс - компьютерные решения должны бежать максимально быстро.

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

Мы интересуемся характеристикой продолжительности алгоритма как функция входного размера. Но каков надлежащий способ измерить его?