Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
10_САОД.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
333.31 Кб
Скачать

1.Алгоритм, атд, структура. Анализ алгоритмов.

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

Определим структуру данных как совокупность элементов данных, между которыми установлены определенные отношения (связи)

Структуры данных принято рассматривать на двух уровнях — логическом и физическом. На логическом (абстрактном или внешнем) уровне рассматриваются наиболее существнные признаки структуры, которые не зависят от способа внутреннего представления данных в памяти.

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

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

требования к алгоритму:

однозначность (определенность)— каждая инструкция алгоритма должна быть понятна исполнителю алгоритма и иметь однозначное толкование.

конечность — решение задачи должно быть получено за конечное число шагов (т.е. «зацикливание» недопустимо) для любых входных данных.

детерминированность— для одних и тех же входных данных алгоритм должен каждый раз выдавать один и тот же результат.

Вычислительные модели

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

Одна из наиболее известных таких моделей - машина Тьюринга.

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

Под эффективностью алгоритма понимается рациональное использование ресурсов заданной вычислительной модели

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

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

Типичные временные оценки сложности

Оценка

Пояснение и примеры задач

Время работы при n=10

Время работы при n=100

0(1)

Время выполнения алгоритма не зависит от объёма входных данных

100 нc

100 нc

0 (log n)

Логарифмическое время. Например, двоичный поиск, поиск в сбалансированном дереве

332 нс

664 не

0(n)

Линейное время. Например, каж-дый элемент массива обрабаты-вается постоянное число раз.

1 МКС

10 мкс

0(n* log n)

Обычно характерно для программ

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

3,32 мкс

66.44 мкс

0(nk)

Полиномиальная сложность. Большое число разнообразных алгоритмов.

10 мкс

(для к=2)

1 с

(для к=2)

0(kn)

Экспоненциальная сложность. Характерна для переборных алгоритмов.

102 мкс

(для к=2)

4,2*1015 лет (для к=2)

0(n!)

Факторнальная сложность. Также может встретиться в переборных алгоритмах.

0.363 с

1.08*10146 лет

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]