>
Звідності задач. Оракульний алгоритм зводить задачу П1 до задачі П2, якщо для будь-якого оракула , який кожну індивідуальну задачу масової задачі П2 відображає у якийсь з її розв’язків, алгоритм розв’язує задачу П1. Зазначимо, що якщо П2 є задачею обчислення або розпізнавання, то означення спрощується, адже в цих випадках оракул , про який йдеться, визначений однозначно. Таким чином, оракульний алгоритм зводить задачу П до задачі обчислення функції , якщо алгоритм розв’язує задачу П. Також, оракульний алгоритм зводить задачу П до задачі розпізнавання множини , якщо алгоритм розв’язує задачу П.
Якщо алгоритм зводить П1 до П2, то кажуть, що він є зведенням першої задачі до другої. Якщо існує зведення задачі П1 до задачі П2, яке є поліноміальним алгоритмом, то кажуть, що П1 поліноміально зводиться до П2, а називають поліноміальним зведенням.
Приклад 4.1. Нехай П1 – задача знаходження нетривіального дільника заданого натурального числа, а П2 – задача розпізнавання такої множини :
.
П1 поліноміально зводиться до П2 за допомогою алгоритму бінарного пошуку.
Вхід: .
· Якщо (звернення до оракула!), то видати повідомлення, що просте і припинити роботу.
· Інакше покласти та . Подальша робота алгоритму розбивається на кроки. і-тий крок полягає в наступному.
· Якщо (чергове звернення до оракула), то покласти , , а інакше , .
· Якщо , то подати на вихід і припинити роботу, а інакше перейти до виконання наступного -го кроку.
Неважко зрозуміти, що описаний алгоритм або визначає, що вхід є простим числом, або знаходить його найменший простий дільник. Оцінимо час роботи цього звернення. Як легко зауважити, . Звідси випливає, що Отже, на вході алгоритм робить не більше кроків і справді є поліноміальним.
Поняття оракульного алгоритму без труднощів поширюється і на ймовірнісні алгоритми. Таким чином отримуємо поняття ймовірнісного поліноміального зведення однієї задачі до іншої.
Теорема 4.2. Нехай П1, П2 і П3 є алгоритмічними задачами.
1) Якщо П1 поліноміально зводиться до П2, а П2 до П3, то П1 поліноміально зводиться до П3 .
2) Якщо задача П1 поліноміально зводиться до П2, яка розв’язується за поліноміальний час, то П1 також розв’язується за поліноміальний час.
3) Якщо існує ймовірнісне поліноміальне зведення П1 до П2 з деякою ймовірністю помилки, і задача П2 розв’язується за поліноміальний час, то П1 розв’язується деяким поліноміальним ймовірнісним алгоритмом з такою ж ймовірністю помилки.
Доведення теореми залишається читачеві у якості нескладної вправи.
Якщо задача П1 поліноміально зводиться до П2, а П2 поліноміально зводиться до П1, то такі задачі називаються поліноміально еквівалентними.
Приклад 4.3. Нехай П1 – задача знаходження нетривіального дільника заданого натурального числа, а П2 – задача знаходження канонічного розкладу розкладу числа на прості співмножники. Ці дві задачі поліноміально еквівалентні. Зведення П1 до П2 очевидне. Продемонструємо обернене зведення, тобто опишемо алгоритм , який безкоштовно отримує розв’язки задачі П1 і знаходить канонічний розклад заданого числа на множники. Отримавши на вхід , алгоритм просить дати йому нетривіальний дільник цього числа. Якщо отримує відповідь, що такого не існує, то подає на вихід розклад, який складається з самого числа . Якщо ж отримує нетривіальний дільник , то далі рекурсивно викликає самого себе на входах і , і отримавши розклади на множники цих чисел, об’єднує їх у розклад числа .
Поліноміальна звідність визначає відношення часткового порядку на множині класів еквівалентності алгоритмічних задач.