Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cryptology_konspekt.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
3.09 Mб
Скачать

Раздел пятый

1. Классификационная оценка сложности алгоритмов для арифметических задач.

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

и .

2. Примеры полиномиальных алгоритмов.

1) Алгоритм Евклида.

Алгоритм Евклида есть алгоритм нахождения наибольшего общего делителя двух натуральных чисел, скажем а и b. Обозначим . Пусть, кроме того, и . Положим i=1. Работа на i-ом шаге алгоритма выглядит так:

,

т.е. производится операция деления с остатком. Если , то , иначе, увеличиваем i на 1 и производим новое деление с остатком.

Легко заметить, что указанный алгоритм имеет полиномиальный характер. Действительно, из неравенства следует, что остаток от деления за два шага алгоритма уменьшается более чем вдвое. Тогда, если t это число шагов, то выполняется неравенство:

.

Откуда, логарифмируя, получаем

.

К сказанному добавим еще, т.н., расширенный алгоритм Евклида, который, например, позволяет решать сравнения вида . Добавляя к принятым обозначениям новые, имеем:

, где .

Тогда верно, что и, значит, .

2) Бинарный метод.

Этот алгоритм производит возведение целого числа в натуральную степень по заданному модулю. Пусть требуется найти . Представим число d в системе счисления с основанием 2:

,

где . Здесь, очевидно, . Тогда

.

Если подсчитать количество операций умножения s , то получим оценку вида

.

Ясно, что операция взятия по модулю не меняет статуса алгоритма как полиномиального. Если учитывать, что машинная арифметика предполагает в основном вычисления с битовым представлением чисел, то следует добавить при этом, что сложение и вычитание требуют , а умножение и деление с остатком – времени для чисел порядка n.

3) Вычисление символа Якоби.

Пусть требуется вычислить значение символа Якоби . Считаем, что .

. Если , то

1) при ; иначе,

2) при .

. Если , то .

После выделения степеней 2 и «переворотов» по закону взаимности символ Якоби приводится к виду:

,

что позволяет немедленно получить ответ. Легко видеть, что каждый «переворот» соответствует делению с остатком, как это было в алгоритме Евклида, поэтому общее число «переворотов» оценивается величиной 2 . Если добавить к этому еще вычисления с четным числителем символа и вычисление степеней -1, то оценка времени работы алгоритма будет полиномиальной, именно: для С>2.

3. Вероятностные алгоритмы.

Вероятностный алгоритм отличается от детерминированного тем, что ему на вход кроме входного слова w поступает некоторая случайная последовательность , где . Выход u зависит как от w, так и от r. Случайные последовательности должны выбираться с равными вероятностями . Вероятностные алгоритмы могут давать ошибочный ответ.

Говорят, что вероятностный алгоритм решает массовую задачу с вероятностью ошибки если для любой индивидуальной задачи w он дает ее правильное решение с вероятностью не меньшей, чем . Такие алгоритмы называются алгоритмами Монте-Карло. Среди таких алгоритмов различают подкласс алгоритмов типа Лас Вегас.

Говорят, что Лас-Вегас алгоритм решает массовую задачу с вероятностью неудачи если для любой индивидуальной задачи w он дает ее правильное решение с вероятностью не меньшей, чем или выдает сообщение о невозможности решения. Последнее – с вероятностью .

На вероятностные алгоритмы переносится понятие полиномиального времени. Оно оценивается на входе w, как максимальное по r время, требующееся алгоритму, работающему со словом w и использующему случайную последовательность r.

Для решения задачи распознавания выделяют еще вероятностные алгоритмы с односторонней ошибкой. Именно:

Определение. Вероятностный (Монте-Карло) алгоритм, решающий задачу распознавания языка L, называется вероятностным алгоритмом с односторонней ошибкой если выполнены условия:

При алгоритм принимает вход с вероятностью 1.

При алгоритм отвергает вход с вероятностью не менее, чем .

Для таких алгоритмов существует простая схема уменьшения вероятности ошибки. Эта схема реализуется следующим вероятностным алгоритмом. Пусть А – вероятностный алгоритм с односторонней ошибкой . Тогда алгоритм В работает так:

Вход: N.

1) Генерируется случайная последовательность . Эта последовательность разбивается на t равных частей так что каждая из , где , является случайной последовательностью длины s.

2) Моделируется работа алгоритма А на слове w с каждой из указанных случайных последовательностей , . При этом получаются t ответов , .

3) Если , то вход принимается, иначе, вход отвергается.

Легко увидеть, что алгоритм В есть вероятностный алгоритм с односторонней ошибкой, ибо если , то с вероятностью вход принимается, а если , то так как вычисления на t шагах были независимыми, то В может ошибиться с вероятностью . Если положить , C > 0 (т.к. , то ошибка алгоритма В выражается величиной , что означает экспоненциальное понижение величины ошибки. При этом если алгоритм А был полиномиальным, то даже при полиномиальном росте t алгоритм В будет тоже полиномиальным вероятностным алгоритмом.

4. Оракульные алгоритмы.

Под оракулом понимается любая функция . Оракульный алгоритм – это алгоритм в обычном смысле слова, но снабженный специальной функцией: обращением к оракулу. Алгоритм А, имеющий доступ к оракулу обозначим через А . Вырабатывая некоторое слово , алгоритм обращается с запросом w к оракулу, вычисляет значение ответ оракула – и продолжает свою работу, используя этот ответ. Один и тот же алгоритм может иметь доступ к разным оракулам. Само понятие оракула весьма широкое. В терминах программистской практики обращение к оракулу можно рассматривать, как обращение к подпрограмме. Оракульные алгоритмы позволяют сформулировать описание сравнимости алгоритмических задач по их сложности.

Определение. Говорят, что задача сводится к задаче при помощи оракульного алгоритма А , если для любого оракула , который произвольную индивидуальную задачу w массовой задачи отображает в ее правильное решение, оракульный алгоритм А решает задачу . Такой оракульный алгоритм называют сведением задачи к задаче .

Определение. Сведение называется полиномиальным, если А полиномиален.

Определение. Если задача полиномиально сводится к задаче , то говорят, что задача не сложнее задачи , а задача не проще, чем задача .

Понятие оракульного алгоритма переносится и на вероятностные алгоритмы.

Определение. Если задача полиномиально сводится к задаче , а задача полиномиально сводится к задаче , то такие задачи называются полиномиально эквивалентными.

Примером полиномиально эквивалентных задач могут служить задача нахождения нетривиального делителя натурального числа n>1 и задача факторизации числа n.

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