Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ponyatie_slozhnosti_algoritma.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
147.01 Кб
Скачать
  1. Понятие сложности алгоритма, оценки времени исполнения.

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

Время поиска оценивается как О(n) (O большое от n)

O(log n) потребуется 20 микросекунд, O(n2) – более 12 дней

Если n – длина строки, то <кол-во операций>=2*n2 - для сложения матриц, 32 (n2) раз – для перемножения матриц.

2*n3 - алгоритм кубической сложности О(n3).

O() показывает исключительно асимптотику!

Основание логарифма не пишется.

Пусть есть O(log2 n).

log 2 n = log 3 n / log 3 2,

O(log 2 n) = O(log 3 n)

  1. Общая классификация вычислительных алгоритмов.

Вычислительные алгоритмы – для вычисления математических объектов(констант, функций, уравнений и тд)

  1. Теория чисел – вычисление констант и математических функций

  2. Решение алгебраических задач

  3. Нахождение корней уравнений

  4. Приближение функций

  5. Вычислит. и геометрия и др.

  1. Точность представления чисел.

Для реальных вычислений нужно использовать тип double.

Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) в десятичной системе находится на полуинтервале [0; 1). Распространена также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно).

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

Число двойной точности (double) — компьютерный формат представления чисел, занимающий в памяти два машинных слова (в случае 32-битного компьютера — 64 бита или 8 байт). Часто используется благодаря своей неплохой точности, даже несмотря на двойной расход памяти и сетевого трафика относительно чисел одинарной точности.

  1. Вычисление «машинного нуля».

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

 #include <stdio.h>     void main ()

{      float e, e1;      int k=0;      e=1.0;      m: e=e/2.0;      e1=e+1.0;      k++;      if (e1>1.0) goto m;      printf ("\n Число делений на

2 %6d\n", k) ;      printf ("машинный нуль

%e\n", e) ;     }

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