Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VOPROS_K_EKZAMENU_SiAOD.docx
Скачиваний:
50
Добавлен:
27.09.2019
Размер:
120.34 Кб
Скачать
  1. Понятие эффективности алгоритмов и программ.

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

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

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

Эффективность программы имеет 2 части:

  1. память

  2. время

Пространственная эффективность измеряется кол-вом памяти, требуемой для выполнения проги.

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

Временная эффективность проги определяется временем нужным для ее выполнения.

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

Лучший способ сравнения эффективностей алгоритмов состоит в сопоставлении их порядков сложности.

Теория сложности занимается оценкой сложности разработки алгоритмов с т. зр. математики.

Порядок сложности алгоритма выражает его эффективность обычно через количество обрабатываемых данных.

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

  1. Виды эффективности алгоритмов программ.

19й вопрос. Пространственная и временная.

  1. Порядок сложности алгоритма.

19й вопрос.(его конец). Порядок сложн. алг. – это функция, доминирующая над точным выражением временной сложности. Ф-ция G(x) доминирует над F(x), если сущ. константа С такая, что С * G(x) > F(x) для всех возможных значений х.

При анализе сложности исп. частный случай доминирования – асимптотическое доминирование.

  1. Понятие «доминирующая» функция, «асимптотически доминирующая» функция.

Порядок сложн. алг. – это функция, доминирующая над точным выражением временной сложности. Ф-ция G(x) доминирует над F(x), если сущ. константа С такая, что С * G(x) > F(x) для всех возможных значений х.

При анализе сложности исп. частный случай доминирования – асимптотическое доминирование.

Ф-ция G(x) – асимптотически доминирует над F(x), если G(x) доминирует над F(x) для всех больших значений х.

С инета:

Порядок алгоритма - это функция, доминирующая над точным выражением временной сложности.

Функция f(n) имеет порядок O(g(n)), если имеется константа К и счетчик n0, такие, что f(n)(K*g(n), для n>n0.

Например:

Известно, что точное время обработки массива Действительное время(Длина массива)= Длина массива2+5*Длина массива+100;

Вспомогательная функция: Оценка времени(Длина массива)=1,1* Длина массива2

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

// поряд. вр (n) = n2, т. е порядок времени(длина массива)=длина массива2.

//Порядок времени - порядок сложности для функции время.

Порядок сложн. алгоритма обработки массива будет O(Длина массива2) или O(N2).

O-функции выражают относительную скорость алгоритма в зависимости от некоторой переменной (или переменных).

  1. О - обозначения.

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

время (n) = O (порядок вр. (n))

n2 + 5n + 100 = O(n2)

О- функции выражают относительную скорость алгоритма в зависимости от некоторой переменной или переменных.

Скорость работы алгоритма O(N) – падает пропорционально росту n.

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

  1. О - анализ.

Думаю, что эт 22 вопрос.. можно туда зафигачить 23й и 25