Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Элементы теории информации в защите информации. Учебное пособие для академического бакалавриата
.pdf
П.6. Битовая вычислительная сложность операций сравнения, сложения и умножения чисел
соответствующих разрядов этих чисел, начиная со старших разрядов и в случае их совпадения переходя к следующему более младшему разряду. Следовательно, при
сравнении двоичных чисел достаточно выполнить сравнение не более k пар битов. Следовательно, сложность
сравнения двух k-разрядных двоичных чисел, не превы-
(ср)
шающих n, обозначаемая S
(k), имеет порядок О(k) или
О(logn) (основание логарифма полагается равным 2).
Суммирование k-разрядных двоичных чисел, не пре-
вышающих n. Эта операция требует сложения для каждо-
го разряда двух битов и сложения получившейся суммы
со знаком переноса из предыдущего разряда. Значит, для
сложения младших разрядов требуется 1 сложение, для
сложения остальных разрядов требуется не более 2-х сложений, то есть всего не более 2k сложений.
Пусть для определенности l≤k, тогда сложность сло-
жения k-разрядного двоичного числа с l-разрядным дво-
(+)
ичным числом, обозначаемая S
(k,l), имеет порядок О(k)
или О(logn). Результатом сложения двух k-разрядных
чисел является число разрядности не более k+1.
Порядок сложности вычитания чисел тот же, что
и при сложении.
Умножение k-разрядного двоичного числа на l-раз-
рядное двоичное число, l≤k. Умножение «в стол бик»рав-
носильно сложениям не более l копий k-разрядного двоич-
ного числа, где копии записаны с определенным сдвигом.
Пренебрегая операциями сдвига как менее сложными,
получаем, что для сложности умножения k-разрядного
двоичного числа на l-разрядное двоичное число, обозна-
(×)
чаемой S
(k,l), верна оценка S
Следовательно, порядок сложности умножения S
двух k-разрядных двоичных чисел не превышает О(k
2
или О(log
n). Результатом умножения k-разрядного
(×)
(k,l)≈(l–1)t
(+)
(k)=О(lk).
(×)
(k,k)
2
)
и l-разрядного чисел является число разрядности не более
k+l.
— 201 —

Приложения
Данная оценка сложности умножения чисел несколь-
ко раз улучшалась.
Оценка Карацубы А.А. Для умножения двух
k-разрядных двоичных чисел существует алгоритм
log23
со сложностью О(k
).
Оценка Тоома А.Л. Для любого фиксированного
e>0 минимальная битовая сложность умножения двух
1+e
k-разрядных двоичных чисел имеет порядок О(k
).
Лучшая из известных оценок трудоемкости умноже-
ния (используется другой алгоритм умножения) имеет
порядок О(k×logk×loglogk) [4, с.10].
Для упрощения рассуждений и оценок мы будем
в дальнейшем пользоваться оценкой сложности умноже-
2
ния чисел порядка О(k
).
Порядок сложности деления чисел тот же, что и при
умножении.
Данные оценки позволяют оценить сложность широкого класса алгоритмов путем сведения вычислительных шагов алгоритмов к суммированию и умножению
k-разрядных двоичных чисел.
Пример П.6.2. (оценка сложности вычисления).
При расчетах положим:
(ср)
S
(k)≤k, S
(+)
(k)≤2k, S
(×)
(k,l)≤2kl.
Оценим битовую сложность вычисления выражения
2
f(x)=x
+7x, где 0≤x≤300.
Сложность в общем случае зависит от алгоритма вычисления. На i-м шаге алгоритма следует оценить число
битовых операций и разрядность ki полученного резуль-
S
i
тата с учетом разрядности входных данных, i=1,2,...
Определяем: разрядность числа x равна 9, разрядность числа 7 равна 3.
— 202 —

П.6. Битовая вычислительная сложность операций сравнения, сложения и умножения чисел
Алгоритм А
Вычисляемая величи-
1
шаг 1 шаг 2 шаг 3
2
,
x
умножение
7x,
умножение
x2+7x,
сложение
на
разрядность
входа →
сложность
(9,9) →
S
≤2×9×9=162
1
(9,3) →
S2≤2×9×3=54
(18,12) →
S3≤2×18=36
результата
разрядность
входа →
разрядность
(9,9) →
k
≤9+9=18
1
(9,3) →
k2≤9+3=12
(18,12) →
k3≤18+1=19
результата
Вычислительная сложность S(А1) алгоритма А1 оце-
нивается величиной:
S(А
) = S1+S2+S3 = 162+54+36=252 битовых операций.
1
Алгоритм А
2
Вычисляемая
величина
разрядность входа
→ сложность
шаг 1 шаг 2
x+7,
сложение
(9,3) →
≤2×9=18
S
1
x(x+7),
умножение
(9,10) →
S2≤2×9×10=180
результата
разрядность входа
→ разрядность
(9,3) →
≤9+1=10
k
1
(9,10) →
k2≤9+10=19
результата
Вычислительная сложность S(А2) алгоритма А2 оце-
нивается величиной:
S(А
) = S1+S2 = 18+180 =198 битовых операций.
2
Таким образом, вычислительная сложность S реше-
ния данной задачи удовлетворяет оценке:
S ≤ min{S(А
),S(А2)} = 198 битовых операций.
1
— 203 —

Приложения
Вместо «сложности вычисления»иногда используют
как синоним термин «время вычисления», вместе с тем,
такая замена терминов некорректна при обсуждении
сложности параллельных вычислений.
Приведенные оценки показывают, что все три вычис-
лительные задачи имеют полиномиальную сложность.
П.6. Задачи и упражнения
П.6.1. При x∈Z64 оцените в битовых операциях слож-
ность вычисления выражения f и разрядность полученного результата:
а) f=35+49x+59x
П.6.2. При x∈Z
сложность вычисления выражения f и разрядность полученного результата:
а) f=835+349x+759x
П.6.3. При x∈Z
сложность вычисления выражения f и разрядность полученного результата:
а) f=235+37x
П.6.4. При x∈Z
числения левой и правой частей равенства:
3
(x+5)
= x3+15x2+75x+125.
П.6.5. Сравните битовую сложность вычисления ле-
вой и правой частей матричного равенства (АВ)С = А(ВС),
где А, В, С — двоичные матрицы размеров 30×10, 10×50
и 50×20 соответственно.
П.6.6. При x∈Z
ность вычисления выражения f и разрядность полученного результата:
а) f=55+49x
2
; б) f=55+19x+11x2.
оцените в битовых операциях
1024
2
; б) f=255+419x+171x2.
оцените в битовых операциях
512
2
+459x4; б) f=255+19x2(x-1)+171x3.
сравните битовую сложность вы-
1024
оцените в битовых операциях слож-
64
8
; б) f=25+11x6+41x16.
— 204 —

П.7. Cложность поиска числа в упорядоченном массиве
( )
12 1 1nn
n
++…+− +−
1
2
n +
1
n
П.7. Cложность поиска числа
в упорядоченном массиве
Множество элементов M={a1,…,an}, на котором существует линейный порядок (например, подмножество
множества действительных чисел) не всегда задано в соответствии с порядком. Назовем множество M упорядоченным, если a
Задача для элемента a∈M определения его номера
в упорядоченном множестве M называется поиском элемента в упорядоченном множестве [1].
На вход алгоритма поступает элемент a, и сам алгоритм состоит из ряда шагов, где на каждом шаге выполняется сравнение элемента a с одним из элементов a
жества M, i∈{1,…,n}, и получении одного из двух ответов
a≤a
или a>ai.
i
Выходом алгоритма является номер j такой, что a=a
Вначале рассмотрим алгоритм, последовательно
сравнивающий элемент a со всеми элементами от a
Если a=a
1
шага. Если a=a
шага при j<n–1. Если же a=a
достаточно сделать n–1 шагов.
Если при случайном выборе элемента a считать, что
a=a
с вероятностью n–1 при любом i∈{1,…,n}, то среднее
i
число шагов такого алгоритма равно
<…<an.
1
мно-
i
j
до an.
1
, то алгоритм выдает ответ j=1 после первого
, то алгоритм выдает ответ j после j-го
j
или a=an, то алгоритму
n–1
.
Далее рассмотрим детерминированный алгоритм,
обозначим его А. Детерминированность алгоритма А поиска элемента в упорядоченном множестве означает, что:
1) первый шаг алгоритма А определен однозначно,
то есть определен номер i такой, что a сравнивается с a
на первом шаге;
— 205 —
=
—
.
i

Приложения
( )
Ln
( )
aM
Ln
∈
( )
Ln
( )
Ln
1
n
( )
aM
Ln
∑
2) если выполнены i≥1 шагов, то в зависимости от от-
вета a≤a
или a>ai на шаге i+1 алгоритма А однозначно
i
определен номер следующего элемента из M, с которым
сравнивается элемент a.
Отсюда следует, что всякий детерминированный
алгоритм поиска элемента в упорядоченном множестве
можно изобразить корневым бинарным деревом, в котором каждая вершина, не являющаяся листом, помечена элементом из M, с которым сравнивается элемент
a, а каждый лист помечен номером элемента, равного a.
Сложностью алгоритма А поиска элемента в упорядоченном множестве M при входе a назовем число сравнений элемента a с элементами из M до получения ответа.
Эту величину обозначим
a
.
A
Сложностью (в худшем случае) алгоритма А поиска
элемента в упорядоченном множестве M назовем наибольшее (по всем a∈M) число сравнений элемента a с элементами из M до получения ответа. Эта величина, обозначаемая L
(n), равна:
A
L
(n) =
A
max
a
.
A
Средней сложностью алгоритма А поиска элемента
в упорядоченном множестве M, обозначаемой
ср
, на-
A
зовем величину:
ср
=
A
a
.
A
∈
Теорема П.7.1. Существует алгоритм А поиска эле-
мента в упорядоченном множестве M, для которого
L
(n) = log2n.
A
Доказательство. Условию теоремы удовлетворяет
описываемый рекуррентно следующий алгоритм бинарного поиска:
1) Если n=1, то ответ есть a=a
; в этом случае LA(1)=0.
1
— 206 —

П.7. Cложность поиска числа в упорядоченном массиве
( )
Ln
( )
2) Если n>1, то вычисляем k=n/2 и сравниваем
a с a
. Если a≤ak, то тем же алгоритмом реализуем поиск
k
a в уменьшенном множестве {a
,…,ak}. Если a>ak, то тем
1
же алгоритмом реализуем поиск a в уменьшенном множестве {a
,…,an}.
k+1
В обоих случаях порядок уменьшенного множества
не превышает величины max{n/2,n–n/2}≤n/2. Следовательно, L
(n)=1+LA(n/2).
A
Докажем (мат. индукция по m) утверждение: если
m–1
2
<n≤2m, то LA(n)=m.
При m=0 имеем: n=1 и L
(1)=0=m, то есть утвержде-
A
ние верно.
t
Пусть утверждение верно для m=t и 2
t–1
2
<n/2≤2t и по предположению индукции LA(n/2)=t.
Отсюда L
но для всех n≥t, то есть L
(n)=1+LA(n/2)=t+1. Значит, утверждение вер-
A
(n)=m=log2n. Теорема дока-
A
<n≤2
t+1
. Тогда
зана.
Следствие. Существует алгоритм А поиска элемента
в упорядоченном множестве M со средней сложностью
ср
≤ log2n.
A
Ранее было показано, что рассматриваемый класс
алгоритмов связан с бинарными деревьями. Для доказательства нижних оценок сложности поиска элемента
в упорядоченном множестве установим свойства бинарных деревьев.
В корневом дереве D высотой листа x, обозначаемой
h(x), называется длина пути из корня дерева в лист x, где
длина пути равна числу ребер, составляющих путь.
Обозначим X(D) множество всех листьев дерева D.
Высотой дерева D, обозначаемой h(D), называется величина:
h(D) =
Средней высотой дерева D, обозначаемой h
max
x XD
∈
( )
hx
.
(D), на-
ср
зывается величина:
— 207 —

Приложения
( )
( )
( )
1
x XD
hx
XD
∈
( )
∑
hср(D) =
,
то есть среднее арифметическое высоты всех листьев дерева D.
Двоичное дерево называется псевдополным, если
из каждой вершины исходит ровно 2 ребра за исключением листьев. Двоичное псевдополное дерево высоты h называется полным, если длина пути от корня до любого листа равна h. На i-м ярусе псевдополного дерева размещены
не более 2
ровно 2
h имеет 2
i
вершин, на i-м ярусе полного дерева размещены
i
вершин, i=0,…,h. Полное двоичное дерево высоты
h+1
–1 вершин и 2h листьев.
Лемма П.7.1. Для любого бинарного дерева с n ли-
стьями верно:
1) h(D) ≥ log
2) h
(D) ≥ log2n.
ср
n;
2
Доказательство. 1. Любое бинарное дерево D с n листьями высоты h можно достроить до полного бинарного
дерева высоты h, в котором пути от корня до всех листьев
имеют длину h. Это выполняется с помощью присоединения к каждому листу x высоты h(x) дерева D полного
бинарного дерева высоты h–h(x). В результате такого
построения число листьев в полном бинарном дереве высоты h авно 2
ве D. Значит, n≤2
ное число, получаем: h ≥ log
h
, что не меньше, чем число листьев n в дере-
h
. Отсюда, учитывая, что h — натураль-
n.
2
2. Так как при указанном построении полного дерева
к каждому листу x высоты h(x) дерева D присоединяется
полное бинарное дерево высоты h–h(x), то вместо листа x об-
разуется 2
h–h(x)
листьев. Отсюда для общего числа листьев
в полном бинарном дереве высоты h выполнено равенство:
h hx
−
2
x XD
∈
( )
Сокращаем обе части равенства на 2
= 2h.
h
и получаем:
— 208 —

П.8. Cложность сортировки неупорядоченного множества
2
1
n
( )
( )
11
2
hx
x XD
n
∈
∑
( )
( )
1
2
n
hx
x XD∈
∏
( )
( )
1
2
n
hx
x XD∈
∑
2
∑
( )
( )
1
x XD
hx
n
∈
∑
( )
Ln
( )
Ln
1
= 1. (П.7.1)
hx
( )
∑
x XD∈
( )
Отсюда по теореме о соотношении среднего арифметического и среднего геометрического n положительных
чисел имеем:
=
≥
=
.
Следовательно,
hx
( )
x XD∈
( )
≥ nn.
Логарифмируем неравенство и делим на n, после чего
получаем:
≥ log2n.
Лемма доказана.
Теорема П.7.2. Для любого алгоритма А поиска элемен-
та в упорядоченном множестве порядка n верны оценки:
1) L
(n) ≥ log2n;
A
ср
2)
A
≥ log2n.
Доказательство. Представим алгоритм А в виде бинарного дерева D. Результатом алгоритма может быть любой номер от 1 до n. Поэтому в дереве D не менее n листьев.
Следовательно, нужные оценки для сложности алгоритма
в худшем случае и для сложности алгоритма в среднем совпадают с оценками высоты и средней высоты соответствующего бинарного дерева, то есть теорема вытекает из леммы П.7.1 и определения величин L
(n) и
A
ср
.
A
неупорядоченного множества. Cложность
сортировки вставками и слиянием
Для неупорядоченного множества M={a1,…,an} задачей сортировки называется построение перестановки
П.8. Cложность сортировки
— 209 —

Приложения
1
i
a
2
i
a
a
( )
Sn
( )
( )
max
M
A
M Yn
Sn
∈
( )
min
A
A
Sn
(i1,i2,…,in) чисел 1, 2, …, n такой, что
Для простоты положим, что a
i≠aj
при i≠j.
<
<…<
i
n
[1].
Шагом алгоритма считаем сравнение любой пары
элементов a
и aj для получения ответа ai<aj или ai>aj.
i
Далее рассмотрим детерминированный алгоритм,
обозначим его А. Детерминированность алгоритма А сортировки множества M означает, что:
1) на первом шаге алгоритма А однозначно определе-
на пара (i,j) номеров сравниваемых элементов;
2) если выполнены t≥1 шагов, то в зависимости от от-
вета a
или ai>aj на шаге t+1 алгоритма А однозначно
i<aj
определена следующая пара (i,j) номеров сравниваемых
элементов.
Отсюда следует, что всякий детерминированный
алгоритм сортировки множества можно изобразить корневым бинарным деревом D, в котором каждая вершина,
не являющаяся листом, помечена парой сравниваемых
элементов из M, а каждый лист помечен перестановкой
(i
,…,in).
1,i2
Пусть в задаче сортировки Y(n) — множество всевозможных входных последовательностей длины n, M∈Y(n).
Сложностью алгоритма А сортировки последовательности
M назовем число сравнений пар элементов из M до получения ответа. Эту величину обозначим
M
.
A
Сложностью (в худшем случае) алгоритма А сортировки множества M назовем наибольшее (по всем M∈Y(n))
число сравнений пар элементов из M до получения ответа.
Эта величина, обозначаемая S
S
(n) =
A
(n), равна:
A
.
Сложностью задачи сортировки n элементов, обозначаемой S
(n), называется
сорт
, где минимум
берется по всем алгоритмам, сортирующим правильно
n элементов.
— 210 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
