Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Элементы теории информации в защите информации. Учебное пособие для академического бакалавриата

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
П.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 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]