Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КМЗИ 7 лекции.doc
Скачиваний:
1
Добавлен:
17.04.2019
Размер:
2.74 Mб
Скачать

Криптография с открытом ключом

2.0 Элементы теории сложности

Сложение T, S, c=a+b, |a|=|b|=n.

0) n=0;

1) for i=0…n-1

2) ci=L0*d

3) d=Hi*qi*gi*t*(ai+bi+d)

4) cn=d

Tadd(n)=n, Sadd(n)=3n+1

Для определения сложности алгоритма свяжем с понятием заданное число, называемое ее размером, который выражает меру количества входных данных.

Временная сложность вычислительного алгоритма есть время, необходимое для того, чтобы алгоритм решил задачу, рассматриваемую как функция от размера задачи.

Умножение (mult) c=a*b, n

  1. for i=0…n-1

  2. for j=0…n-1

(d,Ci+j)= ci+j+ai*bj+d

3) Ci+n=0

а, b, c в двоичной системе

for i=0…n-1, c(i)=c(i)+aib,

c=0

for i=0…n-1

if aj=1, c(i)=c(i)+b

T(m,d)=n*W(a)

Tmult(n)=n2, Smult(n)=4n

В зависимости от требований в качестве временной сложности алгоритма может рассматриваться минимальное, среднее, максимальное время алгоритма.

По теории сложности принято исследовать асимптотическое поведение вычислительной сложности от размера задачи.

f(n)=O(g(n))

,при n.n0

f(n)=O(nm),

Tadd(n)=n, Sadd(n)=O(n)

Tmult(n)= O(n2), Smult(n)= O(n)

Возведение в степень по модулю, c=ab(modm),n

1) с=1

2) for i=n-1…0

3) c=c2(modm)

4) if Gi=1, c=c*a(mod m)

Tmultmod(n)= O(n2)

Texp(n,b)=n*O(n2)=W(b)*O(n2)=O(n2)(n+W(b))

Texp(n)=O(n3)

Задачи, решаемые алгоритмами со сложностями U(n2), называются задачами квадратичной сложности.

O(p(n)) – задачи полиномиальной сложности, где p(n) – полином

O(ep(n)) – задача экспоненциальной сложности

Если алгоритм быстрее O(ep(n)) и медленнее O(p(n)), то называется задачей субэкспоненциальной сложности

ПРИМЕР: n=106

Класс

Кложность

Количество операций

Время (106 бит/сек)

Линейная

O(n)

106

1 c

Квадратичная

O(n2)

1012

10 дней

Кубическая

O(n3)

1018

27397 лет

Субэкспоненциальная

21000

3*1052 лет

Экспоненциальная

O(2n)

10301050

10301016 лет

106 процессоров решают задачи. Число 27397 лет заменится 10 днями.

Будем считать, что алгоритм простой, если его вычислительная сложность полиномиальна.

Сложный, если неполиномиальный.

Модель теории сложности используется для выбора алгоритма и выбора параметров алгоритма.

При выбранных параметрах используется модель, которую называют моделью практической стойкости.

Сложными алгоритмами называют алгоритмы, чьи вычислительные сложности не превышают допустимые пределы.

ПРИМЕР

1) сложение O(n); 2) умножение, деление O(n2); 3) экспонента O(n3); 4) задача разложения на сомножители задача факторизации - задача субэкспоненциальной сложности, но при этом полином; 5) задача нахождения показателя степени по известным y, a и p называется задачей дискретного логарифмирования: y=ax(modp). Наиболее эффективный алгоритм требует , где n – количество битов в числе р; 6) задача об «укладке ранца», имеется a={a1,…,an}, S=ai1+…+ait, требуется найти {a1,…,an}. 2n подмножества ; 7) метод Гаусса, n*n, T(n)=O(n3).

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