- •§1. Основні означення та властивості алгебраїчних систем
- •1.1. Алгебраїчні системи з однією операцією
- •1.2. Підгрупи, класи суміжності. Теорема Лагранжа
- •Питання для самоконтролю
- •Задачі до §1
- •§2. Властивості циклічних груп. Відображення груп
- •2.1. Властивості циклічних груп
- •2.2. Відображення груп. Нормальні підгрупи. Терема про ізоморфізм груп
- •2.3. Внутрішні автоморфізми групи та спряжені елементи
- •2.4. Нормалізатор множини. Центр групи
- •Питання для самоконтролю
- •Задачі до §2
- •§3. Алгебраїчні системи з двома операціями. Ідеал кільця, Факторкільце за ідеалОм
- •3.1. Означення та основні властивості кілець
- •3.2. Ідеал кільця. Факторкільце за ідеалом
- •3.3. Відображення кілець
- •Питання для самоконтролю
- •Задачі до §3
- •§4. Характеристика кільця, Характеристика скінченного поля. Факторкільця за різними ідеалами, їх властивості
- •4.1. Характеристика кільця, її властивості
- •4.2. Залежність властивостей факторкільця від ідеалу
- •Питання для самоконтролю
- •Задачі до §4
- •§5. Алгоритм Евкліда. Основна теорема арифметики. Конгруенції та їх властивості. Китайська теорема про лишки
- •5.1. Прості числа, нсд, нск. Розширений алгоритм Евкліда, його наслідки
- •5.2. Розклад на прості множники. Фундаментальна теорема арифметики
- •5.3. Конгруенції (порівняння) та їх властивості
- •5.4. Кільця лишків Zn, їх властивості
- •Питання для самоконтролю
- •Задачі до §5
- •§6. Подільність, факторизація. Застосування факторизації
- •6.1. Узагальнення Китайської теореми про лишки
- •6.2. Наслідки теореми Ойлера
- •6.3. Структура мультиплікативної групи скінченого поля
- •Питання для самоконтролю
- •Задачі до §6
- •§7. Алгоритми та їх складність. Поліноміальні та експоненційні алгоритми. Час роботи основних алгоритмів
- •7.1. Означення часу роботи алгоритму. Типи алгоритмів
- •7.2. Час роботи основних алгоритмів
- •1. Додавання двійкових чисел
- •2. Множення двійкових чисел
- •Питання для самоконтролю
- •Задачі до §7
- •§8. Імовірнісні алгоритми. Алгоритми з оракулами. Порівняння складності задач
- •8.1. Означення імовірнісного алгоритму. Типи імовірнісних алгоритмів
- •8.2. Алгоритми з оракулами
- •Питання для самоконтролю
- •Задачі до §8
- •§9. Квадратичні лишки та нелишки. Добування квадратного кореня у кільці лишків
- •9.1. Означення та властивості квадратичних лишків
- •9.2. Символ Лежандра та символ Якобі. Їх властивості та обчислення
- •3. Оскільки y' – непарне, то : .
- •9.3. Добування квадратного кореня
- •Питання для самоконтролю
- •Задачі до §9
- •§10. Псевдопрості числа. Тестування простоти
- •10.1. Найпростіші алгоритми тестування простоти
- •10.2. Псевдопрості числа: означення та властивості
- •10.3. Імовірнісні алгоритми тестування простоти
- •Питання для самоконтролю
- •Задачі до §10
- •§11. Означення дискретного лОгАриФму. Алгоритм знаходження дискретного логарифму у мультиплікативній групі скінченНого поля Zp
- •Питання для самоконтролю
- •Задачі до §11
- •§12. Важкооборотні функції, Ядро, Предикат. Застосування важкооборотних функцій у криптографії. Класичні асиметричні криптосистеми
- •12.1. Важкооборотні функції. Предикат, ядро важкооборотної функції
- •12.2. Застосування важкооборотних функцій для побудови криптосистем імовірнісного шифрування
- •12.3. Застосування односторонніх функцій для побудови класичних асиметричних криптосистем
- •Питання для самоконтролю
- •Задачі до §12
- •Література
- •Предметний покажчик
8.2. Алгоритми з оракулами
Означення 8.6: оракулом називатимемо функцію О: А*В*, де А, В – деякі скінченні алфавіти.
Алгоритмом з оракулом О називатимемо алгоритм в звичайному розумінні, але наділений додатковою операцією – зверненням до оракула.
Операція звернення до оракула полягає в тому, що алгоритм передає оракулу О деяке слово ZÎА* (запит до оракула), і отримує деяке слово О(Z) – відповідь оракула. Відповідь може істотно залежати від того, до якого саме оракула звертається алгоритм.
Час роботи алгоритму з оракулом оцінюється в припущенні, що звернення до оракула займає один крок. Але при цьому необхідно окремо враховувати час передачі запиту та час зчитування відповіді. Наприклад, найпростіше звернення: алгоритм отримує wÎ {0, 1}*; звертається до оракула О із запитом w і отримує відповідь О(w).
Означення 8.7: алгоритм з оракулом називають поліноміальним, якщо максимальний час роботи алгоритму (по всім можливим оракулам) обмежений деяким поліномом від довжини входу.
Означення 8.8: будемо говорити, що алгоритм з оракулом О зводить задачу 1 до задачі 2, якщо для будь-якого оракула О, який на кожному вході w видає розв'язок задачі Õ2(w), алгоритм О видає розв'язок задачі Õ1.
Якщо існує такий поліноміальний алгоритм , що задачу Õ1 зводить до задачі Õ2, то кажуть, що задача Õ1 поліноміально зводиться до задачі Õ2, а сам алгоритм називають поліноміальним зведенням Õ1 до Õ2.
Приклад 8.9: нехай алгоритм 1 розв’язує задачу Õ1(w) – для заданого w знаходить його функцію Ойлера, а алгоритм 2 розв’язує задачу Õ2(w) – для заданого w видає його розклад на прості множники (канонічний розклад). Тоді задача Õ1 поліноміально зводиться до Õ2 наступним алгоритмом.
Вхід: w;
запит до оракула: w;
відповідь оракула: (p1, 1), (p2, 2), ..., (pr, ar);
=
;
вихід .
Зауваження 8.10: слід зазначити, що якщо w = pq, де p, q – невідомі прості числа, то справедливе і зворотне твердження: задача Õ2 поліноміально зводиться до Õ1.
Означення 8.11: якщо Õ1 поліноміально зводиться до Õ2, то говоримо, що задача Õ1 не складніша за задачу Õ2, а задача Õ2 не легша за задачу Õ1.
Означення 8.12: якщо Õ1 поліноміально зводиться до Õ2, а Õ2 поліноміально зводиться до Õ1, то такі задачі називаються поліноміально еквівалентними.
Аналогічно визначається імовірнісна поліноміальна звідність між задачами. Наступна теорема формулює деякі властивості поліноміальної звідності між задачами.
Теорема 8.13: нехай Õ1, Õ2, Õ3 – деякі задачі.
Якщо Õ1 поліноміально зводиться до Õ2, а Õ2 поліноміально зводиться до Õ3, то Õ1 поліноміально зводиться до Õ3.
Якщо Õ2 розв'язується за поліноміальний час і Õ1 поліноміально зводиться до Õ2, то Õ1 також розв’язується за поліноміальний час.
Якщо Õ1 імовірнісно поліноміально зводиться до Õ2 з імовірністю помилки , і Õ2 розв'язується за поліноміальний час, то Õ1 розв'язується імовірнісним поліноміальним алгоритмом з імовірністю помилки .
Питання для самоконтролю
1. Поясніть різницю між подією та елементарною подією.
2. Які алгоритми називаються Монте-Карло алгоритмами? Лас-Вегас алгоритмами?
3. В чому полягає сутність задачі розпізнавання мови?
4. Чи можна визначити Лас-Вегас алгоритм розпізнавання мови з односторонньою помилкою?
4. Що таке оракул? Яка структура алгоритму з оракулом?
