
- •Оглавление
- •Позиционные системы с произвольным основанием.
- •Сложность алгоритма(пример -подсчета достаточного количества операций).
- •Сложность арифметических операций.
- •Оценки функции сложности.
- •Арифметические операции с целыми числами и их сложность Двоичные операции.
- •Теорема (о сравнении операций)
- •Список литературы
Глущенко А.В., Кудрина Е.А., Половинко А.С.
Сложность основных алгоритмов.
Оценка сложности арифметических операций.
Оглавление
Позиционные системы с произвольным основанием. 1
Сложность алгоритма(пример -подсчета достаточного количества операций). 2
Сложность арифметических операций. 4
Оценки функции сложности. 6
Арифметические операции с целыми числами и их сложность 8
Двоичные операции. 8
О-большое. 12
Теорема (О сравнении операций) 14
Список литературы 17
Позиционные системы с произвольным основанием.
Опр. Системой счисления называется совокупность приемов наименования и записи чисел. В любой системе счисления для представления чисел выбираются некоторые символы (их называют цифрами), а остальные числа получаются в результате каких-либо операций над цифрами данной системы счисления.
Опр. Система называется позиционной, если значение каждой цифры (ее вес) изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число.
Опр.
Число единиц какого-либо разряда,
объединяемых в единицу более старшего
разряда, называют основанием
позиционной системы счисления.
Если количество таких цифр равно P,
то система счисления называется P-ичной.
Основание системы счисления совпадает
с количеством цифр, используемых для
записи чисел в этой системе счисления.
Теорема. Пусть p
> 1- натуральное число. Тогда для
любого n𝜖N
существует n0,n1,…,nS
такие что имеет место равенство
(1), где n0,n1,…,nS
принимают значения 0,1,…,p-1.
Доказательство. Пусть n=1,
для него есть привычная запись: n0=1,
ni=0.
Предположим что, существуют числа не
имеющие вида (1). Тогда среди таких чисел
существует наименьшее число k,
причем k1,
а значит
.
Так как
,
то для k-1
запись вида (1):
.
Получаем, что
,
вид типа (1) для k. Наше
предположение не верно, теорема доказана.
Единственность. Из записи вида
(1) следует что остаток от деления n
на p есть n0,
где n0
определенно однозначно. Из выражения
1,
получаем, что n1
однозначно определенно как остаток от
деления
на p. И так далее.
Обозначение записи числа в позиционной
системе счисления с основанием p.
(3), где p основание
данной системы счисления., а сама система
счисления называется p-ичной.
Замечание. Из Теоремы следует способ нахождения вида (3) любого числа. Алгоритм получается следующий:
- делим
на
p получаем остаток
и
неполное частное
.
- делим неполное частное снова на
,
получаем следующий остаток, и т.д.
Сложность алгоритма(пример -подсчета достаточного количества операций).
Под сложностью алгоритма понимается количество выполняемых им арифметических операций (сложение, вычитание, умножение, деление). Это определение не учитывает величину чисел участвующих в вычислениях. Ясно, что перемножить два 100-значных числа сложнее чем два однозначных, хотя при этом выполняется лишь одна математическая операция.
Поэтому учитывают еще и величину чисел, сводя рассмотрение вопроса к битовым операциям, т.е оценивая количество необходимых операций с 0 и 1 в двоичной записи. Сложность алгоритма представляется функцией от длины входа, т.е от функции количества битов N, требуемых для записи входных данных f(N).
Вычислительная сложность алгоритма определяется двумя параметрами: T - временная сложность, S пространственная (требование к памяти).
Многие алгоритмы предлагают выбор между объёмом памяти и скоростью. Задачу можно решить быстро, использую большой объём памяти, или медленнее, занимая меньший объём. Типичным примером в данном случае служит алгоритм поиска кратчайшего пути. Представив кару города в виде сети, можно написать алгоритм для определения кратчайшего расстояния между двумя любыми точками этой сети. Чтобы не вычислять эти расстояния всякий раз, когда они нам нужны, мы можем вывести кратчайшие расстояния между всеми точками и сохранить результаты в таблице. Когда нам понадобится узнать кратчайшее расстояние между двумя заданными точками, мы можем просто взять готовое расстояние из таблицы. Результат будет получен мгновенно, но это потребует огромного объёма памяти. Карта большого города может содержать десятки тысяч точек. Тогда, описанная выше таблица, должна содержать более 10 млрд. ячеек. Т.е. для того, чтобы повысить быстродействие алгоритма, необходимо использовать дополнительные 10Гб памяти. Из этой зависимости проистекает идея объёмно-временной сложности. При таком подходе алгоритм оценивается, как с точки зрении скорости выполнения, так и с точки зрения потреблённой памяти
Величина O - это есть порядок вычислительной сложности, это член разложения функции сложности в ряд быстрее всех растущий с ростом .
Пример:
Алгоритм называется:
Постоянным, если его сложность не зависит от n
Линейным, если его временная сложность O(n)
Полиномиальным, если его временная сложность O(nm), m=const
Экспоненциальным, если O(tf(N)), где t=const>1, f(n) - полиномиальная функция от n.
сравнений арифметических операций по трудоемкости.
Лемма: Пусть nN , mR - некоторое кольцо.
Для вычисления степени
достаточно
не более 2[log2
n] умножений.
Доказательство: Пусть 2S n 2S+1, s=[log2 n]
Запишем n в двоичной системе счисления:
Теперь вынесем степени 1,m,m2,…,
.
Всего S операций. Затем
перемножаем степени
,
их не более S. В итоге
получаем, что для вычисления
нужно произвести
.