Вычисление полинома в точке с помощью алгоритма Горнера
Задан многочлен P(x):
.
Пусть требуется вычислить значение данного многочлена при фиксированном значении x = x0. Представим многочлен P(x) в следующем виде:
.
Определим следующую последовательность:
![]()
![]()
…
![]()
…
![]()
Искомое значение P(x0) = b0. Покажем, что это так.
В полученную форму записи P(x) подставим x = x0 и будем вычислять значение выражения, начиная со внутренних скобок. Для этого будем заменять подвыражения через bi:

Пример. Вычислить
значение полинома
в точке
.
Решение.
Вычисляем:

Ответ. 11.
Сложность алгоритмов
Каждый алгоритм в зависимости от реализации имеет определенную сложность вычисления. Чаще всего под сложностью вычисления понимают количество времени необходимое алгоритму для решения задачи. В настоящее время принято использовать следующие виды оценок сложности вычисления (Классы сложности):
|
№№ (от сложного к простому) |
Название сложности |
Математическая формула |
Примеры алгоритмов |
|
1 |
Факториальная |
N! |
Алгоритмы комбинаторики (сочетания, перестановки и т.д.) |
|
2 |
Экспоненциальная |
KN |
Алгоритмы перебора (brute force) |
|
3 |
Полиномиальная |
NK |
Алгоритмы простой сортировки (buble sort) |
|
4 |
Линейный логарифм |
N * log(N) |
Алгоритмы быстрой сортировки (heap sort) |
|
5 |
Линейная |
K * N |
Перебор элементов массива |
|
6 |
Логарифмическая |
K * log(N) |
Бинарный поиск |
|
7 |
Константная |
К |
Обращение к элементу массива по индексу |
Задача оценки сложности алгоритма заключается в анализе сложности вычисления для разных наборов входных данных (разный объем, порядок и т.д.). Для каждого алгоритма перед началом его реализации необходимо получить следующие виды оценок:
-
Наилучшая сложность вычисления.
-
Средняя сложность вычисления.
-
Наихудшая сложность вычисления.
Алгоритм «разделяй и властвуй»
Разделяй и властвуй (англ. divide and conquer) – важная парадигма разработки алгоритмов, заключающаяся в рекурсивном разбиении решаемой задачи на две или более подзадачи того же типа, но меньшего размера, и комбинировании их решений для получения ответа к исходной задаче. Разбиения выполняются до тех пор, пока все подзадачи не окажутся элементарными.
Умножение двух
2n–значных
чисел легко сводится к четырем умножениям
n-значных
чисел. По методу Карацубы (метод «разделяй
и властвуй») достаточно трех таких
умножений. Запишем 2n-значное
число в виде
.
Легко проверяется тождество:
Подобным
образом можно поступить в случае
умножения двух многочленов степени
2n-1
в кольце полиномов над полем Галуа
GF(2).
Пусть многочлены p(x) и q(x) степени 2n-1 представлены в виде

где
- многочлены степени n-1.
Тогда произведение
многочленов
можно
представить в виде
(*)
Введем обозначения

Тогда формула (*) перепишется в виде
![]()
Как видно, использовано только три вместо четырех умножений многочленов степени n. Систематическое применение этого приема соответствует рекурсивной схеме, «разверткой» которой при различных базисах рекурсии можно получить явные схемы умножения, рассматриваемые ниже. Развертка рекурсии производится до того момента, пока не придем к умножению элементарных полиномов.
